嵌入式开发环境搭建嵌入式开发环境搭建嵌入式开发环境搭建优秀课件目录目录软件开发流程软件开发流程1linux本地开发本地开发2嵌入式交叉开发嵌入式交叉开发3嵌入式交叉环境搭建嵌入式交叉环境搭建4嵌入式开发环境搭建优秀课件软件开发流程软件开发流程开发环境搭建(集成)程序编辑程序(可执行)安装程序编译程序调试如 vc++ 、ADS+AXD、MDK等集成开发环境编辑器编译器调试器(必备库)(必备工具等)嵌入式开发环境搭建优秀课件linux本地开发实例本地开发实例1、程序编辑2、程序编译3、程序调试# vi debug.c# gcc debug.c -o debug -g# gdb debug4、程序运行# ./debug嵌入式开发环境搭建优秀课件linux本地调试本地调试# gdb debug设置断点(gdb)break func(gdb)break 21查看断点(gdb)info br取消断点(gdb)dis 1 (取消第1个断点)(gdb)info br(gdb)r (run-全步运行)(gdb)n (next-单步运行)(gdb)n(gdb)break func(gdb)r (gdb)c (gdb)n(gdb)c (continue-余步运行)(gdb)finish(gdb)quit嵌入式开发环境搭建优秀课件linux本地开发本地开发本地开发环境搭建编辑程序运行程序调试程序编译程序依赖文件(/usr/...)vi(/usr/bin) gcc、g++(/usr/bin)gdb、gdbserver(/usr/bin)依赖库(/usr/lib)嵌入式开发环境搭建优秀课件嵌入式系统定义回顾嵌入式系统定义回顾嵌入到嵌入到对象体中的象体中的专用用计算机系算机系统三要素:三要素:嵌入、嵌入、专用、用、计算机算机嵌入式系嵌入式系统的特点的特点:由三要素引出由三要素引出嵌入性嵌入性:嵌入到:嵌入到对象体系中,有象体系中,有对象象环境要求境要求专用性用性::软、硬件按、硬件按对象要求裁减象要求裁减计算机算机::实现对象的智能化功能象的智能化功能嵌入式开发环境搭建优秀课件嵌入式系统的应用嵌入式系统的应用嵌入式开发环境搭建优秀课件GEC2440 开发板嵌入式开发环境搭建优秀课件GEC2440 开发板硬件构成 ◆ 采用三星公司的 S3C2440A-40,系统可稳定运行在405MHZ,主频最高可达530 多MHz;◆◆ 64M 字节的字节的 SDRAM,由两片,由两片 K4S561632 组成,工作在组成,工作在 32 位模式下;位模式下;◆◆ 64M 字节字节 NAND Flash,采用的是,采用的是 K9F1208,可以兼容,可以兼容 16M,,32M 或或 128M 字节;字节;◆◆ 100M 以太网接口,采用的是以太网接口,采用的是 DM9000AEP,带传输和连接指示灯;,带传输和连接指示灯;◆◆ LCD 和触摸屏接口;和触摸屏接口;◆◆ 2 个个 USB HOST,,S3C2440 内置的,符合内置的,符合 USB 1.1,其中一个,其中一个 USB HOST 接口是复用的;接口是复用的;◆◆ 一个一个 USB Device,,S3C2440 内置的,符合内置的,符合 USB 1.1;;◆◆ 支持音频输入和音频输出,音频模块由支持音频输入和音频输出,音频模块由 S3C2440 的的 IIS 音频总线接口和音频总线接口和 UDA1341 音频编码解码音频编码解码器组成,板上还集成了一个器组成,板上还集成了一个 MIC,用于音频输入;,用于音频输入;◆◆ 2 路路 UART 串行口,波特率可高达串行口,波特率可高达 115200bps,并具有,并具有 RS232 电平转换电路,其中一路为完整电平转换电路,其中一路为完整串口;串口;◆◆ SD 卡接口,兼容卡接口,兼容 SD Memory Card Protocol 1.0 和和 SDIO Card Protocol 1.0;◆◆ Embedded-ICE ((20 脚标准脚标准 JTAG)接口和并口式)接口和并口式 JTAG 接口,支持接口,支持 ADS,,SDT 软件的下载软件的下载◆◆ 和调试以及和调试以及 FLASH 的烧写;的烧写;◆◆SPI 接口;接口;◆◆数字摄像头接口;数字摄像头接口;◆◆ 蜂鸣器,蜂鸣器,4 个个 LED 灯;灯;◆◆ 6 个按键;个按键;◆◆ 开关电源,分布式电源供电;开关电源,分布式电源供电;◆◆3V 锂电池,提供锂电池,提供RTC 电源;电源;嵌入式开发环境搭建优秀课件GEC2440 开发板使用v启动 LINUX§接上电源,接上交叉串口线,连上交叉网线,接上电源,接上交叉串口线,连上交叉网线,设置好串口工具设置好串口工具•串口工具的参数:波特率串口工具的参数:波特率 115200,,8 位,无奇偶位,位,无奇偶位,停止位停止位 1,无硬件流。
无硬件流§开发板上电后,开发板上电后,BootLoader 等待一段时间,如等待一段时间,如果没有输入,将会自动启动这个果没有输入,将会自动启动这个 linux 系统§这时将在串口有信息显示,最后将进入这时将在串口有信息显示,最后将进入 Linux 的命令模式下,的命令模式下,嵌入式开发环境搭建优秀课件嵌入式交叉开发嵌入式交叉开发软硬件资源?有限>丰富利用资源丰富的PC机来开发嵌入式软件宿主机——目标机模式嵌入式开发环境搭建优秀课件嵌入式嵌入式Linux开发环境开发环境v嵌入式系统通常是一个嵌入式系统通常是一个资源受限的系统资源受限的系统,因此直接在嵌入,因此直接在嵌入式系统的硬件平台上编写软件比较困难,有时候甚至是不式系统的硬件平台上编写软件比较困难,有时候甚至是不可能的v解决办法:解决办法:§首先在通用计算机上编写程序;§然后通过本地编译或者交叉编译生成目标平台上可以运行的二进制代码格式;§最后再下载到目标平台上的特定位置上运行嵌入式开发环境搭建优秀课件嵌入式嵌入式Linux开发环境开发环境v关于交叉编译 §在一种平台上编译出能在另一种平台(体系结构不同)上运行的程序§在PC平台(X86 CPU)上编译出能运行在arm平台上的程序,编译得到的程序在X86 CPU平台上是不能运行的,必须放到arm平台上才能运行。
§用来编译这种程序的编译器就叫交叉编译器§为了不跟本地编译器混淆,交叉编译器的名字一般都有前缀例如:arm-linux-gcc 嵌入式开发环境搭建优秀课件嵌入式嵌入式Linux开发环境开发环境v需要交叉开发环境(需要交叉开发环境(Cross Development Env)的支)的支持是嵌入式应用软件开发时的一个显著特点持是嵌入式应用软件开发时的一个显著特点v交叉编译器只是交叉开发环境的一部分交叉编译器只是交叉开发环境的一部分v交叉开发环境交叉开发环境是指编译、链接和调试嵌入式应用软件的环是指编译、链接和调试嵌入式应用软件的环境,它与运行嵌入式应用软件的环境有所不同,通常采用境,它与运行嵌入式应用软件的环境有所不同,通常采用宿主机-目标机模式宿主机-目标机模式 嵌入式开发环境搭建优秀课件嵌入式交叉开发嵌入式交叉开发开发编译仿真调试调试运行目标机目标机宿主机宿主机宿主机——目标机模式通信通道嵌入式开发环境搭建优秀课件嵌入式交叉开发嵌入式交叉开发嵌入式开发环境搭建优秀课件嵌入式开发环境搭建嵌入式开发环境搭建交叉编译环境搭建主机通信环境搭建交叉调试环境搭建嵌入式开发环境搭建通信(系统平台)嵌入式开发环境搭建优秀课件交叉编译环境搭建交叉工具链交叉工具链 交叉编译环境所需工具的集合体;交叉编译环境所需工具的集合体; 搭建编译环境所需软件(搭建编译环境所需软件(binuntialsbinuntials、、gccgcc与与glibcglibc等)的安装载体。
等)的安装载体 主要包括主要包括交叉编译器,例如交叉编译器,例如arm-linux-gccarm-linux-gcc交叉汇编器,例如交叉汇编器,例如arm-linux-asarm-linux-as交叉链接器,例如交叉链接器,例如arm-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 eabi 4.1.2 //更改工具链目录名为更改工具链目录名为4.1.24、添加环境变量#vi /etc/bashrc 文件最后添加:export PATH=/usr/local/arm/4.1.2/bin:$PATH使得配置立刻生效,需要使用source命令重新读取配置文件。
source /etc/bashrc交叉编译器安装完毕安装安装软软件:件:eabi-4.1.2.tar.bz2嵌入式开发环境搭建优秀课件实验:交叉编译debug.c交叉编译环境搭建嵌入式开发环境搭建优秀课件主从机通信环境搭建主从机通信环境搭建串口USB网络并口访问开发板后台?下载程序?怎样连接?串口嵌入式开发环境搭建优秀课件远程访问目标板远程访问目标板vminicom的使用的使用 §minicom 的设置 :minicom -s嵌入式开发环境搭建优秀课件远程访问目标板远程访问目标板嵌入式开发环境搭建优秀课件远程访问目标板远程访问目标板vminicom的使用的使用 §选择串口选择菜单中的“ Serial port setup ”,按回车,进入如下图所示界面按“ A ”以设置“ Serial Device ”(串口 1 -> /dev/ttyS0 ,串口2 -> /dev/ttyS1) 嵌入式开发环境搭建优秀课件远程访问目标板远程访问目标板嵌入式开发环境搭建优秀课件远程访问目标板远程访问目标板vminicom的使用的使用 §设置波特率 按“ E ”键进入设置“ bps/par/Bits ”(波特率)界面。
再按“ I ”以设置波特率为 115200Q”数据位8,奇偶检验位无,停止位1嵌入式开发环境搭建优秀课件远程访问目标板远程访问目标板嵌入式开发环境搭建优秀课件远程访问目标板远程访问目标板vminicom的使用的使用 §设置无流控制(无硬件、无软件) 按回车退回到上一级菜单,按“F”键设置“ Hardware Flow Control ”为“ NO ”,其他选项使用缺省值嵌入式开发环境搭建优秀课件远程访问目标板远程访问目标板嵌入式开发环境搭建优秀课件远程访问目标板远程访问目标板vminicom的使用的使用 §保存设置 再选择“Exit”退出设置模式刚才的设置被保存到“ /etc/minirc.dfl ”§设置完毕打开目标板电源的电源开关,minicom输出目标板的启动信息,当 Linux 启动以后, minicom 就相当于虚拟终端,可通过它来操作目标板 嵌入式开发环境搭建优秀课件远程访问目标板远程访问目标板vminicom的使用的使用 §退出 minicom 同时按下“ Ctrl+A ”键,紧接着再按下“ Q ”键,在跳出的窗口中,选择“ Yes ” 嵌入式开发环境搭建优秀课件远程访问目标板远程访问目标板嵌入式开发环境搭建优秀课件主从机通信环境搭建主从机通信环境搭建实验:请选择其中一种方法将交叉编译的debug下载到开发板并运行。
嵌入式开发环境搭建优秀课件程序下载程序下载v串口下载串口下载v网络下载网络下载v网络挂载网络挂载嵌入式开发环境搭建优秀课件交叉调试器交叉调试器v嵌入式软件开发过程中的交叉调试与本地软件开发过程中的调试方嵌入式软件开发过程中的交叉调试与本地软件开发过程中的调试方式有所差别式有所差别§本地软件开发•调试器与被调试的程序往往运行在同一台计算机上•调试器是一个单独运行着的进程,它通过操作系统提供的调试接口来控制被调试的进程 §嵌入式软件开发•调试时采用的是在宿主机和目标机之间进行的交叉调试•调试器运行在宿主机,但被调试的进程却是运行在目标板•调试器和被调试进程通过串口或者网络进行通信,调试器可以控制、访问被调试进程,读取被调试进程的当前状态,并能够改变被调试进程的运行状态 嵌入式开发环境搭建优秀课件嵌入式交叉开发嵌入式交叉开发嵌入式开发环境搭建优秀课件交叉调试环境搭建交叉调试环境搭建_交叉调试器交叉调试器交叉调试器的的制作制作源码包:源码包:gdb-6.5.tar.bz2gdb-6.5.tar.bz21 1)、新建编译目录)、新建编译目录 #mkdir /home/build_gdb#mkdir /home/build_gdb #cd /home/build_gdb#cd /home/build_gdb 将将gdb-6.5.tar.bz2拷贝到拷贝到/home/build_gdb/home/build_gdb2 2)、)、解解压gdb-6.5.tar.bz2 2 #tar jxf gdb-6.5.tar.bz2#tar jxf gdb-6.5.tar.bz23 3)、)、配置配置 # #cd gdb-6.5 # #./configure --target=arm-linux --prefix=/usr/local/arm/4.1.2/4 4)、)、编译 # #make5 5)、)、安装安装 # #make install (在在/usr/local/arm/4.1.2/bin/目录下生成目录下生成arm-linux-gdb工具工具)嵌入式开发环境搭建优秀课件交叉调试环境搭建交叉调试环境搭建_调试服务器调试服务器调试服务器的的制作制作源码包:源码包:gdb-6.5/gdb/gdbservergdb-6.5/gdb/gdbserver1 1)、进入)、进入 #cd gdb-6.5/gdb/gdbserver #cd gdb-6.5/gdb/gdbserver2 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)、下载安装到目标板()、下载安装到目标板(gdbserver)) gdbserver放到目标板的放到目标板的/bin目录下目录下嵌入式开发环境搭建优秀课件交叉调试环境搭建交叉调试环境搭建_调试实战1 1)、新建测试目录)、新建测试目录 #mkdir /root/test#mkdir /root/test #cd /root/test#cd /root/test2)2)、编辑文件、编辑文件 #vi debug.c#vi debug.c 编辑内容如下编辑内容如下 #include #include int func(int n)int func(int n) { { int sum=0,i;int sum=0,i; for(i=0;i
本地调试方法相同,在此不详分析嵌入式开发环境搭建优秀课件交叉调试器交叉调试器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嵌入式开发环境搭建优秀课件www.gec-edu.org嵌入式开发环境搭建优秀课件。