论文研究-基于U-BOOT的WinCE与Linux双启动的设计和实现 .pdf

所需积分/C币:10 2019-08-17 23:36:40 345KB .PDF
30
收藏 收藏
举报

基于U-BOOT的WinCE与Linux双启动的设计和实现,邓小武,李森林,启动装载程序是嵌入式系统的重要组成部分。本文结合在ARM平台上广泛使用的U-Boot,详细讨论了Bootloader开发中用到的主要技术,分析引��
国武技论文在线 nuse OxIB000C00 Wince 0z5800000 OxOCOOCO Stack Heap WinCe para U-Boot Ox57e00C00 Linux roofs Download WInCe NK OXOOLOOCO0 Addr Linux Linux I Kernel 0x5010000 0x004OC00C 0x500080On 0xC0100300 Boot loader 0x000000 U-Boot Boot linux boot winco RAM B. NAND FLASH 图物理内存和 划分 目标文件通过 链接脚本控制,该文廾定义了连接到目标文 件中的各个段的名称和位置,从该文件可以看出 由 文件开始 由 编译生成,包含了 的第一阶段的主要代码和第二阶段代码以 为入口 支持多种平台,其驱动程序的代码位于 文件夹下,各个设备的板级配置 信息由 文件控制。是移植过程中需要修改的主要文件。 STAGE 2 STAGE 1 -start armboot Syc mode mem malloc init Disable Cpu Init Watchdog LowLevel init Isable Interrupts Nand init init system clock Network Init Enable mmu Uart asm init Relocate U-Boot Key press? Boot os Nand asm init Main Loop Setup Stack <Get/Execute Cmd- Goto Stage 2 图 流程 为提高软件的复用性,本系统将操作系统的引导睬数作为独立的 命令添加到 中 支持多种命令,其命令的实现代码保存在 中,以” 作为 文件前缀,添加 命令时使用 提供的 宏声明。 各个参数的意义: 国武技论文在线 命令的名称,用于唯区别命令,在 中如果命令的前缀不同,在终端 中可以直接输入前缀执行命令 命令可以接受的最多参数个数 命令的实现函数,命令被执行时,该函数被调用 :短的帮助信息,使用时将打印该信息 长的帮助信息使用 时打印该信息 在添加完代码之后,还需要在 文件中添加相应命令的日标文件。 双系统驱动启动的实现 要启动操作系统,必须首先完成必要硬件的初始化,设置好操作系统的运行环 境后开始加载并启动操作系统 硬件初始化代码修改和配置 使用三星公司 处理器,该处理器基于 内核,为 提扃代码复用度减小移植难度,选用三星公司修改过的 版本,该版本支持与本 开发板类似的 ,适当修改后可以应用在本开发板上,并实现了项目的主要功能 修改 :添加 的编译命令 复制参考板代码 修改平台相关代码 () 包含了所有 开发板的配置选项,包含 的大小、位置、 大小、串口的配置、网卡的犁号、地址、地址等信息,以及默认的 内核启动参数等信息。根据开发板进行只体修改和添加选项 是整个 的入口包含了最基本的改置模式的代码,并调用内存初始化 函数、系统时钟初始化函数、第二阶段入口函数。本文件主要修改的内容是去掉 中包含的 初始化代码。 包含了一些板级初始化代码,包含网卡初始化函数的调用、初始化函 数调用代码等,还包含了虚拟内存地址到物理内存地址的转换函薮,木文件主要修改的內容 是去掉 中包含的 网卡的初始化函数,添加 的初始化函数和 下载功能的支持函数。 包含了 接收并执行命令的主循环函数 ,本文件的代码为体 系结构无关的代码,所有不用做其他修改。但为提高 的可用性添加了如下的菜单函 国武技论文在线 引导 系统 引导 需要完成以下操作: 设置为模式。 完成,内存控制器,系统时钟,串口, 的初始化 解压 内核镜像文件头,检查校验和,加载内核到指定位置。 跳转之前禁用中断和 解压文件头需要分析 文件头格式 镜像存在两种格式和 是原始的二进制镜像,可以直接烧到 中的,它不包括头,可以直接跳转到其 入口执行,一般情况下将内核下载到设备的中运行都采用是一种进制镜像 格式,以片断为单位组织数据,每个片断都包括一个头,头里指定了起始地址、长度、校验 值 将 内核所有文件以格式合并成一个文什,默认文件名为 需要将分解成多个文件放到 中 启幼 操作系统只需要完成必要的硬件初始化,设置好 系统的运行环境, 然后读取并校验 镜像文件,由镜像文件头部获取到 的加载地址,将 保存到指定的位置后,跳转到其开始地址,就可以成功引导 操作系统,如图所小 国武技论文在线 具体实现代码: 引导 系统 引导 内核需要完成以下操作 设置为模式。 完成、内存控制器、系统时钟、串冂、 的初始化 加载 内核镜像文件到内存制定位置 设置内核启动参数并跳转到内核 通过 启动内核要传递三个参数:第一个参数放在寄存器中,一般都为, ;第二个参数放在寄存器中,是机器类型;第三个参数放在寄存器中,是启动 参数标记列表( )在 中的起始基地址。 其中机器定义在 文件,内核用机器检查是否支持 当前平台 是 传递给内核的主要参数,包含系统的根设备标志、页面 大小、内存的起始地址和大小 的起始地址和大小、压缩的 根文件系 统的起始地址和大小、内核命令参数等。内核参数链衣的格式和说明可以从内核源代码目录 树的 中找到,参数链衣必须以 开始,以 结束。每个参数标记就代表一个参数结构体,由各个参数结构体构成了参数列表。内核在启 国武技论文在线 动时将解析该参数衣,用于内核启动的型置。 内核的引导只需要完成必要的硬件初始化操作,设置运行环境后,然后读取 内核到预先规划好的位置,设置好 并将 和 以及内存参数, 文件系统位置等信息传递给内核后就能完成内核的引导,如图所示。具体实 现代码: U-Bt1.1.6(May72013-11:35:01) for mini6410 Hit any key to stop autoboot: 0 [BI Boot Linux [WI Boot wince Q Quit to shell Selection: W magic AXCEFA4146 1en=0X6300000 Load wince 图启动 国武技论文在线 [B] Boot Linux [W Boot Wince [Q Quit to shell Selection b NAND read: device 0 offset 0x400000, size 0x500000 5242880 bytes read: OK Boot with zImage at ce008000[500080001 starting kernel Uncompressing Linux 结论 本文针对以使用三星公司 为处理器的 开发板为硬件平台,以 为基础,实现了在一个嵌入式设备上使用一个 引导多个架作系统。本文将系统 启动的代码实现为一个独立的函数,有利于降低项目代码直接的耦合性,方便了以后的嵌入 式系统教学与开发。 参考文献 王长清桂竹基于 双核处理器嵌入式系统 移植河南师范大学学报自然科学版 引导内核的机制

...展开详情
试读 8P 论文研究-基于U-BOOT的WinCE与Linux双启动的设计和实现 .pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
关注 私信
上传资源赚钱or赚积分
最新推荐
论文研究-基于U-BOOT的WinCE与Linux双启动的设计和实现 .pdf 10积分/C币 立即下载
1/8
论文研究-基于U-BOOT的WinCE与Linux双启动的设计和实现 .pdf第1页
论文研究-基于U-BOOT的WinCE与Linux双启动的设计和实现 .pdf第2页

试读结束, 可继续读1页

10积分/C币 立即下载 >