Welcome to the dark corner of BIOS reverse engineering, code injection and various modification techniques only deemed by those immensely curious about BIOS

Friday, August 26, 2011

License for the source code in the Low Cost Embedded x86 Teaching Tool article

I haven't had the time to update the copyright notice in the Low Cost Embedded x86 Teaching Tool. However, if you want to use it (and modify it) for your own purposes, you could do so under the Gnu Public License (GPL) version 2 which mandates you to relase your changes. Coreboot project have been using some part of it for their use under the GPL. I'm going to update the license notice in the article ASAP. Cheers.

Sunday, August 14, 2011

IOMMU Specification from Intel and AMD

This is just a dump of the links to download AMD and Intel IOMMU specification. For those of you new to IOMMU, a good introductory is at http://en.wikipedia.org/wiki/IOMMU.

Now, the specs:

AMD specs: http://support.amd.com/us/Processor_TechDocs/34434-IOMMU-Rev_1.26_2-11-09.pdf and http://support.amd.com/us/Processor_TechDocs/48882.pdf

Intel spec: http://download.intel.com/technology/computing/vptech/Intel%28r%29_VT_for_Direct_IO.pdf

Just a note that Intel calls the IOMMU as Virtualization Technology for Directed IO (VT for Directed I/O).

Saturday, August 6, 2011

"Frying" Another USB-to-IDE Converter

Last wednesday was the second time I fried another USB-to-IDE converter device due to buggy ATA command that was sent to the IDE device (a DVD-ROM Drive). I'm not really sure which command that causes it to happen. But, now is the time to look into ATA command set much deeper. Well, this is just a precaution for guys/girls out there working with *-to-IDE converter device. Be very careful with ATA command that you send to the IDE device. Apparently, the problem was the "offending" ATA command corrupt the firmware inside the converter. I haven't look very detailed into what type of chip used in the converter. Probably MIPS-based or ARM-based microcontroller. Too bad I don't have JTAG debugger to see what exactly happens.

Saturday, July 30, 2011

Memory Management in Legacy BIOS

Memory management during POST in "legacy" BIOS is not well known to most system programmers. Probably, only a handful knows that this kind of routine even exists. Perhaps, you would ask why would anyone need a memory manager in BIOS level? Well, as you know, memory space in 16-bit environment is scarce. Moreover, BIOS modules are getting bigger and if all of them loaded at the same time to the 1 MB space available in 16-bit mode, we will run out of space very easily. The solution is obviously a memory manager. But, how would you go about creating a memory manager while everyone are developing propietary BIOS codes? As in other branch of software development. You create a standard interface for the memory manager, leaving out the details to implement the standard to the BIOS vendors. This is exactly what happens.

The standard for memory management during POST in BIOS code execution is the Post Memory Manager (PMM) specification. The document for this specification is rather hard to come by. PMM is a relatively short specification.

An in-depth coverage of the subject is currently in preparation for an upcoming article at the Pinczakko Official Website.