Mini2440学习笔记

2014-11-24 09:56:46 · 作者: · 浏览: 0

Win7 + OpenOCD + OpenJTAG + mini2440




关于openocd.cfg文件:


这是一个openocd的配置文件,详细内容可以查看openOCD文档,这里做一个简要说明:




启动openOCD后就可以用telnet登录到openOCD,下载调试程序。



openJTAG提供的这个例程需要下载到内部的4K-RAM中运行,此时mini2440要从Nandflash启动,因为,leds的链接地址是0x0,如果从Norflash启动,内部RAM的地址是0x40000000,详细情况可以查看S3C2440-datasheet中存储控制器的地址空间分布。


该例程有两个源代码文件,crt0.s是一个汇编文件:



在GNU的汇编语法中,以一个点开头的都是汇编命令;


.text:


该命令以下的内容都位于可执行文件的代码段,类似的命令还有:.data(已初始化的数据段),.bss(未初始化的数据段);


.global _start:


指定_start全局可见;_start是GNU连接器用来指定第一个执行指令所必须的;


ldr r0,=0x53000000:


当改命令的第二个参数前有“=”时,这是一个地址读取伪指令,它将看门狗寄存器的地址写入了r0;


ldr sp,=1024*4:


sp是堆栈寄存器,ARM的寄存器是FD(Full Descending)类型,栈指针执行栈顶元素,堆栈向地址减小的方向增长。



执行make编译程序,Makefile的主要内容如下:



首先将两个源代码文件编译为目标文件,-c参数表示只进行预处理、编译、汇编,不进行连接;


然后用连接器(arm-elf-ld)将目标文件连接为可执行的elf格式文件,连接方式依赖与leds.lds文件,



arm-elf-objcopy的作用是将elf格式文件转换为二进制文件。


arm-elf-objdump的作用是对elf文件进行反汇编,得到的dis文件时一个文本格式的反汇编文件,其中一段内容如下:



每条汇编码的格式为:


指令的地址:机器码:汇编代码



首先启动arm-elf-gdb,在命令行下执行:


arm-elf-gdb


执行后可以看到gbd提示符(gdb)。


登录openocd:


(gdb)target remote localhost:3333


查看当前状态:


(gdb)monitor poll


暂停:


(gdb)monitor halt


关闭MMU和Catch:


(gdb)monitor arm920t cp15 2 0


(gdb)monitor step


使能软件中断:


(gdb)monitor arm7_9 sw_bkpts enable


下载文件


(gdb)file leds/leds_elf


载入内存:


(gdb)load


从0x0开始运行:


(gdb)monitor resume 0x0



参考: