u-boot-2014.10移植第24天----nand flash启动(二)
发布时间:2020-12-15 17:26:10 所属栏目:百科 来源:网络整理
导读:硬件平台: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的代码,然后重定向。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |