第6章 部件工作原理与编程示例(东北大学嵌入式课件).docx
![资源得分’ 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章 部件工作原理与编程示例(东北大学嵌入式课件).docx》由会员分享,可在线阅读,更多相关《第6章 部件工作原理与编程示例(东北大学嵌入式课件).docx(114页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第6章部件工作原理与编程示例本章主要以S3C45I0B的几个常用功能部件为编程对象,介绍基于 S3C4510B的系统的程序设计与调试,同时简介BootLoader的基本原理和 编程方法,通过对本章的阅读,可以使读者了解S3C4510B各功能部件的 工作原理及基本编程方法。本章的主要内容包括:- 嵌入式系统应用程序设计的基本方法。- S3C4510B通用I/O 口的工作原理与编程示例。- S3C4510B串行通信控制器的工作原理与编程示例。- S3C4510B中断控制器的工作原理与编程示例。- S3c4510B定时器的工作原理与编程示例。- S3C4510B DMA控制器的工作原理与编程示例。-
2、 S3C4510B IIC总线控制器的工作原理与编程示例。- S3C4510B以太网控制器的工作原理。- Flash存储器的工作原理与编程示例。一BootLoader 简介。6.1 嵌入式系统的程序设计方法-般来说,咐于一个完整的嵌入式应用系统的开发,硬件的设计与调 试工作仅占整个工作量的一半,应用系统的程序设计也是嵌入式系统设计 一个非常重要的方面,程序的质量直接影响整个系统功能的实现,好的程 序设计可以克服系统硬件设计的不足,提高应用系统的性能,反之,会使 整个应用系统无法正常工作。本章从应用的角度出发,以S3C4510B的各个功能模块为编程对象, 介绍一些实用的程序段,读者既可按自己的需
3、要修改,也可吸收其设计思想和方法,以便设计出适合于自己特定应用系统的实用程序。同时,由于 ARM体系结构的一致性,尽管以下的应用程序段是针对特定硬件平台开发 的,其编程思路同样适合于其他类型的ARM微处理器。不同于基于PC平台的程序开发,嵌入式系统的程序设计具有其自身 的特点,程序设计的方法也会因系统或因人而异,但其程序设计还是有其 共同的特点及规律的。在编写嵌入式系统应用程序时,可采取如下几个步 骤:(1) 明确所要解决的问题:根据问题的要求,将软件分成若干个相对独立的部分,并合理设计软件的总体结构。(2) 合理配置系统资源:与基于8位或16位微控制器的系统相比较,基于32位微控制器的系统资
4、源要丰富得多,但合理 的资源配置可最大限度地发挥系统的硬件潜能,提高系统的 性能。对于一个特定的系统来说,其系统资源,如Flash、 EEPROM、SDRAM,中断控制等,都是有限的,应合理配 置系统资源。(3) 程序的设计、调试与优化:根据软件的总体结构编写程序,同时采用各种调试手段,找出程序的各种语法和逻辑错误, 最后应使各功能程序模块化,缩短代码长度以节省存储空间 并减少程序执行时间。此外,由于嵌入式系统一般都应用在环境比较恶劣的场合,易受各种 因素的干扰,从而影响到系统的可靠性,因此,应用程序的抗干扰技术也 是必须考虑的,这也是嵌入式系统应用程序不同于其他应用程序的一个重 要特点。6.
5、2 部件工作原理与编程示例6.2.1 通用I/O 口工作原理与编程示例S3c4510B提供了 18个可编程的通用I/O端口,用户可将每个端口配置为输入模式、输出模式或特殊功能模式,由片内的特殊功能寄存器 IOPMOD 和 IOPCON 控制。端口 07的工作模式仅由IOPMOD寄存器控制,但通过设置IOPCON 寄存器,端口 811可用作外部中断请求INTREQ0-INTREQ3的输入, 端口 12、端口 13可用作外部DMA请求XDREQO、XDREQ1的输入,端 口 14、端口 15可作为外部DMA请求的应答信号XDACKO、XDACK1, 端口 16可作为定时器0的溢出TOUTO,端口
6、17可作为定时器1的溢出 TOUTloI/O端口的功能模块如图6.1所示:IOPMODVddIOPCONIOPCONPort11/xlNTREQ3 Port12/nXDREQ0 Port13/nXDREQ1 Port14/nXDACK0 Port15/nXDACK1 Port16/TOUTO Port17/TOUT1PortO - Port7Port8/xlNTREQ0图6.1 通用I/O 口的功能模块控制I/O 口的特殊功能寄存器-共有3个:IOPMOD、IOPCON和 IOPDATA,简要描述如下: I/O 口模式寄存器(IOPMOD):I/O 口模式寄存器IOPMOD用于配置P17-P0
7、.XXXXXXXXXXXXXX 1 XXXX寄存器偏移地址操作功能描述复位值IOPMOD0x5000读/写I/O 口模式寄存器0x0000,00003118 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0XXXXXXXXXXXXX X I X XXX0P0 的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用于配置端口 P8P17的特殊功能,当这 些端口用作特殊功能(如外部
8、中断请求、外部中断请求应答、外部DMA 请求或应答、定时器溢出)时,其工作模式由IOPCON寄存器控制,而不 再山IOPMOD寄存器控制。对于特殊功能输入端口,S3C4510B提供了一个滤波器用于检测特殊 功能信号的输入,如果输入信号电平宽度等于三个系统时钟周期,该信号被认为是诸如外部中断请求或外部DMA请求等特殊功能信号。寄存器偏移地址操作功能描述复位值IOPCON0x5004读/写I/O 口控制寄存器0x0000,000031 30 29 28 27 26 2523 2220 1915 1410 95 4 3 2 1 0T 0 E N 1T O E N 0D A K 1D A K 0D R
9、 Q 1D R Q 0X 1 R Q 3X 1 R Q 2X 1 R Q 1X 1 R Q 14: 0控制端口 8的外部中断请求信号0 (xIRQO)输入4端口 8用作外部中断请求信号00=禁止1=使能3 0=低电平有效1 =高电平有效2 0=滤波器关1=滤波器开1: 0 00=电平检测01 =上升沿检测10=下降沿检测11=上升、下降沿均检测9: 5控制端口 9的外部中断请求信号1 (xlRQ1)输入 使用方法同端口 8。14: 10控制端口 10的外部中断请求信号2 (xlRQ2)输入 使用方法同端口 8。19: 15控制端口 11的外部中断请求信号3 (xlRQ3)输入 使用方法同端口
10、8。22: 20控制端口 12的外部DMA请求信号0 (DRQO)输入22端口 12用作外部DMA请求信号0 (nXDREQO)0=禁止1=使能210=滤波器关1=滤波器开20J 0 =低电平有效1 =高电平有效25: 23控制端口 13的外部DMA请求信号1 (DRQ1)输入25端口 13用作外部DMA请求信号1 (nXDREQl)0 =禁止1=使能24 0=滤波器关1=滤波器开23 0=低电平有效1 =高电平有效27: 26控制端口 14的外部DMA应答信号0 (DAKO)输出27端口 14用作外部DMA信号0 (nXDACKO)0=禁止 1=使能126J 0 =低电平有效1 =高电平有效
11、29: 28控制端口 15的外部DMA应答信号1 (DAK1)输出29端口15用作外部DMA信号1 (nXDACKl)0 =禁止 1=使能28 0=低电平有效1 =高电平有效30控制端口 16作为定时器。溢出信号(T0EN0)0=禁止1=使能31控制端口 17作为定时器1溢出信号(T0EN1)0=禁止1=使能I/O 口数据寄存器(I0PDATA):当配置为输入模式时,读取I/O 口数据寄存器IOPDATA的每一位对 应输入状态,当配置为输出模式时,写每一位对应输出状态。位17: 0对应于18个I/O引脚P17P0寄存器偏移地址操作功能描述复位值IOPDATA0x5008读/写I/O 口数据寄存
12、器未定义3118 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0QQQQQQP 11 1P 0 9P 7P 5P 3P P 1 017: 0对应I/O 口 P17-P0的读/写值。I/O 数据寄存器的值反映对 应引脚的信号电平。以上简述了 S3C4510B的通用I/O 口的基本工作原理,更详细的内容 可参考S3C4510B的用户手册。作为本章的第一个例子,将比较详细地描述建立项目、编写程序的过 程,同时可参考第8章关于ADS集成编译调试环境的使用方法。打开 CodeWarrior for ARM Developer Suite(或 ARM Project
13、 Manager), 新建一个项目,并新建一个文件,名为Inits具体内容如下: .;Institute of Automation, Chinese Academy of Sciences;File Name:Init.s;Description:;Author:Li JuguangIMPORT MainAREAInit, CODE, READONLYENTRYLDRRO, =0x3FF0000LDRRI, =0xE7FFFF80 ;配置 SYSCFG,片内 4KB Cache, 4KBSRAMSTRRI, ROLDRSP, =0x3FE1000; SP指向4K SRAM的尾地址,堆栈向下生
14、成BLMainEND该段代码完成的功能为:配置SYSCFG特殊功能寄存器,将S3C4510B片内的8KB 一体化的 SRAM配置为4KB Cache, 4KB SRAM,并将用户堆栈设置在片内的SRAM 中。4KB SRAM 的地址为 Ox3FE,OOOO(Ox3FE, 1000-1),由于 S3C4510B 的堆栈山高地址向低地址生成,将SP初始化为0x3FE1000。完成上述操作后,程序跳转到Main函数执行。保存Init.s,并添加到新建的项目。* Institute of* File Name:再新建一个文件,名为main.c,具体内容如下:Automation,Chinese Aca
15、demy of Sciences main.cDescription:Author:Li Juguangvoid Delay(unsigned int);int Main() (unsigned LED;IOPMOD=OxFFFFFFFF;/将 10 口置为输出模式IOPDATA=0x01;for(;)LED=IOPDATA;LED=(LED1);IOPDATA=LED;Delay(10);if(!(IOPDATA&OxOF)IOPDATA=0x01;)return(0);void Delay(unsigned int x)(unsigned intfor(i=0;i=x;i+)for (j=
16、0;jOxff;j + + )for(k=0;kobey C:memmap.txt系统中 SDRAM 被映射到 0x0040,0000(0x0140,0000-1 ),从 0x0040,0000处装入生成的可执行的映像文件,并将PC指针寄存器修改为 0x0040,0000,就可单步调试或运行生成的可执行的映像文件。该程序的运行效果使接在P0-P3 的LED显示器轮流被点亮。6.2.2 串行通讯工作原理与编程示例串行通讯是微计算机之间一种常见的近距离通讯手段,因使用方便、 编程简单而广泛使用,几乎所有的微控制器、pc都提供串行通讯接口。S3C4510B的UART单元提供两个独立的异步串行I/O
17、口 (Asynchronous Serial I/O, SIO),每个通讯口均可工作在中断模式或DMA 模式,也即UART能产生内部中断请求或DMA请求在CPU和串行I/O 口 之间传送数据。S3C4510B的UART单元特性包括:- 波特率可编程- 支持红外发送与接收- 12个停止位- 5、6、7或8个数据位- 奇偶校验每一个异步串行通讯都具有独立的波特率发生器、发送器、接收器 和控制单元。波特率发生器可由片内系统时钟MCLK驱动,或由外部时钟 UCLK (Pin64)驱动;发送器和接收器都有独立的数据缓冲寄存器和数据 移位器。待发送的数据首先传送到发送缓冲寄存器,然后拷贝到发送移位器并 通
18、过发送数据引脚UATXDn发送出去。接收数据首先从接收数据引脚 UARXDn移入移位器,当接收到一个字节时就拷贝到接收缓冲寄存器。SIO的控制单元通过软件控制工作模式的选择、状态和中断产生。当使用UART的发送中断功能时,应在初始化UART之前先写一个字 节数据到UART的发送缓冲寄存器,这样,当发送缓冲寄存器为空时就可以产生UART的发送中断。图6.2为串行口的功能模块。图6.2串行口功能模块。表6-4为UART特殊功能寄存器描述表6-4 UART特殊功能寄存器寄存器偏移地址操作功能描述复位值ULCONOOxDOOO读/写UART0行控制寄存器0x00ULCON1OxEOOO读/写UART1
19、行控制寄存器0x00UCONO0xD004读/写UART0控制寄存器0x00UCON10xE004读/写UART1控制寄存器0x00USTATO0xD008心UART 0状态寄存器OxCOUSTAT1OxEOO8读UART1状态寄存器OxCOUTXBUFOOxDOOC写UART0发送保持寄存器未定义UTXBUF1OxEOOC叮UART1发送保持寄存器未定义URXBUF0OxDOlO读UART0接收缓冲寄存器未定义URXBUF1OxEOlOttUART1接收缓冲寄存器未定义UBRDIVO0xEM)14读/写UART0波特率除数因子寄存器Ox(X)UBRDIV10xE014读/写UART1波特率除
20、数因子寄存器0x00BRDCNT00xD018写UART0波特率计数寄存器0x00BRDCNT10xE018写UART1波特率计数寄存器0x00BRDCLKOOxDOlC写UART0波特率时钟监视器0x00BRDCLK1OxEOIC写UART1波特率时钟监视器0x00UART 行控制寄存器(UART Line Control Registers, ULCONO. ULCON1):寄存器偏移地址操作功能描述复位值ULCONOOxDOOO读/写UART0行控制寄存器0x0000, 0000ULCON1OxEOOO读/写UART1行控制寄存器0x0000, 0000表6-6为UART行控制寄存器描述
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第6章 部件工作原理与编程示例东北大学嵌入式课件 部件 工作 原理 编程 示例 东北大学 嵌入式 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内