ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:21.86KB ,
资源ID:21239355      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21239355.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于ARM9的BootLoader启动设计文档格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于ARM9的BootLoader启动设计文档格式.docx

1、而stage2则通常用C语言来实现,这样可以实现更复杂的功能,而且代码会具有更好的可读性和可移植性。BootLoader的stage1通常包括一下步骤(以执行的先后顺序):(1)硬件设备初始化。(2)为加载BootLoader的stage2准备RAM空间。(3)复制BootLoader的stage2到RAM空间中。(4)设置好堆栈。(5)跳转到stage2的C入口点。BootLoader的stage2通常包括一下步骤(以执行的先后顺序):(1)初始化本阶段要使用的硬件设备。(2)检测系统内存映射。(3)将kernel映像和根文件系统映像从Flash上独到RAM空间中。(4)为内核设置启动参数。

2、(5)调用内核。第三章 BootLoader串口驱动程序的设计3.1 UART寄存器简介S3C2440AUART控制器,提供3个独立的异步串行I/O端口,每个端口都可以在中断模式或DMA模式下工作。UART可以产生中断请求或DMA请求,以便在CPU和UART之间传输数据。在使用系统时钟的情况下,UART可以支持最高115.2Kbps的传输速率。如果外部设备通过UEXTCLK为UART提供时钟,那么UART的传输速率可以更高。每个UART通道包含两个用于接收和发送数据的16字节的FIFO缓冲寄存器。由于UART是串行异步通信方式,因此在UART通信过程中每次只能传输1位(bit),若干位组成一个

3、数据帧(frame),帧是UART通信中最基本单元,它主要包含开始位、数据位、校验位(如果开启了数据校验,要包含校验位)和停止位。UART在通信之前要在发送端和接受端约定好帧的结构,也就是约定好传输数据帧格式。(1) 开始位:必须包含在数据帧中,表示一个帧的开始。(2) 数据位:可选5、6、7、8位,该长度可由编程人员指定。(3) 校验位:如果在开启了数据校验时,该位必须指定。(4) 停止位:可选1、2位,该位长度可由编程人员指定。通信双方约定好帧格式后,指定同一波特率,以保证双方数据传输的同步。UART串口驱动需要设置的寄存器及其具体特性如表4-1表4-8所示:表3-1 UART0串行控制寄

4、存器(ULCON0)寄存器名地址是否读写描述复位默认值ULCON00x50000000R/W串口0串行控制寄存器0x00位初始值保留7红外模式6选择串口0是否使用红外模式:0 = 正常通信模式 1 = 红外通信模式校验模式5:3设置串口0在数据接收和发送时采用的校验方式:0xx = 无校验 100 = 奇校验 101 = 偶校验 110 = 强制校验/检测是否为1111 = 强制校验/检测是否为0000停止位2设置串口0停止位数:0 = 每个数据帧一个停止位1 = 每个数据帧二个停止位数据位1:设置串口0数据位数:00 = 5个数据位 01 = 6个数据位10 = 7个数据位 11 = 8个数

5、据位00表3-2 UART0串口控制寄存器(UCON0)UCON00x50000004串口0控制寄存器FCLK分频因子15:12当UART0选择FCLK作为时钟源时,设置其FCLK的分频因子UART0工作时钟频率 = FCLK/FCLK分频因子 + 60000UART时钟源选择11:10选择UART0的工作时钟PCLK,UEXTCLK,FCLK/n:00,10 = PCLK 01 = UEXTCLK11 = FCLK/n发送数据中断产生类型9设置UART0中断请求类型,在非FIFO传输模式下,一旦发送数据缓冲区为空,立即产生中断信号,在FIFO传输模式下达到发送数据触发条件时立即产生中断信号:

6、0 = 脉冲触发 1 = 电平触发接收数据中断产生类型8设置UART0中断请求类型,在非FIFO传输模式下,一旦接收到数据,立即产生中断信号,在FIFO传输模式下达到接收数据触发条件时立即产生中断信号:接收数据超时设置当接收数据时,如果数据超时,是否产生接收中断:0 = 不开启超时中断 1 = 开启超时中断接收数据错误中断设置当接收数据时,如果产生异常,如传输中止,帧错误,校验错误时,是否产生接收中断:0 = 不产生错误状态中断 1 = 产生错误状态中断回送模式5设置该位时UART会进入回送模式,该模式仅用于测试0 = 正常模式 1 = 回送模式发送终止信号4设置该位时,UART会发送一个帧长

7、度的终止信号,发送完毕后,该位自动恢复为00 = 正常传输 1 = 发送终止信号发送模式3:设置采用哪个方式执行数据写入发送缓冲区00 = 无效 01 = 中断请求或查询模式10 = DMA0请求接收模式设置采用哪个方式执行数据写入接收缓冲区表3-3 UART FIFO控制寄存器(UFCON0)UFCON00x50000008串口0 FIFO控制寄存器发送数据触发级别7:设置FIFO发送模式的触发级别:00 = FIFO为空触发 01 = 16字节触发10 = 32字节触发 11 = 48字节触发接收数据设置FIFO接收模式的触发级别:发送FIFO重置在重置FIFO后自动清除发送缓冲区0 =

8、正常模式 1 = 自动清除接收FIFO重置1在重置FIFO后自动清除接收缓冲区启用FIFO0 = 不启用FIFO 1 = 启用FIFO表3-4 UART MODEM控制寄存器(UMCON0)UMCON00x5000000C串口0 MODEM控制寄存器必须全部置0AFC自动流控0 = 不开启流控 1 = 开启流控请求发送如果启用AFC,该位无效,S3C2440A会自动控制nRTS,如果不启用AFC,nRTS必须由软件控制0 = 高电平激活nRTS 1 = 低电平激活nRTS表3-5 UART 发送/接收状态寄存器(UTRSTAT0)UTRSTAT00x50000010串口0 发送/接收状态寄存器

9、0x06发送器为空当发送缓存寄存器中没有数据要发送且发送移位寄存器为空时,自动置10 = 非空 1 = 发送器为空发送缓存寄存器为空当发送缓存寄存器为空时,自动置10 = 发送缓存寄存器非空1 = 发送缓存寄存器为空接收缓存当接收缓存寄存器有数据到达是,自动置10 = 接收缓存寄存器为空1 = 缓存寄存器接收数据表3-6 UART 发送缓存寄存器(UTXH0)UTXH00x50000020(L)0x50000023(B)W串口0 发送缓存寄存器表3-7 UART 接收缓存寄存器(URXH0)URXH00x50000024(L)0x50000027(B)R串口0 接收缓存寄存器表3-8 UART

10、 比特率除数寄存器(UBRDIV0)UBRDIV00x50000028串口0比特率除数寄存器比特率除数设置比特率除数(大于0)使用外部输入时可以置03.2 UART串口工作原理每个UART包含一个波特率产生器、发送器、接收器和一个控制单元。波特率发生器的时钟可以由PCLK或UEXTCLK提供。发送器和接收器包含64字节的FIFO缓冲寄存器和数据移位器。发送时,数据被写入FIFO,然后拷贝到发送移位器中(1字节大小),接下来数据通过发送数据引脚(TxDn)被发送。接收时,接收到的数据从接收数据引脚(RxDn)移入,然后从移位器(1字节大小)拷贝到FIFO中。3.3 UART驱动程序详细设计UAR

11、T驱动程序设计到的函数主要有初始化函数、串口发送字节函数、串口发送字符串函数、串口接收字节函数新建uart.h头文件,编写代码如下:#ifndef _UART_H#define _UART_H/串口寄存器宏定义#define rULCON0 (*(volatile unsigned long *)0x50000000)#define rUCON0 (*(volatile unsigned long *)0x50000004)#define rUFCON0 (*(volatile unsigned long *)0x50000008)#define rUMCON0 (*(volatile uns

12、igned long *)0x5000000C)#define rUTRSTAT0 (*(volatile unsigned long *)0x50000010)#define rUTXH0 (*(volatile unsigned long *)0x50000020)#define rURXH0 (*(volatile unsigned long *)0x50000024)#define rUBRDIV0 (*(volatile unsigned long *)0x50000028)#define rGPHCON (*(volatile unsigned long *)0x56000070)

13、#define rGPHDAT (*(volatile unsigned long *)0x56000074)#define rGPHUP (*(volatile unsigned long *)0x56000078)extern int UART_Select(uint8 no);extern void UART_Init(void);extern void UART_SendByte(uint8 data);extern void UART_SendStr(char const *str);extern int UART_GetKey(void);#endif新建uart.c文件,用于具体

14、实现上述函数,代码如下:#include config.h/串口初始化函数void UART_Init(void) int i;rGPHUP = rGPHUP | (0x032);rGPHCON = (rGPHCON & (0x000000F0) | (0x000000A0); rUFCON0 = 0x00; / 禁止FIFO功能rUMCON0 = 0x00; / AFC(流控制)禁能rULCON0 = 0x03; / 禁止IRDA,无奇偶校验,1位停止位,8位数据位rUCON0 = 0x245; / 使用PCLK来生成波特率,发送中断为电平触发模式,接收中断为边沿触发模式,禁止接收超时中断,

15、使能接收错误中断,正常工作模式,中断或查询方式(非DMA) rUBRDIV0=(int)(PCLK/16.0/UART_BPS + 0.5) -1; / 串口波特率设置for(i=0;i100;i+);/串口发送字节函数void UART_SendByte(uint8 data) while(!(rUTRSTAT0 & 0x02); / 等待发送器为空 i10; i+);rUTXH0 = data; / 发送数据/串口发送字符串函数void UART_SendStr(char const *str) while(*str != 0) if(*str = n) UART_SendByte(r);

16、 UART_SendByte(*str+); / 发送数据 /串口接收字节函数int UART_GetKey(void) while(! 0x1);return(rURXH0);编写main.c,内容如下:int main(void) char cmd20; uint8 rece256; memset(cmd,20); UART_Select(0); UART_Init(); Clk_Init(); DelayNS(10); UART_SendStr(串口初始化完成!rn时钟初始化完成! while(1) UART_Receive(cmd); /UART_SendStr(cmd); if(me

17、mcmp(cmd,exit,4) = 0) break; rnGOOD BYE! return 0;第四章 总结课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,ARM嵌入式系统已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握嵌入式的开发技术是十分重要的。回顾起此次ARM课程设计,我仍感慨颇多,在接近四星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到

18、过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对汇编语言掌握得不好通过这次课程设计之后,一定把以前所学过的知识重新温故。参考文献1黄智伟, 邓月明, 王彦. ARM9嵌入式系统设计基础教程. 北京: 北京航空航天大学出版社, 2008.2杨铸,唐攀.深入浅出嵌入式底层软件开发.北京:北京航空航天大学出版社, 20113周立功. ARM嵌入式系统软件开发实例. 北京: 北京航空航天大学出版社, 20044袁志勇,王景存.嵌入式系统原理与应用技术.北京:北京航空航天大学出版社, 2009指导教师评语: 指导教师签名: 年 月 日成绩评定项 目权重成绩1、设计过程中出勤、学习态度等方面0.12、设计技术水平0.43、编程风格0.24、设计报告书写及图纸规范程度0.3总 成 绩

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1