版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 2006 Embedded嵌入式嵌入式LINUXLINUX开发环境的建立开发环境的建立邹 琪牛建伟嵌入式系统课程嵌入式系统课程实验一实验一 2006 Embedded 实验目的 实验内容 开发环境配置 开发工具介绍 编写程序和Makefile 编译、下载调试 2006 Embedded实验目的实验目的 介绍一般的嵌入式开发流程,并介绍开发流程中使用的软件和硬件的安装来建立开发环境,通过此实验了解和熟悉嵌入式的软硬件平台。 熟悉Linux开发环境,学会基于S3C2410的Linux开发环境的配置和使用。使用Linux的arm4l-unknown-linux-gcc编译,使用基于NFS方式的下载
2、调试,了解嵌入式开发的基本过程。 2006 Embedded实验内容实验内容 本次实验硬件平台使用UP-NetARM2410-S实验箱,宿主PC机上使用REDHAT Linux 9.0操作系统环境。将硬件平台和宿主PC机通过串口线和网线连接好后,在宿主PC机上安装开发工具软件,建立交叉编译调试环境并进行配置。 利用已经建立好的ARM-Linux的开发库及编译器,编写hello.c和Makefile文件。学习在Linux下的编程和编译过程,以及ARM开发板的使用和开发环境的设置。下载已经编译好的文件到目标开发板上运行。 2006 Embedded开发环境配置(开发环境配置(1) 在宿主机Linu
3、x环境下配置网络,包括IP地址、NFS服务、防火墙。 设置宿主机IP地址时,需将其地址与开发平台的IP地址设置在同一网段内。这里,将PC的IP设为21。 2006 Embedded开发环境配置(开发环境配置(2) 双击设备eth0,进入以太网设置界面,可以设置地址、子网掩码和网关。 对REDHAT9.0,它默认打开了防火墙,外来IP无法用NFS mount访问它,此因要在安全级别设置中关闭它。 2006 Embedded开发环境配置(开发环境配置(3) 在系统设置菜单中选择服务器设置菜单,再选中服务菜单,将iptables服务去掉,选中NFS。 点击系统设置-服务器设置-
4、NFS服务器,出现如下界面,在目录中填入共享目录的路径和主机地址。 2006 Embedded 一些常规选项设置,保留默认值。在用户访问中,设置将远程用户当作根用户时,对于操作比较方便,但安全性较差。 配置NFS完成后,可以测试是否成功。在宿主机下自己mount自己 mount 0:/arm2410s /mnt 其中0是主机IP,然后到/mnt/ 目录下看是否可以列出对应arm2410s目录下的所有文件和目录,如可以则说明mount成功,NFS配置成功。 2006 EmbeddedMINICOM的配置的配置 1.在Xwindows界面下新建终端,在终
5、端的命令提示符后输入minicom,回车,就能看到minicom的启动画面。若是在字符界面下,直接输入minicom即可。 2006 Embedded 2.minicom启动后,先按Ctrl+A键,再按Z键(非连续按),进入主配置界面。按O进入配置界面。按上下选择Serial port setup,进入端口设置界面。 2006 Embedded 3. 如上图进行参数配置,选好后按ESC键退出,选择Save setup as df1保存退出,以后只要启动minicom就是该配置,无需再做改动。 2006 Embedded 4. 配置完成后,用串口线连接好PC机和2410-s实验箱,打开电源,即可
6、在minicom上看到启动信息,并可以执行操作控制。 2006 Embedded开发工具软件的安装开发工具软件的安装 将开发板附带光盘插入光驱,在光驱所在目录/mnt/cdrom中运行安装脚本。 cd /mnt/cdrom ./install.sh 安装脚本程序将自动建立/arm2410s目录,并将所有开发软件包安装到/arm2410s目录下,同时自动配置编译环境,建立合适的符号连接。 注意:安装完成后看一下主编译器Armv4l-unknown-linux-gcc是否在/opt/host/armv4l/bin/,如果不是这个路径,请使用vi修改/root/.bash_profile文件中PAT
7、H变量为PATH=$PATH:$HOME/bin:/opt/host/armv4l/bin/,存盘以后执行:source/root/.bash_profile,则以后armv4l-unknown-linux-gcc会自动搜索到,可以在终端上输入arm,然后按tab键,会自动显示armv4l-unknown-linux- 2006 EmbeddedLinux开发套件开发套件 GCC 编译器 Binutils 是一组开发工具,包括连接器,汇编器和其他用于目标文件和档案的工具。 Make 使用GNU 的make工具能够比较容易的构建一个工程,整个工程的编译只需要一个命令就可以完成编译、连接以至于最后
8、的执行。不过这需要编写Makefile文件。 GDB 负责程序调试 Glibc 标准C库,数学库,以及板级程序库 集成开发环境 2006 EmbeddedGCC选项选项 g:在可执行文件中输出调试信息,通常是为调试器gdb所用 On:代码优化,n随着系统的不同而不同 Idir:指定头文件搜索目录gcc foo.c I/home/zou/include o foo Ldir:指定在目录中需要搜索的库(动态库.so 和静态库.a)gcc foo.c L/home/zou/lib lfoo o foo static:链接时使用静态链接 elf2flt:将可执行文件头转换为flt平板格式 c:只预处理
9、,编译和汇编生产obj文件 2006 Embedded调试工具调试工具GDB 调试嵌入式Linux系统需要一个运行系统的环境,一个调试环境。这里采用GDB的远程调试功能 远程调试一般由主机和目标机通过串口或网络连接而成。 GDB里面嵌有串口通信协议。在目标机上需要实现一个stub文件,这个文件里面需要提供串口连接的协议和传送数据信息的方法。 调试的一般步骤将两台机器用串口连接起来将需要调试的程序下载到目标机在主机启动GDB,读入需要调试的程序的符号表和程序代码使用target remote命名建立和远程主机的连接然后就象使用一般的GDB一样进行程序的调试了 2006 EmbeddedGDB调试
10、程序调试程序 Host gdb myprogram Gdbtarget remote /dev/ttys0 Gdbload /程序运行至main Gdb display foo /目标在main()处停止 gdb stepi /目标执行一个指令 Gdbquit /退出调试 2006 EmbeddedHelloWorld程序程序 在Linux下用文本编辑器(vi、gedit等) hello.c的源代码如下: #include int main(void) printf (Hello world, Linux programming!n); return 0; 2006 Embedded编写编写M
11、akefile文件(文件(1) CC = armv4l-unknown-linux-gcc EXEC = hello OBJS = hello.o CFLAGS += LDFLAGS += -static all: $(EXEC) $(EXEC): $(OBJS)$(CC) $(LDFLAGS) -o $ $(OBJS) clean:-rm -f $(EXEC) *.elf *.gdb *.o 2006 Embedded编写编写Makefile文件(文件(2) 以上是本例用到的Makefile文件,它有几个主要部分 CC 指明编译器 EXEC 表示编译后生成的执行文件名称 OBJS 目标文件列
12、表 CFLAGS 编译参数 LDFLAGS 连接参数 all: 编译主入口 clean: 清除编译结果 注意:“$(CC) $(LDFLAGS) -o $ $(OBJS)”和“-rm -f $(EXEC) *.elf *.gdb *.o”前空白由一个Tab制表符生成,不能单纯由空格来代替。 2006 Embedded编译应用程序编译应用程序 在上面的步骤完成后,我们将hello.c和Makefile文件放在同一目录下,运行make来编译程序了。如程序进行了修改,重新编译则运行make clean,然后再make。 若不用Makefile,直接用gcc编译也行 armv4l-unknown-li
13、nux-gcc hello.c o hello 注意:编译、修改程序都是在宿主机(本地PC机)上进行,不能在MINICOM下进行。 2006 Embedded编译应用程序编译应用程序l 编写数组排序程序在Linux下编写汇编程序和C程序,然后编译连接成ARM可运行的二进制文件,最后把该二进制文件下载到目标机(教学试验平台)上运行,查看运行结果是否正确。在C程序main函数中,接收用户输入(用户任意输入9个整数),然后在main中调用使用ARM汇编编写的函数(单独存储成一个文件,在该函数中完成对这9个整数的排序功能),然后再在C程序main函数中输出这9个排好顺序的整数。 2006 Embedd
14、ed编译应用程序编译应用程序l 编写数组排序程序#include int main()int i=0;int num=0;int *array=NULL;while(num 0)break;if(NULL = (array = (int *)malloc(num*sizeof(int) printf(malloc failed!n);exit(-1);printf(please enter the elements:n);for(i = 0; inum; i+) printf(n%d:t, i);scanf(%d, array+i);select(array, num);printf(=nth
15、e result is:n);for(i = 0; inum; i+) printf(%d:t%dn, i, *(array+i);return 0; 2006 Embedded通过通过NFS调试程序调试程序 前面配置开发环境时已在宿主PC上启动了NFS服务,并设置好了共享目录,可以在终端中输入minicom,建立开发板与宿主PC机之间的通讯了。 /mnt/yaffs mount t nfs o nolock 6:/arm2410s /host 注意:IP地址需要根据宿主PC的实际情况修改 成功挂接宿主PC的arm2410s目录(假定编写了hello.c和Makefile
16、都在此目录下)后,在开发板上进入/host目录便相应进入宿主PC的/arm2410s目录。在/host目录下运行编译好的hello程序 /host./hello 可以看到结果 Hello world, Linux programming! 注意:开发板挂接宿主机目录只需挂接一次,只要开发板没有重启,就能一直保持连接。这样可以反复 修改、编译、调试,不需要下载到开发板 2006 Embedded通过通过FTP上传应用程序上传应用程序 用交叉网线连接好开发板的NIC-1网口和PC机的网口,在宿主机下打开终端输入minicom,建立开发板与宿主PC机之间的通讯,配置开发板的IP和宿主机在同一网段。 /mnt/yaffsifconfig -查看IP /mnt/yaffsifconfig eth0 11 -配置eth0的IP /mnt/yaffsinetd -启动ftp服务 打开FTP软件gFTP,输入地址11,用户名:root,密码:无。连接进入,上传编译好的程序hello到/var文件夹下,运行可以看到结果 /var/./hel
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 应急演练周期设定与效果维持
- 库欣综合征的降压治疗策略优化
- 年轻医生职业倦怠与职业认同相关性研究
- 干细胞治疗临床路径标准化建设
- 小企业财务培训课件
- 莱职院护理学导论课件03护士素质及行为规范
- 帕金森病纳米缓释植入体研究
- 帕金森病冲动控制障碍的识别与预防策略实施
- 屈光术后干眼的个体化治疗策略
- 医学伦理与医疗道德教育
- 《中国特色高水平高职学校和专业建设计划(2025-2029年)》深度解读课件
- 销售合同书范本大全
- 2025年福州市园开港湾经贸有限公司招聘备考题库完整答案详解
- 內蒙古能源集團招聘笔试题库2026
- 九江市寻阳实业集团有限公司面向社会公开招聘工作人员9人考试题库必考题
- 2025年全国“银行业金融消费者权益保护”应知应会知识考试题与答案
- 冬之旅舒伯特课件
- 2025年中职电工电子技术(电工基础)试题及答案
- 能源公司绩效评估方案
- 浙江省温州市2024-2025学年八年级上学期语文期末试卷(含答案)
- 晚期结直肠癌呋喹替尼序洽TAS-102进展
评论
0/150
提交评论