首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 驱动开发 >

请问有关uboot的有关问题,多谢

2012-02-19 
请教有关uboot的问题,谢谢发在其他区没人理。。转发在这里,为什么uboot里面出现很多字节对齐?有的时候是5字

请教有关uboot的问题,谢谢


发在其他区没人理。。转发在这里,
为什么uboot里面出现很多字节对齐?
有的时候是5字节,有的时候是16字节?
比如下面这段cpu里的 start.s,最后有个16字节对齐,用无效的deadbeef填充,这起什么作用?

另外顺便问一下,这段代码里,为什么如果是nandflash启动,就要加上64字节的偏移?

再顺便问一下,abort stack 是什么意思?。。为什么代码前后要留12字节的abort stack

谢谢
 

Assembly code
.globl _start_start: b    reset#ifndef CONFIG_NAND_SPL    ldr    pc, _undefined_instruction    ldr    pc, _software_interrupt    ldr    pc, _prefetch_abort    ldr    pc, _data_abort    ldr    pc, _not_used    ldr    pc, _irq    ldr    pc, _fiq_undefined_instruction:    .word undefined_instruction_software_interrupt:    .word software_interrupt_prefetch_abort:    .word prefetch_abort_data_abort:    .word data_abort_not_used:    .word not_used_irq:    .word irq_fiq:    .word fiq_pad:    .word 0x12345678 /* now 16*4=64 */#else    . = _start + 64#endif.global _end_vect_end_vect:    .balignl 16,0xdeadbeef



[解决办法]
我的个人理解,未必正确,供参考。
deadbeef填充就是一个标志,因为有些FLASH的默认值是全0或者全FF,所以一般用这两种之外的其它字节填充。通常要考虑不能全部用用一个字节,降低巧合的概率。deadbeef就是好记呗,恰好是两个单词。
字节对齐一般要看后面的程序是什么要求了。它要求在什么样格式的地址运行,前面的程序就填一些数据,把地址凑到满足要求。
NAND FLASH不支持随机读取,也就是说,代码不能直接跑在FLASH上。一般声称可以支持NAND FLASH启动的系统,是内置了NAND FLASH的驱动,启动时将NAND开头的一部分代码复制到内存里。所以我理解如果是NAND启动,前面一些程序是不需要的,但是为了保持和NOR启动的程序地址一样,不能直接删掉,所以就留空了64。

热点排行