资源预览内容
第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
第9页 / 共13页
第10页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
长治学院课程设计报告课程名称:课程名称: 嵌入式系统原理与应用技术嵌入式系统原理与应用技术 设计题目设计题目: Bootloader 程序设计 系系 别:别: 计算机系 专专 业:业: 计算机科学与技术 组组 别:别: 第 7 组(韩伟伟、王富涌) 学生姓名学生姓名: : 韩伟伟 学学 号号: 08407106 起止日期起止日期: 2011 年 12 月 15 日 - 2011 年 12 月 22 日 指导教师指导教师: 刘丽丽 目录第一章 概述.11.1 课程设计名称 .11.2 课程设计目的 .11.3 要求 .1第二章 背景分析.12.1 BOOTLOADER的概念.12.2 BOOTLOADER的主要任务与典型结构框架.1第三章 BOOTLOADER 串口驱动程序的设计 .24.1 UART 寄存器简介.24.2 UART 串口工作原理.54.3 UART 驱动程序详细设计.5第四章 总结.9参考文献.101第一章 概述 1.1 课程设计名称BootLoader 程序设计1.2 课程设计目的串口驱动和网口驱动程序的设计,可以通过串口或网口接收数据或文件,并且可以写到 flash 中1.3 要求编写 BootLoader 程序 uart.h uart.c 串口驱动测试程序 main.c第二章 背景分析2.1 BootLoader 的概念简单地说,BootLoader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。2.2 BootLoader 的主要任务与典型结构框架从操作系统的角度看,BootLoader 的总目标就是正确地调用内核来执行。另外,由于 BootLoader 的实现依赖于 CPU 的体系结构,因此大多数BootLoader 都分为 stage1 和 stage2 两大部分。依赖于 CPU 体系结构的代码,比如设备初始化代码等,通常都放在 stage1 中,而且通常都用汇编语言来实现,以达到短小精悍的目的。而 stage2 则通常用 C 语言来实现,这样可以实现更复杂的功能,而且代码会具有更好的可读性和可移植性。BootLoader 的 stage1 通常包括一下步骤(以执行的先后顺序):(1) 硬件设备初始化。(2) 为加载 BootLoader 的 stage2 准备 RAM 空间。2(3) 复制 BootLoader 的 stage2 到 RAM 空间中。(4) 设置好堆栈。(5) 跳转到 stage2 的 C 入口点。BootLoader 的 stage2 通常包括一下步骤(以执行的先后顺序):(1) 初始化本阶段要使用的硬件设备。(2) 检测系统内存映射。(3) 将 kernel 映像和根文件系统映像从 Flash 上独到 RAM 空间中。(4) 为内核设置启动参数。(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),若干位组成一个数据帧(frame),帧是 UART 通信中最基本单元,它主要包含开始位、数据位、校验位(如果开启了数据校验,要包含校验位)和停止位。UART 在通信之前要在发送端和接受端约定好帧的结构,也就是约定好传输数据帧格式。(1) 开始位:必须包含在数据帧中,表示一个帧的开始。(2) 数据位:可选 5、6、7、8 位,该长度可由编程人员指定。(3) 校验位:如果在开启了数据校验时,该位必须指定。(4) 停止位:可选 1、2 位,该位长度可由编程人员指定。通信双方约定好帧格式后,指定同一波特率,以保证双方数据传输的同步。3UART 串口驱动需要设置的寄存器及其具体特性如表 4-1表 4-8 所示:表 3-1 UART0 串行控制寄存器(ULCON0)寄存器名地址是否读写描述复位默认值ULCON00x50000000R/W串口 0 串行控制寄存器0x00ULCON0位描述初始值保留70红外模式6选择串口 0 是否使用红外模式: 0 = 正常通信模式 1 = 红外通信模式0校验模式5:3设置串口 0 在数据接收和发送时采用的校验方式: 0xx = 无校验 100 = 奇校验 101 = 偶校验 110 = 强制校验/检测是否为 1 111 = 强制校验/检测是否为 0000停止位2设置串口 0 停止位数: 0 = 每个数据帧一个停止位 1 = 每个数据帧二个停止位0数据位1:0设置串口 0 数据位数: 00 = 5 个数据位 01 = 6 个数据位 10 = 7 个数据位 11 = 8 个数据位00表 3-2 UART0 串口控制寄存器(UCON0)寄存器名地址是否读写描述复位默认值UCON00x50000004R/W串口 0 控制寄存器0x00UCON0位描述初始值FCLK 分频因 子15:12当 UART0 选择 FCLK 作为时钟源时,设置其FCLK 的分频因子 UART0 工作时钟频率 = FCLK/FCLK 分频因子 + 60000UART 时钟源 选择11:10选择 UART0 的工作时钟PCLK,UEXTCLK,FCLK/n: 00,10 = PCLK 01 = UEXTCLK 11 = FCLK/n00发送数据中 断产生类型9设置 UART0 中断请求类型,在非 FIFO 传输模式下,一旦发送数据缓冲区为空,立即产生中 断信号,在 FIFO 传输模式下达到发送数据触发 条件时立即产生中断信号: 0 = 脉冲触发 1 = 电平触发0接收数据中 断产生类型8设置 UART0 中断请求类型,在非 FIFO 传输模式下,一旦接收到数据,立即产生中断信号, 在 FIFO 传输模式下达到接收数据触发条件时立 即产生中断信号: 0 = 脉冲触发 1 = 电平触发0接收数据超 时7设置当接收数据时,如果数据超时,是否产生接收中断: 0 = 不开启超时中断 1 = 开启超时中断04接收数据错 误中断6设置当接收数据时,如果产生异常,如传输中止,帧错误,校验错误时,是否产生接收中断:0 = 不产生错误状态中断 1 = 产生错误状态中断0回送模式5设置该位时 UART 会进入回送模式,该模式仅 用于测试 0 = 正常模式 1 = 回送模式0发送终止信 号4设置该位时,UART 会发送一个帧长度的终止信号,发送完毕后,该位自动恢复为 0 0 = 正常传输 1 = 发送终止信号0发送模式3:2设置采用哪个方式执行数据写入发送缓冲区 00 = 无效 01 = 中断请求或查询模式 10 = DMA0 请求00接收模式1:0设置采用哪个方式执行数据写入接收缓冲区 00 = 无效 01 = 中断请求或查询模式 10 = DMA0 请求0表 3-3 UART FIFO 控制寄存器(UFCON0)寄存器名地址是否读写描述复位默认值UFCON00x50000008R/W串口 0 FIFO 控制寄存器0x00UFCON0位描述初始值发送数据 触发级别7:6设置 FIFO 发送模式的触发级别:00 = FIFO 为空触发 01 = 16 字节触发 10 = 32 字节触发 11 = 48 字节触发0接收数据 触发级别5:4设置 FIFO 接收模式的触发级别:00 = FIFO 为空触发 01 = 16 字节触发 10 = 32 字节触发 11 = 48 字节触发00保留30发送 FIFO 重置2在重置 FIFO 后自动清除发送缓冲区 0 = 正常模式 1 = 自动清除0接收 FIFO 重置1在重置 FIFO 后自动清除接收缓冲区 0 = 正常模式 1 = 自动清除0启用 FIFO00 = 不启用 FIFO 1 = 启用 FIFO0表 3-4 UART MODEM 控制寄存器(UMCON0)寄存器名地址是否读写描述复位默 认值UMCON00x5000000CR/W串口 0 MODEM 控制寄存器0x00UMCON0位描述初始值保留7:5必须全部置 00AFC 自动 流控40 = 不开启流控 1 = 开启流控0保留3:1必须全部置 00005请求发送0如果启用 AFC,该位无效,S3C2440A 会自动控制 nRTS,如果不启用 AFC,nRTS 必须由软件控制 0 = 高电平激活 nRTS 1 = 低电平激活 nRTS0表 3-5 UART 发送/接收状态寄存器(UTRSTAT0)寄存器名地址是否读写描述复位默认 值UTRSTAT00x50000010R/W串口 0 发送/接收状态寄存器0x06UTRSTAT0位描述初始值发送器为 空2当发送缓存寄存器中没有数据要发送且发送移位寄存器为空时,自动置 1 0 = 非空 1 = 发送器为空1发送缓存 寄存器为 空1当发送缓存寄存器为空时,自动置 10 = 发送缓存寄存器非空 1 = 发送缓存寄存器为空1接收缓存 寄存器为 空0当接收缓存寄存器有数据到达是,自动置 10 = 接收缓存寄存器为空 1 = 缓存寄存器接收数据0表 3-6 UART 发送缓存寄存器(UTXH0)寄存器名地址是否读写描述复位默认值UTXH00x50000020(L) 0x50000023(B )W串口 0 发送缓存寄存器表 3-7 UART 接收缓存寄存器(URXH0)寄存器名地址是否读写描述复位默认值URXH00x50000024(L) 0x50000027(B )R串口 0 接收缓存寄存器表 3-8 UART 比特率除数寄存器(UBRDIV0)寄存器名地址是否读写描述复位默认值UBRDIV00x5000002 8R/W串口 0 比特
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号