触屏网站开发,四川住房建设厅网站,《设计》韩国,html代码大全免费先说一个事#xff1a;我会在最后把移植好的uboot#xff0c;内核#xff0c;分别做一个补丁文件#xff0c;以后如果用到相同的uboot以及内核都可以直接下载我这个补丁进行打补丁操作就可以直接用~
上一个移植uboot续集#xff0c;我们解决了无法写flash的问题#xff…先说一个事我会在最后把移植好的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里的内容不一样这是怎么回事呢再试验一下把内存另一个地址的内容拷贝到flash80000~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_BASEldr 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。开心~
想获得各种学习资源以及交流学习的加我 qq1126137994 微信liu1126137994 可以共同交流关于嵌入式操作系统C语言C语言数据结构等技术问题