eclipse arm裸机开发环境
1、软件eclipse , GDB Server , Jlink软件
硬件 Jlink硬件
准备工作1:从SD/NOR Flash启动,格式化nand flash
准备工作2:硬件连接
1. Jlink连接
2. 串口连接
3. nand启动
2、解压:tar xvzf arm-linux-gdb-7.5.tar.gz
进入目录:cd arm-linux-gdb-7.5
编译安装:./build-all
上面执行好后,gdb工具就安装好了,安装在/opt/arm-linux-gdb
为了方便使用,需要添加环境变量:vim /root/.bashrc
在交叉编译链的前面添加gdb的环境变量:
export PATH=$PATH:/opt/arm-linux-gdb/bin/
export PATH=$PATH:/usr/local/arm/4.3.2/bin/
之后保存,退出。这就可以直接运行arm-linux-gdb,如果不行的话则可能是添加错误,或者需要注销。
3、解压:tar xvzf JLink_Linux_V434a.tgz
进入目录:cd JLink_Linux_V434a
复制库:cp -d libjlinkarm.so* /usr/lib -f
复制:cp 45-jlink.rules /etc/udev/rules.d/
上面四个命令执行完之后,检测是否能够检测到Jlink的连接:
在虚拟机的下面,点击显示为Jlink相关的usb图标,连接。
执行命令:./JLinkGDBServer
如果也切顺利的话,会显示连接上的ARM核心为ARM11:
4、安装eclipse:
解压:tar zxvf eclipse-cpp-helios-SR2-linux-gtk.tar.gz
进入目录:cd eclipse-cpp-helios-SR2-linux-gtk
运行程序:./eclipse
然后选择自己的工程目录:
5、首先得安装一个插件
点菜单栏的help -> install new software
在Work with输入插件位置:http://opensource.zylin.com/zylincdt ,点击add
等一段时间,找到的插件,点击选中:
6、点击next;
7、之后按照提示来。
然后重启:
8、使用eclipse进行开发
新建工程,选择新建一个已存在源文件的工程:
9、注意:这里的源文件目录必须是在工作目录下的另外一个目录,比如工作目录是"/home/S3-ARM/Part1/lesson1",那么【Existing Code Location】的目录为不能和工作目录相同,必须是别的目录,或者是工作目录下的一个子目录,比如"/home/S3-ARM/Part1/lesson1/led/"或者是"/opt/led/"
10、点击finish。
编译项目:Project ---Build AlL
注意:取消掉【Project】里面的自动编译【Build Automatically】
11、配置调试器:甲虫图---Debug Configurations
12、双击Zylin Embedded debu,出现下面界面:
13、选中选项卡main
在C/C++ Application中选要调试的项目,注意是选中 "xxx.elf" 文件:
14、选中选项卡Debugger
去掉Stop on startup at:选项
将GDB debugger: 修改成" arm-linux-gdb "
15、选中选项卡Commands
在'Initialize' commands中填入如下初始化指令:
下面是初始化S3C6410处理器的初始化脚本
1 # tiny6410_config 2 # connect to the J-Link gdb server 3 target remote localhost:2331 4 # Set JTAG speed to 30 kHz 5 monitor endian little 6 monitor speed 30 7 # Reset the target 8 monitor reset 9 monitor sleep 1010 #11 # CPU core initialization (to be done by user)12 #13 # Set the processor mode14 monitor reg cpsr = 0xd315 #config MMU16 #flush v3/v4 cache17 monitor cp15 7, 7, 0, 0 = 0x018 #/* flush v4 TLB */19 monitor cp15 8, 7, 0, 0 = 0x020 #disable MMU stuff and caches21 monitor cp15 1, 0, 0, 0 =0x100222 #Peri port setup23 monitor cp15 15, 2, 0, 4 = 0x7000001324 #disable watchdog25 monitor MemU32 0x7e004000 = 0x0000000026 monitor sleep 1027 #disable interrupt28 monitor MemU32 0x71200014 = 0x0000000029 monitor MemU32 0x71300014 = 0x0000000030 monitor MemU32 0x7120000C = 0x0000000031 monitor MemU32 0x7130000C = 0x0000000032 monitor MemU32 0x71200F00 = 0x0000000033 monitor MemU32 0x71300F00 = 0x0000000034 #set clock35 monitor MemU32 0x7e00f900 = 0x0000801e36 monitor MemU32 0x7e00f000 = 0x0000ffff37 monitor MemU32 0x7e00f004 = 0x0000ffff38 monitor MemU32 0x7e00f020 = 0x0104331039 monitor MemU32 0x7e00f00C = 0xc215060140 monitor MemU32 0x7e00f010 = 0xc215060141 monitor MemU32 0x7e00f024 = 0x0000000342 monitor MemU32 0x7e00f014 = 0x0020010243 monitor MemU32 0x7e00f018 = 0x0000000044 monitor MemU32 0x7e00f01C = 0x1400000745 #config sdram46 monitor MemU32 0x7e00f120 = 0x0000000847 monitor MemU32 0x7e001004 = 0x0000000448 monitor MemU32 0x7e001010 = 0x0000040f49 monitor MemU32 0x7e001014 = 0x0000000650 monitor MemU32 0x7e001018 = 0x0000000151 monitor MemU32 0x7e00101c = 0x0000000252 monitor MemU32 0x7e001020 = 0x0000000653 monitor MemU32 0x7e001024 = 0x0000000a54 monitor MemU32 0x7e001028 = 0x0000000c55 monitor MemU32 0x7e00102c = 0x0000018f56 monitor MemU32 0x7e001030 = 0x0000000c57 monitor MemU32 0x7e001034 = 0x0000000258 monitor MemU32 0x7e001038 = 0x0000000259 monitor MemU32 0x7e00103c = 0x0000000260 monitor MemU32 0x7e001040 = 0x0000000261 monitor MemU32 0x7e001044 = 0x0000001362 monitor MemU32 0x7e001048 = 0x0000001363 monitor MemU32 0x7e00100C = 0x0001001264 monitor MemU32 0x7e00104C = 0x00000b4565 monitor MemU32 0x7e001200 = 0x000150f866 monitor MemU32 0x7e001304 = 0x0000000067 monitor MemU32 0x7e001008 = 0x000c000068 monitor MemU32 0x7e001008 = 0x0000000069 monitor MemU32 0x7e001008 = 0x0004000070 monitor MemU32 0x7e001008 = 0x0004000071 monitor MemU32 0x7e001008 = 0x000a000072 monitor MemU32 0x7e001008 = 0x0008003273 monitor MemU32 0x7e001004 = 0x0000000074 # Setup GDB for faster downloads75 #set remote memory-write-packet-size 102476 set remote memory-write-packet-size 409677 set remote memory-write-packet-size fixed78 monitor speed 1200079 break _start80 load
16、初始化2440的脚本内容如下:
1 # connect to the J-Link gdb server 2 target remote localhost:2331 3 # Set JTAG speed to 30 kHz 4 monitor endian little 5 monitor speed 30 6 # Reset the target 7 monitor reset 8 monitor sleep 10 9 #10 # CPU core initialization (to be done by user)11 #12 # Set the processor mode13 monitor reg cpsr = 0xd314 #config MMU 配置MMU15 #flush v3/v4 cache16 monitor cp15 7, 7, 0, 0 = 0x017 #/* flush v4 TLB 协处理器*/18 monitor cp15 8, 7, 0, 0 = 0x019 #disable MMU stuff and caches20 monitor cp15 1, 0, 0, 0 =0x100221 #Peri port setup22 monitor cp15 15, 2, 0, 4 = 0x7000001323 #disable watchdog kangear 关闭看门狗24 monitor MemU32 0x53000000 = 0x0000000025 monitor sleep 1026 #disable interrupt kangear 关闭中断27 monitor MemU32 0x4A000008 = 0xffffffff28 monitor MemU32 0x4A00001C = 0x7fff29 #set clock30 #initialize system clocks --- locktime register31 monitor MemU32 0x4C000000 = 0xFF00000032 #initialize system clocks --- clock-divn register33 monitor MemU32 0x4C000014 = 0x5 #CLKDVIN_400_14834 #initialize system clocks --- mpll register35 monitor MemU32 0x4C000004 = 0x7f021 #default clock36 #config sdram37 monitor MemU32 0x53000000 0x00000000 38 monitor MemU32 0x4A000008 0xFFFFFFFF 39 monitor MemU32 0x4A00001C 0x000007FF 40 monitor MemU32 0x53000000 0x00000000 41 monitor MemU32 0x56000050 0x000055AA 42 monitor MemU32 0x4C000014 0x00000007 43 monitor MemU32 0x4C000000 0x00FFFFFF 44 monitor MemU32 0x4C000004 0x00061012 45 monitor MemU32 0x4C000008 0x00040042 46 monitor MemU32 0x48000000 0x22111120 47 monitor MemU32 0x48000004 0x00002F50 48 monitor MemU32 0x48000008 0x00000700 49 monitor MemU32 0x4800000C 0x00000700 50 monitor MemU32 0x48000010 0x00000700 51 monitor MemU32 0x48000014 0x00000700 52 monitor MemU32 0x48000018 0x0007FFFC 53 monitor MemU32 0x4800001C 0x00018005 54 monitor MemU32 0x48000020 0x00018005 55 monitor MemU32 0x48000024 0x008E0459 56 monitor MemU32 0x48000028 0x00000032 57 monitor MemU32 0x4800002C 0x00000030 58 monitor MemU32 0x48000030 0x0000003059 # Setup GDB for faster downloads60 #set remote memory-write-packet-size 102461 monitor speed auto62 break _start63 load
初始化210的脚本内容如下:
1 # connect to the J-Link gdb server 2 target remote localhost:2331 3 # Set JTAG speed to 30 kHz 4 monitor endian little 5 monitor speed 30 6 # Reset the target 7 monitor reset 8 monitor sleep 10 9 # Setup GDB for faster downloads10 #set remote memory-write-packet-size 102411 monitor speed auto12 break main13 load
经过上面的设置之后,就可以开始调试了
17、开始调试
用eclipse调试 ,保证JLinkGDBServer同时在运行
18、保证JLinkGDBServer运行起来了,点击小甲壳虫 -- 项目名
开始进调试界面
19、选择 yes
20、调试界面如下图
21、点击【F5】是"Step Into"
【F6】是"Step Over"
等等,这里可以查看寄存器的值,没存的值等等。
一步一步下去可以看到开发板上的led点亮了。