Friday 13 February 2009

Operating Systems I've worked with

DOS 6.22
Windows 3.1
Windows 95
Windows 98/ME
Windows NT 4
Windows 2000
Windows Server 2003
Windows XP
Windows Vista (32/64 bit)
MAC OS 9
MAC OS X
Ubuntu 8.10
Red Hat's Fedora 10
Suse 9.0
openSuse 10.2
openSuse 11.1
Suse Entreprise 10.2
FreeBSD 7.1
uCOS
RTOS's

Programming languages I've worked with

PERL
C
C++
Visual Basic
GW Basic (back in the old days)
HTML (and a few other related ones, dhtml, xml, etc)
PHP (very basic)
Assembly (ASM, 8086 and embedded)
UML



This list is not finished yet

C++ and MicroCodes

So yesterday I was given a new project to get cracking on a program that was originally written to display and update micro codes into a BIOS ROM file. The program is written in C++. I've got a little background in the language, but not enough. So I've got my work cut out for me as some people would say.

So microcodes, what are they? Microcodes are made by the CPU engineer up building of a processor. These microcodes act as a fix or a workaround for errors within the processor. They can be stored in a high speed memory usually embedded into the processor itself. They translate machine instructions into sequences of detailed circuit-level operations. Now Wikipedia says they are not supposed to be visible or changeable by a normal programmer of an assembly programmer but this isn't strictly true. These codes can be embedded into the BIOS ROM and flashed to the BIOS PROM, where the microcodes will then be utilized.

So what do I have to do? My job entails taking the current program we have for displaying and updating these microcodes and adapting it to be able to upload microcode blocks into the ROM that may be larger than the microcodes it's replacing. The current program will overwrite adjacent sectors in the ROM, removing other microcodes. So I'm basically going to be working a fix.

So here I go, I've just finished installing Microsoft Visual Studio 2008 and I'm looking forward to doing more programming.

System DVT

SO, over the last week, I've been up to fairly boring monotonous stuff. But given that, I've now got exposure to Fedora 10, Suse 10.2, Windows Server 2003, FreeBSD 7.1 and FreeDOS 1.0. Also got to use a number of AMD BIOS utilities through NDA, Linux Firmware Development Kits and other PCI testing programs.

Basically, I was given a system to run a DVT (Design Validation Test) on. The DVT document was already written up and the tests had already passed on its official DVT. I just had to get up to speed with the technology in order to start a DVT on a newer version of the system.

Firstly I had to log into the system remotely over the RLM console (Remote LAN Module) and log into the console via serial. Then with various commands I had to take dumps of the PCI setup with varying different cards installed and setup. I still have a lot to learn on PCI architecture so my checks of the PCI dump were slow. Since the start of this DVT, I've actually started reading my PCI System Architecture book and I'm slowly beginning to grasp what PCI is all about. Then of course when I finish that, I'll be moving onto PCIe. Plenty to do.

Anyway, part of the DVT involved enabling and disabling Option ROM's. These are devices which are called by the BIOS to add functionality to the PC. The most common of these would be a VGA card. You can see exactly when this Option ROM is called by the BIOS as it is the first thing that comes up on screen. Other Option ROM's include network cards, SCSI cards, hard drives (SATA/PATA) or Fibre Optic Channels.

This brings me to IPL. In order to test the robustness of the system, it was necessary to load a number of operating systems onto a hard drive through the system. So I went through the monotony of installing, loading and configuring Windows Server 2003, Fedora Linux 10, FreeBSD, FreeDOS and DOS from a floppy drive. Other similar tests were booting from a USB key and from a PXE server (which I mentioned before).

All in all a very interesting experience. I'm looking forward to using the new system, but that doesn't arrive until next week when I'm gonna test the crap out of it!