搭建环境:
Win7+OpenOCD+OpenJTAG+mini2440
按照《Eclipse,OpenOCD,OpenJTAGv3嵌入式开发教程》将软硬件安装好。然后执行openocd-ftd2xx。这个程序会作为一个守护进程运行,等待客户端(telnet或GDB)的连接,可以使用-h参数查看该程序的一些可选参数。例如,使用-f参数来指定配置文件openocd.cfg的位置,如果没有指定,它会在当前执行路径下寻找。
关于openocd.cfg文件:
这是一个openocd的配置文件,详细内容可以查看openOCD文档,这里做一个简要说明:
启动openOCD后就可以用telnet登录到openOCD,下载调试程序。
分析leds
openJTAG提供的这个例程需要下载到内部的4K-RAM中运行,此时mini2440要从Nandflash启动,因为,leds的链接地址是0x0,如果从Norflash启动,内部RAM的地址是0x40000000,详细情况可以查看S3C2440-datasheet中存储控制器的地址空间分布。
该例程有两个源代码文件,crt0.s是一个汇编文件:
在GNU的汇编语法中,以一个点开头的都是汇编命令;
.text:
该命令以下的内容都位于可执行文件的代码段,类似的命令还有:.data(已初始化的数据段),.bss(未初始化的数据段);
.global_start:
指定_start全局可见;_start是GNU连接器用来指定第一个执行指令所必须的;
ldrr0,=0x53000000:
当改命令的第二个参数前有“=”时,这是一个地址读取伪指令,它将看门狗寄存器的地址写入了r0;
ldrsp,=1024*4:
sp是堆栈寄存器,ARM的寄存器是FD(FullDescending)类型,栈指针执行栈顶元素,堆栈向地址减小的方向增长。
执行make编译程序,Makefile的主要内容如下:
首先将两个源代码文件编译为目标文件,-c参数表示只进行预处理、编译、汇编,不进行连接;
然后用连接器(arm-elf-ld)将目标文件连接为可执行的elf格式文件,连接方式依赖与leds.lds文件,
arm-elf-objcopy的作用是将elf格式文件转换为二进制文件。
arm-elf-objdump的作用是对elf文件进行反汇编,得到的dis文件时一个文本格式的反汇编文件,其中一段内容如下:
每条汇编码的格式为:
指令的地址:机器码:汇编代码
用gdb调试程序
首先启动arm-elf-gdb,在命令行下执行:
arm-elf-gdb
执行后可以看到gbd提示符(gdb)。
登录openocd:
(gdb)targetremotelocalhost:3333
查看当前状态:
(gdb)monitorpoll
暂停:
(gdb)monitorhalt
关闭MMU和Catch:
(gdb)monitorarm920tcp1520
(gdb)monitorstep
使能软件中断:
(gdb)monitorarm7_9sw_bkptsenable
下载文件
(gdb)fileleds/leds_elf
载入内存:
(gdb)load
从0x0开始运行:
(gdb)monitorresume0x0
参考:
GNU_ARM汇编入门
Linux下的lds连接脚本基础
<!--EndFragment-->
分享到:
相关推荐
——————————————————————————————————————————————
Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip ...
《Spring技术内幕》学习笔记1——IoC容器体系结构 《Spring技术内幕》学习笔记2——IoC定位Bean定义资源 《Spring技术内幕》学习笔记3——IoC容器载入Bean定义资源文件 《Spring技术内幕》学习笔记4——IoC容器...
zigbee学习笔记2——添加自己的任务 网络层数据服务
Talend学习笔记2——mysql文件导入到HDFS
韦东山那本 嵌入式Linux应用开发完全手册 在ADS下的裸机代码,可运行在mini2440上
学习笔记之——基于pytorch的FSRCNN 把我的代码上传了,后续有更正会更新这个代码
Solidworks学习笔记——随形变化.docxSolidworks学习笔记——随形变化.docxSolidworks学习笔记——随形变化.docxSolidworks学习笔记——随形变化.docxSolidworks学习笔记——随形变化.docxSolidworks学习笔记——...
STM32H743IIT6学习笔记04——移植LetterShell,演示工程源码下载链接
个人网课学习笔记
Javascript高级编程学习笔记27——BOM1window对象1.docx
python 学习笔记——线性回归预测模型.pdf python 学习笔记——线性回归预测模型.pdf python 学习笔记——线性回归预测模型.pdf python 学习笔记——线性回归预测模型.pdf python 学习笔记——线性回归预测模型.pdf ...
Spring.NET学习笔记22——整合WCF(应用篇) http://www.cnblogs.com/GoodHelper/archive/2010/05/15/SpringNet_Wcf.html
恩智浦 飞思卡尔Freescale Kinetis KEA128学习笔记4——ADC.pdf
刘冬编写Spring.NET学习笔记25——整合Quartz.NET例子。 原文: http://www.cnblogs.com/GoodHelper/archive/2009/11/20/SpringNet_QuartzNet.html
刘冬编写的Spring.NET学习笔记26——整合NVelocity例子。 原文:http://www.cnblogs.com/GoodHelper/archive/2009/11/20/SpringNet_NVelocity.html
刘冬编写的Spring.NET学习笔记21——整合WebService的例子。 原文:http://www.cnblogs.com/GoodHelper/archive/2009/11/19/SpringNet_WebService.html
SPSS学习笔记之——生存分析的Cox回归模型(比例风险模型).pdf