第6章 部件工作原理与编程示例(东北大学嵌入式课件).pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第6章 部件工作原理与编程示例(东北大学嵌入式课件).pdf》由会员分享,可在线阅读,更多相关《第6章 部件工作原理与编程示例(东北大学嵌入式课件).pdf(109页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第 6 章部件工作原理与编程示例本章主要以S3C4510B的几个常用功能部件为编程对象,介绍基于S3C4510B的系统的程序设计与调试,同时简介BootLoader的基本原理和编程方法,通过对本章的阅读,可以使读者了解S3C4510B各功能部件的工作原理及基本编程方法。本章的主要内容包括:-嵌入式系统应用程序设计的基本方法。-S3C4510B通用I/O 口的工作原理与编程示例。-S3C4510B串行通信控制器的工作原理与编程示例。-S3C4510B中断控制器的工作原理与编程示例。-S3c4510B定时器的工作原理与编程示例。-S3C4510B DMA控制器的工作原理与编程示例。-S3C4510
2、B IIC总线控制器的工作原理与编程示例。-S3C4510B以太网控制器的工作原理。-Flash存储器的工作原理与编程示例。BootLoader 简介。6.1嵌入式系统的程序设计方法一般来说,对于一个完整的嵌入式应用系统的开发,硬件的设计与调试工作仅占整个工作量的一半,应用系统的程序设计也是嵌入式系统设计一个非常重要的方面,程序的质量直接影响整个系统功能的实现,好的程序设计可以克服系统硬件设计的不足,提高应用系统的性能,反之,会使整个应用系统无法正常工作。本章从应用的角度出发,以 S3C4510B的各个功能模块为编程对象,介绍一些实用的程序段,读者既可按自己的需要修改,也可吸收其设计思想和方法
3、,以便设计出适合于自己特定应用系统的实用程序。同时,由于ARM体系结构的一致性,尽管以下的应用程序段是针对特定硬件平台开发的,其编程思路同样适合于其他类型的ARM微处理器。不同于基于P C 平台的程序开发,嵌入式系统的程序设计具有其自身的特点,程序设计的方法也会因系统或因人而异,但其程序设计还是有其共同的特点及规律的。在编写嵌入式系统应用程序时,可采取如下儿个步骤:(1)明确所要解决的问题:根据问题的要求,将软件分成若干个相对独立的部分,并合理设计软件的总体结构。(2)合理配置系统资源:与基于8 位 或 16位微控制器的系统相比较,基 于 32位微控制器的系统资源要丰富得多,但合理的资源配置可
4、最大限度地发挥系统的硬件潜能,提高系统的性能。对于个特定的系统来说,其系统资源,如 Flash、EEPROM,SDRAM、中断控制等,都是有限的,应合理配置系统资源。(3)程序的设计、调试与优化:根据软件的总体结构编写程序,同时采用各种调试手段,找出程序的各种语法和逻辑错误,最后应使各功能程序模块化,缩短代码长度以节省存储空间并减少程序执行时间。此外,由于嵌入式系统般都应用在环境比较恶劣的场合,易受各种因素的干扰,从而影响到系统的可靠性,因此,应用程序的抗干扰技术也是必须考虑的,这也是嵌入式系统应用程序不同于其他应用程序的一个重要特点。6.2部件工作原理与编程示例6.2.1 通 用 I/O 口
5、工作原理与编程示例S3C4510B提供了 18个可编程的通用I/O端口,用户可将每个端口配置为输入模式、输出模式或特殊功能模式,由片内的特殊功能寄存器IOPMOD和 IOPCON控缶上端口 07 的工作模式仅由IOPMOD寄存器控制,但通过设置IOPCON寄存器,端口 8 1 1 可用作外部中断请求1NTREQ0INTREQ3的输入,端口 12、端口 13可用作外部DMA请求XDREQO、XDREQ1的输入,端口 14、端口 15可作为外部DMA请求的应答信号XDACKO、XDACK1,端口 16可作为定时器0 的溢出TOUTO,端口 17可作为定时器1 的溢出TOUTUI/O端口的功能模块如
6、图6.1所示:IOPMODVDDIOPCONIOPCONPort11/xlNTREQ3Port12/nXDREQ0Port13/nXDREQ1Port14/nXDACK0Port15/nXDACK1Port16/TOUTOPort17/TOUT1PortO-Port7Port8/xlNTREQ0图6.1 通用I/O 口的功能模块控 制 I/O 口的特殊功能寄存器一共有3 个:IOPMOD、IOPCON和IOPDATA,简要描述如下:I/O 口模式寄 存 器(IOPMOD):I/O 口模式寄存器IOPMOD用于配置P17P0。31 18 17 16 15 14 13 12 11 10 9 8 7
7、 6 5 4 3 2 1 0X X X X X X X X I X X I X X I X X I X X I X X寄存器偏移地址操作功能描述复位值IOPMOD0 x5000读/写I/O 口模式寄存器0 x0000,0000XXXXXXXX I XX 1 XX 1 XX I XX I XX0P0 口 的I/O模式位0=输入1=输出1P1 口 的I/O模式位0=输入1=输出2P2 口 的I/O模式位0=输入1=输出317P3P17 口的 I/O 模式位0=输入1=输出I/O 口控制寄存器(IOPCON):I/O 口控制寄存器IOPCON用于配置端口 P 8-P 17的特殊功能,当这些端口用作特
8、殊功能(如外部中断请求、外部中断请求应答、外 部DMA请求或应答、定时器溢出)时,其工作模式由IOPCON寄存器控制,而不再由IOPMOD寄存器控制。对于特殊功能输入端口,S3C4510B提供了一个滤波器用于检测特殊功能信号的输入,如果输入信号电平宽度等于三个系统时钟周期,该信号被认为是诸如外部中断请求或外部D M A请求等特殊功能信号。寄存器偏移地址操作功能描述复位值IOPCON0 x5004读/写I/O 口控制寄存器0 x0000,000031 30 29 28 27 26 25 23 22 20 19 15 14 10 9 5 4 3 2 1 0T0EN1TOEN0DAK1DAK0DRQ
9、1DRQ0XIRQ3XIRQ2XIRQ1X1RQ1 4:0 控制端口 8的外部中断请求信号0 (x I R Q O)输入 4 端口 8用作外部中断请求信号00=禁止 1=使能 3 0=低 电 平 有 效 1=高电平有效0 =滤波器关 1=滤波器开 1:0 00=电平检测 0 1 =上升沿检测1 0=下 降 沿 检 测 1 1=上升、下降沿均检测 9:5 控制端口 9的外部中断请求信号1(X I R Q 1)输入使用方法同端口 8 o 1 4:1 0 控制端口 1 0 的外部中断请求信号2 (x l R Q 2)输入使用方法同端口 8 o 1 9 1 5 控制端口 1 1 的外部中断请求信号3
10、(x l R Q 3)输入使用方法同端口 8。2 2:2 0 控制端口 1 2 的外部D M A 请求信号0 (D R Q O)输入 2 2 端口 1 2 用作外部DMA请求信号0 (n X D R E Q O)0=禁止 1=使能 2 1 0=滤波器关 1=滤波器开 2 0 J 0 =低 电 平 有 效 1=高电平有效 2 5:2 3 控制端口 1 3 的外部D M A 请求信号1 (D R Q 1)输入 2 5 端口 1 3 用作外部DMA请求信号1 (n X D R E Q l)0 =禁止 1=使能 2 4 0 =滤波器关 1 =滤波器开 2 3 0 =低 电 平 有 效 1 =高电平有效
11、 2 7:2 6 控制端口 1 4 的外部D M A 应答信号0 (D A K O)输出 2 7 端口 1 4 用作外部DMA信号0 (n X D A C K O)0 =禁止 1=使能126J 0=低 电 平 有 效1 =高电平有效29:28控制端口 15的外部DMA应答信号1 (DAK1)输出29端口 15用作外部D M A信 号1 (nXDACKl)0=禁止 1=使能28 0=低 电 平 有 效1 =高电平有效30控制端口 16作为定时器。溢出信号(T0EN0)0=禁止 1=使能31控制端口 17作为定时器1溢出信号(T0EN1)0=禁止 1=使能I/O 口数据寄存器(I0PDATA):当
12、配置为输入模式时,读 取I/O 口数据寄存器IOPDATA的每一位对应输入状态,当配置为输出模式时,写每一位对应输出状态。位17:0对应 于18个I/O引脚P17-P0,寄存器偏移地址操作功能描述复位值IOPDATA0 x5008读/写I/O 口数据寄存器未定义31 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0岛国雕1P3 1P2 1P1 1P0 9P P86P P54P 3P P23P017:0对 应I/O U P 17-P 0的读/写值。I/O 口数据寄存器的值反映对应引脚的信号电平。以上简述了 S3C4510B的通用I/O 口的基本工作原理
13、,更详细的内容可参考S3C45I0B的用户手册。作为本章的第个例子,将比较详细地描述建立项目、编写程序的过程,同时可参考第8章关于ADS集成编译调试环境的使用方法。打开 CodeWamor for ARM Developer Suite(或 ARM Project Manager),新建一个项目,并新建一个文件,名为In it.s,具体内容如下:.*;Institute of Automation,Chinese Academy of Sciences;File Name:Init.s;Description:;Author:Li JuguangIMPORTMainAREAInit,CODE,
14、READONLYENTRYLDRLDRRO,RI,=0 x3FF0000=0 xE7FFFF80;配置 SYSCFG,片内 4KB Cache,4KBSRAMSTRLDR成RI,SP,RO=0 x3FE1000;SP指 向 4K SRAM的尾地址,堆栈向下生BLMainBEND该段代码完成的功能为:配 置 SYSCFG特殊功能寄存器,将 S3C4510B片内的8KB 一体化的SRAM配置为4KB Cache,4KB SRAM,并将用户堆栈设置在片内的SRAM中。4KB SRAM 的地址为 0 x3FE,0000(0 x3FE,1000 1),由于 S3C4510B的堆栈山高地址向低地址生成,将
15、 SP初始化为0 x3FE,1000。完成上述操作后,程序跳转到Main函数执行。保存In it.s,并添加到新建的项目。再新建一个文件,名为m ain.c,具体内容如下:*Institute of*File Name:Automation,Chinese Academy of Sciencesmain c*Description:*Author:Li Juguang*Date:#define IOPMOD(*(volatile unsigned*)0 x03FF5000)/IO portmode register#define 工 OPDATA(*(volatile unsigned*)0
16、x03FF5008)/IO portdata registervoid Delay(unsigned int);int Main()(unsigned LED;IOPMOD=OxFFFFFFFF;/将 10 口置为输出模式IOPDATA=0 x01;for(;)(LED=IOPDATA;LED=(LED1);IOPDATA=LED;Delay(10);if(!(IOPDATA&OXOF)IOPDATA=0 x01;)return(0);void Delay(unsigned int x)(unsigned int i,j,k;for(i=0;i=x;i+)for(j=0;jOxff;j +)f
17、or(k=0;kobey C:memmap.txt系统中 SDRAM 被映射到 0 x0040,0000-(0 x0140,0000-1),从0 x0040,0000处装入生成的可执行的映像文件,并将PC指针寄存器修改为0 x0040,0000,就可单步调试或运行生成的可执行的映像文件。该程序的运行效果使接在P0-P3 口的LED显示器轮流被点亮。6.2.2 串行通讯工作原理与编程示例串行通讯是微计算机之间一种常见的近距离通讯手段,因使用方便、编程简单而广泛使用,几乎所有的微控制器、PC都提供串行通讯接口。S3C4510B的 U A R T 单 元 提 供 两 个 独 立 的 异 步 串 行
18、I/O 口(Asynchronous Serial I/O,SIO),每个通讯口均可工作在中断模式或DMA模式,也即UART能产生内部中断请求或DMA请求在CPU和串行I/O 口之间传送数据。S3C4510B的 UART单元特性包括:-波特率可编程-支持红外发送与接收 1 2 个停止位 5、6、7 或 8 个数据位-奇偶校验每一个异步串行通讯口都具有独立的波特率发生器、发送器、接收器和控制单元。波特率发生器可由片内系统时钟MCLK驱动,或由外部时钟UCLK(Pin64)驱动;发送器和接收器都有独立的数据缓冲寄存器和数据移位器。待发送的数据首先传送到发送缓冲寄存器,然后拷贝到发送移位器并通过发送
19、数据引脚UATXDn发送出去。接收数据首先从接收数据引脚UARXDn移入移位器,当接收到个字节时就拷贝到接收缓冲寄存器。SIO的控制单元通过软件控制工作模式的选择、状态和中断产生。当使用UART的发送中断功能时,应在初始化UART之前先写一个字节数据到UART的发送缓冲寄存器,这样,当发送缓冲寄存器为空时就可以产生UART的发送中断。图 6.2为串行口的功能模块。图6.2串行口功能模块。表 6-4为 UART特殊功能寄存器描述表6-4 UART特殊功能寄存器寄存器偏移地址操作功能描述复位值ULCONOOxDOOO读/写UART0行控制寄存器0 x00ULCON1OxEOOO泣/号UART1行控
20、制寄存器0 x00UCONO0 xD004读/写UART0控制寄存器0 x00UCON10 xE004读/写UART1控制寄存器0 x00USTATO0 xD008读UART 0状态寄存器OxCOUSTAT1OxEOO8原UART1状态寄存器OxCOUTXBUF0OxDOOC写UART0发送保持寄存器未定义UTXBUFIOxEOOC写UART1发送保持寄存器未定义URXBUF0OxDOlO读UART0接收缓冲寄存器未定义URXBUF1OxEOlO读UART1接收缓冲寄存器未定义UBRDIV00 xD014读/写UART0波特率除数因子寄存器0 x00UBRDIV10 xE014读/写UART1
21、波特率除数因子寄存器0 x00BRDCNT00 xD018写UART0波特率计数寄存器0 x00BRDCNT10 xE018写UART1波特率计数寄存器0 x00BRDCLK0OxDOlC写UART0波特率时钟监视器0 x00BRDCLK1OxEOlC写UART1波特率时钟监视器0 x00UART 行控制寄 存 器(UART Lin e Co n t r o l Re gis t e r s,ULCONO.ULCON1):寄存器偏移地址操作功能描述复位值ULCONOOxDOOO读/写UART0行控制寄存器0 x0000,0000ULCON1OxEOOO读/写UART1行控制寄存器0 x0000
22、,0000表 6-6为 UART行控制寄存器描述表6-6 UART行控制寄存器描述位位名功能描述1:0每帧字长该两位指示发送或接收的每帧的数据位:00=5 位,01=6位,10=7 位,11=8位。2停止位数该位指示每帧数据的停止位数:0 =每帧一个停止位,1 =每帧两个停止位。5:3校验模式该三位指示在数据的发送与接收过程中如何生成校验并进行检测:0 X X=无校验,100=奇校验,1 0 1=偶校验,1 0 0=奇校验,1 1 0=校验强制/检测为1,1 1 1=校验强制/检测为0.6串行时钟选择该位用于选择时钟源:0=内部时钟(MCLK)1 =外部时钟(UCLK)7红外模式选择S3C45
23、10B的UART模块支持红外(1R)发送与接收。要使能红外模式,需设置ULCON7为1,否则选择正常UART模式。31 8 7 6 5 4 3 2 1 01RXPMDSTBWL 1:0 每帧字长(WL)00=5 位 01=6 位10=7 位 11=8 位 2 帧末尾停止位(STB)0=每帧一个停止位1=每帧两个停止位 5:3 校验模式(PMD)Ox x =无校验1 0 0=奇校验101=偶校验110=校验强制/检测为1111=校验强制/检测为0 6 串行时钟选择(SC)0=内部 时 钟(MCLK)1 =外部 时 钟(UCLK)刀红外模式选择(IR)0=正常操作模式1=红外发送模式UART 控制
24、寄 存 器(UART Co n t r o l Re gis t e r s,UCONO、UC0N1):寄存器偏移地址操作功能描述复位值UCON00 xD004读/写UART0控制寄存器0 x0000,0000UCON10 xE004读/写UART1控制寄存器0 x0000,0000表 6-8为 U A R T 控制寄存器描述表6-8 UART控制寄存器描述位位名功能描述1:0接收模式选择该两位的值决定当从UART接收缓冲寄存器中读取数据时的当前功能:0 0=禁止Rx模式,,01,二产生中断请求,】()=产生GDMA通道0请求,1,二 产生GDMA通道1请求。12接收状态中断使能该位决定当在数
25、据的接收过程中发生异常(如发生间断、帧错误、校验错误或Overrun错误)时是否让UART产生中断请求:0 =不产生接收状态中断请求,1 =产生接收状态中断请求。14:3发送模式选择该两位的值决定当写数据到UART发送缓冲寄存器中时的当前功能:0 0=禁止Tx模式,0 1=产生中断请求,1 0=产生GDMA通道0请求,1 1=产生GDMA通道1请求。5数据设备准备好该位选择是否产生数据设备准备好(DSR)信号输出:0=不产生DSR输出,1 =产生DSR输 出(nUADSR引脚)。6发送间隔该位选择是否发送间隔信号:0=不发送间隔信号,1 =发送间隔信号。7回环模式选择该位选择UART是否进入回
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第6章 部件工作原理与编程示例东北大学嵌入式课件 部件 工作 原理 编程 示例 东北大学 嵌入式 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内