嵌入式操作系统学习笔记:02.环境搭建兼 Eclipse Jlink 2440 ARM裸机调试
2015-11-26 21:51
519 查看
注意本文图片与GIF动画较大,加载较慢,请耐心等待
环境搭配
尽管本文的环境是以Windows为例,但是Linux与Mac也是几乎完全类似的。硬件环境
板子:2440芯片的板子,但我只有TQ2440,所以就用这个调试器:Jlink
软件环境
Windows 10 X64Eclipse
yagarto的 arm-none-gnueabi
MSYS与miniGW
babun(对Cygwin进行了打包配置等的Cygwin工具)
Jlink官方的工具
软件环境的搭建
1.Eclipse相关
安装Eclipse:下载一个最新的Eclipse,并解压,然后打开Eclipse安装zylinCDT插件:参考Zylin官方的说明页面
2. 安装MSYS与miniGW
2.1 到SourceForge下载miniGW的Installer,如果无法访问SourceForge可以到我后面的网盘下载2.2 选择安装MSYS与miniGW
需要注意的是需要选择MSYS Base与MiniGW32 Base,如下图:
安装完成后会有提示:
3. 安装babun
参考官网的说法4. 安装Cross ToolChain
可以随便找一个安装来用,但是我验证过好用的是yagarto-bu-2.23.1_gcc-4.7.2-c-c++_nl-1.20.0_gdb-7.5.1_eabi_20121222.exe,官方已经找不到了,但是搜索下载。安装好后,确认是否设置了环境变量,例如可以在babun的mintty中看看版本,以及路径:
创建Eclipse工程以及make目标
1. clone下lmosem的代码2. 将代码放到Eclipse的workspace下,即Eclipse启动的时候询问的位置
3. 从Eclipse导入文件,并创建工程,工具链这一步可以随便选择
4. 创建make目标这样子,就不需要敲命令行来编译与clean了
在Eclipse的make target中右键New,然后填入all,并确定,然后重复再创建一个clean目标,示例图如下:
5. 测试编译环境是否有问题
双击make targe目标clean,然后再双击all,如果像下面这样子(注意看底下的console窗口的输出),那么说明编译与clean没有问题了:
如果出现下面这样的提示,那么就是MSYS没有设置进PATH中:
那么此时也可以在Project属性中添加一个PATH路径,这样子可以不污染系统PATH:
然后再次测试make targe的clean与all是否正常。如果正常,那么编译环境就OK了,以后我们就用这个编译环境。
配置Eclipse Jlink Debug
1. 创建新的DebugConfiguration
在Run菜单中选择Debug Configrations,然后新建一个ZylinDebug Configarations(注意是Native不是Cygwin)。然后继续下面的配置。2. 加载的ELF Symbol文件配置
因为调试器需要加载ELF Symbol文件,因此需要在Main标签中指定编译出来的ELF文件,如下图,注意将下面的Application Console也选中:3. gdb配置
我们使用的是gdb来连接Jlink GdbServer的方式来调试,而Eclipse作为一个前端,因此需要配置后端的gdb文件,因此我们指定gdb:这里面使用的是前面安装的Cross ToolChain中的gdb,这个也可以在babun中确认:
需要注意的是里面有一个“Stop on start at:”这个选项,这里面可以填一个我们需要gdb加载符号开始跑后,在遇到某个符号的时候停下来,我们可以在这里配置也可以先不配置,在后面配置。
4. InitCommand配置
在使用Jlink连接了ARM芯片之后,我们还需要对SoC进行一些初始化等配置工作,这些工作就是在这里进行的,针对于我使用的TQ2440,我是如下配置的:target remote localhost:2331 monitor arm920t sw_bkpts enable monitor endian little monitor reset monitor MemU32 0x53000000=0x00000000 monitor MemU32 0x53000000=0x00000000 monitor MemU32 0x4A000008=0xFFFFFFFF monitor MemU32 0x4A00001C=0x000007FF monitor MemU32 0x56000050=0x000055AA monitor MemU32 0x4C000014=0x00000007 monitor MemU32 0x4C000000=0x00FFFFFF monitor MemU32 0x4C000004=0x00061012 monitor MemU32 0x4C000008=0x00040042 monitor MemU32 0x48000000=0x22111120 monitor MemU32 0x48000004=0x00000700 monitor MemU32 0x48000008=0x00000700 monitor MemU32 0x4800000C=0x00000700 monitor MemU32 0x48000010=0x00001f4c monitor MemU32 0x48000014=0x00000700 monitor MemU32 0x48000018=0x00000700 monitor MemU32 0x4800001C=0x00018005 monitor MemU32 0x48000020=0x00018005 monitor MemU32 0x48000024=0x008e04f4 monitor MemU32 0x48000028=0x00000032 monitor MemU32 0x4800002C=0x00000030 monitor MemU32 0x48000030=0x00000030 load #break do_menu #break _start_armboot break lmosemhal_start #break main continue
这里面主要做了以下几个动作:
连接到gdb server
设置大小端
让SoC进行Reset
配置内存
加载我们在前面第2步指定的ELF文件
在lmosemhal_start这个符号处设定断点
开始跑
将这段放入Command中:
如果是其他平台还需要进行更改。
5. Debug段的添加
ELF文件在原本的CFLAGS配置下是不会包含Debug信息的,如果这样子调试的话,gdb会无法找到调试时候PC指针所在文件对应的Source Code,也就无法进行代码同步查看,出现如下的问题:这不是我们想要的结果,因此更改Makefile中的CFLAGS,让产生的ELF文件包含debug信息:
即加载-g选项
6. 重新生成ELF文件
更改了CFLAGS,那么我们可以在make target中的双击clean,然后双击all,完成make clean与make all。7. Jlink gdbServer配置
首先是安装Jlink调试器的对应软件,安装完成后有许多的工具:然后关闭所有的防火墙或者网络拦截工具,否则下面的jdbServer无法正常被连接。
接下来就是开启Jlink GDB Server,开启后的状态如下,处在等待连接状态,注意查看红色部分:
然后我们从Eclipse中开启调试:
如果没有问题,那么Eclipse中的gdb会连接上Jlink gdb Server,然后Server端会显示连接了:
同时Eclipse这段也会进行init处理,即前面我们说到的那段Init命令,效果如下动画,注意底下的console窗口:
到此,我们就构建好了调试与编译环境。
更改Encoding解决文件的乱码问题
因为有中文,为了Editor,Makefile中不乱码,如下面几个图,配置UTF-8即可。1. Editor的配置
2. Makefile编辑器的配置
但是console的乱码不知道该怎么解决,Search了一把也没有找到就放弃了,要是大家知道,麻烦告知。
其他问题
Q1. 是否可以使用DS-5替代Eclipse?
A1:分下面两种情况[1] 如果仅仅是使用DS-5带的Eclipse,但是其他都按照本文前面的步骤来做,那么答案是不可以,因为DS-5的Eclipse经过ARM公司改装后,发现都没有了Install New Softwares选项
[2] 如果不仅仅是使用DS-5带的Eclipse,还要用Jlink的RDDI来替换DS-5的,然后通过这个RDDI接口来访问Jlink,而不需要ZylinCDT的话,那么答案是可以,以后会说明。但就现在我的尝试而言,发现安装官方的文档操作遇到了一个问题,看起来是dll匹配问题:
Q2. Linux Mac下面是否也可以这样搭配环境?
A2: 可以,Linux下面更方便。操作步骤几乎完全类似。有需求再写。Q3. 是否可以不是用Eclipse,直接使用gdb?
A3: 没有问题,但是Eclipse更方便。参考
1. 虚拟嵌入式系统实验室2.
Eclipse ARM
相关文章推荐
- Linux 自检和 SystemTap
- 应用领航:盘点那些年我们一起追过的OS
- 无奇不有!盘点各国自己开发的操作系统
- ARMBoot-1.1.0 在 mini2440 开发板上的移植
- Python 七步捉虫法
- 批量自动安装常用软件
- 批量自动安装常用软件
- 企业批量部署RealVNC远程控制软件
- 好用的Markdown编辑器一览
- 网上视频站 视频下载利器 优酷网 视频下载 必备 软件 下载[原创]_常用工具_脚本之家
- 路由器的配置与调试
- 对于技术人员的出现了运行时间错误,是否要进行调试的解决方法
- 可自定义oem的萝卜家园 Ghost XP 新春装机版 V200801 下载
- C#实现判断操作系统是否为Win8以上版本
- 可以用来调试JavaScript错误的解决方案
- 如何调试异步加载页面里包含的js文件
- BAT批处理实现软件的自动安装(以搜狗拼音为例)
- Linux操作系统添加新硬盘方法
- nw.js实现类似微信的聊天软件