LPC2478远程温度监控.doc_第1页
LPC2478远程温度监控.doc_第2页
LPC2478远程温度监控.doc_第3页
LPC2478远程温度监控.doc_第4页
LPC2478远程温度监控.doc_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

桂林电子科技大学毕业设计 论文 报告用纸 第 1 页 共 57 页 1 摘 要 随着通讯技术 网络技术和半导体技术的飞速发展 嵌入式系统接入网络已成为 其应用的一个重要方向 越来越多的嵌入式系统选择Web 服务器的方式与Internet 进 行数据交换 而以太网是构筑现代Internet 网络的基础 因此选择基于以太网的嵌入 式Web 服务器技术实现数据交换将具有较高的实用价值 温度是程控机房 档案室 图书馆 农业生产基地等众多场所需要实时监控的一个重要物理量 温度监控系统在 实际生活中有着重要的作用 本文主要针对ARM7TDMI核的微处理器芯片 结合嵌入式 Web 服务器技术 提出了基于以太网的远程温度监控系统的设计方案 该方案成功的 实现了温度采集和控制的网络化 本设计采用的是丰宝公司的 LINPO PS LPC 2478 实验板 进行远程温度监控系统 研究 该板采用了恩智浦公司基于 ARM7TDMI S 内核 单电源供电 LQFP208 封装的 LPC2478 具有 JTAG 仿真调试 ISP 编程等功能 uClinux 是应用于微控制领域的一种嵌入式 Linux 操作系统 它源码开放 移植性 好 支持多种硬件平台和几乎所有常见网络通信协议 支持文件系统丰富 是一个功 能完整的嵌入式操作系统 并且有大量优秀的开放源代码的应用软件和开发工具可用 因此 采用 Clinux 作为操作平台 使用 Web 技术进行远程在线监测系统的开发 Boa 是一个高性能的单任务型 Web 服务器 可以运行在几乎所有的类 Unix 的平台 上 Boa 支持认证 支持 CGI 功能比较全 占用资源也少 非常适合于用在资源有限 的嵌入式系统中 目前 Boa 已经以源码的形式包含在 uClinux 的发行包中 所以本设 计采用 uClinux 和 boa 服务器可以较好的满足本次设计要求 关键词 远程温度系统 AMR7 LPC2478 u boot uClinux nand flash nor flash dp83848 ds18b20 cgi boa web 桂林电子科技大学毕业设计 论文 报告用纸 第 2 页 共 57 页 2 Abstract Along with communications technology networking technology and the technology embedded systems developing rapidly and access network has become an important direction of its application more and more options embedded systems and internet web server exchange data And ethernet is construct a modern internet network infrastructure and therefore opt for ethernet technology embedded web server for data interchange will be the practical value of the room the temperature is controlled and the archives libraries agricultural production base in many places such as real time monitoring require a major physical quantities the temperature control system in practical life is an important role This article mainly aimed at the microprocessor chips arm7tdmi the technology embedded web server based on the temperature of the ethernet remote control system design scheme This scheme successful to the collection and control of the network The design is based on the Fengbao Electronic Technology Shanghai Co Ltd LINPO PS LPC 2478 board to carry out the analysis on meter reading system the board is integrated with NXP ARM7TDMI S kernel Single power supply LQFP208 enclosed LPC2478 JTAG simulated debugging and ISP programming functions etc This design adopts uclinux and the boa server can better meet the requirements uClinux is applied to a control an embedded linux operating system of its open source and transplant well and support multiple hardware platforms and almost all common communication protocols network supported file system is a function of embedded system and there is a good open source software application and development of tools available and therefore adopt clinux as operating platform the use of remote web technology in the monitoring system development Boa is a performance of the task type of web server and run on almost all the kind of unix platforms boa support and support and the cgi be holding resources are few and are suitable for use in the limited resources of embedded systems and the boa has been a source of the forms contained in the issue of uClinux package So this design adopts uclinux and the boa server can better meet the requirements Key words remote temperature measurement and control system ARM7 LPC2478 u boot uClinux nand flash norflash dp83848 ds18b20 cgi boa web 桂林电子科技大学毕业设计 论文 报告用纸 第 3 页 共 57 页 3 目目 录录 引言 5 1 项目设计方案 6 2 开发环境介绍 7 2 1 LINPO PS LPC 2478 介绍 7 2 2 NORFLASH 介绍 7 2 2 1 AM29LV160DB 简介 8 2 2 2 AM29LV160DB 的操作命令字 8 2 2 3 Nor flash 的映射 8 2 3 NAND FLASH介绍 9 2 3 1 Nand flash 芯片工作原理 9 2 3 2 Nand flash 主要内设命令详细介绍 10 2 4 以太网接口介绍 11 2 4 1 以太网模块特点 11 2 4 2 以太网模块初始化 12 2 5 软件开发环境的介绍 13 3 U BOOT 的移植 14 3 1 U BOOT简介 14 3 1 1 LPC2468OEM Board 中几个重要的文件 16 3 1 2 U Boot 的启动流程 17 3 2 U BOOT的配置和编译 19 3 3 U BOOT的移植 19 3 4 U BOOT NOR FLASH驱动的移植 21 3 5 NAND FLASH 驱动移植 23 桂林电子科技大学毕业设计 论文 报告用纸 第 4 页 共 57 页 4 3 6 U BOOT网卡驱动移植 26 4 UCLINUX 系统的移植 30 4 1 基本内核的移植 30 4 2 LINUX NOR FLASH驱动移植 32 4 2 1 Linux mtd 简介 32 4 2 2 Nor flash 驱动移植 33 4 2 3 JFFS2 文件系统的制作 37 4 3 LINUX网卡驱动移植 38 4 3 1 网卡初始化 39 4 3 2 网卡打开 40 4 3 3 网卡发送 40 4 3 4 网卡接收 40 4 3 5 网卡关闭 41 4 3 6 网卡退出 41 4 3 7 LPC2468 网卡驱动移植 41 4 4 嵌入式 WEB服务器BOA的移植 43 4 4 1 Boa 简介 43 4 4 2 Boa 编译配置 43 4 4 3 Boa 目录的建立 44 4 4 4 Boa 的编译 44 5 软件开发过程 45 5 1 DS18B20 驱动程序设计 45 5 1 2 DS18B20 硬件连接 47 5 1 3 DS18B20 驱动介绍 47 5 1 4 温度应用程序 49 5 2 LPC2478 DA 驱动设计 51 桂林电子科技大学毕业设计 论文 报告用纸 第 5 页 共 57 页 5 5 2 1 LPC2478 DA 驱动测试 51 5 3 WEB 程序设计 51 5 3 1 CGI 简介 51 5 3 2 CGI 程序工作原理 52 5 3 3 WEB 程序框图 52 5 3 4 WEB 程序介绍 53 6 结论 54 谢 辞 55 参考文献 56 桂林电子科技大学毕业设计 论文 报告用纸 第 6 页 共 57 页 6 引言 我国是粮食生产大国 同时我国地域辽阔 气候差异大 粮食的安全存储是一项 重要任务 环境的温度 湿度 压力等都是影响工农业生产的较重要的因素 如储存 粮食的仓库中的温度 湿度的正常与否将直接影响到粮食可以储存的时间以及粮食的 质量 在酿造业中 环境稍微有点变化就会有副产品制造出来 影响产品质量 因此酵池 中的温度 压力更要进行精确的控制 温度是一个基本的物理量 它是农业生产过程 中最普遍 最重要的工艺参数之一 随着农业的不断发展 对温度测量的要求越来越 高 而且测量范围也越来越广 因此对温度检测技术的要求也越来越高 粮库多点温 度监控系统也向着智能化方向发展 有效减少粮食在储存时的损失 成为了现代化粮 食保存所必需的 随着嵌入式技术的发展 嵌入式系统接入网络已成为其应用的一个重要方向 越 来越多的嵌入式系统选择 Web 服务器的方式与 Internet 进行数据交换 而以太网是 构筑现代 Internet 网络的基础 因此选择基于以太网的嵌入式 Web 服务器技术实现 数据交换将具有较高的实用价值 本文主要针对 ARM7TDMI 核的微处理器芯片 结合嵌 入式 Web 服务器技术 提出了基于以太网的远程温度监控系统的设计方案 本方案采 用 LPC2478 uCliunx WEB CGI 技术来实现对温度进行监控 桂林电子科技大学毕业设计 论文 报告用纸 第 7 页 共 57 页 7 1 项目设计方案 本设计的系统框图如下所示 温度传感器LPC2478 uClinux Web 服务 器 Web 客 户端监控 喇叭 图 1 1 系统框图 实施方案 LPC2478 和 uCliunx 实现对 DS18B20 温度传感器进行温度的采集 通过 Web 浏览 器访问 Boa Web 服务器可以查看到温度的情况 然后在通过 Web CGI 对 LPC2478 板子 上的 DAC DAC 与喇叭连接 进行控制 来模拟对温度的控制 用户用 web 浏览器访问板子的 web 服务器 然后发送命令对板子进行控制 监测温度 将温度以网页的形式显示出来 网页每两秒刷新一次并监测温度 如 果大于预设值则驱使 DAC 输出报警 升加 1 C 用户点击该按钮即可实现对 DAC 的控制 是喇叭发出声响 来模拟 对温度的控制 降低 1 C 用户点击该按钮即可实现对 DAC 的控制 是喇叭发出声响 来模拟 对温度的控制 这三者的频率都不一样 WEB 系统框图如下 图 1 2 WEB 系统框图 桂林电子科技大学毕业设计 论文 报告用纸 第 8 页 共 57 页 8 2 开发环境介绍 2 1 LINPO PS LPC 2478 介绍 LINPO PS LPC 2478 实验板是上海丰宝电子科技有限公司设计的 ARM7 系列实验板之 一 采用了恩智浦公司基于 ARM7TDMI S 内核 单电源供电 LQFP208 封装的 LPC2478 具有 JTAG 仿真调试 ISP 编程等功能 实验板上提供了一些键盘 数码管 LED 喇叭等常用功能部件 还具有 RS232 接口电路 I2C 存储器电路 USB OTG 和 HOST 电路 CAN 总线电路 SD 卡接口 I2S 接口电路 CAN 总线电路 LCD 接口电路以及 10M 100M 以太网电路 另外 用 户也可以更换兼容的 MCU 进行仿真调试 如 LPC2468 LPC2470 等 还为用户引出 I O 接口以及地址和数据总线接口 极大地方便了用户进行 32 位 ARM 嵌入式系统的 开发实验 2 2 NORFLASH 介绍 系统采用芯片 AM29LV160DB 是 16 位的存储宽度 因此芯片的 A0 A19 脚与总线 的 A1 A20 脚连接 片选信号使用 CS0 这样本片 NOR Flash 被配置为外部静态存储 器的 Bank0 其地址范围为 0 x80000000 0 x801FFFFF 如下图所示 图 2 1 桂林电子科技大学毕业设计 论文 报告用纸 第 9 页 共 57 页 9 2 2 1 AM29LV160DB 简介 AM29LV160DB 为 2MB 的 NOR Flash 芯片 使用电平为 2 7V 3 6V 存取时间 70ns 封装形式为 48 脚的 FBGA 或 TSOP 封装 AM29LV160DB 一共提供了 35 个扇区 其中 4 34 号扇区为 64Kbyte 或 32Kword 对扇区的操作为字节模式或字模式 字节模式时 每个扇区的存储单元大小 为 8bit 字模式时 扇区的存储空间寻址范围小一半 但每个地址单元的数据大小为 16bit 2 2 2 AM29LV160DB 的操作命令字 对 NOR Flash 存储器的数据读操作跟普通的 RAM 是一样的 但进行写 擦除 查询等操作时要使用写入组合命令字来实现 AM29LV160DB 的命令字见下图 图 2 2 例如 当要查询芯片的生产厂商 ID 号时 在字模式下 前三个周期分别向地址 0 x555 0 x2AA 0 x555 处写入数据 0 xAA 0 x55 0 x90 第四个周期从地址 0 处即可 获得厂商 ID 2 2 3 Nor flash 的映射 LPC2400 系列芯片具备外部存储器接口 通过外部存储器控制器 EMC 可以扩 展两组共 8 个 Bank 的存储器组 静态存储器 bank0 bank3 动态存储器 bank0 bank3 对于外扩的 FLASH NOR 型 则可以使用 LDR 指令读取数据 但 是不能使用 STR 指令直接写数据 而是需要根据 FLASH 芯片写操作时序进行控制 实现 FLASH 的擦除编程 桂林电子科技大学毕业设计 论文 报告用纸 第 10 页 共 57 页 10 2 3 Nand flash 介绍 NAND Flash 与总线的连接与 SDRAM 和 NOR Flash 的连接不同 地址线只用了 A21 和 A22 做时钟使能和地址使能信号 数据线只用 8 位作为 IO 线 分别与总线连接 片选信号使用 CS1 这样本片 NAND Flash 被配置为外部静态存储器的 Bank1 其地址 范围为 0 x81000000 0 x81FFFFFF 其硬件连接图如下 图 2 3 2 3 1 Nand flash 芯片工作原理 Nand flash芯片型号为K9F2G08U0M 存储容量为256M 8bit 256M字节 采用块 页式存储管理 8个I O引脚充当数据 地址 命令的复用端口 芯片内部存储布局及存储操作特点 一片Nand flash为一个设备 device 其数据存储分层为 1 Block 64 Pages 128K 4k Byte 1 Page 2K 64 Bytes 1 Block 2K 64 B x 64 Pages 128K 4K Bytes 1 Device 2K 64 B x 64Pages x 2048 Blocks 2112 Mbits 264MB 在每一页中 最后64个字节 又称OOB 用于Nand Flash命令执行完后设置状态 重要芯片引脚功能 I O0I O7 复用引脚 可以通过它向nand flash芯片输入数据 地址 nand flash命令以及输出数据和操作 桂林电子科技大学毕业设计 论文 报告用纸 第 11 页 共 57 页 11 状态信息 CLE Command Latch Enable 命令锁存允许 ALE Address Lactch Enable 地址锁存允许 CE 芯片选择 RE 读允许 WE 写允许 WP 在写或擦除期间 提供写保护 R B 读 忙输出 2 3 2 Nand flash 主要内设命令详细介绍 Nand Flash命令执行是通过将命令字送到Nand Flash控制器的命令寄存器来执行 Nand Flash的命令是分周期执行的 每条命令都有一个或多个执行周期 每个执行周 期都有相映代码表示该周期将要执行的动作 主要命令有 Read 1 Read 2 Read ID Reset Page Program Block Erase Read Status 详细介绍如下 1 Read 1 功能 表示将要读取Nand flash存储空间中一个页的前半部分 并且将内置指针 定位到前半部分的第一个字节 命令代码 00h 2 Read 2 功能 表示将要读取Nand flash存储空间中一个页的后半部分 并且将内置指针 定位到后半部分的第一个字节 命令代码 30h 3 Read ID 功能 读取Nand flash芯片的ID号 命令代码 90h 4 Reset 功能 重启芯片 命令代码 FFh 5 Page Program 桂林电子科技大学毕业设计 论文 报告用纸 第 12 页 共 57 页 12 功能 对页进行编程命令 用于写操作 命令代码 写入80h开始编程模式 写入模式 接下来写入地址和数据 最后写入10h 表示编程结束 6 Block Erase 功能 块擦除命令 命令代码 首先写入60h进入擦写模式 然后输入块地址 接下来写入D0h 表示擦写 结束 7 Read Status 功能 读取内部状态寄存器值命令 命令代码 70h 2 4 以太网接口介绍 以太网模块包含一个功能齐全的 10Mbps 或 100Mbps 以太网 MAC 媒体访问控制器 这个以太网 MAC 通过使用 DMA 硬件加速功能来提供优化的性能 以太网模块的功能包 括大量的控制寄存器组 半双工或全双工操作 流控制 控制帧 用于重新发送的硬 件加速功能 接收包过滤以及 LAN 上的唤醒 利用分散 集中式 Scatter Gather DMA 进行自动的帧发送和接收操作 分担 off load 了来自 CPU 的大量操作 以太网模 块和 CPU 共享一个特定的 AHB 子系统 AHB2 该系统用于访问以太网 SRAM 来获得以 太网数据 控制和状态信息 LPC2400 中的其它所有 AHB 通信均在另一个 AHB 子系统上 完成 从而有效地将以太网活动与系统的其它部分分开 以太网 DMA 在没有被 USB 模 块使用的情况下 也可以通过外部存储器控制器来访问片外存储器以及 AHB1 上的 SRAM 但是 当使用以太网 SRAM 之外的存储器 尤其是片外存储器时 将减慢以太网 访问存储器的速度并增加 AHB1 的负载 以太网模块使用 MII 媒体独立接口 或 RMII 简化的 MII 协议以及片上 MIIM 媒体独立接口管理 串行总线来连接片外的 以太网 PHY 2 4 1 以太网模块特点 以太网标准支持 10M 或 100Mbps PHY 器件 包括 10 Base T 100 Base TX 100 Base FX 和 100 Base T4 完全遵循 IEEE 标准 802 3 完全兼容 802 3x 全双工流控和半双工背压技术 back pressure 灵活的发送帧和接收帧选项 桂林电子科技大学毕业设计 论文 报告用纸 第 13 页 共 57 页 13 支持 VLAN 帧 存储器管理 独立的发送和接收缓冲区存储器 映射到共用的 SRAM 带有分散 集中式 DMA 的 DMA 管理器以及帧描述符数组 通过缓冲和预取来实现存储器通信的优化 以太网增强的功能 接收进行过滤 发送和接收均支持多播帧 multicast frame 和广播帧 broadcast frame 发送操作可选择自动 FCS 插入 CRC 可选择在发送操作时自动进行帧填充 frame padding 发送和接收均支持超长帧传输 允许帧长度为任意值 多种接收模式 出现冲突时自动退避 backoff 并重新传送帧信息 通过时钟切换实现功率管理 支持 LAN 上唤醒 的功率管理功能以便将系统唤醒 该功能可使用接收滤 波器或魔法帧 magic frame 检测滤波器来实现 物理接口 通过标准的媒体独立接口 MII 或标准的简化 MII RMII 接口来连接外部 PHY 芯片 该特性可通过软件来选择 通过媒体独立接口管理 MIIM 接口可访问 PHY 寄存器 2 4 2 以太网模块初始化 复位后 以太网软件驱动程序需对以太网模块进行初始化 在初始化过程中 软 件需完成 将软件复位条件从MAC中移除 通过MAC的MIIM接口配置PHY 选择RMII或MII模式 配置发送和接收DMA引擎 包括描述符数组 配置MAC中的主机寄存器 MAC1 MAC2等等 桂林电子科技大学毕业设计 论文 报告用纸 第 14 页 共 57 页 14 使能接收和发送数据通道 2 5 软件开发环境的介绍 操作系统 Windows XP Red Hat Enterprise Linux 5 使用软件 虚拟机软件 vmware 652 串口工具 DNW JLinkARM V374m IAR 4 42A 交叉编译工具 arm linux tools 20061213 tar gz 使用源码 linux 2 6 21 tar bz2 uClinux dist 20070130 tar gz linux 2 6 21 uc0 lpc2468 diff linux 2 6 21 uc0 big patch gz uClinux dist 20070130 nxp lpc2468 tgz u boot 1 1 6 tar gz 桂林电子科技大学毕业设计 论文 报告用纸 第 15 页 共 57 页 15 3 U Boot的移植 系统的移植是本项目的最重要的工作 系统的移植完成了 该项目可以说完成了 很大的一部分 系统的移植包括两大部分的移植工作 u boot 的移植和 uClinux 的移植 其中 U boot 的移植又包括下面三部分的工作 1 nor flash 的移植 2 nand flash 的移植 3 网卡驱动的移植 uClinux 系统的移植包括下面四部分的工作 1 nor flash 的移植 2 JFFS2 文件系统的制作 3 网卡驱动的移植 4 boa web 服务器的移植 本章先介绍 U Boot 的移植 第四章介绍 linux 系统的移植 3 1 U Boot 简介 BootLoader 是在操作系统内核运行之前运行的一段小程序 通过这段小程序 我 们可以初始化硬件设备 建立内存空间的映射图 从而将系统的软硬件环境带到一个 合适的状态 以便为最终调用操作系统内核准备好正确的环境 通常 BootLoader 是 严重地依赖于硬件而实现的 因此 在嵌入式世界里建立一个通用的 BootLoader 几乎 是不可能的 常用的 Bootloader 有 U Boot vivi Redboot ARMboot Blob Bootldr 等 通常 要在特定的嵌入式平台上使用这些 Bootloader 需要做一定的编程移植工作 U Boot 全称 Universal Boot Loader 是一个遵循 GPL 条款的开放源码项目 从 FADSROM 8xxROM PPCBOOT 逐步发展演化而来 从 PPCBOOT 向 U Boot 的顺 利过渡 很大程度上归功于 U Boot 的维护人 德国 DENX 软件工程中心 Wolfgang Denk 本人精湛的专业水平和持着不懈的努力 当前 U Boot 项目正在他的领军之下 众多有志于开放源码 BootLoader 移植工作的嵌入式开发人员正如火如荼地将各种不同 系列嵌入式处理器的移植工作不断展开和深入 以支持更多的嵌入式操作系统的装载 与引导 U Boot 的源码目录 编译形式与 Linux 内核很相似 事实上 不少 U Boot 源码就 是相应的 Linux 内核源程序的简化 尤其是一些设备的驱动程序 这从 U Boot 源码的 注释中就能体现这一点 但是 U Boot 不仅仅支持嵌入式 Linux 系统的引导 当前 它 桂林电子科技大学毕业设计 论文 报告用纸 第 16 页 共 57 页 16 还支持 NetBSD VxWorks QNX RTEMS ARTOS LynxOS 等嵌入式操作系统 其目前 要支持的目标操作系统是 OpenBSD NetBSD FreeBSD 4 4BSD Linux SVR4 Esix Solaris Irix SCO Dell NCR VxWorks LynxOS pSOS QNX RTEMS ARTOS 等 这是 U Boot 中 Universal 的一层含义 另外一层含义则是 U Boot 除了支持 PowerPC 系列的 处理器外 还能支持 MIPS x86 ARM NIOS XScale 等诸多常用系列的处理器 这两个特点正是 U Boot 项目的开发目标 即支持尽可能多的嵌入式处理器和嵌入式操 作系统 就目前来看 U Boot 对 PowerPC 系列处理器支持最为丰富 对 Linux 的支持 最完善 其主要特点有 开放源码 支持多种嵌入式操作系统内核 如 Linux NetBSD VxWorks QNX RTEMS ARTOS LynxOS 支持多个处理器系列 如 PowerPC ARM x86 MIPS XScale 较高的可靠性和稳定性 高度灵活的功能设置 适合 U Boot 调试 操作系统不同引导要求 产品发布等 丰富的设备驱动源码 如串口 以太网 SDRAM FLASH LCD NVRAM EEPROM RTC 键盘等 较为丰富的开发调试文档与强大的网络技术支持 u boot 源代码的目录结构 目 录特 性解释说明 board平台依赖存放开发板相关的目录文件 cpu平台依赖存放 CPU 相关的目录文件 如 mpc8xx arm720t arm920t i386 等 lib xxx平台依赖Xxx 表示某种体系结构 如 lib arm 存放对 ARM 体系 结构通用的文件 lib ppc 存放对 PowerPC 体系结构通 用的文件等 这类目录共有 12 个 include通用头文件和开发板配置文件 common通用通用的多功能函数实现 lib generic通用通用的库函数实现 net通用存放网络程序 fs通用存放文件系统程序 disk通用硬盘接口程序 桂林电子科技大学毕业设计 论文 报告用纸 第 17 页 共 57 页 17 drivers通用通用的设备驱动程序 如串口 RTC USB 等 post通用存放上电自检程序 examples应用例程一些独立运行的应用程序的例子 如 helloworld tools工具存放一些制作映像的工具 如 mkimage doc文档开发使用文档 U Boot 的源代码包含对几十种处理器 几百种开发板的支持 对于特定的开发板 配置编译只需要改动其中平台依赖的部分程序即可 3 1 1 LPC2468OEM Board 中几个重要的文件 cpu arm720t start S 在 flash 中执行的引导代码 负责初始化硬件环境 把 U Boot 从 flash 加载到 RAM 中去 然后跳到 lib arm board c 中的 start armboot 中去执行 lib arm board c U Boot 的初始化流程 尤其是 U Boot 用到的全局数据结构 gd bd 的初始化 以及设备和控制台的初始化 board LPC2468OEM Board lowlevelsys init c nand c eth c 等 在 board 目录下 的代码都是严重依赖于目标板的 对于不同的 CPU SOC ARCH 来说 U Boot 都可 以有相对通用的代码 但是板子的构成却是非常多样的 主要的差别是内存地址 flash 型号 外围芯片如网络等等 以上几个文件分别用于 LPC2468OEM Board 板的低 级初始化 nand flash 驱动 网络驱动等 如果要给开发板修改驱动程序或添加新的设 备驱动程序 即添加在此处 include configs LPC2468OEM Board h 这个头文件中主要定义了两类变量 一 类是选项 前缀是 CONFIG 用来选择处理器 设备接口 命令 属性等 主要用来 决定是否编译某些文件或者函数 另一类是参数 前缀是 CFG 用来定义总线频率 串口波特率 Flash 地址等参数 这些常数参量主要用来支持通用目录中的代码 定义 板子资源参数 这两类宏定义对 U Boot 的移植性非常关键 开发板上的相关硬件设备的启用与否 是 通过编译条件判断 ifdef 或 ifndef 来选择配置编译的 U Boot 的命令也要通过这个配 置头文件来进行配置 比如要添加 ping 命令 就必须添加 CFG CMD NET 和 CFG CMD PING 不然 common cmd net c 就不会被编译了 board LPC2468OEM Board config mk 和 board LPC2468OEM Board u boot lds 这两个文件跟 U Boot 的内存分配有关 config mk 中的 TEXT BASE 项定 义了 U Boot 的起始地址 u boot lds 是编译的链接脚本文件 定义了链接生成 U Boot 桂林电子科技大学毕业设计 论文 报告用纸 第 18 页 共 57 页 18 映像时各程序段的起始地址 内存分配 对齐方式等 board LPC2468OEM Board Makefile 板级的编译配置文件 使用该文件可以配置 board 目录中的哪些文件被编译进映像中 3 1 2 U Boot 的启动流程 对于 LPC2468 平台来说 U Boot 启动流程主要是在两个文件中 cpu arm720t start S 和 lib arm board c start S 是 U Boot 的引导代码 相当于常说的 bootloader 中的 stage1 负责初始化硬件 环境 把 u boot 加载到 RAM 中去 然后跳到相关入口中去执行 start S 完成的主要工作有 定义程序入口 一个可执行的 Image 必须有一个并且只能有一个唯一的全局入口点 通常这个入 口放在 Rom flash 的 0 x0 地址 start S 中是依靠一个 globl start 标号来定义的 设置异常向量 Exception Vector 异常向量表 也可称为中断向量表 必须是从地址 0 开始连续的存放 如 ARM 体 系结构中包括复位 reset 未定义处理 undef 软件中断 SWI 预取指令错误 Pabort 数据错误 Dabort 保留 以及 IRQ FIQ 等异常模式 初始化硬件环境 代码中依次顺序为 进入 SVC 模式 擦除 I D Cache 关闭 MMU 部件 关闭中断 设置 PLL phase lock loop 时钟和存储器 相关代码见源代码中的 cpu init crit 过程 内存重定位 转到 C 语言函数入口执行 board c 里的 start armboot 函数是 U Boot 执行的第一个 C 语言函数 完成系统 初始化工作 进入主循环 处理用户输入的命令 这里只简要列出其主要执行的函数 流程 void start armboot void 给全局数据变量 gd 安排空间 gd gd t armboot start CFG MALLOC LEN sizeof gd t memset void gd 0 sizeof gd t 给开发板数据变量 gd bd 安排空间 gd bd bd t char gd sizeof bd t memset gd bd 0 sizeof bd t 桂林电子科技大学毕业设计 论文 报告用纸 第 19 页 共 57 页 19 monitor flash len bss start armboot start 取 u boot 的长度 顺序执行 init sequence 数组中的初始化函数 for init fnc ptr init sequence init fnc ptr init fnc ptr if init fnc ptr 0 hang 配置可用的 Flash size flash init 初始化堆空间 mem malloc init armboot start CFG MALLOC LEN 重新定位环境变量 env relocate 从环境变量中获取 IP 地址和以太网接口 MAC 地址 gd bd bi ip addr getenv IPaddr ipaddr 设备初始化 devices init 跳转表初始化 jumptable init 完整地初始化控制台设备 console init r 使能中断处理 enable interrupts 通过环境变量初始化 if s getenv loadaddr NULL load addr simple strtoul s NULL 16 main loop 循环不断执行 for main loop 主循环函数处理执行用户命令 common main c 桂林电子科技大学毕业设计 论文 报告用纸 第 20 页 共 57 页 20 3 2 U Boot 的配置和编译 U Boot 工程的可配置性和移植性可以分为两层 一是由目录顶层的 Makefile 来实 现 配置工程要包含的文件和文件夹 用什么编译器等等 二是由目标板的配置头文 件来实现源码级的可配置性 通用性 主要使用的是 ifdef else endif 之类来实现的 U Boot 的源码是通过 GCC 和 Makefile 来组织编译的 运行 make 命令以后 所有子目 录的编译连接都由顶层目录的 Makefile 文件来确定 首先由顶层目录下的 Makefile 设 置开发板定义 然后递归的调用各级子目录下的 Makefile 最后把编译过的程序链接 成 U Boot 映像 在执行 make 之前 先要执行 make board config 对工程进行配置 以确定特定 于目标板的各个子目录和头文件 board config 是 Makefile 中的一个伪目标 它传入指定的 CPU ARCH BOARD SOC 参数去执行 mkconfig 脚本 这个脚本的主要功能在于连 接目标板平台相关的头文件夹 生成 config h 文件包含板子的配置头文件 使得 Makefile 能根据目标板的这些参数去编译正确的平台相关的子目录 执行 make LPC2468OEM Board config 即可完成目标板的配置 并写入顶层 Makefile 中 Makefile 文件中的相关代码为 LPC2468OEM Board config unconfig MKCONFIG config arm arm720t LPC2468OEM Board NULL lpc2468 顶层的 Makefile 还要定义交叉编译器 U Boot 所依赖的目标文件 映像编译的依 赖关系等 缺省的编译目标为 all 包括 u boot U Boot 映像的 ELF 格式 u boot bin U Boot 映像的原始二进制格式 u boot srec U Boot 映像的 S Record 格式 System map U Boot 映像的符号表 一共四个文件 U Boot 通过 ld 命令按照 System map 地址表把目标文件组装成 u boot u boot bin 和 u boot srec 依赖于 u boot 3 种映像格式都可以烧写到 Flash 中 但需要看加载器能否识别这些格式 一般 u boot bin 最为常用 直接按照二进制格式下载 并且按照绝对地址烧写到 Flash 中就 可以了 u boot 和 u boot srec 都自带地址定位信息 桂林电子科技大学毕业设计 论文 报告用纸 第 21 页 共 57 页 21 3 3 U Boot 的移植 U Boot 能够支持多种体系结构的处理器 而且它能够支持的开发板也已经越来越 多 由于 Bootloader 程序是完全依赖于底层硬件平台的 所以在一块新电路板上使用 U Boot 程序时 需要做一定的移植工作 开始移植 U Boot 之前 先要熟悉硬件电路板和处理器 确认 U Boot 是否已经支 持新电路板的处理器和 I O 设备 假如 U Boot 已经支持一块非常相似的电路板 那么 移植的过程将会非常简单 移植 U Boot 工作主要是 添加开发板硬件相关的文件 配置选项 然后配置编译 开始移植之前 需要先分析一下 U Boot 已经支持的开发板 比较出硬件配置最接近的 开发板 选择的原则是 首先处理器相同 其次处理器体系结构相同 然后是以太网 接口等外围接口 还要验证一下这个参考开发板的 U Boot 至少能够配置编译通过 我们是用 EA 公司提供的 uboot 1 1 6 源码进行移植 主要的工作包括 norflash 驱动 nandflsh 驱动 网卡驱动的移植以及一些相关文件的修改 piaozhiye localhost tar xzvf u boot 1 1 6 tar gz piaozhiye localhost cd u boot 1 1 6 piaozhiye localhost u boot 1 1 6 make LPC2468OEM Board config piaozhiye localhost u boot 1 1 6 make 将 u boot 1 1 6 common cmd bootm c 167 行注释掉否则会出现以下错误 它只 是打印一些信息 无关紧要 printf cache x x x r n ADDRESS PAGE 0 CACHE PAGE CTRL CACHE SETTINGS cmd bootm c In function do bootm cmd bootm c 167 error ADDRESS PAGE 0 undeclared first use in this function cmd bootm c 167 error Each undeclared identifier is reported only once cmd bootm c 167 error for each function it appears in cmd bootm c 167 error CACHE PAGE CTRL undeclared first use in this function cmd bootm c 167 error CACHE SETTINGS undeclared first use in this function make 1 cmd bootm o 错误 1 将 u boot 1 1 6 lib arm board c 397 和 398 行注释掉 USB 相关的 我们没有 用到 USB 将其注释掉 usbhw init usbstatus check home piaozhiye u boot 1 1 6 lib arm board c 397 undefined reference to usbhw init 桂林电子科技大学毕业设计 论文 报告用纸 第 22 页 共 57 页 22 home piaozhiye u boot 1 1 6 lib arm board c 398 undefined reference to usbstatus check 到此即可编译通过 uboot 也可以在串口打印出启动信息 3 4 U Boot Nor flash 驱动的移植 Nor flash 在 uboot 中的配置信息 FLASH and environment organization define CFG MAX FLASH BANKS2 max number of memory banks define CFG MAX FLASH SECT35 max number of sectors on one chip timeout values are in ticks define CFG FLASH ERASE TOUT 2 CFG HZ Timeout for Flash Erase define CFG FLASH WRITE TOUT 2 CFG HZ Timeout for Flash Write 原来代码中是 SST39VF3201 现在板

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论