原创 u-boot: NAND flash支持

2009-7-17 22:27 4269 8 10 分类: MCU/ 嵌入式

折腾了两天,总算把NAND的启动搞定了.


说白了,道理很简单,NAND的启动凡是做过2410建议bios的人都知道原理,也知道代码该如何写.


不过u-boot的代码链接方式让初入GCC的新手确实感到迷惘. 在我的bios里面的代码放到u-boot里面就是不好使!


后来调试发现,我的存储器初始化是放在了lowlevel_init.S文件中的, 查看map文件后发现默认的链接方式把它放到了4K的后面,这导致在拷贝代码之前调用的失败.


在网上找了一下,就发现很多高手都已经给出了解决办法(顶层Makefile文件中):


#__LIBS := $(subst $(obj),,$(LIBS)) $(subst $(obj),,$(LIBBOARD))
__LIBS := $(subst $(obj),,$(LIBBOARD)) $(subst $(obj),,$(LIBS))
这样修改之后查看map文件可以发现,lowlevel_init函数链接到了前面.


稍写试试,OK!


NAND可以启动了!


代码附后,https://static.assets-stash.eet-china.com/album/old-resources/2009/7/17/617ad6c6-caf8-4480-95ee-145e5b66ef21.rar欢迎大家下载.


喜欢的话顶一下啊!

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户1156376 2009-7-19 13:28

在不修改Makefile的情况下,可以通过修改目标板下的链接文件u-boot.lds来使lowlevel_init放在4K之内: cpu/arm920t/start.o (.text) board/net2410e/lowlevel_init.o (.text) 把之放到start.o的后面.

tengjingshu_112148725 2009-7-18 13:13

谢谢分享
相关推荐阅读
用户1156376 2014-08-18 17:23
[博客大赛]MDK下代码的分段管理 续3
继续写点分段管理的问题。 设计思想主要是设计一个通用的BSP,固化后只需要修改APP代码就可以,这适用于远程升级的系统或是进行二次开发的系统。 考虑到编译器链接的时候会把没有使用的代码段(...
用户1156376 2014-02-27 18:14
Freescale MCU SPI
Freescale S12 SPI: 0. 以下所述为查询模式使用SPI 1. SPI控制器有两个中断, 数据发送(SPTEF)和数据接收(SPIF) 2. 数据发送(SPTEF)标志...
用户1156376 2014-02-26 09:17
Freescale MCU摘记
仅用于记录Freescale的点滴记录: 1. 把AD口用作IO口的方法: 除了正常的设置外,还需要把 ATDDIEN 寄存器写为0xFF, 这样使能了数字IO。否则默认为AD输入。 ...
用户1156376 2013-12-14 11:33
[STM32]MDK下代码的分段管理 续2
前文所述的代码分段,限定比较大,对于使用 #pragma arm section code=".ARM.__at_0x8100000" 固定地址的方式,每个文件都需要指定不同的地址以区别。...
用户1156376 2013-12-09 18:12
[STM32]MDK下代码的分段管理
编译大型的程序时,可能某一段代码固定之后不再改变(比如BSP),而应用部分经常修改。在这种情况下,如果使用在线升级或是Bootloader的方式升级程序时,你就觉得每次升级的代码有一部分是重复的(...
用户1156376 2012-10-14 09:10
【uCOS-III移植笔记】OS启动过程
(1) 关闭系统中断 (2) CPU_Init(); 初始化CPU服务(时间戳、中断时间测量、CPU信息初始化等) (3) OSInit(); 初始化系统(系统变量、系统任务...
EE直播间
更多
我要评论
2
8
关闭 站长推荐上一条 /3 下一条