免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1617 | 回复: 0
打印 上一主题 下一主题

嵌入式常识 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-19 22:54 |只看该作者 |倒序浏览

   
   
   
  
嵌入式开发流程 :
准备开发主机(PC)
准备编译器
准备目标机引导程序 bootloader
准备目标机操作系统
准备目标机文件系统
一种嵌入式LINUX开发模式
TFTP服务 下载文件
NFS服务 挂载文件系统
bootloader写好之后通过并口JTAG下载到目标机,完成了目标机的bootloader的固化
接下来通过网口下载内核到目标机内存 bootlader引导内核
通过主机连接到开发板的串口线来看是否正常
在PC机上调试 ARM目标机来运行
常用的嵌入式操作系统
Linux是一个类Linux的操作系统,起源于芬兰一个名为Linus Torvalds的大学生
嵌入式Linux的特点
精简的内核,性能高、稳定,多任务
适用于不同体系结构,如X86,ARM,MIPS、PPC等
能够提供完善的嵌入式GUI以及嵌入式X-Windows
常用嵌入式芯片的驱动集,驱动丰富
针对嵌入式的存储方案,提供实时版本和完善的嵌入式解决方案
开放源码,丰富的软件资源,广泛的软件开发者的支持,价格低廉,结构灵活,适用面广。
uC/OS-II是一个简单、高效的嵌入式实时操作系统内核,支持x86,ARM,PowerPC等
特点:
uC/OS-II内核具有可抢占的实时多任务调度功能
提供了许多系统服务,如信号量、消息队列、邮箱、内存管理、时间函数
功能可以根据不同的需求进行裁减
eCos最初起源于美国的Cygnus Solutions公司
可以提供实时嵌入式应用所需的基本运行基件,而只占用几十KB或几百KB的内存空间
是一个源码开放的可配置、可移植、无版税、面积深嵌入式应用的实时操作系统。
Windows CE微软开发的一个开放的可升级的32位嵌入式操作系统,是基于掌上电脑类的电子设备操作
特点
灵活的电源管理功能包括瞬眠、唤醒模式
使用了对象存储技术
良好的通信能力
支持嵌套中断
Windows Ce的API是Win32 API的一个子集
Windows CE 、Windows Mobile、Windows XP/XPE
VxWorks是风河公司推出的一个实时操作系统
是一个运行在目标机上的高性能、可裁减、开放源码的嵌入式实时操作系统
为追求系统的实时性而设计,并不是以通用OS为设计目标
任务调度采用的是基于优先级的抢占式任务调度模式,优先级分256级(0~255)
广泛地应用在通信、军事、航空、航天等高表尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。
Palm OS 专门为掌上电脑开发
ONX
Symbian
TinyOS
Nucleus
Linux设备驱动的概念
驱动程序为硬件提供一个定义良好的内部接口
驱动程序封装了硬件细节
驱动程序为应用程序提供了访问设备的机制
设备驱动健壮性和安全性
驱动程序是内核的一部分
驱动程序的漏洞和缺陷直接危及内核
留心未初始化的指针,恶意用户程序,缓冲区溢出
驱动程序与内核的关系
字符设备驱动与块设备驱动由内核中的文件系统来管理
网络设备驱动由内核中的协议栈来管理
Linux设备和模块的分类字符设备,块设备,网络接口以及提供公共服务的特定类型设备
如dma驱动,系统时钟驱动,终端控制器驱动
Linux下构建和运行模块
为什么用模块?
模块和应用程序有什么不同
#ifdef _KERNEL_
#ifdef MODULE
Kernel和user space
模块的编译和装载
编译模块都需要什么 源码目录或源码头文件,空目录 make file
编译模块相关的宏 lib/modules/build
模块工具insmod,rmmod
Linux驱动程序模块加载
Driver source code *.c
Compile driver module
Device driver *.o
Linux kernel
设备访问 设备节点
mknod 创建设备文件
字符设备文件例子
crw-rw---- 1 root uucp 4,64 2005-03-20 03:35 /dev/ttS0
主设备号区分设备驱动程序
次设备号区分同一个驱动程序创建的多个设备
常见于多个串口,硬盘分区等
次设备号通常依次对应同类型多个设备
主设备号 次设备号
hda1 3 1
hda2 3 2
hda3 3 3
设备驱动的框架
设备的注册 驱动程序的开始
注册的结构体
注册的fop指针一个函数表
三类设备驱动程序的结构框架
字符设备驱动框架
块设备驱动框架
网络设备驱动框架
嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。
EDA是电子设计自动化(Electronic Design Automation)的缩写
PLD 由用户编程实现某种逻辑功能的器件
FPGA 现场可编程门陈列可编程逻辑单元,可编程I/O单元,可编程内部连线
CPLD 复杂可编程逻辑器件 可编程逻辑宏单元,可编程I/O单元,可编程内部连线
MAX+plus II 最易学易用的EDA工具
isp EXPERT最容易掌握的EDA工具
Foundation Series 最强大的EDA工具
HDL:Hardware Electronical and Description Language
使用与设计硬件电子系统的计算机语言
描述电子系统的逻辑功能、电路结构和连接方式的程序
利用EDA的综合模块和适配模块将此程序编成能控制FPGA和CPLD内部结构
实现相应逻辑功能的门级或更底层的结构网表文件或下载文件
实际设计中,建议采用原理图和HDL结合的方法来设计:根据复杂度
VHDL
Very-High-Speed Integrated Circuit Hardware Electrical and Description Language
Vzerilog HDL
ABEL
开发PLD/FPGA的流程
1.文本编辑 获得HDL文本
2.功能仿真 HDL文件调入仿真软件进行功能仿真,检查逻辑功能是否正确
3.逻辑综合 HDL文件调入逻辑综合软件(综合器)进行综合,得到最简的布尔表达式
4.布局布线 根据上步结果设计布线
5.时序仿真 验证电路的时序
知识产权核
IP Core : IP Core模块是一种预先设计好的、甚至已经过验证的具有某种确定功能的集成电路、器件或部件,它有行为(behavior)、结构(structure)和物理(physical)3种不同程序的设计。
Soft IP core Firm IP core Hard IP core
软硬件协同开发:
普通开发过程 嵌入式软件开发 嵌入式硬件开发 嵌入式系统集成、测试、验证
协同开发过程 嵌入式软件开发 嵌入式硬件开发 嵌入式系统协同设计、测试、验证
特点:协同设计、协同测试、协同验证
实时/嵌入式软件的开发方法
传统生存期:
时间角度,问题分解
划分阶段,独立任务
逐步完成
计划 需求分析 设计 编码 测试 运行 评价
阶段要求:
前后两阶段的关系:基础与具体化
开始和结束都有严格标准:如I/O接口
严格的技术审查和管理复审
高质量文档
符合阶段特点的设计方法
软件生存周期:软件定义 软件开发 软件维护
软件定义:问题定义 可行性研究 需求分析
软件开发:概要设计 详细设计 编码 测试(单元测试,集成测试)
定义时期:系统分析
确定软件开发工程必须完成的总目标
确定工程的可行性
导出应该采用的策略及系统必须完成的功能
估计完成该项工程需要的资源和成本
制定工程进度表
包含阶段:问题定义 可行性研究 需求分析
开发时期:设计实现
包含阶段:概要设计 详细设计 编码 测试
维护时期:使软件持久满足用户的需要,是压缩和简化的、反复的定义和开发的过程。
常用的开发方法
Parnas方法 最早的软件开发方法(D.Parnas,1972)两条原则
Yourdon方法 结构化分析和设计方法(SASD E.Yourdon,1972),面向功能的软件开发方或面各数据流的软件开发方法
SA SD SP
20世纪80年代使用最广泛的软件开发方法
面向数据结构的软件开发方法 Jackson方法 一种面向数据结构的软件开发方法(M.A.Jackson 1975)
Warnier方法 类似于 Jackson方法(J.D.Warnier,1974)
问题分析法PAM (日立,80年代) 兼顾Yourdon方法,Jackson方法、自底向上方法的优点,主要思想是:考虑到输入 输出数据结构,指导系统的分解,在系统分析指导下逐步综合。Rumbaugh方法 Shlaer/Mellor方法,Jacibson方法,Booch方法,Yourdon方法
面向对像的软件开发方法 随着OOP向OOD和OOA发展,最终面向对象的软件开发方法。
可视化开发方法 90年代软件界最大的两个热点之一 工作方式:事件驱动  
提供服务:生成图形用户界面及相关的消息响应函数 为各种具体的子应用的各个常规执行步骤提供规范窗口,供用户挑选。开发工具还为所有选择(事件)提供消息响应函数。
ICASE CASE的发展历程 第一代 数据转换 第二代 公共用户界面 第三代 信息中心库方式 
软件重用和组件连接 在构造新的软件系统的过程中,对己存在的软件人工制品的使用技术 freeman,1983
实时软件生存期
实时软件需求说明
实时软件开发方法
语言描述及数学分析
流程图
结构图
有限状态机
Petri网
经典方法 
RTSA方法 实时结构化分析设计方法
DARTs方法 中心主题是把系统结构化成并发任务和定义任务间接口的问题。
JSD方法 以事件为中心,一串事件的顺序组合构成进程。系统模型抽象成互相联系的进程。
1>基准 2>进程 3>网络 4>功能 5>时间 6>实现
设计技巧
尽量简单
使用静态表
尽量减少动态性
恰当的任务数目
使用有限状态自动机辅助设计
面向对象设计
减少预留接口
增量开发方法
描述 融合了线性顺序模型的基本成分和原型模型的迭代。
采用随日程时间的进展而交错的线性序列
每个线性序列产生软件的一个可发布增量
任何增量的处理流程均可结合进原型规范
开发过程
特点
示例
技术潮流
片上系统
嵌入式构件
COTS组件
Internet连接
高可靠系统
嵌入式硬件平台
嵌入式硬件结构
嵌入式处理器
片内周边电路
处围电路
外设
嵌入式系统的硬件配置
系统可定制、可伸缩
嵌入式处理器 MPU/MCU/DSP/SOC CISC/RISC 8~32位
存储器 4KB~32MB ROM/RAM/Flash/DOC/DOM
传感器 应用特定 多样化
显示器 LCD/LED
网络接口 有线/无线
专用I/O设备 手写笔/声音
嵌入式CPU
概述 嵌入式处理器是嵌入式应用的硬件基础
厂家 200多个 
品种 超过1000种
主流体系 300多种 MCS51 68XXX X86 ARM PowerPC MIPS等
发展方向 32位处理器
分类
嵌入式微处理器 MPU 
类似于通用计算机中的CPU 在功能上和标准微处理器基本相同,但在工作温度、抗电磁干扰、可靠性等方面有明显增强。
特点 体积小、重量轻、成本低、可靠性高
板内电路 必须包含ROM、RAM、总线接口等
主要产品 Am186/88 386EX ARM PC104 SC-400 PPC 68XXX
嵌入式微控制器 MCU
整个计算机系统集中在一个芯片中
核心 微处理器内核 
片内集成 ROM/EPROM RAM 总线 定时器 计数器 I/O A/D和D/A等
特点 体积小 功耗低 成本下降 可靠性高 资源丰富 
DSP处理器
DSP应用正从在通用单片机中以普通指令实现DSP功能,过渡到采用专门的DSP处理器
来源数字信号处理处理单片机化,或通用单片机上添加DSP协处理器
应用目标嵌入式设备智能化,如实时语言处理、ADSL接入、信息识别终端等:运算量大
代表性产品德州仪器的TMS320系列,Motorola的DSP56000系列
片上系统 SOC 
通用嵌入式处理器转换成嵌入式SOC标准芯片,可用HDL描述
常用嵌入式处理器及其特点
结果绝大部分嵌入式系统被集成到几个芯片中,应用系统简洁
常用的嵌入式处理器:
X86系列
ALIM6117 最简单之一,386EX, 片内周边只有RTC和KBC;不支持3..3vDRAM,只适合小应用www.acerlabs.com
AMD系列 SC300/SC3100、SC400/SC410、SC520等,其中有些己经支持LCD;不支持IDE,
www.amd.com
Inter 386EX 应用相当多的一类嵌入式处理器,但片内周边电路少,通常专用,不易获得www.intel.com,以后不可用到它
Inter PC104 嵌入式PC的机械电气标准;386、486、奔腾等,应用广泛;多种目标板,接口丰富www.intel.com
National GXLV Gx系列的节能版,非传统结构的双芯片支持,可仿真VGA,但技术支持差www.national.com
STMicroelectronics STPC 片内集成了VGA、Memory、TC encoder,Decorder需要自制 www.st.com
STMicroelectronics STPC Industrial 片内集成了VGA、Memory、串口、并口 TFT、Cardbus等,在支持TFT方面最廉价www.st.com
PowerPC系列
IBM PowerPC类集成10/100Mbps以太网控制器、串行和并行端口、内存控制器以及其它外设的高性能嵌入式处理器
Motorola MPC823e 高度综合的SOC设备,它结合了PPC微处理器核心的功能,通信处理器和单硅成分内的显示控制器。这个设计可以在大量的电子应用中使用,特别是在低能源,便携式、图象捕捉和个人通信设备。
PowerPC 405 Gp特点
专门用于网络设备的高性能嵌入式处理器,包括有线通信、数据存储以及基它计算机设备。
扩展了PPC处理器家族的可伸缩性。
应用软件源代码兼容所有其它的PPC。
利用最高可达133MHz外频的64位CoreConnect总路线体系结构,提供高性能、响应时间短的嵌入式芯片。
提供代码压缩,可把代码密度提高40%,极大地改进了指令代码密度和减少系统整体成本。
PowerPC 405GP的逻辑上层结构为要求低功耗的嵌入式处理器提供理想的解决方案,核心可重复使用、总线结构灵活高效、可定制SOC设计等,可极大地缩短产品从设计到上市的时间。
PowerPC 405 B3内核特点
200或者266MHz CPU内核
内存管理单元
16KB指令和8KB数据高速缓存
多堆叠(Multiply-Accumulate,简称MAC)功能,包括快速多路单元
5级管道
定时器
JTAG和追踪调试逻辑
4KB单循环SRAM
支持ROM,EPROM,SRAM,Flash和从属外设I/O设备
SDRAM控制器 4MB~256MB
脉冲和非脉冲设备
8-,16-,32-bit外部数据总路线宽度
锁数据到只读、同步或异步
最高以50MHz运行
可编程的地址映射
两个串口
MPC823e微处理器特点
体系结构
MPC823e微处理器使用带有大量数据和指令高速缓存的双处理器结构设计方法,使用通用RISC整数处理器和特殊32-bit标量RISC通信处理器模块来提供高性能。为了通信的需要,外设的设计独特,可以为高速数字通信、成像、用户接口增加和其他I/O支持提供嵌入式信号处理功能。
基本上,MPC823e由4个有32-bit 内部总线的主要模块组成:
嵌入式PowerPC core
系统接口单元
通信处理器模块
LCD控制器
通信处理器模块可以执行图象压缩和解压的嵌入式信号处理功能。它也支持7个连续通道—2个连续通信控制器、2个连续管理控制器、1个I2C端口、1个USB通道和1个连续外设接口。移动应用的2个处理器结构的1个重要优势就是它比传统结构耗费更少的能源,因为通信处理器模块从类似成像和通信这样的外设处理任务中释放了核心。
其它常用的PowerPC PPC860 PPC8260
ARM系列
功耗低
应用方案灵活
可以为多媒体信号处理加入指令集
可以为Java应用加入有效执行
架构简便、灵活
不同系统方案被相当多的公司DEC\Inter\TI\Atmel等采用,多家厂商推
常用的操作系统都是基于ARM设计的
Linux尽管在掌上设备不多见,不过同样基于ARM
ARM统治了PDA、智能手机以及其它掌上设备市场,类似于PC市场上的X86架构
ARM7系列
  优化用于对价位和功耗敏感的消费应用的低功耗32位核,有:
  嵌入式ICE-RT逻辑;
  非常低的功耗;
  三段流水线和冯·诺依曼结构,提供0.9MIPS/MHz。
ARM9系列
  高性能和低功耗领先的硬宏单元,带有:
  5段流水线;
  哈佛结构提供1.1MIPS/MHz。
  ARM920T和ARM922T内置全性能的MMU、指令和数据cache和高速AMBA总线接口。AMBA片上总线是一个开放标准,已成为SoC构建和IP库开发的事实标准。AMBA先进的高性能总线(AHB)接口现由所有新的ARM核支持,提供开发全综合设计系统。
  ARM940T内置指令和数据cache、保护单元和高速AMBA总线接口。
Xscale是ARM体系结构的一种内核,基于ARM v5TE,由Intel公司开发,在架构扩展的基础上同时也保留了对于以往产品的向下兼容,因此获得了广泛的应用。相比于ARM处理器,XScale功耗更低,系统伸缩性更好,同时核心频率也得到提高,达到了400Mhz甚至更高。这种处理器还支持高效通讯指令,可以和同样架构处理器之间达到高速传输。其中一个主要的扩展就是无线MMX,这是一种64位的SIMD指令集,在新款的 Xscale处理器中集成有SIMD协处理器。这些指令集可以有效的加快视频、3D图像、音频以及其他SIMD传统元素处理。
  基于Xscale内核的处理器主要包括:
  Intel PXA25x
  Intel PXA26X
  Intel PXA27X
  2006年,XScale被出售给Marvell。
Motorala系列
MCF5272微处理器是迄今为止摩托罗拉推出的最高集成度的ColdFire微处理器。不论是在设计互联网设备、LAN电话系统、低端网络控制、工业控制、图像设备,还是存储解决方案,摩托罗拉的MCF5272微处理器的高性能表現都会合乎设计要求。
这款高集成的ColdFire微处理器将10/100MB以太网控制器和一个USB模块等通信外围设备结合起来,提高了MCF5272集成通信微处理器集成水平。它不仅提供了一套新的通信外围设备,同时还包含了以往ColdFire标准产品所具备的广受欢迎的通用外围设备。MCF5272扩展的外围设备组加之诱人的价格使这款高集成的ColdFire微处理器成为一款广泛适用于各类嵌入式应用的优秀配备,这些应用包括互联网设备、LAN电话技术、低端网络控制、工业控制、图像和存储等等。
特性
V2ColdFire处理器
1 Kbyte指令高速缓冲存储器
4 Kbyte SRAM
乘法及累计单元 (MAC)
硬件整数除法单元
业界先进的除错模块,提供背景和实时性能
集成处理器
合乎IEEE 802.3 10/100快速以太网控制器(FEC),有专用DMA
USB1.1设备控制器和收发器
4个2B+D TDM端口
HDLC软件模块
QSPI
3个PWM输出
2个UART
1信道DMA
8芯片选择
16位通用I/O
4个16位计时器
SW监视器计时器
休止模式
M68HC08系列
51系列
MCS51是指由美国INTEL公司(对了,就是大名鼎鼎的INTEL)生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。INTEL公司将MCS51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中89C51就是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生产的。
MCS51单片机的内部总体结构其基本特性如下:
  8位CPU、片内振荡器、4k字节ROM、128字节RAM、21个特殊功能寄存器、32根I/O线、可寻址的64k字节外部数据、程序存贮空间、2个16位定时器、计数器中断结构:具有二个优先级、五个中断源一个全双口串行口位寻址(即可寻找某位的内容)功能,适于按位进行逻辑运算的位处理器。除128字节RAM、4k字节ROM和中断、串行口及定时器模块外,还有4组I/O口P0~P3,余下的就是CPU的全部组成。把4kROM换为EPROM就是8751的结构,如去掉ROM/EPROM部分即为8031,如果将ROM置换为Flash存贮器或EEPROM,或再省去某些I/O,即可得到51系列的派生品种,如89C51、AT89C2051等单片机。单片机各部分是通过内部的总线有机地连接起来的。
S1C33 MCU
EPSON最新的32位微处理器系列,专用于需要高级数据处理的便捷设备。
CPU性能
核心CPU 精工EPSON32位的RISC CPU,32位内部数据处理
33MHz
105条16位固定长度的指令
16个32位多用途的寄存器
在60MHZ操作下的最小指令执行时间为16.7ns
乘法、除法和MAC指令
内存 0~128K ROM 8K RAM
片内周边电路
晶振电路 32.769K~33MHz
定时器 8位6道 16位6道和带告警功能的时钟各1道
计数器 4道,可选择时钟同步系统、异步系统、或IrDA接口
A/D转换 10位8通道
DMA 4道高速DMA 128道IDMA
通用 I/O 13位输入端口和29位I/O端口
片内周边电路
可编程时钟产生器 Prescaler
8位可编程定时器 6道
16位可编程定时器 6道
时钟定时器 1道
串口 4道
I/O端口 13位+29位
A/D转换器 ADC
直接存储器存取 DMA
编程示例
引导程序 SIC33程序至少需要一个向量表和一道引导程序正常情况下,程序引导地址
设置BCB存放在起始地址为0xC00000的复位向量中。程序是由0xC00000开始执行。
最简单的程序
.abs ;定位命令
.org 0xC00000
.code
.word BOOT ;向量表
BOOT:
xld.w %r8,0x800 ;引导程序
ld.w %sp,%r8 ;设置堆栈
xcall main ;调用主程序
Word 专门用于定义向量,如:
.word BOOT ;引导
.word RESET ;复位
.word NMI ; 不可屏蔽中断
.word SOFTINT0 ;软中断0
.word SOFTINT1 ;软中断1
.word INT0 ;中断0
.word INT1 ;中断1
中断向量的重定义
为便于编程理解,中断重定义,如:
#define RESET BOOT
#define INT12 int_16timer_u00
#define INT15 int_16timer_c01
#define INT18 int_16timer_u11
#define INT23 int_16timer_u21
#define INT27 int_16timer_u31
一般引导程序
定义部分
#include “..\bcu\drv_bcu.h”
;;设置栈顶
#define SP_TOP0x07ff ;内部RAM
;;全局指针
#define GP_ADDR 0x0000 ;0x0
.code
程序部分
.global BOOT
BOOT :
xld.w %r8,SP TOP
ld.w %sp,%r8 ;设置堆栈指针
xld.w %r8,GP_ADDR ;设置全局指针
xcall _init_bcu ;引导时初始化BCU
xcall _init_sys ;初始化仿真I/0
xcall main ;转到主程序
xcall _exit ;转到exit(Loop)
设置BCU S1C33 对存储器和设备的访问要通过BCU,因此必须预先设置。
完整设置
对BCU的设置可能会包含以下内容
BCLK输出
Burst ROM
DRAM
SRAM
Area 4~18
Prescaler
8位定时器重载数据

程序段
8位定时器0的可编程时钟产生器
xld.w%r5,PRESC_P8TS0_P8TS1_ADDR
xld.w%r4,PRESC_PTONL_ON|PRESC_CLKDIVL_SEL0
;设置8位定时器的Prescaler
ld.b[%r5],%r4
8位定时器0的重载数据
xld.w%r4,0xA0 ;重载数据
;运行/停止寄存器
xld.w%r5,T8P_PTRUN0_ADDR
ext T8P_RLD0_ADDR-T8P_PTRUN0_ADDR
ld.b[%r5],%r4
中断处理程序 : 中断处理程序不同于一般程序的编写:主要体现在寄存器的保存和恢复上。
16位定时器溢出中断
读出16位定时器3位计数器,停止16位定时器0:
.global int_16timer_u00
int_16timer_u00: ;16位定时器中断向量
pushn %r15 ;压栈
xld.w %r12,T16P_TC30_ADDR ;16位定时器3计数器数据寄存器地址
xcall read_16timer_cnt
;16位定时器0运行/停止寄存器地址
xld.w [timer00],%r10
xld.w %r12,T16P_PRUN00_ADDR
xcall stop_16timer
;打开16位定时器0中断标记
ld.w %r4,0x01
xld.w [t16int00_flg],%r4
xld.w %r5,INT_F16T0_F16T1_ADDR
;中断因子寄存器地址
xld.w %r4,INT_F16TU00
;中断因子寄存器标记复位
ld.b [%r5],%r4
popn %r15 ;弹栈
reti ;恢复
执行过程
该中断程序执行前,CPU保存PC与PSR
使用pushn %15将所有通用寄存器之值压栈
写中断处理代码
使用popn %15弹出所有通用寄存器之值
使用reti返回中断前状态
算术操作寄存器
当使用了AHR和ALR时,必须保存
pushn %r15 ;压栈
ld.w %r0,%ahr
ld.w %r1,%alr
pushn %r1 ;压栈

popn %r1 ;弹栈
ld.w %ahr,%r0
ld.w %alr,%r1
popn %r15 ;弹栈
reti
寄存器保存与恢复
只保存/恢复中断过程中使用了寄存顺,节省资源
pushn %r3 ;压栈
ld.w %r0,%ahr
ld.w %r1,%alr
pushn %r1 ;压栈

popn %r1 ;弹栈
ld.w %ahr,%r0
ld.w %alr,%r1
popn %r3 ;弹栈
reti
d)8位定时器设置
获取来自ICD的跟踪数据
.global INIT_8TIMER
INIT_8TIMER:
pushn %r1 ;PSR设置
ld.w %r0,0x10
ld.w %psr,%r0 ;中断可用(a)
;设置8位定时器
;允许时钟划分
xld.w %r0,0x40160 (b)
xld.w %r1,0x00
ld.b [%r0],%r1
;中断优先级为3
xld.w %r0,0x40269 (d)
xld.w %r1,0x03
ld.b [%r0],%r1
;时钟划分比率为1/256
xld.w %r0,0x4014d
xld.w %r1,0x0f
ld.b [%r0],%r1
;允许定时器中断
xld.w %r0,0x40275 (d)
xld.w %r1,0x01
ld.b [%r0],%r1
;定时器中断标记复位
xld.w %r0,0x40285 (d)
xld.w %r1,0x01
ld.b [%r0],%r1
;设置重载数据
xld.w %r0,0x40160 (c)
xld.w %r1,0x0
ld.b [%r0]+,%r1 ;运行/停止位置0
xld.w %r1,0x75
ld.b [%r0]+,%r1 ;每30000时钟中断一次
;运行/停止位置1,开始
xld.w %r0,0x40160 (e)
xld.w %r1,0x0
ld.b [%r0],%r1
popn %r1
ret
.global TIME_INT (f)
TIME_INT:
pushn %r1
xld.w %r1,0x40285 (e)
xld.w %r1,0x01
ld.b [%r1],%r0 ;复位定时器0中断标记
popn %r1
reti
(a)中断使能
ld.w %r0,0x10
ld.w %psr,%r0
(b)设置prescaler
允许设置时钟划分
设置时钟划分比率
(c)设置8位定时器
时钟产生周期:30000 (0x75)
cpu操作频率为20MHz
(d)设置中断控制器
中断优先级为3
复位中断因子标记
开8位定时器中断
(e)启动定时器
xld.w %r0,0x40160
xld.w %r1,0x1
ld.b [%r0],%r1
(f)中断产生时的处理
.global TIME_INT
TIME_INT:

e)串口设置
对串口的设置包括初始化\发送和接收三部分
在设置之前,必须定义传递方式和外部时钟(对异步方式)
串口初始化
.global m_io_init
m_io_init:
ld.w %r0,SIR_SET ;1/16模式 (a)
xld.b [SIR],%r0 ;SIR设置
SIR设置(#SCLK输入1.843MHz)
ld.w %r0,SCR_SET
xld.b [SCR],%r0
;I/O端口设置
xld.w %r0,PIO_SET (C)
xld.b [PIO],%r0
;SCR设置
xld.w %r0,SCR_EN|SCR_SET (d)
xld.w [SCR],%r0
ret
(a)选择划分比率
设置采样时钟的划分比率为1/16
(b)设置传递模式
异步\8位模式
带停止位,无校验,外部时钟为SCLK
(c)选择输入输出引脚功能
串口模式下,I/O引脚共享
(d)允许发送/接收
SCR_SET:输入1.843MHz,115200bps
发送程序
.global m_snd_1byte
m_snd_1byte
pushn %r3 ;压栈
snd000:
xbtst [SSR],0x1 ;检查缓冲区是否空
jreq snd000 ;缓冲区空,等待
xld.b [STDR],%r12 ;发送
popn %r3 ;弹栈
ret
主要的操作次序
(a)检查发送缓冲区
检查串口状态寄存器(SSR)的定发送缓冲是否为空?若是,反复检查,直到非空为止
(b)发送1字节数据
当发送缓冲区非空时,使用R12发送1字节数据
接收程序
.global m_rcv_1byte
m_rcv_1byte:
pushn %r3 ;压栈
rcv000:
xbtst [SSR],0x0 ;接收缓冲区是否为空? (a)
jreq rcv000 ;为空,等待
ld.w %r10,0x0
xbtst [SSR],0x4 ;接收帧是否有错?
jreq rcv010
xbclr [SSR],0x4 ;清帧检验位
ld.w %r10,x1 ;报错:1
rcv010:
xbtst [SSR],0x3 ;校验是否有错?
jreq rcv020
xbclr [SSR],0x2 ;校验位
ld.w %r10,0x2 ;报错:2
rcv020:
xbtst [SSR],0x2 ;是否溢出
jreq rcv030
xbclr [SSR],0x2 ;清溢出位
ld.w %r10,0x3 ;报错:3
rcv030: (c)
xld.b %r0,[SRDR] ;读数据
xld.b [m_rcv_data],%r0 ;合并数据
popn %r3 ;弹栈
ret
主要操作次
(a)等待接收
一直等到缓冲非空
(b)检查接收错
检查帧\校验和溢出三种错误
(c)读出接收数据
若无错,由缓冲区(SRDR,接收数据寄存器)中读出1字节的接收数据,存放到RAM中
基本外围电路
对不同的处理器芯片,不同的应用,需要配置不同的外围电路
电源支持
在S1C33系列CPU的基本外围电路设计中,电源支持以DC-DC转换器为基础
支持将3~4.5V的输入电压调整成5V电压(供外部I/O 存储块 模拟块使用)和3.3V电压(供CPU core使用)
预防噪音的方法:四种
使用4层以上的电路板,每层分别有GND和VDD
每个电路板连接一个100μF的电解电容,小板只需连接10μF电容
CUP和存储块与一个1μF+0.1μF的薄瓷电容连接
每个IC连接一个0.01μF+1000pF的片状薄,尽可能接近电源支持的引脚.
复位
存储器连接
调试连接
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/86601/showart_1970907.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP