uboot 烧写进 norflash 进行调试

12.1 烧写后 串口不使能

  内存不能使能

  遍历代码,可以发现,在SDRAM 初始化之前,我们并没有设置时钟,但是SDRAM初始化后,我们已经开始用内存控制器了,这是不合理的,操作器件之前,我们必须把时钟给初始化。

  在源代码中,内存控制器初始化之前,并没有进行时钟的设置。加上时钟的设置。

  内存控制器的时钟 为MPLL,我们要把 MPLL 的初始化放入到 start.S 中进行初始化,取消board_init_f 执行的链表 init_sequence_f 的 board_early_init_f 函数中对MPLL 的设置即可。

  源代码的时钟的设置在 board_init_f 执行的链表 init_sequence_f 的 board_early_init_f 函数中,我们要把这些代码移动到 _start.S 中执行,在内存控制器初始化之前。

  还有就是必须关闭掉 终端的 静态显示:配置宏为CONFIG_CONSOLE_RECORD

12.1.1 修改 start.S 中的代码

  

12.1.2 注释掉 jz2440.c 对MPLL 的设置

  board_early_init_f 中

  

12.1.3 编译烧写

  

12.2 调试方法

  打开 openjtag 工具:

  

  点击 connect,然后点击 telnet,进入 telent 中运行:

  reset halt,

  

  halt

  

  读写前 4个 字节 ,与 uboot.bin 的二进制进行对比:

    

  uboot.bin 中的字节:

  

  可以看出读取的数据是正确的。

  从 step 0 开始执行,一步一步 查看数据是否正确:

  

  这样运行很慢,我们也可以将 uboot 文件进行 objdump 转码成 uboot.dis 文件,然后设置断点。

  在 board_init_f_alloc_reserve 这里设置断点,因为执行完了内存控制器初始化后,就开始执行此函数:

  uboot.dis  文件中的地址:

  

  

  我们在 0008444 那里设置一个硬件断点:

  

  然后  resume 继续执行:

  

  可以看出在 0x00008444 处暂停了,此时 内存已经初始化完了,应该是可以访问内存的。

  读内存:mdw 0x30000000

  

  写内存:mww 0x30000000 0x12345678,写完之后读取内存 mdw 0x30000000

  

12.1.2

  

    

  

十二、u-boot 调试--串口修改的更多相关文章

  1. Linux学习之CentOS(二十二)--单用户模式下修改Root用户的密码

    在上一篇随笔里面详细讲解了Linux系统的启动过程 (Linux学习之CentOS(二十一)--Linux系统启动详解),我们知道Linux系统的启动级别一共有6种级别,通过 /etc/inittab ...

  2. 学习之路三十二:VS调试的简单技巧

    这段时间园子里讲了一些关于VS的快捷键以及一些配置技巧,挺好的,大家一起学习,一起进步. 这段时间重点看了一下关于VS调试技巧方面的书,在此记录一下学习的内容吧,主要还是一些比较浅显的知识. 1. 调 ...

  3. Spring Boot2 系列教程(三十二)Spring Boot 整合 Shiro

    在 Spring Boot 中做权限管理,一般来说,主流的方案是 Spring Security ,但是,仅仅从技术角度来说,也可以使用 Shiro. 今天松哥就来和大家聊聊 Spring Boot ...

  4. Spring Boot(十二):spring boot如何测试打包部署

    Spring Boot(十二):spring boot如何测试打包部署 一.开发阶段 1,单元测试 在开发阶段的时候最重要的是单元测试了,springboot对单元测试的支持已经很完善了. (1)在p ...

  5. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十二:串口模块① — 发送

    实验十二:串口模块① — 发送 串口固然是典型的实验,想必许多同学已经作烂,不过笔者还要循例介绍一下.我们知道串口有发送与接收之分,实验十二的实验目的就是实现串口发送,然而不同的是 ... 笔者会用另 ...

  6. Senparc.Weixin.MP SDK 微信公众平台开发教程(二十二):如何安装 Nuget(dll) 后使用项目源代码调试

    最近碰到开发者问:我使用 nuget 安装了 Senparc.Weixin SDK,但是有一些已经封装好的过程想要调试,我又不想直接附加源代码项目,这样就没有办法同步更新了,我应该怎么办? 这其实是一 ...

  7. Spring Boot干货系列:(十二)Spring Boot使用单元测试(转)

    前言这次来介绍下Spring Boot中对单元测试的整合使用,本篇会通过以下4点来介绍,基本满足日常需求 Service层单元测试 Controller层单元测试 新断言assertThat使用 单元 ...

  8. 【mongodb系统学习之十二】mongodb修改数据(一)

    十二.mongodb修改数据:update 1).修改数据库数据:update:语法 db.collectionName.update({},{},boolean,boolean): 2).updat ...

  9. Linux学习总结(十二)—— CentOS用户管理:创建用户、修改用户、修改密码、密码有效期、禁用账户、解锁账户、删除用户、查看所有用户信息

    文章首发于Linux学习总结(十二)-- CentOS用户管理,请尊重原创保留原文链接. 创建用户 useradd -g webadmin -d /home/zhangsan zhangsan pas ...

随机推荐

  1. CANOE入门(二)

    CAPL就是Communication Application Programming Laguage的缩写,CAPL类似于C语言的语法,因此所有的语法请参考C语言教程,这里不在这里进行详述,关于C语 ...

  2. Gym - 100989E

    Islam is usually in a hurry. He often types his passwords incorrectly. He hates retyping his passwor ...

  3. Jupyter Notebook 编辑器美化

    汇总系列:https://www.cnblogs.com/dunitian/p/4822808.html#ai 2018-10-10新增Linux样式路径: Logo: ~/anaconda3/lib ...

  4. Linux:文件系统层次结构标准(Filesystem Hierarchy Standard)

    Linux FHS_2.3标准文档:http://refspecs.linuxfoundation.org/FHS_3.0/fhs-3.0.pdf

  5. 如何搭建高可用redis架构?

    如何搭建高可用redis架构? 温国兵 架构师小秘圈 昨天 作者:温国兵,曾任职于酷狗音乐,现为三七互娱 DBA.目前主要关注领域:数据库自动化运维.高可用架构设计.数据库安全.海量数据解决方案.以及 ...

  6. 浏览器直接显示html代码,不解析代码

    在某些时候,我们可能因为某些特殊的原因,不想让浏览器解析html代码. 1,把代码放到js中,如下 <script type='text/html' style='display:block'& ...

  7. 解决samtools报错:[main_samview] region "chr2:20,100,000-20,200,000" specifies an unknown reference name. Continue anyway.

    根据Samtool 的manual文档介绍,如果想搜索bam文件的某段区域,需要用到以下命令: samtools view aln.sorted.bam chr2:20,100,000-20,200, ...

  8. 第二十七节,IOU和非极大值抑制

    你如何判断对象检测算法运作良好呢?在这一节中,你将了解到并交比函数,可以用来评价对象检测算法. 一 并交比(Intersection over union ) 在对象检测任务中,你希望能够同时定位对象 ...

  9. jenkins学习:jenkins+maven

    之前配置了jenkins+gitlab,jenkins已经可以从gitlab上面拉取代码了,执行项目构建还要加一个maven. 1.配置全局的maven 系统管理-全局工具配置-配置maven的地址 ...

  10. Unity 光照着色器

    光照着色器需要考虑光照的分类,一般分为漫反射和镜面反射. 漫反射计算基本光照: float brightness=dot(normal,lightDir)    将法线和光的入射方向进行点积运算,求出 ...