U-Boot-2009-03移植笔记(从Nandflash启动二)
2013-05-28 18:04
204 查看
在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都被点亮.
问题的发现
我们反编译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都被点亮.
相关文章推荐
- U-Boot-2009-03移植笔记(从Nandflash启动一)
- U-Boot-2009-03移植笔记(第二阶段:时钟!)
- U-Boot-2009-03移植笔记(移植准备)
- U-Boot-2009-03移植笔记(点亮第一展灯)
- U-Boot-2009-03移植笔记(调试篇)
- U-Boot-2009-03移植笔记(第二阶段移植准备)
- U-Boot-2009-03移植笔记(点亮第一展灯)
- U-Boot-2009-03移植笔记(移植准备)
- U-Boot-2009-03移植笔记(移植准备)
- U-Boot-2009-03移植笔记(目录:持续更新)
- u-boot-2012.04.01移植笔记——支持NAND启动
- u-boot-2009-11移植之stage1(支持从nand启动)
- 移植u-boot学习笔记1-----实验及分析启动过程之概述
- 移植u-boot学习笔记2-----分析启动过程之内存分布
- U-boot-2014.10移植到TQ2416开发板之NandFlash启动探究
- TQ2440 学习笔记—— 31、移植U-Boot【U-Boot 的启动过程第二阶段源码分析】
- 【TINY4412】U-BOOT移植笔记:(9)SD卡启动U-BOOT
- 移植u-boot12.04到jz2440 -->支持nandflash启动
- u-boot-2016.01移植笔记之支持nandflash
- 移植u-boot学习笔记3-----分析启动过程之重定位