第一篇:嵌入式毕业实习报告
嵌入式系统 毕业实习报告
学
院: 电子与电气工程学院 专
业: 电子信息工程 班
级: 电子11201 学
号: 1203251024 姓
名:
徐贤畅
嵌入式系统开发与应用概述
在今日,嵌入式ARM 技术已经成为了一门比较热门的学科,无论是在电子类的什么领域,你都可以看到嵌入式ARM 的影子。如果你还停留在单片机级别的学习,那么实际上你已经落下时代脚步了,ARM 嵌入式技术正以几何的倍数高速发展,它几乎渗透到了几乎你所想到的领域。由于嵌入式系统具有体积小、性能强、功耗低、可靠性高以及面向行业具体应用等突出特征,目前已经广泛地应用于军事国防、消费电子、信息家电、网络通信、工业控制等各个领域。嵌入式的广泛应用可以说是无所不在。linux系统
linux系统主要是由用户空间和内核空间再加上外部的硬件平台构成,用户空间就是用户应用程序的运行空间,主要包括两方面的内容:用户应用程序和GNU C Library(glibc)。而内核空间有三方面的内容,一是系统调用接口,它作为用户空间和内核空间相互转移的一种方式,二是内核空间,三是体系相关内核代码,在linux内核代码中,可以看到arch目录下有许多子目录,其中每一个子目录代表一种硬件平台。
而为什么要把linux系统划分为用户空间和内核空间呢?主要是一旦用户空间和内核空间没有分开,那用户将拥有很大的权限去操控内核或用户应用程序的崩溃将会造成系统的崩溃,而linux系统是利用cpu的模式分级来分别运行用户空间和内核空间,这样就可以使操作系统得到充分的保护。而现代的cpu通常实现了不同的工作模式,以ARM处理器为例实现了7种运行模式,分别为:
1)用户模式(usr):ARM微处理器正常程序执行模式 2)系统模式(sys):运行具有特权的操作系统任务 3)中断模式(irq):用于通用的中断处理
4)外部中断模式(fiq):用于高速数据传输或通道处理
5)数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护
6)管理模式(svc):操作系统使用的保护模式
7)未定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真
ARM微处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变,除用户模式外,其他模式都是非用户模式或特权模式,除用户模式和系统模式外,其他模式都是异常模式,常用于处理异常或中断,以及需要访问受保护的系统资源等情况。
同时用户空间和内核空间是程序执行的两种不同状态,通过系统调用和硬件中断去实现用户空间到内核空间的转移,系统调用是主动的,硬件中断是被动的,比如键盘按下或者串口中断。
接下来说说linux的内核架构,它主要是包含7大组成部分
1.内存管理 内存管理的主要作用是使多个进程能安全高效的共享内存区域,通常使用以下两个手段:
①内存映射:将物理内存映射到虚拟内存中,变有限为无限 ②有效管理:使用各种内存管理算法(如伙伴算法),减少内存浪费
2.虚拟文件系统 vfs隐藏了各种文件系统的具体细节,为文件操作提供统一的接口
3.网络协议栈 它为linux提供了完善丰富的网络协议实现
4.进程管理 进程管理的重点是创建进程、停止进程,并控制它们之间的通信。进程管理还包括控制活动进程如何共享cpu,即进程调度。
5.设备驱动 设备驱动也是内核的一部分,它不同于内核的其他部件,并且独立于内核的其他部件,同时它是与设备交互的唯一模块,通常由第三方厂商开发,一个驱动程序不与其他驱动程序交互;内核与驱动程序之间也仅通过一个严格定义的接口交互。
6.系统调用接口 SCI层为用户空间提供了一套标准的系统调用函数来访问Linux内核,搭起了用户空间到内核空间的桥梁。
7.体系相关部分
Linux内核源代码采用树形结构进行组织,非常合理地把功能相关的文件都放在同一个子目录下,使得程序更具可读性。下面介绍下这些目录的组成 arch目录
arch是architecture的缩写。内核所支持的每种CPU体系,在该目录下都有对应的子目录。每个CPU的子目录,又进一步分解为boot,mm,kernel等子目录,分别包含控制系统引导,内存管理,系统调用等。其下子目录有
|--x86 /*英特尔cpu及与之相兼容体系结构的子目录*/ | |--boot /*引导程序*/
| | |--compressed /*内核解压缩*/ | |--tools /*生成压缩内核映像的程序*/
| |--kernel /*相关内核特性实现方式,如信号处理、时钟处理*/ | |--lib /*硬件相关工具函数*/ block目录
部分块设备驱动程序 crypto目录
加密、压缩、CRC校验算法 documentation
内核的文档 drivers目录(重点)
设备驱动程序 fs目录
存放各种文件系统的实现代码。每个子目录对应一种文件系统的实现,公用的源程序用于实现虚拟文件系统vfs。| |--devpts /* /dev/pts虚拟文件系统*/ | |--ext2 /*第二扩展文件系统*/ | |--fat /*MS的fat32文件系统*/
| |--isofs /*ISO9660光盘cd-rom上的文件系统*/ include目录
内核所需要的头文件。与平台无关的头文件在include/linux
子目录下,与平台相关的头文件则放在相应的子目录中。init目录
内核初始化代码 ipc目录
进程间通信的实现代码 kernel目录
Linux大多数关键的核心功能都是在这个目录实现。(调度程序,进程控制,模块化)
lib目录
库文件代码 mm目录
mm目录中的文件用于实现内存管理中与体系结构无关的部分(与体系结构相关的部分在哪里实现?arch)
net目录
网络协议的实现代码
| |--802 /*802无线通讯协议核心支持代码*/ | |--appletalk /*与苹果系统连网的协议*/ | |--ax25 /*AX25无线INTERNET协议*/ | |--bridge /*桥接设备*/
| |--ipv4 /*IP协议族V4版32位寻址模式*/ | |--ipv6 /*IP协议族V6版*/ samples
一些内核编程的范例 scripts
配置内核的脚本 security
SElinux的模块 sound
音频设备的驱动程序 usr
cpio命令实现 virt
内核虚拟机
Linux内核的配置与编译
Linux内核具有可定制的优点,配置内核的目的是裁剪掉不必要的文件和目录,获得一个最简单的又能满足用户开发的操作系统,以解除嵌入式开发过程中所遇到的存储空间有限的困扰。内核配置与编译的具体步骤如下: 1.清除临时文件、中间文件和配置文件
1)make clean
Remove most generated files but keep the config即清除大部分生成的文件但保留配置文件
2)make mrproper
Remove all generated files + config files即清除所有生成的文件还有配置文件
3)make distclean
Mrproper + remove editor backup and patch files即实现make mrproper命令的同时删除编辑器备份文件和补丁文件
2.确定目标系统的软硬件配置情况,比如cpu类型,网卡型号,所需支持的网络协议等。
3.使用如下命令之一配置内核:
1)make config:基于文本模式的交互式配置
2)make menuconfig:基于文本模式的菜单型配置
3)make oldconfig:使用已有的配置文件(.config),但是会询问新增的配置选项
4)make xconfig:图形化的配置(需安装图形化系统)
Make menuconfig是最为常用的内核配置方式 如果一个.config文件已经存在,它将使用该文件设置那些默认的值 4.编译内核
编译内核通常也需要几个步骤,一是清除以前编译通过的残留文件;二是编译内核image文件和可加载模块;三是安装模块。下面是编译内核的具体步骤。
①make dep 命令用在内核2.4或之前,用于建立源文件之间的依赖关系,在执行内核配置命令之后使用,不过在2.6内核中已经取消该命令,该功能由内核配置命令实现。
②make clean 命令用于删除前面留下来的中间文件,该命令不会删除.config等配置文件。这个步骤是可选的,它的目的是清除原先编译过而残留的.com和.o(obj文件)。如果是刚下载的源代码,那么这一步就可以省略了,但是如果已经编译多次内核,这一步是必要的,不然后面可能会出现很多莫名其妙的小问题。③make zImage命令用于编译生成压缩形式的内核镜像,当编译成功后,就会在archarmboot目录下生成zImage文件,大小一般为几百KB。对于嵌入式Linux内核而言,直接将生成的zImage下载到嵌入式目标板的flash中即可。对于较大的内核,如果用make zImage编译,系统会提示使用make bzImage命令来编译,bzImage是big zImage的缩写,可用于生成较大的压缩内核,比如桌面Linux系统内核。
④在配置菜单的过程中,有些选项被选择为模块的,即选项前为[M],并且在回答Enable loadable module support(CONFIG_MODULES)时选了Yes的,则接下来就还要用命令make modules 来编译这些可加载模块,并用make modules_install将make modules生成的模块文件复制到相应目录,桌面Linux内核一般是在/lib/modules目录下。⑤制作init ramdisk
mkinitrd initrd-$version $version 例:
mkinitrd initrd-2.6.29 2.6.29
$version 可以通过查询/lib/modules下的目录得到
Ramdisk是将一部分固定大小的内存当做分区来使用。它并非一个实际的文件系统,二是一种将实际的文件系统装入内存的机制,并且可以作为根文件系统。将一些经常被访问而又不会更改的文件(如只读的根文件系统)通过ramdisk放在内存中,可以明显的提高系统的性能。在linux的启动阶段,initrd提供了一套机制,可以将内核映像和根文件系统一起载入内存。⑥cp arch/x86/boot/bzImage /boot/vmlinuz-$version
$version 为所编译的内核版本号
(拷贝initrd-2.6.29到/boot下,将arch/x86/boot/bzImage更名为vmlinuz-2.6.29移动到/boot下)
⑦修改/etc/grub.conf 或者/etc/lilo.conf(GNU GRUB(简称 GRUB)是一个来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。)这时重启Linux操作系统,在进入内核时按下回车键进入内核选择界面,选择自己编译的内核,即可进入自己编译的内核的操作系统,用uname-r 可以查看当前内核版本。
嵌入式linux文件系统的制作与移植
文件系统包含两个层次的含义: 1.按照固定格式组织的目录与文件
2.在特定的存储介质上管理这些目录和文件需要的数据
当我们在linux下输入ls / 的时候,见到的目录结构以及这些目录下的内容都大同小异,这是因为所有的linux发行版在对根文件系统的布局上都遵循FHS(Filesystem Hierarchy Standard)标准的建议规定。
各个目录名称及其存放的内容:
/bin 必备的用户命令,例如ls、cp等
/sbin 必备的系统管理员命令,例如ifconfig、reboot等 /dev 设备文件,例如mtdblock0、tty1等
/etc 系统配置文件,包括启动文件,例如inittab等 /lib 必要的链接库,例如C链接库、内核模块 /home 普通用户主目录 /root root用户主目录
/usr/bin 非必备的用户程序,例如find、du等
/usr/sbin 非必备的管理员程序,例如chroot、inetd等 /usr/lib 库文件
/var 守护程序和工具程序所存放的可变,例如日志文件
/proc 用来提供内核与进程信息的虚拟文件系统,由内核自动生成目录下的内容
/sys 用来提供内核与设备信息的虚拟文件系统,由内核自动生成目录下的内容
/mnt 文件系统挂接点,用于临时安装文件系统
/tmp 临时性的文件,重启后将自动清除
根文件系统是Linux启动时使用的第一个文件系统。没有根文件系统,Linux将无法正常启动。根文件系统由一系列目录组成,目录中包含了应用程序、C库、以及相关的配置文件。
那如何制作一个根文件系统呢?主要包括以下步骤:
1、创建根文件系统的目录
如:mkdir bin sbin lib etc dev proc sys usr mnt tmp var
2、创建设备文件
cd dev
mknod-m 666 console c 5 1 mknod-m 666 null c 1 3 cd..3、安装/etc
tar-xzvf etc.tar.gz /xxx/rootfs/etc
4、配置busybox
进入busybox目录执行 make menuconfig
进入 Busybox Settings build Options->
选中 “Build busybox as a static binary”, 静态链接 Cross Compiler prefix(arm-linux-)
Installation Options->
选中 “Don‘t use /usr”, 选中该项可以避免busybox被安装到宿主系统的/usr目录下,破坏宿主系统
Busybox Installation Prefix(/nfsroot/rootfs)该选项表明编译后的busybox的安装位置
7、编译、安装busybox
make ARCH=arm CROSS_COMPILE=arm-linux-
make install
前提是系统中安装好了交叉编译工具arm-linux-gcc
至此一个粗略的根文件系统制作完成,下面就需要移植到开发板中。我们知道ARM嵌入式系统的组成为: 1)bootloader 引导加载器 2)kernel 操作系统内核
3)rootfs 根文件系统(带GUI,QTopia)
在系统加载完内核后就会去启动根文件系统,而启动根文件系统这个过程被bootargs这个参数控制,所以我们需要修改这个参数以使系统运行我们的根文件系统,但这之前我们需要在宿主机上将根文件系统共享出来。我们先在linux系统中配置好nfs服务器,并且在设置配置文件exports将根文件系统所在路径共享出来,接下来在ARM开发板启动时控制超级终端进入shell界面,在这里输入命令print会显示开发板启动的配置信息,通过set命令我们可以设置bootargs 参数为: console=ttySAC0 root=/dev/nfs
nfsroot=192.168.0.113:/mynfs/rootfs ip=192.168.0.1:192.168.0.113:192.168.0.1:255.255.255.0:mini6410.arm9.net:eth0:off
设置完成后用save命令保存设置,输入reset复位命令,ARM系统重启,重启完成后我们看到ARM系统的根文件系统就是我们自己制作的根文件系统。
实习体会
在嵌入式系统中,除了课本上的基础知识外,还学会了软件编程的基本思路,掌握了液晶屏的使用及其电路设计方法;掌握有关音频处理的基础知识;掌握液晶显示文本及图形的方法与程序设计。
通过这次设计,掌握了液晶显示实验、μC/OS-II移植、μC/OS-IILCD显示的工作原理及串口通信实验的工作过程,学会了使用仿真软件Embest EduKit-IV实验平台及ULINK2仿真器套件,并学会通过应用软件仿真来实现各种通信系统的设计,对以后的学习和工作都起到了一定的作用,加强了动手能力和学业技能。虽然花了很长时间编写软件程序设计,但这一切还是理论上的。希望学校能提供机会和条件,让我们能够去真正地将理论和实践相结合。通过这次程序,感觉自己所掌握的知识是那么的有限,还有许多需要改进和不足的地方,同时也帮助了我怎样学好这门课程,增加了我对这门学科的兴趣。总体来说,这次实习我受益匪浅。在摸索该如何设计电路使之实现所需功能的过程中特别有趣,培养了我的设计思维,增加了实际操作能力。在让我体会到了设计电路的艰辛的同时,更让我体会到成功的喜悦和快乐。通过这次实习通信系统的设计,使我更加清楚以后的发展及学习的方向。
第二篇:11嵌入式毕业实习分组
2014届毕业生毕业实习分组
(嵌入式技术与应用专业)
一、实习分组
1.实习班级:11嵌入式(第一组人数:14)
指导教师: ***
联系方式: ***
E-mail: ***
QQ:***
组长:***
组员:***
2.实习班级:11嵌入式(第二组人数:13)
指导教师: ***
联系方式: ***
E-mail:******
QQ:***
组长: ***
组员:***
二、实习期间需完成的实习报告
根据专业教学计划,学生在实习过程中必须针对以下课程提交具有专题内容的实习报告。
⒈课程
(1)必修课程1门
嵌入式软件开发项目。
(2)二选一课程
嵌入式系统设计项目、嵌入式应用开发项目(选取其中一门)。
2.要求
学生应在岗位实践过程中,注意关注与各课程相关的专业知识、典型技术应用模式与典型工作项目,认真搜集、整理资料文档,注意与指导教师保持联系,严格按具体实习安排,完成课程实训报告。
注:相关指导文档随后下发。
三、毕业设计
毕业设计安排及具体要求将在毕业设计前下发,届时本院指导教师与基地指导教师配合完成毕业设计指导工作。
第三篇:暑假嵌入式实习报告
一、嵌入式的概述:
随着信息化技术的发展和数字化产品的普及,以计算机技术、芯片技术和软件技术为核心的嵌入式系统再度成为当前研究和应用的热点,通信、计算机、消费电子技术(3C)合一的趋势正在逐步形成,无所不在的网络和无所不在的计算(everything connecting, everywhere computing)正在将人类带入一个崭新的信息社会。
二、实习目的学习和了解了嵌入式在生活中的重要作用和发展过程,熟练掌握ARM硬件体系结构,熟悉linux下的嵌入式编程流程,积累自己的软件编写经验,能够参与并实现一个真实和完整的嵌入式项目,为今后的学习和将从事的技术工作打下坚实的基础
三、实习设备:
1、硬件:Embest EduKit-IV平台,ULINK2仿真器套件,PC机;
2、软件:μVision IDE for ARM集成开发环境,Windows 98/2000/NT/XP。
四、实习内容
第一阶段Linux操作和编程基础
主要介绍Linux的基本命令和基础编程知识,包括Linux的文件操作和目录操作命令,VI编辑器,GCC编译器,GDB调试器和Make项目管理工具等知识。
第二阶段 嵌入式C语言编程基础
主要介绍在嵌入式开发编程中C语言的重要概念和编程技巧中的重点难点,以复习串讲和实例分析的形式,重点介绍包括函数与程序结构,指针、数组和链表,库函数的使用等知识。
第三阶段Linux上C强化编程训练
主要包括整数算法训练,递归和栈编程训练,位操作训练,指针训练,字符串训练和常用C库函数编程接口实践,强化学员对Linux下基本编程开发的理解和编码调试的能力。
第四阶段 Linux环境高级编程及项目开发编程实践主要包括系统编程(信号/系统调用/管道/FIFO/消息队列/共享内存等),文件I/O编程(文件描述符/文件读写接口/原子操作/阻塞与非阻塞IO等),多任务和多线程编程(进程标识/ 用户标识/fork与vfork/多线程概念/线程同步等),网络编程(网络基本概念/套接口编程/网络字节次序/Client/Server结构/UDP编程);掌握Linux下Socket编程的开发流程,熟悉网络编程的调用接口函数和相关数据结构,使学员初步具备在Linux上进行系统编程开发的能力。同时综合之前所学内容和编程技术,以小组为单位进行一个团队合作项目的开发,考核内容包括文件I/O编程,多线程编程,网络编程和项目文档编写。
第五阶段嵌入式处理器体系结构及编程实践
主要介绍ARM体系结构及其基本编程知识,包括指令分类,寻址方式、指令集、存储系统、异常中断处理、汇编语言以及CC++和汇编语言的混合编程等知识。同时结合ARM嵌入式开发板硬件设计原理和基本硬件设计流程,分析各种外设的工作原理和驱动机制,并自己动手实践完成一个ARM开发板上的编程大作业。
第六阶段嵌入式Linux开发基础及高级应用
主要介绍嵌入式Linux开发应用程序的基本流程和知识,包括嵌入式Linux基本概念和开发流程、Bootloader工作原理、内核裁减配置和交叉编译、根文件系统制作、网络编程以及图形界面和数据库开发等知识。同时独立完成一个基于嵌入式Linux GUI的应用编程大作业。
第七阶段嵌入式 Linux驱动理论及驱动程序开发实践
主要介绍嵌入式Linux上驱动程序开发规范,包括设备驱动程序概念、字符设备驱动程序、块设备与网络设备、网卡驱动以及常用嵌入式设备驱动开发等知识。同时独立实现两种嵌入式设备驱动程序的编写,包括驱动模块的调试和加载以及完整的项目开发文档的编写。
第八阶段嵌入式Linux项目团队开发实践锻炼主要包括设计并实现一个真实和完整的嵌入式项目的开发流程,涉及到数据采集、网络通讯、图形用户界面显示以及嵌入式数据库存储系统等多种嵌入式Linux编程技术。要求学员建立起团队开发和协同工作的企业项目开发模式的概念和流程,强化学员对编写项目概要设计文档和详细设计文档的理解,为就业前的职业技能和素质训练做好充分准备。
五、实习心得:
通过本次实习对ARM9嵌入式系统设计有了更深一步的了解,知道了如何使用uc/os软件进行编程编译,并下载到实验箱中,使图像、声音、文字得以显示,学会了转换IIS声音文件的工具:ProcBmp.exe和转换bmp图片文件的工具:Image2Lcd,使其能够在程序中运行。更重要的是学会了如何解决在实习中遇到的各种问题并很好的解决,为以后使用该软件进行编程打下了坚实的基础,也培养了自己对该软件的兴趣,大四的学生正面临找工作的压力,通过这次实习积累了经验,对找工作也起到了辅助的作用,希望能够有机会对该软件进行进一步的学习研究。最后感谢指导老师和同学们的细心帮助。
第四篇:嵌入式系统实习报告
一、嵌入式系统开发与应用概述
在今日,嵌入式ARM 技术已经成为了一门比较热门的学科,无论是在电子类的什么领域,你都可以看到嵌入式ARM 的影子。如果你还停留在单片机级别的学习,那么实际上你已经落下时代脚步了,ARM 嵌入式技术正以几何的倍数高速发展,它几乎渗透到了几乎你所想到的领域。本章节就是将你领入ARM 的学习大门,开始嵌入式开发之旅。以嵌入式计算机为技术核心的嵌入式系统是继网络技术之后,又一个IT领域新的技术发展方向。由于嵌入式系统具有体积小、性能强、功耗低、可靠性高以及面向行业具体应用等突出特征,目前已经广泛地应用于军事国防、消费电子、信息家电、网络通信、工业控制等各个领域。嵌入式的广泛应用可以说是无所不在。
嵌入式微处理器技术的基础是通用计算机技术。现在许多嵌入式处理器也是从早期的pC 机的应用发展演化过来的,如早期pC 诸如TRS-80、Apple II 和所用的Z80 和6502 处理器,至今仍为低 端的嵌入式应用。在应用中,嵌入式微处理器具有体积小、重量轻、成本低、可靠性高的优点。嵌入式处理器目前主要有Am186/88、386EX、SC-400、power pC、68000、MIpS、ARM 等系列。
在早期实际的嵌入式应用中,芯片选择时往往以某一种微处理器内核为核心,在芯片内部集成必要的ROM/EpROM/Flash/EEpROM、SRAM、接口总线及总线控制逻辑、定时/计数器、WatchDog、I/O、串行口、脉宽调制输出、A/D、D/A 等各种必要的功能和外设。
二、实习设备
硬件:Embest EduKit-IV实验平台、ULINK2仿真器套件、pC机
软件:μVision IDE for ARM集成开发环境、Windows 98/2000/NT/Xp
三、实习目的1.初步掌握液晶屏的使用及其电路设计方法;掌握S3C2410X处理器的LCD控制器的使用;掌握通过任务调用的方法把液晶显示函数添加到uC/OS-II中;通过实验掌握液晶显示文本及图形的方法与程序设计。
2.了解S3C2410X处理器UART相关控制寄存器的使用; 熟悉ARM处理器系统硬件电路中UART接口的设计方法:掌握ARM处理器串行通信的软件编程方法。
3.掌握有关音频处理的基础知识;通过实验了解IIS音频接口的工作原理;通过实验掌握对处理器S3C2410X中IIS模块电路的控制方法;通过实验掌握对常用IIS接口音频芯片的控制方法。
4.了解μC/OS-II移植条件和内核基本结构;掌握将μC/OS-II内核移植到ARM9处理器上的方法和步骤。
四、实习要求
通过对μC/OS-II移植实验、μC/OS-II LCD显示实验、串口通信实验、IIS音频实验、液晶显示实验的学习,并将各部分内容合并,最终得出实习结果,实习要求在键盘上输入学号,在液晶显示屏上显示相应的学生信息。学生信息包括显示每个人的照片和姓名系别等,并用键控设置学生输出的顺序,输入学号就显示那个学生的信息,然后过一段时间就顺序循环播放。
移植μC/OS-II内核到ARM处理器S3C2410,在IDE中观察其运行状况编写S3C2410X处理器的串口通信程序;监视串行口UART1动作;将从UART1接收到的字符串回送显示。将从UART1接收到的字符串回送显示。
通过使用Embest EduKit-IV实验板的彩色液晶屏(800*480)进行电路设计,掌握液晶屏作为人机接口界面的设计方法,并编写任务函数在uC/OS-II系统中实现位图显示。在uC/OS-II中建立五个任务Tast1和Tast2,其中Tast1顺序熄灭四个LED,延迟一会在顺序点亮四个LED。Tast2在LCD屏幕上循环显示三幅图片,并打印一些文字信息和背景音乐。过使用Embest EduKit-III实验板的256 色彩色液晶屏(320x240)进行电路设计,掌握液晶屏作为人机接口界面的设计方法,并编写程序实现:画出多个矩形框;显示ASCII字符;显示汉字字符;显示彩色位图。
五、实习步骤
1.准备实验环境
使用ULINK2仿真器连接Embest EduKit-IV实验平台的主板JTAG接口;使用Embest EduKit-IV实验平台附带的交叉串口线,连接实验平台主板上的COM2和pC机的串口(一般pC只有一个串口,如果有多个请自行选择,笔记本没有串口设备的可购买USB转串口适配器扩充);使用Embest EduKit-IV实验平台附带的电源适配器,连接实验平台主板上的电源接口。
2.串口接收设置
在pC机上运行windows自带的超级终端串口通信程序,或者使用实验平台附带光盘内设置好了的超级终端,设置超级终端:波特率115200、1位停止位、无校验位、无硬件流控制,或者使用其它串口通信程序。(注:超级终端串口的选择根据用户的pC串口硬件不同,请自行选择,如果pC机只有一个串口,一般是COM1)
3.打开实验例程
1)打开实验程序
2)运行μVision IDE for ARM软件
3)默认打开的工程在源码编辑窗口会显示实验例程的说明文件readme.txt,详细阅读并理解实验内容。
4)工程提供了两种运行方式:一是下载到SDRAM中调试运行,二是固化到Nor Flash中运行。用户可以在工具栏Select Target下拉框中选择在RAM中调试运行还是固化Flash中运行。下面实验将介绍下载到SDRAM中调试运行,所以我们在Select Target下拉框中选择UART_Test IN RAM。
5)接下来开始编译链接工程,在菜单栏“projiet”选择“Build target”或者“Rebuild all target files”编译整个工程。
6编译完成后,在输出窗口可以看到编译提示信息,比如““.SDRAMUART_Test.axf”-0 Error(s), 1 Warning(s).”,如果显示“0 Error(s)”即表示编译成功。
7)拨动实验平台电源开关,给实验平台上电,单击菜单栏Debug->Start/Stop Debug Session项将编译出来的映像文件下载到SDRAM中,或者单击工具栏“”按钮来下载。
8)下载完成后,单击菜单栏Debug->Run项运行程序,或者单击工具栏“”按钮来全速运行程序。用户也可以使用进行单步调试程序。
9)全速运行后,用户可以在超级终端看到程序运行的信息。
10)用户可以Stop程序运行,使用μVision IDE for ARM的一些调试窗口跟踪查看程序运行的信息。注:如果在第4)步用户选择在Flash中运行,则编译链接成功后,单击菜单栏Flash->Download项将程序固化到NorFlash中,从实验平台的主板拔出JTAG线,给实验平台重新上电,程序将自动运行。
部分程序图:
串口通信实验:
IIS音频实验:
六、实习体会
在嵌入式系统中,除了课本上的基础知识外,还学会了软件编程的基本思路,掌握了液晶屏的使用及其电路设计方法;掌握有关音频处理的基础知识;掌握液晶显示文本及图形的方法与程序设计。
通过这次设计,掌握了液晶显示实验、μC/OS-II移植、μC/OS-IILCD显示的工作原理及串口通信实验的工作过程,学会了使用仿真软件Embest EduKit-IV实验平台及ULINK2仿真器套件,并学会通过应用软件仿真来实现各种通信系统的设计,对以后的学习和工作都起到了一定的作用,加强了动手能力和学业技能。虽然花了很长时间编写软件程序设计,但这一切还是理论上的。希望学校能提供机会和条件,让我们能够去真正地将理论和实践相结合。通过这次程序,感觉自己所掌握的知识是那么的有限,还有许多需要改进和不足的地方,同时也帮助了我怎样学好这门课程,增加了我对这门学科的兴趣。总体来说,这次实习我受益匪浅。在摸索该如何设计电路使之实现所需功能的过程中特别有趣,培养了我的设计思维,增加了实际操作能力。在让我体会到了设计电路的艰辛的同时,更让我体会到成功的喜悦和快乐。通过这次实习通信系统的设计,使我更加清楚以后的发展及学习的方向。
最后感谢老师这个学期的指导和帮助!
七、参考文献
《ARM9嵌入式系统设计与开发应用》熊茂华、杨震伦编著 清华大学出版社
《ARM9嵌入式系统设计与开发教程》于明编著 电子工业出版社
《Linux嵌入式系统教程》马忠梅 北京航空航天大学出版社
第五篇:嵌入式培训实习报告
第一天:
今天是我到杰普软件科技有限公司实习的第一天,也是我第一次接触到linux系统。虽然我以前就知道这个系统,但以前从没见过,现在第一次用感觉还不错。
老师在上课的时候还介绍了很多于linux的发展历史和强大的功能,所以对那个以后要一直用到的系统充满了期待。老师也讲了一些linux系统的组成,些简单的操作,linux分为内核,文件系统,和shell,shell是用来提供与内核交互界面的东西,所以以后的对inux的操作也就是在终端上输入shell命令来操作系统。
第二天:
今天主要讲了一些基本的操作命令,比如说在终端上输入pwd,就能显示当前的文件目录,输入ls,能显示当前目录的所有文件和目录,后面加些后缀就能显示更多的关于文件的信息,还有就是用touch命令来建立文件,用cp命令来复制文件和目录,mkdir命令来建立目录等等。用命令来操作看起来有点像DOS系统,不过比DOS操作起来更简单,并且功能比DOS强大太多了。总的来说今天收获还蛮大的。
第三天:
今天是讲基本操作命令的最后一天,这几天学下来感觉有点吃力了,因为这命令太多了,还有很多命令还有后缀,还有一些命令可以相互组合,而且学习中间还涉及到很多以前没有听过过的计算机术语,更是加大了学习的难度,不过在同学的相互帮助下克服了种种困难。
经过这一段时间的学习我们对linux的操作有了很大的提高,并且知道了很多计算机方面的知识,这对以后的进一步学习有很大的帮助。
第四天:
经过几天的学习,终于把linux的所有命令学完了。但是第一天老师提到过的shell还是没怎么理解是怎么回事,所以今天老师就重点讲了shell。Shell俗称壳(用来区别于核),是指“提供使用者使用界面的”软件“(命令解析器)。它类似于DOS下的command.com。它接收用户命令,然后调用相应的应用程序。同时它又是一种程序设计语言。Shell有好多种类型,其中比较常见的shell有Bourne shell,C shell,Kornv shell和 Bourne Again Shell,其中我们现在用的就是Bourne Again shell。
第五天:
前几天学习的命令太多,但一条命令只能让计算机做一件事,并
且每次要用的时候一次只能输一条语句,用起来很不方便。为了能让这些命令做更多事,并且提高执行效率,所以我们把一些命令写在脚本上,我们把这些叫shell脚本,shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。在写shell脚本的时候可以再里面加入判断,循环等语句,所以能把linux的操作效率大大的提高,功能也变得更强大。
第六天:
新的一年到了,我们也开始新的东西了,前几天学的只是操作,但是今天开始就要学习嵌入式开发的核心内容,那就是我们以前都学习过的c语言,不过以前学习的都忘得差不多了。最先学习的还是在linux平台下的编译环境,这里我们要用到种个叫VI的编译环境,他跟我们以前用的window环境下的vc++6.0有很大不同,用vi进行编译时候比vc++6.0复杂多了,要编译时候要输好几行命令,刚开始用的时候很不习惯,但用了几次以后就好多了。
第七天:
今天就要开始正式学习c语言了,C语言是嵌入式开发的基础,所以一定要把c语言给学好。虽然以前学习过c,但是学了跟没学差不多,所以一切都要重头开始学起,今天老师只讲了一些基本的,所以今天只讲了数据结构,不过比以前老师讲的更深入一些。这里讲课更以前学校里最大区别就是这里老师每讲一个程序,我们都要跟着动手敲出来。有一句话叫熟能生巧,所以只要我们肯动手,多动手就能把这东西学好。
第八天:
今天是年前学习的最后一天了,明天就要回家了,虽然回家的心情有点急切,但还是要把课给上完,今天还是在讲的是指针,指针是c语言的精华,但也是c语言中最难的,特别是指针跟数组,字符数组什么的结合在一起,弄得头都有点大了。所以老师讲了好几天,但是还有好多听不懂的,看来还是要加把劲。回到家里还是要多看一点书,多学一点是一点,尽量吧那些不懂得弄懂。
实习总结:
回想起这么多天的培训实习,感觉收获挺多的,学到了很多关于计算机的知识,还有一些以前在在课堂上学不到的一些东西。总的来说本次实习使我第一次亲身感受了所学知识与实际的应
用,理论与实际的相结合,让我们大开眼界,也算是对以前所学知识的一个初审吧!这次生产实习对于我们以后学习、找工作也真是受益菲浅。在这段时间里让我们初步让理性回到感性的重新认识,也让我们初步的认识了这个社会,对于以后做人所应把握的方向也有所启发。