嵌入式硬件设计

嵌入式硬件设计
嵌入式硬件设计

嵌入式硬件设计

硬件设计是系统的重要组成部分,是系统运行实现的平台。如上节分析,嵌入式远程节电控制器的硬件结构框图如图1所示。由嵌入式计算机系统、以太网接口模块和485通信模块三大部分组成。

3.1 嵌入式计算机系统

嵌入式计算机系统是嵌入式远程节电控制器的核心系统。它由嵌入式计算机、时钟电路、扩展存储器三部分构成。

3.1.1 嵌入式微处理器STC11F32E性能介绍

STC11F32E是宏晶科技推出的新一代性价比高、超强抗干扰/高速/低功耗的微处理器,指令代码完全兼容传统8051微处理器。该公司的产品具有系列化,选择余地大,且同一个系列的产品引脚兼容,更新方便。STC89C58RD+具有增强型12/1机器周期8051CPU;片内有32K字节的Flash程序存储器,可实现在系统编程(ISP)和在应用中编程(IAP),1280字节的片内数据RAM,以及16K字节的EEPROM;3个16位定时器/计数器;具有可编程的8级中断源4种优先级。

3.1.2 嵌入式计算机电路设计

嵌入式计算机电路设计如图选用11.592MHz石英晶体以便于RS-232串行通信波特率设置,其串行通信口TXD、RXD通过插座CON2引出,它既可用于内嵌程序的下载,也

可作其它智能控制

信号的

输入端。

图3.1嵌入式计算机系统电路设计

STC89C58RD+的P3.3、P3.4引脚分别作为模拟IIC总线的数据线、时钟线。在模拟IIC总线上扩展有容量为32KB的EEPROM存储器24C256和时钟芯片PCF8563。

24C256是容量为32KB的IIC接口的EEPROM,其地址设定为000H,设计此外扩存储器是用来补充片内EEPROM的不足,以便存放动态网页。

PCF8563采用32.768KHz的石英晶体,自带电源,工作时向系统提供实时时钟,以确保嵌入式远程节电控制器能脱网定时控制。

串口通信部分采用RS-232串行通信接口进行数据的传输。电路设计为STC89C58RD +的串口通过MAX232电平转换芯片与PC机连接。MAX232内部有电压倍增电路和转换电路,芯片只需+5V电源便可实现嵌入式微处理器与PC机RS-232C的电平转换(对于连接双方都是使用TTL电平的设备可以不使用MAX232芯片进行电平转换)。在本系统中串口通信主要用于程序下载及调试。

3.2 以太网接口模块

以太网接口模块的核心是以太网接口芯片RTL8019AS。RTL8019AS芯片是Realtek 公司生产的一种局域网接口芯片,也是目前的10M网卡上最常见的一种芯片。

3.2.1 网络接口控制芯片RTL8019AS简介

RTL8019AS[21]是我国台湾地区Realtek公司生产的一种高度集成的全面支持IEEE802.3标准的以太网控制器芯片,兼容NE2000系列,同时还支持微软的PnP(即插即用)规范。利用双绞线可以和全双工网络交换机相连接,能够同时接收和发送数据。支持UTP(Unshielded Twisted Paired非屏蔽双绞线),AUI(Attachment Unit Interface连接单元接口)和BNC(同轴电缆接插件)自动侦测。支持IO地址全解码模式。其主要特性如下:

1、符合EthernetⅡ和IEEE802.3(10Base5, 10Base2, 10BaseT)标准;

2、支持跳线和免跳线两种工作方式,可自由设置;

3、全双工,收发可同时达到10Mbps的速率,具有休眠模式,以降低功耗;

4、内部有16K的SRAM,用于数据收发的缓冲,降低了对处理器的速度要求;

5、支持8位、16位数据总线,16个I/O基地址选择;

6、允许四个诊断LED可编程输出;

7、100脚PQFP封装,缩小了PCB尺寸。

3.2.2 RTL8019资源分配

1、内部结构

RTL8019内部结构如图3.2所示。

图3.2 RTL8019AS内部结构图

根据其功能可分为远程DMA 接口、本地DMA 接口、MAC (介质访问子层)逻辑、数据编码解码逻辑和其它端口。ISA总线接口即远程DMA接口是指主机对RTL8019AS进行控制和操作的总线,本地DMA接口是指RTL8019AS与网络线的连接通道,作用是完成控制器和网络线的数据交换。PnP(即插即用)逻辑部分主要是用来解决和PC机的连接问题。Boot ROM端口作用是解决远程启动问题。EEPROM端口是用来操作RTL8019AS和EEPROM芯片93C46的接口,SRAM用来存放接收和要发送的数据。MAC逻辑完成数据的发送和接收过程中的控制,当主机要发送数据时,将帧数据经过远程DMA信道送到以太网络控制器中的发送缓存内存中,然后发出传送命令。以太网络控制器在送出前一帧的数据后继而完成此帧的发送;接收数据时,串行数据组成字节送到FIFO和CRC,发送逻辑将FIFO送来的字节在发送时脉的控制下逐步按位移出,并送到CRC电路,CRC电路在接收时对输入的数据进行CRC校验,将结果与帧尾的CRC比较,如不同则该帧数据将被拒收,如相同则送到接收缓冲区中,存到接收缓冲区。收满帧后以中断或缓存器标志的方式通知主处理器把数据读走。

2、内部寄存器

RTL8019AS网络控制器的寄存器,分为兼容NE2000寄存器组和PnP寄存器组。本系统设计中主要使用NE2000寄存器组,该组寄存器共包括4页:PAGE0、PAGE1、PAGE2、PAGE3,每页包含16个寄存器,页的选择可通过设置CR(Command Register 命令寄存器)中的PS0和PS1位实现。RTL8019AS具有32个输入输出地址,地址偏移量为00H-1FH。其中00H-0FH共16个地址,为寄存器地址;远程DMA地址包括10H-17H,都可以用来作远程DMA 端口,只要用其中的一个即可;复位端口包括18H-1FH共8个地址,功能一样,用于RTL8019AS复位。寄存器地址如表3.1所列。

表3.1 网卡芯片RTL8019AS的主要寄存器

本系统设计用到的主要寄存器功能介绍如表3.2所列。

表3.2 RTL8019AS寄存器功能介绍

3、内部RAM地址空间分配

RTL8019AS内部有两块RAM 区。一块16K字节,地址为0x4000-0x7fff;一块32字节,地址为0x0000-0x001f。RAM按页存储,每256字节为一页。一般将RAM 的前12页(即0x4000-0x4bff)存储区作为发送缓冲区,后52页(即0x4c00-0x7fff)存储区作为接收缓冲区。第0页叫Prom页,只有32字节,地址为0x000-0x001f,用于存储以太网物理地址。要接收和发送数据包就必须通过DMA读写RTL8019AS内部的16KB RAM。它实际上是双端口的RAM,是指有两套总线连接到该RAM,一套总线是RTL8019AS读或写该RAM,即本地DMA;另一套总线是单片机读或写该RAM,即远程DMA。

在本系统中,使用页0x40-0x4b作为网卡的发送缓冲区,共12页,刚好存放2个最大的以太帧。使用页0x4c-0x7f作为网卡的接收缓冲区,共52页。因此TPSR=0x40,PSTART=0x4c,PSTOP=0x80。CURR是网卡写内存的指针,它指向当前正在写的页的下一页。初始化时CURR指向0x4c+1=0x4d。网卡写完接收缓冲区一页,这个页地址自动加1。当加到最后的空页(PSTOP)时,将CURR自动置为接收缓冲区的第一页(PSTART)。当CURR=BNRY时,表示缓冲区全部被存满,这时网卡停止往内存写数据,直到数据取走发送为止。而BNRY要由用户来操作。用户从网卡读走一页数据,要将BNRY加1,然后再写到BNRY寄存器。当CURR=BNRY+1(或当BNRY=0x7f,CURR=0x4c)时,网卡的接收缓冲区里没有数据,表示没有收到新的数据包。当上述条件不成立时,表示接收到新的数据包。网卡RAM数据的读写都是通过DMA端口进行的。

3.2.3 以太网通信模块电路设计

地址线A5、A6、A7、A10-A19均固定接地电平。其地址就是00300H-0031FH,共32个地址,其片选端接P3.5引脚,当片选P3.5=0时,STC89C58RD+对0000H-001FH地址操作,即对RTL8019AS进行读写,从而进行以太网通信。RTL8019AS的LED1、LED2

脚接LED,用于指示网络通信状态;输入输出脚通过隔离变压器接RJ-45插座。以太网

通信模块电路设计电路如图3.3。

图3.3 以太网接口电路

第2章软件设计

软件设计是系统设计中的重要实现部分,是系统的灵魂,就象人的大脑,指挥控制着硬件的运作。该系统中需要实现这样几部分:嵌入式TCP/IP 协议栈、P2P协议、串口通信协议等。

4.1 嵌入式TCP/IP协议分析

在网络应用日益普及的今天,越来越多的嵌入式设备实现了Internet网络化。TCP/IP协议是一种目前被广泛采用的网络协议。嵌入式Internet的技术核心是在嵌入式系统中部分或完整地实现TCP/IP协议。由于TCP/IP协议比较复杂,而目前嵌入式系统中大量应用低速处理器,受内存和速度限制,有必要将TCP/IP协议进行简化。本章所分析的TCP/IP协议都是指对标准TCP/IP协议进行裁剪简化后,移植到单片机上的嵌入式TCP/IP协议。

4.1.1 TCP/IP协议族[1]

为了对各种层次上使用的网络协议实现国际标准化,国际标准化组织ISO 提出OSI七层网络模型结构。它包括物理层(physics layer)、数据链路层(data link)、网络层(network layer)、传输层(transport layer)、会话层(session layer)、表示层(presentation layer)和应用层(application layer)。其中物理层的主要功能是实现通信结点之间的物理连接,在物理传输介质上传输“0”和“1”二进制比特流;数据链路层的主要功能是在物理层提供的比特服务基础上在相邻结点之间提供简单的通信链路,传输以帧为单位的数据,同时它还负责数据链路的流量控制、差错控制;网络层的核心任务就是控制通信子网的运行,即进行路由选择、拥塞控制和网络互连;传输层的任务是向用户提供可靠的、透明的端到端数据传输,以及差错控制和流量控制机制;会话层负责在不同的机器之间提供会话进程的通信,如建立、管理和拆除会话进程等;表示层处理通信进程之间交换数据的表示方法,包括语法转换、数据格式的转换、加密与解密、压缩与解压缩等;应用层负责管理应用程序之间的通信,这一层为用户提供最直接的服务,包括虚拟终端、文件传输、事务处理,网络管理等大量的网络协议。应用层是OSI参考模型的最高层,底层所有协议的最终目的都是为应用层提供可靠的传输手段,底层协议并没有直接满足用户的任何实际需求,我们日常使用的电子邮件程序、文件传输、www浏览器、多媒体传输等都属于应用层的范围。

但在实际的应用中并不是严格按照这些层次模型来实现的,而是按照己经广泛采用的TCP/IP协议族来应用。图4.1是OSI的7层模型和TCP/IP协议族的对照表。

图4.1 OSI模型和TCP/IP协议族

TCP/IP协议族没有严格定义OSI的7层模型,它只有4 层。而在功能上,链路层相当于OSI的物理层和数据链路层的功能,完成网络数据底层帧的形成和收发。网际层的主要功能是负责在互联网上传输数据分组,与OSI参考模型的网络层相对应,相当于OSI参考模型中网络层的无连接网络服务。网际层是TCP/IP参考模型中最重要的一层,它是通信的枢纽,完成的功能是:①从底层来的数据包要由它来选择继续传给其他网络结点或是直接交给传输层。②从传输层来的数据包,要负责按照数据分组的格式填充报头,选择发送路径并交由相应的线路发送出去。在网际层主要定义了互联协议(IP)以及数据分组的格式,它的主要功能是路由选择和拥塞控制。另外该层还定义了地址解析协议ARP和反向地址解析协议RARP以及ICMP协议。传输层的主要功能是负责端到端的对等实体之间进行通信,它与OSI参考模型的传输层功能类似,也对高层屏蔽了底层网络的实现细节,同时真正实现了源主机到目的主机的端到端的通信。TCP/IP 参考模型的传输层完全是建立在包交换通信子网基础之上的。TCP/IP的传输层定义了两个协议:传输控制协议,简称TCP(Transport Control Protocol),和用户数据报协议,简称UDP(User Datagram Protocol)。

TCP协议是可靠的,面向连接的协议。它用于包交换的计算机通信网络、互联系统以及类似的网络上,保证通信主机之间有可靠的字节流传输。UDP是一种不可靠的、无连接协议,它最大的优点是协议简单,额外开销小,效率较高,缺点是不保证正确传输,也不排除重复信息的发生。需要可靠数据传输保证的应选用TCP协议。相反,对数据精确度要求不是太高,而对速度、效率要求很高的环境,如声音、视频的传输,应该选用UDP协议。应用层是TCP/IP协议族的最高层,它包含了OSI参考模型中会话层、表示层和应用层这些高层的协议的功能。目前互联网络上的应用层协议有下面几种:电子邮件协议(SMIP),超文本传输协议(HTTP),网络终端协议(TELNET),文件传输协议(FTP),网络新闻传输协议(NNTP),DNS,SNMP,RIP/OSPF。TCP/IP协议族结构如图4.2所示。

图4.2 TCP/IP协议族中不同层次的协议

不管是OSI的7层模型,还是TCP/IP的4层结构,都有利于各个层次的对应实体之间通过各自的协议通信,有利于各个计算机系统都有相同的层次结构,有利于不同系统的相应层次有相同的功能,有利于同一系统的各层次之间通过接口联系,有利于相邻的两层之间,下层为上层提供服务,同时上层使用下层提供的服务。由于TCP/IP协议族对于单片机控制的以太网接口太大,并且在测控系统中也用不到协议族的全部,必须进行裁剪和精简成嵌入式TCP/IP。嵌入式TCP/IP软件按网络分层模型分层结构进行模块化设计。

4.1.2 链路层协议及以太网卡驱动

1、链路层协议

系统不涉及到逆地址解析协议(RARP),所以链路层在这里有2个作用:1)为IP模块发送和接收IP数据报;2)为ARP模块发送请求和接收ARP应答。链路层根据网络所使用的硬件不同可以分为多种,这里我们所指的链路层为以太网链路层。起始帧格式如图4.3所示。

图4.3 以太网封装格式

当一个以太网的信息帧被发送到共享的信号信道或介质时,所有与信道相连的以太网接口都读入该帧,并且查看该帧的第一个48比特地址段,其中包含有目的地址。各个接口把帧的目的地址和自己的48比特地址进行比较,如果自己的地址与帧中的目的地址相同,则该以太网站点将继续读入整个帧,并将它送给上层网络协议。上层网络协议读入帧的类型字段,判断这个信息帧类型字段是0806 ARP包还是0800 IP包,然后再交给不同的协议处理。当其他的网络接口发现目的地址与自己的地址不同时,就会停止读入该信息帧。发送和接收时对数据封装和提取都比较简单,只需按以太网帧数据结构对其填写、提取即可。对于以太网的帧有最小长度要求,要求最少要有46字节,为了保证这一点必须在不足的空间插入填充字节即PAD字段内容。

2、以太网卡驱动程序

驱动程序设计部分的主要内容是:初始化网卡、读取网卡内接收的数据和通过网卡发送用户数据。驱动程序分为发送函数send_frame、接收函数rcve_frame、初始化函数init_8019以及在主程序中用于查询网卡是否收到数据的query_8019函数。

RTL8019AS初始化函数init_8019 初始化页0与页1的相关寄存器,页2的寄存器是只读的,不可以设置,页3的寄存器不是NE2000兼容的,不用设置。RTL8019AS部分重要的寄存器参数设置如下:

1)CR=0x21,选择页0的寄存器;

2)TPSR=0x40,发送页的起始页地址,初始化为指向第一个发送缓冲区的页(即0x40);

3)PSTART=0x4c,PSTOP=0x80,构造缓冲环:0x4c-0x80;

4)BNRY=0x4c,设置指针;

5)RCR=0xcc,设置接收配置寄存器,使用接收缓冲区,仅接收自己地址的数据包(以及广播地址数据包)和多点播送数据包,小于64字节的包丢弃,校验错的数据包不接收;

6)TCR=0xe0,设置发送配置寄存器,启用CRC;自动生成和自动校验,工作在正常模式;

7)DCR=0xc8,设置数据配置寄存器,使用FIFO缓存,普通模式,8 位数据DMA;

8)IMR=0x00,设置中断屏蔽寄存器,屏蔽所有中断;

9)CR=0x61,选择页1的寄存器;

10)CURR=0x4d,CURR是RTL8019AS写内存的指针,指向当前正在写的页的下一页,初始化时指向0x4c+1=0x4d;

11)设置多址寄存器MAR0-MAR5,均设置为0x00;

12)设置网卡地址寄存器PAR0-PAR5;

13)CR=0x22,选择页1的寄存器,进入正常工作状态。

在函数send_frame中将待发送的数据按帧格式封装,先通过远程DMA通道送到RTL8019AS中的发送缓存区,然后发出传送命令,完成帧的发送任务。发送前的准备工作包括设置以太网目的地址、以太网源地址、协议类型。接着按所设置的协议类型来设置数据段。之后启动远程DMA,将数据写入RTL8019AS 的RAM,启动本地DMA,将数据发到网上。

RTL8019AS无法将整个数据包通过DMA通道一次性存入FIFO,所以在构造一个新的数据包之前必须先等待前一数据包发送完成(本系统中采用查询方式)。为提高发送效率,设计将12页的发送缓存区分为两个6页的发送缓存区,一个用于数据包发送,另一个用于构造新的数据包,交替使用。

4.1.3 ARP协议

当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机上时,是根据48位的以太网地址来确定目的接口的。设备驱动程序不检查IP数据报中的目的IP地址。地址解析为这两种不同的地址形式提供映射[1]。

ARP发送一份目标物理地址为全1(称作ARP请求)的以太网数据帧给以太网上的每个主机,这个过程称作广播,其中ARP请求数据帧中包含目的主机的IP地址。目的主机的ARP层收到这份广播报文后,识别出这是发送端在寻问它的IP地址,于是发送一个含IP地址及对应的硬件地址的数据帧给ARP请求作应答。

图4.4 以太网的ARP请求或应答方式

在图4.4中,目的地址为全1的是广播地址。对于ARP请求或应答来说以太网帧类型字段的值为0X0806。硬件类型字段表示硬件地址的类型。它的值为

1表示以太网地址。协议类型字段表示要映射的协议地址类型,值为0X0800表示IP地址。对于以太网上IP地址的ARP请求或应答来说,硬件地址长度和协议地址长度的值分别为6和4。操作字段(OP)指出四种操作类型,它们分别是ARP请求(值为1)、ARP应答(值为2),值3、4为RARP请求和应答。该字段为必填字段。

对于一个ARP请求来说,除目的端硬件地址外的所有其他字段都有填充值。当系统收到一份目的端发往本机的ARP请求报文后,它就把硬件地址填进去,然后用两个目的端地址分别替换两个发送端地址,并把操作字段置为2,最后把它发送回去。

ARP协议为32位IP地址到对应的48位以太网地址之间提供动态映射。嵌入式系统中仅响应ARP请求、发送ARP应答包。请求者广播出包含ARP请求的以太帧(目的以太网地址为全1称广播地址)。本机收到后,由目的IP地址判断自己是否为目的主机,若是则发送一个ARP应答。

ARP协议实现对ARP报文的解释、处理,同时管理ARP映射表。ARP报文分为ARP请求报文和ARP应答报文。当链路层要调用ip_send()发送IP数据包时,如果不知道目的物理地址,则调用arp_resolve()函数通过IP地址获取物理地址。arp_resolve()函数首先通过查找缓存区内的地址映射表,如果找到物理地址则直接给出,否则调用函数arp_send()发出ARP请求报文,等待该ARP请求报文收到应答后提取其目的MAC地址用于IP包的发送;ARP报文处理函数arp_rcve()负责对接收的报文进行处理,首先对收到的ARP报文中的映射记录添加到IP-MAC地址映射表中,如果收到ARP应答报文是刚才自己发出去的ARP请求,则调用网络层函数ip_send()把等候地址解析的IP数据报发出;如果收到ARP 请求报文,且请求解析的物理地址正是自己的物理地址,则调用函数arp_send()向对方发出ARP应答报文。

函数init_arp()负责ARP协议的初始化,主要是对映射表中每条映射按定义的数据结构进行初始化工作。另外当对第一次发送ARP请求没有收到ARP响应时,函数arp_retransmit()实现重发ARP请求,如果连续重发两次仍没收到ARP响应则放弃。

4.1.4 IP协议

IP是TCP/IP协议族中最为核心的协议。所有的TCP、UDP及ICMP数据都以IP数据报格式传输。IP的功能由IP首部结构中的数据定义[1]。

图4.5 IP数据报格式及首部中的各字段

IP数据报的格式如图4.5所示。普通的IP首部长为20个字节。除非含有选项字段。部分字段解释如下:

版本IP头中前4位标识了IP的操作版本,目前的协议版本号是4,因此IP有时也称作IPv4。

首部长度指的是首部占32位字的数目,包括任何选项。普通IP数据报(没有任何选项)字段的值是5。

服务类型包括一系列标志,这些标志能保证优先级、延时、吞吐量以及报文数的可靠性参数。

总长度字段是指整个IP数据报的长度,以字节为单位。

标志字段和片偏移标识字段唯一标识主机发送的每一份数据报。通常每发送一份报文它的值就会加1、标志字段和片偏移字在分片和重组的时候会用到。

生存时间(TTL)生存时间字段设置了数据报可以经过的最多路由器数,它指定了数据报的生存时间。TTL的初始值由源主机设置。一旦经过一个处理它的路由器,其值就减1。当该字段的值为0时,数据报被丢弃。

在本系统中,简化的IP协议主要是用来收发IP数据包,包括UDP、TCP、ICMP协议中的数据包。在上层协议中有关数据发送的函数都是调用ip_send()函数来实现的,比如tcp_send()、udp_send()和ping_send()函数,ip_rcve ()函数则负责IP协议里的数据接收和处理工作。

在发送IP数据包的时候,最关键的是要获得目标主机的硬件地址,ip_send ()函数是通过调用ARP协议里的arp_resolve()函数实现的。上层传过来的数据经过IP协议封装后,对IP数据包的头进行校验,如果无误,通过链路层协议的eth_send()函数交给下层以太网卡驱动程序发送。

在接收IP数据包的时候,先判断IP数据包的目的IP地址是否与本机IP地址相符,再判断IP头校验是否正确,然后查看该IP数据包是否使用的是IPv4协议,最后确认收到的IP数据包是正确的。在经过上述检验工作后,接下来就是对收到的IP数据包按包含的协议ID字段进行分析,不同协议ID字段分别交给不同的协议来处理。

4.1.5 ICMP协议

ICMP协议位于IP层,负责接收、解释、发送ICMP报文。ICMP报文主要有两种功能:报告出错信息、传送控制信息。尽管与IP协议处于同一层次,但ICMP报文却是封装在IP数据包的数据段部分进行传送的,具体报文的封装如图4.6所示。在本系统中,ICMP协议的主要作用是实现ping程序。ping程序负责测试本机到目标IP主机是否可到达。该程序发送一份ICMP回显请求给主机,并等待返回ICMP回显应答。而且ping程序还能测试本机到目标主机的往返时间。

图4.6 ICMP报文的封装

ICMP经常被认为是IP层的一个组成部分。它传递差错报文以及其他需要注意的信息。在这里只是对ICMP的报文作简要的描述。本系统ICMP协议实现比较单一,用来回显请求和回显应答报文。Ping程序由两个函数组成:ping_send 函数、icmp_rcve函数。其中,icmp_rcve函数负责解释、处理收到的ICMP报文。当ICMP协议收到IP层送来的报文时,先对其进行校验和检查,在确保全1前提下再判断该ICMP报文类型,只有类型为8时(即回显请求)系统才调用ping_send 函数向对方主机发送一个Ping回显报文,其他类型系统默认不动作(系统对标准协议裁减);ping_send函数负责构成ICMP报文并发送该报文,它是将包含发送信息的ICMP报文交由IP层发送。

4.1.6 UDP协议

UDP是一个简单的面向数据报的传输层协议,应用程序进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。UDP提供了一种基本的、低延时的传输。UDP数据报封装成一份IP数据报的格式如图4.7所示。

图4.7 UDP报文的封装

图4.8 UDP首部字段

UDP首部字段如图4.8所示,部分字段解释:

UDP源/目的端口号UDP协议使用端口号为不同的应用程序保留其各自的数据传输通道。UDP和TCP协议正是采用这一机制实现对同一时刻内多项应用程序同时发送和接收数据的支持。有的应用程序只能使用特定的端口,如HTTP协议用到80端口;用户自己的应用程序则可以使用未被注册的动态端口(一般大于1024)。

UDP长度UDP长度字段指的是UDP首部和UDP数据的字节长度。该字段的最小值为8字节。IP数据报长度指的是数据报全长,因此UDP数据报长度是IP数据报全长减去IP首部的长度。

UDP校验和校验和是一个16位的错误检查域,基于报文的内容计算得到。UDP校验和覆盖UDP首部和UDP数据(IP首部的校验和只覆盖IP的首部,并不覆盖IP数据报中的任何数据)。UDP校验和的基本计算方法与IP首部校验和计算方法相类似(16位字的二进制反码和),但是它们之间存在不同的地方。首先,UDP数据报的长度可以为奇数字节,但是IP校验和算法是把若干个16位字相加,字节数不能为奇数。解决方法是必要时在最后增加填充字节0,这只是为了校验和的计算(就是说,可能增加的填充字节不被传送)。

其次,UDP数据报和TCP段都包含一个12字节长的伪首部,它是为了计算校验和而设置的。伪首部包含IP首部一些字段。这些字段包括IP头中的32位源IP地址和32为目的IP地址。

UDP协议建立在IP协议之上,同IP协议一样提供无连接的数据报传输。相对IP协议而言,唯一增加的功能是提供协议端口以实现进程间的通信。

UDP和TCP一样是基于IP协议的,UDP协议的框架和系统对UDP协议的

实现都比较简单,接收数据的时候,只是检测端口和校验码,然后将应用数据提取出来。发送数据时,所要做的也只不过就是将应用数据和UDP头添加进去送给IP层处理。要注意的是,虽然UDP、TCP和IP是用同样的校验程序,但是UDP和TCP的校验和计算还考虑了一个12字节长的伪首部,伪首部包含IP首部一些字段(32位的源IP地址和32位的目标IP地址)。具体步骤是:发送数据时,上层调用本层的数据发送函数udp_send(),在udp_send()中再调用下层的ip_send()函数实现发送。当下层接收到数据时,调用本层的数据接收函数udp_recv(),在udp_recv()中通知用户接收任务有UDP数据报到达。系统中增加UDP协议的主要目的是对系统收发数据的功能的测试,特别是检验网络层以下各协议的工作是否正常。函数udp_echo_service()是本系统增加用于测试系统对UDP数据报收发的一个函数,工作过程是这样的:当系统收到其他主机发送的一个UDP数据报时,函数提取发送该报文的目的主机IP地址等信息,然后按原来UDP数据报的数据内容,源、目的地址交换,组成一个新的UDP数据报发回给目的主机。在目的主机上,通过比较发收数据的一致性,就能判断系统UDP数据报传输和处理的正确性。

嵌入式系统硬件体系结构设计

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

2. 中间层 硬件层与软件层之间为中间层,也称为硬件抽象层(Hardware Abstract Layer,HAL)或板级支持包(Board Support Package,BSP),它将系统上层软件与底层硬件分离开来,使系统的底层驱动程序与硬件无关,上层软件开发人员无需关心底层硬件的具体情况,根据BSP 层提供的接口即可进行开发。该层一般包含相关底层硬件的初始化、数据的输入/输出操作和硬件设备的配置功能。 3. 系统软件层 系统软件层由实时多任务操作系统(Real-time Operation System,RTOS)、文件系统、图形用户接口(Graphic User Interface,GUI)、网络系统及通用组件模块组成。RTOS是嵌入式应用软件的基础和开发平台。 4. 功能层 功能层主要由实现某种或某几项任务而被开发运行于操作系统上的程序组成。 一个嵌入式系统装置一般都由嵌入式计算机系统和执行装置组成,而嵌入式计算机系统是整个嵌入式系统的核心,由硬件层、中间层、系统软件层和应用软件层组成。执行装置也称为被控对象,它可以接受嵌入式计算机系统发出的控制命令,执行所规定的操作或任务。 硬件的设计 本网关硬件环境以单片机S3C2440芯片和DM9000以太网控制芯片为主,

嵌入式开发的必备知识

嵌入式开发的必备知识 嵌入式操作系统简介 嵌入式操作系统(EmbeddedSystem)是指以应用为中心、以计算机技术为基础,软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。举例来说,大到油田的集散控制系统和工厂流水线,小到家用VCD机或手机,甚至组成普通PC终端设备的键盘、鼠标、硬盘、Modem等均是由嵌入式处理器控制的。 嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。像我们平常常见到的手机、PDA、电子字典、可视电话、VCD/DVD/MP3Player、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set TopBox)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等都是典型的嵌入式系统。 为什么要学嵌入式软件开发?好处是什么? (1)目前国内外这方面的人都很稀缺。一方面,是因为这一领域入门门槛较高,不仅要懂较底层软件(例如操作系统级、驱动程序级软件),对软件专业水平要求较高(嵌入式系统对软件设计的时间和空间效率要求较高),而且必须懂得硬件的工作原理,所以非专业IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,很多软硬件技术出现时间不长或正在出现(如ARM处理器、嵌入式操作系统、MPEG技术、无线通信协议等),掌握这些新技术的人当然很找。嵌入式人才稀缺,身价自然就高,越有经验价格就越高。其实嵌入式人才稀少,根本原因可能是大多数人无条件接触,这需要相应的嵌入式开发板和软件,另外需要有经验的人进行指导开发流程。

嵌入式课程设计

嵌入式课程设计 学院:计算机与通信工程学院专业:物联网工程班级:物联1501 姓名:王强学号:41501602 实验日期:2017年12月25日 实验名称: 嵌入式课程设计 实验目的: 以STC89开发板为硬件平台,开发温度采集、动态数码管显示、按键响应、与PC串口通讯的综合程序,实现以下功能: 1)PC上的串口调试助手通过串口给STC89开发板发送“GetTemp”命令。 2)STC89开发板从串口接收到“GetTemp”命令后启动温度传感器DS18B20的测温程序获取当前温度,测试完成时将所测得温度数据显示在动态数码管上。(动态数码管在温度获取之前应该显示“FFFFFFFF”,只有在获取温度后才显示温度值) 3)动态数码管显示出温度数据后,请通过按键触发STC89开发板通过串口回送步骤2所测的温度数据给PC上串口调试助手,同时恢复动态数码管显示为“FFFFFFFF”。为保证每个同学的实验都独立完成,要求回送的数据包含自己的学号,即如果你的学号是20150809,当前温度值是19.6摄氏度,那么在PC上的串口调试助手应该显示:20150809 : 19.6°C。硬件电路说明: 1)STC89处理器管脚和晶振电路

2)独立按键 独立按键一共5个,分别连接在单片机的P3.0到P3.4口。去抖动的方式,我们采用软件延时的方法。过程如下: 先设置IO口为高电平(一般上电默认就为高),读取IO口电平确认是否有按键按下,如有IO电平为低电平后,延时几个ms,再读取该IO电平,如果任然为低电平,说明对应按键按下,执行相应按键的程序。 3)DS18B20温度传感器部分 DS18B20内部的低温度系数振荡器是一个振荡频率随温度变化很小的振荡器,为计数器1提供一频率稳定的计数脉冲。 高温度系数振荡器是一个振荡频率对温度很敏感的振荡器,为计数器2提供一个频率随温度变化的计数脉冲。 初始时,温度寄存器被预置成-55℃,每当计数器1从预置数开始减计数到0时,温度寄存器中寄存的温度值就增加1℃,这个过程重复进行,直到计数器2计数到0时便停止。 初始时,计数器1预置的是与-55℃相对应的一个预置值。以后计数器1每一个循环的预置数都由斜率累加器提供。为了补偿振荡器温度特性的非线性性,斜率累加器提供的预置数也随温度相应变化。计数器1的预置数也就是在给定温度处使温度寄存器寄存值增加1℃计数器所需要的计数个数。 DS18B20内部的比较器以四舍五入的量化方式确定温度寄存器的最低有效位。在计数器2停止计数后,比较器将计数器1中的计数剩余值转换为温度值后与0.25℃进行比较,若低于0.25℃,温度寄存器的最低位就置0;若高于0.25℃,最低位就置1;若高于0.75℃时,温度寄存器的最低位就进位然后置0。这样,经过比较后所得的温度寄存器的值就是最终读

嵌入式系统最小系统硬件设计

引言 嵌入式系统是以应用为中心,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。本文主要研究了基于SEP3202(内嵌ARM7TDMI 处理器内核)的嵌入式最小系统,围绕其设计出相应的存储器、总线扩展槽、电源电路、复位电路、JTAG、UART等一系列电路模块。 嵌入式最小系统 根据IEEE的定义,嵌入式系统是:控制、监视或者辅助装置、机器和设备运行的装置。这主要是从应用上加以定义的,从中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。不过上述定义并不能充分体现出嵌入式系统的精髓,目前国内一个普遍被认同的定义是:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 嵌入式最小系统即是在尽可能减少上层应用的情况下,能够使系统运行的最小化模块配置。以ARM内核嵌入式微处理器为中心,具有完全相配接的Flash电路、SDRAM电路、JTAG电路、电源电路、晶振电路、复位信号电路和系统总线扩展等,保证嵌入式微处理器正常运行的系统,可称为嵌入式最小系统。对于一个典型的嵌入式最小系统,以ARM处理器为例,其构成模块及其各部分功能如图1所示,其中ARM微处理器、FLASH和SDRAM模块是嵌入式最小系统的核心部分。 ?微处理器——采用了SEP3203; ?电源模块——为SEP3203内核电路提供2.5V的工作电压,为部分外围芯片提供3.3V的工作电压; ?时钟模块(晶振)——通常经ARM内部锁相环进行相应的倍频,以提供系统各模块运行所需的时钟频率输入。32.768kHz给RTC和Reset模块,产生计数时钟,10MHz作为主时钟源; ?Flash存储模块——存放嵌入式操作系统、用户应用程序或者其他在系统掉电后需要保存的用户数据等; ?SDRAM模块——为系统运行提供动态存储空间,是系统代码运行的主要区域; ?JTAG模块——对芯片内部所有部件进行访问,通过该接口对系统进行调试、编程等,实现对程序代码的下载和调试; ?UART模块——用于系统与其他应用系统的短距离双向串行通信; ?复位模块——实现对系统的复位;

嵌入式课程设计电子词典硬件设计

嵌入式课程设计电子词典硬件设计

————————————————————————————————作者:————————————————————————————————日期:

上海电力学院 嵌入式系统 课程设计报告 题目:电子词典的设计 姓名: 学号: 院系: 专业年级: 同组成员: 年月日

一、实验内容及要求 在LCD屏幕左侧绘制出单词输入框和释义显示框以及一个搜索键,右侧绘制4*4键盘按钮,模拟出简易电子词典的功能,按钮操作用触摸屏或键盘实现均可。 实现功能: (1)LCD屏幕上显示4*4键盘,显示单词及其翻译、例句。 (2)一个键可完成2个英文字母的输入,如左上角第一个键可实现输入a,b两个字母,第一次按下时为输入a,如果需输入b,只需连续快速按键两次即可。 (3)在输入完单词后,点击搜索键,即可在释义显示框中显示该单词的词性、中文解释、示例词组和句子等。 (4)当发现输入的单词在库中不存在时,可实现将该单词添加入库的操作。 二、设计思路 (1)通过LCD显示模块画出电子词典操作界面。 (2)对应界面中各键的位置设置键盘对应键值。 (3)设定功能键,实现以下3个功能:①退格键:删除最后一位字母;②搜索∕保存键:对输入框的单词进行判断,若单词存在于词库中,则显示单词词性、词义、例句;若单词不存在则自动进行保存;③转换键:按下后,字母键输出对应的第二个字母。 (4)按键后赋值并显示。 三、软件构架 开 LCD模块 键盘 结

四、模块分析 (1)键盘模块 流程图: 源代码:/********************************************************************************************* * File : keyboard.c * Author: embest * Desc : keyboard source code * History: *********************************************************************************************/ /*--- include files ---*/ 开键盘初始键盘是Y 读取是否是功Y N 执行赋显结束 N

嵌入式课程设计报告

中南大学 嵌入式课程设计 《基于ARM平台的打地鼠游戏》 姓名:董嘉伟 学号:0909103303 班级:物联网1002

指导教师:刘连浩李刚 时间:2013-9-13 目录 ●课程设计内容 ●课程设计实验环境 ●课程设计原理分析 ●课程设计开发计划 ●课程设计系统设计图 ●课程设计关键源码分析 ●课程设计成果展示 ●课程设计总结 ●参考资料 ●工程源代码

一、课程设计内容 本次课程设计基于课程《物联网与嵌入式系统》的学习,利用现有的硬件知识和计算机软件编程知识从以下三个题目选择一个作为课程设计内容:测频程序、交通灯演示系统、打地鼠游戏,难度依次递增。基于个人实力和兴趣的考虑,我选择了打地鼠游戏作为我的课程设计题目。 具体要求如下: ●LCD正确显示需求内容 ●触摸屏功能正常使用 ●基本的打地鼠游戏环节 ●打地鼠游戏流畅运行,无显著BUG ●游戏结束后输出统计数据 二、课程设计实验环境 软件:WindowsXP\Keil uVision4.72\ARM DeveloperSuite1.2\ H-JTAG\DNW\,其中keil编译优化等级为Level0. 硬件:飞凌FL2440开发板,4.3寸(480*272)显示屏、USB-JTAG 仿真器 实验室:中南大学-美国德州仪器联合嵌入式实验室 三、课程设计原理分析 1、LCD显示原理分析

S3C2440的LCD控制器由由一个逻辑单元组成,它的作用是:把LCD 图像数据从一个位于系统内存的videobuffer传送到一个外部的LCD 驱动器。LCD控制器使用一个基于时间的像素抖动算法和侦速率控制思想,可以支持单色,2-bitper pixel(4级灰度)或者4-bit-pixel(16级灰度)屏,并且它可以与256色(8BPP)和4096色(12BPP)的彩色STN LCD连接。它支持1BPP,2BPP,4BPP,8BPP的调色板TFT彩色屏并且支持64K色(16BPP)和16M色(24BPP) 非调色板真彩显示。LCD控制器是可以编程满足不同的需求,关于水平,垂直方向的像素数目,数据接口的数据线宽度,接口时序和刷新速率。 S3C2440 LCD控制器被用来传送视频数据和生成必要的控制信号,比如VFRAME, VLINE,VCLK,VM,等等。除了控制信号外,这S3C2440还有作为视频数据的数据端口,它们是如图15-1 所示的VD[23:0]。LCD控制器由REGBANK,LCDCDMA,VIDPRCS, TIMEGEN,和LPC3600(看15-1LCD控制器方块图)组成。REGBANK 由17个可编程的寄存器组和一块256*16的调色板内存组成, 它们用来配置LCD控制器的。LCDCDMA是一个专用的DMA,它能自动地把在侦内存中的视频数据传送到LCD驱动器。通过使用这个DMA通道,视频数据在不需要CPU的干预的情况下显示在LCD 屏上。VIDPRCS接收来自LCDCDMA的数据,将数据转换为合适的数据格式,比如说4/8位单扫,4位双扫显示模式,然后通过数据端口VD[23:0]传送视频数据到LCD驱动器。TIMEGEN由可编程

嵌入式知识点整理

第一章 一:嵌入式系统基础知识 第二章 一:CM3 1.Cortex-M3 是一个32 位处理器内核。内部的数据路径是32 位的,寄存器是32 位的,存储器接口也是32 位的。CM3 采用了哈佛结构,拥有独立的指令总线和数据总线。 2.程序计数寄存器 R15 :程序计数寄存器,指向当前程序地址。 3.特殊功能寄存器 (1)程序状态字寄存器组(PSRs)记录ALU 标志(0 标志,进位标志,负数标志,溢出标志),执行状态,以及当前正服务的中断号; (2)中断屏蔽寄存器组:PRIMASK 失能所有的中断、FAULTMASK 失能所有的fault、BASEPRI 失能所有优先级不高于某个具体数值的中断; (3)控制寄存器(CONTROL ),定义特权状态(见后续章节对特权的叙述),并且决定使用哪一个堆栈指针; 4.Cortex-M3 处理器支持两种处理器的操作模式,还支持两级特权

操作。 两种操作模式:(1)处理者模式(handler mode) 异常服务例程的代码—包括中断服务(2)线程模式(thread mode)普通应用程序的代码; 两级特权:特权级和用户级,提供一种存储器访问保护机制,使得普通用户程序代码不能意外地,甚至是恶意地执行涉及到要害的操作。 复位后,处理器默认进入线程模式,特权级访问; a.在 CM3 运行主应用程序时(线程模式),既可以使用特权级, 也可 以使用用户级;但是异常服务例程必须在特权级下执行; b.在特权级下,程序可以访问所有范围的存储器,并且可以执行所 有指 令,包括切换到用户级; c.从用户级到特权级的唯一途径就是异常,用户级的程序必须执行 一条系统调用指令(SVC)触发 SVC 异常,然后由异常服务例程接管,如果批准了进入,则异常服务例程修改 CONTROL 寄存器,才能在用户级的线程模式下重新进入特权级; 5.异常以及异常类型 异常:在 ARM 编程领域中,凡是打断程序顺序执行的事件,都被称为异常(exception) 。包括:外部中断、不可屏蔽中断、指令执行了“非法操作”或者访问被禁的内存区间产生的各种错误 fault。

嵌入式硬件电路设计需要考虑的七大问题

嵌入式硬件电路设计需要考虑的七大问题(厚学网) 设计以MCU为核心的嵌入式系统硬件电路需要根据需求分析进行综合考虑,需要考虑的问题较多,这里给出几个特别要注意的问题. 1、MCU的选择 选择MCU 时要考虑MCU 所能够完成的功能、MCU 的价格、功耗、供电电压、I/O 口电平、管脚数目以及MCU 的封装等因素。MCU 的功耗可以从其电气性能参数中查到。供电电压有5V、3.3V 以及 1.8V 超低电压供电模式。为了能合理分配MCU 的I/O资源,在MCU 选型时可绘制一张引脚分配表,供以后的设计使用。 2、电源 (1)考虑系统对电源的需求,例如系统需要几种电源,如24V、12V、5V或者3.3V等,估计各需要多少功率或最大电流(mA)。在计算电源总功率时要考虑一定的余量,可按公式“电源总功率=2×器件总功率”来计算。 (2)考虑芯片与器件对电源波动性的需求。一般允许电源波动幅度在±5% 以内。对于A/D转换芯片的参考电压一般要求±1% 以内。 (3)考虑工作电源是使用电源模块还是使用外接电源。 3、普通I/O口 (1)上拉、下拉电阻:考虑用内部或者外部上/下拉电阻,内部上/下拉阻值一般在700Ω 左右,低功耗模式不宜使用。外部上/下拉电阻根据需要可选 10KΩ~1MΩ 之间。 (2)开关量输入:一定要保证高低电压分明。理想情况下高电平就是电源电压,低电平就是地的电平。如果外部电路无法正确区分高低电平,但高低仍有较大压差,可考虑用A/D 采集的方式设计处理。对分压方式中的采样点,要考虑分压电阻的选择,使该点通过采样端口的电流不小于采样最小输入电流,否则无法进行采样。

2012嵌入式系统课程设计报告书5

郑州航空工业管理学院嵌入式系统课程设计报告 题目:嵌入式Linux系统中无线网络的设计 20 – 20第学期 院系: 姓名: 专业: 学号: 指导老师: 电子通信工程系 2012年11月制

目录(在这里添加相应的目录)

一、引言 (同学们自己在这里添加相应的内容) 二、设计目的 三、设计要求 1. 任务要求 要求能独立地分析题目意义、设计实现步骤、画出硬件原理图及软件流程图、调试驱动模块。 该设计的具体要求如下: 2. 设计所需的软硬件设备 (1)硬件环境配置 计算机:Intel(R) Pentium(R) 及以上 内存:1GB及以上 实验设备:UP-NETARM2410-S嵌入式开发平台 (2)软件环境配置 操作系统:Microsoft Windows XP Professional Service Pack 2 虚拟机:VMware WorkStation 7 Linux系统:Red Hat Enterprise Linux AS 4 (2.6.9-5.EL) 嵌入式交叉编译器:arm-linux-gcc 3.4.4版本 Linux内核版本:Linux-2.6.14 SKYEYE版本:skyeye-1.2.4 U-Boot版本:U-Boot-1.3.2 BusyBox版本:BusyBox-1.2.0 3. 课程设计报告内容 按该设计报告要求的模式格式提交课程设计报告书。 四、推荐的进展安排 五、考核评价

六、总体设计 (同学们自己在这里添加相应的内容)七、总结 (同学们自己在这里添加相应的内容)八、参考文献 (同学们自己在这里添加相应的内容)

嵌入式课程设计——蓝牙无线数据传输

课程设计书—《嵌入式系统实训》 学院 姓名 学号 组别

目录 1设计概述 (1) 2设计方案 (1) 2.1详细设计方案 (2) 2.1.1 电源模块 (2) 2.1.2 主芯片模块 (2) 2.1.3 WIFI模块 (3) 2.1.4 霍尔传感器模块 (3) 2.1.5 开关磁阻电机 (4) 2.1.6 电路板抗干扰设计 (5) 2.2软件设计方案 (6) 3手机客户端APP设计 (6) 3.1开发环境的搭建 (6) 3.2手机APP的主要功能模块 (7) 4软件件调试过程和结果 (15) 5课程总结 (19)

1设计概述 能源是经济发展和社会进步的支柱,能源问题成为当今世界各国尤其是发达国家所要解决的头等大事。世界各国都在鼓励大力开发可再生能源。风能和太阳能成为当下最受欢迎的新能源,也是目前可再生能源应用技术中最成熟的。本设计基于人体运动出来的机械能转化成可利用回收的电能,是新能源的一种体现,具有很好的开发前景和实际用途。 该设计是基于以stm32f030芯片为主芯片的智能发电的PCB 主板,再利用开关磁阻电机进行发电,将其电压和电流通过wifi 模块发送给手机端,通过手机上的APP 可以显示出电流和电压值,并进行后台处理和数据保存。设计将从芯片器件的选型再到PCB 板的设计,之后是PCB 板的焊接,再是软件的编写与调试,软件部分还包括手机APP 的编写,最终完成本次设计。 1 设计方案 该设计方案可以划分为两个部分,第一部分是终端部分,有发电机的驱动模块,电压电流采集模块,WiFi 模块以和主控芯片及其外设;第二部分是手机部分,该部分主要是实现一个上位机的功能,包括接收信息,发送指令,主要有登录界面和查询界面。两部分之间通过WIFI 来实现通信。所以总体设计框图1所示: 图2.1 总体设计方案 其中手机端的设计为纯粹的软件设计,而智能发电系统主体的设计方案是方案设计中的重点部分包括硬件部分的设计与软件部分的设计。该系统的设计方案包括以下几个方面,一是小车主体电路板的设计方案,属于硬件部分的设计;二是软件设计方案,属于软件部分的设计,主要是用于驱动硬件电路和给手机端APP 提供操作接口。 该系统主体电路板的设计包括电源模块的设计,主芯片外围电路的设计,WiFi 模块的设计,电机驱动模块的设计,各个传感器模块的设计。软件部分的设计包括主体函数的设计及各个功能模块的设计,在实现了各个功能模块设计的基础上设计出主体程序,以便可以随时中断某一个功能而去实现另外的功能。外围设计主要是各个传感器的放置位置的选择,以便达到所需的功能。 终端部分 手机端 蓝牙信号

嵌入式系统基础知识总结

必读:嵌入式系统基础知识总结 2016-07-22电子发烧友网 本文主要介绍嵌入式系统的一些基础知识,希望对各位有帮助。 嵌入式系统基础 1、嵌入式系统的定义 (1)定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 (2)嵌入式系统发展的4个阶段:无操作系统阶段、简单操作系统阶段、实时操作系统阶段、面向Internet阶段。 (3)知识产权核(IP核):具有知识产权的、功能具体、接口规范、可在多个集成电路设计中重复使用的功能模块,是实现系统芯片(SOC)的基本构件。(4)IP核模块有行为、结构和物理3级不同程度的设计,对应描述功能行为的不同可以分为三类:软核、固核、硬核。 2、嵌入式系统的组成 包含:硬件层、中间层、系统软件层和应用软件层 (1)硬件层:嵌入式微处理器、存储器、通用设备接口和I/O接口。 嵌入式核心模块=微处理器+电源电路+时钟电路+存储器

Cache:位于主存和嵌入式微处理器内核之间,存放的是最近一段时间微处理器使用最多的程序代码和数据。它的主要目标是减小存储器给微处理器内核造成的存储器访问瓶颈,使处理速度更快。 (2)中间层(也称为硬件抽象层HAL或者板级支持包BSP). 它将系统上层软件和底层硬件分离开来,使系统上层软件开发人员无需关系底层硬件的具体情况,根据BSP层提供的接口开发即可。 BSP有两个特点:硬件相关性和操作系统相关性。 设计一个完整的BSP需要完成两部分工作: A、嵌入式系统的硬件初始化和BSP功能。 片级初始化:纯硬件的初始化过程,把嵌入式微处理器从上电的默认状态逐步设置成系统所要求的工作状态。 板级初始化:包含软硬件两部分在内的初始化过程,为随后的系统初始化和应用程序建立硬件和软件的运行环境。 系统级初始化:以软件为主的初始化过程,进行操作系统的初始化。 B、设计硬件相关的设备驱动。 (3)系统软件层:由RTOS、文件系统、GUI、网络系统及通用组件模块组成。RTOS是嵌入式应用软件的基础和开发平台。 (4)应用软件:由基于实时系统开发的应用程序组成。

嵌入式课程设计温度传感器-课程设计

嵌入式系统原理与应用 课程设计 —基于ARM9的温度传感器 学号:2012180401** 班级:**************1班 姓名:李* 指导教师:邱*

课程设计任务书 班级: ************* 姓名:***** 设计周数: 1 学分: 2 指导教师: 邱选兵 设计题目: 基于ARM9的温度传感器 设计目的及要求: 目的: 1.熟悉手工焊锡的常用工具的使用及其维护与修理。 2.基本掌握手工电烙铁的焊接技术,能够独立的完成简单电子产品的安装与焊 接。熟悉电子产品的安装工艺的生产流程。 3.熟悉印制电路板设计的步骤和方法,熟悉手工制作印制电板的工艺流程,能 够根据电路原理图,元器件实物设计并制作印制电路板。 4.熟悉常用电子器件的类别、型号、规格、性能及其使用范围,能查阅有关的 电子器件图书。 5.能够正确识别和选用常用的电子器件,并且能够熟练使用普通万用表和数字 万用表。 6.掌握和运用单片机的基本内部结构、功能部件、接口技术以及应用技术。 7.各种外围器件和传感器的应用; 8.了解电子产品的焊接、调试与维修方法。 要求: 1.学生都掌握、单片机的内部结构、功能部件,接口技术等技能; 2.根据题目进行调研,确定实施方案,购买元件,并绘制原理图,焊接电路板, 调试程序; 3.焊接和写汇编程序及调试,提交课程设计系统(包括硬件和软件);. 4.完成课程设计报告 设计内容和方法:使用温度传感器PT1000,直接感应外部的温度变化。使用恒流源电路,保证通过PT1000的电流相等,根据PT1000的工作原理与对应关系,得到温度与电阻的关系,将得到的电压放大20倍。结合ARM9与LCD,将得到的参量显示在液晶屏上。

嵌入式系统课程设计(基于ARM的温度采集系统设计) 精品

基于ARM的温度采集系统 1.1设计目的 1、注重培养综合运用所学知识、独立分析和解决实际问题的能力,培养创新意识和创新能力,并获得科学研究的基础训练。 2、了解所选择的ARM芯片各个引脚功能,工作方式,计数/定时,I/O口,中断等的相关原理,并巩固学习嵌入式的相关内容知识。 3、通过软硬件设计实现利用ARM芯片对周围环境温度信号的采集及显示。 1.2设计意义 嵌入式系统是以应用为中心,以计算机技术为基础,且软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由以下几部分组成:嵌入式微处理器、外围硬件设备、嵌入式操作系统。嵌入式系统是面向用户、面向产品、面向应用的,它必须与具体应用相结合才会具有生命力、才更具有优势。因此嵌入式系统是与应用紧密结合的,它具有很强的专用性,必须结合实际系统需求进行合理的裁减利用。嵌入式系统是将先进的计算机技术、半导体技术和电子技术和各个行业的具体应用相结合后的产物,这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。嵌入式系统必须根据应用需求对软硬件进行裁剪,满足应用系统的功能、可靠性、成本、体积等要求。所以,如果能建立相对通用的软硬件基础,然后在其上开发出适应各种需要的系统,是一个比较好的发展模式。目前的嵌入式系统的核心往往是一个只有几K到几十K微内核,需要根据实际的使用进行功能扩展或者裁减,但是由于微内核的存在,使得这种扩展能够非常顺利的进行。 数据采集(DAQ),是指从传感器和其它待测设备等模拟和数字被测单元中自动采集非电量或者电量信号,送到上位机中进行分析,处理。数据采集系统是结合基于计算机或者其他专用测试平台的测量软硬件产品来实现灵活的、用户自定义的测量系统。被采集数据是已被转换为电讯号的各种物理量,如温度、水位、风速、压力等,可以是模拟量,也可以是数字量。采集一般是采样方式,即隔一定时间(称采样周期)对同一点数据重复采集。采集的数据大多是瞬时值,也可是某段时间内的一个特征值。准确的数据量测

嵌入式技术基础与实践答案(第3版)

第一章 1.嵌入式系统的基本含义是什么?为什么说单片机是典型的嵌入式系统? 答:即MCU的含义是:在一块芯片上集成了中央处理单元(CPU)、存储器(RAM/ROM等)、定时器/计数器及多种输入输出(I/O)接口的比较完整的数字处理系统。大部分嵌入式系统以MCU为核心进行设计。MCU从体系结构到指令系统都是按照嵌入式系统的应用特点专门设计的,它能很好地满足应用系统的嵌入、面向测控对象、现场可靠运行等方面的要求。因此以MCU为核心的系统是应用最广的嵌入式系统。 2.简述嵌入式系统的特点以及应用领域(举例)。 答:嵌入式系统属于计算机系统,但不单独以通用计算机的面目出现;嵌入式系统开发需要专用工具和特殊方法;使用MCU设计嵌入式系统,数据与程序空间采用不同存储介质;开发嵌入式系统涉及软件、硬件及应用领域的知识;嵌入式系统的其他特点,比如紧张的资源,较高稳定性要求,低功耗,低成本等。 一般用于工业控制,智能家电,日常电子等领域。 日常数码产品:手机,MP3,U盘,相机等。 日常工业类:冰箱,空调,微波炉,汽车等。

3.比较MCU与CPU的区别与联系。 答:CPU是一个单独的PC处理器。而MCU,则有微处理器,存储器(RAM/ROM等)、定时器/计数器及多种输入输出(I/O)接口的比较完整的数字处理系统。所以可以这么说,MCU是一个包含微处理器的嵌入式系统,而CPU紧紧是一个处理器而已。 4. 总结嵌入式系统常用术语。 硬件:封装,印刷电路板,动态可读写随机存储器与静态可读写随机存储器,只读存储器,闪速存储器,模拟量与开关量。 通信:并行通信,串行通信,串行外设接口,集成电路互连总线,通用串行总线,控制器局域网,背景调试模式,边界扫描测试协议,串行线调试技术。 功能模块及软件:通用输入/输出,A/D与D/A,脉冲宽度调制器,看门狗,液晶显示,发光二级管,键盘,实时操作系统。 5.C语言的那些特性使得它成为嵌入式系统中使用频率最高的高级语言。 答:相比底端汇编,更简单易学;与高级语言如(C++,C#,java等)相比,执行效率高,编译后的编码体积小,而且支持好的编译器还支持嵌入汇编代码;对位的操纵能力很强。 6. 举例说明结构体变量类型的定义、结构体变量的声明与使用方法。

嵌入式开发必须具备哪些基础知识

嵌入式开发必须具备哪些基础知识 嵌入式操作系统简介 嵌入式操作系统(EmbeddedSystem)是指以应用为中心、以计算机技术为基础,软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。举例来说,大到油田的集散控制系统和工厂流水线,小到家用VCD机或手机,甚至组成普通PC终端设备的键盘、鼠标、硬盘、Modem等均是由嵌入式处理器控制的。 嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。像我们平常常见到的手机、PDA、电子字典、可视电话、VCD/DVD/MP3Player、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set TopBox)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等都是典型的嵌入式系统。 为什么要学嵌入式软件开发?好处是什么? (1)目前国内外这方面的人都很稀缺。一方面,是因为这一领域入门门槛较高,不仅要懂较底层软件(例如操作系统级、驱动程序级软件),对软件专业水平要求较高(嵌入式系统对软件设计的时间和空间效率要求较高),而且必须懂得硬件的工作原理,所以非专业IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,很多软硬件技术出现时间不长或正在出现(如ARM处理器、嵌入式操作系统、MPEG技术、无线通信协议等),掌握这些新技术的人当然很找。嵌入式人才稀缺,身价自然就高,越有经验价格就越高。其实嵌入式人才稀少,根本原因可能是大多数人无条件接触,这需要相应的嵌入式开发板和软件,另外需要有经验的人进行指导开发流程。 (2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。搞企业应用软件的IT企业,这个用户的系统搞完了,又得去搞下一个用户的,而且每个用户的需求和完成时间都得按客户要求改变,往往疲于奔命,重复劳动。相比而言,搞嵌

嵌入式课程设计

嵌入式课程设计报告 学院信息电子技术 专业电子信息工程 班级13级 学籍号 姓名 指导教师 2016年0月00日

基于ARM9的无线智能家居控制系统 1.引言 当网络席卷整个社会,带来经济飞速发展的同时,也给人们的生活带来无限的惊奇。不断更新的生活方式,使得越来越多的人追求对生活的舒适度和享受度。智能家居作为新生力量呼之欲出,自然地走进了我们的生活,随之,引领新一代的数字家庭生活。 所谓“智能家居”(Smart Home),又称智能住宅。它利用先进的计算机嵌入式系统、通信技术、现代传感技术和网络技术,将家庭中的各种设备(如照明系统、安防系统、信息家电)通过家庭内部无线网络连接到一起。一方面,智能家居将使得使用它的用户能够更加方便、快捷和轻松的管理自己的家电设备,例如,用户可以通过平板电脑、智能手机和其他控制终端设备对家用设备进行远程操控和状态的实时监控,进行室内场景配置以及形成多个家电设备的联动功能等等;另一方面,智能家居内的各种设备不需要通过用户的操控就可以实现相互间的通讯,从而根据相关家电设备的不同的状态互动运行,为用户提供高效、便利、舒适与安全的智能家居生活。 2.系统设计 (1)硬件电路设计 文中提出的基于ARM9的无线智能家居控制系统主要包括ARM9核心控制模块,无线通信模块、LCD触摸屏模块和家居电器,另外还有传感检测,语音报警和电源等模块。系统总体结构模型图如图1所示。 图1系统总体结构模型图 其中ARM是整个系统的控制核心,通过GPRS和ZigBee无线通信网络收

发控制指令实现对家居电器进行综合监控,同时提供防火墙的功能,阻止外界对家庭内部设备的非法访问和攻击。 无线通信模块分为本地和远程两部分,本地通信主要通过新型的ZigBee无线通信技术实现系统与家居电器的通信,达到对其控制;远程通信是利用手机通过GPRS通信网络或利用计算机通过互联网实现人与控制系统的通信,进而达到对家居电器的远程监控。采用无线通信技术省去了布线使家居布局更加灵活,远程控制使家居电器工作更加贴近人们的工作和生活要求。 智能家居控制系统的具体功能包括:家居电器的综合监控、室内环境信息采集、自动报警、本地控制、远程控制、安全防盗等。 基本电路组成 1)主控芯片S3C2440A 本系统采用的是Samsung公司推出的16/32位RISC微处理器S3C2440A,它具有0.13μm的CMOS标准宏单元和存储器单元,它的杰出的之处是其处理器核心,该核心是由Advanced RISC Machines有限公司设计的ARM920T内核,ARM920T内核实现了MMU,AMBA BUS和Harvard高速缓冲体系结构,这一体系结构具有独立的16KB指令Cache和16KB数据Cache。 2)电源电路 电源是整个智能家居控制系统的能量之源,电源的稳定供电为系统得以安全、正确的运行提供了保障,本系统共需要两种电压5V和3.3V。为了提高终端设备内部的安全性并进一步减低系统的设计成本,本系统选用的市面上的12V、2A的开关稳压电源作为系统的基本供电输入,首先经过LM2576转换成5V,并经过滤波和稳压电路输出稳定的5V电压,为系统上需要5V电源的电路供电。其次,5V输出再经过LM1117D转换成3.3V,经过一定的滤波处理后为系统需要3.3V供电的电路供电,如图2所示。 图2 3.3V电压转换输出电路 3)复位电路的设计

嵌入式课程设计流水灯

流水灯编程 实验目的: 掌握GPIO端口的基本控制方法 掌握硬件电路仿真方法。 实验内容: 1、复习流水灯的工作原理。 2、按教材上 3、4节的内容或实验指导书2、1节的内容创建好项目,生成可执行文件。 3、阅读LED示例程序代码。 4、软件模拟,无误后下载到实验板上运行,观察效果。 5、通过硬件仿真的方式调试程序。分析LED_Init、main这2个函数中每一行代码的作用。 6、修改程序使得灯改变一次状态的时间间隔为0、02、0、01、0、1、0、3、0、5、1、2秒。 7、修改程序使得灯闪动的方向反向。 8、修改循环亮灯的程序,使每次亮灯的起始位置依次下移。 选做进阶版 1.用左边4个灯闪烁代表绿灯,右边4个灯闪烁代表红灯,8个灯 全亮代表黄灯。模拟交通信号灯运行(绿灯10秒,红灯20秒, 绿到红过渡时黄灯3秒) 2、将自己的学号编码用LED灯效果展示出来。 实验原理:

电路中有L0,L1,L2,L3,L4,L5,L6,L7共八个发光二极管,当引脚LED_SEL输入为1,对于A、B、C、D、E、F、G、H引脚,只要输入为1,则点亮相连接的发光二极管。 A~H引脚连接STM32F108VB芯片的PE8~PE15,程序初始化时,对其进行初始设置。引脚LED_SEL为1时,发光二极管才工作,否则右边的数码管工作。注意,LED_SEL连接于PB3,该引脚具有复用功能,在默认状态下,该引脚的IO不可用,需对AFIO_MAPR寄存器进行设置,设置其为IO可用。 实验过程及结果描述: 按实验内容的步骤一步一步的来。重点描述实验内容的6、7、8还有选修进阶的1、2、 要实现改变灯状态的时间间隔,只需改变delay_ms这函数的里面的参数即可,例如时间间隔改为0、02秒就将参数改为20,1秒就将参数改为1000,(delay_ms()函数里面参数的单位为ms)其它以此类推。通过参数的改变可以瞧到灯状态改变的时延相应的改变了。 改变灯的闪动方向则将light左移或者右移位数的值赋给light,例如循环一次左移一位,则light=light<<1,右移则就是light=light>>1;这里又涉及到当左移(右移)到最左(右)一位时,再次亮灯时的起始位置设置的问题,这里就可以设置当左移(右移)到最左(最右),设置一个判断语句当左移(右移)到左(右)端点时,将初始值赋给题目要求的位置即可。 实验结果:灯的移动方向改变。每次循环完一次之后通过改变赋给初

硬件开发工程师入门宝典

获取更多权威电子书请登录https://www.360docs.net/doc/dd17981107.html, ARM嵌入式系统开发综述ARM开发工程师入门宝典

获取更多权威电子书请登录https://www.360docs.net/doc/dd17981107.html, 前言 嵌入式系统通常是以具体应用为中心,以处理器为核心且面向实际应用的软硬件系统,其硬件是整个嵌入式系统运行的基础和平台,提供了软件运行所需的物理平台和通信接口;而嵌入式系统的软件一般包括操作系统和应用软件,它们是整个系统的控制核心,提供人机交互的信息等。所以,嵌入式系统的开发通常包括硬件和软件两部分的开发,硬件部分主要包括选择合适的MCU或者SOC 器件、存储器类型、通讯接口及I/O、电源及其他的辅助设备等;软件部分主要涉及OS porting和应用程序的开发等,与此同时,软件中断调试和实时调试、代码的优化、可移植性/可重用以及软件固化等也是嵌入式软件开发的关键。 嵌入式系统开发的每一个环节都可以独立地展开进行详细的阐述,而本文的出发点主要是为嵌入式开发的初学者者提供一个流程参考。因为对于初学者在面对一个嵌入式开发项目的时候,往往面临着诸多困难,如选择什么样的开发平台?什么样的器件类型?在进行编译时怎样实现代码优化?开发工具该如何选择和使用?在进行程序调试时应该注意那些问题以及选择什么样的嵌入式OS 等等。希望通过本文,能帮助初学者了解有关ARM嵌入式系统开发流程。

获取更多权威电子书请登录https://www.360docs.net/doc/dd17981107.html, 目录 前言 (2) 1 嵌入式开发平台 (4) 1.1 ARM的开发平台: (4) 1.2 器件选型 (7) 2 工具选择 (11) 3 编译和连接 (13) 3.1 RVCT的优化级别与优化方向 (16) 3.2 Multifile compilation (21) 3.3调试 (22) 4 操作系统 (23) 4.1 哪里可以得到os 软件包 (Open Source and Linux Kernel) (25) 4.2 安装镜像 (26) 4.3 交叉编译 (26) 总结 (27)

嵌入式系统设计课程设计

电气与电子信息工程学院 嵌入式系统设计课程设计 设计题目:基于AT89S52单片机的游戏机嵌入式系统设计与制作专业班级:电子信息工程2008级(2)班 学号:200840210212 姓名:童俊 指导教师:邓彬伟李玉平 设计时间:2011/11/14~2011/12/2 设计地点:K2自动化综合实验室

嵌入式系统设计课程设计成绩评定表 姓名童俊学号200840210212 专业班级电子信息工程2008级(2)班 课程设计题目:基于AT89S52单片机的游戏机嵌入式系统设计与制作 课程设计答辩或质疑记录: 1、什么叫嵌入式系统? 答:以应用为中心,以计算机技术为基础,软硬件可剪裁适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 2.所做的电路中有哪几个任务? 答:总共六个,分别是:功能选择,贪吃蛇游戏,时间温度显示,PS2键盘控制,温度采集,时间采集。 3.贪吃蛇这个游戏是怎么实现的? 答:在这个游戏中主要用到两个长度为二的数组控制蛇的头部坐标和尾部坐标,蛇的初始化长度为3,通过定时器没隔一定的时间给蛇一个步进信号,在蛇移动的过程中和转弯的过程中需判断前面是否有食物,是否碰到自己身体。食物的坐标也是通过定时器的高八位和第八位的数字余上30所的。 成绩评定依据: 实物制作(40%): 课程设计考勤情况(20%): 课程设计答辩情况(20%): 完成设计任务及报告规范性(20%): 最终评定成绩(以优、良、中、及格、不及格评定) 指导教师签字: 2010年12 月20 日

课程设计任务书 2011 ~2012 学年第 1 学期 学生姓名:林忠航专业班级: 08电信本1、2 指导教师:邓彬伟、李玉平工作部门:电信教研室 一、课程设计题目 嵌入式系统设计课程设计 二、课程设计目的 为了提高嵌入式系统设计与实际的应用能力,开始为期三周的嵌入式系统设计课程设计。通过实训使学生在巩固所学单片机知识的基础之进一步把其与μC/OS-II操作系统的移植结合起来,增强学生对所学知识的实际应用能力和以及与当前专业的前沿知识结合,达到对μC/OS-II操作系统的学习和理解,为以后从事嵌入式工作的研究和开发打好基础。 三、课程设计内容 设计基于51单片机的嵌入式系统,把μC/OS-II操作系统移植到51单片机上,能完成基本的输入和输出,输入采用4*4的键盘,输出采用1602液晶。再此基础之上,每个同学根据自己的特长扩展应用系统,具体可参考以下五种扩展方案的实现。 1、设计的游戏机,在游戏机工作时有背景音乐放出。 2、设计的是电子琴以及1602液晶显示。 3、设计的流水灯、蜂鸣器、闪烁灯任务。, 4、设计的流水灯和电子书功能。 5、(1)所有灯灭,(2)1602显示 93)LED灯闪烁,显示字符。 四、进度安排 序号设计内容所用时间 1 布置任务,学习μC/OS-II操作系统5天 2 开发μC/OS-II操作系统的移植代码3天 3 制作基于51单片机的硬件系统2天 4 软硬件集成和调试2天 5 答辩、撰写设计报告书3天 合计15天 五、基本要求 1、设计基于51单片机的输入和输出电路。 2、用4×4的键盘作为输入设备。 3、用LED或LCD进行显示。

相关文档
最新文档