sd卡刷系统操作整理

一、前情提示(关注arm裸机的第一部分)

1、首先上电,cpu默认执行 BL0。(刻在 iROM 当中的代码) iROM 内部写入了 9 种设备的复制代码函数。----- 也就是复制外部设备中的代码到 iROM当中运行

2、我们会在 BL0 当中通过配置引脚,来确定启动方式。

先1st启动,通过OMpin选择启动介质。(有板载的 emmc , SD1)
再2nd启动,只能从 SD2 启动。
再Uart启动
再USB启动

二、sd卡启动(使用的是 SD2)

注:

  • sd0=emmc(即板载的iNand),当我们将拨码拨到 emmc 的时候,我们默认从 sd0启动。
  • sd1通道,是和我们sd0(emmc)同等地位,因为我们开发板没有设置sd1通道的拨码,所以就找不到通道 sd1

如果我们想利用 sd2(sd卡)启动,我们就必须先对板载的 iNand 中的uboot中的扇区1进行破坏,然后让sd0启动失败,自动转到sd2进行启动。

1、破坏板载的 iNand 中的uboot

  • 先让开发板自行启动,进入linux或者安卓的操作系统当中, 通过串口发送一下命令。(串口助手当中不能使能快捷键进行复制,必须点击右键,然后粘贴) ---- 这个方法我没有设置成功。
先输入:busybox dd if=/dev/zero of=/dev/block/mmcblk0 bs=512 seek=1 count=1 conv=sync
在输入:sync

解释:这句话的意思就是说把板载的iNand的第一个扇区用全0来填充,其实就是擦除它,这样我们板载的iNand的bootloader的开始第1个扇区就被破坏了。将来启动时iROM还是会先从iNand中读取前16KB,然后计算校验和。这时候因为有1个扇区被擦掉了,所以校验和不通过,所以启动失败(会从SD2去执行2nd启动)。
注意:破坏板载iNand的bootloader后,不插外部SD卡,启动时串口得到:SD checksum Error

  • 开发板进行启动,在uboot启动过程中打断,进入uboot操作界面,输入下列命令:
执行(输入):movi write u-boot 0x30000000
//将内存0x30000000里面的内容(应该全部是0)写入到u-boot分区(inand)里面

在这里插入图片描述
重启之后:
在这里插入图片描述

2、给sd卡烧录 uboot

1、在windows下面进行烧录:(打开软件利用管理员权限)

(1)先将sd卡进行初始化(也可以不操作这一步)
 安装SDFormatter软件(百度下载)
 安装好后右键管理员权限打开软件,注意不要直接双击图标打开。像这类涉及到磁盘操作等敏感操作的软件,最好都用管理员权限打开,否则会出现各种莫名其妙的错误。
 将SD卡插入USB读卡器(注意插入方向要正确,否则识别不到的),然后奖读卡器插入电脑USB口(最好用电脑的USB2.0口,不要用USB3.0,有时候会出现不兼容情况。如果不知道电脑哪个口是2.0还是3.0,可以多插入几个口试一试)。如果此时电脑正确识别了SD卡并且已经可以在电脑端看到SD卡的盘符,则证明读卡器和卡都是好的,进入下一步。若根本看不到SD卡也没法操作,那就证明卡或者读卡器有问题,或者插入不正确,总之需要排查解决。电脑正确识别到SD卡的表现图下图所示。

先识别到SD卡再重新打开SDFormatter软件,此时软件会识别到SD卡。如果是先打开的SDFormatter软件再插入的卡,则需要点击软件上的“更新”按钮,此时软件也会识别到卡。总之需要让软件识别到卡,如下图所示。
在这里插入图片描述

点击“格式化”,再一路“确定”,最后点“完成”即可完成格式化过程。

(2)利用 windows 下面的sd卡烧录工具进行烧录。
在这里插入图片描述
在这里插入图片描述

2、在ubuntu虚拟机当中进行烧录 (在arm裸机的第10部分)

1、SD 卡连接到电脑上(默认是 windows上面)。我们需要切换到 linux 系统上面。

插入SD卡->在VMware上边的栏目中点击虚拟机->可移动设备->找到你的SD卡点击连接
命令行输入ls /dev/sd,出现下图中就是SD卡在Linux中识别成功。

在这里插入图片描述
对应我们烧录脚本里面的:
在这里插入图片描述
2、进入我们 winshare 目录下面执行,make 先进行编译。

3、在winshare 目录下面 执行 ./write2sd 命令。来进行烧录
在这里插入图片描述

三、USB启动

可以看出,我们的 USB 启动和 SD0,是同一个级别,所以只能由拨码开关来选择是什么方式启动。
在这里插入图片描述
重要理解:
S5PV210的启动过程:开机时先执行内部的iROM中的BL0,然后BL0做了一系列的初始化后,再读取外部OMpin的设置来确定用户选择了从哪里启动。
当检测到我们设置的是USB启动时,S5PV210就会从USB OTG接口试图连接主机进行下载启动。

dnw是一个软件,是三星公司编写的,这个软件的功能是通过USB线连接开发板和电脑主机,然后从主机下载文件镜像到开发板中去烧录系统。

总结:
1、拨码开关设置usb启动,然后BL0做了一系列的初始化后,再读取外部OMpin的设置来确定用户选择了从哪里启动。
2、当我们按下开机键(一直按着,没有进行软开关),执行了BL0,判断出是usb启动,开发板就会通过数据线向主机索取数据。
3、通过dwm将数据传输给现在正在运行的开发板。

注:
1、dwm只是单纯的将代码搬运到了我们 soc 内置 sRAM 当中运行,因为RAM断电之后不会保存,所以重启之后,就没有代码在执行了。

猜你喜欢

转载自blog.csdn.net/vincent3678/article/details/108553435
今日推荐