完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
参考其它ARM芯片的启动流程,网上这样说的,上电后,从0地址开始执行,如果是从NAND启动,则IROM自动加载NAND的几KB数据到ISRAM运行,1、但是IROM和ISRAM都不是对应0地址啊。
2、而且,我在分析uboot代码时,也没看到SDRAM和时钟的初始化代码,这部分初始化是不是在IROM中做了呢? 3、如果是IROM里面做了SDRAM的初始化,那是不是IROM直接把NAND里的部分数据直接加载到SDRAM里面了呢? |
|
相关推荐
1个回答
|
|
对于NUC972芯片,其启动流程与其它ARM芯片有所不同。
1、在上电后,NUC972会首先从ROM中的IROM(Internal ROM,内部ROM)中读取代码并执行,而IROM并不是从0地址开始执行,而是从0x0C000000开始执行,这是芯片内部默认的启动地址,可以通过寄存器NVIC_VTOR来修改。 2、在IROM中,会先进行一些底层的初始化操作,如设置时钟等,然后加载并运行从外部存储介质(如NAND)中读取的uboot代码,而这部分代码是被加载到ISRAM(Internal SRAM,内部SRAM)中运行的,而并非从0地址开始执行。ISRAM大小为64KB,地址范围是0x20000000 - 0x2000FFFF。 3、在uboot代码中,会进行SDRAM的初始化操作,包括设置SDRAM的时序参数、初始化SDRAM控制器等。UBOOT将自身运行的栈指针和堆指针都放在SDRAM中开辟的一个区域,这样后续操作系统运行时就直接使用这个区域的内存空间即可。 4、在将uboot代码从外部存储介质中加载到ISRAM时,不会直接将数据加载到SDRAM中,而是先加载到ISRAM中进行运行。在uboot代码中进行SDRAM初始化操作后,再将uboot所在的代码段和数据段复制到SDRAM中,供后续系统运行时使用。 总之,NUC972芯片的启动流程比较特殊,与传统的ARM芯片有所不同。在IROM中完成了一些底层的初始化操作后,会加载外部存储介质(如NAND)中的uboot代码到ISRAM中运行,并在uboot代码中完成SDRAM的初始化操作,最终将uboot加载到SDRAM中供后续系统运行时使用。 |
|
|
|
只有小组成员才能发言,加入小组>>
3278 浏览 9 评论
2956 浏览 16 评论
3458 浏览 1 评论
8996 浏览 16 评论
4051 浏览 18 评论
1109浏览 3评论
572浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
568浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2301浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1858浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 04:17 , Processed in 1.179671 second(s), Total 81, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号