December 22nd, 2007
Recently I was involved into the practical part of microprocessor's course, included into our department's masters program, where I served as TA. Well, in fact, not just TA, but the entire 2x2 hour course was developed and teached by me and my friend.
The primary goal of this classes was to make students familar with our national processor boards, produced by NIISI (research institute of systems development). Theses boards include our first MIPS R3000-compatible KOMDIV32 microprocessor with technological sizes of 35 microns, "PRIME" boot monitor and various peripheral devices like speaker, uarts, light diods and so on. The processor runs at 90 MHz clock.
The board still very buggy and has a lot of features hardcoded and/or hardwired, but pretty usable. Especially interesting looks PRIME boot monitor, that can handle almost all development task, including but not limited to downloading executables via FTP/TFTP/NFS or Z-Modem, dumping/writing memory and working with FLASH memory. The board has two modes of operation - depending on switch setting it can either go to PRIME on boot, or start executing the code located at the start of flash memory. This feature has shown itself to be very handy in development.
The development kit was also accomplished by the proprietary OS2000 real-time operating system, which seems to be an evil mix of FreeBSD 4.x and VxWorks source code. E.g. their second stage boot loader fully resembles VxWorks loader, though with a lot of parsing bugs. Similary, the kernel object archives contains files like ipfw.ko with full debug info and CVS id's, although it seems to not use it:-) The operating system claims to be POSIX-compatible, though I had no enough time to check it fully. The course was featuring work with some multiprogramming APIs like POSIX threads and message passing, but unfortunately very few studens were able to understand this fully due to lack of C programming experience in past.
We were using FreeBSD as a host enviropment instead of NIISI-recommended Red Hat Linux. All the SDK software was ported to FreeBSD with a little effort (thanks to SDK developers - the didn't used bash/gawk/etc feature much). However, we used their proprietary GCC-based compiler (GPL violation?) under Linux emulation to compile target source code. Probably, gcc's mips target can do that too, but I didn't tried that.
One funny bug we were experiencing - the BSP we got with board was not fully compatible with it, thus it was producing a continuous high-frequency beep after startup. This way we could always say when yet one student managed to get his board running OS2000:-) Although a little room with 8 beeping boards looked slightly crazy...
A good project will be to try to run FreeBSD/mips on these boards and use it as a basis of course, but the lack of documentation and OS source code makes this nearly impossible. Hopefully, they'll understand soon that distributing a research OS without the source code in 21th century is a no-way.