Linux 系统要启动就必须需要一个 bootloader 程序,芯片上电以后先运行一段bootloader程序。
bootloader程序会先初始化DDR等外设,然后将Linux内核从flash(NAND,NOR FLASH, SD, eMMC 等)拷贝到 DDR 中,最后启动 Linux 内核。所以,bootloader的作用:启动Linux内核。
现在有很多现成的 bootloader 软件可以使用,比如 U-Boot、 vivi、 RedBoot ,其中以 U-Boot 使用最为广泛
uboot (Universal Boot Loader):uboot 是一个遵循 GPL 协议的开源软件, uboot 是一个裸机代码,可以看作是一个裸机综合例程,支持液晶屏、网络、 USB 等高级功能
开发板出厂已经固化系统到核心板上的 eMMC 或 NandFlash 存储介质里。使用上位机工具 mfgtool,这种固化系统方式可以使用 PC 机在线直接固化系统
设置启动方式,先将底板拨码开关 BOOT_CFG 设置如下,设置为 USB 连接方式,“1”代码 ON,“0”代表“OFF”。将拨码数字 2 处拨到 ON: 01xx xxxx ,串行下载,可以通过USB烧写镜像文件
然后使用 USB 连接线连接底板的 USB_OTG 接口与 电脑
打开mfgtool文件夹,根据核心板选择不同的vbs脚本,以我的为例,核心板类型:eMMC(8GB)
DDR 大小为 512MB
Mfgtool2-eMMC-ddr512-eMMC.vbs 脚本解释
-eMMC:代表核心板上的存储介质为 eMMC
-ddr512: 指核心板上的 DDR 大小为 512MB
-eMMC: 选择此脚本是把固件烧写到 eMMC 上
若固化系统到TF卡,双击Mfgtool2-eMMC-ddr512-SDCard.vbs,等待安装驱动完成后, mfgtool 上位机界面会提示已经连接到设备 HID-compliant device, 注意请不要打开虚拟机,如果虚拟机正在开启, OTG 会连接到虚拟机上去。弹出如下界面,插入TF卡
需开发板先上电后再将 TF 卡插进卡槽,否则上电时会检测 TF 卡,这样 mfgtool 会连接不到开发板设备,若没有 “符合HID...” ,检测OTG是否连接正确。
直接点击 mfgtool 的 Start 按钮进行固化系统到 SD 卡。下图为点击 Start 按钮后的截图。固化系统到 SD 卡需要几分钟时间,请耐心等待
固化完成如上图,点击 Stop 后再点 Exit 退出 mfgtool 上位机软件即可
测试从 SD 卡启动系统,拨码开关拨至 SD 卡启动方式 10000010,启动系统即可
测试界面串口打印信息
若固化系统到 eMMC,请双击 Mfgtool2-eMMC-ddr512-eMMC.vbs 这个 vbs 脚本文件进行固化,固化时不要插入 SD 卡(其余步骤和上面一样),选择固化到eMMC 的 vbs 文件,固化完成后,将拨码开关拨至 eMMC 启动方式 10100110,启动系统即可
脚本固化系统一般可用于批量固化与升级系统, 不像 mfgtool 上位机那样还需要 PC 机和USB T字口数据线,且每次只能打开一个 mfgtool 上位机,用户可以自行修改好固化系统脚本,进行自动化固化测试
若固化系统到 TF(SD)卡:
先将 mfgtool->Profiles->Linux->OS Firmware->files 整个文件夹到 Ubuntu 虚拟机,使用 chmod 指令修改固化 TF 卡系统脚本 imx6mksdboot.sh 的权限
chmod +x imx6mksdboot.sh
然后TF 卡用读卡器插到 Ubuntu 虚拟机,输入sudo fdisk -l 指令查看 SD 卡挂载节点
挂载的节点为/dev/sdb
执行./imx6mksdboot.sh --help 查看脚本的使用方法
imx6mksdboot.sh [选项] <(必选)-device> <(可选)-flash> <(可选)-ddrsize>
(1) -device:指明设备节点(TF 卡挂载的节点如/dev/sdx), 必需加这个参数
(2) -flash:指明核心板上的媒体存储介质,可选为(emmc|nand)
(3) -ddrsize:指明核心板上的 ddr 容量大小,可选为(512|256) MB
我的核心板的 ddr 容量大小是 512MB,媒体存储介质是 eMMC。 SD 卡挂载节点为/dev/sdb。那么固化 SD 卡的指令:
sudo ./imx6mksdboot.sh -device /dev/sdb -flash emmc -ddrsize 512
执行指令后脚本会有中文再次询问 SD 卡所挂载的节点是否对应,将会清空 SD 卡上的所有数据,请注意备份重要的数据
注意:在使用sd卡前一定要格式化sd卡,然后用SDFormatter软件重做SD卡
然后按连接 TF 卡到 Ubuntu 的方法,再点击断开即可退出 TF 卡。 固化完成后,将拨码开关拨
至 TF 启动方式 10000010,启动系统即可
若固化系统到 eMMC:同样的将相应的嗯files文件拷贝在Linux下,修改 eMMC 固化脚本的权限
,执行./imx6mkemmcboot.sh --help 查看脚本的使用说明,使用 fdisk 指令查看 eMMC 挂载节点,一般挂载节点为/dev/mmcblk1,测试的 eMMC 为 8GB存储容量的
chmod +x imx6mkemmcboot.sh./imx6mkemmcboot.sh --helpfdisk -l
用法: imx6mkemmcboot.sh [选项] <(必选)-device> <(可选)-ddrsize>
(1) -device:指明设备节点(eMMC 挂载的节点如/dev/mmcblk1), 必需加这个参数
(2) -ddrsize:指明核心板上的 ddr 容量大小,可选为(512|256) MB
固化指令
./imx6mkemmcboot.sh -device /dev/mmcblk1 -ddrsize 512
固化完成后,将拨码开关拨至 eMMC 启动方式 10100110,启动系统即可
补充:拔码开关设置
根据核心板上的存储介质类型,选择不同的方式启动动系统
解释: OFF 为 0, ON 为 1。
(1) USB OTG 烧写设置: 0100 0000
(2) SD 卡启动设置: 1000 0010
(3) EMMC 启动设置: 1010 0110
(4) NAND FLASH 启动设置: 1000 1001
用户选择正确的启动方式后,开发板上电,进入系统后, 开发板自动登录,无需输入用户
名及密码,文件系统已经设置 root 用户自动登录。