U-Boot-2009-03移植笔记(从Nandflash启动二)

发布时间: 2024-09-04
来源: 电子工程世界

在U-Boot-2009-03移植笔记(从Nandflash启动一)中,我们写好了nandflash的读驱动,并且试图将u-boot本身从nandflash中读到sdram中,最后同时点亮led1和led2,可惜结果并不是我们想要的结果,本文就使用openjtag的调试方法,来诊断问题(不熟悉调试方法的,请参考U-Boot-2009-03移植笔记(调试篇))。


问题的发现

我们反编译u-boot文件,发现我们的程序还是在33f800090调用了nand_init_ll函数,那么我们在0x00000090和0x00000094两个地址设置断点,如图:

发现程序在0x00000090之后就跑飞了,怎么办?我们看看u-boot的反汇编代码:

先看0x00000090,发现没有问题,如图:

再来看看nand_init_ll函数本身,发现函数地址是0x33f8dcf0,如果映射到0地址,应该是0x0000dcf0,超出4K,无法在sram中被执行。知道问题的原因,也就很好解决。

问题的解决

打开board/xinna2440/u-boot.lds,将nand_op.c的代码放到前4k:

 

重新编译,烧写,发现led1和led2都被点亮.


文章来源于: 电子工程世界 原文链接

本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。