嵌入式系统设计(实验一).ppt

上传人:牧羊曲112 文档编号:6569805 上传时间:2023-11-13 格式:PPT 页数:40 大小:272KB
返回 下载 相关 举报
嵌入式系统设计(实验一).ppt_第1页
第1页 / 共40页
嵌入式系统设计(实验一).ppt_第2页
第2页 / 共40页
嵌入式系统设计(实验一).ppt_第3页
第3页 / 共40页
嵌入式系统设计(实验一).ppt_第4页
第4页 / 共40页
嵌入式系统设计(实验一).ppt_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《嵌入式系统设计(实验一).ppt》由会员分享,可在线阅读,更多相关《嵌入式系统设计(实验一).ppt(40页珍藏版)》请在三一办公上搜索。

1、嵌入式系统设计(实验一),实验内容,1、熟悉并构建开发软件环境(安装、使用linux系统、交叉编译工具、网络环境配置)2、熟悉开发过程(小程序的编写、编译、调试及运行)3、linux 操作系统的烧写与移植,1、安装、使用linux系统-开发软件包安装,加载光驱:Mount/dev/cdrom/mnt/cdromMount t iso9660/dev/hdb/mnt/cdrom加载成功之后,依次完成如下命令,进行软件包安装:cd/mnt/cdrom/cd 2410s/cd linux v7.0/./install.sh,1、安装、使用linux系统-开发环境配置(IP地址、防火墙、NFS服务),

2、宿主机IP:PC机:192.168.0.*(网段不冲突即可)开发板(默认),主菜单安全级别“无防火墙”,1、安装、使用linux系统-开发环境配置(IP地址、防火墙、NFS服务),1、主菜单系统设置服务器设置NFS服务器“增加”,安装完成后,mount本机测试:mount 192.168.0.121:/arm2410s/mnt,1、安装、使用linux系统-开发环境配置(配置minicom),右键新建终端minicomCtrl+A Z O 进入端口配置界面ASerial Device:/dev/ttyS0BBPS/par/bits:/115200 8N1,实验内容,1、熟悉并构建开发软件环境(

3、安装、使用linux系统、交叉编译工具、网络环境配置)2、熟悉开发过程(小程序的编写、编译、调试及运行)3、linux 操作系统的烧写与移植(2410-s),二、熟悉并构建开发软件环境-2、建立工作目录,在linux中右键选择“新建终端”新建立文件夹/hello,2、编写程序源代码#include void main()printf(hello world!);,二、熟悉并构建开发软件环境-源代码编写,可以用下面的命令来编写源代码,进入/hello文件夹后,使用下面命令来编辑代码:vi hello.c如右图:,按“i”或者“a”进入编辑模式,将上面的代码录进去完成后按Esc键进入命令状态,再用

4、“:wq”保存并退出,这样便在当前的目录下建立了一个名为hello.c的文件。,二、熟悉并构建开发软件环境-3、编写Makefile,二、熟悉并构建开发软件环境-3、编写Makefile,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,二、熟悉并构建开发软件环境-4、编译应用程序,上述步骤完成之后,可以在hello目录下编译程序

5、:root root#make clean root root#make,二、熟悉并构建开发软件环境-5、运行,使用mount命令将程序挂载到开发板:root root#minicommnt/yaffs mount t nfs o nolock 192.168.0.121:/arm2410s/host/挂载到开发板的/host文件夹/mnt/yaffs cd/host/host./helloHello world,二、熟悉并构建开发软件环境-gcc简介,基本语法 gcc options filenames说明:在gcc后面可以有多个编译选项,同时进行多个编译操作。很多的gcc选项包括一个以上的

6、字符。因此你必须为每个选项指定各自的连字符。例如,下面的两个命令是不同的:gcc-p-g test1.c gcc-pg test1.c当你不用任何选项编译一个程序时,gcc将会建立(假定编译成功)一个名为a.out的可执行文件。,二、熟悉并构建开发软件环境-gcc简介,-o选项 你能用-o 编译选项来为将产生的可执行文件指定一个文件名来代替 a.out。例:gcc o count count.c-c选项:告诉gcc仅把源代码编译为目标代码而跳过汇编和连接的步骤。这个选项使用的非常频繁,因为它使得编译多个C程序时速度更快并且更易于管理。缺省时gcc建立的目标代码文件有一个.o的扩展名。例:gcc

7、 c test2.c-static 禁止使用共享连接。,二、熟悉并构建开发软件环境-gcc简介,-E 只运行 C 预编译器。-S 编译选项告诉 gcc 在为 C 代码产生了汇编语言文件后停止编译。-shared 生成共享目标文件。通常用在建立共享库时。-static 禁止使用共享连接。,二、熟悉并构建开发软件环境-gcc简介,在gcc中用开关-Wall控制警告信息,使用示例命令如下:gcc Wall-o test3_1 test3_1.c-w 不生成任何警告信息。,二、熟悉并构建开发软件环境-gcc简介,问题:有多个源文件时,如何生成一个可执行文件?方法1:gcc Wall o mytest

8、test1.c test2.c test3.c方法2:gcc-Wall-c test1.cgcc-Wall c test2.cgcc-Wall c test3.c gcc o mytest test1.o test2.o test3.o,二、熟悉并构建开发软件环境-make与Makefile,在大型的开发项目中,人们通常利用 make 工具来自动完成编译工作。这些工作包括:如果仅修改了某几个源文件,则只重新编译这几个源文件;如果某个头文件被修改了,则重新编译所有包含该头文件的源文件。利用这种自动编译可大大简化开发工作,避免不必要的重新编译。实际上,make 工具通过一个称为 makefile

9、的文件来完成并自动维护编译工作。makefile 需要按照某种语法进行编写,其中说明了如何编译各个源文件并连接生成可执行文件,并定义了源文件之间的依赖关系。当修改了其中某个源文件时,如果其他源文件依赖于该文件,则也要重新编译所有依赖该文件的源文件。,二、熟悉并构建开发软件环境-make与Makefile,Makefile规则的一般形式如下:target:dependency dependency(tab)一个Makefile文件主要含有一系列的规则,每条规则包含以下内容。一个目标(target),即make最终需要创建的文件,如可执行文件和目标文件;目标也可以是要执行的动作,如“clean”。

10、一个或多个依赖文件(dependency)列表,通常是编译目标文件所需要的其他文件。一系列命今(command),是make执行的动作,通常是把指定的相关文件编译成目标文件的编译命令,每个命令占一行,且每个命令行的起始字符必须为TAB字符。除非特别指定,否则make的工作目录就是当前目录。target是需要创建的二进制文件或目标文件,dependency是在创建target时需要用到的一个或多个文件的列表,命令序列是创建target文件所需要执行的步骤,比如编译命令。,二、熟悉并构建开发软件环境-make与Makefile(1/3),#以#开头的为注释行test:prog.o code.ogc

11、c o test prog.o code.oprog.o:prog.c prog.h code.hgcc c prog.c o prog.ocode.o:code.c code.hgcc c code.c o code.oclean:rm f*.o 上面的Makefile文件中共定义了四个目标:test、prog.o、code.o和clean。目标从每行的最左边开始写,后面跟一个冒号(:),如果有与这个目标有依赖性的其他目标或文件,把它们列在冒号后面,并以空格隔开。然后另起一行开始写实现这个目标的一组命令。在Makefile中,可使用续行号()将一个单独的命令行延续成几行。但要注意在续行号()

12、后面不能跟任何字符(包括空格和键),二、熟悉并构建开发软件环境-make与Makefile(2/3),一般情况下,调用make命令可输入:#make targettarget是Makefile文件中定义的目标之一,如果省略target,make就将生成Makefile文件中定义的第一个目标。对于上面Makefile的例子,单独的一个“make”命令等价于:#make test因为test是Makefile文件中定义的第一个目标,make首先将其读入,然后从第一行开始执行,把第一个目标test作为它的最终目标,所有后面的目标的更新都会影响到test的更新。第一条规则说明只要文件test的时间戳比

13、文件prog.o或code.o中的任何一个旧,下一行的编译命令将会被执行。,二、熟悉并构建开发软件环境-make与Makefile(3/3),但是,在检查文件prog.o和code.o的时间戳之前,make会在下面的行中寻找以prog.o和code.o为目标的规则,在第三行中找到了关于prog.o的规则,该文件的依赖文件是prog.c、prog.h和code.h。同样,make会在后面的规则行中继续查找这些依赖文件的规则,如果找不到,则开始检查这些依赖文件的时间戳,如果这些文件中任何一个的时间戳比prog.o的新,make将执行“gcc c prog.c o prog.o”命令,更新prog.

14、o文件。以同样的方法,接下来对文件code.o做类似的检查,依赖文件是code.c和code.h。当make执行完所有这些套嵌的规则后,make将处理最顶层的test规则。如果关于prog.o和code.o的两个规则中的任何一个被执行,至少其中一个.o目标文件就会比test新,那么就要执行test规则中的命令,因此make去执行gcc命令将prog.o和code.o连接成目标文件test。在上面Makefile的例子中,还定义了一个目标clean,它是Makefile中常用的一种专用目标,即删除所有的目标模块,二、熟悉并构建开发软件环境-make的工作过程,现在来看一下make做的工作:首先m

15、ake按顺序读取makefile中的规则,然后检查该规则中的依赖文件与目标文件的时间戳哪个更新如果目标文件的时问戳比依赖文件还早,就按规则中定义的命令更新目标文件。如果该规则中的依赖文件又是其他规则中的目标文件,那么依照规则链不断执行这个过程,直到Makefile文件的结束,至少可以找到一个不是规则生成的最终依赖文件,获得此文件的时间戳然后从下到上依照规则链执行目标文件的时间戳比此文件时间戳旧的规则,直到最顶层的规则,二、熟悉并构建开发软件环境-Makefile中的变量,Makefile里的变量就像一个环境变量。事实上,环境变量在make中也被解释成make的变量。这些变量对大小写敏感,一般使

16、用大写宇母。几乎可以从任何地方引用定义的变量,变量的主要作用如下:保存文件名列表。在前面的例子里,作为依赖文件的一些目标文名出现在可执行文件的规则中,而在这个规则的命令行里同样包含这些文件并传递给gcc做为命令参数。如果使用一个变量来保存所有的目标文件名,则可以方便地加入新的目标文件而且不易出错。保存可执行命令名,如编译器。在不同的Linux系统中存在着很多相似的编译器系统,这些系统在某些地方会有细微的差别,如果项目被用在一个非gcc的系统里,则必须将所有出现编译器名的地方改成用新的编译器名。但是如果使用一个变量来代替编译器名,那么只需要改变该变量的值。其他所有地方的命令名就都改变了。保存编译

17、器的参数。在很多源代码编译时,gcc需要很长的参数选项,在很多情况下,所有的编译命令使用一组相同的选项,如果把这组选项使用一个变量代表,那么可以把这个变量放在所有引用编译器的地方。当要改变选项的时候,只需改变一次这个变量的内容即可。,二、熟悉并构建开发软件环境-Makefile变量的定义和使用,Makefile中的变量是用一个文本串在Makefile中定义的,这个文本串就是变量的值。只要在一行的开始写下这个变量的名字,后面跟一个“”号,以及要设定这个变量的值即可定义变量,下面是定义变量的语法:VARNAME=string使用时,把变量用括号括起来,并在前面加上$符号,就可以引用变量的值:$VA

18、RNAME make解释规则时,VARNAME在等式右端展开为定义它的字符串。变量一般都在Makefile的头部定义。按照惯例,所有的Makefile变量都应该是大写。如果变量的值发生变化,就只需要在一个地方修改,从而简化了Makefile的维护。,二、熟悉并构建开发软件环境-Makefile变量举例,现在利用变量把前面的Makefile重写一遍:OBJS=prog.o code.oCC=gcctest:$OBJS$CC o test$OBJS prog.o:prog.c prog.h code.h$CC c prog.c o prog.ocode.o:code.c code.h$CC c c

19、ode.c o code.oclean:rm f*.o,二、熟悉并构建开发软件环境-make 的主要预定义变量(1/2),$*不包含扩展名的目标文件名称。$+所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。$第一个依赖文件的名称。$?所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚。$目标的完整名称。$所有的依赖文件,以空格分开,不包含重复的依赖文件。$%如果目标是归档成员,则该变量表示目标的归档成员名称。例如,如果目标名称 为 mytarget.so(image.o),则$为 mytarget.so,而$%为 image.o。AR 归档维护程序的名

20、称,默认值为 ar。ARFLAGS 归档维护程序的选项。AS 汇编程序的名称,默认值为 as。ASFLAGS 汇编程序的选项。,二、熟悉并构建开发软件环境-make 的主要预定义变量(2/2),CC C 编译器的名称,默认值为 cc。CFLAGS C 编译器的选项。CPP C 预编译器的名称,默认值为$(CC)-E。CPPFLAGS C 预编译的选项。CXX C+编译器的名称,默认值为 g+。CXXFLAGS C+编译器的选项。FC FORTRAN 编译器的名称,默认值为 f77。FFLAGS FORTRAN 编译器的选项。,实验内容,1、熟悉并构建开发软件环境(安装、使用linux系统、交叉

21、编译工具、网络环境配置)2、熟悉开发过程(小程序的编写、编译、调试及运行)3、linux 操作系统的烧写与移植(2410-s),三、linux 操作系统的烧写-bootloader之VIVI移植,烧写2410S linux 操作系统:在windows xp下进行,需要的文件在光盘中的img目录和flashvivi目录下提供。烧写2410S linux 操作系统包括烧写vivi,kernel,root三个步骤,除此我们还要烧写yaffs.tar,这四个文件在img目录中。vivi-linux操作系统启动bootloader;zImage-linux操作系统内核;root.cramfs-根文件系统

22、;yaffs.tar-应用程序,三、linux 操作系统的烧写-bootloader之VIVI移植,1.把并口线插到pc机的并口,并把并口与JTAG相连,JTAG与开发板的14针JTAT口相连;2.把整个GIVEIO目录拷贝到C:WINDOWS下,并把该目录下的giveio.sys文件拷贝到 c:/windows/system32/drivers下。,三、linux 操作系统的烧写-bootloader之VIVI移植,3.在控制面板里,选添加硬件下一步选是我已经连接了此硬件下一步选中添加新的硬件设备下一步选中安装我手动从列表选择的硬件下一步选择显示所有设备选择从磁盘安装-浏览,指定驱动为C:W

23、INDOWSGIVEIO giveio.inf文件,点击确定,安装好驱动,三、linux 操作系统的烧写-bootloader之VIVI移植,4.在d盘新建一目录bootloader,把sjf2410.exe和要烧写的vivi.bin拷贝到该目录下,在程序附件msdos下,进入该目录,运行sjf2410 命令如下:sjf2410/f:vivi在此后出现的三次要求输入参数,第一次是让选择Flash,选0,第二次是选择jtag对flash的两种功能,也选0,第三次是让选择起始地址,选0,此后就等待大约35分钟的烧写时间,当VIVI 烧写完毕后选择参数2,退出烧写。,三、linux 操作系统的烧写-

24、配置tftp服务器,5.烧录后关闭2410S,拔掉JTAG与开发板的连线,并用串口线连接pc和2410S;6.打开超级终端,先按住pc机“Back Space”键,然后启动2410S,进入vivi 设置开发板IP和PC机在同一网段设置TFTP服务器IP为PC机的IP(PC机),三、linux 操作系统的烧写-windows下配置tftp服务器,打开软件tftpd32.exe文件,对windows下的服务器进行配置:,三、linux 操作系统的烧写-windows下配置tftp服务器,烧写内核:tftp flash kernel zImage烧写根文件系统:tftp flash root root.cramf,三、linux 操作系统的烧写-烧写应用程序,用网线连接好2410-S的网卡与PC网卡口,配置IP为同一网段。启动2410-S进入mnt/yaffs下。执行命令:mnt/yaffsinetd打开FTP软件,上传软件yaffs.tar到2410-S下的/var目录Tar xjvf yaffs-2410s-1.0.tar c/mnt/yaffs,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号