《2022年ARM平台下的嵌入式linux移植大纲[ .pdf》由会员分享,可在线阅读,更多相关《2022年ARM平台下的嵌入式linux移植大纲[ .pdf(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、首先要理解嵌入式系统移植的基本概念:软件的移植是系统开发中最常见的一项工作。嵌入式系统移植一般来说指的是引导程序、操作系统等和硬件关系比较密切的软件在一个新的硬件平台上运行起来的过程。嵌入式系统移植分为以下几种:引导程序移植操作系统移植应用程序移植引导程序移植1、引导程序就是在操作系统内核运行之前运行的一段程序。通过这段程序,可以初始化硬件设备、将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境2、引导程序的主要目的有两个:初始化硬件和引导操作系统。一般来说,只要能在硬件平台上把这两个部分做好就可以了操作系统移植中关心的是以下几个:中断系统的移植: 不同的硬件系统
2、中断结构差别都非常大,正确的移植是设备驱动能正常工作的前提时钟系统的移植:时钟是维系整个操作系统的运行的基石内存管理系统的移植:一般对linux 来说主要是IO 映射的移植设备驱动的移植os 移植需要掌握的概念时钟系统在线程切换中的作用时钟与中断(重中之重)mmu 的概念虚拟内存的映射名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 4 页 - - - - - - - - - 应用程序移植应用程序移植一般指的是将其移植到某个操作系统上,难度一般是体现在将一个应用移植到一个新
3、的操作系统的情况下存在的。 硬件平台的差异对于应用影响不是很大,当然也不排除一些需要特殊硬件支持的应用程序。系统移植的难点一般来说,嵌入式系统移植工作中的代码编写量不会很大,代码的逻辑也不会非常复杂。移植的难度并不在于代码的编写,而在于移植者对于系统的理解程度。移植者必须对所移植的系统的硬件结构、操作系统的基本工作原理等非常理解,才可能把移植工作很好的完成Bootloader 移植什么是 bootloader 简单地说,bootloader 就是在操作系统内核运行之前运行的一段小程序。通过这段程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最
4、终调用操作系统内核准备好正确的环境。bootloader 的主要功能1、PC 系统中的BIOS 启动和自检OS Loader:grub 或 LILO PC 系统启动过程2、嵌入式系统中的初始化硬件,为系统运行建立环境,类似PC 的 BIOS 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 4 页 - - - - - - - - - 读入 OS 核心并引导为系统的可升级性和可调试性提供方便将系统的可执行image 进行替换和升级从串口或Ethernet 向目标系统中下载im
5、age 建立一个基本的命令环境bootloader stage1 硬件设备初始化(内存控制器的设置)为加载 bootloader 的 stage2 部分的代码准备RAM 空间拷贝 bootloader 的 stage2 部分的代码到RAM 空间中,并跳转执行设置好堆栈, Heap 等跳转到 stage2 的 C 入口点bootloader stage2 初始化本阶段要使用到的硬件设备(net,flash 等)将 OS 映像从 flash 上读到 RAM 空间中为 OS 设置启动参数跳转到 OS 内核 image 的入口点U-Boot (Universal Bootloader) GPL 下资源
6、代码最完整的一个通用BootLoader 支持绝大部分处理器架构Powerpc arm mips i386 nios m68k . 支持大量开发板:214 个开发板( u-boot1.1.6 )大量外设驱动名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 4 页 - - - - - - - - - http:/ U-Boot 的目录树结构board/: 所有支持的开发板cpu/: 所有支持的cpu disk/,drivers/,fs/,lib_xxx/,net/,toos/
7、,etc u-boot 的编译重点理解链接脚本start.o_ u-boot.lds- =linku-boot(elf)-OBJCOPY -O binary-u-boot.bin u-boot 的启动过程分析(第一阶段)关中断,初始化PLL ,设置时钟, MMU 操作, lowlevel_init (初始化 bank 时序) 重定位 u-boot ,实际大部分情况是将u-boot 第二阶段代码和数据拷贝到SDRAM 中设置 stack ,这里实际也包括设置heap 等clear BSS 段跳转到第二阶段(注意已经是在C 的环境中)u-boot 的启动过程分析(第二阶段)分配 gd:gd = (gd_t*)(_armboot_start-CFG_MALLOC_LEN-sizeof(gd_t); 调用初始化序列board_init interrupt_init 一系列的初始化进入主循环,等待输入命令linux 核心的启动cmd_myboot.c 检查 image 信息设置引导参数启动核心:两个函数mach_type,addr 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 4 页 - - - - - - - - -
限制150内