嵌入式系统设计与实例开发
——ARM与µC/OS-Ⅱ
北京航空航天大学 北京航空航天大学
智能嵌入式技术工作室
智能嵌入式技术工作室
五、基于ARM的嵌入式系统硬件结构设计
¾嵌入式系统体系结构设计
¾基于ARM的硬件设计
嵌入式系统的软/硬件框架
机械装置
D/A 通用接口
实时操作系统(RTOS) 图形用户
接口
BSP/HAL 硬件抽象层/板极支持包 任务管理 文件系统
应用程序
传感器1 传感器2
传感器N ...
驱动器1 驱动器2
驱动器N ...
软件层
中间层 功能层
被控对象
嵌入式系统的设计步骤
体系结构设计 系统需求分析:
规格说明书
机械系统设计 硬件设计 软件设计
系统集成
系统测试
嵌入式系统设计步骤
z
系统需求分析:确定设计任务和设计目标,并提炼出设计规格说 明书,作为正式设计指导和验收的标准。系统的需求一般分功能 性需求和非功能性需求两方面。功能性需求是系统的基本功能,如输入输出信号、操作方式等;非功能需求包括系统性能、成本
、功耗、体积、重量等因素。
z
体系结构设计:描述系统如何实现所述的功能和非功能需求,包 括对硬件、软件和执行装置的功能划分以及系统的软件、硬件选 型等。一个好的体系结构是设计成功与否的关键。z
硬件/软件协同设计:基于体系结构,对系统的软件、硬件进行详 细设计。为了缩短产品开发周期,设计往往是并行的。应该说,嵌入式系统设计的工作大部分都集中在软件设计上,采用面向对 象技术、软件组件技术、模块化设计是现代软件工程经常采用的 方法。
z
系统集成:把系统的软件、硬件和执行装置集成在一起,进行调嵌入式系统的硬件体系结构
通用嵌入式 微处理器 应用软件
数据
可重构 计算部件 配置存储器
数据
ASIC
数据
通用微处理器 可重构计算机 ASIC
嵌入式系统设计的层次
z
系统级z
应用级¾嵌入式系统框架设计
¾基于ARM的硬件设计
基于ARM的硬件设计
主要介绍基于ARM7的嵌入式硬件开发平台的设计方法,包括结 构、主要接口、存储器选用方案以及外设、显示等方面的内容。
z
嵌入式硬件开发平台的体系结构z
外围存储器接口设计方法z
键盘、LCD等人机交互接口的设计z
触摸屏的设计z
以太网设计z
CAN总线设计Samsung S3C44B0X
z
Samsung S3C44B0X微处理器是三星公司专为手持设备和一般 应 用 提 供 的 高 性 价 比 和 高 性 能 的 微 控 制 器 解 决 方 案 , 它 使 用 ARM7TDMI核,工作在66MHZ。为了降低系统总成本和减少外围器件,这款芯片中还集成了下列部件:
z
8KB Cache、外部存储器控制器、LCD控制器、4个DMA通道、2通道UART、1个多主I2C总线控制器、1个IIS总线控制器,5通道PWM 定时器及一个内部定时器、71个通用I/O口、8个外部中断源、实时 时钟、8通道10位ADC等。
基于ARM的嵌入式硬件平台体系结构
芯片体系结构
S3C44B0X存储系统的特征
z
支持数据存储的大/小端选择(通过外部引脚进行选择)z
地址空间:具有8个存储体,每个存储体可达32Mb,总共可达 256Mb。z
对所有存储体的访问大小均可进行改变(8位/16位/32位)z
8个存储体中,Bank0-Bank5可支持ROM、SRAM;Bank6、Bank7 可支持ROM、SRAM和FP/EDO/SDRAM等。z
7个存储体的起始地址固定,1个存储体的起始地址可变。复位后的S3C44B0X的存储器映射表
2MB/4MB/8MB/16MB/32MB
2MB/4MB/8MB/16MB/32MB
32MB
32MB
32MB 32MB
32MB
256MB SA[27:0]
可存取 区域
参见 表 7-1
特殊功能 寄存器(4MB)
(nGCS1)SROM SROM
(nGCS2)
SROM
(nGCS3)
SROM
(nGCS4)
(nGCS5)SROM SROM/DRAM/SDRAM
(nGCS6)
SROM/DRAM/SDRAM
(Ngcs7)
0x1000_0000
0x0e00_0000
0x0c00_0000
0x0e00_0000
0x0800_0000
0x0600_0000
0x0400_0000
0x0200_0000
典型系统中存储体的分配情况
存储体 与存储体的接口
Bank0
BIOS 512K×2FlashBank1 16M Flash 硬盘
Bank2 USB接口
Bank3 LCD显示模块
Bank4 保留
Bank5 保留
Bank6 系统内存SDRAM
S3C44B0X与FLASH的连接(Half Word方式)
z
使用Bank0上的两片512Kb×2来放置系统BIOS,系统上电以后,PC指针自动指向Bank0的第一个单元,开始进行系统自举。系统 自举完成以后,便从硬盘中将系统文件和用户应用程序复制到 SDRAM内存中执行。
z
Bank1上接16M非线性Flash,当做系统硬盘使用,可以构造文件 系统,存放海量数据。z
用SDRAM当作系统内存,只有Bank6/Bank7能支持SDRAM,所以将 SDRAM接在Bank6上。如果同时使用Bank6/Bank7,则要求连接相 同容量的存储,而且其地址空间在物理上是连续的。z
Bank0:系统的启动ROM(Flash Rom)。在系统复位的时候,处理 器的PC(程序计数器)指针指向0x0地址。在Bank0的起始地址的 程序,就是系统的初始化程序。此程序的主要任务是:1、管理处理器的中断服务程序
z
处理器的中断是从0x0地址开始,引导ROM负责把这一部分的中断 映射到另一个区域,以便系统处理。具体的做法,可以参考44binit.s里面的代码。(这部分代码是三星主页可以提供,它把 系统的中断,映射到了不同的指针所指向的地址空间(主要就是 系统RAM的空间))。
2、初始化硬件平台,配置其他的Bank
z
S3C44B0X的Bank0是通过外部的一个管脚提供的上拉、下拉电阻来 配置的。主要包括:数据位数(8位、16位、32位),数据格式(大端、小端)。而其他的Bank的配置,以及读写周期等信息是靠 Bank0内部的代码配置相应的寄存器来实现的。同时,系统的引导 Rom也负责配置系统的其他的一些寄存器,比如,系统的PLL(锁 频环)配置,系统的IO口等一些端口功能的配置等等。
3、系统自动检测
z
引导Rom负责检测系统的启动必须的外设是否正常。主要是系统的 SDRAM的检测。4、系统的软件设置,更新系统(system.bin)
z
用户可以在系统启动的时候,按任意键,进入系统的软件设置状 态。通过引导Rom设置或者查看系统的一些软件信息。包括:通过 开启USB端口,更新系统文件system.bin;LCD显示测试;演示程 序的装载测试;键盘测试;触摸屏的坐标校准;触摸屏测试;以 太网地址的设置等实验系统的存储空间分配
z
在系统引导的最后阶段,负责复制system.bin到系统的SDRAM中,然后,把PC指针指向SDRAM中程序的首地址,开始运行。
z
Bank1:K9F2808(三星 16Mbyte Flash),非线性寻址,每次寻 址需要3次写入8位地址线。具体的时序可以参考K9F2808的datasheet
z
Bank2:USBN9603。USB设备端接口芯片,占用系统外部中断0。8 位数据总线。z
Bank3、Bank4未接设备。可以共扩展使用z
Bank5:RTL8019AS,ISA总线兼容的10M以太网(PHY+MAC层)控 制芯片。占用系统外部中断1,16位数据总线z
Bank6:SDRAM,起始地址为0xC000000。在SDRAM中,前512Kbyte 的空间划分出来,作为系统的LCD显示缓冲区使用(更新其中的数 据,就可以更新LCD的显示)。系统的程序存储空间从0xC080000 开始。也就是,引导系统的时候,需要把system.bin文件复制到 0xC080000开始的地址空间,把PC指针指向0xC080000。z
Bank7:未使用。可以扩展另一片SDRAM,或者其他的外设。z
系统的同步串行口(SIO),连接着触摸屏控制芯片FM7843(与 ADS7843完全兼容)。在同步串行口上,还可以扩展其他的芯片。靠IO口控制设备的片选信号(CS)来防止设备的冲突。
z
注:系统的扩展接口上,A0的标号,连接在S3C44B0X的ADDR1上,后面的地址依次向后错位。
外围接口设计
嵌入式开发板与PC机的串行通讯
嵌入式开发板和PC机的通讯电缆可以按照如图所示的方式 连接。
人机交互接口
人机交互接口
LCD显示模块
液晶显示是一种被动的显示,它不能发光,只能使用周围环 境的光。它显示图案或字符只需很小能量。液晶显示所用的液晶材 料是一种兼有液态和固体双重性质的有机物,它的棒状结构在液晶 盒内一般平行排列,但在电场作用下能改变其排列方向。
LCD的背光:
z
EL(场致发光):2000-3000小时z
和LED光源:字符模式,50000小时LCD有三种显示方式
LCD有三种显示方式:反射型,透射型和透反射型。
(1)反射型LCD的底偏光片后面加了一块反射板,它一般在户 外和光线良好的办公室使用。
(2)透射型LCD的底偏光片是透射偏光片,它需要连续使用背 光源,一般在光线差的环境使用。
(3)透反射型LCD是处于以上两者之间,底偏光片能部分反光
,一般也带背光源,光线好的时候,可关掉背光源;光线差时,可点 亮背光源使用LCD。
反射型LCD的结构
z
LCD通常由两种方式,一种是带有驱动芯片的LCD模块,基本 上属于半成品z
如果有需要,也可以直接使用芯片上的内置LCD控制器来构造 显示模块,它可以支持彩色/灰度/单色三种模式,灰度模式下可支 持4级灰度和16级灰度,彩色模式下最多支持256色,LCD的实际尺寸 可支持到320X240。嵌入式处理器与LCD的连接
嵌入 式处 理器
LCD 模块
数据 总线 寄存器选择 使能信号
从系统结构上来讲,由于显示器模块中已经有显示存储器。
显存中的每一个单元对应LCD上的一个点,只要显存中的内容改变
,显示结果便进行刷新。于是便存在两种刷新:
1.直接对根据系统要求对显存进行修改,一种是只需修改相 应的局部就可以,不需要判断覆盖等有覆盖问题,那计算起来比 较复杂,而且每做一点小的屏幕改变就进行刷新,将增加系统负 担。
2 .专门开辟显示内存,在需要刷新时候由程序进行显示更 新。这样,不但可以减轻总线负荷,而且也比较合理,在有需要 的时候进行统一的显示更新,界面也可以比较美观,不致由于无 法预料的刷新动作导致显示界面闪烁。
前后台双重显示缓存的显示模块结构
键盘模块
z
键盘模块键盘可能用来输入数字型数据或者选择控制设备的操 作模式。z
键盘有两种方案:一是采用现有的一些芯片实现键盘扫描;再 就是用软件实现键盘扫描。嵌入式控制器的功能很强,可能允分利 用这一资源。一个瞬时接触开关(
按钮)放置在每一行与线一 列的交叉点。矩阵所需的键 的数目显然根据应用程序而 不同。每一行由一个输出端 口的一位驱动,而每一列由 一个电阻器上拉且供给输入 端口一位。
z
键盘扫描过程就是让微处理器按有规律的时间间隔查看键 盘矩阵,以确定是否有键被按下。每个键被分配一个称为扫描码 的唯一标识符。应用程序利用该扫描码,根据按下的键来判定应 该采取什么行动。z
消抖算法:z
组合键处理触摸屏设计
触摸屏分类
z
电阻式触摸屏z
表面声波触摸屏z
红外式触摸屏z
电容式触摸屏电阻式触摸屏
z
分为四线电阻和五线电阻触摸屏z
电阻技术触摸屏是一种对外界完全隔离的工作环境,故不怕灰尘、水汽和油污,可以用任何物体来触摸,比较适合工业控制领域 及办公室内有限人的使用。
四线电阻触摸屏原理
测量原理
Y
Y V
X
触摸屏芯片
FM(ADS)7843的特点
z
实现触摸屏的驱动选择控制(X、Y通道)z
对于输入电压或附加电压进行AD转换z
同步串行接口z
最大转换速率125KHzz
可编程控制8位或者12位转换模式z
工作电压2.7V-5.0Vz
两个附加的输入端口FM7843与ARM的连接
嵌入式以太网设计
以太网接口的基本知识
1、传输编码
z 曼彻斯特编码
z 差分曼彻斯特编码
以太网协议
z 以太网MAC层物理传输帧 (IEEE802.3 )
PR SD DA SA TYPE DATA PAD FCS
56位 8位 48位 48位 16位 不超过1500字节 可选 32位
PR: 同步位,收发双方的时钟同步,也指明传输的速率(10M、100M)
SD: 分隔位,表示下面跟着的是真正的数据,而不是同步时钟
DA: 目的地址,以太网的地址为48位地址。如果为都为F,则是广播地址 SA: 源地址,48位,表明该帧的数据是哪个网卡发的,即发送端的网卡地址 TYPE:类型字段,表明该帧的数据是什么类型的数据。如:0800H 表示数
据为IP包,0806H表示数据为ARP包,814CH是SNMP包,8137H 为IPX/SPX包
DATA:数据段,该段数据不能超过1500字节。
以太网的数据传输特点
z
PR,SD,PAD,FCS这几个数据段是由网卡自动产生的;只需要理 解DA、SA、TYPE、DATA四个段的内容z
所有数据位的传输由低位开始(传输的位流使用曼彻斯特编码)z
以太网的冲突退避算法是由硬件自动执行的z
DA+SA+TYPE+DATA+PAD最小为60字节,最大为1514字节z
以太网卡可以接收三种地址的数据,一个是广播地位,一个是多 播地址(在嵌入式的环境中一般不用),一个是它自已的地址z
任何两个网卡的物理地址都是不一样的,是世界上唯一的,网卡嵌入式的以太网方案
z
嵌入式处理器+网卡芯片(RTL8019)z
对嵌入式处理器没有特殊要求,通用性强z
处理器和网络数据交换通过外部总线,速度慢,不适合于 100M网络z
带有以太网络接口的嵌入式处理器z
处理器面向网络应用z
处理器和网络数据交换通过内部总线,速度快RTL8019的原理框图
嵌入式网络接口的特点
z
与常规的网卡设计思路不同的是,在嵌入式系统中,系统的精简 一直是个主要的原则。RTL8019AS作为网卡,时需要一片EEPROM作为配置存储器,来确定通讯的端口地址,中断地址,
网卡的物理地址,工作模式,制造厂商等信息;
z
而在嵌入式系统中,可以使用RTL8019AS的默认配置和一些管脚 作为网卡的初始化方法。这样可以节省配置存储器,减小嵌入式 硬件平台的体积。基于RTL8019在嵌入式以太网设计
1 RTL8019AS的初始化
RTL8019支持即插即用模式和非即插即用模式。在嵌入式系统中
,网卡的外设通常是不经常插拔的,所以,为了系统的精简,配 置RTL8019为非即插即用模式。有着固定的中断,有着固定的端 口地址,假设是端口是0x300(这里的端口是相对于ISA总线来说 的端口,对于ARM的总线,需要重新计算地址)。这些配置可以 通过RTL8019的外部管脚,在系统上电复位的时候,自动配置起 来。
关于RTL8019的RAM
z
RTL8019含有16K字节的RAM,地址为0x4000-0x7fff(指的是 RTL8019内部的存储地址,是RTL8019工作用的存储器,可以通 过远程DMA访问),每256个字节称为一页,共有64页。页的地 址就是地址的高8位,页地址为0x40--0x7f。这16k的ram的一部分 用来存放接收的数据包,一部分用来存储待发送的数据包2 通过RTL8019AS发送数据
作为一个集成的以太网芯片,数据的发送校验,总线数据包的碰 撞检测与避免是由芯片自己完成的。我们只需要配置发送数据的 物理层地址的源地址、目的地址、数据包类型以及发送的数据就 可以了。
3、通过RTL8019AS接收数据
z
在RTL8019的初始化程序中已经设置好了接收缓冲区的位置,并 且配置好了中断的模式。当有一个正确的数据包到达的时候,RTL8019会产生一个中断信号,在ARM中断处理程序中,接收数 据。
z
数据的接收比较简单,即通过远端DMA把数据从RTL8019的RAM 空间读回ARM中处理。TCP/IP 协议的层次
应用层(Application) BSD套接字(BSD Sockets) 传输层 (Transport) TCP、UDP
网络层 (Network) IP、ARP、ICMP、IGMP
数据链路层(Data Link) IEEE802.3 Ethernet MAC
嵌入式以太网中主要处理的协议
z
ARP(Address Resolation Protocol) 地址解析协议z
ICMP (Internet Control Messages Protocol) 网络控制报文协议z
IP(Internet Protocol) 网际协议z
TCP(Transfer Control Protocol) 传输控制协议z
UDP(User Datagram Protocol) 用户数据包协议ARP地址解析协议
z
网络层用32 bit的IP地址来标识不同的主机,而链路层使用48 bit的物 理(MAC)地址来标识不同的以太网接口。只知道目的主机的IP地址 并不能发送数据帧给它,必须知道目的主机网络接口的MAC地址才能 发送数据帧。z
ARP的功能是实现从IP地址到对应物理地址的转换。源主机发送一份包含目的主机IP地址的ARP请求数据帧给网上的每个 主机,称作ARP广播,目的主机的ARP收到这份广播报文后,识别出 这是发送端在寻问它的IP地址,于是发送一个包含目的主机IP地址及 对应的MAC地址的ARP回答给源主机。
z
每台主机上都有一个ARP高速缓存,存放最近的IP地址到硬件地址之 间的映射记录。通常每一项的生存时间为20分钟ICMP网络控制报文协议
z
IP层的附属协议,IP层用它来与其他主机或路由器交换错误报文和其他 重要控制信息。z
ICMP报文是在IP数据包内部被传输的。z
两个实用的网络诊断工具,Ping和Traceroute(Tracert),都是利用该 协议工作的。IP网际协议
z
IP工作在网络层,是TCP/IP协议族中最为核心的协议。所有的 TCP,UDP,ICMP以及IGMP数据都以IP数据包格式传输。z
IP数据包最长可达65535字节,其中报头占32 bit的数目。包含各 32 bit的源IP地址和目的IP地址。在嵌入式应用中,简化设计,IP 数据包长度等于数据链路层的数据长度。TCP传输控制协议
z
TCP是一个面向连接的可靠的传输层协议。TCP为两台主机提供 高可靠性的端到端数据通信。主要包括:z
发送方把应用程序交给它的数据分成合适的小块,并添加附加 信息(TCP头),包括顺序号,源、目的端口,控制、纠错信 息等字段,称为TCP数据包。并将TCP数据包交给下面的网络 层处理。z
接受方确认接收到的TCP数据包,重组并将数据送往高层。UDP协议
z
UDP是一种无连接不可靠的传输层协议。z
把应用程序传来的数据加上UDP头(包括端口号,段长等字段),作为UDP数据包发送出去,但是并不保证它们能到达目的地。
可靠性由应用层来提供。就象发送一封写有地址的一般信件,却 不保证它能到达。
关于端口
z TCP和UDP采用16位的端口号来识别上层的TCP用户,即上层应用协议 如FTP,TELNET等。
z 常见的TCP/IP服务都用1-255之间的端口号。例如FTP服务的TCP端口 号都是21,Telnet服务的TCP端口号都是23
z 256-1023之间的端口号通常都是提供一些特定的Unix服务
z TCP/IP临时端口分配1024-5000之间的端口号
基于ARM和uCOS-II的TCP/IP协议
z
向ARM和uC/OS移植一个TCP/IP协议栈z
采用uC/OS自带的TCP/IP协议栈移植TCP/IP协议栈需要注意的问题
字节对齐问题
代码A: 代码B:
struct _A _packed struct _B { {
unsigned char time; unsigned char time;
unsigned int data; unsigned int data;
}A; }B;
z
结构体A是成员4字节的存储方式(sizeof(struct A)==8),结构 体B是成员非4字节的存储方式(sizeof(struct B)==5)。在内存 中的存储结构,如图6-35所示。BSD套接字(BSD Sockets)
z BSD Sockets使用的最广泛的网络程序编程方法,主要用于应用程序的 编写,用于网络上主机与主机之间的相互通信
z UNIX,Linux,VxWorks均支持BSD Sockets,Windows的Winsock基本 上是来自BSD Sockets
z Socket分为Stream Sockets和Data Sockets
z Stream Sockets是可靠性的双向数据传输,使用TCP协议
z Data Sockets是不可靠连接,使用UDP协议
套接字的使用
UDP服务器端和一个UDP客户端通信的程序过程
z 创建一个Socket
sFd =socket (AF_INET, SOCK_DGRAM, 0) z 把Socket和本机的IP,UDP口绑定
bind (sFd, (struct sockaddr *) &serverAddr, sockAddrSize)
z 循环等待,接收(recvfrom)或者发送(sendfrom)信息
z 关闭Socket,通信终止
close (sFd)
CAN总线设计
CAN总线概述
z Controller Area Network,控制器局域网,现场总线之一。
z 是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率,高抗电磁干 扰性,而且能够检测出产生的任何错误。
z 主要应用于汽车电控制系统、电梯控制系统、安全监控系统、医疗仪器、纺织机 械、船舶运输等方面
z CiA(CAN in Automation)为全球应用CAN技术的权威。
CAN总线特点
z 低成本
z 远距离传输(长达10Km)
z 高速的数据传输速率(高达1Mbit/s)
z 可根据报文的ID决定接收或屏蔽该报文
z 可靠的错误处理和检错机制
z 发送的信息遭到破坏后,可自动重发
z 节点在错误严重的情况下具有自动退出总 线的功能
CAN总线控制器体系结构
状态/控制 协议控制器 寄存器
总 线 接 口
CAN 总线
宿主机 接口 消息对象
接收缓冲区
CAN总线扩展芯片
z
SJA1000——Philips独立CAN控制器,替代82C200,支持CAN2.0A/B,同时支持11位和 29位ID,位速率可达1M,具有总线仲裁功能,扩展的接收缓冲器(64字 节、先进先出FIFO),增强的环境温度范围(-40-+125℃)。
z
82C250CAN总线收发器, 是CAN协议控制器和物理总线之间的接口,该器件对 总线提供差动发送能力并对CAN控制器提供差动额接收能力,有很强的 抗电磁干扰(EMI)的能力 ,至少可挂110个节点。
z
TJA1050原理说明
z
ARM和SJA1000以总线方式连接,SJA1000的复用总线和 ARM的数据总线连接。SJA1000的片选、读写信号均采用 ARM总线信号,ALE信号由读写信号和地址信号通过GAL产 生。在写SJA1000寄存器时,首先往总线的一个地址写数据,作为地址,读写信号无效,ALE变化产生锁存信号;然后 写另外一个地址,读写信号有效,作为数据。上述逻辑完全 通过GAL产生。
z
控制CAN总线时首先初始化各寄存器,目前采用BASIC CAN方式。发送数据时首先置位命令寄存器,然后写发送缓 冲区,最后置位请求发送。接收通过查询状态寄存器,读取 接收缓冲区获得信息。需要注意的问题
z ALE问题。由于ARM总线非复用,而SJA1000总线复用,所以必须通过 逻辑产生地址锁存信号ALE,在本例中该信号由一位地址信号和写信号 逻辑产生。
z 电平问题。由于ARM信号为3.3伏,而CAN总线控制器电平为5伏,所以 所有信号之间均需要电平转换,本例中使用了QS34X245作为电平转换 芯片。
z 电阻问题。CAN总线需要在两线间加一个120欧电阻。
CAN总线应用——工程机械智能监控器
工程机械智能监控器体系结构
嵌入式工程机械智能监控器
系统主函数 Main
液晶屏显示
LED闪烁
系统主任务 Main_Task
键盘扫描
串行口扫描