1、郑州航空工业管理学院嵌入式系统课程设计报告题目:基于SKYEYE的嵌入式Linux系统设计2013 2014第2学期院系:电子通信工程系 姓名:张 衡 专业:通信工程 学号:111307334 指导老师:赵 成 电子通信工程系2014年5月制目 录一、引言二、设计目的三、设计要求(1) 建立VMWARE虚拟机。(2) 安装Linux RHEL AS4操作系统环境。(3) 建立Windows操作系统与Linux操作系统的共享功能。(4) 建立交叉编译环境;安装SKYEYE仿真软件。(5) 配置并编译U-Boot-1.3.2软件。(6) 配置并编译Linux-2.6.14内核源代码。(7) 制作L
2、inux根文件系统。(8) 使用SKYEYE仿真嵌入式系统的运行。四、实验进展安排五、考核评价六、总体设计七、总结八、参考文献一、引言根据IEEE(电气和电子工程师协会)的定义,嵌入式系统是“控制、监视或者辅助装置、机器和设备运行的装置”(devices used to control, monitor, or assist the operation of equipment, machinery or plants)。从中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。目前国内一个普遍被认同的定义是:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可
3、靠性、成本、体积、功耗严格要求的专用计算机系统。仿真技术也是实现仿真平台的关键,软件仿真技术的研究早已开始。目前,嵌入式系统的仿真软件主要有SKYEYE与QEMU,这里选用SKYEYE软件来仿真嵌入式系统中的软硬件系统。在本次课程设计中,采用ARMv4 版本架构的、ARM920T 核心的S3C2410A 微处理器,应用SKYEYE对经过编译的嵌入式系统的基本模块进行仿真。SKYEYE是一个面向完整 PC 系统的开源仿真器,可以实现嵌入式系统的仿真,给用户提供一个虚拟的硬件操作平台。它是一个指令级仿真器,可以模拟多种嵌入式开发板,可支持多种CPU 指令集。除了仿真处理器外,SKYEYE 还允许仿
4、真所有必要的子系统,如连网硬件和图形硬件。在SKYEYE 上运行操作系统与在一个真实的硬件环境中运行是一样的,看不出其中的差别,并且开发人员还可以通过SKYEYE 调试操作系统和系统软件。通过 SKYEYE 仿真集成环境不仅可以很方便地进入到嵌入式系统软件学习和开发领域,而且可以有效地提高工作效率,有助于进一步学习、分析、精通Linux 内核,掌握ARM 嵌入式CPU 编程。二、设计目的通过对嵌入式系统的基本知识及相关概念的了解,在熟悉Linux操作系统的基础上,利用SKYEYE仿真软件,对嵌入式系统的开发过程进行软件仿真,从而掌握嵌入式Linux系统开发中的主要方法。具体地,在设计过程中,达
5、到以下目标:掌握嵌入式Linux系统基础部分的U-Boot软件、Linux内核的配置、编译与应用;掌握BusyBox软件及根文件系统的制作方法;掌握SKYEYE软件的使用方法,通过SKYEYE仿真软件运行U-Boot文件、vmLinux文件映像及根文件系统root.cramfs映像。 最终,能在掌握嵌入式系统开发过程及SKYEYE软件使用方法的基础上,建立更有效的嵌入式系统开发方法,提高嵌入式系统的开发与应用的效率。三、设计要求1. 任务要求要求能独立地分析题目意义、设计实现步骤、制作相关软件、调试嵌入式系统“三大基础部分”。该设计的具体要求如下:(1) 建立VMWARE虚拟机。(2) 安装L
6、inux RHEL AS4操作系统环境。(3) 建立Windows操作系统与Linux操作系统的共享功能。(4) 建立交叉编译环境;安装SKYEYE仿真软件。(5) 配置并编译U-Boot-1.3.2软件。(6) 配置并编译Linux-2.6.14内核源代码。(7) 制作Linux根文件系统。(8) 使用SKYEYE仿真嵌入式系统的运行。2. 设计所需的软硬件设备(1)硬件环境配置计算机:Intel(R) Pentium(R) 及以上内存:1GB及以上(2)软件环境配置操作系统:Microsoft Windows XP Professional Service Pack 2虚拟机:VMware
7、 WorkStation 7Linux系统:Red Hat Enterprise Linux AS 4 (2.6.9-5.EL)嵌入式交叉编译器:arm-linux-gcc 3.4.4版本Linux内核版本:Linux-2.6.14SKYEYE版本:skyeye-1.2.4U-Boot版本:U-Boot-1.3.2BusyBox版本:BusyBox-1.2.03. 课程设计报告内容按该设计报告要求的模式格式提交课程设计报告书。四 推荐进程安排 进展安排查阅资料、设计步骤 (已进行)安装与配置开发环境1天;配置与编译相关软件及系统3天;写出设计报告 1天。五、考核评价考核评价评价机制权重过程评价
8、考勤10%课堂纪律10%自主学习20%团队合作10%任务完成过程20%任务完成结果20%设计报告书写10%合计100%六 总体设计6.1 建立VMWARE虚拟机 1 解压软件包到指定的文件夹 2 双击VMware WorkStation安装程序图标,运行安装程序,进入Vmware虚拟机安装的初始加载界面。 3 Vmware虚拟机的初始加载结束后,进入安装向导界面,点击Next进入下一步 4 选择安装类型,典型安装(Typical),点击Next进入下一步 5 设定程序安装,点击change按钮,可以选择更改默认的安装路径,然后设置自己需要安装的程序路径,在选定安装路径后,点击Next按钮进入下
9、一步6 提示安装程序时需要创建的快捷图标(桌面图标、开始菜单中的程序文件夹及快速启动工具图标等3项),默认的设置即可,不需要改动,直接点击Next按钮进入下一步。7确认前面各个步骤中设置的项目是否正确,并准备进入正式的安装过程。在这一步点击Coutinue按钮进入正式安装过程。8 安装完毕后,填写注册信息,这里需要注册码,按要求将对应各项填写完以后,直接点击Enter按钮进行信息注册,并进入下一步9 如果安装了保护卡的电脑不要选择“Restart Now”;反之,选择“Restart Now”,重新启动系统。重新启动系统后,点击开始-所有程序-VMware WorkStation运行Vmwar
10、e虚拟机6.2 安装Linux RHEL AS4操作系统环境 1 在Vmware虚拟机的运行界面中,点击菜单栏中的File项,在弹出的下拉菜单中选New项,再点击弹出菜单的Virtual Machine项。出现新的虚拟机安装向导2 在弹出的安装向导中提供两个选项,这里选择自定义安装(Custom),进入下一步3 选择Vmware虚拟机平台,不同的Vmware虚拟机平台支持的硬件特性不同。这里选择Workstation6.5-7.0,进入下一步.4 选择要安装的Linux操作系统光盘镜像,同时使用Vmware虚拟机的“Easy Install”功能自动安装Linux操作系统。选择第一张安装光盘镜
11、像,进入下一步。 5 设置安装的Linux系统的用户名和密码信息。进入下一步。6 设置Linux虚拟机的显示名称及安装路径。根据自己的情况选择安装路径,名称可以选择默认。进入下一步。7 配置虚拟机使用的处理器。配置处理器数量、处理器的内核数,这里使用默认的设置:1个单核处理器。进入下一步。8 配置虚拟机使用的存储器空间,这里设置为512MB。进入下一步。9 设置网络类型。选择Use network address translation(NAT),,进入下一步。10设置I/O适配器类型,进入下一步。11 创建一个虚拟磁盘,在其上安装Linux操作系统。进入下一步12 选择使用的磁盘类型,按默认
12、的设置即可。进入下一步。13 设置硬盘的空间大小,30GB,进入下一步。14 设定存储磁盘文件的路径。根据自己的情况进行选择,进入下一步。15 对话框汇总了前面的设置项目,如果没有错误,不需要修改,直接点击Finsh按钮,进行Linux系统的安装。16第1张光盘安装完毕,需要第2张安装光盘的镜像。点击右下方的“Change Disc”按钮,在弹出的对话框中点击“Browse.”按钮在弹出的对话框中双击选择第2个光盘的镜像。第3张和第4张操作相似。17 在第4张光盘安装完毕,又需要第1张安装光盘的镜像18 Linux系统安装完毕后会自动启动,会出现登陆界面。19 在界面中输入刚开始设置的用户名和
13、密码,进入Linux系统的桌面环境。6.3 建立Windows操作系统与Linux操作系统的共享功能 1 点击“Applications”-“SystemSettings”-“Security Level”,弹出“Security Level Configuration”对话框。 2 在“Security Level Configuration”对话框中,将“Security Level”项设置为“Disable firewall”,即无防火墙。 3 点击“Applications”-“SystemSettings”-“Samba”,在弹出的“Samba服务器配置”对话框中进行配置。而显示的配
14、置内容为空,这说明还没有配置Samba服务器。 4 点击“ADD”图标,添加1个Samba服务共享,在弹出的对话框中选择“Basic”选项卡,在其中进行设置:在“Directory”文本框输入/home/zq;在“Share name”文本框中输入zq;在“Basic Permissions”选项中选择“Read/Write”。接着切换到“Access”选项卡,其中有两项选择,一项是仅允许特定的用户访问,另一项是允许所有用户访问。在这里选择“Allow access to everyone”选项。 5 点击“Preferences”-“Server Settings.”,弹出“服务器设置”对话
15、框。在“Basic”选项卡内,按默认内容设置“Workgoup”与“Description”;在“Security”选项卡内“Authentication Mode”项选择“Share”,“Encrypt Passwords”项选择“NO”,“Guest Account”项选择“No Guest Account” 6 设置/home/zq文件夹的属性 7 在windows操作系统环境下,右键点击“网络邻居”图标,在弹出的“网络连接”对话框中,可以看见有一个“VMware Network Adapter VMnet8”连接项,右键点击该项,在弹出的菜单中点击选择“属性”选项,接着会弹出“VMwa
16、re Network Adapter VMnet8”属性对话框,其中,在“常规”选项卡里面有一个“此连接使用下列项目(O)”文本框,点选其中的“Internet 协议(TCP/IP)”项,然后点击下方的“属性”按钮,会弹出“Internet 协议(TCP/IP)属性”对话框,其中显示的“IP地址(I)”为:202.196.174.28,在下面将相关的IP地址都配置在同一网段中。 8设置Samba服务器IP地址. 点击“Applications”-“System Tools”-“Network Device Control”项,弹出“网络设备控制”对话框。点击选定“eth0”设备,确认“Stat
17、us”栏的内容为“Active”(如果“Status”栏的内容为“Inactive”,需要先点击右侧的“Activate”按钮,将其激活),再点击右边的“Configure.”按钮,弹出“网络配置”对话框,其中显示了已有的网络设备,将其中的IP地址配置为和上一步中在同一网段的IP地址 9 点击VMware虚拟机的“VM”菜单,选择“Settings.”项。在“Hardware”选项卡中左侧选择“Network Adapter”项,相应的,在右侧的Network connection中选择“NAT:Use to share the hosts IP address”项,也可以选择“Bridged
18、:Connected directly to the physical network项”。同时,在“Devices status”框中选择“Connected”与“Connect at power on”项 10 启动Smaba服务器,启动终端,在终端输入命令service smb start,启动samba服务。 11 在windows下访问共享文件夹。在windows系统中点击“开始”-“运行”,输入samba服务器的IP地址,点击“确定”按钮,就可以看到Linux系统下的共享文件夹/home/zq 6.4 建立交叉编译环境;安装SKYEYE仿真软件Gcc交叉编译环境的安装在终端运行如下
19、命令:设置环境变量,将交叉开发工具的设置更新到系统环境中,这样就可有直接在命令行使用,设置环境变量的方法如下: (1)在终端运行命令:vi /root/.bashrc(2)编辑/root/.bashrc文件,在最后一行添加export PATH=$PATH:/home/usr/local/bin.如图所示(3)注销Redhant系统,重新登录,使以上设置生效。启动终端,在命令行输入arm-linux-gcc v,出现如下图示的信息,说明交叉编译环境已经成功安装。SKYEYE的安装: 6.5 配置并编译U-Boot-1.3.2软件 6.5.1 交叉编译U-Boot-1.3.2软件 把U-Boot
20、-1.3.2压缩文件放到/home文件夹下,在终端中输入:cd /home 进入到home文件夹下,在终端中输入:tar xjvf u-boot-1.3.2.tar.bz2 C ./ 把u-boot-1.3.2解压到home文件夹下,在终端中输入:cd u-boot-1.3.2 进入到cd u-boot-1.3.2文件夹下,make smdk2410_config CROSS_ROMPILE=arm-linux- 配置编译环境,make CROSS_ROMPILE=arm-linux- 选择嵌入式交叉编译工具进行编译,编译完成后,可以得到U-boot各种格式的映像文件和符号表。6.5.2使用S
21、KYEYE仿真软件测试编译得到的U-Boot文件 新建一个文件,命名为skyeye_s3c4210.conf,并把内容配置为 # skyeye config file for S3C2410Xarch:armcpu: arm920tmach: s3c2410x# physical memorymem_bank: map=M, type=RW, addr=0x00000000, size=0x00100000mem_bank: map=M, type=RW, addr=0x30000000, size=0x04000000#mem_bank: map=M, type=RW, addr=0xc16
22、00000, size=0x00a00000# all peripherals I/O mapping areamem_bank: map=I, type=RW, addr=0x48000000, size=0x20000000mem_bank: map=I, type=RW, addr=0x19000300, size=0x00000020#net: type=cs8900a, base=0x19000300, size=0x20,int=9, mac=0:4:3:2:1:f, ethmod=tuntap,hostip=10.0.0.1lcd: type=s3c2410x, mod=gtk#
23、load_addr:base=0x30000000, mask=0xFFFFFF#dbct:state=on在/home 文件夹下的U-Boot-1.3.2里找到u-boot,和u-boot.bin文件,把这两个文件和skyeye_s3c2410.conf一同复制到home/ilovechina/skyeye-1.2.4/binary文件夹里在终端中输入命令:cd /home/ilovechina在终端中输入命令:cd skyeye-1.2.4在终端中输入命令:cd binary 在终端中输入命令:./skyeye c skyeye_s3c2410.conf e u-boot在u-boot可以
24、在“SMDK2410#”后输入u-boot命令6.6 配置并编译Linux-2.6.14内核源代码 6.6.1交叉编译Linux内核源代码软件 把Linux 2.6.14压缩文件放到/home文件夹下 在终端中输入cd /home 进入到home文件夹下 在终端中输入tar -xjvf linux-2.6.14.tar.bz2 把Linux 2.6.14压缩文件解压到home文件夹下 在终端中输入cd /home/linux-2.6.14使用vi编辑器打开该目录下的Makefile文件,修改第192行与第193行,改为:CROSS_COMPILE ?=/home/usr/local/bin/a
25、rm-linux- 分别指定编译的内核架构与使用的交叉编译工具。 在终端中输入:cp arch/arm/configs/smdk2410_defconfig .config make ARCH=arm menuconfig 启动内核配置菜单,参考书中各个选项的配置,特别要注意系统类型、启动选项、设备驱动程序和内核调试的配置.更改程序运行的物理地址修改include/asm-arm/arch-s3c2410/memory.h文件,在终端中输入命令 vi include/asm-arm/arch-s3c2410/memory.h将其中第33行指定SDRAM其实地址的如下内容修改include/as
26、m-arm/arch-s3c2410/map.h文件,在终端中输入命令:vi include/asm-arm/arch-s3c2410/map.h修改后的内容为:Linux内核的编译:cd /home/linux-2.6.14 make ARCH=arm CROSS_COMPILE=arm-linux-内核编译完毕后,将得到三个重要的文件,分别位于根目录下的vmlinux、位于Linux-2.6.14安装目录中arch/arm/boot/路径下的Image与zImage。6.6.2 使用SKYEYE仿真软件测试编译得到的Linux内核文件vmLinux 复制vmlinux到/home/ilov
27、echina/skyeye-1.2.4/binary cp vmlinux /home/zcnet/skyeye-1.2.4/binary/ 建立skyeye.conf配置文件到/home/ilovechina/skyeye-1.2.4/binary cd /home/zcnet/skyeye-1.2.4/binary/ vi skyeye.conf skyeye.conf配置文件的内容为: #skyeye config file for s3c2410cpu:arm920tmach:s3c2410x#physical memorymem_bank:map=M,type=RW,addr=0xc
28、0000000,size=0x00800000mem_bank:map=M,type=RW,addr=0xc0800000,size=0x00800000,file=./initrd.imgmem_bank:map=M,type=RW,addr=0xc1000000,size=0x01000000#all peripherals I/O mapping areamem_bank:map=I,type=RW,addr=0x48000000,size=0x20000000mem_bank:map=I,type=RW,addr=0x19000300,size=0x00000020net:type=c
29、s8900a,base=0x19000300,size=0x20,int=9,mac=0:4:3:2:1:f,ethmod=tuntap,hostip=10.0.0.1lcd:type=s3c2410x,mod=gtk#dbct: state=on 复制文件系统initrd.img到/home/ilovechina/skyeye-1.2.4/binary把SKYEYE的测试工具包压缩文件放到/home文件夹下。在终端中输入命令:cd /home在终端中输入命令:tar xjvf skyeye-testsuite-2.3.tar.bz2在终端中输入命令:cd skyeye-testsuite-2
30、.3/linux/s3c2410/s3c2410x-2.6.14在终端中输入命令:cp initrd.img /home/zcnet/skyeye-1.2.4/binary使用SKYEYE仿真Linux系统在终端中输入命令:cd /home/zcnet/skyeye-1.2.4/binary在终端中输入命令:./skyeye -e vmlinux 6.7 制作Linux根文件系统 6.7.1编译安装BusyBox1 在home文件夹中新建一个文件夹命名为ilovechina2 把BusyBo x压缩文件放到/home/ilovechina下3 在终端中输入命令:cd /home/ilovech
31、ina 进入BusyBox-1.2.0的存放位置4 在终端中输入命令:tar -xjvf busybox-1.2.0.tar.bz2 进行解压5 在终端中输入命令:cd busybox-1.2.0 6 在终端中输入命令:make menuconfig 进入BusyBox的主配置菜单7 参考书中提供的资料进行设置各个选项8 配置完成各个选项后,保存设置9 在终端中输入命令:make 对BusyBox进行编译,进行编译后得到两个主要的文件:BusyBox与BusyBox_unstripped。10 在终端中输入命令:make install 安装BusyBox以后会在BusyBox-1.2.0目录
32、中产生_install目录,这是BusyBox默认的安装目录。在安装目录_install中还得到了bin、sbin、usr等三个目录以及Linuxrc文件BusyBox经过设置、编译与安装在默认的安装目录_install下得到了bin、sbin、usr等三个目录以及Linuxrc文件。在 BusyBox安装目录_install的基础上进行扩展以后可以得到根文件系统。根文件系统中包括了bin、dev、etc、home、initrd、lib、lost+found、proc、root sbin 、tmp 、usr 、var等13个目录以及linuxrc文件,其中home、initrd、lib、los
33、t+found、proc、root、tmp、var 等目录为空目录,暂时没有内容,另外,用户自己还需要创建dev目录与etc目录,dev目录用以存放设备文件,etc目录用来存放启动文件。6.7.2创建根文件系统的dev目录:1 在终端中输入命令:mkdir _install/dev2 在终端中输入命令:cp /dev/ttyS0/dev/console/dev/ram0 _install/dev/ -a这样就在dev目录中添加了串口终端设备、系统控制台设备、RAM磁盘设备等三个常用的硬件设备文件6.7.3创建根文件系统的etc等目录及配置文件 这一部分的配置内容较多,也比较繁琐,为了使相应的目
34、录与配置文件的建立过程相对简单,编写make_rootfs.sh来实现该部分的操作。 1创建make_rootfs.sh脚本文件,内容如下:echo setp of make_rootfsecho 1:create foldersmkdir -pv etc etc/init.d home initrd lib proc root tmp var lost+foundecho 2:etc/inittabcat etc/inittab etc/init.d/rcS etc/mtab etc/motd EOFWelcome to ARMLinuxARMLinux for SkyeyeFor furt
35、her information please check:http:/www.skyeye.org/EOF2 将编写的make_rootfs.sh脚本文件放在BusyBox的安装目录_install中,然后进入安装目录运行该脚本在终端中输入命令:cd _install在终端中输入命令:./make_rootfs.sh在终端中输入命令:cd /home/ilovechina/BusyBox-1.2.0 这样,根文件系统的完整结构就在安装目录_install中建立出来了,下一步,将使用安装目录_install中的内容创建文件系统映像 在终端中输入命令:dd if=/dev/zero of=./in
36、itrd.img count=2048 bs=1024 在终端中输入命令:mke2fs -F -m0 initrd.img其中,dd是Linux/UNIX系统中一个非常有用的命令,使用dd命令可以复制一个文件到指定大小块空间,并在复制该文件的同时进行指定文件转换。上面具体的带参数的dd命令指定了每个存储块的大小是1024字节,一共2048个块,因此,指定的块空间为2M字节。然后,使用/dev/zero文件来创建一个占用2M字节块空间的初始化空文件,同时将其转换为initrd.img文件输出。mke2fs命令用来将文件映像initrd.img格式化为EXT2格式。 创建的EXT2格式的文件系统映
37、像initrd.img目前还是一个空文件,下一步,应该将安装目录下的所有内容复制到EXT2格式的文件系统映像initrd.img中 6.7.4 添加initrd.img文件系统映像的内容 1 在终端中输入命令:mkdir /mnt/rootfs 先在./mnt目录中建立一个rootfs目录,用来挂载initrd.img文件系统映像。 2 在终端中输入命令:mount initrd.img /mnt/rootfs/ -o loop 挂载映像文件initrd.img 3 在终端中输入命令:cp _install/* /mnt/rootfs/ -a 将安装目录的所有内容复制到/mnt/rootfs目
38、录 4 在终端中输入命令: umount /mnt/rootfs/ 卸载映像文件initrd.img这样,就得到了运行嵌入式系统所需要的根文件系统映像initrd.img文件了,下一步,需要将根文件系统映像initrd.img文件放在SKYEYE环境中测试进行。6.7.5基于SKYEYE的根文件系统仿真调试 1 将BusyBox-1.2.0目录中的根文件系统映像文件initrd.img与SKYEYE的配置文件skyeye.conf、Linux2.6.14内核文件vmlinux放在一起,复制到skyeye-1.2.4目录中的binary目录里面。2 在终端中输入命令:cd /home/zcnet
39、/skyeye-1.2.4/binary3 在终端中输入命令:./skyeye -e vmlinux运行上述命令后,在Redhat Linux的终端窗口中应该可以看到内核的启动信息了,随后会输出在etc/motd文件中设置的“ARMLINUX”ASCII图形的标志,最后,窗口中会输出BusyBox的启动信息 已经出现了BusyBox-1.2.0的信息,光标停留在BusyBox工具提供的命令提示符“#”后,等待用户输入命令。在其中输入命令“ls”,按下回车键执行后,在屏幕上会输出制作的根文件系统中的所有目录。这说明SKYEYE可以正常地模拟仿真Linux-2.6.14系统在ARM9平台上的运行过
40、程6.8 使用SKYEYE仿真嵌入式系统的运行在SKYEYE的仿真文件夹中应该已经同时具有了vmlinux内核映像、initrd.img文件系统以及skyeye.conf配置文件等三个基础文件。 现在就可以使用如下命令来启动SKYEYE模拟Linux-2.6.14内核的运行。运行结果如下图所示七、总结 这一次的课程设计,说实话,我做的很困难,刚开始对着电脑也不知道从哪里下手,后来我就向班里的学霸说了我的问题,他给了我一些建议,然后,我才慢慢地开始做,才有了自己的思路。还有在课程设计过程中,我了解到课程设计不光光是埋头做设计,也是同学之间互相学习和互相交流经验和知识的机会。也是我们大家向老师提出
41、疑问和学以致用的机会,这让我们不会成为只知道理论而不会将理论化为实践中去的书呆子。我觉得课程设计就是一个复习课堂上学到知识的机会,也是一个加强学生动手能力设计的机会。更是一个让学习得到升华的过程。 这次的课程设计还让我明确了一点:嵌入式开发对于提升我们的系统知识有很大的帮助,尤其是操作系统的知识。嵌入式系统开发对于我们的知识面要求非常的广,且要有一定的深度。这次的课程设计因为是一个有针对性的训练,所以记的会非常牢固。跟平时上课不太一样,平时上完理论课很少有时间上机进行时间或者隔几天才上机练习,等到上机时一些东西可能遗忘了,比较耗费时间。在课上,有老师在前面演示我们感觉看得懂或感觉没问题,可轮到我们独立完成的时候,因为实际操作的少,做的时候问题就来了。 这次也激发了我今后努力学习的兴趣,我想这将对我以后的学习产生积极的影响。我了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。八、参考文献 【1】赵成.嵌入式系统应用基础