专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 驱动开发

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

发布时间:2010-06-14 17:44:31 文章来源:www.iduyao.cn 采编人员:星星草
请教有关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。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: