调试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 ...
随机推荐
- 想要学好JQuery看这里
一.简介 jQuery 库可以通过一行简单的标记被添加到网页中 jQuery 是一个 JavaScript 函数库. jQuery 库包含以下特性: HTML 元素选取 HTML 元素操作 CSS 操 ...
- JSESSIONID与SESSION
用spring security的时候遇到了一个很诡异的问题: 已经登录的用户,而且没有标记remember-me,在重启服务器之后还会显示已经登录状态 这就严重啦,这样子如果要在session中储存 ...
- 分享22款响应式的 jQuery 图片滑块插件
响应式(Responsive)设计的目标是要让产品界面能够响应用户的行为,根据不同终端设备自动调整尺寸,带给用户良好的使用体验.这篇文章收集了22款优秀的响应式 jQuery 幻灯片插件,它们能够帮助 ...
- 批量另存mxd
在GIS数据处理中,批量操作是经常遇到的问题,Python脚本是解决问题的最好方法.现在需要将arcgis10.1的mxd另存为10.0,不仅数量较多,而且每个mxd要素和标注非常多,手动来操作确实慢 ...
- Atitit.iso格式蓝光 BDMV 结构说明
Atitit.iso格式蓝光 BDMV 结构说明 1. Iso是个复合文件1 2. Iso内部格式如下1 2.1. Bdmv文件夹格式 BDMV(Blu-ray Disk Movie.BD-MV),为 ...
- 源码详解openfire保存消息记录_修改服务端方式
实现openfire消息记录通常有两种方式,修改服务端和添加消息记录插件. 今天,简单的说明一下修改服务端方式实现消息记录保存功能. 实现思路 修改前: 默认的,openfire只提供保存离线记录至o ...
- Android之滑屏动画和自定义控件
滑屏动画 在Android系统中,通过手势识别切换界面时,通常会在界面切换时加入动画,以提高用户的体验效果,这种动画一般都采用平移动画,下一个界面进入时,上一个界面移除屏幕. 图中标识的均为左上角坐标 ...
- Android Actitity的生命周期
新建项目,MainActivity代码如下: package com.wuyudong.lifecycle; import android.os.Bundle; import android.app. ...
- js 变量与值 连写
window.location.href="index.php?app=memberpmrecord&act=get_download&bname="+busine ...
- .NET项目工程生成一份项目帮助文档chm--Sandcastle工具
Sandcastle的,由Microsoft创建的,是从创建MSDN风格的文档中使用的工具.NET程序集和关联的XML注释文件.目前的版本是 2010年6月发布.这是命令行并没有GUI前端,项目管理功 ...