ASSERT :DEF:ENDIAN_CHANGE
[ ENDIAN_CHANGE
ASSERT :DEF:ENTRY_BUS_WIDTH
[ ENTRY_BUS_WIDTH=32
b ChangeBigEndian ;DCD 0xea000007
]
[ ENTRY_BUS_WIDTH=16
andeq r14,r7,r0,lsl #20 ;DCD 0x0007ea00 也就是 b ChangeBigEndian
]
[ ENTRY_BUS_WIDTH=8
streq r0,[r0,-r10,ror #1] ;DCD 0x070000ea 也就是 b ChangeBigEndian
]
|
b ResetHandler
]
这段代码是如何理解的?
ARM复位后默认是小端格式,如果ENDIAN_CHANGE被定义是不是说明在编译的时候要使用大端方式编译代码。之后生成的bin文件是以大端还是小端的方式编程到flash,才使得执行上面一段代码不会错误呢?
|