4.1 uboot开发 - 启动分析
启动方案
- SS928 支持以下三种启动方案:
- 快速启动。
- 非安全启动。
- 安全启动。
- 这里介绍出厂默认的启动方案:
非安全启动
。 - 如果需要更改启动方案,则需要配置
OTP
,简单看了下文档,不想搞。
非安全启动
- 在非安全启动模式下,芯片从 GSL 启动。
- 启动流程如下:
芯片上电,加载固化在ROM里的代码
->启动GSL
->启动uboot
->引导内核启动
。 - 该方案不会校验启动镜像的合法性,是非安全的。
内核启动
- 通过串口连接单板,在出现
Hit any key to stop autoboot
时,按下ctrl+c
。 - 通过命令
printenv bootcmd
查看启动内核的命令为:bootcmd=mmc read 0 0x50000000 0x800 0x8000; bootm 0x50000000
- mmc read 命令用来读取 mmc 内容到内存,其基本用法如下:
- mmc read dev addr blk# cnt
- dev:mmc的设备号,可以通过 mmc list 查询
- addr:内存地址
- blk#: mmc的块号
- cnt:块数目
- mmc read dev addr blk# cnt
- bootm 命令用来运行内存中的应用镜像。
- 引导内核流程如下:
- 通过 mmc read 命令将烧写在 mmc 1M(0x800块,每块大小为 512 字节) 处的内核镜像读取到内存 0x50000000 处。
- 使用 bootm 命令运行内存 0x50000000 处的内核镜像。
内核启动参数
-
通过命令
printenv bootargs
查看传递给内核的启动参数为:bootargs=mem=3840M console=ttyAMA0,115200 clk_ignore_unused rw rootwait root=/dev/mmcblk0p4 rootfstype=ext4 \ blkdevparts=mmcblk0:1M(u-boot.bin),16M(kernel),19M(update),6144M(rootfs.ext4),8192M(oem),-(data)