人人范文网 实习报告

嵌入式实习报告(精选多篇)

发布时间:2020-07-16 08:36:29 来源:实习报告 收藏本文 下载本文 手机版

推荐第1篇:嵌入式实习报告

一、嵌入式系统开发与应用概述

在今日,嵌入式ARM 技术已经成为了一门比较热门的学科,无论是在电子类的什么领域,你都可以看到嵌入式ARM 的影子。如果你还停留在单片机级别的学习,那么实际上你已经落下时代脚步了,ARM 嵌入式技术正以几何的倍数高速发展,它几乎渗透到了几乎你所想到的领域。本章节就是将你领入ARM 的学习大门,开始嵌入式开发之旅。以嵌入式计算机为技术核心的嵌入式系统是继网络技术之后,又一个IT领域新的技术发展方向。由于嵌入式系统具有体积小、性能强、功耗低、可靠性高以及面向行业具体应用等突出特征, 目前已经广泛地应用于军事国防、消费电子、信息家电、网络通信、工业控制等各个领域。嵌入式的广泛应用可以说是无所不在。

嵌入式微处理器技术的基础是通用计算机技术。现在许多嵌入式处理器也是从早期的PC 机的应用发展演化过来的,如早期PC 诸如TRS-80、Apple II 和所用的Z80 和6502 处理器,至今仍为低 端的嵌入式应用。在应用中,嵌入式微处理器具有体积小、重量轻、成本低、可靠性高的优点。嵌入式处理器目前主要有Am186/8

8、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 Seion项将编译出来的映像文件下载到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仿真器套件,并学会通过应用软件仿真来实现各种通信系统的设计,对以后的学习和工作都起到了一定的作用,加强了动手能力和学业技能。虽然花了很长时间编写软件程序设计,但这一切还是理论上的。希望学校能提供机会和条件,让我们能够去真正地将理论和实践相结合。通过这次程序,感觉自己所掌握的知识是那么的有限,还有许多需要改进和不足的地方,同时也帮助了我怎样学好这门课程,增加了我对这门学科的兴趣。总体来说,这次实习我受益匪浅。在摸索该如何设计电路使之实现所需功能的过程中特别有趣,培养了我的设计思维,增加了实际操作能力。在让我体会到了设计电路的艰辛的同时,更让我体会到成功的喜悦和快乐。通过这次实习通信系统的设计,使我更加清楚以后的发展及学习的方向。

最后感谢老师这个学期的指导和帮助!

推荐第2篇:嵌入式毕业实习报告

嵌入式系统 毕业实习报告

院: 电子与电气工程学院 专

业: 电子信息工程 班

级: 电子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 /*引导程序*/

| | |--compreed /*内核解压缩*/ | |--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命令用于编译生成压缩形式的内核镜像,当编译成功后,就会在arch\\arm\\boot\\目录下生成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”, 静态链接 Cro 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仿真器套件,并学会通过应用软件仿真来实现各种通信系统的设计,对以后的学习和工作都起到了一定的作用,加强了动手能力和学业技能。虽然花了很长时间编写软件程序设计,但这一切还是理论上的。希望学校能提供机会和条件,让我们能够去真正地将理论和实践相结合。通过这次程序,感觉自己所掌握的知识是那么的有限,还有许多需要改进和不足的地方,同时也帮助了我怎样学好这门课程,增加了我对这门学科的兴趣。总体来说,这次实习我受益匪浅。在摸索该如何设计电路使之实现所需功能的过程中特别有趣,培养了我的设计思维,增加了实际操作能力。在让我体会到了设计电路的艰辛的同时,更让我体会到成功的喜悦和快乐。通过这次实习通信系统的设计,使我更加清楚以后的发展及学习的方向。

推荐第3篇:嵌入式培训实习报告

第一天:

今天是我到杰普软件科技有限公司实习的第一天,也是我第一次接触到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语言中最难的,特别是指针跟数组,字符数组什么的结合在一起,弄得头都有点大了。所以老师讲了好几天,但是还有好多听不懂的,看来还是要加把劲。回到家里还是要多看一点书,多学一点是一点,尽量吧那些不懂得弄懂。

实习总结:

回想起这么多天的培训实习,感觉收获挺多的,学到了很多关于计算机的知识,还有一些以前在在课堂上学不到的一些东西。总的来说本次实习使我第一次亲身感受了所学知识与实际的应

用,理论与实际的相结合,让我们大开眼界,也算是对以前所学知识的一个初审吧!这次生产实习对于我们以后学习、找工作也真是受益菲浅。在这段时间里让我们初步让理性回到感性的重新认识,也让我们初步的认识了这个社会,对于以后做人所应把握的方向也有所启发。

推荐第4篇:嵌入式系统实习报告

一、嵌入式系统开发与应用概述

在今日,嵌入式ARM 技术已经成为了一门比较热门的学科,无论是在电子类的什么领域,你都可以看到嵌入式ARM 的影子。如果你还停留在单片机级别的学习,那么实际上你已经落下时代脚步了,ARM 嵌入式技术正以几何的倍数高速发展,它几乎渗透到了几乎你所想到的领域。本章节就是将你领入ARM 的学习大门,开始嵌入式开发之旅。以嵌入式计算机为技术核心的嵌入式系统是继网络技术之后,又一个IT领域新的技术发展方向。由于嵌入式系统具有体积小、性能强、功耗低、可靠性高以及面向行业具体应用等突出特征, 目前已经广泛地应用于军事国防、消费电子、信息家电、网络通信、工业控制等各个领域。嵌入式的广泛应用可以说是无所不在。

嵌入式微处理器技术的基础是通用计算机技术。现在许多嵌入式处理器也是从早期的pC 机的应用发展演化过来的,如早期pC 诸如TRS-80、Apple II 和所用的Z80 和6502 处理器,至今仍为低 端的嵌入式应用。在应用中,嵌入式微处理器具有体积小、重量轻、成本低、可靠性高的优点。嵌入式处理器目前主要有Am186/8

8、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编译完成后,在输出窗口可以看到编译提示信息,比如“\".\\SDRAM\\UART_Test.axf\" - 0 Error(s), 1 Warning(s).”,如果显示“0 Error(s)”即表示编译成功。

7)拨动实验平台电源开关,给实验平台上电,单击菜单栏Debug->Start/Stop Debug Seion项将编译出来的映像文件下载到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嵌入式系统教程》马忠梅 北京航空航天大学出版社

推荐第5篇:暑假嵌入式实习报告.

一、嵌入式的概述: 随着信息化技术的发展和数字化产品的普及,以计算机技 术、芯片技术和软件技术为核心的嵌入式系统再度成为当前 研究和应用的热点,通信、计算机、消费电子技术(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 体系结构及其基本编程知识,包括指令 分类,寻址方式、指令集、存储系统、异常中断处理、汇 编语言以及 C\\C++和汇编语言的混合编程等知识。 同时结合 ARM 嵌入式开发板硬件设计原理和基本硬件设计流程, 分析 各种外设的工作原理和驱动机制,并自己动手实践完成一 个 ARM 开发板上的编程大作业。

第六阶段 嵌入式 Linux 开发基础及高级应用

主要介绍嵌入式 Linux 开发应用程序的基本流程和知 识,包括嵌入式 Linux 基本概念和开发流程、Bootloader 工作原理、内核裁减配置和交叉编译、根文件系统制作、网络编程以及图形界面和数据库开发等知识。同时独立完 成一个基于嵌入式 Linux GUI的应用编程大作业。

第七阶段 嵌入式 Linux驱动理论及驱动程序开发实践 主要介绍嵌入式 Linux 上驱动程序开发规范,包括设备 驱动程序概念、字符设备驱动程序、块设备与网络设备、网卡驱动以及常用嵌入式设备驱动开发等知识。同时独立 实现两种嵌入式设备驱动程序的编写,包括驱动模块的调 试和加载以及完整的项目开发文档的编写。

第八阶段 嵌入式 Linux 项目团队开发实践锻炼

主要包括设计并实现一个真实和完整的嵌入式项目的 开发流程,涉及到数据采集、网络通讯、图形用户界面显 示以及嵌入式数据库存储系统等多种嵌入式 Linux 编程技 术。要求学员建立起团队开发和协同工作的企业项目开发 模式的概念和流程,强化学员对编写项目概要设计文档和 详细设计文档的理解,为就业前的职业技能和素质训练做 好充分准备。

五、实习心得: 通过本次实习对 ARM9嵌入式系统设计有了更深一步的 了解,知道了如何使用 uc/os软件进行编程编译,并下载到 实验箱中,使图像、声音、文字得以显示,学会了转换 IIS 声音文件的工具:ProcBmp.exe 和转换 bmp 图片文件的工具: Image2Lcd ,使其能够在程序中运行。更重要的是学会了如 何解决在实习中遇到的各种问题并很好的解决,为以后使用 该软件进行编程打下了坚实的基础,也培养了自己对该软件 的兴趣,大四的学生正面临找工作的压力,通过这次实习积 累了经验,对找工作也起到了辅助的作用,希望能够有机会 对该软件进行进一步的学习研究。最后感谢指导老师和同学 们的细心帮助。

推荐第6篇:暑假嵌入式实习报告

一、嵌入式的概述:

随着信息化技术的发展和数字化产品的普及,以计算机技术、芯片技术和软件技术为核心的嵌入式系统再度成为当前研究和应用的热点,通信、计算机、消费电子技术(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体系结构及其基本编程知识,包括指令分类,寻址方式、指令集、存储系统、异常中断处理、汇编语言以及C\\C++和汇编语言的混合编程等知识。同时结合ARM嵌入式开发板硬件设计原理和基本硬件设计流程,分析各种外设的工作原理和驱动机制,并自己动手实践完成一个ARM开发板上的编程大作业。

第六阶段嵌入式Linux开发基础及高级应用

主要介绍嵌入式Linux开发应用程序的基本流程和知识,包括嵌入式Linux基本概念和开发流程、Bootloader工作原理、内核裁减配置和交叉编译、根文件系统制作、网络编程以及图形界面和数据库开发等知识。同时独立完成一个基于嵌入式Linux GUI的应用编程大作业。

第七阶段嵌入式 Linux驱动理论及驱动程序开发实践

主要介绍嵌入式Linux上驱动程序开发规范,包括设备驱动程序概念、字符设备驱动程序、块设备与网络设备、网卡驱动以及常用嵌入式设备驱动开发等知识。同时独立实现两种嵌入式设备驱动程序的编写,包括驱动模块的调试和加载以及完整的项目开发文档的编写。

第八阶段嵌入式Linux项目团队开发实践锻炼主要包括设计并实现一个真实和完整的嵌入式项目的开发流程,涉及到数据采集、网络通讯、图形用户界面显示以及嵌入式数据库存储系统等多种嵌入式Linux编程技术。要求学员建立起团队开发和协同工作的企业项目开发模式的概念和流程,强化学员对编写项目概要设计文档和详细设计文档的理解,为就业前的职业技能和素质训练做好充分准备。

五、实习心得:

通过本次实习对ARM9嵌入式系统设计有了更深一步的了解,知道了如何使用uc/os软件进行编程编译,并下载到实验箱中,使图像、声音、文字得以显示,学会了转换IIS声音文件的工具:ProcBmp.exe和转换bmp图片文件的工具:Image2Lcd,使其能够在程序中运行。更重要的是学会了如何解决在实习中遇到的各种问题并很好的解决,为以后使用该软件进行编程打下了坚实的基础,也培养了自己对该软件的兴趣,大四的学生正面临找工作的压力,通过这次实习积累了经验,对找工作也起到了辅助的作用,希望能够有机会对该软件进行进一步的学习研究。最后感谢指导老师和同学们的细心帮助。

推荐第7篇:嵌入式 电子类 实习报告

目录

一、实习目的 ......................1

二、实习任务 ......................1

三、实习内容 ......................1

四、实习总结 ......................

3一、实习目的

我于2012年2月27日至2011年3月18日期间在XXXX有限公司进行了为期20天的实习。实习期间主要是对在学校期间所学的知识进行巩固,以及对今后融入社会及以后的生活进行初期的锻炼。主要熟悉公司在日常事务处理,研发技术,人事方面的流程。了解公司对人才素质的要求,并使自己努力达到这个要求。

学习探索嵌入式控制系统研发过程中会出现的问题,以及寻找解决办法。进行嵌入式电路设计、程序设计在工程项目中的实践。

XXXX有限公司是一家以嵌入式解决方案为主的科技型企业,虽然成立不久,但发展迅速,已经帮助天津地区一些大中小型企业解决了自动化控制问题,为这些企业提高了生产率、带来了更多的经济效益。同时加强科技研发的投入,致力于解决家庭用户、企业用户的自动化需求。

二、实习任务

了解对于硬件电路设计、嵌入式系统设计等方面的工作,熟悉项目研发流程,学习实际项目中、工作中需要运用到的知识、技巧。学习具体项目中各个环节的配合,掌握具体实际操作。

大致分为两个阶段,第一个阶段:理论知识复习巩固。这阶段主要对公司的大致信息进行了解,学习研发产品的基础理论。第二阶段:实践阶段。这阶段主要在师傅的带领下,学习并且做些力所能及的事情。

三、实习内容

实习期间,我在XXXX有限公司实习,将我在学校所学习的知识进行了一系列的实践,尤其是在硬件电路的设计、单片机程序上面有了更深一步的了解,能够完成一些常用的电路设计、以及简单的嵌入式系统开发。

我们本专业虽然对硬件电路只要求了解能够使用即可,但是我对硬件电路、嵌入式系统拥有浓厚的兴趣,所以我在学校学习了电路只是以后对其进行了更加深入的研究。这也就使得我在公司中可以发挥自己所爱,将自己学习的东西进行实践。

由于自己的兴趣,以及公司的战略方向,我一进公司就被安排到了研发部进行实习。来到研发部,首先对我们进行了三天的紧张的培训。这三天的培训,不仅向我们介绍了公司的大致信息、整体架构,还对我在学校学习的电路,数字逻辑电路,模拟电路以及嵌入式系统等基础知识进行了一系列的巩固复习。虽然时间很短暂,但这三天紧张的复习,让我了解到:自己在学校所学习的知识还是不够的,很多内容仅仅停留在理论层面,

进行实际操作,还需要不断的学习,实践。

三天的巩固复习之后,我参加了公司应用电路的设计,在设计的工程中遇到了不少的问题。这些问题都是我以前自己学习的时候没有遇到过的问题。在设计电路的时候都是会有一些固定的模块,只要熟悉的掌握这些模块,并且在实际的设计中能够运用到这些模块就会使得设计电路变成一件非常容易的事情。

在电路设计之后,我又被安排到嵌入式系统方向进行具体实践,在公司老员工的带领下,激发了我对嵌入式系统的强烈热情。在跟着老员工学习的过程中,我发现了自己原本程序语言知识的不足,以及要进行嵌入式开发不仅仅局限于语言、逻辑,更是具体电路,项目功能以及逻辑思维的综合体现。

大学给予我很多,包括能力,包括知识,正是有了这些积累才能让我在公司实习期间能够完成简单的电路设计、程序编写。大学学习了很多不可或缺的基础知识,比如基础的电路知识,数字与逻辑电路,模拟电路,C语言这都是让我受用无穷的。公司内的电路设计与这些都是息息相关。虽然说真正项目中用到的大多数知识在学校内都没有接触过,但这些知识都是对课本基础的一个扩展而已,并没有什么完全新鲜与陌生的东西。

举例而言,学习数字逻辑电路的时候也就是学习了一些0和1的事情,而在实际的应用中,我们就要在0和1与高低电平中间进行联系,实现应用程序控制电路中的元器件。可能工作中的一点失误,就会造成很大的损失。虽然实际应用与理论存在的很大的差异,但是,我认为0和1的的关系是电路中最重要的一个部分。只有认真的了解到0和1的关系才能在电路的设计中不至于模糊概念。以实现电路的最优设计。

在具体的项目实战中,主要涉及到的知识还是上面所说到的各种电路知识,这些知识以前都或多或少的接触过,并且都是应用级的,没有什么高深得难以理解的东西,所以上手还不是很困难。做电路的设计时,最主要的还是电路模块的应用于联系,只有很好的应用,联系各个模块才能设计好最优的电路。而对于嵌入式程序的编写,需要综合电路和具体的功能要求,所以在整体设计时,需要统筹各个方面,进行良好的沟通,才能完善整体项目。

短短的20天,我见证了一个产品从无到有,从雏形到产品的过程,在这个过程中自己不仅学到了很多,而且令自己自豪的是自己也参与了其中很多部分,完成了很多以前自己不敢想象的工作。

时间飞快,寒假转瞬即逝,面对最后半年的校园生活,想着刚刚过去的最后一个寒假,紧张沉默之后更多的是感慨,即将踏入社会的我们,面对的是迅速的角色转变,紧

张的人际关系。残酷冰冷的社会同时又是情义温暖的社会,我们需要在这样两重的社会驻足、前进,同时又不断的回头看着我们逝去的青春。短短的20天,让我成熟了不少,脱离了一些学校时的稚气,增加了一些社会上的历练。

四、实习总结

走出校园,走进社会,所面临的最大的挑战就是心态,再没有像校园那样温暖的保护伞,要赚的每一分钱都需要你去辛勤的劳动。在校园内,时不时会自我感觉良好,出去,在更大的竞争环境下,才感觉到自己的力量真的是很渺小。只有通过不断的勤奋,努力,思考,才能够成长,才能够闯出一片天地来。

电路的设计追求的是不断的完善,不断的提供最好的设计,而这就需要不断的充实自己的电路知识,不断的了解新的电路模块,以及同类模块中对各种不同的需求的设计的优势以及缺点。这就是我所欠缺的东西,这些东西不是一朝一夕就能够了解的,只有通过不断的学习,不断的积累才能够完成的。

虽然在二十天的实习中,我们所学到的对于技术人员而言,知识皮毛中的皮毛,但是凡事都有一个过程,我们所学到的都是基本的基本,而技术人员也是从简单到复杂“进化”而来的。

在工作中注重的不仅仅是技术,更是一种好的工作态度,工作方法,工作习惯。 总的来说,想要完善工作大致分为下面几个方面:

1) 交流。工作中最需要的就是交流,因为每个人的想法不尽相同,若没有及时的

交流,对于各个部门的协调工作都是不利的

2) 主动。被动的工作总是不能吊起人的兴趣,若有什么创意、想法,需要主动出

3) 付出。不要害怕付出,付出的多不一定是坏事情,付出的同时,自己也获得了

很多收获,虽然大部分是看不到的收获

4) 自信。工作中充满自信,相信自己是最好的,才能做出最好的事情,如果连自

己都不信任,那就不会有人相信你

5) 专业。相关的专业知识必须要了解,只有了解更多的专业知识,才能做出更好

的东西,要注重专业基础

6) 礼貌。人与人的第一好感大多出于见面、用餐时的礼节,任何时候都需要对任

何人以礼相待

不久,我们就要踏出学校,走入社会了,而在走入社会以后,我们的知识将会发挥

更加重要的作用,只有更加充分,全面的了解所要应用的东西才能使自己在这个社会中立足。拥有自己的一席之地。所以在以后我会不断的扩充自己的学习范围,深入嵌入式控制系统的学习,然后对整体控制方案进行设计,以满足不同的用户的需求。

最后,感谢学校和公司,提供了这么宝贵的实习经历,让我们提前走出校园进入社会,感受到了人与人之间的微妙关系,了解了工作上的严格要求、流程、懂得合作精神及虚心学习,得到了课堂里边得不到也想不到的知识,也许将来不会走上这个岗位,但是现在所学的知识和感受却是终身难忘。虽然脏点雷电,这些都无所谓,重要的是我们有了收获、也有了成果。

推荐第8篇:嵌入式报告

引言 ...............................................................................................................................2 1.ARM概述 .................................................................................................................2 2.芯片介绍 ..................................................................................................................2

2.1............................................................................................................................2 3.显示方式选择方案与论证 ......................................................................................3 4.硬件设计 ..................................................................................................................4

4.1............................................................................................................................4 4.2 电路原理图 .....................................................................................................4 5.软件设计 ..................................................................................................................5 6.心得体会 ..................................................................................................................6 参考文献 .......................................................................................................................7

1 引言

随着信息技术和网络技术的高速发展,嵌入式产品日益广泛地渗透到各个行业和领域。嵌入式系统被定义为:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本,体积、功耗严格要求的专用计算机系统。嵌入式系统通常包括硬件和操作系统两部分,硬件是构成软件的基本运行环境。

到目前为止,ARM微处理器及技术的应用几乎已经深入到各个领域,如工业控制领域,无线通讯领域,网络应用,消费类电子产品。此外,ARM微处理器及技术还应用到许多不同的领域,并会在将来取得更加广泛的应用。

1.ARM概述

ARM(Advanced RISC Machines),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。

ARM 微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM 技术的微处理器应已经渗入到我们生活的各个方面。

2.芯片介绍

2.1LPC2132简介

芯片概述:

LPC2131/2132/2138是基于一个支持实时仿真和嵌入式跟踪的32/16 位ARM7TDMI-STM CPU 的微控制器,并带有32kB、64kB、512 kB 的嵌入的高速Flash 存储器。128 位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行。

2 LPC2132G功能方框图如图2-1所示

图2-1 LPC2132G功能方框图

本设计使用2块4位共阴LED数码管作为显示模块。

3.显示方式选择方案与论证

采用LED数码管动态扫描显示方法,是指一位一位地轮流点亮每位显示器(称为扫描),即每个数码管的位选被轮流选中,多个数码管公用一组段选,段选数据仅对位选选中的数码管有效。对于每一位显示器来说,每隔一段时间点亮一次。显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。通过调整电流和时间参数,当动态扫描频率加大到一定范围时可以既保证亮度,又保证显示。动态显示对IO的利用率相对教高。

3 4.硬件设计

4.1 电路设计原理

RSPI是一种高速的、全双工、同步的通信总线,且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便。SPI还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。不同的SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义。

SPI总线工作的四种方式如图4-1所示,其中使用的最为广泛的是SPI0和SPI3方式(实线表示):

图4-1 SPI总线四种工作方式

SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性对传输协议没有重大的影响:CPOL=0时串行同步时钟的空闲状态为低电平; CPOL=1,串行同步时钟的空闲状态为高电平;

时钟相位能够配置用于选择两种不同的传输协议之一进行数据传输:CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样; CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。

SPI主模块和与之通信的外设备时钟相位和极性应该一致。 4.2 电路原理图

4 P1.24-P1.31口作为数码管数据输出口,外接上拉电阻后分别连接到两个数码管的段选端上。P0.0-P1.7口作为数码管位选控制口,分别接到2个4位共阴数码管的共8个位选端上。另外,LPC2138的1-

4、

6、

8、

10、12脚接+3.3V电源。

14、

16、

18、20脚接+5V电源。

5、

7、

9、

11、

13、

15、

17、

19、37-40脚接GND。电路原理图如图4-2所示。

图4-2 总电路原理图

5.软件设计

程序流程图如图5-1所示

图5-1 程序流程图

6.心得体会

本次嵌入式系统设计有学生自主命题,开放性大,范围广但是这同时对于每一个同学来说都是一个不小的挑战。

此次设计为基于嵌入式ARM的电子秒表的设计,在设计中以LPC2132为核心的核心板来设计电子秒表。在设计中为解决问题需自己查阅资料,

6 是自己更多更深入的去了解和使用嵌入式系统来完成设计,加深了对嵌入式系统的认识,也激起了自己对嵌入式系统的兴趣。

本次设计的难点关键在于对于ARM系统人士的不足,对于嵌入式系统的不了解,以及对于各种芯片的使用方法不能灵活运用使得设计中问题不断。

参考文献

[1] 崔更申,孙安青.ARM嵌入式系统开发与实践[M].北京:中国电力出版社,2008 [2] 张绮文.ARM 嵌入式常用模块与综合系统设计实例精讲[M].北京:电子工业出版社, [3] 刘同法,肖志刚.ARM Cortex-M3内核微控制器快带入门与应用.北京:北京航空航天大学出版社,2009 [4] 三恒星科技.ARM 7易学通[M].北京:人民邮电出版社,2006 [5] Steve Furber著;田泽等译.ARM SoC体系结构[M].北京:北京航空航天大学出版社,2002 [6] 滕英岩.嵌入式系统开发基础——基于ARM位处理器和Linux操作系统[M].北京:电子工业出版社,2008 [7] http://baike.baidu.com/

推荐第9篇:嵌入式报告

题目:嵌入式系统学习心得

班级:学号:姓名:

1.嵌入式的发展 A.简单操作系统阶段

20世纪80年代,随着微电子工艺水平的提高,IC制造商开始把嵌入式应用中所需要的微处理器、I/O接口、串行接口以及RAM、ROM等部件统统集成到一片VLSI中,制造出面向I/O设计的微控制器,并一举成为嵌入式系统领域中异军突起的新秀。与此同时,嵌入式系统的程序员也开始基于一些简单的\"操作系统\"开发嵌入式应用软件,大大缩短了开发周期、提高了开发效率。

这一阶段嵌入式系统的主要特点是:出现了大量高可靠、低功耗的嵌入式CPU(如Power PC等),各种简单的嵌入式操作系统开始出现并得到迅速发展。此时的嵌入式操作系统虽然还比较简单,但已经初步具有了一定的兼容性和扩展性,内核精巧且效率高,主要用来控制系统负载以及监控应用程序的运行。

B.实时操作系统阶段

20世纪90年代,在分布控制、柔性制造、数字化通信和信息家电等巨大需求的牵引下,嵌入式系统进一步飞速发展,而面向实时信号处理算法的DSP产品则向着高速度、高精度、低功耗的方向发展。随着硬件实时性要求的提高,嵌入式系统的软件规模也不断扩大,逐渐形成了实时多任务操作系统(RTOS),并开始成为嵌入式系统的主流。

这一阶段嵌入式系统的主要特点是:操作系统的实时性得到了很大改善,已经能够运行在各种不同类型的微处理器上,具有高度的模块化和扩展性。此时的嵌入式操作系统已经具备了文件和目录管理、设备管理、多任务、网络、图形用户界面(GUI)等功能,并提供了大量的应用程序接口(API),从而使得应用软件的开发变得更加简单。

C.面向Internet阶段

21世纪无疑将是一个网络的时代,将嵌入式系统应用到各种网络环境中去的呼声自然也越来越高。目前大多数嵌入式系统还孤立于Internet之外,随着Internet的进一步发展,以及Internet技术与信息家电、工业控制技术等的结合日益紧密,嵌入式设备与Internet的结合才是嵌入式技术的真正未来。

信息时代和数字时代的到来,为嵌入式系统的发展带来了巨大的机遇,同时也对嵌入式系统厂商提出了新的挑战。目前,嵌入式技术与Internet技术的结合正在推动着嵌入式技术的飞速发展,嵌入式系统的研究和应用产生了如下新的显著变化:

新的微处理器层出不穷,嵌入式操作系统自身结构的设计更加便于移植,能够在短时间内支持更多的微处理器。

嵌入式系统的开发成了一项系统工程,开发厂商不仅要提供嵌入式软硬件系统本身,同时还要提供强大的硬件开发工具和软件支持包。

通用计算机上使用的新技术、新观念开始逐步移植到嵌入式系统中,如嵌入式数据库、移动代理、实时CORBA等,嵌入式软件平台得到进一步完善。

各类嵌入式Linux操作系统迅速发展,由于具有源代码开放、系统内核小、执行效率高、网络结构完整等特点,很适合信息家电等嵌入式系统的需要,目前已经形成了能与Windows CE、Palm OS等嵌入式操作系统进行有力竞争的局面。网络化、信息化的要求随着Internet技术的成熟和带宽的提高而日益突出,以往功能单一的设备如电话、手机、冰箱、微波炉等功能不再单一,结构变得更加复杂,网络互联成为必然趋势。

2.嵌入式的应用

嵌入式系统主要用于各种信号处理与控制,目前已在国防、国民经济及社会生活各领域普遍采用,可用于企业、军队、办公室、实验室以及个人家庭等各种场所。同时,嵌入式系统作为数字化电子信息产品的核心,嵌入式计算机断层成像系统已出口日本。

军用

各种武器控制(火炮控制、导弹控制、智能炸弹制导引爆装置)、坦克、舰艇、轰炸机等陆海空各种军用电子装备,雷达、电子对抗军事通信装备,野战指挥作战用各种专用设备等。

家用

各种信息家电产品,如数字电视机,机顶盒,数码相机,VCD、DVD 音响设备,可视电话,家庭网络设备,洗衣机,电冰箱,智能玩具等。

工业用

各种智能测量仪表、数控装置、可编程控制器、控制机、分布式控制系统、现场总线仪表及控制系统、工业机器人、机电一体化机械设备、汽车电子设备等。商用

各类收款机、POS 系统、电子秤、条形码阅读机、商用终端、银行点钞机、IC 卡输入设备、取款机、自动柜员机、自动服务终端、防盗系统、各种银行专业外围设备。

办公用

复印机、打印机、传真机、扫描仪、激光照排系统、安全监控设备、手机、寻呼机、个人数字助理(PDA)、变频空调设备、通信终端、程控交换机、网络设备、录音录像及电视会议设备、数字音频广播系统等。

医用电子设备

各种医疗电子仪器,X 光机、超声诊断仪、计算机断层成像系统、心脏起搏器、监护仪、辅助诊断系统、专家系统等。

3.嵌入式的特点

嵌入式处理器的应用软件是实现嵌入式系统功能的关键,对嵌入式处理器系统软件和应用软件的要求也和通用计算机有所不同,主要有以下几点:

(1)软件要求固态化存储为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或嵌入式微控制器本身中,而不是存贮于磁盘等载体中。

(2)软件代码要求高质量、高可靠性尽管半导体技术的发展使处理器速度不断提高、片上存储器容量不断增加,但在大多数应用中,存储空间仍然是宝贵的,还 存在实时性的要求。为此要求程序编写和编译工具的质量要高,以减小程序二进制代码长度、提高执行速度。

(3)系统软件(OS)的高实时性是基本要求在多任务嵌入式系统中,对重要性各不

相同的任务进行统筹兼顾的合理调度是保证每个任务及时执行的关键,单纯通 过提高处理器速度是无法完成和没有效率的,这种任务调度只能由优化编写的系统软件来完成,因此系统软件的高实时性是基本要求。

(4)多任务操作系统是知识集成的平台和走向工业化标准化道路的基础,嵌入式系统开发需要开发工具和环境嵌入式系统本身不具备开发能力,即使设计完成 以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发,这些工具和环境一般是基于通用计算机上的软硬件设备以及各种逻辑分析仪、混合信号示波器等。

(5)嵌入式系统软件需要实时多任务操作系统开发平台(RTOS)通用计算机具有完善的操作系统和应用程序接口,是计算机基本组成不可分离的一部分,应用程序的开发以及完成后的软件都在Os平台上面运行,但一般不是实时的。嵌入式系统则不同,应用程序可以没有操作系统直接在芯片上运行:但是为了合理地调度多任务、利用系统资源,用户必须自行选配RTOS开发平台,这样才能保证程序执行的实时性、可靠性,并减少开发时间,保障软件质量。

(6)在嵌入式系统的软件开发过程中,采用C语言将是最佳和最终的选择由于汇编语言是一种非结构化的语言,对于大型的结构化程序设计已经不能完全胜任了。这就要求我们采用更高级的C语言去完成这一工作。

4.实训内容简介

A.实训内容

1)嵌入式系统及AM软件介绍

2)Metrowerks CodeWarrior集成开发环境介绍

3)TESTI寄存器相加

4)GPIO 模 块

5)向量中断控制器(VIC)模块

6)定 时 器 s

7)L C D显示

8)实时操作系统简介

B.具体实例简介

a、

b、实验内容:LCD 实验步骤:

1).启动ADS1.2,使用ARM7 Executable Image for lpc2210工程模板建立一个工程LCD_Disphoto;

2).建立源文件lcddrive.c、lcddrive.h,编写液晶模块的驱动程序,然后将lcddrive.c添加的工程的user组中;

3).建立源文件test.c,编写实验程序,然后添加到工程的user组中;

4).修改config.h,增加包含LCDDRIVE.H头文件;#include“LCDDRIVE.H”

5.心得体会

通过本次实验,我也学会了如何去分析问题,如何找出自己设计中的不足,继而去排除解决问题,这就是一个自我学习的过程当我们通过实验去学习理论知识时,自己动手得出的结论,不仅能加深我们对嵌入式的理解,更能加深我们 对此的记忆

推荐第10篇:嵌入式报告

嵌入式实训报告

姓名:张龙班级:电气803学号:08010270

嵌入式系统学习体会

一、嵌入式发展前景

嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。像我们平常常见到的手机、PDA、电子字典、可视电话、VCD/DVD/MP3 Player、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等都是典型的嵌入式系统。

嵌入式系统是软硬结合的东西,搞嵌入式开发的人有两类。

一类是学电子工程、通信工程等偏硬件专业出身的人,他们主要是搞硬件设计,有时要开发一些与硬件关系最密切的最底层软件,如BootLoader、Board SupportPackage(像PC的BIOS一样,往下驱动硬件,往上支持操作系统),最初级的硬件驱动程序等。他们的优势是对硬件原理非常清楚,不足是他们更擅长定义各种硬件接口,但对复杂软件系统往往力不从心(例如嵌入式操作系统原理和复杂应用软件等)。

另一类是学软件、计算机专业出身的人,主要从事嵌入式操作系统和应用软件的开发。如果我们学软件的人对硬件原理和接口有较好的掌握,我们完全也可写BSP和硬件驱动程序。嵌入式硬件设计完后,各种功能就全靠软件来实现了,嵌入式设备的增值很大程度上取决于嵌入式软件,这占了嵌入式系统的最主要工作(目前有很多公司将硬件设计包给了专门的硬件公司,稍复杂的硬件都交给***或国外公司设计,国内的硬件设计力量很弱,很多嵌入式公司自己只负责开发软件,因为公司都知道,嵌入式产品的差异很大程度在软件上,在软件方面是最有“花头“可做的),所以我们搞软件的人完全不用担心我们在嵌入式市场上的用武之地,越是智能设备越是复杂系统,软件越起关键作用,而且这是目前的趋势。

二、嵌入式系统应用前景

随着计算机软件和集成电路技术的发展,嵌入式系统产品日益完善,在航天、航空、交通、网络、电子、通讯、金融、智能电器、智能建筑、仪器仪表、工业自动控制、数控机床、掌上型电脑、各种智能IC卡、第二代身份证验证、公共交通收费系统、医药系统以及军事等领域得到广泛应用,已成为我国信息化带动工业化,工业化促进信息化 发展的国民经济新的增长点在我国2006 年嵌入式软件产品占全年全部软件产值的23%还多.据调查显示,目前嵌入式系统涉及的领域中,PDA占30%,手机占18%,数字信息家电占21%,工业控制5%,服务行业占2%,交通系统占2%,其他占22%.目前最值得关注的嵌入式产品市场主要有如下几类:

1.信息家电

后PC时代,家用电器将向数字化和网络化发展,电视机、微波炉、数字电话等都将嵌入微处理器并通过家庭网关与Internet连接,构成家庭信息网络.届时, 人们可以远程控制家里的电器设备,可以实现远程医疗、远程教育, 可以视频点播,实现交互式电视,还可以提供各种网上服务等.一般可认为,那些低单价、操作简单、可通过因特网发送或获取信息, 将逐步分割或替代PC 的某些功能,并能

与其它信息产品交换资料或信息的产品可统称为信息家电.信息家电可以提供安全防范、消费电子产品的智能控制、交互式智能控制、家庭信息服务、自动维护、家庭医疗保健等服务.而这些服务中的各类数字融合产品,都离不开嵌入式系统的支持,可以说,嵌入式系统是家庭信息网络、IT 融合的重要技术基础.具有丰富功能、高度集成的智能数字终端将是未来的发展方向.智能数字终端和各类数字融合产品具有十分广阔的市场前景.

2.移动计算设备

移动计算设备包括手机、PDA、掌上电脑等各种移动设备.中国拥有最大的手机用户,市场巨大,而掌上电脑或PDA 由于易于使用、携带方便、价格便宜,近几年在我国得到了快速地发展.PDA 与手机也已呈现融合趋势, 智能手机正在成为今后的发展趋势方向, 智能手机就是一台嵌入式系统.智能手机要存放更多的软件和各种大容量的多媒体文件,必定要有操作系统, 目前智能手机操作系统主要有开源的Linux、微软公司的Windows CE系统和 Symbain 公司的 SymbainOs 系统.智能手机的功能越来越异常强大,为智能手机开发的各种功能程序已经在互联网上盛行.通过安装这些软件,可大大扩展手机的功能.

3.网络设备

各种网络设备包括路由器交换机、Web Server、网络接入网关等, 都是一类嵌入式系统.随着下一代Internet 的研发成功和投入使用,必然会有更多更强的嵌入式网络设备和产品面世,这意味着巨大的嵌入式网络设备和产品市场需求.嵌入式系统也在向无线网络发展,无线网络已开发集成了802.11 芯片组.无线嵌入式网络有望部署到住宅及商用建筑自动化、工业设备监测以及其他无线传感和控制应用中.ZigBee 联盟已经为低成本、低功率的无线嵌入式网络制定了标准.这项标准定义了在IEEE 802.15.4 标准媒体接入控制层和物理层上的网络及支持的应用服务.这项标准很适合照明、供暖、冷却控制、工业建筑、自动化以及医疗设备监测等方方面面的应用.ZigBee联盟的长期目标是能够建立基于互操作平台和配置文件的可伸缩、低成本的嵌入式基础架构.

4.自动化与测控仪器仪表

测控仪器仪表种类繁多,我国每年光进口的医疗设备就上亿, 每个医疗设备就是一套嵌入式系统.测控仪器仪表更是遍及大中小企业,新型的测控仪器仪表无一不是嵌入式系统.在工控和仿真领域,嵌入式设备也早已得到广泛应用.嵌入式系统在自动化行业已有很多成功应用案例,如数控机床控制系统、面向啤酒行业控制系统、水厂控制系统、缝纫机控制系统、可燃性气体报警系统、智能建筑安防系统、自动生产线分布式控制系统、变电站自动化系统、自动生产线检测系统等.我国的工业生产需要完成智能化、数字化改造,智能控制设备、智能仪表、自动控制等为嵌入式系统提供了巨大的市场.工控、仿真、数据采集、军用等领域一般都要求实时操作系统支持.在金融业、电力系统和服务业,嵌入式也在发挥着越来越重要的作用.

5.嵌入式技术在交通管理、环境监测中的应用

在交通系统,嵌入式的作用也日益重要.汽车智能驾驶设备、汽车模拟驾驶器、汽车喷油泵调试台、轮船智能驾驶设备等都面临更新换代.这类新型设备也都离不开嵌入式系统.我国汽车业的发展必然为汽车电子的嵌入式系统应用带来良好商机.嵌入式系统在交通指挥系统、高速公路收费监控、汽车自导航、GPS车载终端、电子警察、加油站和汽车检测中的应用都是非常广泛的,有良好的市场前景.在环境监测( 包括水文资料实时监测, 防洪体系及水土质量监测,堤坝安全,

地震监测网,实时气象信息网,水源和空气污染监测)中,嵌入式产品同样有着广泛的市场前景.

三、嵌入式系统的组成 1.底层(硬件层)

需要你自己对于硬件相当的了解,能够独立绘制PCB并进行焊接,之后调试板子,做好电路板。比如sc2410,你需要绘制至少四层PCB电路板,其中ARM核心板是最难掌握的部分,外围电路要注意各种走线技巧等等。绘制完PCB之后就需要你的焊接功夫。将元器件焊接在PCB上。最后调试电路板,这是这一层设计中的收尾工作,也是最具有挑战性的工作。调试电路需要大量的经验,对于初学者来说,需要很强的电路知识,对于硬件的性能以及应用要非常了解才行。

2.中间层(驱动层)

电路板已经有现成的。你需要编程使一个死的板子,活起来,就是把程序下载进去,能叫板子跑起来。这里需要你对于ARM芯片的结构有很好的掌握,要会读芯片资料(datasheet)通常都是英文的。了解其内部资源我们就可以进行驱动编程了。我们平时所使用单片机,一般都是写好的程序,各个管脚在什么时序下输出什么信号(1或0),来操作实现相应借口的外围设备,比如液晶屏、LED灯等。单片机也可以叫做简单的嵌入式。原理相同。ARM也可以向单片机一样使用,但我们更多的是要对ARM加入操作系统的,这才是我们最常说的嵌入式。加入操作系统了以后,芯片对于个个资源的调度有了更系统的统筹规划,可以更充分的利用ARM芯片的系统资源,提高性能,使资源合理分配。而通常的驱动是在操作系统下工作的。比如基于LINUX或WINCE等等下的驱动程序。驱动程序是链接硬件平台和操作系统的纽带,当然编写驱动要同时兼顾操作系统特点和硬件接口的特点。做驱动的开发,需要对于软硬件都要有所了解,其中更偏重操作系统的理解。这部分工作也是最难做的。

3. 上层(应用层):

应用层,即我们所说的软件编程了。就相我们手机里QQ和飞信一样,我们需要根据我们手机的操作系统来编写应用程序。对于各个开发板,我们同样需要根据它里边的系统进行应用开发。这部分,应该是几乎脱离硬件了,我们只需简单的了解硬件即可。我们只需深刻理解操作系统的中各个系统函数和接口函数,即可进行开发。需要很强的C++水平。

四、嵌入式系统的设计特点

嵌入式系统的开发通常采用“宿主机/目标机”方式。

宿主机(Host)是一台通用的计算机,一般是PC机。它通过串口或网络连接与目标机进行通信。

目标机(Target)常用在嵌入式系统的开发过程期间。目标机可以是嵌入式系统的实际运行环境,也可以是能替代实际环境的仿真系统。

首先,利用宿主机上丰富的设备资源以及良好的开发环境来开发和仿真调试目标机上的软件。

然后,通过UART接口或Ethernet接口将交叉编译生成的目标代码传输并下载到目标机上,并用交叉调试器在实时内核/操作系统或监控程序的支持下进行实时分析和调试。

最后,目标机在特定的环境下运行

五、体会

通过学习嵌入式的课程使我了解了什么是嵌入式,所谓嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通过实训课的训练不仅使我知道了嵌入式系统的组成及应用,而且拓展了自己的知识和动手能力也对自己今后的发展有很大的的帮助。

第11篇:嵌入式实习工作总结

嵌入式实习工作总结

在嵌入式公司经历三个月的工作实习已经结束了,在这三个月里,我和公司的职工以及领导都相处得很是融洽,大家对我也关怀备至,时常给我鼓励和帮助。下面,我将实习三个月的工作总结如下:

一、感想和体会

1、态度决定一切。

工作时一定要一丝不苟,认真仔细,一个职员在公司的大部分时间都是在工作的,这就要求他在这段时间内一定要小心谨慎,一丝不苟,不能老是出错, 有必要一定要检验自己的工作结果,以确保自己的万无一失.工作的时候我一直保持极大的工作热情,不仅顺利完成工作任务,工作之余还经常总结经验教训,不断提高工作效率,虽然工作中我也会犯一些错误,受到领导批评,但我认为这些错误和批评是能让我能在以后的工作中谨慎小心,提高工作效率。在和大家工作的这段时间里,他们严谨、认真的工作作风给我留下了很深刻的印象,我也从他们身上学到了很多自己缺少的东西。这次生产实习虽然说时间比较少,但是却让我了解了公司的企业文化、生产模式和质量体系管理等经验,这对我来说是很宝贵的。

2、勤于思考

在工作岗位上一定要勤于思考,不断改进工作方法,提高工作效率.公司的日常工作都会比较繁琐,而且几天下来也会比较枯燥,就是需要你多动脑筋,不断地想方设法改进自己的工作方法,提高工作效率,减少工作所需时间

3、不断学习

要不断的丰富自己的专业知识和专业技能。这会使你的工作更加得心应手。一个人在自己的职位上有所作为,一定要对自己职业的专业知识有所熟悉,对自己业务所在范围内的业务技能也要熟练掌握,这样才算是一位合格的技术人员。

二、工作成果与收获

在这三个月里,我作为一个质量改善技术人员,认真学习公司的质量管理流程,根据岗位职责的要求,主要有以下工作成果及收获:

1、物料筛选车间筛选工装的制作

完成的工装有:遥控器筛选工装3个,塑封电机筛选工装4台,铁壳电机筛选工装4台,电控测试工装4台,传感器筛选工装1台,PTC电加热筛选1台。在制作过程中,我深刻的感受到,想要做好合理实用的工装必须了解被测试的物料的质量、工艺和性能这三个方面,根据我以前的工作经验,这三个方面我已经掌握,所以我用自己的经验去做工装,很快的得到大家的认可。

2、筛选工装的完善和维护

a、工装完善方面:工装制作完成后,为了工装达到预期的效果,我不断的查看工装在使用过程中的不足,改善不足之处,力求工装在人员使用方面达到舒适、便捷;在工作效率方面达到快速有效。

b、维护方面:加强对工装使用人员的培训,让使用人员不仅会使用测试工装而且还会处理工装常见的问题。

3、外机预装和筛选工装CTQ的编制

a、外机预装CTQ编制是以流水线的方式制定的,所有元器件要根据工艺文件确认后,在通过自检、互检和质量工艺要求来保障产品质量的。分别编制了KFR-23W、KFR-35WG、KFR-72W三种常规机型。

b、筛选方面的CTQ是针对元器件的外观和基本性能,看元器件是否符合质量工艺要求。分别编制了遥控器CTQ、塑封电机CTQ、铁壳电机CTQ、温度传感器CTQ、PTC电加热CTQ。

4、指导外协厂的品质改善,分析与改良不良材料跟踪; a、对筛选车间统计的日报分析、生产下线分析日报分析

从分析表中可以看出各厂家物料的质量问题的波动,根据这个依据来指导外协厂家的品质改善,前期塑封电机噪音下线率高,新飞10027遥控器下线率高、铁壳电机下线率高,我参加了改善与跟踪,并编制了质量缺陷跟踪表。

b、对预装生产过程的出现的质量问题分析与改进

前期跟踪分析预装门开关电机下线率高的问题,并执行临时整改措施,运用质量分析---鱼骨图等工具来分析根本原因和直接原因,然后拿出永久的对策,接着执行及验证对策,最终防止再次发生或在其它产品上发生。通过这次改进,让我了解了公司的改进流程。

以上这些工作使我认识到质量改进是无极限的,产品只有更好,没有最好。

三、明确岗位职能,

根据岗位职责的要求,我的主要工作及学习任务是:

1、负责从样品到量产整个生产过程的产品质量控制,寻求通过测试、控制及改进流程以提升产品质量;

2、负责解决产品生产过程中所出现的质量问题, 处理品质异常及品质改善;

3、产品的品质状况跟进, 处理客户投诉并提供解决措施;

4、制定各种与品质相关的检验标准与文件;

5、指导外协厂的品质改善,分析与改良不良材料。

四、认识个人能力不足。

1、目前在产品的品质状况跟进, 处理客户投诉、品质相关检验标准制等方面存在不足,为了让自己做一个更称职的人员,一定努力学习并克服各种不足。

2、在与别人打交道方面由于性格等原因,缺乏主动性,但是在质量工作上,要别人接受你的意见,就需要具备良好的沟通能力,一定要主动积极,把沟通作为交流的桥梁。

五、今后自己努力方向

1、学无止境,各种学科知识日新月异。我将坚持不懈地努力学习各种技术知识,并用于指导实践。对现今空调制冷行业来说,变频空调技术的发展加速了高能效空调的淘汰步伐,在这方面我要加强自我学习。

2、光说不做,不行。在以后的工作中不断学习知识,通过多看、多学、多练来不断的提高自己的各项技能。从零部件的装配到整机下线所有的工艺流程和质量要求都需要一一掌握,这样才能不断的丰富自己,让自己不提前被这个竞争激烈的社会所淘汰

3、不断锻炼自己的胆识和毅力,提高自己解决实际问题的能力及沟通能力,并在工作过程中慢慢克服急躁情绪,积极、热情、细致地的对待每一项工作。

第12篇:实习总结嵌入式

实习总结

就在昨天3月9日,学校规定实习时间已经到期了。从上个月的13日到现在已经近一个月,虽然与公司的实习时间还没有结束,但是为了完成学校交待的任务,在此对这段时间的实习做一个总结。 首先,我先来简单介绍下实习单位。我实习的单位全称——上海宝信软件股份有限公司厦门分公司。其作为上海宝信软件中的重要一员,是宝信软件在全国多网点支持服务的延伸,具备与宝信软件上海总部相同的技术服务能力,并可无限制调用总部专家资源,秉承宝信软件“IT服务,提升信息价值”的经营理念,致力于IT服务,主营业务包括网络安全产品销售、系统集成、运维服务、软件工程等。 其次,向大家介绍是我的实习内容。这里要先介绍我的实习岗位——嵌入式软件开发工程师。实习内容大致分为两块,一是软件测试,二是编码。在我们刚来的前两周,我的实习内容就是软件测试。软件测试的主要内容是UnitTest也就是单元测试。但是,在实习刚开始的阶段,我并没有就马上做测试。而是有前辈给我发了一份我们要做的产品的功能书给我看。功能书文档是日文版的,我要把它看懂,才知道我们这里到底是做什么。后面的测试工作就是做单元测试了。 我们在做测试是有测试环境的,整个单元测试过程是有前人经验的。所以只要按照规则来就没有问题,也相对比较简单。就这样单元测试做了近8天左右,测试了51个c++函数。其实,单元测试比较简单,但是碰到函数的输入输出的值及路径多的时候,特别的烦,会影响测试效率。实习的另一个内容就是编码,其实说的确切一点,是看代码。一个刚来不到3周的新员工,以前又没有经验,公司怎么会放心让你写代码。有前辈给我安装了秀丸和Source Insight软件,然后给了我一代码,让我按上面看,有问题可以问组里的前辈。C++代码是看的懂,但是太多的函数,被调用的关系也不清楚,也不了解决函数的意义,所以感到很无趣。也许是在考验我的耐心或者是让我熟悉代码编写的规范。不管是什么目的,至少自己可以巩固下c++的基础。不过真的要感谢前辈的细心指导,使我大概了解程序的调用关系。

再次,向大学介绍下我的实习阶段的工作过程。每的8小时的上班时间,但是一般会比这个时间长的。早上8点45分到9点15分不等上班,晚上5点30分到6点不等下班,中午11点可以去吃饭、1点之前上班。这个时间还是比较人性化的。当然也有时候也要加班,如有时候日本客户来这里的时候,发现我们的人都很早下班的时候,他就会和我们的上级说,然后我们就得加班。这也是一种非常情况,但是加班是可以调休的。每天的上班时间基本上是跟电脑打交道。 前期实习阶段都是打开电子表格看日语版功能说明书,后面做测试的时间就是各种软件一起用了。每天做单元测试的时候,其实感觉特别烦。有时候一天做7到8个,有时候一天2个做不到。但是整个过程自己还是坚持下来了,虽然很累,自己还是很好强的。后期基本上是学习编程了。由于后面项目已经交互,所以每天都不没有加班了。每天的工作主要就是学习代码规范,如那里怎么缩进、命名之类的事。至于逻辑什么的,还是很不清楚,还需要努力多问多想。

再次,与大家分享下我的实习收获。虽然与原计划5个月的实习还差很远,但自己还是很有收获。其一,对于歌乐Audio项目有一定的了解。具体的表现在,分了几层。我个人是分配到app层,也就是业务应用层。虽然对业务的熟悉不够深,但大概知道,每一天前辈们都在做什么事。其二,日语方面的加强。因为客户方面基本上是日本人,所以加强日语学习是必须的。有了这样的一种压力,自动会转化为一种动力,促使我去学习。我想这样多少可以提高下我的日语能力。还有就是,常常有很多日本客户就做在我的旁边。感情还是很紧张,因为不知道怎么跟他交流。结果每一天他来的时候,我只能和他说声早上好。希望自己在今后的时间里要多多加强日语学习,争取与日本客户交流,才能提升自己的能力。其三,交流沟通能力的提高。其实自习也一直觉得沟通能力对成功贡献是最大,要把一件做成肯定不是一个人的事情,我们需要与别人沟通。在沟通中互相了解相联系的部分,这样才能够避免摩擦带来不必要时间与精力的浪费。而我自己的沟通能力提高表现在自我意识的提高。当遇到问题的时候,会主动的想想,是哪个具体的点不懂,然后列出问题,再向前辈请教。这样大脑里就会有一个逻辑过程。通过这样就可以把自己的意思清楚的传达给别人。在别人向自己传达信息的时候,我会边思考边听,遇到不了解的地方,讲明白自己的不解之处。这样这个沟通过程就会比较流畅。其四,职场意识的提高。可以说来实习就意味我们提前

毕业了,提前进入社会。所以,由学生到社会职业人的过渡期就被实习给填充了。经过一个月实习,我发现自己已经很习惯在公司工作。对于自己能做什么,未来能做什么也有了一定的思考。不管毕业,我还是留在这个公司还是去其他的公司,我想我心中已经有了这份意识,这对我将来的职业生涯都是有帮助的。其五,时间管理。很多人工作的时候就忘记了生活的存在,我们的生活是多彩的,并不是只有工作。其中,有一项转变的比较大,就是很多人不喜欢运动了。对于这些,我都是不太认可的。我还是会抽出时间出去运动一下。我觉得运动可以带给我健康,同时会让我的精神更好,工作更有效率。其实,运动并不会浪费我们时间,而是会给生活带更美好。

最后,与大家分享一下我这个月实习的心得与体会。通过这段时间的学习,从无知到认知,到深入了解,渐渐的我喜欢上这份工作,让我深刻的体会到学习的过程是最美的。在整个实习过程中,我每天都有很多的新的体会,新的想法,想说的很多,我总结下来主要有以下几点:

1、持之以恒

既然选择了自己的这份工作,不管工作本身怎么样,我们都要坚持往下走。因为我相信每一家公司的工作原理都是差不多的。如果你在这家公司做不住的话,我想你在另外一家公司也是做不住的。只有我们改变自己的态度,才可能战胜心中的浮躁。我们新人一来到公司我,一开始都不会立刻给工作我们做,-一般也都是先让我们看看文档或代码,时间短的要几天,时间长的要几周,在这段时间里很多人会觉得很无聊,没事可做,便觉没有发展空间,于是产生想走的念头。恰恰在这个关键的时候更需要我们的坚持,轻易放弃只会让自己后悔。

2、不怕做小事,那是一种考验

我们一来到公司实习的时候,很多组里的前辈多数还是把我们当学生看待。他们不会也不敢让我们直接参考到一个真正的项目中去。在这个其间一般会给我们看一些过去做过项目的文档和代码,其实不可小看这些小事,也许是为了考验我们,也许是让我们先了解业务。作为一人新人,一定要积极面对这些,勇于担当做小事,喜欢做小事。这样公司同事才会更快的接受你,慢慢地才会让你做一些重要的工作。

3 、态度端正,一定要多主动

我们到公司工作以后,要知道自己能否胜任这份工作,关键是看你自己对待工作的态度,态度对了,即使自己以前没学过的知识也可以在工作中逐渐的掌握。态度不好,就算自己有知识基础也不会把工作做好,四多一少就是我的态度,我刚到这个岗位工作,根本不清楚该做些什么,并且这和我在学校读的专业与这里做的东西还是不太一样的,刚开始我觉得很头痛,可经过工作过程中多看别人怎样做,多听别人怎样说,多想自己应该怎样做,然后自己亲自动手去多做,终于在这一个月里对工作有了一个较系统的认识,慢慢的自己也可以完成相关的工作了,光用嘴巴去说是不行的,所以,我们今后不管干什么都要端正自己的态度,这样才能把事情做好。 4.不要报怨

其实在做单元测试的那个时候,有时候觉的特别的烦。有时候做了半天连一个函数都没有把弄出来,那种感觉真的是非常的难受,心中也有委屈。可是这是我的工作,我报怨也没有用。只能一步一个脚印走过来。直到后面把函数测完,心中还是很有成就感的。其实有的人会觉得公司这里不好那里不好,同事也不好相处工作也不如愿,经常埋怨。我觉这样只会影响自己的工作情绪,不但做不好工作,还增加了自己的压力。所以,我们应该少埋怨,要看到公司好的一面,对存在的问题应该想办法去解决而不是去报怨,这样才能保持工作的激情。

5、虚心学习

由于我们是新手,而且又还没有从学校里完全走出来。所以在工作过程中,我们会碰到很多问题,有的问题我们可以有我们所学的解决,有的有很大业务性的问题,我们就无法解决。这个时候不要不懂装懂,应该虚心地向前辈们请教。请不要害怕,因为前辈肯教我们肯定是我们的福气,对我们以后在工作中都有帮助的。同时请教的时候也是一个锻炼沟通的过程。在前辈给我们解惑的时候,我们也应该虚心的接受,不要装着一副不屑的样子。

6、知错能改

做为一名新人,不管在学校有多么的优秀,来到公司,我们顶多就只有点基础,其他什么的都得重新开始。在学习的过程当中,犯错是不可避免的。知错能改是我们唯一的选择。明知自己有错,还理直气壮那是不应该的。我认为这种行为是可耻的。在犯错的时候来铭记于心,不要第二次在犯同样的错了。当前辈或

其他人指出我们的错误时,我们要虚心听教,坦诚改错。这样我们才会进步,才会在组里与同事相处融洽。

7、团队合作

重要的不是我,是我们。在一个项目组里,我并不是一个人。我只能说我是组里的一个部分。我们每一人都不是神,我们不可能一个来完成所有的工作,因此,必须分工。但是,分工并不是都很明确的。每个人分到的工作,多多少少都会和别人的工作的有交集。这是因为,作为一个项目的每个部分,最终还是整合形成整体。我们还是需要这些部分与部分交集作为连接点组合起来。因此,每个虽是分工,但更多是合作。我们中的我必须明白这些,要有团队观,做好自己的同时,更重要也要做好与别人的沟通。这样才会避免工作的重复,意见的不同等负能量。

8、沟通能力

在上一点的体会团队合作中,其实我已经说了,团队合作的基础就是沟通。 一个有效率的团队,我认为它的成功就在于成员之间良好的沟通能力。因为,人与人的沟通是信息传递的媒介。没有良好的沟通基础,信息在传递的时候就会被曲解。在软件开发的整个过程,团队合作是至关重要。每一环节,都离不开沟通。需求变更带来的问题,尤其需要在沟通中解决问题。所以,让自己把信息传递的正确和有效,提高沟通能力是必不可少的。 9.做人做事讲究原则

其实在公司上下班是一个很大的学问。同事都已经来上班了,你才来。或者是同事还没下班,你人就都先走了。其实要把这些看成一种常态。在公司上班不是比谁先来,也不是比谁晚走的,比得是自己的工作的效率。有时候,我们工作做完,是可以先走。你想想,你走了之后,估计别人也敢走了。从这一点上,可以说你是帮助了大家。当然这只是开玩笑,做人做事要有点原则。工作没完成当然不能跑回去,这是没有责任的表现,以后主管怎么能把事情交给你。工作做完,想先走就走了,不必当担心这担心那的。我相信一个好的主管,不会以一些无所谓的因素来衡量一个人的。只要自己身体正,就不怕别人说。 10.做好职业生涯规划

每个人在来实习之前,肯定会想我来这家公司是做什么。当你想好,并决定

来的时候,你已经做了第一步职业生涯规划了。实习也是成了我们检验计划的时候,如果你发现这个工作不适合你,毕业前你还有机会可以做换。如果感觉这个工作适合你,那么你就可以做下一步的规划了。我当初选择这个工作,是因为嵌入式软件开发在近几年会发展会比较快,而且本人对c++和c比较感兴趣。同时,目前做的工作是对日外包,对于我日语的提高也是很有帮助的。现在实习给我感觉是,不出现什么其他状况,应该毕业后会留在这个公司。至少今后的职业规划以日语和编程提高为主,以管理为辅。

在这里,我要感谢上海宝信软件股份分司给我这次宝贵的实习机会。同时,也要感谢组员对我有直接帮助的前辈。当然还要感谢学校和毕业指导王老师的关心与指导。

总而言之,这次实习是我大学四年来最正式的一次。我想通过这次的实习,我将从学生走向社会职业人的转变。一个月的时间过的太快了,但是我们的实习并没有结束。通过这次的总结,我对这次实习的意义有了深刻地认识。自己在今后的学习与工作中,一定会更加努力做的更好。

第13篇:黄靖嵌入式系统实习报告

嵌入式系统实习报告

课题: LCD显示秒表 班级: 计本12-3班 学号: 3110717215 姓名: 黄靖 指导老师: 金红老师

一、绪论

嵌入式计算机的真正发展是在微处理器问世之后。1971年11月,Intel公司成功地把算术运算器和控制器电路集成在一起,推出了第一款微处理器Intel 4004,其后各厂家陆续推出了许多8位、16位的微处理器,包括Intel 8080/808

5、8086,Motorola 的6800、68000,以及Zilog的Z80、Z8000等。以这些微处理器作为核心所构成的系统,广泛地应用于仪器仪表、医疗设备、机器人、家用电器等领域。微处理器的广泛应用形成了一个广阔的嵌入式应用市场,计算机厂家开始大量地以插件方式向用户提供OEM产品,再由用户根据自己的需要选择一套适合的CPU板、存储器板以及各式I/O插件板,从而构成专用的嵌入式计算机系统,并将其嵌入到自己的系统设备中。本次试验课题是基于UC/OS-II嵌入式操作系统进行的1602显示秒表设计。

二、嵌入式概述

1、何为嵌入式:

何谓嵌入式系统, 嵌入式系统是用来控制或者监视机器、装置、工厂等大规模设备的系统。 国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统.通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是由单个程序实现整个控制逻辑。

而uC/OS-II由Micrium公司提供,是一个源代码开放、可移植、可固化、可裁剪、抢先式的多任务实时操作系统。它主要用于中小型嵌入式系统中,执行效率高,占用空间小,可移植性强,具有良好的实时性和可扩展性。

2、嵌入式历史:

从20世纪七十年代单片机的出现到各式各样的嵌入式微处理器,微控制器的大规模应用,嵌入式系统已经有了近30年的发展历史。

嵌入式系统的出现最初是基于单片机的。70年代单片机的出现,使得汽车、家电、工业机器、通信装置以及成千上万种产品可以通过内嵌电子装置来获得更佳的使用性能:更容易使用、更快、更便宜。这些装置已经初步具备了嵌入式的应用特点,但是这时的应用只是使用8位的芯片,执行一些单线程的程序,还谈不上“系统”的概念。

最早的单片机是Intel公司的 8048,它出现在1976年。Motorola同时推出了68HC05,Zilog公司推出了Z80系列,这些早期的单片机均含有256字节的RAM、4K的ROM、4 个8位并口、1个全双工串行口、两个16位定 时 器。之后在80年代初,Intel又进一步完善了8048,在它的基础上研制成功了8051,这在单片机的历史上是值得纪念的一页,迄今为止,51系列的单片机仍然是最为成功的单片机芯片,在各种产品中有着非常广泛的应用。

从80年代早期开始,嵌入式系统的程序员开始用商业级的“操作系统”编写嵌入式应用软件,这使得可以获取更短的开发周期,更低的开发资金和更高的开发效率,“嵌入式系统”真正出现了。确切点说,这个时候的操作系统是一个实时核,这个实时核包含了许多传统操作系统的特征,包括任务管理、任务间通讯、同步与相互排斥、中断支持、内存管理等功能。 其中比较著名的有Ready System 公司的VRTX、Integrated System Incorporation (ISI)的PSOS和IMG的VxWorks、QNX公司的QNX 等。这些嵌入式操作系统都具有嵌入式的典型特点:它们均采用占先式的调度,响应的时间很短,任务执行的时间可以确定;系统内核很小,具有可裁剪,可扩充和可移植性,可以移植到各种处理器上;较强的实时和可靠性,适合嵌入式应用。这些嵌入式实时多任务操作系统的出现,使得应用开发人员得以从小范围的开发解放出来,同时也促使嵌入式有了更为广阔的应用空间。

90年代以后,随着对实时性要求的提高,软件规模不断上升,实时核逐渐发展为实时多任务操作系统(RTOS),并作为一种软件平台逐步成为目前国际嵌入式系统的主流。这时候更多的公司看到了嵌入式系统的广阔发展前景,开始大力发展自己的嵌入式操作系统。除了上面的几家老牌公司以外,还出现了Palm OS,WinCE,嵌入式Linux,Lynx,Nucleux,以及国内的Hopen,Delta Os等嵌入式操作系统。随着嵌入式技术的发展前景日益广阔,相信会有更多的嵌入式操作系统软件出现。

3、现状:

今天嵌入式系统带来的工业年产值已超过了1万亿美元,1997年来自美国嵌入式系统大会(Embedded System Conference)的报告指出,未来5年仅基于嵌入式计算机系统的全数字电视产品,就将在美国产生一个每年1500亿美元的新市场。美国汽车大王福特公司的高级经理也曾宣称,“福特出售的‘计算能力’已超过了IBM”,由此可以想见嵌入式计算机工业的规模和广度。1998年11月在美国加州举行的嵌入式系统大会上,基于RTOS的Embedded Internet成为一个技术新热点。在国内,“维纳斯计划”和“女锅计划”一度闹得沸沸扬扬,机顶盒、信息j家电这两年更成了IT热点,而实际上这些都是嵌入式系统在特定环境下的一个特定应用。据调查,目前国际上已有两百多种嵌入式操作系统,而各种各样的开发工具、应用于嵌入式开发的仪器设备更是不可胜数。在国内,虽然嵌入式应用、开发很广,但该领域却几乎还是空白,只有三两家公司和极少数人员在从事这方面工作。由此可见,嵌入式系统技术发展的空间真是无比广大。

三、课题设计内容:

1、课题所需材料及工具

材料:1062LCD显示器、电路板、IAP15F2K61S2系统板、数据线、三个按钮、若干电线等

工具:USB串口驱动、Keil_uvision_

4、STC_ISP Ver6.82B等

2、课题设计要求及总体思路

要求秒表可以实现三个功能:秒表的显示功能,秒表的控制功能:开始、暂停、清零,秒表的LED闪烁功能。

总体思路:

1、查阅与课题相关的资料了解uC/OS-II嵌入式系统移植已有的主要技术方案,应用软件设计及系统调试的方法;

2、在IAP15F2K61S2单片机系统板上移植uC/OS-II嵌入式系统,完成系统调试。

3、完成对秒表的功能进行总体的设计和规划,根据自己的总体设计和规划进行软件设计,焊接电路。

4、系统功能调试。

3、uC/OS-II嵌入式系统的移植

uC/OS-II代码中大部分都是用C语言写的,但是涉及到数据类型的重定义、堆栈结构的设计、任务切换时状态的保存和恢复等问题的大部分代码由于与处理器有关,是用汇编语言实现的。移植所要做的工作,就是在不同的处理器上用汇编语言来改写与处理器有关的代码及其他与处理器特性相关的部分。

在uC/OS-II移植过程中涉及以上问题的代码都包含在文件 OS_CPU.H、OS_CPU.C、OS_CPU_A.ASM中。因此移植的主要工作也在源代码的基础上围绕着这三个文件的改写展开。

OS_CPU.H的改写:其中主要定义了一些与编译器有关的数据类型、堆栈的生长方向、临界代码区的保护方式。因为不同的处理器有不同的字长,所以OS_CPU.H中需要针对具体的处理器字长重新定义一系列数据类型以确保系统的可移植性。特别需要注意的是MCS-51的栈宽度是8位的,所以将堆栈的数据类型声明为8 位无符号字符类型,即unsigned char OS_STK。第二,为了避免临界区代码被中断,在临界区操作时必须用C语言开放和关闭中断。对于51单片机,在中断控制中使用EA = 0关中断,EA = 1开中断。由于51堆栈自低地址往高地址生长,所以堆栈增长方向的设置必须更改。采用语句#define OS_STK_GROWTH 0。最后,由于MCS-51没有软中断指令,所以用程序调用代替,定义任务切换宏OS_TASK_SW( ) :#define OS_TASK_SW ( ) OSCtxSw ( )。

OS_CPU_C.C需要改写的六个钩挂函数分别是 OSTaskStkInit()

//初始化任务堆栈函数 OSTaskCreateHook() //任务创建钩挂函数 OSTaskDelHook()

//任务删除钩挂函数 OSTaskSwHook()

//任务切换钩挂函数 OSTaskStatHook()

//统计任务钩挂函数 OSTimeTickHook() //定时钩挂函数

OS_CPU_A.ASM需要改写的四个函数分别是: OSStartHighRdy() //运行优先级最高的就绪任务 OSCtxSw()

//任务级的切换函数

OSIntCtxSw()

//中断级的任务切换函数 OSTickISR()

//时钟节拍中断服务函数

移植过程要留意的问题:

当调用OSTaskCreate()或OSTaskCreateExt()创建一个新任务时,需要传递的参数是:任务代码的起使地址,参数指针(pdata),任务堆栈顶端的地址,任务的优先级。OSTaskCreateExt()还需要一些其他参数,但与OSTask­StkInit()没有关系。OSTaskStkInit()只需要以上提到的3个参数(task, pdata,和ptos)。在这个堆栈初始化函数中要清楚堆栈中都要保存哪些东西,要留多大的空间,这些都很重要,否则会发生很严重的错误。

4、课题程序功能设计及代码

如下图所示,整个秒表以STC15为核心,按下停止键或启动键控制秒表的停止和开始,清零键负责清零,同时反映给STC15,再经过处理显示在1602液晶显示器上,进行计时:

LCD1602液晶显示器启动键key1STC15停止键key3清零键key2

系统设计图:

系统总的原理图如上图所示,按下暂停、启动和清零按键,秒表开始计时或清零并显示在LCD1602液晶显示器上 。

功能流程图:

开始单片机、LED初始化trueIf(key==0)false定时器开启TR1=1定时中断计数值累加屏幕显示定时器关闭TR1=0结束 主要函数代码:

void main(void)

//主函数

{ OSInit();

//初始化uc/os-||

InitTime0();

//定时器初始化

OSTaskCreate(Task1,(void*)0,&Task1Stk[0],4);

//任务1 OSTaskCreate(Task2,(void*)0,&Task2Stk[0],1);

//任务2

OSStart();

//开始多任务调度 } void Task2(void *ppdata) reentrant

// 任务2,LED闪烁, { ppdata=ppdata; while(1)

{

P55 = ~P55;

OSTimeDly(OS_TICKS_PER_SEC);

}

} void Task1(void xdata * ppdata) reentrant

//任务1,三个按键功能以及字幕的显示 {

ppdata = ppdata;

TR1=0; count=0;

//中断次数

while(1) {

init();

//1602初始化

if(key1==0)

//开始

{

TR1=1;

//定时器开启

}

if(key3==0)

//暂停

{ TR1=0;

//定时器关闭

}

if(key2==0&&TR1==0)

//清零

{ zong=0;

//时间清零

}

lcd_pos(0x46);

//显示的地址

Display_int(zong/60);

//显示分钟

lcd_date(\':\');

//显示

Display_int(zong%60);

//显示秒

lcd_pos(0x00);

//字符输出地址

Display_string(time); //输出”times start:”

OSTimeDly(OS_TICKS_PER_SEC/40);} }

//中断函数

void Time1() interrupt 3

//定时器T1的中断编号为1 { TH1 = (65536-50000)/256;

//定时器T0高8位重新赋初值0.05s TL1 = (65536-50000)%256;

//定时器T0低8位重新赋初值

count++; if(count%20==0 )

//调整数字变化速度

{

zong++;// } }

void Display_int(int a){

//显示

int tmp[2]={0,0}; int t = 0;

while(a!=0){

tmp[t++] = a%10;

a = a/10; }

t=2; while(t>0){

lcd_date(\'0\' + tmp[--t]); } } void Display_string(char *str){

int i = 0;

while(str[i] != \'\\0\'){

lcd_date(str[i++]);

} }

5、系统测试结果

程序烧写进IAP15F2K61S2单片机,stc15上的LED灯不断闪烁,单片机控制1602显示,可显示出”times start: 00:00”字样。当按下key1键,计数启动。当按下key2键,计数暂停。当按下key3键,计数置0,重新等待计数(必须计数暂停后才能清零)。初步完成计数功能。

6、作品实物图

四、总结体会

在三周的时间内我们完成了LCD显示秒表的制作,该秒表由三个按钮控制完成三个功能进行计时,分别是:开始、暂停、清零,可通过1062显示频显示。

先查找资料进行了解,然后根据资料收集制作材料,之后在老师的指导下对程序进行设计,最后是电路焊接,系统调试。经过努力终于完成了秒表的制作。

三周时间的实习,不仅让我能力得到了锻炼、开阔了眼界、了解了嵌入式是怎样应用的,也让我深刻意识到自己的不足。三周实习最大的收获是让我学到了: 在对一样事物不了解时,主动去查找资料解决。困难不是我们主要的阻碍,关键是个人思想问题,只要你内心思想重视并付出行动,总会有回报的。曾有一位医生因对嵌入式起了兴趣,就自己查找资料竟然短短几天内做出了成果。这说明了一切。

参考文献: 【1】 祁红岩编著.MCS51单片机实践与应用(基于C语言).机械工业出版社 【2】 孙育才 孙华芳著.MCS-51系列单片机及其应用(第五版)

第14篇:黄靖嵌入式系统实习报告

嵌入式系统实习报告

课题: LCD显示秒表 班级: 计本12-3班 学号: 3110717215 姓名: 黄靖 指导老师: 金红老师

一、绪论

嵌入式计算机的真正发展是在微处理器问世之后。1971年11月,Intel公司成功地把算术运算器和控制器电路集成在一起,推出了第一款微处理器Intel 4004,其后各厂家陆续推出了许多8位、16位的微处理器,包括Intel 8080/808

5、8086,Motorola 的6800、68000,以及Zilog的Z80、Z8000等。以这些微处理器作为核心所构成的系统,广泛地应用于仪器仪表、医疗设备、机器人、家用电器等领域。微处理器的广泛应用形成了一个广阔的嵌入式应用市场,计算机厂家开始大量地以插件方式向用户提供OEM产品,再由用户根据自己的需要选择一套适合的CPU板、存储器板以及各式I/O插件板,从而构成专用的嵌入式计算机系统,并将其嵌入到自己的系统设备中。本次试验课题是基于UC/OS-II嵌入式操作系统进行的1602显示秒表设计。

二、嵌入式概述

1、何为嵌入式:

何谓嵌入式系统, 嵌入式系统是用来控制或者监视机器、装置、工厂等大规模设备的系统。 国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统.通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是由单个程序实现整个控制逻辑。

而uC/OS-II由Micrium公司提供,是一个源代码开放、可移植、可固化、可裁剪、抢先式的多任务实时操作系统。它主要用于中小型嵌入式系统中,执行效率高,占用空间小,可移植性强,具有良好的实时性和可扩展性。

2、嵌入式历史:

从20世纪七十年代单片机的出现到各式各样的嵌入式微处理器,微控制器的大规模应用,嵌入式系统已经有了近30年的发展历史。

嵌入式系统的出现最初是基于单片机的。70年代单片机的出现,使得汽车、家电、工业机器、通信装置以及成千上万种产品可以通过内嵌电子装置来获得更佳的使用性能:更容易使用、更快、更便宜。这些装置已经初步具备了嵌入式的应用特点,但是这时的应用只是使用8位的芯片,执行一些单线程的程序,还谈不上“系统”的概念。

最早的单片机是Intel公司的 8048,它出现在1976年。Motorola同时推出了68HC05,Zilog公司推出了Z80系列,这些早期的单片机均含有256字节的RAM、4K的ROM、4 个8位并口、1个全双工串行口、两个16位定 时 器。之后在80年代初,Intel又进一步完善了8048,在它的基础上研制成功了8051,这在单片机的历史上是值得纪念的一页,迄今为止,51系列的单片机仍然是最为成功的单片机芯片,在各种产品中有着非常广泛的应用。

从80年代早期开始,嵌入式系统的程序员开始用商业级的“操作系统”编写嵌入式应用软件,这使得可以获取更短的开发周期,更低的开发资金和更高的开发效率,“嵌入式系统”真正出现了。确切点说,这个时候的操作系统是一个实时核,这个实时核包含了许多传统操作系统的特征,包括任务管理、任务间通讯、同步与相互排斥、中断支持、内存管理等功能。 其中比较著名的有Ready System 公司的VRTX、Integrated System Incorporation (ISI)的PSOS和IMG的VxWorks、QNX公司的QNX 等。这些嵌入式操作系统都具有嵌入式的典型特点:它们均采用占先式的调度,响应的时间很短,任务执行的时间可以确定;系统内核很小,具有可裁剪,可扩充和可移植性,可以移植到各种处理器上;较强的实时和可靠性,适合嵌入式应用。这些嵌入式实时多任务操作系统的出现,使得应用开发人员得以从小范围的开发解放出来,同时也促使嵌入式有了更为广阔的应用空间。

90年代以后,随着对实时性要求的提高,软件规模不断上升,实时核逐渐发展为实时多任务操作系统(RTOS),并作为一种软件平台逐步成为目前国际嵌入式系统的主流。这时候更多的公司看到了嵌入式系统的广阔发展前景,开始大力发展自己的嵌入式操作系统。除了上面的几家老牌公司以外,还出现了Palm OS,WinCE,嵌入式Linux,Lynx,Nucleux,以及国内的Hopen,Delta Os等嵌入式操作系统。随着嵌入式技术的发展前景日益广阔,相信会有更多的嵌入式操作系统软件出现。

3、现状:

今天嵌入式系统带来的工业年产值已超过了1万亿美元,1997年来自美国嵌入式系统大会(Embedded System Conference)的报告指出,未来5年仅基于嵌入式计算机系统的全数字电视产品,就将在美国产生一个每年1500亿美元的新市场。美国汽车大王福特公司的高级经理也曾宣称,“福特出售的‘计算能力’已超过了IBM”,由此可以想见嵌入式计算机工业的规模和广度。1998年11月在美国加州举行的嵌入式系统大会上,基于RTOS的Embedded Internet成为一个技术新热点。在国内,“维纳斯计划”和“女锅计划”一度闹得沸沸扬扬,机顶盒、信息j家电这两年更成了IT热点,而实际上这些都是嵌入式系统在特定环境下的一个特定应用。据调查,目前国际上已有两百多种嵌入式操作系统,而各种各样的开发工具、应用于嵌入式开发的仪器设备更是不可胜数。在国内,虽然嵌入式应用、开发很广,但该领域却几乎还是空白,只有三两家公司和极少数人员在从事这方面工作。由此可见,嵌入式系统技术发展的空间真是无比广大。

三、课题设计内容:

1、课题所需材料及工具

材料:1062LCD显示器、电路板、IAP15F2K61S2系统板、数据线、三个按钮、若干电线等

工具:USB串口驱动、Keil_uvision_

4、STC_ISP Ver6.82B等

2、课题设计要求及总体思路

要求秒表可以实现三个功能:秒表的显示功能,秒表的控制功能:开始、暂停、清零,秒表的LED闪烁功能。

总体思路:

1、查阅与课题相关的资料了解uC/OS-II嵌入式系统移植已有的主要技术方案,应用软件设计及系统调试的方法;

2、在IAP15F2K61S2单片机系统板上移植uC/OS-II嵌入式系统,完成系统调试。

3、完成对秒表的功能进行总体的设计和规划,根据自己的总体设计和规划进行软件设计,焊接电路。

4、系统功能调试。

3、uC/OS-II嵌入式系统的移植

uC/OS-II代码中大部分都是用C语言写的,但是涉及到数据类型的重定义、堆栈结构的设计、任务切换时状态的保存和恢复等问题的大部分代码由于与处理器有关,是用汇编语言实现的。移植所要做的工作,就是在不同的处理器上用汇编语言来改写与处理器有关的代码及其他与处理器特性相关的部分。

在uC/OS-II移植过程中涉及以上问题的代码都包含在文件 OS_CPU.H、OS_CPU.C、OS_CPU_A.ASM中。因此移植的主要工作也在源代码的基础上围绕着这三个文件的改写展开。

OS_CPU.H的改写:其中主要定义了一些与编译器有关的数据类型、堆栈的生长方向、临界代码区的保护方式。因为不同的处理器有不同的字长,所以OS_CPU.H中需要针对具体的处理器字长重新定义一系列数据类型以确保系统的可移植性。特别需要注意的是MCS-51的栈宽度是8位的,所以将堆栈的数据类型声明为8 位无符号字符类型,即unsigned char OS_STK。第二,为了避免临界区代码被中断,在临界区操作时必须用C语言开放和关闭中断。对于51单片机,在中断控制中使用EA = 0关中断,EA = 1开中断。由于51堆栈自低地址往高地址生长,所以堆栈增长方向的设置必须更改。采用语句#define OS_STK_GROWTH 0。最后,由于MCS-51没有软中断指令,所以用程序调用代替,定义任务切换宏OS_TASK_SW( ) :#define OS_TASK_SW ( ) OSCtxSw ( )。

OS_CPU_C.C需要改写的六个钩挂函数分别是 OSTaskStkInit()

//初始化任务堆栈函数 OSTaskCreateHook() //任务创建钩挂函数 OSTaskDelHook()

//任务删除钩挂函数 OSTaskSwHook()

//任务切换钩挂函数 OSTaskStatHook()

//统计任务钩挂函数 OSTimeTickHook() //定时钩挂函数

OS_CPU_A.ASM需要改写的四个函数分别是: OSStartHighRdy() //运行优先级最高的就绪任务 OSCtxSw()

//任务级的切换函数

OSIntCtxSw()

//中断级的任务切换函数 OSTickISR()

//时钟节拍中断服务函数

移植过程要留意的问题:

当调用OSTaskCreate()或OSTaskCreateExt()创建一个新任务时,需要传递的参数是:任务代码的起使地址,参数指针(pdata),任务堆栈顶端的地址,任务的优先级。OSTaskCreateExt()还需要一些其他参数,但与OSTask­StkInit()没有关系。OSTaskStkInit()只需要以上提到的3个参数(task, pdata,和ptos)。在这个堆栈初始化函数中要清楚堆栈中都要保存哪些东西,要留多大的空间,这些都很重要,否则会发生很严重的错误。

4、课题程序功能设计及代码

如下图所示,整个秒表以STC15为核心,按下停止键或启动键控制秒表的停止和开始,清零键负责清零,同时反映给STC15,再经过处理显示在1602液晶显示器上,进行计时:

LCD1602液晶显示器启动键key1STC15停止键key3清零键key2

系统设计图:

系统总的原理图如上图所示,按下暂停、启动和清零按键,秒表开始计时或清零并显示在LCD1602液晶显示器上 。

功能流程图:

开始单片机、LED初始化trueIf(key==0)false定时器开启TR1=1定时中断计数值累加屏幕显示定时器关闭TR1=0结束 主要函数代码:

void main(void)

//主函数

{ OSInit();

//初始化uc/os-||

InitTime0();

//定时器初始化

OSTaskCreate(Task1,(void*)0,&Task1Stk[0],4);

//任务1 OSTaskCreate(Task2,(void*)0,&Task2Stk[0],1);

//任务2

OSStart();

//开始多任务调度 } void Task2(void *ppdata) reentrant

// 任务2,LED闪烁, { ppdata=ppdata; while(1)

{

P55 = ~P55;

OSTimeDly(OS_TICKS_PER_SEC);

}

} void Task1(void xdata * ppdata) reentrant

//任务1,三个按键功能以及字幕的显示 {

ppdata = ppdata;

TR1=0; count=0;

//中断次数

while(1) {

init();

//1602初始化

if(key1==0)

//开始

{

TR1=1;

//定时器开启

}

if(key3==0)

//暂停

{ TR1=0;

//定时器关闭

}

if(key2==0&&TR1==0)

//清零

{ zong=0;

//时间清零

}

lcd_pos(0x46);

//显示的地址

Display_int(zong/60);

//显示分钟

lcd_date(\':\');

//显示

Display_int(zong%60);

//显示秒

lcd_pos(0x00);

//字符输出地址

Display_string(time); //输出”times start:”

OSTimeDly(OS_TICKS_PER_SEC/40);} }

//中断函数

void Time1() interrupt 3

//定时器T1的中断编号为1 { TH1 = (65536-50000)/256;

//定时器T0高8位重新赋初值0.05s TL1 = (65536-50000)%256;

//定时器T0低8位重新赋初值

count++; if(count%20==0 )

//调整数字变化速度

{

zong++;// } }

void Display_int(int a){

//显示

int tmp[2]={0,0}; int t = 0;

while(a!=0){

tmp[t++] = a%10;

a = a/10; }

t=2; while(t>0){

lcd_date(\'0\' + tmp[--t]); } } void Display_string(char *str){

int i = 0;

while(str[i] != \'\\0\'){

lcd_date(str[i++]);

} }

5、系统测试结果

程序烧写进IAP15F2K61S2单片机,stc15上的LED灯不断闪烁,单片机控制1602显示,可显示出”times start: 00:00”字样。当按下key1键,计数启动。当按下key2键,计数暂停。当按下key3键,计数置0,重新等待计数(必须计数暂停后才能清零)。初步完成计数功能。

6、作品实物图

四、总结体会

在三周的时间内我们完成了LCD显示秒表的制作,该秒表由三个按钮控制完成三个功能进行计时,分别是:开始、暂停、清零,可通过1062显示频显示。

先查找资料进行了解,然后根据资料收集制作材料,之后在老师的指导下对程序进行设计,最后是电路焊接,系统调试。经过努力终于完成了秒表的制作。

三周时间的实习,不仅让我能力得到了锻炼、开阔了眼界、了解了嵌入式是怎样应用的,也让我深刻意识到自己的不足。三周实习最大的收获是让我学到了: 在对一样事物不了解时,主动去查找资料解决。困难不是我们主要的阻碍,关键是个人思想问题,只要你内心思想重视并付出行动,总会有回报的。曾有一位医生因对嵌入式起了兴趣,就自己查找资料竟然短短几天内做出了成果。这说明了一切。

参考文献: 【1】 祁红岩编著.MCS51单片机实践与应用(基于C语言).机械工业出版社 【2】 孙育才 孙华芳著.MCS-51系列单片机及其应用(第五版)

第15篇:中国民航大学嵌入式系统实习报告

中国民航大学2013-2014年度第一学期

嵌入式系统实习报告

嵌入式系统实习报告

1、实习目的

1.1了解处理器的发展

1.2掌握WinCE嵌入式系统开发方法和开发流程。1.3掌握WinCE嵌入式C#编程方法。 1.4掌握WinCE嵌入式网络通信技术。 1.5掌握Bluetooth编码技术

2、实习内容

蓝牙搜索、浏览与发送,蓝牙设备列表,配对设备清空,删除。主要步骤: 服务端

A、设置本设备为可发现。

B、公开服务给其他Bluetooth设备访问。

C、接受其他Bluetooth设备的链接。

D、与链接上的Bluetooth设备进行通信。 客户端

A、发现周边Bluetooth设备。

B、主动与被发现的设备发起连接。

C、与链接上的Bluetooth设备进行通信。

3、实验要求:

课程资源:BP教学平台 完成形式:程序+实践报告

参考资料:齐治昌等,《C#编程技术》,人民大学出版社,

钱哨等,《C#WinForm实践开发教程》 验收方式:课堂检查

发送文件到指定的计算机

4、基础知识:

4.1嵌入式系统

嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。

它是完成特定任务的计算机系统。嵌入式系统一般由硬件设备、嵌入式操作系统、嵌入式应用软件组成。 4.2蓝牙技术

蓝牙(Bluetooth)是目前比较流行的一种短距离无线通讯技术,其主要目的就是要在全世界范围内建立一个短距离的无线通信标准。设计者的初衷是用隐形的连接线代替线缆。它取代目前多种电缆连接方案,通过统一的短程无线链路,在各信息设备之间可以穿过墙壁或公文包,实现方便快捷、灵活安全、低成本小功耗的话音和数据通信。“蓝牙”技术的目的是使特定的移动电话、便携式电脑以及各种便携式通信设备的主机之间在近距离内实现无缝的资源共享。

具体地说,“蓝牙”技术的作用就是简化小型网络设备(如移动PC、掌上电脑、手机)之间以及这些设备与Internet之间的通信,免除在无绳电话或移动电话、调制解调器、头套式送/受话器、PDA、计算机、打印机、幻灯机、局域网等之间加装电线、电缆和连接器。

5、具体操作

5.1新建项目程序

向窗口添加标签,按钮,文本框。

5.2蓝牙设备搜索

点击“搜索蓝牙设备按钮”,添加程序 具体程序如下:

BluetoothRadio radio = BluetoothRadio.PrimaryRadio;

if (radio == null)

{

MeageBox.Show(\"没有蓝牙设备或者没有支持的蓝牙设备栈\");

return;

}

radio.Mode = RadioMode.Discoverable;//蓝牙模式设置为可搜索//

BluetoothClient client = new BluetoothClient();

this.statusBar1.Text = \"正在搜索蓝牙设备...\";

Application.DoEvents();

BluetoothDeviceInfo[] cbbthDevices = client.DiscoverDevices();

comboBox1.DataSource = cbbthDevices;

comboBox1.DisplayMember = \"DeviceName\";

comboBox1.ValueMember = \"DeviceAddre\";

this.statusBar1.Text = \"蓝牙设备搜索完成\";

Application.DoEvents();

5.3浏览和发送文件

双击“浏览文件”和“发送文件”,分别输入程序,具体如下: 浏览文件:

OpenFileDialog ofd = new OpenFileDialog();//浏览文件//

if (ofd.ShowDialog() == DialogResult.OK) //如果用户在对话框中单击“确定”//

{ textBox1.Text = ofd.FileName; } //将查找到的文件名显示在要发送的文件的文本框里// 发送文件:

System.Uri uri = new

Uri(\"obex://\"

+

comboBox1.SelectedValue.ToString()

+

\"/\"

+ System.IO.Path.GetFileName(textBox1.Text.Trim()));//获取服务器obex的uri,获取要传送的文件名//

ObexWebResponse response = null;

//新建response变量//

ObexWebRequest request = new ObexWebRequest(uri); //通过ObexWebRequest推送文件到目标机器,发送请求//

try

{

request.ReadFile(textBox1.Text.Trim());

//读出textbox1的文件内容

response = (ObexWebResponse)request.GetResponse();//回应封装在ObexWebResponse 类里面。如果目标机器的Obex服务没有打开,会发生文件传输错误 //

MeageBox.Show(\"发送成功!\");

listBox1.Items.Add(textBox1.Text.Trim());//将文本框中的内容添加到列表中

}

catch

{

MeageBox.Show(\"传输失败\");

}

finally//发送完成释放资源

{

if (response != null)

{

response.Close();

}

} 5.4 拓展功能 5.4.1清空设备列表

功能:把搜索到的蓝牙设备列表清空。

程序如下:

private void button2_Click(object sender, EventArgs e)

{

comboBox1.Items.Clear();

} 5.4.2发送进度条 功能:显示文件发送进度。

程序添加到发送程序下:(红色标记的两句)

try

{

request.ReadFile(textBox1.Text.Trim());

//读出textbox1的文件内容

response = (ObexWebResponse)request.GetResponse();//回应封装在ObexWebResponse 类里面。如果目标机器的Obex服务没有打开,会发生文件传输错误 //

int C;

for (C = 0; C

MeageBox.Show(\"发送成功!\");

listBox1.Items.Add(textBox1.Text.Trim());//将文本框中的内容添加到列表中

}

5.4.3发送文件历史列表及清空 功能:保留发送文件历史,清空。

程序设计两部分: A、保留历史(红色部分)

request.ReadFile(textBox1.Text.Trim());

//读出textbox1的文件内容

response = (ObexWebResponse)request.GetResponse();//回应封装在ObexWebResponse 类里面。如果目标机器的Obex服务没有打开,会发生文件传输错误 //

int C;

for (C = 0; C

MeageBox.Show(\"发送成功!\");

listBox1.Items.Add(textBox1.Text.Trim());//将文本框中的内容添加到列表中

B、清空历史:

private void button1_Click(object sender, EventArgs e)

{

listBox1.Items.Clear();//清空列表

}

5.4.4添加时间框

5.4.5添加背景图片

5.5接收端

程序如下:

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using InTheHand.Net; using InTheHand.Net.Bluetooth; using InTheHand.Net.Sockets; using System.Threading;

namespace WindowsApplication1 {

public partial cla Form1 : Form

{

private Thread threadfile;

private ObexListener listener;

private bool listening;

public Form1()

{

InitializeComponent();

}

private delegate void SafeWinFormsThreadDelegate(string msg);

//监听线程

private void WriteMsg(string msg)

{

SafeWinFormsThreadDelegate d;

d = new SafeWinFormsThreadDelegate(UpdateUI);

Invoke(d, new object[] { msg });

}

public void DealWithRequest()

//处理请求

{

while (this.listener.IsListening)

try

{

ObexListenerContext olc = listener.GetContext();

ObexListenerRequest olr = olc.Request;

string filename = olr.RawUrl.TrimStart(new char[] { \'/\' });

olr.WriteFile(DateTime.Now.ToString(\"2012-12-12\") + filename);

}

catch

{ continue; }

}

private void UpdateUI(string msg)

{

listBox1.Items.Add(msg);

}

private void start_Click(object sender, EventArgs e)

{

if (listener == null)

{

listener = new ObexListener();

BluetoothRadio.PrimaryRadio.Mode = RadioMode.Discoverable;

}

listener.Start();

listening = true;

threadfile = new Thread(DealWithRequest);

threadfile.Start();

start.Enabled = false;

STOP.Enabled = true;

UpdateUI(\"监听开始!\");

}

private void STOP_Click(object sender, EventArgs e)

{

if (listener != null)

{

listener.Stop();

}

if (threadfile != null)

{

threadfile.Abort();

}

start.Enabled = true;

STOP.Enabled = false;

UpdateUI(\"监听停止!\");

}

private void tabPage1_Click(object sender, EventArgs e)

{

}

} }

6、心得体会

开学就有三周的实习感觉有点不太适应,但是嵌入式系统的实习让我找到了乐趣,让我感觉到了电子世界的丰富多彩以及更深入的了解日常生活中的蓝牙背后的故事。从一点都没有接触过,到后来的可以说是喜欢上这个实验课了。

当然,在实验中,我还是有过许多错误的操作,在这次设计中还是走了很多弯路,运用软件不熟悉,但在老师的指导下以及同学的帮助下,现在基本能够熟练操作。在不断摸索和查找资料的过程中,学会了迅速检索资料的能力,就是感觉这种实习是对自己的一种锻炼,发现困难,克服困难,很充实。

大三的我开始学习专业课,这次的实习是我专业课的开始,也激起了我对通信专业的热爱。

第16篇:报告嵌入式心得

专题课学习至今,学到了很多东西。而找工作时,各种笔试面试中,深刻地体会到“嵌入式系统”的重要性。这让我更坚定了学好嵌入式系统的想法。

嵌入式系统这门课和C语言颇有关联,这也重新夯实了我的C语言基础。而良好的C语言能力,也是学习嵌入式的必备基础。我决定在学好基础后,在对嵌入式进行扩展学习。

据了解嵌入式学习主要有两方面:软件和硬件。嵌入式软件的比较多,而做硬件不多,但多是高手。嵌入式的软件又有好多种,主要是针对不同CPU的,但是基本都是用C语言的,还有极少的汇编,主要在BOOT启动、初始代码中。目前来说,嵌入式Linux比较流行,安卓就是基于linux内核的。wince、Vxworks什么的貌似不多,特别是vxworks。

我也对嵌入式系统的应用方面进行了了解。现在在市场还是蛮吃香的,可从事的就业方向还是蛮多的比如:消费类电子(手机、PDA、游戏机)、数字 多媒体(网络点播、机顶盒)、汽车电子(导航仪)、医疗电子、工业控制等行业。

嵌入式系统是二十一世纪科技领域的重大创新,必将推进全球经济社会高速发展,实现人类发展史上的重大突破。科学在发展,人类在进步,随着一代又一代IT精英们的不断努力,未来的嵌入式系统一定会是更加方便人们的工作、学习、生活的好伴侣。

据了解 ,嵌入式市场有非常大的机会,预计到2012年将有30亿台嵌入式设备交货。这样一个“爆炸性”的增长主要是由于终端用户越来越基于连接性的用户体验及应用程序来购买具有智能、连接性、服务导向的设备。

嵌入式系统是“控制、监视或者辅助装置、机器和设备运行的装置(”devices used to control, monitor, or aist the operation of equipment, machinery or plants)。从中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。目前国内一个普遍被认同的定义是:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专业计算机系统。

本文从嵌入式系统的

等方面来概要性地介绍嵌入式系统。

1.嵌入式系统的概念

1.1嵌入式系统的定义

根据IEEE(电气和电子工程师协会)的定义,嵌入式系统是“控制、监视或者辅助装置、机器和设备运行的装置”(devices used to control, monitor, or aist the operation of equipment, machinery or plants)。从中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。目前国内一个普遍被认同的定义是:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专业计算机系统。

1.2 嵌入式系统的特点

1.系统内核小。由于嵌入式系统一般是应用于小型电子装置的,系统的资源相对有限,所以内核较之传统的操作系统要小得多。

2.专用性强。嵌入式系统的个性化很强,其中的软件系统和硬件的结合非常紧密,一般要针对硬件进行系统的移植,即使在同一品牌、同一系列的产品中也需要根据系统硬件的变化和增减不断进行修改。同时针对不同的任务,往往需要对系统进行较大更改,程序的编译下载要和系统相结合,这种修改和通用软件的“升级”是完全两个概念。

3.系统精简。嵌入式系统一般没有系统软件和应用软件的明显区分,不要求其功能设计及实现上过于复杂,这样一方面利于控制系统成本,同时也利于实现系统安全。

4.高实时性的系统软件(OS)是嵌入式软件的基本要求。而且软件要求固态存储,以提高速度;软件代码要求高质量和高可靠性。

5.嵌入式软件开发要想走向标准化,就必须使用多任务的操作系统。嵌入式系统的应用程序可以没有操作系统直接在芯片上运行;但是为了合理地调度多任务、利用系统资源、系统函数以及和专家库函数接口,用户必须自行选配RTOS(Real-Time Operating System)开发平台,这样才能保证程序执行的实时性、可靠性,并减少开发时间,保障软件质量。

6.嵌入式系统开发需要开发工具和环境。由于其本身不具备自举开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发,这些工具和环境一般是基于通用计算机上的软硬件设备以及各种逻辑分析仪、混合信号示波器等。开发时往往有主机和目标机的概念,主机用于程序的开发,目标机作为最后的执行机,开发时需要交替结合进行。

1.3几个关键概念的解释

1、嵌入式处理器

嵌入式系统的核心,是控制、辅助系统运行的硬件单元。范围极其广阔,从最初的4位处理器,目前仍在大规模应用的8位单片机,到最新的受到广泛青睐的32位,64位嵌入式CPU。

2、实时操作系统

实时操作系统 (RTOS-Real Time Operating System):

嵌入式系统目前最主要的组成部分。根据操作系统的工作特性,实时是指物理进程的真实时间。实时操作系统具有实时性,能从硬件方面支持实时控制系统工作的操作系统。其中实时性是第一要求,需要调度一切可利用的资源完成实时控制任务,其次才着眼于提高计算机系统的使用效率,重要特点是要满足对时间的限制和要求。

3、分时操作系统

对于分时操作系统,软件的执行在时间上的要求,并不严格,时间上的错误,一般不会造成灾难性的后果。目前分时系统的强项在于多任务的管理,而实时操作系统的重要特点是具有系统的可确定性,即系统能对运行情况的最好和最坏等的情况能做出精确的估计。

4、多任务操作系统

系统支持多任务管理和任务间的同步和通信,传统的单片机系统和DOS系统等对多任务支持的功能很弱,而目前的Windows是典型的多任务操作系统。在嵌入式应用领域中,多任务是一个普遍的要求。

5、实时操作系统中的重要概念

系统响应时间(System response time):系统发出处理要求到系统给出应答信号的时间。

任务换道时间(Context-switching time):任务之间切换而使用的时间。

中断延迟(Interrupt latency):机器接收到中断信号到操作系统作出响应,并完成换道转入中断程序的时间。

6、实时操作系统的工作状态

实时系统中的任务有四种状态:运行(Executing),就绪(Ready),挂起(Suspended),冬眠(Dormant)。

运行:获得CPU控制权。

就绪:进入任务等待队列,通过调度转为运行状态。

挂起:任务发生阻塞,移出任务等待队列,等待系统实时事件的发生而唤醒,从而转为就绪或运行。

冬眠:任务完成或错误等原因被清除的任务,也可以认为是系统中不存在的任务。

任何时刻系统中只能有一个任务在运行状态,各任务按级别通过时间片分别获得对CPU的访问权。

2.嵌入式系统的组成

有关嵌入式系统的组成非常多,限于篇幅,本文只介绍其中机电最关键概念。 嵌入式系统的组成

1)嵌入式系统硬件层。一般包括有:嵌入式处理器、存储器、I/O系统和外设 2)嵌入式系统的软件系统。包括:操作系统、应用软件

嵌入式系统的开发工具(1)硬件开发工具包括:仿真器等;其它(示波器等)(2)软件开发工具包括:编译、连接、定位软件,通常使用C语言;调试软件。

3)中间层。它将系统软件与底层硬件部分隔离,使得系统的底层设备驱动程序与硬件无关。 4)应用层

一个嵌入式系统装置一般都由嵌入式计算机系统和执行装置组成,如图1-1所示,嵌入式计算机系统是整个嵌入式系统的核心,由硬件层、中间层、系统软件层和应用软件层组成。执行装置也称为被控对象,它可以接受嵌入式计算机系统发出的控制命令,执行所规定的操作或任务。

2.1硬件层

硬件层中包含嵌入式微处理器、存储器(SDRAM、ROM、Flash等)、通用设备接口和I/O接口(A/D、D/A、I/O等)。在一片嵌入式处理器基础上添加电源电路、时钟电路和存储器电路,就构成了一个嵌入式核心控制模块。其中操作系统和应用程序都可以固化在ROM中。

2.1.1、嵌入式微处理器

嵌入式系统硬件层的核心是嵌入式微处理器,嵌入式微处理器与通用CPU最大的不同在于嵌入式微处理器大多工作在为特定用户群所专用设计的系统中,它将通用CPU许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统在设计时趋于小型化,同时还具有很高的效率和可靠性。

嵌入式微处理器的体系结构可以采用冯诺依曼体系或哈佛体系结构;指令系统可以选用精简指令系统(Reduced Instruction Set Computer,RISC)和复杂指令系统CISC(Complex Instruction Set Computer,CISC)。RISC计算机在通道中只包含最有用的指令,确保数据通道快速执行每一条指令,从而提高了执行效率并使CPU硬件结构设计变得更为简单。

嵌入式微处理器有各种不同的体系,即使在同一体系中也可能具有不同的时钟频率和数据总线狂度,或集成了不同的外设和接口。据不完全统计,目前全世界嵌入式微处理器已经超过1000多种,体系结构有30多个系列,其中主流的体系有ARM、MIPS、PowerPC、X86和SH等。但与全球PC市场不同的是,没有一种嵌入式微处理器可以主导市场,仅以32位的产品而言,就有100种以上的嵌入式微处理器。嵌入式微处理器的选择是根据具体的应用而决定的。

2.1.2、存储器

嵌入式系统需要存储器来存放和执行代码。嵌入式系统的存储器包含Cache、主存和辅助存储器。

1.Cache

Cache是一种容量小、速度快的存储器阵列它位于主存和嵌入式微处理器内核之间,存放的是最近一段时间微处理器使用最多的程序代码和数据。

在嵌入式系统中Cache全部集成在嵌入式微处理器内,可分为数据Cache、指令Cache或混合Cache,Cache的大小依不同处理器而定。一般中高档的嵌入式微处理器才会把Cache集成进去。

2.主存

主存是嵌入式微处理器能直接访问的寄存器,用来存放系统和用户的程序及数据。它可以位于微处理器的内部或外部,其容量为256KB~1GB,根据具体的应用而定,一般片内存储器容量小,速度快,片外存储器容量大。

常用作主存的存储器有:

ROM类 NOR Flash、EPROM和PROM等。

RAM类 SRAM、DRAM和SDRAM等。

其中NOR Flash 凭借其可擦写次数多、存储速度快、存储容量大、价格便宜等优点,在嵌入式领域内得到了广泛应用。

3.辅助存储器

辅助存储器用来存放大数据量的程序代码或信息,它的容量大、但读取速度与主存相比就慢的很多,用来长期保存用户的信息。

2.1.3、通用设备接口和I/O接口

嵌入式系统和外界交互需要一定形式的通用设备接口,如A/D、D/A、I/O等,外设通过和片外其他设备的或传感器的连接来实现微处理器的输入/输出功能。

2.2软件系统

系统软件层由实施多任务操作系统(Real-time Operation System,RTOS)、文件系统、图形用户接口(Graphic User Interface,GUI)、网络系统及通用组件模块组成。RTOS是嵌入式应用软件的基础和开发平台。

嵌入式实时操作系统:

实时多任务操作系统(RTOS)是嵌入式应用软件的基础和开发平台。RTOS是一段嵌入在目标代码中的程序,系统复位后首先执行,相当于用户的主程序,其他程序都建立在RTOS之上。

2.3中间层

硬件层与软件层之间为中间层,也称为硬件抽象层(Hardware Abstract Layer,HAL)或板级支持包(Board Support Package,BSP),它将系统上层软件与底层硬件分离开来,使系统的底层驱动程序与硬件无关,上层软件开发人员无需关心底层硬件的具体情况,根据BSP 层提供的接口即可进行开发。该层一般包含相关底层硬件的初始化、数据的输入/输出操作和硬件设备的配置功能。

BSP具有以下两个特点:

硬件相关性:因为嵌入式实时系统的硬件环境具有应用相关性,而作为上层软 件与硬件平台之间的接口,BSP需要为操作系统提供操作和控制具体硬件的方法。

操作系统相关性:不同的操作系统具有各自的软件层次结构,因此,不同的操作系统具有特定的硬件接口形式。

3.嵌入式系统的开发

3.1嵌入式两种开发

硬件,主要使用语言是C语言和汇编,例如做dsp开发,做驱动开发,这类的开发对硬件要求比较高,短期内比较难掌握,除非是专业人士,另外,这类开发的就业机会比较少,因为国内的硬件设计力量很弱,稍复杂的硬件都交给国外公司设计,所以大学生找这样的工作很难,这也是为什么很多这类的毕业生都转行去做应用层的软件开发或者做网络维护之类的工作了。

软件,主要基于嵌入式操作系统,例如Symbian、Linux、Windows mobile、Android等等,开发人员主要从事嵌入式操作系统和应用软件的开发。特点是:比较容易上手学习,就业机会多,因为嵌入式设备的增值很大程度上取决于嵌入式软件,这占了嵌入式系统的最主要工作。越是智能设备越是复杂系统,软件越起关键作用,而且这是目前的趋势,所以需要大量的研发人员,而且就业前景也非常的看好。

3.2嵌入式系统开发生命周期

硬件与软件将同时进行开发。理解硬件与软件功能相互之间的关系及界限有助于确保设计要求得到完整正确的理解和实现。

早在设计要求的定义与分析阶段,就必须分配系统仿真、原型设计和行为建模结果、一旦分配结束,就可以立即着手具体的设计和实现。实时系统开发中软硬件的并行设计会使用到各种分析技术,包括:

1.硬件与软件仿真;

2.硬件/软件协同仿真;

3.可调度的建模技术,如速率恒定分析;

4.原型设计和渐进式开发。

低层仿真可以用来为总线宽度和数据流程建模,这对性能评估是非常有用的。高层仿真可以满足功能的交互,并促成硬件/软件权衡研究及有效性设计。

4.嵌入式系统的现状与发展

发展现状:

随着信息化,智能化,网络化的发展,嵌入式系统技术也将获得广阔的发展空间。

硬件方面,不仅有各大公司的微处理器芯片,还有用于学习和研发的各种配套开发包。目前低层系统和硬件平台经过若干年的研究,已经相对比较成熟,实现各种功能的芯片应有尽有。而且巨大的市场需求给我们提供了学习研发的资金和技术力量。

从软件方面讲,也有相当部分的成熟软件系统。国外商品化的嵌入式实时操作系统,已进入我国市场的有WindRiver、Microsoft、QNX和Nuclear等产品。

发展趋势:

信息时代,数字时代使得嵌入式产品获得了巨大的发展契机,为嵌入式市场展现了美好的前景,同时也对嵌入式生产厂商提出了新的挑战,从中我们可以看出未来嵌入式系统的几大发展趋势:。

1.嵌入式开发是一项系统工程,因此要求嵌入式系统厂商不仅要提供嵌入式软硬件系统本身,同时还需要提供强大的硬件开发工具和数据库支持。

目前很多厂商已经充分考虑到这一点,在主推系统的同时,将开发环境也作为重点推广。 2.网络互联成为必然趋势。

未来的嵌入式设备为了适应网络发展的要求,必然要求硬件上提供各种通信接口。传统的单片机对于网络支持不足,而新一代的嵌入式处理器已经开始内嵌网络接口,支持更多协议。

3.精简系统内核、算法,降低功耗和软硬件成本。

未来的嵌入式产品是软硬件紧密结合的设备,为了减低功耗和成本,需要设计者尽量精简系统内核,只保留和系统功能紧密相关的软硬件。

第17篇:嵌入式课程设计报告

福建工程学院

《嵌入式系统》课程设计

报告书

题目:

基于S3C2440设备驱动及其界面设计

班级:

姓名:

学号:

指导老师:

陈靖,张平均,李光炀

一、设计课题 ...............................................................................................................................4

二、设计目的 ...............................................................................................................................4

三、设计任务及要求 ...................................................................................................................4

四、设计内容 ...............................................................................................................................5

五、操作界面的生成 ...................................................................................................................7

六、操作界面调试 .......................................................................................................................9

七、设计总结 .............................................................................................................................10

八、设计参考书 .........................................................................................................................12

九、附件(程序) .....................................................................................................................13

一、设计课题

基于S3C2440的设备驱动及其界面设计

二、设计目的:

1.进一步巩固嵌入式系统的基本知识; 2.掌握嵌入式应用系统的基本结构; 3.掌握嵌入式系统开发环境建立和使用;

4.掌握嵌入式系统基本驱动、应用程序的设计调试和编译移植方法; 5.学会查阅有关专业资料及设计手册; 6.MiniGUI界面编程。

三、设计任务及要求:

1.掌握嵌入式系统开发环境建立和使用;

2.掌握嵌入式系统基本驱动、应用程序的设计调试和编译移植方法;

3、MiniGUI在PC上的安装、移植

4、Linux基本输入输出驱动程序设计编译与移植

5、基于MiniGUI的基本输入输出应用编程编译与移植

6、编写设计说明书(方案的确定、设计环节的考虑及必要说明等)及设备的使用说明;

7、绘制有关图纸.

四、设计内容:

1、基础知识准备

1)讲解设计任务; 2)熟悉ubuntu的使用; 3)熟悉TQ2440试验系统的使用; 4)掌握嵌入式系统开发环境建立和使用;

5)掌握嵌入式系统基本驱动、应用程序的设计调试和编译移植方法.

2、界面设计环境构建:MiniGUI在PC上的安装、移植

2.1、MiniGUI在pc机上安装和运行

建立工作目录:mkdir /minigui-free

cd /minigui-free mkdir /src 复制源文件包到工作目录:cp /mnt/hgfs/D/src/* /minigui-free 解压文件到/minigui-free:

tar zxvf libminigui-1.6.10.tar.gz tar zxvf minigui-res-1.6.10.tar.gz tar zxvf mg-samples-1.6.10.tar.gz

2.2、MiniGUI库安装

(2)将libcro.sh考到minigui的lib库的解压文件夹中 (3)将rescro.sh 考到minigui的res资源解压文件夹中 (4)将samplecor.sh 考到sample例子解压文件夹中 (5)依次运行libcro.sh,rescro.sh,samplecor.sh (6)到nfsroot的,目录下,将libreduce.sh考到这个目录下,运行libreduce.sh 2.3、安装qvfb (1)解压qvfb1.1.tar.gz (2)./configure (3)make (4)make install 2.

4、配置MiniGUI.cfg vi /etc/MiniGUI.cfg 修改如下部分为 [system] # GAL engine and default options gal_engine=fbcon

defaultmode=800x480-16bpp # IAL engine ial_engine=fbcon mdev=/dev/mouse mtype=IMPS2 [fbcon] 6

defaultmode=800x480-16bpp [qvfb] defaultmode=800x480-16bpp display=0 1.5运行MiniGUI例子程序 (1)打开qvfb:qvfb & (2)运行helloword:

五、操作界面的生成

1、操作界面面执行文件的生成

1).在/minigui-free/mg-samples-1.6.10/src/修改源文件treeview.c 2).再次运行samplecor.sh,生成执行文件treeview

2、利用nfs进行挂载

1).将本地PC机的网络方式设置成为桥接

2).查看/etc/exports下可以挂载的目录

3).启动服务/etc/init.d/nfs-kernel-server restart 4).查看本机和ARM上的IP地址,设置在同一网段,然后ping,使其能够互通。 5).在超级终端上,进行操作

Mount -o nolock,rsize=1024,wsize=1024 本机IP:/ /mnt

将虚拟机和ARM进行挂载,可以查看到虚拟机根目录下的文件。

3、在超级终端上将需要的文件从虚拟机上复制到ARM机上

1).重新烧写文件系统镜像文件

2).挂载成功后,将/mnt/minigui-free/nfsroot/lib/*复制到/usr/lib/ 3).将/mnt/minigui-free/nfsroot/usr/local/lib/*复制到/usr/local/lib/ 4).将/mnt/etc/MiniGUI.cfg复制到/etc/ 8

5).将/mnt/minigui-free/mg-samples-1.6.10/src/*复制到/usr/minigui/

4、在超级终端上运行执行文件

1).进入/usr/minigui/运行treeview文件 2).可以再操作界面上现实我们所设计的界面

六、操作界面调试

1、点击LED1\\LED2\\LED3\\LED4,分别控制四盏led灯的亮暗,调试界面如下:

2、输入频率值,点击START键控制四盏led灯闪烁,调试界面如下:

七、设计总结

1、设计过程中遇到的问题

错误1:

InitGUI: Can not initialize colors of window element! InitGUI failure when using /usr/local/etc/MiniGUI.cfg as cfg file.解决方法:正确配置MiniGUI.cfg文件 错误2:

Permiion denied 解决方法:权限不够,使用root用户登录。 错误3:

编译出错未找到jpeg,png等

解决方法:安装zlib,png,jpeg库。

错误4:

出现符号未找到等编译错误 解决方法:make clean 后在make 错误5:

在minigui创建和移植的过程中,出现lib库编译不成功的现象,这是由于minigui是基于qt3的,因此需要添加qt3所在路径至配置文件。 错误:6 在开发板上添加鼠标设备后,提示视频采集失败,这是因为/etc下的配置文件MiniGUI.cfg中对外设控制范围的控制过大,银将其修改为与界面统一大小800*480.错误:7 在执行led灯控制程序之前应该首先停止开发板上原有的流水灯进程led-player。 错误:8 运行执行程序treeview后界面上出现两个光标,此时应该在/etc/init.d下的rcS文件中停用qt3的光标。

2、心得体会

本学期为期两周的嵌入式课程设计在不知不觉中结束了,虽说这次课程设计时间不是很长,但是感觉自己收获颇丰,不仅学习到了一些新知识,回顾了以前的一些快要遗忘的知识点,而且使自己的学习目标更加明确,学习方法更加完善,也体会到软件开发的趣味,更加清楚地认识到了自己在软件开发及学习上的一些不足之处。

两周的课程设计,在计算机这个博大深奥的领域我感觉自己还有好多东西要学,还有好多的东西不懂!嵌入式软件开发应用广泛而且前景很好,目前正处于人才紧缺的关口,嵌入式技术在未来能够得到更加广泛的应用。学好嵌入式,C语言很重要,所以感觉自己有必要在学习、积累一下这方面的知识。很多东西的学习不是一帆风顺也是比较耗时的,嵌入式也不例外,要想学好还必须下大力气,还必须坚持。这次的课程设计让我明确了一点:嵌入式开发对于提升我们的系统知识有很大的帮助,尤其是操作系统的知识。嵌入式

系统开发对于我们的知识面要求非常的广,且要有一定的深度。这次的课程设计因为是一个有针对性的训练,所以记的会非常牢固。跟平时上课不太一样,平时上完理论课很少有时间上机进行时间或者隔几天才上机练习,等到上机时一些东西可能遗忘了,比较耗费时间。在课上,有老师在前面演示我们感觉看得懂或感觉没问题,可轮到我们独立完成的时候,因为实际操作的少,其中的问题就来了!我很感谢学校特别是学院老师有实训这样的安排,把我们这一学期学的东西系统的集中的进行训练,让我们深刻明确的体验了一下软件开发的流程!还要感谢给我们实训的楚老师,感觉楚老师能力很强,也很有耐心,即使老师讲了很多遍的问题,我们不会,老师还是会走进我们给我们耐心的指导,还给我们讲一些学习计算机的方法,一些软件开发需要注意的细节,让我们知道自己在哪方面不足,需要加强,也让我们了解到哪些需要认真的学习,那些是重点,不是没有方向的乱学一通,什么也学不好!经过这次的实训,我真真确确的感受到了计算机在我们生活中工作中的运用,这些软件、程序能让我们提高工作的效率,更直观更便捷的切入主题。当然,在学习的过程中并不是一帆风顺的,在这之中,因为要操作的东西很多,有时错一步,后面的结果就无法显示,而自己的计算机水平还有待提高,根本检查不出来是哪里出了错!这时候,老师都会耐心的过来帮助我!在平时我们就需要好好的查阅书籍或者上网搜集相关资料去解决问题。

短短两周的课程设计很快结束了,我发现我对计算机这个专业、对嵌入式技术、对Linux都有了新的认识。通过这次的实训,我了解到,要真真正正的掌握计算机程序还不是一件简单容易的事儿,但真正掌握后,它带给我们的将是无穷的便捷与科技,我喜欢高端便捷的生活。我希望我能做计算机这个万能机器人的主人而不是奴隶,我会努力加油的!感谢学校,感谢老师给我的帮助,让我的思想、技能又上了一个台阶!感谢!加油!

八、设计参考书

1、《嵌入式系统接口设计与Linux驱动程序开发》

2、《ARM9嵌入式LINUX系统构建与应用》

4、MiniGUI编程手册

5、Linux应用程序编程

九、附件(程序)

#include

#include

/*包括 MiniGUI 常用的宏以及数据类型的定义*/ #include /*包含了全局的和通用的接口函数以及某些杂项函数的定义*/ #include

/*包含了

MiniGUI

绘图函数的接口定义*/ #include

/*包含了

libminigui 中所有内建控件的接口定义*/ #include #include #include

/*包含了许多UNIX系统服务的函数原型*/ #include

/*提供对I/O控制的函数*/

#define ID_LED1 101

/*定义各个控件与定时器的ID号*/ #define ID_LED2 102 #define ID_LED3 103 #define ID_LED4 104 #define ID_TEXT1 105 #define ID_TEXT2 106 #define ID_START 107 #define ID_STOP 108 #define ID_COMBOBOX 109 #define ID_TIMER 110

static int a,b,c,d=0;

/*定义LED灯的初始值*/ static int fd_led;

/*定义文件描述符*/

HWND hMainWnd;

/*定义主窗口句柄*/

static void draw_circular(HWND hdig,int x,int y,int r,int which)

/*自定义一个画圆函数,x、y、r、which分别表示圆心坐标、半径、颜色*/ {

HDC hdc;

/*定义设备上下文句柄*/ int color; color=((which==0)?PIXEL_green:PIXEL_red);

hdc=BeginPaint(hdig);

/*获得设备上下文句柄*/ SetBrushColor(hdc,color);

/*设置画刷颜色*/ FillCircle(hdc,x,y,r);

/*调用园填充函数*/ EndPaint(hdig,hdc);

/*释放设备上下文句柄*/ }

static DLGTEMPLATE DlgInitProgre=

/*定义对话框模板.用static类型数据,使该数据的定义只在所在文件中有效,以免因为名字空间污染造成潜在的编译或连接错误*/ {

WS_BORDER|WS_CAPTION,

/*对话框风格,WS_BORDER创建有边框的窗口 ,WS_CAPTION创建含标题栏的主窗口*/

WS_EX_NONE,

/*对话框扩展风格,WS_EX_NONE表示无扩展风格*/

0,0,800,480,

/*对话框位置,左上角坐标(0,0),800、480分别为宽和高*/

\"MY_LED_CONTROL\",

/*对话框标题*/

0,

/*对话框图标*/

0,

/*对话框菜单*/

9,

/*对话框中控件个数。这个必须要匹配*/

NULL,

/*pointer to control array*/

0

/*附加值*/ };

static CTRLDATA CtrlInitData[]=

/*控件数组*/ {

{

\"static\",

/*控件类型*/

WS_VISIBLE|SS_SIMPLE,

/*控件风格,WS_VISIBLE创建初始可见的窗口,SS_SIMPLE显示单行文本*/

100,270,150,40,

/*控件位置*/

ID_TEXT1,

/*控件ID*/

\"Please input frequency\",

/*控件内容*/

0,

/*附加值*/

WS_EX_NONE

/*控件扩展风格*/

},

14 { \"static\", WS_VISIBLE|SS_SIMPLE, 605,270,150,40, ID_TEXT2, \"HZ\", 0, WS_EX_NONE

}, {

\"button\", WS_VISIBLE|WS_TABSTOP, 135,160,80,60, ID_LED1, \"LED1\", 0, WS_EX_NONE

}, {

\"button\", WS_VISIBLE|WS_TABSTOP, 285,160,80,60, ID_LED2, \"LED2\", 0, WS_EX_NONE

}, {

\"button\", WS_VISIBLE|WS_TABSTOP, 435,160,80,60, ID_LED3, \"LED3\", 0,

/*WS_TABSTOP支持Tab键*/

WS_EX_NONE

}, {

\"button\",

WS_VISIBLE|WS_TABSTOP,

585,160,80,60,

ID_LED4,

\"LED4\",

0,

WS_EX_NONE

}, {

\"button\",

WS_VISIBLE|WS_TABSTOP,

285,360,80,60,

ID_START,

\"START\",

0,

WS_EX_NONE

}, {

\"button\",

WS_VISIBLE|WS_TABSTOP,

435,360,80,60,

ID_STOP,

\"STOP\",

0,

WS_EX_NONE

}, {

CTRL_COMBOBOX,

WS_VISIBLE|WS_TABSTOP|CBS_AUTOSPIN|CBS_AUTOLOOP,

/*CBS_AUTOSPIN创建旋钮数字框,CBS_AUTOLOOP框中的数字将自动循 环显示*/

435,270,80,40,

ID_COMBOBOX,

\"0\",

/*旋钮数字框初始值*/

0,

WS_EX_NONE

} };

static int DialogBoxProc(HWND hWnd, int meage, WPARAM wParam, LPARAM lParam) /*对话框过程函数,用来接收和处理所有发送到该窗口的消息*/ {

int number;

/*用来存从旋钮数字框获得的数值*/

static int t=0;

int num;

/*存放定时时间*/

switch(meage)

{

case MSG_INITDIALOG:

/*用户在定义自己的对话框回调函数时,需要处理

MSG_INITDIALOG消息,该消息是在

MiniGUI根据对话框模板建立对话框以及 控件之后 ,发送到对话框回调函数的 。*/

SendDlgItemMeage(hWnd, ID_COMBOBOX, CB_SETSPINRANGE, 0, 10000);

/*设置旋钮数字框的最大小值*/

return 1;

case MSG_PAINT:/*重绘消息*/

draw_circular(hWnd,175,90,30,1);

draw_circular(hWnd,325,90,30,1);

draw_circular(hWnd,475,90,30,1);

draw_circular(hWnd,625,90,30,1);

printf(\"*************************init draw_circular******************************\\n\");

case MSG_TIMER:t++;

/*定时器消息,这里完成LED灯的闪烁*/

if(t%2!=0)

{

ioctl(fd_led, 0,0);

ioctl(fd_led, 0, 1);

ioctl(fd_led, 0, 2);

ioctl(fd_led, 0, 3); printf(\"*************************time red******************************\\n\");

draw_circular(hWnd,175,90,30,1);

draw_circular(hWnd,325,90,30,1);

draw_circular(hWnd,475,90,30,1);

draw_circular(hWnd,625,90,30,1);

break;

}

else

{

ioctl(fd_led, 1,0);

ioctl(fd_led, 1, 1);

ioctl(fd_led, 1, 2);

ioctl(fd_led, 1, 3); printf(\"*************************time green******************************\\n\");

draw_circular(hWnd,175,90,30,0);

draw_circular(hWnd,325,90,30,0);

draw_circular(hWnd,475,90,30,0);

draw_circular(hWnd,625,90,30,0);

break;

}

case MSG_COMMAND: /*击键消息*/

switch (wParam)

{

case ID_LED1:a++;

/*控制LED灯亮暗*/

if(a%2!=0)

{

ioctl(fd_led,0,0);

draw_circular(hWnd,175,90,30,1);

}

else

{ /

ioctl(fd_led,1,0);

draw_circular(hWnd,175,90,30,0);

}

printf(\"******************led1********************************\\n\");

break;

case ID_LED2:b++;

if(b%2!=0)

{

ioctl(fd_led,0,1);

draw_circular(hWnd,325,90,30,1);

}

else

{

ioctl(fd_led,1,1);

draw_circular(hWnd,325,90,30,0);

}

printf(\"*******************led2********************************\\n\");

break;

case ID_LED3:c++;

if(c%2!=0)

{

ioctl(fd_led,0,2);

draw_circular(hWnd,475,90,30,1);

}

else

{

ioctl(fd_led,1,2);

draw_circular(hWnd,475,90,30,0);

}

printf(\"*******************led3********************************\\n\");

break;

case ID_LED4:d++;

if(d%2!=0)

{

ioctl(fd_led,0,3);

draw_circular(hWnd,625,90,30,1);

printf(\"*******************led33********************************\\n\");

}

else

{

ioctl(fd_led,1,3);

draw_circular(hWnd,625,90,30,0 );

}

printf(\"*******************led4********************************\\n\");

break;

case ID_START:printf(\"*******************start1*********************\\n\");

number=SendMeage(GetDlgItem(hWnd,ID_COMBOBOX), CB_GETSPINVALUE, 0, 0);/*获取旋钮数字框的数值*/

printf(\"**********%d*******************\\n\",number);

printf(\"*******************start2*********************\\n\");

if(number!=0)

{

printf(\"*******************start3*********************\\n\");

num=(int)(1000*(1.0/number));

/*将频率转换为时间*/

printf(\"*******************start4*********************\\n\");

}

else

{

printf(\"*******************start5*********************\\n\");

num=1000;

}

printf(\"*******************start6*********************\\n\");

printf(\"*******************start7*********************\\n\");

printf(\"*******************start8*********************\\n\");

SetTimer(hWnd,ID_TIMER,num); /*创建定时器,时间为num*10ms*/ printf(\"*************************SetTimer OK******************************\\n\");

SendMeage(hWnd,BM_CLICK,0,0);

/*发送点击信息*/ printf(\"*************************SendMeage OK******************************\\n\");

//for(i=0;i++;i

/*当初用for循环时无法进入循环,也许是因为消息本身有循环机制,用for循环太多也许冲突,所以后来用了定时器*/

//{

//

printf(\"********%d**********\\n,i\");

//

ioctl(fd_led, 1,0); //

ioctl(fd_led, 1, 1); //

ioctl(fd_led, 1, 2); //

ioctl(fd_led, 1, 3);

//

draw_circular(hWnd,175,90,30,0);

//

draw_circular(hWnd,325,90,30,0);

//

draw_circular(hWnd,475,90,30,0);

//

draw_circular(hWnd,625,90,30,0);

printf(\"*******************start9*********************\\n\");

// usleep(number);

//usleep(num);

//

ioctl(fd_led, 0,0); //

ioctl(fd_led, 0, 1); //

ioctl(fd_led,0, 2); //

ioctl(fd_led, 0, 3);

// draw_circular(hWnd,175,90,30,1);

21

// draw_circular(hWnd,325,90,30,1);

// draw_circular(hWnd,475,90,30,1);

// draw_circular(hWnd,625,90,30,1);

// printf(\"*******************start10*********************\\n\");

//usleep(number);

//usleep(num);

// }

printf(\"*******************start********************************\\n\");

break;

case ID_STOP:

KillTimer(hWnd,ID_TIMER);/*关闭定时器。下面的表示灯灭*/

ioctl(fd_led, 0,0);

ioctl(fd_led, 0, 1);

ioctl(fd_led, 0, 2);

ioctl(fd_led, 0, 3);

draw_circular(hWnd,175,90,30,1);

draw_circular(hWnd,325,90,30,1);

draw_circular(hWnd,475,90,30,1);

draw_circular(hWnd,625,90,30,1);

printf(\"**************stop******************\\n\");

break;

}

}

return(DefaultDialogProc(hWnd,meage,wParam,lParam));

/*对话框的缺省消息处理由 DefaultDialogProc 函数完成*/ }

static void InitDialogBox(HWND hWnd) { DlgInitProgre.controls=CtrlInitData;

22

/*将对话框模板结构和控件结构数组关联起来*/ DialogBoxIndirectParam(&DlgInitProgre,hWnd,DialogBoxProc,0L);/*创建对话框*/

printf(\"*************create dialog**********************\\n\"); }

/*****************************************************************

主窗口的过程函数

static int LedWinProc(HWND hWnd, int meage, WPARAM wParam, LPARAM lParam) {

HDC hdc;

switch (meage)

{

case MSG_PAINT:

hdc = BeginPaint (hWnd);

TextOut (hdc, 60, 60, \"My leds control!\");

EndPaint (hWnd, hdc);

return 0;

case MSG_CLOSE:

DestroyMainWindow (hWnd);

PostQuitMeage (hWnd);

return 0;

}

return DefaultMainWinProc(hWnd, meage, wParam, lParam);

}

*********************************************************************/ int MiniGUIMain (int argc, const char* argv[])

{

// MSG Msg;

// MAINWINCREATE CreateInfo; /*描述主窗口的属性*/

#ifdef _MGRM_PROCESSES

JoinLayer(NAME_DEF_LAYER , \"led\" , 0 , 0);

/*选择PROCESSES模式*/

#endif

printf(\"****************into main*********************\\n\");

fd_led=open(\"/dev/GPIO-Control\",0);

/*打开驱动设备*/

23

if (fd_led

{

perror(\"open device led\");

exit(1);

}

ioctl(fd_led, 0, 0);

/*初始灯灭*/

ioctl(fd_led, 0, 1);

ioctl(fd_led, 0, 2);

ioctl(fd_led, 0, 3);

InitDialogBox( HWND_DESKTOP);

close(fd_led); /*********************************************************** CreateInfo.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION; /窗口风格/

CreateInfo.dwExStyle=WS_EX_NONE;

/窗口扩展风格/

CreateInfo.spCaption=\"MY_LED_CONTROL_WIN\";

/窗口标题/

CreateInfo.hMenu=0;

/菜单/

CreateInfo.hCursor= GetSystemCursor(0);

/光标/

CreateInfo.hIcon=0;

/图标/

CreateInfo.MainWindowProc=LedWinProc;

/设置主窗口的窗口函数,所用发往该窗口的消息由该函数处理/

CreateInfo.lx=0;

/窗口位置/

CreateInfo.ty = 0;

CreateInfo.rx = 240;

CreateInfo.by = 180;

CreateInfo.iBkColor=COLOR_lightwhite;

/设置背景颜色/

CreateInfo.dwAddData=0;

/附加数值/

CreateInfo.hHosting=HWND_DESKTOP;

/设置窗口的托管窗口为桌面窗口/

hMainWnd = CreateMainWindow (&CreateInfo);

/创建主窗口,返回创建窗口的句柄/

if (hMainWnd == HWND_INVALID)

return -1;

ShowWindow(hMainWnd,SW_SHOWNORMAL);

/显示窗口的显示方式/

while(GetMeage(&Msg, hMainWnd)) /获取主窗口的句柄,指向MSG结构指针/

24

{

TranslateMeage(&Msg);

/将击键消息转换为MSG_CHAR消息,然后直接发送到窗口的过程函数/

DispatchMeage(&Msg);

/获取消息的目标窗口的窗口过程,然后直接调用 该窗口过程函数对消息进行处理/

}

MainWindowThreadCleanup (hMainWnd); /清除主窗口所使用消息队列的系统资源/ *****************************************************************************/

return 0;

}

#ifndef _MGRM_PROCESSES #include #endif

25

第18篇:嵌入式读书报告

《深入理解Linux内核,第三版》读后感

这学期在我们学习嵌入式将近结束的时候,老师推荐了几本书,叫我们感兴趣的下去自己借来看看。一来是为了更好的学习知识,提高我们的专业水平,二来是为了让我们更好找到适合自己的学习途径。因此我选择了《深入理解Linux内核,第三版》。

为了彻底理解是什么使得Linux能正常运行以及其为何能在各种不同的系统中运行良好,你需要深入研究内核最本质的部分。内核处理CPU与外界间的所有交互,并且决定哪些程序将以什么顺序共享处理器时间。它如此有效地管理有限的内存,以至成百上千的进程能高效地共享系统。它熟练地统筹数据传输,这样CPU不用为等待速度相对较慢的硬盘而消耗比正常耗时更长的时间。

《深入理解Linux内核,第三版》指导你对内核中使用的最重要的数据结构、算法和程序设计诀窍进行一次遍历。通过对表面特性的探究,作者给那些想知道自己机器工作原理的人提供了颇有价值的见解。书中讨论了Intel特有的重要性质。相关的代码片段被逐行剖析。然而,本书涵盖的不仅仅是代码的功能,它解释了Linux以自己的方式工作的理论基础。

本书新版涵盖2.6版本,其在内核的几乎每个子系统中都有得要的文化,尤其是在内存管理和块设备领域。本书侧重于以下主题:内存管理,包括文件缓存、进程交换和直接内存存取(DMA);虚拟文件系统层和第

二、第三扩展文件系统;进程创建和调度;信号、中断和设备驱动程序的主要接口;定时;内核中的同步;进程间通信(IPC);程序的执行。

通过阅读《深入理解Linux内核》,使我了解了Linux的所有内部工作,它不仅仅是一个理论的练习。我还学习到哪些情况下Linux性能最佳,并且看到了在大量的不同环境里进行进程调度、文件存取和内存管理时它如何满足提供良好的系统响应的需要。这本书将帮助我充分利用Linux系统。

读《UNIX环境高级编程》第二版有感

——计算机学院计算机科学与技术专业2006级1班 06101018154 杨丽

学习嵌入式近一个学期,在这学期中对于UNIX也有了简单的了解。出于对编程的爱好,并为了更进一步的学习UNIX,在老师的推荐下选择了《UNIX环境高级编程》第二版。读完这本书之后,我深有感触。

本书是被誉为UNIX编程“圣经”的Advanced Programming in the UNIX Environment一书的更新版。在本书第1版出版后的十几年中,UNIX行业已经有了巨大的变化,特别是影响UNIX编程接口的有关标准变化很大。本书在保持了前一版的风格的基础上,根据最新的标准对内容进行了修订和增补,反映了最新的技术发展。书中除了介绍UNIX文件和目录、标准I/O库、系统数据文件和信息、进程环境、进程控制、进程关系、信号、线程、线程控制、守护进程、各种I/O、进程间通信、网络IPC、伪终端等方面的内容,还在此基础上介绍了多个应用示例,包括如何创建数据库函数库以及如何与网络打印机通信等。此外,还在附录中给出了函数原型和部分习题的答案。

本书内容权威,概念清晰,阐述精辟,对于所有层次UNIX程序员都是一本不可或缺的参考书。UNIX环境高级编程,是Unix编程方面的杰作,自问世以来就深受Unix编程人员的喜爱了。如今第二版本也问世,紧接着中文版也由人民邮电出版了。这是同行的福分。本书的独特之处在于内容不仅全面,而且对每一部分的讲解更是详细、深邃啊。对于Unix编程的许多高级主题,比如,进程控制、信号、线程、线程控制等内容的讲解非常简洁明了。不仅适合初学人员,也是高级开发人员爱不释手的手册。可以说,在工作中碰到的问题,都可以在其中找到相应的解决方法。不信,你可以试一试。

本书在Unix程序员培养方面,这是功不可没啊。不过,这一切都源于W.Richard Stevens对Unix的深邃的理解和对各种问题的独具匠心的分析和讲解。作者不愧是Unix方面的权威人物,他同时是TCP/IP详解(三卷)以及Unix网络编程(两卷)的作者。而且,这也是计算机相关领域的经典著作。W.Richard Stevens先生实在是德高望重了,只可惜天嫉英才啊。1999年,他悄然的离开了人世,哀莫之余,也给大家留下了许多遗憾。但是谁也改变不了这铁的事实。真是遗憾!

第19篇:11嵌入式实习日记

实习目的:

1、通过课程设计实践,树立正确的设计思想,锻炼学生综合运用单片机控制器进行课

程设计并结合其他先修课程的理论将其与实际知识来结合,从而培养分析、解决单片机系统设计问题的能力。

2、学习单片机系统设计的一般方法,掌握单片机系统设计的一般规律。

3、进行单片机系统设计的基本技能训练。

实习要求:

1、设计为基于AT89S51单片机为核心的十字路口交通灯(密码锁)的功能实现,首先

要了解单片机控制器的引脚,功能,相关寄存器等基本知识。

2、要了解交通灯(密码锁)实现的功能及方法。

3、实现交能灯(密码锁)硬件电路的设计。

4、实现交能灯(密码锁)软件控制代码的设计。

实习计划:

2012.12.24~~2012.12.28

完成基于51系列单片机设计的密码锁或十字路口交通灯的proteus仿真设计,并写书说明书和设计报告。

2012.12.31~~2013.01.04:

完成单片机开发板的焊接调试工作。

第20篇:嵌入式专业实习调查报告

在大学里,我一直在不断的努力,我相信我可以做的更好的,可是一直以来我没有很大的进步,我好像进入了瓶颈期。我学习的是电子信息科学与技术专业,现实的情况是,只有技术十分好,在社会上才可以做的更好,我需要更多的经历和实践来参加我的专业,那样我才可以做的更好!我开始到汇文嵌入式培训公司实习。在老师和同学们的帮助下,我慢慢得了解嵌入式行业。

随着智能化电子行业的迅猛发展,嵌入式行业凭借其“应用领域广、人才需求大、就业薪资高、行业前景好”等众多优势无疑已成为当前最热门、最有发展前途的行业之一,与此同时,嵌入式研发工程师更是日益成为IT职场的紧缺人才。

据估计,全球目前嵌入式软件市场的规模超过1000亿美元,而且每年以超过30%的速度在增长。在中国,嵌入式市场规模已超过500多亿元,预计未来三年中国嵌入式软件产业仍将有高达40%左右的年增长率,而到2010年中国嵌入式软件市场规模将达到1000亿元。诱人的市场使得全球嵌入式巨头纷纷进军嵌入式市场,国家政策也对嵌入式软件行业实行“增值税优惠”的政策倾斜。嵌入式已经形成了一个充满商机的巨大产业,并且成为整个软件业的发展支柱!技术以人为本,嵌入式行业正以其“应用领域广、人才需求大、就业薪资高、行业前景好”等众多优势,获得越来越多嵌入式 开发人员的关注,无数研发工程师开始转入嵌入式这一行业。

调查数据显示,嵌入式人才需求目前仍然是供不应求,接近80%参与调查的工程师都表示,自己公司目前都急缺嵌入式开发方面的人才,如此巨大的人才缺口,表明了在嵌入式技术高速发展的今天,专业的嵌入式开发人才已成为整个行业发展的一个瓶颈,如何培养适合企业需求的嵌入式开发人才也成为整个行业急需解决的问题。

普通员工的招聘渠道嵌入式业普通员工的主要渠道集中在招聘会、媒体广告、人才交流中心、校园招聘四大块。录用员工的主要来源嵌入式业员工主 要来源于毕业生和社会人员,分别为33%、49%,通过劳务派遣的方式最少,仅有3%。嵌入式企业甄选人员的主要方法,嵌入式企业大部分都是将“面试”作为第一位选聘方法,将“知识考试”作为第二位选聘方法,其中面试占比例为94.5%、知识考试比例为61.7%,只有少部分使用心理测试和竞聘演讲的方式,分别为18.9%、9%。结果表明,当前我国企业甄选员工的方法并没有发生质的变化,仍以主观印象和知识为主,以岗位胜任特征和个人潜能评价为重点的甄选技术,方法有待强化和发展,因为企业招聘的任务是要保证符合岗位标准、与企业价值观基本一致和高潜能的应聘者能够应聘。总体上看,嵌入式企业在员工培训经费的投入上普遍较低,与一个飞速发展中的产业不相适宜。

4.9 %的企业投入都在0.5‰以下,26.9%的企业投入在0.5-1‰,15.3%企业投入在

1-3‰,7.5%企业投入在3-5‰,5.4%的企业投入在5‰以上。员工培训的主要方式“企业内部培训”占的比例最高,达到52.3%,其次是“外部培训”和“学历教育”,分别为34.3%、

9.3%嵌入式企业在员工培训中,普遍采用以公司内部培训为主的方式,说明企业培训更为关注员工岗位技能的提高,是理性选择培训方式的结果。“外部短训”的比例较高,说明企业对外部培训市场的需求较大。培训结果对员工晋升的影响情况培训结果对员工晋升的影响“影很大”占7.6%,“有些影响”的占69.5%,“不影响的”占22.9%。尽管企业培训结果对员工晋升仅仅是一个方面的作用,但由于晋升对员工的激励较之其它方式更具有实际意义,因而常常作为评估培训结果的一个相对重要的指标。一般说来,如果企业培训的结果对员工晋升影响很大,那么就会使人们日益意识到培训对个体职业生涯发展的重要意义;如果企业的培训对员工的发展没有实际的帮助,就不会激发起员工对培训的天然渴望。启示:培训经费的低投入必然严重影响员工素质的提高,需要引导企业从人才战略和可持续发展的高度认识这一问题,加大培训投入力度。员工培训比例较高,但执行不力。难以产生好的培训结果并达到预期的培训目的,从而反映出嵌入式企业培训的制度化、规范化程度有待加强。

从整体来看,月工资在3000元以下的嵌入式从业人员主要集中在计算机软件及计算机硬件行业,而其地区分布主要集中在北京、上海、深圳等发达城市外的其他地区。通过不同月薪范围嵌入式从业人员的学历以及工作经验的调查中我们发现,个人薪资的高低还是取决于工作经验和学历水平。博士学历的月薪资为3000以下的嵌入式从业人员的比率为零,而硕士生也仅为1.5%。与之相反,学位较低的大专以下水平的嵌入式从业人员中85%处于3000以下月工资水平。作为占整体数量11.5%的月收入在8000元以上的嵌入式从业人员,他们较多拥有高学历,且工作年份越长。此外,工作时间在5-10年这个阶段的各类学历人士的薪资在8000元以上的比例均较高。从地域分布看,此次调查的嵌入式从业人员所在城市主要集中在北京、上海、深圳、广东这几大城市。此外,不同行业之间的薪资情况也有很大不同。通信设备以及手机制造行业、电子及微电子技术行业的整体薪资水平较高,而计算机软件行业在不同的薪资范围的分布比较平均。计算机硬件行业和互联网及电子商务行业的薪资水平则趋于两极化。启示:薪酬的高低受员工嵌入式工作经验、学历水平、地域等多方面的影响,了解行业薪酬的分布状况,有利于嵌入式企业根据战略制定出合适的薪酬体制。

在调查中发现,国内超过八成的嵌入式企业员工对自己所在的企业没有好感,如果能够有更高的薪水和更高的职位,近六成员工随时准备跳槽。这也直接导致员工对企业领导的信任危机和对企业未来发展前景的不信任。占调查总数的62.48%的员工表示,他们并不信任领导所描绘的发展前景,22.26%的员工没注意过领导描绘的前景。两项调查中,只有18.28%,1038名员工以自己所在的嵌入式企业自豪,15.25%相信企业领导者所描绘的未来。四成员工

随时准备离开对公司没有好感,不信任领导,这也能侧面反映出员工对于企业的忠诚度。而调查中的一组数据则更直观地说明了这一点。调查结果显示,有2406名员工(占调查总数的42.31%)打算离开,32.22%的员工则决定“混一天是一天”,只有25.47%的员工愿意留在现在所处的企业继续工作。结果也显示出,促使嵌入式企业员工离职,薪水、职位与兴趣,成为跳槽的三大关键因素。32.62%的员工选择“拿到更高的薪水”;27.08%的员工选择“更高的职位”;26.62%的员工选择由自己的兴趣来决定;还有13.68%的员工则是因为太疲惫而选择离开。启示:如何留住优秀的人才是人力资源经理必需面对的一个课题,而嵌入式企业过高的人员流失率,会影响到企业的长期战略的实现。可通过各种手段——加薪、升职等来培养员工对企业的忠诚度。

调查结果显示,绝大部分嵌入式工程师都认为嵌入式是非常有发展前途的行业(94%),而在这94%参与调查的工程师当中,48%的工程师充满信心,准备施展才华,另有46%的工程师虽然对嵌入式行业前景表示认可,但有时也会觉得迷茫。嵌入式行业无疑是目前非常有发展前途的行业,它以其众多优势吸引越来越多的工程师投入到这一领域,但在这一过程中,嵌入式企业以及从业人员也需要端正心态,戒骄戒躁,不要急于求成,只有脚踏实地才能真正在某一领域有所作为。

总之,以上就是我在这次实习期间调查的有关情况。其中有些看法也许不尽正确,但毕竟这是我通过实际调查得到的结果,我会从中吸取一些优秀老师的做法,结合自己实际的水平应用到今后的学习中去。我想只要我能够以积极的心态坚持下去,多了解当下的实际情况,解放思想、实事求是、与时俱进,我在不久的将来会成为一名合格的嵌入式工程师,但愿我的想法能变成现实。

最后对在本次调查中给予我很大支持的老师们、学生们表示感谢!

嵌入式实习报告
《嵌入式实习报告.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
相关专题
点击下载本文文档