嵌入式系统

2024-10-18

嵌入式系统(10篇)

1.嵌入式系统 篇一

南京信息工程大学 实验(实习)报告

实验(实习)名称

电机转动控制及中断实验 实验(实习)日期

2016.5 得分

指导教师 谢胜东

学院 计算机与软件 专业 计算机科学与技术 年级

2013 班次 3 姓名

叶正舟 学号

20131308072 实验名称

电机转动控制及中断实验 实验目的

(1)熟悉ARM本身自带的六路即三对PWM,掌握相应寄存器的配置

(2)编程实现 ARM系统的PWM 输出和I/O 输出,前者用于控制直流电机,后者用于控制步进电机。

(3)了解直流电机和步进电机的工作原理,学会用软件的方法实现步进电机的脉冲分配,即用软件的方法代替硬件的脉冲分配器。

(4)掌握带有PWM 和I/O 的CPU 编程实现其相应功能的主要方法。实验环境

(1)ADS1.2开发环境(2)PC(3)串口线 实验内容及要求

学习步进电机和直流电机的工作原理,了解实现两个电机转动对于系统的软件和硬件要求。学习ARM知识,掌握PWM 的生成方法,同时也要掌握I/O 的控制方法。

(1)编程实现ARM芯片的一对PWM 输出用于控制直流电机的转动,通过A/D 旋钮控制其正反转及转速

(2)编程实现ARM的四路I/O 通道实现环形脉冲分配用于控制步进电机的转动,通过A/D 旋钮转角控制步进电机的转角。

(3)通过超级终端来控制直流电机与步进电机的切换。实验设计与实验步骤

(1)新建工程,将“电机转动控制实验”中的文件添加到工程(2)编写直流电机初始化数(MotorCtrl.c)(3)控制直流电机与步进电机 实验过程与分析

(1)通过把从串口中得到控制信息的代码修改成从zlg7289芯片中读取小键盘信息,从而利用试验台的小键盘来控制步进电机和直流电机的切换

(2)A/D转换可以把电信号转换成数字信号来控制电机的转速。for(;;)

{ loop:

//if((rUTRSTAT0 & 0x1))//有输入,则返回

if(rPDATG&ZLG7289_KEY)//17键小键盘控制电机

{

*Revdata=RdURXH0();

goto begin;

}

Delay(10);ADData=GetADresult(0);

if(abs(lastADData-ADData)<20)

goto loop;Delay(10);count=-(ADData-lastADData)*3;

//(ADData-lastADData)*270/1024为ad旋钮转过的角度,360/512为步距角,//由于接了1/8减速器,两者之商再乘以8为步进电机相应转过的角度

if(count>=0)

{//转角大于零

for(j=0;j

{

for(i=0;i<=7;i++)

{

SETEXIOBITMASK(stepdata[i], 0xf0);

Delay(200);

}

}

}

lastADData=ADData;

} } 实验结果总结

利用A/D转换器实现了对直流电机和步进电机的控制,利用实验设备上自带的小键盘实现了A/D转换器对两个电机控制的切换。心得体会

通过本次实验,熟悉了ARM自带的六路(三对)PWM,并对直流电机和步进电机的工作原理有了进一步的了解。

2.嵌入式系统 篇二

近几年来,随着人们对嵌入式设备越来越高的应用需求,32位嵌入式系统应用逐渐深入到各个应用领域。Flash存储器制造成本低廉、存储容量大、数据非易失、无机械故障,在嵌入式系统中被广泛应用,尤其以NAND Flash做为大容量数据存储。根据NAND Flash的物理结构特点设计有效管理NAND Flash的文件系统可解决嵌入式系统中的大容量存储管理问题。而对设计文件系统而言,算法设计是文件系统的核心部分。

2 闪存的物理结构

NAND闪存阵列分为一系列的区块(block),这些区块是NAND器件中最小的可擦除实体,每个区块包含一定数量的页。擦除一个区块就是把所有的位(bit)设置为“1”(而所有字节(byte)设置为FFh)。写操作就是通过编程,将已擦除的位从“1”变为“0”。读写以页为单位,页包含数据区和空闲区(OOB,out-of-band),OOB区用于纠错码(ECC)等软件开销。NAND闪存复用指令、地址和数据总线、串行地址存取数据和发指令,节省芯片引脚数,这种结构不用改变硬件设计就可支持更大容量的芯片。

对NAND的操作有页读方式:读数据区页和读OOB区,页写入、块擦除,将块全部字节编程为0xFF来回收空间。目前市场上NAND Flash可分小页闪存:主数据区512字节,OOB区16字节;大页闪存每块有64页,每页有2048字节的主数据存储区和64字节的OOB区。

3 文件系统中的算法

根据闪存的物理结构,NAND Flash上的每页都有额外的空间(OOB区)用来存储附加信息,文件系统正是利用了这部分来存储文件系统相关的内容。

3.1 基本思想

文件系统上的所有内容(比如正常文件,目录,链接,设备文件等等)都统一当作文件来处理,每个文件都有一个页面专门存放文件头,文件头保存了文件的模式、长度、文件名、父对象标示等信息。NAND Flash的基本写入单位是页,文件系统在分配存储空间的时候也是以页为单位的,不过在文件系统中被称做chunk,其大小同NAND Flash中的Page一样大,但实际上它们意义不同,Page所指的是NAND Flash Memory上的实际数据储存区,而Chunk所表示的是文件系统所配置到的逻辑数据储存区对象,chunk的大小可以和Page不同。

以512+16Byte为一个PAGE的NAND Flash芯片为例,文件系统数据的存储布局如表1所示。

在这里一共使用8个Byte用来存放文件系统相关的信息(jkffs_Tags),这8个Byte的具体使用情况按顺序见表2。

在加载过程中需要将文件系统的目录结构在内存中建立起来。扫描每一个chunk。因为chunk通过OOB数据区来存放文件的信息,所以在扫描时不需要扫描整个chunk,而只需读取00B中的内容,这样可以大大加快系统的加载速度。根据从OOB中读取出的jkffs_tags信息来判断是文件头chunk还是数据chunk。然后根据文件头chunk中的内容以及数据chunk中的objectID、chunkID等信息在内存中为每个文件建立一个对应的对象。在扫描完所有的Block后,会把Flash内的所有File、Directory、SoftLink或HardLink建立成对应的jkffs_Object,并建立jkffs_Object之间的关系,这样就在RAM中形成一种架构,文件系统在RAM中加载成功。

3.2 文件系统的寻址

系统想要存取设备上的数据时是以Logical Address(相对于该文件所产生的偏移位址)的方式到所指定的地址进行存取,若想要到物理设备上取数据,则需要再经过转换,将Logical Address转换为Physical Address,才可从物理设备上读出数据至RAM中。

如何根据文件内偏移地址确定Flash存储地址呢?通过创建节点树可实现高效的寻址。我们先看结构定义:

这是一个长度为8的指针数组。据此结构创建的节点树最底层的节点成为叶子节点,中间的就是非叶子节点。不管是叶子节点还是非叶节点,都是这个结构。当节点为非叶节点时,数组中的每个元素都指向下一层子节点;当节点为叶子节点时,该数组拆分为16个N位(位宽,TnodeWidth)长的短整数,该短整数就是文件内容在flash上的存储位置。

最底层节点即叶节点中一个Tnode的位宽决定了文件系统所能寻址的最大空间,假设为TnodeWidth=16,也就是可以表示216=65536个chunk。对于时下的大容量NAND Flash,chunk的大小为2KB,因此这种情况下所能寻址的最大Flash空间就是128MB。为了能使文件系统用于更大容量Flash上,可以通过两种手段解决这个问题。第一种手段就是这里的TnodeWidth,通过增加单个Tnode的位宽,就可以增加其所能表示的最大chunk ID;另一种手段是采用chunk组,通过将若干个chunk合成一组用同一个ID来表示,也可以增加系统所能寻址的chunk范围。

文件系统通过节点树来查找文件是非常简单和方便的。中间节点使用的Tnode每组有8个指针,所以需要3位二进制代码对其进行索引,因此树每长高一层,chunkID就会多出3位。反过来,每3位非零chunkID就代表一层非叶节点。同时。叶节点使用的Tnode每组有16个指针,所以需要4位二进制代码对其进行索引。

根据上面所述可以得到下面的方法:对将要查找的文件的chunkID按照每三位分为一组,LEVELO的用四位表示。比如要查找chunkID为0x235的文件,须先将其划分为000,000,100,011,0101。通过表3可以看出所要找的这个page应该是在第二层的节点到1层的第4节点到。层的第三节点这颗子树上,也就是O层该节点的第5个与所指向的那个chunk。

当节点树结构TNode Structure刚开始建立时,仅建立最底层Lowest-LevelTnode,当File所配置的chunk数超过16个时,则此Tree会建立一个中间节点internal Tnode,并将其第0个Pointer指向原本的Lowest-Level Tnode。当读取到的chunk数愈來愈多时,会一直新增Tnode,且节点树也会越来越高。

假定有一个大小为128KB的文件,Flash的page大小为2KB,那么就需要64个page(或者说chunk)来存储该文件。一组Tnode的size是8个指针,或者16个16位整数,所以需要64/16=4组Tnode来存储物理chunk序号。这4组Tnode就是映射树的叶节点,也就是Level0节点。由于这4组Tnode在内存中不一定连续,所以需要另外一组Tnode,将其作为指针数组使用,这个指针数组的前4个元素分别指向4组Level0节点。随着文件长度的增大,所需的叶节点越多,非叶节点也越多,树也就越长越高。

3.3 节点树底层节点动态位宽

节点树底层节点位宽决定了文件系统所能寻址的最大空间,chunk的大小为512byte,那么32M NAND Flash需要65536个chunk,也就是需要大小为16bit的index来检索chunk。则64M NAND Flash至少需要17bit的index来检索所有chunk;128M NAND Flash至少需要18bit的index来检索所有chunk。实际上,为了便于处理规定Tnode的大小tnodeSize必须为32bit的倍数,tnodeSize=(tnodeWidth*16)/8,单位为Byte。其中tnodeWidth表示位宽,因为level 0的Tnode为16个physical chunk index。由上可知tnodeWidth为physical chunk index的大小,单位为bit。要使tnodeSize为4Byte的倍数,那么64MB flash的chunk_index_bits最小取18bit。这样tnodeWidth=18就能直接寻址128MB。

为了管理目前市场上各种主流的大容量NAND Flash,考虑增大位宽,比如tnodeWidth=20,以大页NAND Flash例,这样文件系统能寻址的最大空间:220*2KB=2GB,基本上能管理目前市场上主流闪存存储器芯片。但是这样建立的节点树占用了嵌入式系统中RAM的更多的空间,对系统性能有影响,而且对设计千变万化的嵌入式系统显得不够灵活。

在系统初始化过程中先读取NAND Flash信息,用闪存的总块数(nBlocks)乘以每块含有的页数计算出闪存所含有的总页数,也就是说文件系统需要管理这些页,然后计算出节点树底层节点位宽(tnodeWidth),具体算法如下:

(1)计算出总页数x=nChunksPerBlock*nBlocks。

(2)保证x大于1的情况下,对x右移1位,同时bits加1。

(3)重复(2),直到不满足x大于1。

(4)若bits为奇数,bits加1。

流程图如图1。

Bits值即为位宽,赋值给位宽(tnodeWidth)。这种方式解决了设定固定位宽占用系统RAM多的问题,能够做到管理市场上各种主流NAND闪存存储器。

在实际系统设计过程中,如果bits过大,可考虑使用chunk数组,采用一个chunk对应多个page方式,减少tnodeWidth值而达到同样的管理NAND闪存的目的。即使用chunk数组来增大文件系统的寻址范围,即通过将若干个chunk合成一组用同一个ID来表示,也可以增加系统所能寻址的chunk范围,这时,chunk的大小Page不同,假设一个chunk对应二个Page,把两个连续的页称为d_Chunk,包含1024字节数据(小页),这时d_Chunk[0]、d_Chunk[1]分别对应相应的页。

4 结语

NAND Flash凭借速度快、容量大、价格低等很多优点,成为嵌入式系统首选存储介质,尤其广泛应用于各种工业控制领域。目前最合理的管理NAND闪存的文件系统大多采用日志结构的设计思想,如jffs、yaffs等。本文件系统是在YAFFS2的基础上开发完成的,提出并应用了动态位宽、页数组等概念,实验证明能够灵活管理主流大容量Flash存储介质。

参考文献

[1]Samsung Corp.Flash Memory K9XXG08UXM DataSheet[S],Nov.2005.

[2]胡勇其,侯紫峰.嵌入式Linux下NAND存储系统的设计与实现[J].计算机工程,2006,(2).

3.嵌入式系统 篇三

关键词: 温度传感器 嵌入式系统 测试系统

1.引言

温度传感器是一类被广泛应用且被最先开发的传感器。但大多数温度传感器没有对数字信号分析及处理,达到自动化控制的效果。因此,本设计基于这种情况,利用相关软硬件提高了温度传感器的实用价值。

2.总体设计

2.1系统功能模块设计

从需求分析可以看出,该系统的功能模块应包括以下几个部分:实时温度采集与更新模块、自定义温度警报模块、超温报警模块。DS18B20采用了单总线方式的传输协议,即只需要一根管脚就可以对输入输出进行控制。此种单总线传输协议在实际应用中有很大优势,使用此种协议的芯片不需要任何外围电路,对硬件设计时的复杂性大大简化了许多。

2.2系统软件设计方案

2.2.1嵌入式操作系统选择

在本设计当中,硬件平台完全支持Linux、开发便捷迅速、资料众多、内核小、效率高等优点决定了在本设计当中的稳定性等优点,均使得本设计采用了Linux作为开发的操作系统。

2.2.2应用层程序语言选择

应用程序使用C语言进行开发,使用Linux标准C语言接口,与驱动层进行交互。

3.硬件设计

3.1整体硬件电路设计

根据硬件设计方案,在开发中用到的硬件有Tiny6410开发板、DS18B20数字温度传感器、USB转串口数据线。

3.2硬件连接方式

将USB转串口线一端接在Tiny6410的串口1上,另一端连接PC机USB接口。两个DS18B20传感器的VCC与GND管脚并联起来,与Tiny6410开放的电源与地线接口相连,两个传感器的数据接口一起连接在S3C6410的GPIO的管脚上。

4.软件设计

4.1嵌入式系统架构

本系统在软件方面主要由Linux内核裁剪和移植、底层驱动程序开发、上层应用程序开发三部分组成。其中,Linux内核的运行需要有引导程序BootLoader、内核的配置裁剪与编译、根文件系统的编译三个部分支持。

4.2驱动程序设计

在本设计当中,对DS18B20数字温度传感器根据其数据手册上的传输协议及参数进行驱动编写,首先要明确其控制参数及流程。本系统中对传感器的操作流程如下:

DS18B20写操作:

(1)置数据线高电平;

(2)延时2微秒;

(3)置数据线低电平;

(4)延时15微秒;

(5)按从低位到高位的顺序发送字节(一次只发送一位);

(6)延时60微秒;

(7)数据线拉到高电平;

(8)循环上述步骤使9位传送完毕;

(9)数据线拉高电平。

DS18B20读操作:

(1)置数据线高电平;

(2)延时2微秒;

(3)数据线拉低电平;

(4)延时2微秒;

(5)数据线拉高电平;

(6)延时8微秒;

(7)读数据线状态进行数据处理;

(8)延时50微秒。

5.结语

本设计在温度的测量精度上较为准确,系统能快速反应并准确显示改变后的温度。在长时间运行下测量结果依然准确,在实际生产生活的温度测量工作中具有较大实用价值。同时系统中仍存在一些不足有待弥补。

参考文献:

[1]徐亦朱.DS18B20中文手册[M].安徽:安徽大学出版社,2013.

[2]沙占友.智能化集成温度传感器原理与应用[M].机械工业出版社,2002-7-1.

[3]罗苑棠.嵌入式Linux驱动程序和系统开发实例精讲[M].电子工业出版社,2009.

[4]Tiny6410刷机指南[M].广州友善之臂计算机科技有限公司,2013-05-14.

4.嵌入式系统课程设计 篇四

设计题目:用键盘控制LED显示不同图形

中央民族大学 二零零八年十月三十一日

一、设计目的

了解LED点阵和矩阵键盘的工作原理。

二、设计内容

编写程序控制用矩阵键盘控制LED点亮,产生不同的图形。

三、设计方案

功能概述:

本设计要实现的功能是通过键盘控制LED点阵图形显示,如果键盘输入0-9十个数字时显示相应的数字,如果输入其他的键,则显示“+”号。

1、程序设计思路

本设计要实现键盘控制LED点阵图形显示,就必须要编写键盘和LED点阵的程序。先通过扫描矩阵键盘,得到键盘值,然后再调用点阵显示子函数,根据扫描的键盘值,在LED点阵上显示不同的图形。

2、主程序设计

主程序要实现的功能是矩阵键盘扫描,得到键盘值,然后把值传给LED显示函数。

程序流程图如下:

3、LED点阵显示函数设计

本函数要实现的功能是根据键盘的值,在LED点阵上显示不同的图形。如果键盘的输入值为0-9则显示相应的数字,如果输入的是其他值,则显示“+”。本程序采用二维数组存放要显示的图形的字模,然后再通过逐行扫描LED点阵,把要显示的图形分8次显示,一次显示一行,利用人眼的视觉暂留效应,是人看到的是一个图形一次显示出来,通过一个循环控制图形显示的时间。程序流程图如下:

4、点阵图形设计

根据8*8 LED点阵的原理,8X8 点阵共需要64 个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1 电平,某一行置0 电平,则相应的二极管就亮;

先绘制出要显示的图形如下:

根据图形中点亮的LED灯的位置,得到相应图形的16进制数,存放在二维数组Buf1[11][8]中。

所以要显示的图形的字模如下:

buf1[11][8]={ {0x3c,0x24,0x24,0x24,0x24,0x24,0x3c,0x00},//0

{0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08},//1

{0x3c,0x20,0x20,0x3c,0x04,0x04,0x3c,0x00},//2

{0x3c,0x20,0x20,0x3c,0x20,0x20,0x3c,0x00},//3

{0x24,0x24,0x24,0x3c,0x20,0x20,0x20,0x00},//4

{0x3c,0x04,0x04,0x3c,0x20,0x20,0x3c,0x00},//5

{0x3c,0x04,0x04,0x3c,0x24,0x24,0x3c,0x00},//6

{0x3c,0x20,0x20,0x20,0x20,0x20,0x20,0x00},//7

{0x3c,0x24,0x24,0x3c,0x24,0x24,0x3c,0x00},//8

{0x3c,0x24,0x24,0x3c,0x20,0x20,0x3c,0x00},//9

{0x08,0x08,0x08,0x3e,0x08,0x08,0x08,0x00}

//+

};

四、程序源代码

//*************************************************************** #include #include #include #include // open()close()#include // read()write()#include

#define DEVICE_NAME “/dev/led_ary_ctl” #define DEVICE_NAME1 “/dev/keypad”

void Key(unsigned char b[]);

//------main----int main(void){

int fd;

int ret;

unsigned char buf[2];

double x;

char pre_scancode = 0xff;

printf(“n start keypad_driver test nn”);

fd = open(DEVICE_NAME1, O_RDWR);

printf(“fd = %dn”,fd);

if(fd ==-1){

printf(“open device %s errorn”,DEVICE_NAME1);}

else {

buf[0]=0x22;

while(1)

{

read(fd,buf,1);

if(buf[0]!= pre_scancode)

{

if(buf[0]!=0xff)

{

printf(“key =%xn”,buf[0]);

Key(buf);

}

}

pre_scancode = buf[0];

usleep(50000);

}

// close

ret = close(fd);

printf(“ret=%dn”,ret);

printf(“close keypad_driver testn”);}

return 0;}// end main //***************************************************************************** //---------------void Key(unsigned char b[]){ int fd;

int ret;

int i,j,k;

unsigned char buf[2];

unsigned char buf2[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};unsigned char buf1[11][8]={{0x3c,0x24,0x24,0x24,0x24,0x24,0x3c,0x00},//0

{0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08},//1

{0x3c,0x20,0x20,0x3c,0x04,0x04,0x3c,0x00},//2

{0x3c,0x20,0x20,0x3c,0x20,0x20,0x3c,0x00},//3

{0x24,0x24,0x24,0x3c,0x20,0x20,0x20,0x00},//4

{0x3c,0x04,0x04,0x3c,0x20,0x20,0x3c,0x00},//5

{0x3c,0x04,0x04,0x3c,0x24,0x24,0x3c,0x00},//6

{0x3c,0x20,0x20,0x20,0x20,0x20,0x20,0x00},//7

{0x3c,0x24,0x24,0x3c,0x24,0x24,0x3c,0x00},//8

{0x3c,0x24,0x24,0x3c,0x20,0x20,0x3c,0x00},//9

{0x08,0x08,0x08,0x3e,0x08,0x08,0x08,0x00}

//+

};

// begin of led ary

buf[0]= 1;

buf[1]= 0;

if(b[0]<=9)i=b[0];else

i=10;

fd = open(DEVICE_NAME, O_RDWR);

printf(“fd = %dn”,fd);

if(fd ==-1)

printf(“open device %s errorn”,DEVICE_NAME);

else {

for(j=0;j<=5;j++)

{

for(k=0;k<8;k++)

{

buf[0]=buf1[i][k];buf[1]=buf2[k];

write(fd,buf,2);

}

usleep(1);

}

// close

ret = close(fd);

printf(“ret=%dn”,ret);

printf(“close led_driver testn”);} } //-

五、设计结果

实现键盘控制LED点阵显示,输入0-9十个数字时显示相应的数字,如果输入其他的键,则显示“+”号。

六、心得体会

通过本次实验,我们对linux下的实验更加熟悉了,对LED点阵显示和矩阵键盘的原理有了深入的了解,掌握了点阵图形的设计方法和键盘的输入的读取,并把二者结合起来,实现了键盘控制点阵图形现实。

5.嵌入式系统实验报告 篇五

第一章:ARM2410CL嵌入式系统基础实验

实验一ARM2410CL嵌入式教学实验系统

实验报告要求:

(1)简述嵌入式LINUX开发的流程。

实验二 嵌入式LINUX开发环境的配置

实验报告要求:

(1)简述嵌入式LINUX开发环境配置的具体步骤。

(2)简述网络文件系统(NFS)。

第二章:系统实验

实验一 LINUX基本应用程序编写实验

实验报告要求:

(1)简述交叉编译器基本概念及简述计算机平台和ARM平台编译环境的异同。

(2)简述Makefile文件作用和基本组成。

(3)ARM中怎样将编写的应用程序下载到LINUX中?怎样在LINUX中运行该程序? 实验二 串行端口程序设计

实验报告要求:

(1)简述LINUX下的串口程序设计的基本步骤。

(2)编写一个简单的文件收发程序完成串口文件的下载并画出实验流程图。

第三章:内核与根文件系统实验

实验一 内核移植与编译实验

实验报告要求:

(1)LINUX内核移植的基本概念。

(2)简述LINUX内核配置和编译步骤。

实验二 根文件系统实验

实验报告要求:

(1)简述文件系统的基本概念并列出LINUX下根文件系统的目录结构及习惯用法。

(2)在LINUX下,怎样制作cramfs格式的根文件系统?

实验心得:(要求写出关于本次实验收获及实验教学的意见及建议)

注:1.实验报告要求使用实验报告纸完成。

6.嵌入式系统设计与应用 篇六

嵌入式系统定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能,可靠性,成本,体积,功耗严格要求的专用计算机系统。(一切非PC计算机系统)嵌入式系统特点:“专用”计算机系统,运行环境差异很大,比通用PC系统资源少,功耗低,体积小,集成度高,成本低,具有完整的系统测试和可靠性评估体系,具有较长的生命周期,需要专用开发工具和方法进行设计,包含专用调试电路,多学科知识集成系统。嵌入式系统应用范围:汽车,工业控制,通信设备,消费电子,商业终端,航空航天,军事需求。

嵌入式系统的基本开发流程:系统定义与需求分析阶段,方案设计阶段,详细设计阶段,软、硬件集成测试阶段,系统功能性测试及可靠性测试阶段。

系统定义与需求分析阶段:对系统需求进行分析,制定系统的设计依据。方案设计阶段:确定系统初步设计方案并形成设计描述文档。详细设计阶段:完善初步方案,对方案实施详细设计。

软硬件集成测试阶段:对系统软硬件进行综合测试,验证系统设计功能。

系统功能性能测试及可靠性测试测试:对系统功能,性能,可靠性进行综合测评。

对于使用操作系统的嵌入式系统来说,嵌入式系统软件结构一般包含4个层面:板级支持包层,实时操作系统(RTOS)层,应用程序接口(API)层,应用程序层。有些资料将应用程序接口API归属于OS层,按3层划分的应用程序控制系统的运作和行为;操作系统与硬件无关,不同的嵌入式操作系统其组成结构也不尽相同 嵌入式操作系统种类繁多,大体分为两种:商用型和免费型

商用型:VxWorks,Windows CE,pSoS,Palm OS,OS-9,LynxOS,QNX和LYNX 免费型:Linux和uC/OS—II uC/OS—II具有执行效率高,占用空间小,可移植性及扩展性强,实施性能优良,稳定性和可靠性良好等特点。其内核采用微内核结构,将基本功能(如进程管理,存储管理,中断处理)放在内核中,留给用户一个标准API函数,并根据各个任务的优先级分配CPU时间。交叉开发环境:交叉开发是指一个通用计算机上进行软件的编辑编译,然后下载到嵌入式设备中进行调试的开发方式,它通常采用宿主机/目标机模式。

第二章:

RISC是精简指令集

精简指令集体系结构的优点:硬连线的指令译码逻辑,便于流水线执行,大多数RISC指令为单周期执行。

精简指令集处理器的优点:处理器关心面积小,开发时间缩短,开发成本降低,容易实现高性能,低成本的处理器。

精简指令集体系结构缺点:与CISC相比,通常RISC的代码密度低;RISC不能执行x86代码;RISC给优化编译程序带来了困难

ARM设计采用的RISC技术特征主要有:Load/Store体系结构,固定的32位指令,3地址指令格式。

ARM7TDM名称具体含义:ARM7:32位ARM体系结构4T版本;T:Thumb16位压缩指令集;D:支持片上Debug,使处理器能够停止以响应调试请求;M:增强型Multiplier,与前代相比具有较高的性能且产生64位的结果。I:EmbeddedICE硬件以支持片上断点和观察点。ARM7 3级流水线:(取指级,译码级,执行级)ARM9TDMI 流水线操作:(取指,译码,执行,缓冲/数据,回写)5级 ARM处理器核可工作两种状态:ARM状态和Thumb状态

从ARM进入Thumb状态,当操作数寄存器Rm的状态位bit[0]为1时,执行“BX Rm”指令进入Thumb状态

从Thumb进入ARM状态,当操作数寄存器Rm的状态位bit[0]为0时,执行“BX Rm”指令进入ARM状态

ARM处理器工作模式(共7种):除用户模式外的其他六种模式称为特权模式。特权模式:主要处理异常和监控调用(有时也称为软件中断),他们可以自由地访问系统资源和切换模式

ARM处理器总共有37个寄存器,均为32位 ARM状态下的通用寄存器分为3类: 未分组寄存器:R0~~R7(为公用寄存器)

分组寄存器:R8~~R14

R13通常用于堆栈指针SP

R14用做子程序链接寄存器

程序计数器:R15(PC)

用做程序计数器

ARM程序状态寄存器中

条件码标志(N Z C V)

N——在结果是带符号的二进制补码的情况下,结果为负,N=1 否则为0 Z——结果为0 Z=1 否则为0 C——针对加法:产生进位

C=1 否则为0

针对减法:产生借位

C=0 否则为1

针对有移位操作的非加减法指令

C为移位操作中最后移出位的值

对于其他指令

C通常不变

V——对于加减法指令

操作数和结果为带符号的整数时,产生溢出

V=1 否则为0

对于其他指令

V通常不发生变化 ARM的异常中断响应过程: 一:将CPSR的内容保存到将要执行的异常中断对应的SPSR中,以实现对处理器当前状态,中断屏蔽字以及各条件标志位的保存。二:设置当前状态寄存CPSR中的相应位:

设置CPSR模式控制位CPSR[4:0],使处理器进入相应的执行模式

当进入Reset或FIQ模式时,还要设置中断标志位(CPSR[6]=1)禁止FIQ中断,否则其值不变

设置中断标志位(CPSR[7]=1),禁止IRQ中断

三:将寄存器LR-设置成异常返回地址 return link(对于某些异常中断,保存在LR-的值可能与实际返回的地址有一个常数的偏移量),使异常处理程序执行完后能正确返回原程序

四:给程序计数器PC强制赋值,使程序从相应的向量地址开始执行中断处理程序。

非向量中断和中断向量的区别和联系

异常中断的优先级:复位(最高),数据异常中断,FIQ,IRQ,取值指异常中止,SWI未定义指令

ARM支持的数据类型(6种):8位有符号和无符号字节

16位有符号和无符号半字,以2字节的边界定位

32位有符号和无符号半字,以4字节的边界定位

ARM存储器组织:以字节为单位寻址的存储器中有“小端”和“大端”两种方式存储字 小端格式:较高的有效字节存放在较高的存储器地址,较低的有效字节存放在较低的存储器地址

大端格式:较高的有效字节存放在较低的存储器地址,较低的有效字节存放在较高的存储器地址

ARM处理器能方便地配置为其中任何一种存储器方式,但他们的缺省设置为小端格式(71页有题)

ARM7TDM内核的重要特性:53页最上面

第三章:

指令分类中基本指令格式

S

可选后缀,若指定S,则根据指令执行结果更新CPSR中的条件码 ARM寻址方式

立即寻址有选择题

寄存器间接寻址:ARM的数据传送指令都是基于寄存器间接寻址,即通过Load/Store完成对数据的传送操作

103页举例

可能为考题

伪操作

是ARM汇编语言程序里的一些特殊指令助记符,它的作用主要是为完成汇编程序做各种准备,在源程序进行汇编时由汇编程序处理,而不是在计算机运行期间由机器执行 ARM嵌入式系统程序设计可以分为ARM汇编语言程序设计、嵌入式C语言程序设计以及C语言与汇编语言的混合编程。

ARM汇编程序中

AREA指示符定义本程序段位代码段

即申请一个定义段 161页程序

可能考

嵌入式C语言程序设计中修饰符:interrupt、near、far、huge Interrupt在函数修饰为中断函数,没有输入和输出参数 第三章课后习题见李向妮笔记

第四章

DMA

I2C

I2S 基于S3C44B0X的最小系统设计:

嵌入式最小系统是指保证嵌入式微处理器可靠工作所必需的基本电路组成的系统,通常包括处理器单元、时钟单元、复位单元、、存储器单元、供电电源和调试接口。

基于ARM的嵌入式最小系统基本组成包括:基于ARM核的微处理器、电源电路、复位电路、时钟电路、存储器电路(FLASH和SDRAM)、UART接口电路和JTAG调试接口

第五章:

uC/OS—II采用的抢占式内核是一个真正的实时操作系统

uC/OS—II基本特点:源码开放;可移植性;可裁剪;抢占式内核;可扩展的多任务;可确定的执行时间;中断管理;稳定性和可靠性

uC/OS—II的文件结构(与内核功能相关的文件):任务管理;同步通信;内存管理;时间管理

uC/OS—II任务及其运行状态:

任务是一个简单的程序,对应于实际应用中的一个逻辑功能。对uC/OS—II来说,任务是系统运行的基本单元,系统以任务为单元分配内存资源和处理时间,每个任务都有自己独立的寄存器和栈空间。

任务看起来就像一个无限循环永不返回的函数,但是不同于函数的是,它有一套自己的内存空间,运行时完全占用处理器资源,在任意确定的时刻都处于休眠、就绪、运行、挂起以及中断服务这五种状态之一 图见书上337

第六章

uCLinux与标准Linux的最大区别就在于内存管理。标准Linux是针对有MMU的处理器设计的

uCLinux不使用虚拟内存管理技术,采用的是实存储器管理策略,也就是说uCLinux系统对内存的访问是直接的

uCLinux与标准Linux系统在进程的创建

进程的执行

进程的终止

上有着显著不同 基于uCLinux操作系统的应用开发环境一般是由目标系统硬件开发板和宿主PC机所构成。目标硬件开发板用于运行操作系统和系统应用软件,而目标板所用到的操作系统的内核编译、电子词典应用程序的开发和调试则需要通过宿主PC机来完成。目标板用来进行内核编译

PC机用来进行调试

移植就是使一个实时操作系统能够在某个微处理器平台上或者微控制器上运行。uCLinux移植包括3个层次的移植: 处理器结构层次移植、芯片层次移植、板级移植。

7.嵌入式系统概述 篇七

嵌入式系统是当今非常热门的研究领域。在PC市场已趋于稳定的今天,嵌入式系统市场的发展速度却在加快。由于嵌入式系统所依托的软硬件技术得到了快速发展,因此,这几年嵌入式系统自身获得了快速发展。根据美国嵌入式系统专业杂志RTC报道,在21世纪初的10年中,全球嵌入式系统市场需求量具有比PC市场大10倍到100倍的商机。随着技术的发展,业内对嵌入式系统的定义也越来越清晰。它是微处理器、大规模集成电路、软件技术和各种具体的行业应用技术相结合的结果,其中各种软件技术占了嵌入式系统80%的工作量。可以说,嵌入式系统是不可垄断、需要不断创新的技术[1]。

2 嵌入式系统的定义及结构

2.1 嵌入式系统的定义

嵌入式系统一般指非PC系统,有计算机功能但又不称之为计算机的设备或器材。它是以应用为中心,软硬件可裁剪的,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。简单地说,嵌入式系统集系统的应用软件与硬件于一体,类似于PC中BIOS的工作方式,具有软件代码小、高度自动化、响应速度快等特点,特别适合于要求实时和多任务的体系。嵌入式系统主要由嵌入式处理器、相关支撑硬件、嵌入式操作系统及应用软件系统等组成,它是可独立工作的“器件”。

国际电气和电子工程师协会(IEEE)的定义:嵌入式系统是控制、监视或辅助设备、机器和车间运行的装置(原文为devices used to control,monitor,or assist the operation of equipment,machinery or plants)。这主要是从应用上加以定义的,从中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。

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

2.2 嵌入式系统的结构

嵌入式系统作为一类特殊的计算机系统,自底向上包含有3个部分,如图1所示[2]。

(1)硬件环境:包括处理器/微处理器、存储器及外设器件和I/O端口、图形控制器等,是整个嵌入式操作系统和应用程序运行的硬件平台,不同的应用通常有不同的硬件环境。

(2)嵌入式操作系统:完成嵌入式应用的任务调度和控制等核心功能。具有内核较精简、可配置、与高层应用紧密关联等特点。嵌入式操作系统具有相对不变性。

(3)嵌入式应用程序:运行于操作系统之上,利用操作系统提供的机制完成特定功能的嵌入式应用。不同的系统需要设计不同的嵌入式应用程序。

嵌入式系统发展中所必须解决的关键问题是,如何简洁有效地使嵌入式系统应用于各种不同的应用环境。经过不断的发展,原先嵌入式系统的3层结构逐步演化成为一种4层结构。这个新增加的中间层次叫硬件抽象层,也叫板级支持包(BSP),是一个介于硬件与软件之间的中间层次。硬件抽象层通过特定的上层接口与操作系统进行交互,向操作系统硬件直接操作。硬件抽象层的引入大大推动了嵌入式操作系统的通用化。如图2所示。

3 嵌入式微处理器

嵌入式微处理器是各种面向用户、面向产品、面向应用的嵌入式系统的核心部件。它采用“增强型”通用微处理器。由于嵌入式系统通常应用于比较恶劣的环境中,因而嵌入式微处理器在工作温度、电磁兼容性以及可靠性方面的要求较通用的标准微处理器高。但是,嵌入式微处理器在功能方面与标准的微处理器基本上是一样的。根据实际嵌入式应用要求,将嵌入式微处理器装配在专门设计的主板上,只保留和嵌入式应用有关的主板功能,这样可以大幅度减小系统的体积和功耗。目前常用的嵌入式微处理器主要有:

(1)Power PC。Power PC是早期Motorola和IBM联合为A p p l e的M A C机开发的C P U芯片,商标权同时属于I B M和Motorola,并成为他们的主导成品。

IBM的Power PC400是Power PC处理器中的嵌入式系列产品。从机顶盒到IBM的“蓝色基因”超级计算机,到处都可以看到它的身影。Motorola的基于Power PC体系结构的嵌入式处理器芯片有MPC505、821、850、860、8240、8245、8260、8560等近几十种产品,Power PC(简称PPC)处理器具有较强的运算性能和数据吞吐能力,在网络和数据通信领域,基于PPC的嵌入式系统处理器有着广泛的应用。其中MPC860/MPC8260被大量地应用在嵌入式网络产品中。

(2)MIPS。MIPS是世界上很流行的一种RISC处理器。MIPS的意思是“无内部互锁流水级的微处理器”(Microprocessor without interlocked piped stages),其机制是尽量利用软件办法避免流水线中的数据相关问题。它最早是在80年代初期由斯坦福(Stanford)大学Hennessy教授领导的研究小组研制出来的。

在通用方面,MIPS R系列微处理器用于构建SGI的高性能工作站、服务器和超级计算机系统。在嵌入式方面,MIPS K系列微处理器是目前仅次于ARM的用得最多的处理器之一(1999年以前MIPS是世界上用得最多的处理器),其应用领域覆盖游戏机、路由器、激光打印机、掌上电脑等各个方面。MIPS处理器应用范围较广,作为服务器RISC处理器来说,主要是应用于专门的图形工作站/服务器上,应用面较专业,因而竞争较少。

(3)ARM。ARM是英国一家电子公司的名字,全名的意思是Advanced RISC Machine。1991年ARM公司成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用ARM技术知识产权(IP)核的微处理器,即我们通常所说的ARM微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM技术的微处理器应用约占据了32位RISC微处理器75%以上的市场份额,ARM技术正在逐步渗入到我们生活的各个方面。

A R M处理器核当前有6个系列产品A R M 7,A R M 9,ARM9E,ARM10E,Secur Core以及ARM11系列。ARM7是小型、快速、低能耗、集成式RISC内核,广泛应用于手持式计算、数据通信和消费类多媒体;ARM9是低价、低能耗、高性能系统微处理器,配有Cache、内存管理和写缓冲。多应用于高级引擎管理、保安系统、顶置盒、便携计算机和高档打印机;ARM9E应该属于ARM10系列,其中,ARM968E-S(tm)可以为网络、汽车、电子消费娱乐品、无线方案等提供理想的技术方案。ARM968E-S内核比ARM966E-S(tm)内核的面积小20%,功耗至少降低10%。延长了电池使用寿命;ARM10速度快,能够支持多种商用操作系统,适用于高性能手持式因特网设备及数字式消费类产品;新的ARM11系列微处理器内核ARM1156T2-S和ARM1156T2F-S主要用于多种深嵌入式存储器、汽车网络和成像应用产品,提供了更高的CPU性能和吞吐量,并增加了许多特殊功能,可解决新一代装置的设计难题。ARM1176JZ-S和ARM1176JZF-S内核主要为服务供应商和运营商所提供的新一代消费电子装置的电子商务和安全的网络下载提供支持;Xscale架构的处理器Intel PSA25和Intel PXA210,强化了前一代Strong ARM处理器的性能,面向PDA、掌上电脑、多媒体移动电话以及其它无线网络产品市场。

ARM芯片的选择要根据实际需求而定。例如,如果希望使用Win CE或Linux等操作系统以减少软件开发时间,就需要选择ARM720T以上带有MMU(memory management unit)功能的ARM芯片,如ARM720T、Strong ARM、ARM920T、ARM922T、ARM946T等。而ARM7TDMI没有MMU,不支持Windows CE和大部分的Linux,但目前有u CLinux等少数几种Linux不需要MMU的支持。

4 嵌入式操作系统

嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件,它是嵌入式系统(包括硬、软件系统)极为重要的组成部分,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。嵌入式操作系统具有通用操作系统的基本特点,如能够有效管理越来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、驱动程序、工具集以及应用程序。与通用操作系统相比较,嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。

一般情况下,嵌入式操作系统可以分为两类,一类是面向控制、通信等领域的实时操作系统(RTOS),实时系统对响应时间有严格要求。目前最重要的RTOS主要包括:(1)传统的RTOS。如Wind River公司的Vx Works、ISI(Integrated System Incorporation)的PSOS、QNX系统软件公司的QNX、ATI的Nucleus、u C/OSII[3]等;(2)嵌入式Linux操作系统,嵌入式Linux在机顶盒、掌上电脑或PDA、手机和寻呼机上网、车载盒、工业控制等方面有着广泛的应用。最常用的是u Clinux(不带MMU功能);(3)Windows?CE嵌入式操作系统[4]。

另一类是面向消费电子产品的非实时操作系统,这类产品包括个人数字助理(PDA)、移动电话、机顶盒、电子书、Web Phone等。

5 结束语

嵌入式系统已经渗透到现代生活的方方面面。除了用在办公设备、仪器仪表、航空航天领域之外,微波炉、冰箱、空调、机顶盒等电子消费品更是它们的天下,只是“智商”还有待提高。数据显示,发达国家平均每个家庭装备225个嵌入式处理器,平均每部汽车拥有35个嵌入式芯片。而据国际数据公司(IDC)预测,全球每年由嵌入式系统带来的相关工业产值已超过1万亿美元,其市场容量正以30%的年均速度增长,成为信息产业的新增长点。未来的几年内,随着信息化,智能化,网络化的发展,嵌入式系统技术也将获得广阔的发展空间。

摘要:给出了嵌入式系统的定义和体系结构。较详细地阐述了几种常用的嵌入式微处理器及其应用领域;同时简要介绍了嵌入式操作系统。最后展望了嵌入式系统的发展前景。

关键词:嵌入式微处理器,嵌入式操作系统,Power PC,MIPS,ARM

参考文献

[1]凌志浩,张文超,俞金寿。嵌入式系统结构及其发展概况[J]。自动化仪表,2003,24,(4):1-5。

[2]李佑军。嵌入式系统综述[J]。现代电子技术,2003,(6):90-91

[3]刘森,王田苗,魏洪兴,陈友东。基于u COS-II的嵌入式数控系统实时性分析[J]。计算机工程,2006,32(22):222-224

8.浅析计算机嵌入式系统 篇八

关键词:计算机;嵌入式系统;特点;应用;发展

中图分类号:TP27 文献标识码:A文章编号:1007-9599 (2010) 09-0000-01

Brief Analysis on Computer Embedded System

Xiong Weiping

(Jiangxi Civil Air Defense 0719 Project Management Center,Nanchang330006,China)

Abstract:The key word embedded system originates from microcomputer's embedded application.

The early embedded system explores the single trigger,the labor to control machine,the microcomputer monolithic special purpose computer's form,afterward has stepped onto the independent development path.The embedded system is not the special purpose computer system,but refers to these to have the computer function but not to call it computer's equipment or the equipment.It often collects systematic application software and hardware in a body,thus causes the software code changes small,the automaticity is high,the speed of response also changed is quick.The embedded system usual take application as the center,the software and hardware is the basis actual situation may reduce.However to adapts application system's function,cost and so on comprehensive the requests to be quite strict.

Keywords:Computer;Embedded system;Characteristic;Using;

Development

一、嵌入式系统的产生及概念

嵌入式系统诞生于微型计算机时代,不同与计算机发展的是,他在经过微型机嵌入式专用化的探索后,便直接进入到嵌入式系统独立的发展时代。像这种直接将外围集成电路技术与嵌入式处理器结合的并带有处理器内核的单片机,即便是有处理器内核,也属于嵌入式处理器而并非通用微处理器。

二、嵌入式系统的架构

嵌入式系统的构架一般包括了三部分,分别为:

硬件平台:硬件平台包括嵌入式系统的核心——嵌入式处理器和一些外围设备。

嵌入式应用程序:一般不同的系统需要设计不同的嵌入式应用程序。该程序利用操作系统完成特定功能的嵌入式应用,一般都运行于操作系统之上。

嵌入式操作系统:是嵌入式应用的任务调度和控制等核心功能得以完成的根本,他具有内核精简、配置性强、与高层应用联系紧密等特点。

三、嵌入式的系统与分类

嵌入式系统的分类方法有很多种,根据复杂程度的不同,可以将嵌入式系统分为以下几类:

单个微处理器,这类系统可以在温度传感器、断路器等小型设备中找到。一般情况下这类设备受Y2K影响的可能性不大。

带计时功能的组件,一般用于开关装置、电话交换机、控制器、数据采集系统、电梯、医药监视系统、诊断及实时控制系统等设备中。

微处理器装置,这类系统广泛应用于信号放大器、阀门传动器及位置传感器等设备中。也不太可能受到Y2K的影响。

四、嵌入式系統的特点

嵌入式系统通常是面向特定应用的。这样有利于嵌入式系统设计趋于小型化,移动能力大大增强,跟网络的耦合也越来越紧密。

嵌入式系统将由8位处理向32位,单核向多核发展。嵌入式操作系统呈多元化趋势。

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

嵌入式系统的个性化很强。因此它的软件系统和硬件的结合需要十分紧密。

嵌入式系统没有自举开发的能力,因此就必须有一套开发工具才能进行开发。

五、嵌入式系统发展趋势

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

嵌入式开发是一项系统工程,从而使得嵌入式系统生产厂商在提供嵌入式软硬件系统本身的同时,还需要提供强大的软件包支持和硬件开发工具。

嵌入式系统将先进的计算机技术、半导体技术和电子技术相结合后的产物,这就决定了它具有技术密集、高度分散、资金密集、不断创新等新时代产物的特点。

结束语:

嵌入式技术的全面展开已成为通信和消费类产品的共同发展的方向。数字技术正在全面取代模拟技术。部分国家已开始由模拟电视向数字电视转变。而数字音频广播也已进入试播阶段。这些都离不开嵌入式系统技术。而所谓的维纳斯计划生产机顶盒的核心技术就是采用32位以上芯片级的嵌入式技术。同时嵌入式产品在以后也将主要用于个人商用,作为个人移动的数据处理和通讯软件。

参考文献:

[1]吕京建,肖海桥.嵌入式处理器分类与现状

[2]桑楠.嵌入式系统原理及应用开发技术.北京:北京航空航天大学出版社,2002

9.智能小车嵌入式系统设计分析 篇九

智能小车是在动态不确定环境下对人工智能的考验,是以各种工控目的为载体的高科技对抗,是培养信息、自动化领域科技人才的重要手段,同时也是展示高科技水平的生动窗口和促进科技成果实用化和产业化的有效途径。智能小车的研究融入了机器人学、机电一体化技术、通讯与计算机技术、视觉与传感器技术、智能控制与决策等多学科的研究成果,反映出一个国家信息与自动化技术的综合实力。所以本论文对智能小车的研究意义重大。

-0

一、总体设计方案

1.总体方案

智能小车可在自主行驶和人工控制两种模式之间切换,并实现自动避障。通过PWM输出驱动步进电机来实现小车的行驶,改变PWM的周期、占空比、正反则可以实现前进、后退、转弯、加速、减速等行为。通过红外探头检测前方障碍实现自动避障。外接红外线接收器,可以通过自制的红外线遥控来控制小车的行为。

2.平台选取

EasyARM1138开发板

开发板搭载Luminary LM3S1138芯片,为32位ARM Cortex – M3内核(ARM v7架构),50Mhz运行频率。拥有7组GPIO,可配置为输入、输出、开漏、弱上拉等模式。4个32位Timer,每个都个拆分为2个独立子定时器。6路16位PWM,通过CCP管脚能产生高达25Mhz的方波。

自制车架

3456789 SYSCTL_SYSDIV_10);// 分频结果为20MHz */

TheSysClock = SysCtlClockGet();// 获取系统时钟,单位:Hz

}

int main(void){ jtagWait();/* 防止JTAG失效,重要!*/

SystemInit();

IR_Int_Init();

while(1){ if(IR_flag == 1){ IR_flag = 0;for(a = 18;a < 26;a++){ IR_code_8 = IR_code_8 << 1 + IR_code_32[a];}

if(IR_code_8 == 101){ SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);// 使能GPIOD端口

GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE , GPIO_PIN_0);// 设置PD0为输入类型 //forword GPIOPinWrite(GPIO_PORTD_BASE , GPIO_PIN_0 , 0x00);// PD0输出低电平 }

IR_code_8 = 0;

//switch(IR_code_8)//{ //case /*00000*/101:SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);// 使能GPIOD端口

// GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE , GPIO_PIN_0);

// 设置PD0为输入类型 //forword //

GPIOPinWrite(GPIO_PORTD_BASE , GPIO_PIN_0 , 0x00);// PD0输出低电平 //case /*0000*/1101://back //case /*0000*/1000://left //case /*0000*/1010://right //case /*0000*/1001://stop //case /*000*/10100://level_1 //case /*000*/10101://level_2 //case /*000*/10110://level_3 //default : //} //IR_code_8 = 0;} } }

/**************************************************************** ** Function name: GPIO_PORT_F_ISR

消除中断 不正 if(gap >=10 && gap <=20)//接收数据“1” { data = 1;code_flag = 1;} else if(gap >=2 && gap <=8)//接收数据“0” { data = 0;code_flag = 1;} else if(gap >=40 && gap <=50)//正常的其实高电平时间 { start_flag = 1;}

if(start_flag

&& //code_flag和start_flag均为1 { IR_code_32[i] = data;i++;

if(I >= 32){ IR_flag = 1;break;} } } } //} GPIOPinIntClear(IR_PORT,ulStatus);//-14 ** Descriptions: 延时100us ** input parameters: 无 ** output parameters: 无 ** Returned value: 无 ** Created by:

张伟杰

** Created Date: 2014.05.18 ****************************************************************/ void Delay_100_us(void){ unsigned ulValue;

SysTickPeriodSet(600);SysTickEnable();do { ulValue = SysTickValueGet();} while(ulValue > 0);

SysTickDisable();}

3.红外探头模块

#include #include #include #include #include #include #include #include #include #include #include #include “LM3S1138_PinMap.H”

/* 定义按键 */ #define KEY_PORT SYSCTL_PERIPH_GPIOG #define KEY_PIN GPIO_PORTG_BASE , GPIO_PIN_5 #define keyGet()GPIOPinRead(KEY_PIN)

#define IR_PORT SYSCTL_PERIPH_GPIOF #define IR_PIN GPIO_PORTF_BASE , GPIO_PIN_1

// 定义全局的系统时钟变量

unsigned long TheSysClock = 12000000UL;unsigned IR_flag = 0;unsigned long IR_code_32[32];unsigned long IR_code_8 = 0;unsigned a;

int Time_Get();void Delay_100_us();

/**************************************************************** ** Function name: jtagWait ** Descriptions: 防止JTAG失效,KEY=PG5 ** input parameters: 无 ** output parameters: 无 ** Returned value: 无 ** Created by:

张伟杰

** Created Date: 2014.05.15 ****************************************************************/ void jtagWait(void){ SysCtlPeripheralEnable(KEY_PORT);/*

使能KEY所在的GPIO端口 */ GPIOPinTypeGPIOInput(KEY_PIN);/* 设置KEY所在管脚为输入 */ if(keyGet()== 0x00){ /* 如果复位时按下KEY,则进入 */ for(;;);/* 死循环,以等待JTAG连接 */ } SysCtlPeripheralDisable(KEY_PORT);/* 禁止KEY所在的GPIO端口 */ }

/**************************************************************** ** Function name: IR_Int_Init ** input parameters: 无 ** output parameters: 无 ** Returned value: 无 ** Created by:

张伟杰

** Created Date: 2014.05.18 ****************************************************************/ void IR_Int_Init(void){ SysCtlPeripheralEnable(IR_PORT);GPIOPinTypeGPIOInput(IR_PIN);GPIOIntTypeSet(IR_PIN,GPIO_LOW_LEVEL);GPIOPinIntEnable(IR_PIN);

IntEnable(INT_GPIOF);IntMasterEnable();}

-***3 SysTickPeriodSet(600);SysTickEnable();do { ulValue = SysTickValueGet();} while(ulValue > 0);

SysTickDisable();}

三、程序调试

调试PWM信号时,由于板上晶振为6Mhz,装载值和匹配值最大为65535,可以设置出需要的周期和占空比。如

TimerLoadSet(TIMER0_BASE , TIMER_BOTH , 60000);TimerMatchSet(TIMER0_BASE , TIMER_A , 6000);则对应的周期为6Mhz / 60K = 100Hz,占空比为0.6K / 6K = 1/10。配置PWM前要先配置GPIO口,定义为PWM输出,并选择Timer的输出模式为16位PWM,经过三重配置才能正确输出PWM信号。红外接收器解码过程重点是对红外码内间隔时间的判断。调试红外码时应当设当地设置flag帮助多个判断。当引导码时间参数符合标准时flag1置1,接收到正确的红外码,进入下一步。当用户码每个间隔符合标准的时间间隔时flag2置1,表示该一位码正确,进入一下步。当接收到32位数据后flag3置1,表示红外码结束,开始进行解码。解码部分用case语句进行判断。红外码用数组储存,使用的时候会方便一点。例如: for(a = 18;a < 26;a++){ IR_code_8 = IR_code_8 << 1 + IR_code_32[a];} 这样就可以随意获取某几位码进行下一步操作。

四、小结

10.嵌入式系统 篇十

题 目:嵌入式系统Android

选题性质:□设计报告□其他

院 系 电子系

专 业 物联网

班 级 12021071 学 号 20120027

学生姓名 钱硕

2014年 6月 12

日重庆航天技术职业学院嵌入式系统设计报告书

摘要

随着手机的普及以及手机应用的深入人心,近几年“智能手机”成为了人们关注的话题。在现今这个智能手机系统群雄纷争的时候,2008年Google推出了一款名为Android的开源智能手机操作系统。Android凭借其开放性和良好的人机界面,受到广大手机生产商的重视,随着3G时代的到来,Android有可能会改变现在智能手机市场的格局。Android 是由Linux操作系统、中间件以及核心应用程序组成的专门为移动终端设备开发的层次软件集。在对Android学习中,主要做了以下的研究:首先,Android系统是一个层次的软件集,所以先从层次方面对Android进行系统研究,主要对其运行时环境层以及Android应用框架层的研究;其次,通过对Android平台上应用的开发,更进一步了解Android这个系统,在开发中,尤其注重Android的Intent机制的使用。

关键字:Android; Android 内核层; Android构架;Android应用; Android SDK;Android 开发

I

目录

摘要...............................................................................................................................I 目录..............................................................................................................................II 前言............................................................................................错误!未定义书签。第1章......................................................................................................................1.1 何为嵌入式系统.............................................................................................1.2嵌入式系统的发展............................................................................................1.3嵌入式系统有哪些.........................................................................................第2章

ANDROID系统...............................................................................................2.1来历.................................................................................................................2.2起源.................................................................................................................2.3系统构架.........................................................................................................2.4 应用组件.........................................................................................................个人评价..........................................................................................................................6

II 重庆航天技术职业学院嵌入式系统设计报告书

前 言

毋庸置疑,嵌入式技术是继网络技术之后,又一个新的技术发展方向。嵌入式系统是计算机软件与硬件的完美结合,广泛地应用于手持设备、信息家电、仪器仪表、汽车电子、医疗仪器、工业控制、航天航空等都各个领域,并嵌入在各类设备之中,起着核心作用。

毋庸讳言,嵌入式系统已经无处不在,无疑是当前最有前途、最为热门、最需人才的技术领域。嵌入式人才主要分为两大类:一类是嵌入式硬件工程师,主要从事嵌入式系统硬件研发,包括硬件系统原理图的设计、PCB印刷线路板的设计,开发与硬件相关的底层软件(如BootLoader、嵌入式驱动程序等);另一类是嵌入式软件工程师,主要从事嵌入式操作系统和应用软件的开发,如果对嵌入式硬件原理和接口技术有较好的掌握,也可以从事嵌入式系统底层程序的开发。

第1章

嵌入式系统

1.1 何为嵌入式系统

嵌入式系统(Embedded System),一般指非桌面计算机系统(即非PC、服务器、大中小型机等),有计算机功能且可以“嵌入”到专用设备并发挥专用功能的计算机设备或器材。它是以应用为中心,软硬件可裁减的,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。简单地说,这种计算机通过和设备的电气连接,并通过在计算机上运行的专用程序对接口进行通讯和控制,使设备成为智能化的设备,比如:基于网络的工业控制器、带彩色显示的智能终端等。

嵌入式系统主要由嵌入式处理器为核心的硬件系统、嵌入式操作系统及应用软件系统等组成,它是可独立工作的“器件”。

1.2 嵌入式系统的发展

嵌入式系统的出现至今己经有30多年的历史了,嵌入式技术也历经了几个发展阶段。进入90年代后,以计算机和软件为核心的数字化技术取得了迅猛发展,不仅广泛渗透到社会经济、军事、交通、通信等相关行业,而且深入到家电、娱乐、艺术、社会文化等各个领域,掀起了一场数字化技术革命。多媒体技术与Internet的应用迅速普及,消费电子、计算机和通信一体化趋势日趋明显,嵌入式技术再度成为一个研究热点。嵌入式技术的发展大致经历了以下四个阶段: 第一阶段是以单芯片为核心的可编程控制器形式的系统具有与监测、伺服、指示设备相配合的功能。这类系统大部分应用于一些专业性强的工业控制系统中,一般没有操作系统的支持,通过汇编语言编程对系统进行直接控制。这一阶段系统的主要特点是:系统结构和功能相对单一,处理效率较低,存储容量较小,几乎没有用户接口。由于这种嵌入式系统使用简单和价格低,以前在国内工业领域应用较为普遍,但是已经远不能适应高效的、需要大容量存储的现代工业控制和新兴信息家电等领域的需求。

第二阶段是以嵌入式微处理器为基础、以简单操作系统为核心的嵌入式系统。主

3重庆航天技术职业学院嵌入式系统设计报告书

供的功能不是太多,为了避免你做了很久之后才发现——原来 NDK 不支持某项功能,大家可以根据自己的需求来选择是否采用 NDK 开发原生程序。2.应用程序框架层

应用程序框架层为开发人员提供了可以完全访问核心应用程序所使用的API框架。该应用 程序的构架设计简化了组件的重用,任何一个应用程序(以及任何其他应用程序)都可以发布自己的功能模块(在遵循框架的安全性限制的前提下)。同样,该应用程序重用机制也使用户可以方便地替换程序组件。下面来看一下该层的每一个模块为我们提供的组件。2.4 应用组件

应用组件Android开发四大组件分别是:活动(Activity): 用于表现功能。服务(Service): 后台运行服务,不提供界面呈现。广播接收器(BroadcastReceiver):用于接收广播。内容提供商(Content Provider): 支持在多个应用中存储和读取数据,相当于数据库。活动Android 中,Activity是所有程序的根本,所有程序的流程都运行在Activity 之中,Activity可以算是开发者遇到的最频繁,也是Android 当中最基本的模块之一。在Android的程序当中,Activity 一般代表手机屏幕的一屏。如果把手机比作一个浏览器,那么Activity就相当于一个网页。在Activity 当中可以添加一些Button、Check box 等控件。可以看到Activity 概念和网页的概念相当类似。一般一个Android 应用是由多个Activity 组成的。这多个Activity 之间 Android的应用(20张)可以进行相互跳转,例如,按下一个Button按钮后,可能会跳转到其他的Activity。和网页跳转稍微有些不一样的是,Activity 之间的跳转有可能返回值,例如,从Activity A 跳转到Activity B,那么当Activity B 运行结束的时候,有可能会给Activity A 一个返回值。这样做在很多时候是相当方便的。

当打开一个新的屏幕时,之前一个屏幕会被置为暂停状态,并且压入历史堆栈中。用户可以通过回退操作返回到以前打开过的屏幕。可以选择性的移除一些没有必要保留的屏幕,Android会把每个应用的开始到当前的每个屏幕保存在堆栈中。

个人评价

在老师的耐心教导下,我经过了一学期的努力,顺利的完成了此门课程。在此期间,我学到了不少的知识,经历了很多,也体会到了很多,虽然结果很重要是并不能因此就忽略了中间的过程,因为这才是解决问题的关键。有人说:“平凡的大学生有着相同的平凡,而不平凡的大学生会有不平凡的辉煌。”

虽然我这个学期不是很积极,但我相信在这个学期会比上个学期更加清楚自己的去向。人们常说,大学的生活是异常轻松和自由的,我也觉得的确是这样。但时间总是宝贵的,我再也不想成为虚度光阴的人,不想自己在老的时候后悔自己这样浪费时间。为了改正我以上不珍惜时间的缺点,我决定给自己制定一些措施,以便更好的督促自己。

上一篇:改变从自己做起下一篇:大学生人力资源

相关推荐