【发布时间】:2018-09-23 15:56:45
【问题描述】:
我编译了一个简单的二进制文件(hello.bin)并将其存储在存储卡上。
我正在运行带有 i.mx 6 四核处理器的 NXP Sabre 开发套件。我已经启动了 U-boot 并试图访问二进制文件并使其运行。
hello.bin 可用,因为以下命令有效:
=> fatload mmc 1:4 0x20005000 hello.bin
reading hello.bin
按照我的理解,文件应该加载到地址为 0x20005000 的 RAM 中
所以我想测试一下二进制文件是否存在
=> md 0x20005000
20005000: 464c457f 00010101 00000000 00000000 .ELF............
20005010: 00280002 00000001 00010315 00000034 ..(.........4...
20005020: 000028f4 05000400 00200034 00280009 .(......4. ...(.
20005030: 00240025 70000001 00000454 00010454 %.$....pT...T...
看起来不错,因为起始位与我复制到 SD 卡的文件匹配。
当我尝试启动二进制文件时,设备报告未定义指令:
=> go 0x20005000
## Starting application at 0x20005000 ...
undefined instruction
pc : [<20005158>] lr : [<4ff71403>]
reloc pc : [<e7897158>] lr : [<17803403>]
sp : 4f56dd50 ip : 00000000 fp : 00000002
r10: 4f56f938 r9 : 4f56deb0 r8 : 4ffc3c40
r7 : 4ff713d9 r6 : 00000002 r5 : 20005000 r4 : 4f56f93c
r3 : 20005000 r2 : 4f56f93c r1 : 4f56f93c r0 : 00000000
Flags: nzCv IRQs off FIQs off Mode SVC_32
Resetting CPU ...
感谢您的帮助
【问题讨论】:
-
the => bdinfo,命令告诉我一些有关 DRAM 组的信息,从 0x10000000(7 个零)开始,到 0x4000000 结束。然后我使用 fatload mmc 1:4 0x10005000 hello.bin 代替,这似乎工作。我想我正在写一个超出范围的地址。 go 0x10005000 还是不行。
标签: binary yocto u-boot instruction-set