SBC-B1 TI 335x 启动分析(从哪里加载uboot和 uImage)
来源:互联网 发布:stm32跑linux 编辑:程序博客网 时间:2024/05/21 07:14
平时使用板子的时候一直是认为,板子的启动方式有TF(SD)卡、emmc、nandflash、usb……,认为如果是从TF启动,系统都会从TF卡加载uboot、kernal到内存运行,emmc同理。但在今天才发现,其实不是这样子的。
在使用SBC-B1板子的时候,发现这么一个现象。
1、如果没有插入TF卡,并且emmc有代码(镜像),CN5没有短接,CPU就直接从emmc第一分区(fat32)加载uboot和kernal到内存运行,最后挂载第二分区的文件系统(linux)。
2、如果插入TF卡并短接CN5(相当于sys_boot引脚),CPU就直接从TF第一分区(fat32)加载uboot和kernal到内存运行,最后挂载第二分区的文件系统(linux)。
3、如果插入TF卡,但是没有短接CN5,CPU首先会从emmc第一分区加载uboot到内存运行,再从TF卡的第二分区加载kernal到内存运行,最后再挂载emmc第二分区的文件系统。
下面先看代码
335x-B1-UBOOT/include/configs/am335x_evm.h
"dfu_alt_info_emmc=rawemmc mmc 0 3751936\0" \
"dfu_alt_info_nand=" DFU_ALT_INFO_NAND "\0" \
"mmcdev=0\0" \
"mmcroot=/dev/mmcblk0p2 rw\0" \
"mmcrootfstype=ext3 rootwait\0" \
"nandroot=ubi0:rootfs rw ubi.mtd=7,2048\0" \
"nandrootfstype=ubifs rootwait=1\0" \
"nandsrcaddr=0x280000\0" \
.
.
.
e CONFIG_BOOTCOMMAND \
"mmc dev ${mmcdev}; if mmc rescan; then " \
" echo ; " \ "else " \
" setenv mmcdev 1;" \ "fi;" \
"mmc dev ${mmcdev}; if mmc rescan; then " \
"echo SD/MMC found on device ${mmcdev};" \
"if run loadbootenv; then " \
"echo Loaded environment from ${bootenv};" \
"run importbootenv;" \
"fi;" \
现象1和现象2容易理解,问题就是在现象3里面,下面就详细解释现象3,直接看代码:
在这个板子里面,TF是编号“0”(mmcdev=0), emmc编号是“1”(mmcdev=1)。
上电启动的时候,CPU先检查CN5(sys_boot引脚),CN5没有短接,则从emmc启动。大家都知道确定启动方式之后,先从存储器(emmc)加载uboot到内存运行,再加载kernal。看上面代码, uboot的代码里面, mmcdev 默认等于“0”,首先执行句代码,“ "mmc dev ${mmcdev}; if mmc rescan; then " \ ”,再运行“ "mmc dev ${mmcdev}; if mmc rescan; then " \ ”也就是说,这个时候如果插入TF卡,uboot会从TF卡加载kernal到内存(如果没有插入TF卡,uboot则从emmc加载kernal到内存)。运行kernal之后,再挂载文件系统(代码也是在这个文件 "mmcroot=/dev/mmcblk0p2 rw\0" \)。
0 0
- SBC-B1 TI 335x 启动分析(从哪里加载uboot和 uImage)
- uboot启动zImage(go)和uImage(bootm)分析
- uboot启动zImage(go)和uImage(bootm)分析
- uboot启动zImage(go)和uImage(bootm)分析
- uboot启动zImage(go)和uImage(bootm)分析
- uboot启动uImage
- uboot启动uImage和rootfs(bootcmd和bootargs参数)
- [uboot] uboot启动kernel篇(一)——Legacy-uImage & FIT-uImage
- [uboot] uboot启动kernel篇(一)——Legacy-uImage & FIT-uImage
- [uboot] uboot启动kernel篇(一)——Legacy-uImage & FIT-uImage
- uboot加载 big uImage问题
- linux的uboot启动映像、zImage和uImage的区别
- uboot启动流程分析和uboot移植(粗略分析)
- [uboot] uboot启动kernel篇(三)——uboot解析uImage的kernel信息
- [uboot] uboot启动kernel篇(三)——uboot解析uImage的kernel信息
- 串口下载uboot和uImage
- 关于内核uImage和文件系统(rootfs.ext2.gz.uboot)
- uboot启动第二阶段之x-load分析
- 函数指针实现通用的数组元素排序
- WinEdt初次接触
- (jquery)input输入一个日期得到前后几天的日期
- 常用正则表达式
- windos 下 安装 pip
- SBC-B1 TI 335x 启动分析(从哪里加载uboot和 uImage)
- 剑指offer-面试题24-二叉树的后序遍历序列
- (转)Android控件
- bookstrap3常用组件
- mysql主从复制
- 出现 java.rmi.server.ExportException 异常的原因及解决方法
- 图像分割(四)——聚类分析/小波变换
- 1005. 继续(3n+1)猜想
- HTML5 jQuery图片上传前预览