欢迎来到天天文库
浏览记录
ID:56987869
大小:749.50 KB
页数:99页
时间:2020-07-25
《嵌入式系统第7讲课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、28七月2021生物医学工程学院电子技术系1第7讲嵌入式Linux应用程序开发28七月2021生物医学工程学院电子技术系2第7章嵌入式系统开发方法第6节嵌入式Linux应用程序开发28七月2021生物医学工程学院电子技术系37.6嵌入式Linux应用程序开发7.6.1嵌入式Linux的开发环境传统的嵌入式开发环境需要单片机的仿真器,包含C语言、汇编语言、调试工具等的集成开发环境IDE和实时操作系统等,整个开发系统建立起来至少需要几万元。由于Flash技术的发展,特别是一些CPU可以用JTAG接口下载调试,故仿真器已可以省去
2、。随着标准化的推广,JTAG调试工具变得越来越简单、越来越通用。一些BDM调试工具已经简单到只需在PC机并行口和单片机的JTAG接口之间加一级5V到3.3V的电平转换,这使得自制调试工具变得越来越容易。软件方面,Linux下的自由软件GNUgcc可以完成几乎所有知名CPU,以及DSP的交叉C编译和调试,故可以省去IDE。28七月2021生物医学工程学院电子技术系47.6嵌入式Linux应用程序开发7.6.1嵌入式Linux的开发环境个人用Linux开发嵌入式应用程序,可以在自己的PC机上安装一套Linux操作系统,使用Li
3、nux中的XWindows打开若干个窗口用于编译、下载、调试等。如果整个研发小组由多名工程师组成,常采用的办法是:用1台PC机运行Linux作为服务器;开发小组中每个成员都通过局域网用Telnet登录到这台Linux服务器上去;被开发的目标板也挂在网上。在服务器的Linux环境下,各个工程师用GNUgcc编译生成目标代码,再用FTP传回到自己的PC机上,然后通过串行口或网络下载到目标机上。28七月2021生物医学工程学院电子技术系57.6嵌入式Linux应用程序开发7.6.2交叉编译环境的建立交叉编译就是在一个平台上生成可
4、以在另一个平台上执行的代码。在宿主机上对即将运行在目标机上的应用程序进行编译,生成可在目标机上运行的代码格式。交叉编译环境是一个由编译器、连接器和解释器组成的综合开发环境。交叉编译工具主要包括针对目标系统的编译器gcc、目标系统的二进制工具binutils、目标系统的标准c库glibc和目标系统的Linux内核头文件。在建立交叉编译环境之前,首先需要下载包括binutils、gcc、glibc及Linux内核在内的源代码,尽量选用较新版本,glibc和内核源代码的版本必须与目标机上实际使用的版本保持一致,并设定shell变
5、量PREFIX指定可执行程序的安装路径。28七月2021生物医学工程学院电子技术系67.6嵌入式Linux应用程序开发(1)编译binutils运行configure文件,并使用--prefix=$PREFIX参数指定安装路径,使用--target=arm-linux参数指定目标机类型,然后执行makeinstall。(2)配置Linux内核头文件执行makemrproper进行清理工作,然后执行makeconfigARCH=arm(或makemenuconfig/xconfigARCH=arm)进行配置。一定要在命令行中
6、使用ARCH=arm指定CPU架构,因为默认架构为主机的CPU架构,这一步需要根据目标机的实际情况进行详细的配置。配置完成之后,需要将内核头文件拷贝到安装目录:cp-dRinclude/asm-arm$PREFIX/arm-linux/include/asmcp-dRinclude/linux$PREFIX/arm-linux/include/linux28七月2021生物医学工程学院电子技术系77.6嵌入式Linux应用程序开发(3)第一次编译gcc。configure的运行参数设置:--prefix=$PREFIX--
7、target=arm-linux--disable-threads--disable-shared--enable-languages=c执行makeinstall,将生成一个最简单的gcc。由于编译整个gcc是需要目标机的glibc库的,它现在还不存在,因此需要首先生成一个最简单的gcc,它只需要具备编译目标机glibc库的能力即可。28七月2021生物医学工程学院电子技术系87.6嵌入式Linux应用程序开发(4)交叉编译glibc由于这一步骤生成的代码是针对目标机cpu的,因此它属于一个交叉编译过程。又因为该过程要用
8、到Linux内核头文件,默认路径为$PREFIX/arm-linux/sys-linux,因而需要在$PREFIX/arm-linux中建立一个名为sys-linux的软连接,使其指向内核头文件所在的include目录;也可以在接下来要执行的configure命令中使用--with-headers参数指
此文档下载收益归作者所有