加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

u-boot-2014.10移植第24天----nand flash启动(二)

发布时间:2020-12-15 17:26:11 所属栏目:百科 来源:网络整理
导读:硬件平台:tq2440 开发环境:Ubuntu-3.11 u-boot版本:2014.10 本文允许转载,请注明出处:http://blog.csdn.net/fulinus nand flash启动 比较新的u-boot版本包括u-boot-2014版本的都是用重定向的机制,而且用到了代码位置无关的技术,在u-boot连接时使用了-

硬件平台:tq2440

开发环境:Ubuntu-3.11

u-boot版本:2014.10

本文允许转载,请注明出处:http://blog.csdn.net/fulinus


nand flash启动

比较新的u-boot版本包括u-boot-2014版本的都是用重定向的机制,而且用到了代码位置无关的技术,在u-boot连接时使用了-pie选项:
-pie :

Produce a position independent executable on targets which support it. For predictable results,
you must also specify the same set of options that were used to generate code (-fpie,-fPIE,or model
suboptions) when you specify this option.
"产生的代码中,没有绝对地址,全部使用相对地址,故而代码可以被加载器加载到内存的任意
位置,都可以正确的执行。"
u-boot是可以在Nor flash中运行的,u-boot.bin的起始位置在Norflash的0地址处,当MO[1:0] = 01、10时,系统上电后从Nor flash启动,从0地址处开始运行。并将u-boot重定向到SDRAM中运行。但是Nand flash是不能像Nor flash那样可以当做RAM操作,因为nand flash是地址和数据总线复用的。好在s3c2440从nand flash启动时会从nand flash读4Kbytes的内容到s3c2440芯片内部自带的DRAM中,如果在nand flash的前4Kbytes存储空间放上一段可以执行的代码,其功能就是将nand flash中u-boot拷贝到SDRAM中,再将使用重定向的方法,跳转到SDRAM中去运行u-boot即可。
可惜的是2440中跑的u-boot并不支持从Nand flash启动。因此,我们需要在u-boot的前4K代码中加入操作nand flash的代码,然后重定向。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读