BeagleBone Black——AM335X——启动流程
RAM Code:
RAM Code是固化在芯片中的一段代码,当芯片正常上 电时,芯片会首先执行此段代码。
RAM Code startup:
ROM Code首先会为自己的运行环境做一些基本的初始化,比如堆栈设置、关门狗设置、时钟设置。————这里只是为ROM Code自身的运行创建最基本的运行环境。
RAM Code Booting:
然后根据SYSBOOT引脚信息创建启动列表,接着根据启动列表按顺序检测可用的启动设备,当检测到可启动设备的的话,就从相应设备运行。当列表检测完之后还没有找到可启动设备,就进入死循环,等待看门狗来复位系统(看门狗在ARM Code startup阶段被设置为3min)。
BeagleBone Black 的 uBOOT 按键与启动列表:
由BeagleBone Black的硬件原理图知道uBOOT按键接在BOOTPIN{2}上,按下时为0;根据AM335X系列的技术参考手册可得,当按下uBOOT时的启动列表为{SPI0,MMC0,USB0,UART0};当没有按下时的启动列表为{MMC1,MMC0,UART0,USB0}。在BeagleBone Black上板载eMMC接在MMC1上,SD卡槽接在MMC0上,故默认情况下BeagleBone Black由板载eMMC启动,当在eMMC上没有找到可启动文件时(RAM Code在MMC下可是支持FAT文件系统的哦,该启动文件就是MLO)就会从接在MMC0上的SD卡启动,按下uBOOT时就不从eMMC启动了 。
BeagleBone Black 的uBOOT 与系统更新的关系:
由上段可知,uBOOT只有改变启动设备的效果,并不决定是否更新eMMC,所以是否更新还是由系统镜像本身来决定的。
BeagleBone Black eMMC 系统更新流程:
——(更新BBB-eMMC-flasher-debian-7.5-2014-05-14-2gb.img)
把下载好的eMMC系统镜像烧写到SD卡后,在SD卡上便存在两个分区,第一个为FAT32格式的BOOT分区(系统启动后在PC上出现的虚拟优盘便是这个分区),第二个为EXT4格式的ROOTFS分区(即LINUX的根文件系统),SD卡插入卡槽、按下uBOOT(直到4个LED同时点亮,大概一秒钟左右)(有串口的可以接上,可以在通过串口终端观察到相关启动信息),接通USB(供电)。这时RAM Code便会选择从SD卡启动,先是找到MLO文件并加载运行,为u-boot.img运行做好环境准备,然后跳转到u-boot运行(此时就可以看到串口终端有信息出现了),接着加载内核运行,当系统运行起来后,便会出现虚拟U盘,同时开始更新eMMC的系统(可以用top命令查看到相关的进程占用大量的CPU资源),当4个LED同时持续性点亮时系统就更新到eMMC了。
|