先说一个事:我会在最后把移植好的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中需要重新设置栈:
在调用第二阶段代码之前重新设置栈,加上这一句: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。开心~

想获得各种学习资源以及交流学习的加我:
qq:1126137994
微信:liu1126137994
可以共同交流关于嵌入式,操作系统,C++语言,C语言,数据结构等技术问题

移植uboot之修改代码支持NorFlash记录续集二相关推荐

  1. 移植uboot之修改代码支持NorFlash记录续集

    接着上一篇文章写的内容(上一篇文章链接:移植uboot之修改代码支持NORFLASH),上一篇结尾测试flash的擦除读写功能,结果无法写flash,卡在了这里: 前面已经擦除成功,这里写内容写不进去 ...

  2. 移植uboot之修改代码支持NorFlash记录

    学习交流加 个人qq: 1126137994 个人微信: liu1126137994 学习交流资源分享qq群: 962535112 今天我们的任务是修改uboot源码支持NorFlash. 上两篇关于 ...

  3. jz2440开发板移植U-boot之修改代码支持DM9000网卡

    今天我们来移植U-boot到jz2440开发板,修改代码支持DM9000网卡.查看之前写的移植记录请点击链接:点击查看之前的移植记录 现在大多数开发板都支持DM9000网卡.我们的U-boot源码里面 ...

  4. 五、移植u-boot-2016.03到Jz2440之修改代码支持NOR Flash

    5. 移植u-boot-2016.03修改代码支持NOR Flash 从上一节把uboot烧写到NAND启动后,最后打印出Flash: 0 Bytes,如下图所示.我们的Jz2440开发板的NOR F ...

  5. ERP渠道信息的修改和渠道联系记录(二十三)

    用例图: 前端代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Cha ...

  6. 移植u-boot-2012.04.01到jz2440开发板之修改代码支持NAND启动

    上一篇文章我们已经修改了uboot源码使其能够正常打印输出了,但是输出停到了nand启动那里,所以这篇文章就来记录如何修改源码使uboot支持NAND启动. 原来的代码在链接时加了"-pie ...

  7. 移植uboot第九步:支持yaffs映像烧写

    写在前面: 我的博客已迁移至自建服务器:博客传送门,CSDN博客暂时停止,如有机器学习方面的兴趣,欢迎来看一看. 此外目前我在gitHub上准备一些李航的<统计学习方法>的实现算法,目标将 ...

  8. 1--新唐nuc980 NUC980移植 UBOOT,从外部mx25l启动

    1.下载官方源码U-boot 2.修改配置支持外部spi nor flash https://blog.csdn.net/LOTOOHE/article/details/114291715 3.增加C ...

  9. 移植U-BOOT之裁剪和修改默认参数(易用性)启动内核,以及对uboot进行分区

    今天我们来裁剪U-BOOT,使其更加易用,修改默认参数,以及制作最终修改好得补丁文件方便以后的快速移植. 那么如果想看之前的关于网卡以及flash等的移植,请点击链接查看:点击链接查看 在裁剪修改之前 ...

最新文章

  1. typedef 返回类型(*Function)(参数表) ——typedef函数指针
  2. 手机视频直播解决方案
  3. VC中如何使某一窗口始终居于其它窗口前面?
  4. Golang协程goroutine和管道channel结合案例
  5. css-net 中华版,使用C#代码选择CSS样式(ASP.net)
  6. 大数据应用项目创新大赛_第二届海南大数据创新应用大赛收官
  7. 1092 最好吃的月饼 (20分)
  8. 使用docker方式安装etcd集群,带TLS证书
  9. idea开发java前端_Web前端开发神器 Intellij IDEA
  10. 无损检测技术知识大全
  11. matlab 滤波器设计工具,滤波器设计工具快速入门
  12. TOM邮箱|怎么在邮箱里设置邮件个人签名呢?
  13. evernote 有道_如何备份Evernote笔记本(以防万一)
  14. 问题 F: 是你飘了,还是我拿不动刀了(字符串问题)
  15. Android毕设项目功能:商城列表与购物车展示(一)
  16. Java 首字母大写高效方法
  17. redis 在32位系统安装以及使用
  18. 图形渲染——实时光线追踪RTRT(Games202)
  19. 赛孚耐SafeNet宏狗GrandDog微狗MicroDog加密狗复制破解路径
  20. vue简单实现词云图组件

热门文章

  1. 第十期:快来了解这五种热门的开发技能
  2. Linux下如何定位Java进程CPU利用率过高原因
  3. Qt程序窗口关闭不退出而最小化到托盘的方法
  4. 函数模板(参考《C++ Templates 英文版第二版》)
  5. 2020年周记(2/50)
  6. 数据结构算法入门--一文了解什么是复杂度
  7. 3d000: no database selected_No.[C9]020
  8. FreeMarker 集合遍历
  9. 棋盘切割 DP POJ 1191
  10. 防止ASP.NET按钮多次提交的办法