《嵌入式开发环境搭建.ppt》由会员分享,可在线阅读,更多相关《嵌入式开发环境搭建.ppt(45页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、嵌入式开发环境搭建嵌入式开发环境搭建目录目录软件开发流程软件开发流程1linux本地开发本地开发2嵌入式交叉开发嵌入式交叉开发3嵌入式交叉环境搭建嵌入式交叉环境搭建4软件开发流程软件开发流程开发环境搭建(集成)程序编辑程序(可执行)安装程序编译程序调试如vc+、ADS+AXD、MDK等集成开发环境编辑器编译器调试器(必备库)(必备工具等)linux本地开发实例本地开发实例1、程序编辑2、程序编译3、程序调试#gccdebug.c-odebug-g#gdbdebug4、程序运行#./debuglinux本地调试本地调试#gdbdebug设置断点(gdb)breakfunc(gdb)break21
2、查看断点(gdb)infobr取消断点(gdb)dis1(取消第1个断点)(gdb)infobr(gdb)r(run-全步运行)(gdb)n(next-单步运行)(gdb)n(gdb)breakfunc(gdb)r(gdb)c(gdb)n(gdb)c(continue-余步运行)(gdb)finish(gdb)quitlinux本地开发本地开发本地开发环境搭建编辑程序运行程序调试程序编译程序依赖文件(/usr/.)vi(/usr/bin)gcc、g+(/usr/bin)gdb、gdbserver(/usr/bin)依赖库(/usr/lib)嵌入式系统定义回顾嵌入式系统定义回顾嵌入到嵌入到对象体
3、中的象体中的专用用计算机系算机系统三要素:三要素:嵌入、嵌入、专用、用、计算机算机嵌入式系嵌入式系统的特点的特点:由三要素引出由三要素引出嵌入性嵌入性:嵌入到:嵌入到对象体系中,有象体系中,有对象象环境要求境要求专用性用性:软、硬件按、硬件按对象要求裁减象要求裁减计算机算机:实现对象的智能化功能象的智能化功能嵌入式系统的应用嵌入式系统的应用GEC2440 开发板GEC2440 开发板硬件构成 采用三星公司的 S3C2440A-40,系统可稳定运行在405MHZ,主频最高可达530 多MHz;64M 字节的字节的 SDRAM,由两片,由两片 K4S561632 组成,工作在组成,工作在 32 位
4、模式下;位模式下;64M 字节字节 NAND Flash,采用的是,采用的是 K9F1208,可以兼容,可以兼容 16M,32M 或或 128M 字节;字节;100M 以太网接口,采用的是以太网接口,采用的是 DM9000AEP,带传输和连接指示灯;,带传输和连接指示灯;LCD 和触摸屏接口;和触摸屏接口;2 个个 USB HOST,S3C2440 内置的,符合内置的,符合,其中一个,其中一个 USB HOST 接口是复用的;接口是复用的;一个一个 USB Device,S3C2440 内置的,符合内置的,符合;支持音频输入和音频输出,音频模块由支持音频输入和音频输出,音频模块由 S3C244
5、0 的的 IIS 音频总线接口和音频总线接口和 UDA1341 音频编码解码音频编码解码器组成,板上还集成了一个器组成,板上还集成了一个 MIC,用于音频输入;,用于音频输入;2 路路 UART 串行口,波特率可高达串行口,波特率可高达 115200bps,并具有,并具有 RS232 电平转换电路,其中一路为完整电平转换电路,其中一路为完整串口;串口;SD 卡接口,兼容卡接口,兼容 SD Memory Card Protocol 1.0 和和 SDIO Card Protocol 1.0;Embedded-ICE(20 脚标准脚标准 JTAG)接口和并口式)接口和并口式 JTAG 接口,支持接
6、口,支持 ADS,SDT 软件的下载软件的下载 和调试以及和调试以及 FLASH 的烧写;的烧写;SPI 接口;接口;数字摄像头接口;数字摄像头接口;蜂鸣器,蜂鸣器,4 个个 LED 灯;灯;6 个按键;个按键;开关电源,分布式电源供电;开关电源,分布式电源供电;3V 锂电池,提供锂电池,提供RTC 电源;电源;GEC2440 开发板使用v启动 LINUX接上电源,接上交叉串口线,连上交叉网线,接上电源,接上交叉串口线,连上交叉网线,设置好串口工具设置好串口工具串口工具的参数:波特率串口工具的参数:波特率 115200,8 位,无奇偶位,位,无奇偶位,停止位停止位 1,无硬件流。,无硬件流。开
7、发板上电后,开发板上电后,BootLoader 等待一段时间,如等待一段时间,如果没有输入,将会自动启动这个果没有输入,将会自动启动这个 linux 系统。系统。这时将在串口有信息显示,最后将进入这时将在串口有信息显示,最后将进入 Linux 的命令模式下,的命令模式下,嵌入式交叉开发嵌入式交叉开发软硬件资源?有限丰富利用资源丰富的PC机来开发嵌入式软件宿主机目标机模式嵌入式嵌入式Linux开发环境开发环境v嵌入式系统通常是一个嵌入式系统通常是一个资源受限的系统资源受限的系统,因此直接在嵌入,因此直接在嵌入式系统的硬件平台上编写软件比较困难,有时候甚至是不式系统的硬件平台上编写软件比较困难,有
8、时候甚至是不可能的。可能的。v解决办法:解决办法:首先在通用计算机上编写程序;然后通过本地编译或者交叉编译生成目标平台上可以运行的二进制代码格式;最后再下载到目标平台上的特定位置上运行。嵌入式嵌入式Linux开发环境开发环境v关于交叉编译 在一种平台上编译出能在另一种平台(体系结构不同)上运行的程序。在PC平台(X86CPU)上编译出能运行在arm平台上的程序,编译得到的程序在X86CPU平台上是不能运行的,必须放到arm平台上才能运行。用来编译这种程序的编译器就叫交叉编译器。为了不跟本地编译器混淆,交叉编译器的名字一般都有前缀。例如:arm-linux-gcc嵌入式嵌入式Linux开发环境开
9、发环境v需要交叉开发环境(需要交叉开发环境(Cross Development Env)的支)的支持是嵌入式应用软件开发时的一个显著特点。持是嵌入式应用软件开发时的一个显著特点。v交叉编译器只是交叉开发环境的一部分。交叉编译器只是交叉开发环境的一部分。v交叉开发环境交叉开发环境是指编译、链接和调试嵌入式应用软件的环是指编译、链接和调试嵌入式应用软件的环境,它与运行嵌入式应用软件的环境有所不同,通常采用境,它与运行嵌入式应用软件的环境有所不同,通常采用宿主机目标机模式宿主机目标机模式。嵌入式交叉开发嵌入式交叉开发开发编译仿真调试调试运行目标机目标机宿主机宿主机宿主机目标机模式通信通道嵌入式交叉开
10、发嵌入式交叉开发嵌入式开发环境搭建嵌入式开发环境搭建交叉编译环境搭建主机通信环境搭建交叉调试环境搭建嵌入式开发环境搭建通信(系统平台)交叉编译环境搭建交叉工具链交叉工具链 交叉编译环境所需工具的集合体;交叉编译环境所需工具的集合体;搭建编译环境所需软件(搭建编译环境所需软件(binuntialsbinuntials、gccgcc与与glibcglibc等)的安装载体。等)的安装载体。主要包括主要包括交叉编译器,例如交叉编译器,例如arm-linux-gccarm-linux-gcc交叉汇编器,例如交叉汇编器,例如arm-linux-asarm-linux-as交叉链接器,例如交叉链接器,例如a
11、rm-linux-ldarm-linux-ld各种操作所依赖的库各种操作所依赖的库 用于处理可执行程序和库的一些基本工具。例如用于处理可执行程序和库的一些基本工具。例如arm-linux-strip arm-linux-strip 交叉编译环境搭建交叉编译环境搭建交叉编译器交叉编译器(交叉工具链交叉工具链)安装安装1、安装准安装准备备:#mkdir/usr/local/arm2 2、拷贝安装源码包拷贝安装源码包#cp eabi-4.1.2.tar.bz2/usr/local/arm3 3、解压解压#tar jxvf eabi-4.1.2.tar.bz2 -C/usr/local/arm#mv
12、eabi 4.1.2 /更改工具链目录名为更改工具链目录名为4、添加环境变量#vi/etc/bashrc文件最后添加:exportPATH=/usr/local/arm/4.1.2/bin:$PATH使得配置立刻生效,需要使用source命令重新读取配置文件。#source/etc/bashrc交叉编译器安装完毕。安装安装交叉编译环境搭建主从机通信环境搭建主从机通信环境搭建串口USB网络并口访问开发板后台?下载程序?怎样连接?串口远程访问目标板远程访问目标板vminicom的使用的使用 minicom的设置:minicom-s远程访问目标板远程访问目标板远程访问目标板远程访问目标板vminic
13、om的使用的使用 选择串口选择菜单中的“Serialportsetup”,按回车,进入如下图所示界面。按“A”以设置“SerialDevice”(串口1-/dev/ttyS0,串口2-/dev/ttyS1)远程访问目标板远程访问目标板远程访问目标板远程访问目标板vminicom的使用的使用 设置波特率按“E”键进入设置“bps/par/Bits”(波特率)界面。再按“I”以设置波特率为115200。“Q”数据位8,奇偶检验位无,停止位1远程访问目标板远程访问目标板远程访问目标板远程访问目标板vminicom的使用的使用 设置无流控制(无硬件、无软件)按回车退回到上一级菜单,按“F”键设置“Ha
14、rdwareFlowControl”为“NO”,其他选项使用缺省值。远程访问目标板远程访问目标板远程访问目标板远程访问目标板vminicom的使用的使用 保存设置再选择“Exit”退出设置模式。刚才的设置被保存到“/etc/”。设置完毕打开目标板电源的电源开关,minicom输出目标板的启动信息,当Linux启动以后,minicom就相当于虚拟终端,可通过它来操作目标板。远程访问目标板远程访问目标板vminicom的使用的使用 退出minicom同时按下“Ctrl+A”键,紧接着再按下“Q”键,在跳出的窗口中,选择“Yes”。远程访问目标板远程访问目标板主从机通信环境搭建主从机通信环境搭建实验
15、:请选择其中一种方法将交叉编译的debug下载到开发板并运行。程序下载程序下载v串口下载串口下载v网络下载网络下载v网络挂载网络挂载交叉调试器交叉调试器v嵌入式软件开发过程中的交叉调试与本地软件开发过程中的调试方嵌入式软件开发过程中的交叉调试与本地软件开发过程中的调试方式有所差别。式有所差别。本地软件开发调试器与被调试的程序往往运行在同一台计算机上。调试器是一个单独运行着的进程,它通过操作系统提供的调试接口来控制被调试的进程。嵌入式软件开发调试时采用的是在宿主机和目标机之间进行的交叉调试。调试器运行在宿主机,但被调试的进程却是运行在目标板。调试器和被调试进程通过串口或者网络进行通信,调试器可以
16、控制、访问被调试进程,读取被调试进程的当前状态,并能够改变被调试进程的运行状态。嵌入式交叉开发嵌入式交叉开发交叉调试环境搭建交叉调试环境搭建_交叉调试器交叉调试器交叉调试器的的制作制作源码包:源码包:1 1)、新建编译目录)、新建编译目录#mkdir/home/build_gdb#mkdir/home/build_gdb#cd/home/build_gdb#cd/home/build_gdb 将拷贝到将拷贝到/home/build_gdb/home/build_gdb2 2)、)、2 2 3 3)、)、配置配置#4 4)、)、编译编译#make5 5)、)、安装安装#make install
17、(在目录下生成在目录下生成arm-linux-gdb工具工具)交叉调试环境搭建交叉调试环境搭建_调试服务器调试服务器调试服务器的的制作制作源码包:源码包:1 1)、进入)、进入2 2)、配置)、配置#chmod u+x configure#chmod u+x configure#./configure-host=arm-linux#./configure-host=arm-linux 3 3)、编译)、编译#make CC=arm-linux-gcc (#make CC=arm-linux-gcc (完了在当前目录生成完了在当前目录生成gdbserver、gdbreplay等等)4 4)、下载
18、安装到目标板()、下载安装到目标板(gdbserver)gdbserver放到目标板的放到目标板的/bin目录下目录下交叉调试环境搭建交叉调试环境搭建_调试实战1 1)、新建测试目录)、新建测试目录#mkdir/root/test#mkdir/root/test#cd/root/test#cd/root/test2)2)、编辑文件、编辑文件 编辑内容如下编辑内容如下#include#include int func(int n)int func(int n)int sum=0,i;int sum=0,i;for(i=0;in;i+)for(i=0;in;i+)sum+=i;sum+=i;ret
19、urn sum;return sum;main()main()int i;int i;long result=0;long result=0;for(i=1;i=100;i+)for(i=1;i=100;i+)result+=i;result+=i;printf(result1-100=%d n,result);printf(result1-100=%d n,result);printf(result1-250=%d n,func(250);printf(result1-250=%d n,func(250);交叉调试环境搭建交叉调试环境搭建_调试实战3 3)、交叉编译)、交叉编译#arm-li
20、nux-gcc-g debug.c-o debug#arm-linux-gcc-g debug.c-o debug (记得加上(记得加上-g选项)选项)4 4)、下载到目标板(将整个代码目录)、下载到目标板(将整个代码目录)#mkdir arm_debug 将目标程序放进将目标程序放进arm_debug#cd arm_debug5 5)、启动调试服务器()、启动调试服务器(目标板上进行目标板上进行)成功后便开始侦听成功后便开始侦听本地调试端口本地调试端口,可以看到如下信息:,可以看到如下信息:2 2:1234:1234 debugdebug Process try created;pid=99
21、2Process try created;pid=992 Listening on port 1234Listening on port 1234 (2是目是目标板的板的IP)6)、启动交叉调试器(在宿主机上进行)#/root/test(一定要进去代码目录下)#arm-linux-gdbdebug2:1234(连接目标板服务器)交叉调试环境搭建交叉调试环境搭建_调试实战成功后打印如下:成功后打印如下:(gdb)target remote 172.22.60.223:1234(gdb)target remote 172.22.60.223:1234Remote debugging using 1
22、72.22.60.223:1234Remote debugging using 172.22.60.223:1234Remote communication error:Connection reset by peer.Remote communication error:Connection reset by peer.进行调试进行调试(gdb)list or l(gdb)break func(gdb)break 22(gdb)info br (gdb)continue or c /这里不能用这里不能用 run(gdb)next or n(gdb)print or p result (gdb
23、)finish /跳出跳出func函数函数(gdb)next(gdb)quit建连接后进行建连接后进行gdb远程调试和远程调试和gdb本地调试方法相同,在此不详分析。本地调试方法相同,在此不详分析。交叉调试器交叉调试器vGdb指令列举指令列举v查看文件查看文件 l v设置断点设置断点 b 行号行号v查看断点情况查看断点情况 info bv运行代码运行代码 r runv查看变量值查看变量值“p”变量值变量值v查看堆栈:查看堆栈:btv单步运行单步运行“n”(next)或)或“s”step)v若有函数调用的时候,若有函数调用的时候,“s”会进入该函数而会进入该函数而“n”不会进入该函数。不会进入该函数。v恢复程序运行恢复程序运行“c”(continue)v设置断点:设置断点:v函数断点:函数断点:“b 函数函数”此时的断点实际是在函数的定义处此时的断点实际是在函数的定义处v条件断点:条件断点:b 行数或函数名行数或函数名 if 表达式表达式 b 8 if i=10
限制150内