物联网仓储系统(二)—环境搭建—交叉编译工具链和 Bootloader 移植

ARM 218浏览
一、项目环境介绍:
    1、Ubuntu 12.04 发行版
    2、GCC 交叉编译工具链(版本 4.5.1)
    3、U-boot-2010.03
    4、FS4412 开发板(ARM Cortex-A9 内核)
    5、FS_11C14 开发板(ARM Cortex-M0 内核)
二、本节目的:
    1、设置开发过程中使用的交叉编译工具链
    2、Bootloader 的移植
三、交叉编译工具链和 Bootloader 介绍:
    1、交叉编译工具链
交叉编译工具链是为了使在主机中编译的文件能够在不同平台的目标机中执行
主要由 binutils、gcc 和 glibc 三个部分组成
不同的目标平台对应的交叉编译工具链不同
本项目使用的是已编译好的(gcc version 4.5.1)
    2、Bootloader
Bootloader 是硬件启动的引导程序
Bootloader 是在操作系统内核运行之前执行的一段小代码
Bootloader 对必要硬件设备初始化,为最终运行操作系统准备好环境
Bootloader 最终调用操作系统内核,起到引导和加载内核的作用
Bootloader 不属于操作系统,一般采用汇编语言和 C 语言开发,需要针对特定的硬件平台
移植系统时,首先必须为开发板移植 Bootloader
Bootloader 不仅依赖 CPU 体系结构,而且依赖于嵌入式系统板级设备的配置
本项目使用的是 U-boot-2010.03 且已经配置好
四、交叉编译工具链配置:
    1、将编译好的 GCC 交叉工具链复制到相应目录并解压
    本项目文件均在: ~/Documents/WarehouseSystem
    2、配置交叉编译工具链
    执行命令:
    sudo vim /etc/bash.bashrc
添加内容:
PATH=$PATH:/home/wf/Documents/WarehouseSystem/arm-2010.09/bin
重启配置文件:
source /etc/bash.bashrc
测试交叉工具链:
arm-none-linux-gnueabi-gcc -v
五、Bootloader 移植:
    1、将源码 uboot-fs4412_v2.tar.xz 复制到相应目录并解压
本项目文件均在: ~/Documents/WarehouseSystem
    2、Bootloader 移植
    执行命令:
    vim Makefile
修改以下内容:
执行脚本 build_uboot.sh:
./ build_uboot.sh
生成 u-boot-fs4412.bin 即移植好:
六、U-boot 烧写:
    1、SD 启动盘制作
a)将 sdfuse_d 拷贝到 ~/Documents/WarehouseSystem 下
b)将 SD 卡插入电脑并识别
c)进入 sdfuse_q 执行如下操作
sudo ./mkuboot.sh /dev/sdb
d)在 SD 卡中创建目录 sdupdate 并把 u-boot-fs4412.bin 拷贝进去
                            ★★★注意★★★
SD 卡用读卡器识别不要插入笔记本自带的卡槽,虚拟机能识别 USB 接口但不能识别内置 SD 读卡器
    2、U-boot 烧写:
a)连接串口和板子,运行串口通信程序 putty
b)关闭开发板电源,将刚才做好的 SD 启动盘插入SD 卡插槽
c)将拨码开关 SW1 调至(1000)(SD 启动模式)后打开电源:
d)重新打开开发板能够看到如下界面
e)在终端上执行以下代码执行烧写 u-bootfs4412.bin 到 Flash:
sdfuse flashall
f)关闭开发板电源,将拨码开关 SW1 调至(0110)(EMMC 启动模式)后打开电源,看到如下界面表示烧写成功: