调试2440 RAM拷贝至SDRAM遇到的问题
调试2440 RAM拷贝至SDRAM遇到的问题
汇编代码主要是初始化一些寄存器,关狗,初始化时钟,初始化存储管理器以便访问内存,然后将SoC上4k RAM数据拷贝至SDRAM,然后在SRAM里面运行,由于代码未正常跑起来,于是使用JLinkExe来调试。JLinkExe指定了一个命令文件: JLinkExe -commandfile ./cmd.jlink ,cmd.jlink文件内容如下:
r
loadbin /home/thomas/learn/armasm/addresses/main.bin 0x0
setbp 0x0 a s
setpc 0x0
运行至内存拷贝代码时发现了问题:
copy_steppingstone2sdram:
ldr r0,=0x30000000 @sdram start addr
ldr r1,=(0x30000000+*) @steppingstone length + sdram start addr
mov r2,#0x0 @steppingstone start addr
copy_cycle:
ldr r3,[r2],#
str r3,[r0],#
cmp r0,r1
bne copy_cycle
mov pc,lr
代码反复分析,没发现问题,但是诡异的是:单步至第六行汇编指令时,按道理r3里面值应该是我的main.bin文件的前4个字节,输入:regs 查看各寄存器值,发现r3居然是0xDEEEDEEE,继续下一个字节的拷贝,这下r3的值又正常了。于是怀疑难道是flash这个点坏了?但是 flash不是有坏块标识机制吗?然后进一步确认下,使用命令:mem32 0x0 1,发现输出值又是对的,并不是0xDEEEDEEE。突然觉得0xDEEEDEEE这个值比较有特点,于是直接百度这个值,这下搜到了ARM官方文档,Using EmbeddedICE,这下才明白怎么回事了。主要是由于的cmd.jlink文件里面设置了一个软件断点。一般断点分为2种,1.软件断点 2.硬件断点。
1.硬件断点
硬件断点通过使用一个被称为EmbeddedICE的宏单元来监视写往地址线上的数据,如果地址匹配上则停止执行。这个宏单元是可以配置的,配置为breakpoint或者watchpoint,它会占据这个硬件单元,一般一个芯片上的EmbeddedICE宏单元数量不会太多,比如ARMv5的ARM9只有2个。也就是说至多设置2个硬件断点,如果要设置第三个,那么必须覆盖其中一个。
2.软件断点
软件断点也是通过使用EmbeddedICE宏单元来监测取指时指令是否符合一个特殊的bit-pattern,位模式,就是说取出的指令是否是个特定值,或者指令某几个位是否匹配上。这个bit-pattern会预先存储到下软件断点的位置,也就是说把在内存中哪个位置的值替换为这个bit-pattern,而原来这个位置的指令会被暂存到调试器的存储单元中。因此自修改代码,或者位于ROM中的代码是不能使用这种断点的。ROM中的很好理解,下软件断点必须往里面写bit-pattern,而ROM只读,显然不行了,自修改代码可能出现代码拷贝的动作,从源地址拷贝至目标地址,如果这个时候你在源地址某处下个软件断点,那么你拷贝到目的地址的这条指令变成了bit-paterrn了。
我遇到的问题正是由于在零地址下了个软件断点导致。软件断点个数是没限制的,所有的软件断点占据一个EmbeddedICE宏单元,也就是说对于只有2个宏单元的ARM9,你下过软件断点后就只能下一个硬件断点了。
调试2440 RAM拷贝至SDRAM遇到的问题的更多相关文章
- RAM,SRAM,DRAM,SDRAM,DDR RAM,ROM,PROM,EPROM,EEPROM,NAND FLASH,NOR FLASH的区别
RAM:由字面意思就可以理解,SDRAM SRAM DRAM(下面蓝色字体的这几种)都可以统称RAM,random access memory(随机存取存储器)的缩写,下面是51hei.com为大家整 ...
- Jlink 软件断点和硬件断点
调试2440 RAM拷贝至SDRAM遇到的问题 汇编代码主要是初始化一些寄存器,关狗,初始化时钟,初始化存储管理器以便访问内存,然后将SoC上4k RAM数据拷贝至SDRAM,然后在SRAM里面运行, ...
- RAM, SDRAM ,ROM, NAND FLASH, NOR FLASH
在看上面2440的内存映射的时候,对其中的有些名字,不是完全太懂,所以到网上找了相关的信息. 对于mini2440来说,SDRAM,即内存,程序运行时的地方.选择连接SDRAM的为bank6. 1)S ...
- 新手学习ARM,对片内ram、SDRAM、NOR FLASH和NAND FLASH启动这几个概念的理解
片内的ram用来存储启动代码,在2440初始化sdram之前,代码就在片内ram中运行.片内ram装载的是norflash中的内容,即u-boot. uboot放在norflash里,nandflas ...
- 原来程序是这样从NandFlash拷贝并跳转到SDRAM的
重新看了一下FL2440的BootLoader,终于把程序是怎样从Nandflash拷贝并跳转到SDRAM的过程弄清楚了,在这边做一下笔记.先上张图: 1. 当S3C2440被配置成从Nand Fla ...
- 将ADS1.2的工程迁移到KEIL上-基于2440
裸机程序应该是一个很好的选择 1. 不拷贝启动代码,因为我们用自己的启动代码 2. 建立工程目录分级,建立完成后如下所示 拷贝相应代码到对应目录中 Option中拷贝 Core中拷贝 建立 ...
- 【转】S3C2440与SDRAM NorFlash NandFlash连线分析
一.SDRAM(HY57V561620F)连线分析 1. S3C2440 有27根地址线ADDR[26:0],8根片选信号ngcs0-ngcs7,对应bank0-bank7,当访问bankx 的地址 ...
- 裸板驱动总结(makefile+lds链接脚本+裸板调试)
在裸板2440中,当我们使用nand启动时,2440会自动将前4k字节复制到内部sram中,如下图所示: 然而此时的SDRAM.nandflash的控制时序等都还没初始化,所以我们就只能使用前0~40 ...
- arm裸板驱动总结(makefile+lds链接脚本+裸板调试)
在裸板2440中,当我们使用nand启动时,2440会自动将前4k字节复制到内部sram中,如下图所示: 然而此时的SDRAM.nandflash的控制时序等都还没初始化,所以我们就只能使用前0~40 ...
随机推荐
- ActiveMQ 简介与安装
一. 概述与介绍 ActiveMQ 是Apache出品,最流行的.功能强大的即时通讯和集成模式的开源服务器.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provide ...
- HTML(.js) – 最简单的方式操作 DOM 的 JS 库
HTML(.js) 是一个轻量的(压缩后~2kb) JavaScript 库,简化了与 DOM 交互的方法. 这个 JavaScript 库的方法可读性很好,并具有搜索和遍历 DOM 的方法.相比 j ...
- FancySelect – 更好用的 jQuery 下拉选择框插件
FancySelect 这款插件是 Web 开发中下拉框功能的一个更好的选择.FancySelect 使用方便,只要绑定页面上的任何 Select 元素,并调用就 .fancySelect() 就可以 ...
- Type.js – 帮助你更好的控制网页字体排版
Type.js 是一款很好的网页字体排版工具.它可以让你使用新的 CSS 属性,在网页上试下更精细的排版控制.设置很简单.上传 type.js 到您的网站,并在你的 HTML 链接中引用.接下来,你就 ...
- HTML5 模拟现实物理效果,感受 Web 技术魅力
Ball Pool 是一个基于 HTML5 技术的实验,模拟现实物理效果,让你在 Web 中感受自然物体的运动.玩法介绍:可以随意拖动圆球.点击页面背景.晃动浏览器.双击页面背景或者按住鼠标左键,有不 ...
- [js开源组件开发]tip提示组件
tip提示组件 常见的应用场景中,总是难免会遇到提示信息,比如显示不完全时需要鼠标移上去显示title,比如验证时的错误提示,比如操作按钮的辅助说明等,所以我独立出来了一个小的js组件,tip提示组件 ...
- MAC下利用Github 、hexo、 多说、百度统计 建立个人博客指南
1.前期准备: (1)注册github账号 (2)安装xcode (3)安装node.js 2.创建repository: (1)开个github的个人主页,点击创建仓库按钮 New reposito ...
- [原] SharePoint 2010 WebPart与Google地图系列 一:创建显示地图的WebPart
摘要: 作为信息化先驱的产品SharePoint 2010竟然对GIS相关技术支持如此有限,试问现在哪个企业没有大量的项目需要结合Google地图来进行开发,单纯地从Google Javascript ...
- Ioc Autofac心得
对于这个容器注入,个人也不是很熟悉,很多还不懂,只会基本的操作,几天把它记录下来,说不定以后帮助就大了呢,这方面跟安卓差距还是挺大的 下面记录下应用的流程 步骤: 1.添加应用 2.重写工厂(这里讲的 ...
- UIModalPresentationStyle和UIModalTransitionStyle
一.主要用途 弹出模态ViewController是IOS变成中很有用的一个技术,UIKit提供的一些专门用于模态显示的ViewController,如UIImagePickerController等 ...