




已阅读5页,还剩60页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
湖湖 南南 科科 技技 大大 学学 毕毕 业业 设设 计 计 论论 文文 题目题目嵌入式汽车定位系统开发研究嵌入式汽车定位系统开发研究 作者作者 学院学院 专业专业 学号学号 指导教师指导教师 湖南科技大学本科生毕业设计 论文 I 摘摘 要要 Linux 操作系统作为自由软件的代表 性能优良 是 PC 服务器和嵌入式系统应用 最广泛的操作系统 近年来 显现了巨大的市场价值和广阔的应用前景 而本文主要 讲述的是在汽车行驶记录仪方面的应用 本文的工作主要集中在以下方面 首先 进行了移植环境的设计与搭建 安装和配 置了交叉编译器 其次 设计并实现了系统的 bootloader 主要内容是将基于 S3C2410 处理器的 U BOOT 移植到移植到 ARM9 2440EP 硬件环境下 最后 将 Linux 内核进 行编译与移植 全文详细论述了嵌入式 Linux 移植的流程 给出了搭建嵌入式开发环境 基于硬 件平台 ARM920T 的 bootloader Linux 内核的移植及根文件系统的实现方案 为整个系 统的后续开发打下坚实的基础 关键字 关键字 linux federal10 系统 uboot 移植 内核移植 湖南科技大学本科生毕业设计 论文 II ABSTRACT Linux operating system as the representative of free software excellent performance is a PC server and embedded systems the most widely used operating system in recent years revealing a huge market value and broad application prospects This article is about the vehicle location system in the application Transplantation in the Linux system the first transplant carried out the design and build environment installation and configuration of the cross compiler Secondly a design and implementation of the system bootloader main contents including transplantation of open source software U BOOT since the processor S3C2410 in the U BOOT only SMDK2410 board of standards support in use must be transplanted toARM9 2440EP hardware environment and finally in the following steps to achieve the whole process This is a linux system using the terminal command modified by gcc cross compiler and generates a target need uboot kernel logo and file system image file required and the windows XP system to download and byDNW and Super Terminal will be programmed into the target image file TQ2440 download mode restart the development board NANDFlash mode until you see the system interface you can begin to enter the development stage Embedded Linux text discusses in detail the process of transplantation is given to build the embedded development environment hardware platform based on ARM920T s bootloader Linux kernel and root file system migration implementations Keywords linux federal10 system uboot transplantation kernel porting 湖南科技大学本科生毕业设计 论文 i 目目 录录 第一章第一章 绪绪 论论 1 1 1 嵌入式系统的概述 1 1 1 1 嵌入式系统的组成 2 1 1 2 嵌入式系统的特点 3 1 1 3 嵌入式系统的开发 4 1 2 嵌入式系统的车载定位系统应用 5 1 3 智能导航系统功能框图 6 第二章第二章 基于基于 ARM9 微处理器的硬件和软件总体设计概述微处理器的硬件和软件总体设计概述 9 2 1 导航终端系统硬件设计 9 2 1 1 导航用户终端系统硬件设计框图 12 2 1 2 基于 ARM9 的嵌入式车载导航开发板底板电路原理图 13 2 1 3 ARM920T 开发板核心原理图 13 2 2 导航终端系统驱动程序的组成框图 12 2 3 开发环境的设计与创建 15 2 3 1 主机系统的硬件配置及操作系统 24 2 3 2 搭建开发和移植环境 15 2 3 3 目标系统 18 第三章第三章 BOOTLOADER 设计与实现设计与实现 19 3 1 BOOTLOADER原理与作用 19 3 2 U BOOT的设计与实现 20 3 2 1 简介 U BOOT 21 3 2 2 U BOOT for S3C2440 模块结构分析 21 3 2 3 U BOOT 执行流程 21 3 2 4 面向目标板的 U BOOT 代码修改和移植 21 3 3 U BOOT 烧录和运行 24 第四章第四章 LINUX 内核移植与烧写内核移植与烧写 26 4 1 LINUX内核结构与启动流程图 26 4 2U BOOT引导内核代码的启动过程 28 4 3 内核的烧写过程 28 第五章第五章 LINUX 根文件系统移植与烧写根文件系统移植与烧写 26 湖南科技大学本科生毕业设计 论文 ii 5 1 Linux 文件系统基本概念 29 5 2 嵌入式 Linux 根文样系统内容设计与实现 31 5 3U BOOT 对YAFF YAFF2 文件系统下载的支持 35 5 4Linux 根文件系统和 logo 的烧录过程 35 第六章第六章 结束语结束语 38 参参 考考 文文 献献 39 致致 谢谢 40 湖南科技大学本科生毕业设计 论文 1 第第 1 章章 绪论 绪论 嵌入式系统是热门的 IT 应用领域之一 嵌入式系统用在一些特定专用设备上 通 常这些设备的硬件资源 如处理器 存储器等 非常有限 并且对成本很敏感 有时 对实时响应要求很高等 特别是随着消费家电的智能化 嵌入式更显重要 像我们平 常常见到的手机 PDA 电子字典 网络等应用的功能也进行了优化 1 1 嵌入式系统概述嵌入式系统概述 1 1 1 嵌入式系统的组成嵌入式系统的组成 嵌入式系统一般可以分成四个部分 嵌入式处理器 嵌入式外围设备 嵌入式操作 系统和嵌入式应用软件 如图 1 1 所示 图 1 1 嵌入式系统的组成 1 嵌入式处理器 嵌入式系统的核心部件是各种类型的嵌入式处理器 嵌入式处理器具有面向用户 面向产品 面向应用的特点 因此 嵌入式处理器与通用处理器最大的区别在于 嵌 入式 CPU 大多工作在为特定用户群所专门设计的系统中 针对不同应用和不同半导体工艺 目前各类嵌入式处理器的变种计有 1000 余种 大致可分为 嵌入式微处理器 ARM PowerPC 68000 MIPS 386EX 嵌入式微控制器 8051 MC68HC05 MC68HC11 68300 等 嵌入式 DSP 处理器 TMS320 系列 DSP56000 系列 嵌入式 SOC 片上系统 OMAP M Core 目前嵌入式处理器有向高度集成的嵌入式片上系统 System On Chip SOC 发展的 趋势 2 嵌入式外围设备 在嵌入系统硬件系统中 除了嵌入式处理器以外 用于完成存储 通信 调试 湖南科技大学本科生毕业设计 论文 2 显示等辅助功能的其他部件 事实上都可以算作嵌入式外围设备 目前常用的嵌入式 外围设备按功能可以分为存储设备 通信设备和显示设备三类 目前存在的绝大多数通信设备都可以直接在嵌入式系统中应用 包括 RS 232 接 口 串行通信接口 USB 通用串行总线接口 Ethernet 以太网接口 工 IC 现场总线 等 等 存储设备主要用于各类数据的存储 分易失型存储和非易失型存储器两种 同步 动态存储器 Synchronous DRAM 和 FLASH 是两者的代表 FLASH 凭借其可擦写次数 多 存储速度快 存储容量大 价格便宜等优点 在嵌入式领域内得到了广泛应用 目前存在的绝大多数通信设备都可以直接在嵌入式系统中应用 包括 RS 232 接 口 串行通信接口 USB 通用串行总线接口 Ethernet 以太网接口 工 IC 现场总线 等 等 由于嵌入式应用场合的特殊性 通常使用的是液晶显示器 LCD 和触摸板 Touch Panel 等外围显示设备 也有很多嵌入式系统没有显示设备 3 嵌入式操作系统 嵌入式操作系统是专门负责管理存储器分配 中断处理 任务调度等功能的软件 模块 是用来支持嵌入式应用的系统软件 是嵌入式系统极为重要的组成部分 通常 包括与硬件相关的底层驱动程序 系统内核 设备驱动接口 通信协议 图形用户界 面 GUI 等 从 20 世纪 80 年代开始 市场上出现各种各样的商用嵌入式操作系统 这些操作 系统大部分都是为专用系统开发的 现在逐步演化成了多种形式的商用嵌入式操作系 统百家争鸣的局面 这些操作系统有 VxWorks Neculeus pSOS QNX Linux 和 WindowsCE 等 1 1 2 嵌入式系统的特点嵌入式系统的特点 根据前面对嵌入式系统的描述可以看出嵌入式系统的几个重要特征 1 嵌入式系统通常是面向特定应用的 嵌入式 CPU 与通用型的 CPU 最大不同就 是嵌入式 CPU 大多工作在为特定用户群设计的系统中 它通常都具有低功耗 体积小 集成度高等特点 能够把通用 CPU 中许多由板卡完成的任务集成在芯片内部 从而有 利于嵌入式系统设计趋子小型化 移动能力大大增强 跟网络的祸合也越来越紧密 2 嵌入式系统是将先进的计算机技术 半导体技术和电子技术与各个行业的具体 应用相结合后的产物 这一点就决定了官必然是一个技术密集 资金密集 高度分散 不断创新的知识集成系统 3 嵌入式系统的硬件和软件都必须高效率地设计 量体裁衣 去除冗余 力争在 同样的硅片面积上实现更高的性能 这样才能在具体应用中对处理器的选择更具有竞 争力 嵌入式系统和具体应用有机地结合在一起 它的升级换代也是和具体产品同步 进行 因此嵌入式系统产品一旦进入市场 具有较长的生命周期 为了提高执行速度 湖南科技大学本科生毕业设计 论文 3 和系统可靠性 嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中 而不 是存贮于磁盘等载体中 4 嵌入式系统本身不具备自举开发能力 即使设计完成以后用户通常也是不能对 其中的程序功能进行修改的 必须有一套开发工具和环境才能进行开发 1 1 3 嵌入式系统的开发嵌入式系统的开发 由于嵌入式系统是一种根据特定用途所专门开发的系统 它只完成预期要完成的 功能 所以其开发过程和开发环境同传统的软件开发相比有着显著的不同 1 开发流程 在嵌入式系统的应用开发中 整个系统的开发过程如图 1 2 所示 嵌入式系统发 展到今天 对应于各种微处理器的硬件平台一般都是通用的 固定的 成熟的 这就 大大减少了由硬件系统引入错误的机会 此外 由于嵌入式操作系统屏蔽了底层硬件 的复杂性 使得开发者通过操作系统提供的 API 函数就可以完成大部分工作 因此大 大简化了开发过程 提高了系统的稳定性 嵌入式系统的开发者现在已经从反复进行 硬件平台设计的过程中解脱出来 从而可以将主要精力放在满足特定的需求上 图 1 2 嵌入式系统的开发流程 2 开发环境 采用交叉开发环境 Cross Development Environment 是嵌入式应用软件开发时的一 个显著特点 首先在通用计算机上编写程序 然后通过交叉编译生成目标平台上可以 运行的二进制代码格式 最后再下载到目标平台上的特定位置运行 交叉开发环境是 指编译 链接和调试嵌入式应用软件的环境 它与运行嵌入式应用软件的环境有所不 同 通常采用宿主机 目标机模式 如图 1 3 所示 湖南科技大学本科生毕业设计 论文 4 图 1 3 交叉开发模式 宿主机是一台通用计算机 如 PC 机或者工作站 它通过串口或者以太网接口与目 标机通信 宿主机的软硬件资源比较丰富 不但包括功能强大的操作系统 如 Linux 而且还有各种各样优秀的开发工具 如 WindRiver 的 Tornado GNU 的开源软件 GDB 等 能够大大提高嵌入式应用软件的开发速度和效率 目标机一般在驱动开发和应用软件 开发期间使用 它可以是嵌入式应用软件的实际运行环境 也可以是能够替代实际运 行环境的仿真系统 但软硬件资源通常都比较有限 嵌入式系统的交叉开发环境一般 包括交叉编译器 交叉调试器和系统仿真器 其中交叉编译器用于在宿主机上生成能 在目标机上运行的代码 而交叉调试器和系统仿真器则用于在宿主机与目标机间完成 嵌入式软件的调试 在采用宿主机 目标机模式开发嵌入式应用软件时 首先利用宿主 机上丰富的资源和良好的开发环境开发和仿真调试目标机上的软件 然后通过串口或 者网络将交叉编译生成的目标代码下载到目标机的存储单元上 并在监控程序或者操 作系统的支持下利用交叉调试器进行分析和调试 最后目标机在特定环境下脱离宿主 机运行 目前常用的交叉开发环境主要有开放和商业两种类型 开放的交叉开发环境的典 型代表是 GNU 工具链 目前己经能够支持 x86 ARM MIPS PowerPC 等多种处理器 商业的交叉开发环境则主要有 Metrowerks CodeWarrior ARM Software Development Toolkit Windver Tornado 等等 1 2 嵌入式系统在车载定位系统中的应用嵌入式系统在车载定位系统中的应用 全球定位系统 GPS 是本世纪70年代由美国陆海空三军联合研制的新一代空间卫星 导航定位系统 其主要目的是为陆 海 空三大领域提供实时 全天候和全球性的导 航服务 并用于情报收集 核爆监测和应急通讯等一些军事目的 是美国独霸全球战 略的重要组成 经过20余年的研究实验 耗资300亿美元 到1994年3月 全球覆盖率 高达98 的24颗 GPS 卫星星座己布设完成 GPS 监控 以上海市连图信息科技 GPS 车 载终端设备为例 是结合了 GPS 技术 无线通信技术 GSM GPRS CDMA 图像处理 技术及 GIS 技术 用于对移动的人 宠物 车及设备进行远程实时监控的一门技术 全球定位系统在车辆管理上的应用 被称作车辆定位系统 GPS 车辆管理系 统功能简单描述 1 实时监控 GPS 车辆管理系统应用了移动 GPRS 为监控数据的载体 真正 湖南科技大学本科生毕业设计 论文 5 的实现了对车辆的全天候实时监控 速度 方向等 监控频率可达到1秒级 2 行驶信息管理 系统可对车辆以往的行驶数据信息进行下载 回放 保存 等 3 车辆超速报警 管理员可单独或是设定全部车辆的行驶上下限速度 当车 辆行驶速度超过该限制时 系统即会提示车辆超速报警 并伴有声音和窗口弹出窗口 提示 4 自建图层 管理员可以通过文字和图象在地图上自行标注公司的以及工地的 方位 也可以自行构建道路上没有的路线 更好的完善地图来管理车辆 5 文字调度管理 管理可通过文字方式向某一辆车或是某一群车辆发送文字调 度信息 发送的信息将保存下来 以供日后查证 6 超速报警统计 通过系统提供的行驶数据保存功能 在事后可将某车的在某 天某日某一段时间的行车数据进行回放 并可生成报表供打应 该功能可作考核用 7 行车线路跟踪 可对单独一辆或是全部车辆进行实时记录行驶路线功能 当 车辆驶过后就会在地图上划出一条黑线 管理员可直观的看到车辆的行驶路线情况 8 区域报警功能 可以设定禁区 当车进入禁区监控处发出警报提醒 定制行 驶路线 当驾驶员驶离预定的驾驶路线发出报警 9 里程油耗统计 通过系统提供的行驶数据保存功能 可将某车的在某天某日 某一段时间的行车公里数及所耗油量 可生成报表供打印 该功能可作参考 1 3智能导航系统功能框图智能导航系统功能框图 湖南科技大学本科生毕业设计 论文 6 目标板 ARM9 3G 模块 GPS 模块 Uboot 移 植 Kernel 移 植 应用程 序 P C 卫星 监 控 中 心 图1 4 系统功能图 第第 2 章章基于基于 ARM9 微处理器的硬件和软件设计概述微处理器的硬件和软件设计概述 2 1 导航终端系统硬件设计导航终端系统硬件设计 2 1 1 导航用户终端系统硬件设计图导航用户终端系统硬件设计图 用户终端主要是实现了提供给监控中心的各种数据 包括地理位置 速度 耗油量 等等 因此其包括了以下的几个模块 图 2 1 用户终端图 2 1 2 基于基于 ARM9 的嵌入式车载导航开发板底板电路原理图的嵌入式车载导航开发板底板电路原理图 湖南科技大学本科生毕业设计 论文 7 图 2 2 2 1 3 ARM920T 开发板核心板电路原理图开发板核心板电路原理图 湖南科技大学本科生毕业设计 论文 8 图 2 3 2 2 导航系统驱动程序的组成框图导航系统驱动程序的组成框图 以下是运行目标板所需要的驱动程序 在此次试验中 使用的 TQ2440 开发班层 也是由一下图示组成 GPS 驱动程序 3G 驱动程序 文件系统 logo 内核程序 湖南科技大学本科生毕业设计 论文 9 图 2 4 2 3 开发环境的设计与创建开发环境的设计与创建 2 3 1 主机系统的硬件配置和操作系统主机系统的硬件配置和操作系统 CPU Intel 奔腾双核 双线程 内存容量 2GB 硬盘容量 320GB 显存容量 513MB 操作系统 Windows Federal10 2 3 2 搭建开发和移植环境搭建开发和移植环境 1 开发环境配置如下 开发环境配置如下 1 本次设计开发环境 linux federal 10 系统 2 所用的代码是使用 smdk2410 代码修改成 u boot 3 所用的编译和烧写工具 GNU gcc DNW 2 移植环境移植环境 1 主 机 Fedora 10 windows XP 2 开发板 Mini2440 64MB Nand Kernel 2 6 30 4 3 编译器 arm linux gcc 4 3 2 tgz 4 u boot u boot 2009 08 tar bz2 2 3 3 目标系统目标系统 本次实验使用的是 ARM920T 开发板其完型后如下图 bootloader 湖南科技大学本科生毕业设计 论文 10 图 2 5 第三章 第三章 BOOTLOADER 设计与实现设计与实现 湖南科技大学本科生毕业设计 论文 11 3 1 Bootloader 原理与作用原理与作用 1 Bootloader 原理 原理 一般 bootloader 开发分两种模式 启动加载模式和下载模式 启动加载模式只是负责加载系统信息 而下载模式则可以从指定的地方下载系统信息 这样比较有利于系统升级 bootloader 的实现依赖于 CPU 的体系结构 因此大多数 bootloader 的开发都分为 stage1 和 stage2 两个阶段 依赖体系结构的代码都放在 stage1 用汇编实现 而 stage2 通常用 C 来实现 bootloader 的 stage1 通常包括以下步骤 1 硬件设备初始化 其中包括屏蔽所有中断 设置 CPU 的速度和时钟频率 RAM 初始化 初始化 IED 关闭 CPU 内部指令 数据 cache 2 为加载 bootloader 的 stage2 准备 RAM 空间 空间可以任意安排 其中 RamEnd 1MB 是一种很值得推荐的方法 RamEnd 1MB 指末尾的 1M 空间 而且必须 进行范围测试 这里推荐一个叫做 test mempage 的内存检测算法 测试每个 memory page 开始两个字是否是可读写的 3 拷贝 bootloader 的 stage2 到 RAM 空间 这里只要注意地址范围就可以了 4 设置好堆栈 通常可以把 sp 的值设置为 stage2 end 栈向低地址空间发展 5 跳转到 stage2 的 C 入口点 stage2 的代码通常用 C 来实现 第二阶段 stage2 通常步骤 1 初始化本阶段要使用的硬件设备 至少一个串口 以便向终端用户进行 I O 输 出信息 初始化计时器等 2 检测系统内存映像 即整个空间中有哪些 RAM 单元 3 将 kernel 影响和根文件系统映像从 flash 上读到 RAM 空间 主要考虑基地址和 映像的大小两个方面 对于内核映像 一般将其拷贝到从 MEM START 0 x8000 这个 基地址开始的大约 1MB 大小的内存范围内 这里要把从 MEM START 到 MEM START 0 x8000 这段 32kb 大小的内存空出来是因为要放置 linux 内存中的一些 全局数据结构 如 启动参数和内核页表等信息 而对于跟文件系统映像 则一般将 其拷贝到从 MEM START 0 x00100000 开始的地方 4 为内核设置启动参数 linux 2 4 x 以后的内核都期望以标记列表的形式来传递启 动参数 每个标记由标识被传递参数的 tag header 结构以及随后的参数值数据结构来 组成 在 include ams setup h 中定义 包括 ATAG CORE ATAG MEM ATAG CMDLINE ATAG RAMDISK ATAG INITRD 湖南科技大学本科生毕业设计 论文 12 2 bootloader 的作用 的作用 BootLoader 就是在操作系统内核运行之前运行的一段小 程序 通过这段小程序 我们可以初始化硬件设备 建立内存空间映射图 从而将系 统的软硬件环境带到一个合适状态 以便为最终调用操作系统内核准备好正确的环境 在嵌入式系统中 通常并没有像 BIOS 那样的固件程序 注 有的嵌入式 CPU 也会内 嵌一段短小的启动程序 因此整个系统的加载启动任务就完全由 BootLoader 来完成 比如在一个基于 ARM7TDMI core 的嵌入式系统中 系统在上电或复位时通常都从地 址 0 x00000000 处开始执行 而在这个地址处安排的通常就是系统的 BootLoader 程序 3 2U BOOT 的设计与实现的设计与实现 U Boot 全称 Universal Boot Loader 是遵循 GPL 条款的开放源码项目 从 FADSROM 8xxROM PPCBOOT 逐步发展演化而来 其源码目录 编译形式与 Linux 内核很相似 事实上 不少 U Boot 源码就是相应的 Linux 内核源程序的简化 尤其是一些设备的驱动程序 这从 U Boot 源码的注释中能体现这一点 图 1 U Boot 存储器映射 3 1 1 U Boot 简介简介 U Boot 不仅仅支持嵌入式 Linux 系统的引导 当前 它还支持 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 的支持最完善 其它系列的处理器和 操作系统基本是在 2002 年 11 月 PPCBOOT 改名为 U Boot 后逐步扩充的 从 PPCBOOT 向 U Boot 的顺利过渡 很大程度上归功于 U Boot 的维护人德国 DENX 软 湖南科技大学本科生毕业设计 论文 13 件工程中心 Wolfgang Denk 以下简称 W D 本人精湛专业水平和持着不懈的努力 当前 U Boot 项目正在他的领军之下 众多有志于开放源码 BOOT LOADER 移植工作的嵌入 式开发人员正如火如荼地将各个不同系列嵌入式处理器的移植工作不断展开和深入 以支持更多的嵌入式操作系统的装载与引导 选择 U Boot 的理由 开放源码 支持多种嵌入式操作系统内核 如 Linux NetBSD VxWorks QNX RTEMS ARTOS LynxOS 支持多个处理器系列 如 PowerPC ARM x86 MIPS XScale 较高的可靠性和稳定性 高度灵活的功能设置 适合 U Boot 调试 操作系统不同引导要求 产品发布 等 丰富的设备驱动源码 如串口 以太网 SDRAM FLASH LCD NVRAM EEPROM RTC 键盘等 较为丰富的开发调试文档与强大的网络技术支持 1 主要功能 U Boot 可支持的主要功能列表 系统引导 支持 NFS 挂载 RAMDISK 压缩或非压缩 形式的根文件系统 支持 NFS 挂载 从 FLASH 中引导压缩或非压缩系统内核 基本辅助功能 强 大的操作系统接口功能 可灵活设置 传递多个关键参数给操作系统 适合系统在不 同开发阶段的调试要求与产品发布 尤对 Linux 支持最为强劲 支持目标板环境参数多种存储方式 如 FLASH NVRAM EEPROM CRC32 校验 可校验 FLASH 中内核 RAMDISK 镜像文件是否完好 设备驱动 串口 SDRAM FLASH 以太网 LCD NVRAM EEPROM 键 盘 USB PCMCIA PCI RTC 等驱动支持 上电自检功能 SDRAM FLASH 大小自动检测 SDRAM 故障检测 CPU 型号 特殊功能 XIP 内核引导 3 2 2uboot for s3c2440 的的模模块块结结构构分分析析 此次使用的 uboot 为 u boot 2009 08 其中包括的主要目录及说明如下图 湖南科技大学本科生毕业设计 论文 14 3 2 3U BOOT 执行流程执行流程 u boot 的 stage1 代码通常放在 cpu xxxx start S 文件中 他用汇编语言写成 u boot 的 stage2 代码通常放在 lib xxxx board c 文件中 他用 C 语言写成 各个部分的流程图如下 湖南科技大学本科生毕业设计 论文 15 3 2 4U BOOT 面向目标板的代码修改面向目标板的代码修改 1 Uboot 代码修改前提 搭建了一个 my2440 开发板 u boot 的框架 要使其功能实现 1 因 2440 和 2410 的资源差不多 主频和外设有点差别 所以我们就在 board samsung 下建立自己开发板的项目 取名叫 my2440 2 因 2440 和 2410 的资源差不多 所以就以 2410 项目的代码作为模板 以后再修 改 将 2410 下所有的代码复制到 2440 下 进入 my2440 目录 将 my2440 下的 smdk2410 c 改名为 my2440 c 修改 Makefile 文件 命令如下 gedit board samsung my2440 Makefile COBJS my2440 o flash o 回到 u boot 根目录 建立 2440 头文件 3 修改 u boot 跟目录下的 Makefile 文件 查找到 smdk2410 config 的地方 在他 下面按照 smdk2410 config 的格式建立 my2440 config 的编译选项 另外还要指定交叉 编译器为 arm linux gcc 并配置 2440 编译选项的格式 4 测试编译新建的 my2440 开发板项目 如果出现 Configuring for my2440 board 则表示设置正确 编译后在根目录下会出现 u boot bin 文件 则 u boot 移植的第一步就 算完成了 2 my2440 开发板 u boot 的 stage1 入口点分析 一般在嵌入式系统软件开发中 在所有源码文件编译完成之后 链接器要读取一 个链接分配文件 在该文件中定义了程序的入口点 代码段 数据段等分配情况等 那么我们的 my2440 开发板 u boot 的这个链接文件就 cpu arm920t u boot lds 打开该文 件部分代码 可以看到定义生成文件的目标平台是 arm 定义程序的人口点是 start 知道了程序的入口点是 start 那么我们就打开 my2440 开发板 u boot 第一个要运行的 程序 cpu arm920t start S 即 u boot 的 stage1 部分 查找到 start 的位置 从汇编代码可以看到程序又跳转到 start code 处开始执行 那么再查找到 start code 处的代码 可知 start code 处才是 u boot 启动代码的真正开始处 以上就是 u boot 的 stage1 入口的过程 3 my2440 开发板 u boot 的 stage1 阶段的硬件设备初始化 由于在 u boot 启动代码处有两行是 AT91RM9200DK 的 LED 初始代码 但我们 湖南科技大学本科生毕业设计 论文 16 my2440 上的 LED 资源与该开发板的不一致 所以我们要删除或屏蔽该处代码 再加 上 my2440 的 LED 驱动代码 代码如下 if defined CONFIG S3C2440 define GPBCON 0 x56000010 define GPBDAT 0 x56000014 define GPBUP 0 x56000018 ldr r0 GPBUP ldr r1 0 x7FF 即 二进制 11111111111 关闭 PB 口上拉 str r1 r0 ldr r0 GPBCON ldr r1 0 x154FD 即 二进制 010101010011111101 str r1 r0 ldr r0 GPBDAT ldr r1 0 x1C0 str r1 r0 endif 在 include configs my2440 h 头文件中添加 CONFIG S3C2440 宏 gedit include configs my2440 h define CONFIG S3C2440 1 in a SAMSUNG S3C2440 SoC 现在编译 u boot 在根目录下会生成一个 u boot bin 文件 然后我们利用 mini2440 原 有的 supervivi 把 u boot bin 下载到 RAM 中运行测试 注意 我们使用 supervivi 进行下 载时已经对 CPU RAM 进行了初始化 所以我们在 u boot 中要屏蔽掉对 CPU RAM 的初始化 如下 ifndef CONFIG SKIP LOWLEVEL INIT bl cpu init crit endif make my2440 config make 下载运行后可以看到开发板上的 LED 灯第一了亮了 其他三个熄灭 测试结果符合上 面的要求 湖南科技大学本科生毕业设计 论文 17 4 在 u boot 中添加对 S3C2440 一些寄存器的支持 添加中断禁止部分和时钟设置 部分 由于 2410 和 2440 的寄存器及地址大部分是一致的 所以这里就直接在 2410 的基 础上再加上对 2440 的支持即可 在 cpu arm920t start S 中添加如下代码 if defined CONFIG S3C2400 defined CONFIG S3C2410 defined CONFIG S3C2440 if defined CONFIG S3C2440 添加 s3c2440 的中断禁止部分 ldr r1 0 x7fff 根据 2440 芯片手册 INTSUBMSK 寄存器有 15 位可用 ldr r0 INTSUBMSK str r1 r0 endif if defined CONFIG S3C2440 添加 s3c2440 的时钟部分 define MPLLCON 0 x4C000004 系统主频配置寄存器基地址 define UPLLCON 0 x4C000008 USB 时钟频率配置寄存器基地址 ldr r0 CLKDIVN 设置分频系数 FCLK HCLK PCLK 1 4 8 mov r1 5 str r1 r0 ldr r0 MPLLCON 设置系统主频为 405MHz ldr r1 0 x7F021 str r1 r0 ldr r0 UPLLCON 设置 USB 时钟频率为 48MHz ldr r1 0 x38022 str r1 r0 else 其他开发板的时钟部分 这里就不用管了 我们现在是做 2440 的 FCLK HCLK PCLK 1 2 4 default FCLK is 120 MHz 湖南科技大学本科生毕业设计 论文 18 endif endif CONFIG S3C2400 CONFIG S3C2410 CONFIG S3C2440 S3C2440 的时钟部分除了在 start S 中添加外 还要分别在 board samsung my2440 my2440 c 和 cpu arm920t s3c24x0 speed c 中修改或添加部分代码 如下 elif FCLK SPEED 2 Fout 405MHz define M MDIV 0 x7F define M PDIV 0 x2 define M SDIV 0 x1 elif USB CLOCK 2 Fout 48MHz define U M MDIV 0 x38 define U M PDIV 0 x2 define U M SDIV 0 x2 endif gedit cpu arm920t s3c24x0 speed c static ulong get PLLCLK int pllreg if defined CONFIG S3C2440 if pllreg MPLL 参考 S3C2440 芯片手册上的公式 PLL 2 m Fin p 2s return CONFIG SYS CLK FREQ m 2 p s endif return CONFIG SYS CLK FREQ m p CLKDIVN 修改完毕后我们再重新编译 u boot 然后再下载到 RAM 中运行测试 结果终端有输出 信息并且出现类似 Shell 的命令行 这说明这一部分移植完成 5 准备进入 u boot 的第二阶段 通常 在嵌入式 bootloader 中 有两种方式来引导启动内核 从 Nor Flash 启动和从 Nand Flash 启动 u boot 中默认是从 Nor Flash 启动 让 u boot 完全对我们 Nor Flash 的 支持 1 我们修改命令行前的名字和 Nor Flash 参数部分的定义如下 define CONFIG SYS PROMPT MY2440 if 0 define CONFIG AMD LV400 1 define CONFIG AMD LV800 1 endif define CONFIG SYS MAX FLASH BANKS 1 ifdef CONFIG AMD LV800 define PHYS FLASH SIZE 0 x00100000 define CONFIG SYS MAX FLASH SECT 19 define CONFIG ENV ADDR CONFIG SYS FLASH BASE 0 x0F0000 endif ifdef CONFIG AMD LV400 define PHYS FLASH SIZE 0 x00080000 define CONFIG SYS MAX FLASH SECT 11 define CONFIG ENV ADDR CONFIG SYS FLASH BASE 0 x070000 endif define CONFIG SST 39VF1601 1 define PHYS FLASH SIZE 0 x200000 define CONFIG SYS MAX FLASH SECT 512 define CONFIG ENV ADDR CONFIG SYS FLASH BASE 0 x040000 2 添加对我们 mini2440 开发板上 2M 的 Nor Flash 型号为 SST39VF1601 的支持 在 u boot 中对 Nor Flash 的操作分别有初始化 擦除和写入 所以我们主要修改与硬件 密切相关的三个函数 flash init flash erase write hword 修改代码如下 gedit board samsung my2440 flash c 湖南科技大学本科生毕业设计 论文 20 define MAIN SECT SIZE 0 x10000 define MAIN SECT SIZE 0 x1000 defineMEM FLASH ADDR1 volatileu16 CONFIG SYS FLASH BASE 0 x00000555 1 defineMEM FLASH ADDR2 volatile u16 CONFIG SYS FLASH BASE 0 x000002AA 1 defineMEM FLASH ADDR1 volatile u16 CONFIG SYS FLASH BASE 0 x00005555 1 这两个参数看 SST39VF1601 手册 defineMEM FLASH ADDR2 volatile u16 CONFIG SYS FLASH BASE 0 x00002AAA 1 3 修改 flash init 函数如下 elifdefined CONFIG AMD LV800 AMD MANUFACT elif defined CONFIG SST 39VF1601 在 CONFIG AMD LV800 后面添加 CONFIG SST 39VF1601 SST MANUFACT for j 0 j flash info i sector count j if j flash id if info flash id wait until flash is ready chip 0 do result addr check timeout if get timer masked CONFIG SYS FLASH ERASE TOUT MEM FLASH ADDR1 CMD READ ARRAY chip TMO 湖南科技大学本科生毕业设计 论文 22 break if chip if chip while chip MEM FLASH ADDR1 CMD READ ARRAY if chip ERR rc ERR PROG ERROR goto outahere if chip TMO rc ERR TIMOUT goto outahere 6 修改 write hword 函数如下 MEM FLASH ADDR1 CMD UNLOCK1 MEM FLASH ADDR2 CMD UNLOCK2 MEM FLASH ADDR1 CMD UNLOCK BYPASS MEM FLASH ADDR1 CMD PROGRAM addr CMD PROGRAM addr data wait until flash is ready chip 0 do result addr check timeout if get timer masked CONFIG SYS FLASH ERASE TOUT chip ERR TMO break 湖南科技大学本科生毕业设计 论文 23 if chip if chip if result else chip ERR while chip addr CMD READ ARRAY if chip ERR addr data rc ERR PROG ERROR while 1 if addr if addr break 修改完后重新编译 u boot 下载 u boot bin 文件到 RAM 中运行 这时候 u boot 已 经对我们开发板上的 Nor Flash 完全支持了 6 准备进入 u boot 的第二阶段 在 u boot 中添加对我们开发板上 Nand Flash 的支持 目前 u boot 中还没有对 2440 上 Nand Flash 的支持 也就是说要想 u boot 从 Nand Flash 上启动得自己去实现了 1 在 include configs my2440 h 头文件中定义 Nand 要用到的宏和寄存器 如下 define CONFIG S3C2440 NAND BOOT 1 define NAND CTL BASE 0 x4E000000 湖南科技大学本科生毕业设计 论文 24 define STACK BASE 0 x33F00000 定义堆栈的地址 define STACK SIZE 0 x8000 堆栈的长度大小 define oNFCONF 0 x00 define oNFCONT 0 x04 define oNFADDR 0 x0c define oNFDATA 0 x10 define oNFCMD 0 x08 define oNFSTAT 0 x20 define oNFECC 0 x2c 2 修改 cpu arm920t start S 这个文件 使 u
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 客服礼仪考试题及答案
- 考试题及答案语文
- 会展设计师成本控制考核试卷及答案
- 无人机测绘操控员三级安全教育(车间级)考核试卷及答案
- 电器接插件制造工适应性考核试卷及答案
- 今日会计考试题及答案
- 形象设计师技能比武考核试卷及答案
- 横机工基础考核试卷及答案
- 球团焙烧工新员工考核试卷及答案
- 电解槽操作工设备维护与保养考核试卷及答案
- 过程装备与控制工程专业导论
- 2022版义务教育数学新课程标准新课标重点知识整理
- 第26届北京市高中力学竞赛决赛试题
- 中成药合理应用专家讲座
- 清梳联设备及工艺流程
- 手性新药的注册要求
- 图形创意设计的课件完整版
- SH/T 0660-1998气相防锈油试验方法
- GB/T 4956-2003磁性基体上非磁性覆盖层覆盖层厚度测量磁性法
- 第三、四章-证据的分级、来源与检索课件
- 《计算机系统结构(第二版)》配套教学课件
评论
0/150
提交评论