First step of qemu-omap3
x-load 已经可以在qemu-omap3中运行起来。对x-load主要做了两个地方的修改:
1. 对判断外部输入时钟频率的部分,做了修改。x-load判断外部时钟频率的方法是先设置32KHZ的基准时钟,然后设置GP1的时钟源为SYS_CLK。然后读取GP1 Timer在20个cycle内的差值,进而判断时钟。这个方法在emulator中有的时候并不是很准。因为emulator除了执行指令外,还需要做其他事情。有的时候,emulator去读取GP1 Timer 的时候,实际上运行的时间已经不止ARM 20个cycle的时间,因此读取出来的counter值偏大。而x-load仍然认为刚才是跑了20个cycle。因此,得到的频率比实际的频率大。在 qemu-omap3中,目前认为外部时钟的频率是12MHZ13MHZ,因此,去掉了x-load中判断外部时钟频率的部分,在x-load中直接赋值外部时钟频率12MHZ13MHZ.
2. 去掉了nand flash中进入ECC检查的部分。也就是注释掉drivers/k9f1g08r0a.c中的宏ECC_CKECK_ENABLE
//57 #define ECC_CHECK_ENABLE
下面是x-load运行的信息:
# ./qemu-system-arm -M beagle -mtdblock beagle-nand.bin -serial stdio -nographicTexas Instruments X-Loader 1.41
Starting OS Bootloader...
运行到u-boot的时候还有点问题。go on working.