标签: ARM Linux SAM9260 移植 抵岸科技
概述
本文的目的在于帮助AT91SAM9g20(以下简称为SAM9g20)的软件开发工程师从零开始,为SAM9g20建立Linux运行环境。
在进行SAM9g20 Linux开发之前,需要建立开发环境。
本文选用的目标板为:timll SBC6020上。
本文涉及到的一些linux基础知识,若无相关介绍,则请自行至网络搜索补充。
本文的部分内容来源于网络。
SAM9g20 Linux的基本组成:
· Bootstrap
· U-boot
· Kernel
· Rootfs
· Bootstrap在Windows PC上编译,其余的在Linux PC上编译。
各部分组成如下图:
开发环境
· 一台Linux PC(可以是虚拟机,以下简称为Linux开发机)
· 可以安装主流的Linux发行版本,比如 ubuntu, Fedora等等。在此推荐用ubuntu-10.4。
· ubuntu-10.4标准的发行版本可能并没有包括所有开发中需要的组件。开发过程中可以根据需要通过网络安装。
· 如果采用虚拟机方式,可以选择虚拟机软件如 Virtual PC, VMware, VirtualBox等。在此推荐用VMware v6.5.2
· 安装完成后需要”打通”虚拟机与宿主机的共享通道,可以使用Linux的samba或者使用虚拟软件提供的第三方工具。
· 可用的网络
· 基于两个原因:
· 1. 开发初期使用NFS会比较方便。
· 2. Linux开发机安装组件。
· 开发机上所需要的基本程序开发工具
· 比如gcc( GCC-HOWTO)等。
· 目标板所用的交叉编译器
· 所谓交叉编译器,就是指在开发机上运行,编译结果在另外架构的平台上运行。
· 这里的交叉编译器指的就是ARM交叉编译器。编译器在Linux x86上将源代码编译成ARM体系结构适用的可执行文件。
· Linux下可以使用的ARM交叉编译器很多,经过测试,推荐使用arm-linux-gcc 4.3.2工具。
· 交叉编译工具的搭建,详见:
(链接)
· 目标烧写工具
· 有了编译的输出,还需要编程工具将其固化到SAM9g20的板子上运行。这个过程就是编程的过程。
· 由于SAM9g20提供了SAM-BA工具,所以最基本的方式就是通过USB口利用SAM-BA软件下载。
SAM9g20 Linux 启动流程
本文主要讲述从Data Flash上启动的过程,NAND flash启动,NOR Flash启动请参考相关文档。
1. BOOTROM - 检查一个有效的Bootstrap是在FLASH中,如果Bootstrap存在,则将它加载到内部SRAM中,并将控制权交给Bootstrap。
2. AT91Bootstrap - 开始分管硬件配置,从FLASH当中加载U-Boot程序到SDRAM,并将控制权交给U-boot。
3. U-boot - 它是一个引导加载程序,在从FLASH,网络,USB等设备中加载内核到SDRAM中,并将控制权交给内核。
4. Linux kernel - 操作系统内核。
5. Rootfs - 根文件系统。
1. 处理器复位,根据BMS引脚的设置,选择从内部ROM启动(NOR Flash启动方式不在本文的讨论范围)。
2. BOOTROM开始运行,初始化CPU和内存控制器,比如DBGU,USB device port。它还建立了为内核使用的格式是一致的跨平台的内存映射,然后跳转到Bootstrap运行。
3. 如果Bootstrap存在,ROMBOOT将其复制到内部SRAM并跳转到Bootstrap运行。如果没有,则等待DBGU或者USB口的连接,这部分内容请参考SAM-BA手册。
4. Bootstrap将初始化一些设备,主要是Data Flash与SDRAM,然后从Data Flash特定位置(在Bootstrap源代码中指定)将U-boot复制到SDRAM的指定位置,然后跳转到U-boot开始位置运行。
5. U-boot根据环境变量(bootcmd)加载Linux Kernel的image。加载完成后跳转到Kernel运行,并传递启动参数(bootargs)。
6. Linux Kernel开始运行,init读取/ etc / inittab文件,以执行相应的运行从/ etc / rc.d中,其中一开始就执行初始化脚本和其他网络系统服务控制脚本,加载相关驱动,并加载rootfs。
Data Flash Boot Mem Map
*内部集成FLASH的AT91系列,Bootstrap存储于AT91内部FLASH当中,而不存储于DATAFLASH或NANDFLASH中。
Nand Flash Boot Mem Map
*内部集成FLASH的AT91系列,Bootstrap存储于AT91内部FLASH当中,而不存储于DATAFLASH或NANDFLASH中。
Bootstrap移植流程
U-boot移植流程
Linux kernel移植流程
Rootfs移植流程
文件历史记录
版本 编制 日期 更改内容
-----------------------------------------------------------------------------------
V1.0 抵岸科技 2010-6-26 首发
V1.1 抵岸科技 2010-7-23 更改:*Bootstrap存储于AT91内部FLASH当中...