移植uboot之修改代码支持NorFlash记录续集二
2017-12-17 21:41
323 查看
先说一个事:我会在最后把移植好的uboot,内核,分别做一个补丁文件,以后如果用到相同的uboot以及内核都可以直接下载我这个补丁进行打补丁操作就可以直接用~
上一个移植uboot续集,我们解决了无法写flash的问题,现在该去测试norflash写功能的完整性!
在串口中依次输入:
md.b 30000000
md.b 80000
mw.b 30000000 12345678
erase 80000 8ffff
cp.b 30000000 80000 10000
md.b 80000
md.b 30000000
cmp.b 30000000 80000 10000 (比较内容是否一样)显示如下:
内存和flash里的内容不一样,这是怎么回事呢?再试验一下把内存另一个地址的内容拷贝到flash(80000~90000地址之间)中:
erase 80000 8ffff
cp.b 32000000 80000 10000
cmp.b 32000000 80000 10000 显示如下:
很奇怪,这里又显示两个地方的内容是一样的!!!
经过分析内存的分布以及启动的流程,发现是在uboot启动过程调用第二阶段代码没有重新设置栈(具体过程就不分析,需要了解uboot的启动流程,以后讲解),下面直接给出解决办法:
在start.s中需要重新设置栈:
在调用第二阶段代码之前重新设置栈,加上这一句:
在上面与下面代码类似的地方加上下面的代码:
在board.c中的board_init_f函数里最后加上:
在board_init_f函数里最前面加上
然后重新烧写编译启动测试:
成功了,完美!!!
哈哈哈!!!终于搞定了这个BUG。开心~
想获得各种学习资源以及交流学习的加我:
qq:1126137994
微信:liu1126137994
可以共同交流关于嵌入式,操作系统,C++语言,C语言,数据结构等技术问题
上一个移植uboot续集,我们解决了无法写flash的问题,现在该去测试norflash写功能的完整性!
在串口中依次输入:
md.b 30000000
md.b 80000
mw.b 30000000 12345678
erase 80000 8ffff
cp.b 30000000 80000 10000
md.b 80000
md.b 30000000
cmp.b 30000000 80000 10000 (比较内容是否一样)显示如下:
内存和flash里的内容不一样,这是怎么回事呢?再试验一下把内存另一个地址的内容拷贝到flash(80000~90000地址之间)中:
erase 80000 8ffff
cp.b 32000000 80000 10000
cmp.b 32000000 80000 10000 显示如下:
很奇怪,这里又显示两个地方的内容是一样的!!!
经过分析内存的分布以及启动的流程,发现是在uboot启动过程调用第二阶段代码没有重新设置栈(具体过程就不分析,需要了解uboot的启动流程,以后讲解),下面直接给出解决办法:
在start.s中需要重新设置栈:
在调用第二阶段代码之前重新设置栈,加上这一句:
ldr sp, base_sp /* 重新设置栈lyy */如下:
/* unsigned int的值存在r0里,正好给board_init_r */ ldr r1, _TEXT_BASE ldr sp, base_sp /* 重新设置栈lyy */ /* 调用第二阶段的代码 */ bl board_init_r
在上面与下面代码类似的地方加上下面的代码:
/*lyy*/ .globl base_sp base_sp: .long 0
在board.c中的board_init_f函数里最后加上:
base_sp = addr_sp; /*lyy*/
在board_init_f函数里最前面加上
extern ulong base_sp; /*lyy*/
然后重新烧写编译启动测试:
成功了,完美!!!
哈哈哈!!!终于搞定了这个BUG。开心~
想获得各种学习资源以及交流学习的加我:
qq:1126137994
微信:liu1126137994
可以共同交流关于嵌入式,操作系统,C++语言,C语言,数据结构等技术问题
相关文章推荐
- 移植uboot之修改代码支持NorFlash记录
- 移植uboot之修改代码支持NorFlash记录续集
- 移植u-boot-2015.07-rc3之修改代码支持NorFlash(四)
- 移植u-boot-2015.07-rc3之修改代码支持NorFlash启动并真正支持NorFlash读写(五)
- 移植u-boot学习笔记8-----修改代码之支持DM9000网卡
- -boot移植(十一)---代码修改---支持nandflash
- 移植u-boot-2015.07-rc3之修改代码支持NandFlash(六)
- 移植u-boot学习笔记5----- 修改代码之支持NAND启动
- 移植u-boot-2015.07-rc3之修改代码支持DM9000网卡(七)
- 移植u-boot-2015.07-rc3之修改代码支持mtdparts命令(八)
- 移植u-boot学习笔记6-----修改代码支持nor flash
- 移植u-boot-2012.04.01到jz2440开发板之修改代码支持NAND启动
- 移植u-boot-2015.07-rc3之修改代码支持yaffs文件系统烧写(十)
- u-boot移植(十)---代码修改---支持nor flash
- u-boot移植(十二)---代码修改---支持DM9000网卡
- u-boot移植(十二)---代码修改---支持DM9000网卡
- l 移植u-boot之修改代码支持DM9000网卡-3.5
- 移植u-boot-2015.07-rc3之修改代码支持SDRAM和SPL启动(二)
- jz2440开发板移植U-boot之修改代码支持DM9000网卡
- 移植u-boot-2015.07-rc3之修改代码支持串口(三)