U-boot,Qemu和baremetal

时间:2017-01-08 10:36:45

标签: qemu u-boot bare-metal

我正在读这个:
https://balau82.wordpress.com/2010/03/10/u-boot-for-arm-on-qemu/

上下文

Baremtal编程

前言

  • OSX El Capitan,Qemu 2.2.1,U-boot 2016-07
  • 我们不能使用uboot.bin(没有正确的加载和崩溃。更不用说没有Uboot提示)。我认为可以使用较旧的uboot版本。
  • 我创建了一个裸机装配程序,仅在qemu中执行就好了(将寄存器设置为某些值,qemu监视器确认了这些值)
  • 当我将其与UBoot
  • 混合时,无法执行
  • 我需要uboot来测试UART,拥有合适的DRAM等等。我不想为那些部分未记录的东西写一个新的引导加载程序。

过程:

  • QEMU +裸机应用程序(下面的Makefile):

    prepimg:
        ~/Downloads/gcc-arm-none-eabi-5_4-2016q3/bin/arm-none-eabi-as -g comm.ml -o comm.o
        ~/Downloads/gcc-arm-none-eabi-5_4-2016q3/bin/arm-none-eabi-ld -T test.ld comm.o -o test.elf
        ~/Downloads/gcc-arm-none-eabi-5_4-2016q3/bin/arm-none-eabi-objcopy -O binary test.elf test.bin
    mkimg:
        mkimage -A arm -C none -T kernel -O linux -d test.bin -a 0x0010000 -e 0x0010000 test.uimg
    launch_test:
        qemu-system-arm -m 128M -M vexpress-a9 -nographic -monitor telnet:127.0.0.1:1234,server,nowait -kernel test.uimg
    

有效。代码在正确的地址执行(r15证明)。

  • QEMU + baremetal + U-boot

    prepimg:
        ~/Downloads/gcc-arm-none-eabi-5_4-2016q3/bin/arm-none-eabi-as -g comm.ml -o comm.o
        ~/Downloads/gcc-arm-none-eabi-5_4-2016q3/bin/arm-none-eabi-ld -T test.ld comm.o -o test.elf
        ~/Downloads/gcc-arm-none-eabi-5_4-2016q3/bin/arm-none-eabi-objcopy -O binary test.elf test.bin
    mkimg:
        mkimage -A arm -C none -T kernel -O linux -d test.bin -a 0x0010000 -e 0x0010000 test.uimg
    
    cat_them:
        cat u-boot-2016.07/u-boot test.uimg > u-boot-2016.07/flash.bin
    
    launch_qemu:
        qemu-system-arm -m 128M -M vexpress-a9 -nographic -monitor telnet:127.0.0.1:1234,server,nowait -kernel u-boot-2016.07/flash.bin
    

然后,我得到:

Wrong Image Format for bootm command
ERROR: can't get kernel image!

试验:

  • 我尝试将代码的入口点和加载地址修改为0x80008000,0x8000,但仍然是一样的。
  • 我花了好几个小时试图显示内存的不同区域(使用u-boot md工具),寻找我的代码,没有运气。

我不知道发生了什么。

1 个答案:

答案 0 :(得分:1)

最后,

我通过tftp删除了我的文件并完成了工作。