本文主要解决的问题是,s5pv210_BV3S刷完机后系统无法完整启动,并且进入无限重启的状态。
实验材料:朱有鹏老师嵌入式核心课程配套的开发板(s5pv210_BV3S)和镜像(linux+QT4.8)
正确刷机步骤如下:
(1)、刷目录:朱有鹏老师嵌入式核心课程\不同版本开发板刷机看这里\X210V3S镜像\linux+QT4.8
中的uboot.bin。
(2)、运行uboot,在命令行中输入fdisk -c 0去重新分区,然后再fastboot。
s5pv210_BV3S对应的rootfs有256MB左右,而之前的uboot中对inand的system分区只有100多MB确实放不下。在这个新提供的uboot.bin中已经重新设置了分区信息,只需要fdisk -c 0来重新对inand分区即可。
(3)、在命令行下刷kernel和rootfs(所用文件都在(1)中目录去找)。
(4)、设置bootcmd和bootargs,在uboot的shell下输入以下三行命令:
set bootcmd 'movi read kernel 30008000; bootm 30008000'
set bootargs console=ttySAC2,115200 root=/dev/mmcblk0p2 rw init=/linuxrc rootfstype=ext3
save
其中:save一定不能少,没保存的话,重启系统会从Flash中重新读一份到内存中,原设置值丢失。
没有save,以上环境变量设置丢失,会找不到根文件,出现以下错误:
[ 5.542799] VFS: Cannot open root device "(null)" or unknown-block(0,0)
[ 5.549251] Please append a correct "root=" boot option; here are the available partitions:
[ 5.557587] b300 3866624 mmcblk0 driver: mmcblk
[ 5.562744] b301 264495 mmcblk0p1
[ 5.566990] b302 264495 mmcblk0p2
[ 5.571235] b303 105798 mmcblk0p3
[ 5.575482] b304 3207946 mmcblk0p4
[ 5.579729] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
这个错误对应的现象就是,系统进入无线重启状态,运行一会儿后就会rebooting。
上面配置的环境变量bootcmd和bootargs含义如下:
bootcmd=movi read kernel 30008000; bootm 30008000
意思是:将iNand的kernel分区读取到DDR内存的0x30008000地址处,
然后使用bootm启动命令从内存0x30008000处去启动内核。
bootargs=console=ttySAC2,115200 root=/dev/mmcblk0p2 rw init=/linuxrc rootfstype=ext3
意思是:console=ttySAC2,115200 控制台使用串口2,波特率115200.
root=/dev/mmcblk0p2 rw根文件系统在SD卡端口0设备(iNand)第2分区,根文件系统是可读可写的
init=/linuxrc linux的进程1(init进程)的路径 rootfstype=ext3 根文件系统的类型是ext3