02 S5PV210刷系统

注:本文是通过学习朱有鹏老师嵌入式视频,总结而成。

开发板刷系统:

1. 什么是刷系统:

刷系统就是利用刷机工具,向开发板中 烧录预先编译好的系统镜像,使之在开发板上运行起来

2. 串口输出的意义 (做系统控制台)

串口是一种硬件通信口,很多年前的时候串口是CPU之间经行通信的主要接口。但是现在因为串口通信的速度很低,所以现在串口主要是用来做程序 输出监控、调试
桌面电脑可以打开一个虚拟控制台,嵌入式系统一般是使用串口来做控制台的。一般是用一根串口线连接开发板的串口和我们笔记本电脑的串口,然后在电脑上打开一个串口监视,这样开发板上的串口输出内容就可以在电脑上看到。还可以通过监视终端向开发板输入一些控制命令由开发板执行。
常用的串口监视软件有:超级终端、SecureCRT、minicom

3. 安装USB转串口线的驱动

本来电脑都是有串口的(DB9接口),但是现在大家都用笔记本没有串口了,所以这种串口连接线用不了。办法是使用 USB转串口线,这种线插入电脑后需要安装驱动,安装驱动后在电脑上会形成一个串口(叫USB转串口),这样就相当于你电脑有了一个串口,可以通过这个串口来监视开发板的串口输出。

注意:

1.windows对USB设备的管理是和USB口有关的,每次把USB转串口线插到1个口中,这样得到的COM口号码是不变的,方便我们后期使用。如果每次胡乱更换插口,可能得到的COM口会变。

 2 .COM口号码是可以改的,改的时候还可以强制占用显示"已使用"COM号,一般改成 COM4以内的就可以了

4. 使用SecureCRT

从网盘下载SecureCRT.rar,解压后直接使用。注册时参考解压包中的《说明.txt》
打开SecureCRT.exe后,建立一个Serial连接,开始监视串口(注意流控一定要去掉),
开发板这边串口一定要接串口2(官方出厂默认的烧录镜像都是使用串口2的),然后开机,就可以看到串口信息了。

5. 开发板刷系统

1. 破坏iNand中的bootloader以从SD2启动

busybox dd if=/dev/zero of=/dev/block/mmcblk0 bs=512 seek=1 count=1 conv=sync


sync

注释:是在android4.04开机完全启动起来以后输入,不是在uboot控制台输入。

解释:

这句话的意思就是说把板载的iNand中的第一个扇区用全0来填充,其实就是擦出它,这样我们板载的iNand中的bootloader的开始第1个扇区就被破坏了。

将来启动的时iROM还是会先从iNand中读取16KB,然后计算校验和。这时候因为第1个扇区被擦掉了,所以检验和不通过,所以启动失败(会从SD2去执行2nd启动)

注意:此命令是android启动后在SecureCRT中输入,破坏板载的iNand的bootloader后,不插外部SD卡,启动时串口得到:SD checksum Error

2. 制作启动SD卡(其实就是烧录uboot到SD卡中)

有2种烧写方法:一种是在windows中用刷卡工具去制作启动SD卡;另一种是在linux中用dd命令。

本节介绍第一种(比较简单),刷卡工具是Fusing Tool(注意win10以管理员模式运行)。

1.将uboot.bin烧写到sd卡中。

2.制作完后将SD卡插入开发板SD2通道(注意不是SD3),然后开机进入uboot界面。在uboot开机自动启动倒数3秒之内迅速按下电脑回车键,打断自动启动。(否则会自动启动iNand中的android)

3. fastboot介绍

fastboot 是uboot中用来快速下载镜像的一个命令,fastboot同时还是一个Windows上的软件
fastboot下载时需要注意:
1.fastboot是使用USB线进行数据传输的,所以fastboot执行之前要先连接开发板和主机之间的usb线
2.需要安装驱动(android_driver)

4. fastboot常用命令:

fastboot  device 命令用来查看当前连接的设备(我们开发板看到的是:SMDK110-01)
fastboot  flash xxx 命令用来烧录的
fastboot  reboot 命令用来重启系统的

5. 使用fastboot烧录android4.0.4镜像:

注释:因为我将fastboot软件和镜像放入F盘中的同一个文件夹,所以直接输入目录了。
在cmd下使用以下三个命令来完成烧录
fastboot flash bootloader android4.0/uboot.bin 烧uboot
fastboot flash kernel android4.0/zImage-android 烧Linux kernel
fastboot flash system android4.0/x210.img 烧android rom

uboot的参数设置:set bootcmd 'movi read kernel 30008000; bootm 30008000'(默认就是这个,不用设置也行)

6. 常用系统烧录:

1.烧录linux+QT
fastboot flash bootloader linuxQT/uboot.bin 烧uboot
fastboot flash kernel linuxQT/zImage-qt 烧linux kernel
fastboot flash system linuxQT/rootfs_qt4.ext3 烧rootfs
uboot的参数不用特意设置(因为我们刷了专为linux+QT定制的uboot,这个uboot中估计已经预制好了所有的启动参数)

2.烧录android4.0.4
fastboot flash bootloader android4.0/uboot.bin 烧uboot
fastboot flash kernel android4.0/zImage-android 烧linux kernel
fastboot flash system android4.0/x210.img 烧android rom

3.烧录android2.3
fastboot flash bootloader android2.3/uboot.bin烧uboot
fastboot flash kernel android2.3/zImage烧linux kernel
fastboot flash system android2.3/x210.img烧android rom
注意:android2.3中使用了串口0,所以启动后要把串口插到串口0中,不然串口没有任何启动信息出来。
 android2.3中屏幕上的logo是在左上角(也是个刷机成功的标志

注意:

1、注意在刷BV3S的QT4.8镜像时一定要先刷本目录中的uboot.bin,然后重启运行这个uboot后,在命令行中输入fdisk -c 0,然后再fastboot,再刷内核和rootfs进去,设置好bootcmd和bootargs后启动就好了。然后再fastboot,再刷内核和rootfs进 去,设置好bootcmd和bootargs后启动就好了。
2、如果不按照1的顺序做,在刷rootfs时会出错,提示文件太大放不进分区。原因是本次提供的rootfs有256MB左右,而之前的uboot中对inand的system分区只有100多MB确实放不下。
  在这个新提供的uboot.bin中已经重新设置了分区信息,只需要fdisk -c 0来重新对inand分区即可。
  

X210核心板、底板原理图导读:

1.   核心板、底板原理图浏览
2.   写代码时需要查阅和参考的资料的有:核心板原理图、底板原理图、相应硬件的数据手册、s5pv210数据手册
3.  原理图、PCB图、丝印图各自是什么:


1.原理图是电路原理设计图,各个电路中的部件的逻辑连接图。原理图可能会影响软件编写


2. PCB图是我们用来制作电路板,并且用电路板进行原件焊接,做成最终产品的生产性图纸。 现有原理图设计,然后根据原理图来设计PCB图。PCB图是对原理图的 一种实现。
 原理图和PCB图一般都由硬件工程师来负责,但是原理图设计时软件工程师会一定程度参与。
 PCB图的设计完全就是硬件工程师的事情了,与软件工程师无任何关系

3.丝印图是PCB图设计中,所有原件的外框的框图。丝印图其实就是整个电路板的实体的位置图纸,
 与软件和功能无关,与生产制造有关。对软件工程师来说,丝印图可以不理会。
4.   原理图对嵌入式软件工程师的意义
  原理图是电路的逻辑连接。对于可编程器件来说,不同的电路连接可能意味着不同的编程参数,
  因此底层的软件工程师会需要查阅原理图的接法,从而决定自己的软件怎么写才能正确和硬件通信。
5.  嵌入式软件开发人员对硬件掌握程度的要求
对软件工程师来说,硬件究竟有没有必要会?会到什么程度?影响有多大?
软件工程师分应用开发和底层开发两大块。对于应用开发工程师(直接基于操作系统来开发程序,调用操作系统的API和库函数等写代码)来说,硬件完全被操作系统屏蔽了,可以完全不关心硬件;但是对于底层软件工程师(驱动开发的、单片机的、移植操作系统的)来说,看懂原理图和数据手册是非常有必要的,PCB图就没必要了。
注意:一般来说,总工程师都是软硬都会的,这个人一般 软件硬件都做过。
 所以对大家来说,如果时间很充裕,或者完全有条件,不妨都学习一点(学习是有轻重的);
 如果时间比较紧,着急工作,或者完全不感兴趣,那就不要看了。
 

S5PV210数据手册导读

数据手册就是产品(一般是芯片)厂家编写的,对这个产品的所有功能和用法的描述统一说明的文档。
1.数据手册的正确读法:先通读概览,然后根据需要去查阅。
2.学会利用 文档目录
3.利用好PDF阅读器的 搜索功能



补充-X210的dnw刷机

1.背景:
1. 之前讲第三部分的时候只讲了SD卡刷机,并没有讲usb启动刷机(dnw刷机),因为SD卡刷机较简单,dnw刷机较麻烦。
2. 有同学刷错了uboot,错刷成了nand版本的uboot(还有些确实没刷错uboot),这时候在uboot中执行了movi write u-boot 0x30000000后,再次开机碰到诡异现象:串口输出乱码、SD卡不启动。以为开发板变砖头了。这时候的解决思路就是dnw刷机。
3. 第四部分的第一节课已经讲过了dnw下载裸机程序(dnw的简单介绍,dnw驱动的安装,配置下载地址的方法),大家可以先看这节课,然后再来看本节。
  
2.刷机准备:
1. 看X210 dnw刷机.txt,按照其中进行操作
2. 事先把开发板启动方式拨到usb启动
3. 两个刷机文件准备好

3.刷机:

刷机分2步:

第一步先刷x210_usb.bin,地址是0xd0020010;

第二部刷uboot.bin,刷机地址是0x23e00000

uboot启动起来后,先fdisk -c 0去重新分区,然后再fastboot........

补充-linux下使用dd命令刷写uboot

1.SD卡连接入Linux中
首先得搞清楚:一个USB设备插到电脑后,要么可以在Windows中识别,此时不能在虚拟机Linux中识别;要么能在Linux中识别,
但是在Windows中又不见了。默认的一般都是连在Windows中的,所以Linux中是找不到的。

如果你需要将该设备连接到Linux中,需要在Vmware软件的菜单“虚拟机->可移动设备”中点选该设备,选择连接


连接进Linux中,在命令行中: ls /dev/sd*查看,和之前对比,就知道我们的SD卡在Linux中的设备编号。
一般是/dev/sdb也有可能是sdc或者其他。我们后面的实验是基于这个设备号是 /dev/sdb的,如果不是,后面的实验要相应做修改。
2.制作SD卡启动

执行 ./nand_fusing.sh /dev/sdb

注释:文件夹uboot_sd_fusing,拿到共享文件夹中去。 

3.使用SD卡启动
  先确定开发板是从SD卡启动的
  然后确定板子内的iNand中的Uboot是被破坏的,不能启动的。
  SD卡插入SD2通道,启动即可。启动后(看有没必要fdisk -c 0来分区)使用fastboot继续刷机。

补充-X210V3S开发板刷机

1.背景介绍
1.很多人刷机失败,苦恼甚至放弃学习
2.刷机的目的和意义搞清楚
3.开发板的各个版本,以及版本差异

2.刷机常见问题及分析处理

1.屏幕显示异常,原因是刷成了旧版本开发板的镜像。解决方案就是用新版本镜像。
2.dnw驱动装不上,多试几次,禁用数字签名
3.fastboot驱动装不上,多试几次,Windows联网自动安装,用360手机助手之类的工具安装
4.找不到拨码开关,不知道如何设置USB启动
5.dnw下载uboot.bin时进度条不动,卡住;禁用数字签名+右键管理员权限运行dnw软件,换电脑,使用Linux下dnw软件

6.dnw下载uboot.bin后串口没有任何信息输出。

可能性1:串口插错了;

可能性2:uboot.bin用错了。解决方案:换串口插试试(正确的是用串口2),用正确的uboot.bin

7.执行了movi write u-boot 0x30000000(uboot控制台下)后变砖了,解决方案就是dnw刷机。
8.Windows不提示安装驱动。如果开发板中就在运行uboot或者Linux+QT,这时候插上USB线主机Windows也不会发现开发板;
 当我们uboot下执行了fastboot命令后主机就会提示装fastboot驱动。当开发板运行了android系统后主机就会提示装fastboot驱动;
 当开发板设置了USB启动并且重启时就会提示装dnw驱动。
9.android系统刷机成功启动不成功。最大的可能性还是镜像用的不对。

补充-Linux下dnw软件的使用

1.将朱老师修改过的dnw-linux-x210.tar.bz2(分享云盘中)下载拷贝到WINDOWS下的winshare目录,

2.解压:/mnt/hgfs/winshare$ tar -xvf dnw-linux-x210.tar.bz2 

3.编译和安装

@1.make

make -C /lib/modules/`uname -r`/build M=`pwd`/src/driver modules

。。。。。

make[1]: Leaving directory `/mnt/hgfs/winshare/dnw-linux/src/dnw'

@2.make install

make -C /lib/modules/`uname -r`/build M=`pwd`/src/driver modules

。。。。。。。。。。

depmod

4.

编译完,进入到/mnt/hgfs/winshare/dnw-linux/src/dnw目录, DNW放到用户目录下去(没有直接建立):

root@ubuntu:/mnt/hgfs/winshare/dnw-linux/src/dnw# cp dnw /usr/local/arm/arm-2009q3/bin/

root@ubuntu:/mnt/hgfs/winshare/dnw-linux/src/dnw# cd /usr/local/arm/arm-2009q3/bin

修改执行权限:

root@ubuntu:/usr/local/arm/arm-2009q3/bin# chmod +777 dnw 

5.

设置路径,见后“修改一下路径(环境变量)rootuser下都要去添加。

root@ubuntu:/usr/local/arm/arm-2009q3/bin# cd ~

root@ubuntu:~# vi .bashrc

export PATH=/usr/local/arm/arm-2009q3/bin:$PATH”放在文件 .bashrc的最后,保存路径设置。

root@ubuntu:~# exit

exit

aston@ubuntu:~$ vi .bashrc

export PATH=/usr/local/arm/arm-2009q3/bin:$PATH”放在文件 .bashrc的最后,保存路径设置。


6.

连接好USB线,PC---开发板,开发板电源连接上,一直按着power键,虚拟机:

 02 S5PV210刷系统_第1张图片

上图是2、3步是完成后的图片。

7.

连接好USB线,PC---开发板,开发板电源连接上,按着power键执行,

aston@ubuntu:/mnt/hgfs/winshare/dnw-linux$ ls /dev/sec*

ls: cannot access /dev/sec*: No such file or directory

aston@ubuntu:/mnt/hgfs/winshare/dnw-linux$ ls /dev/sec*

/dev/secbulk0

表示安装成功了。

 

8.

进入到src/dnw目录下,再从windows系统下将x210_usb.binuboot.bin拷贝到/winshare/dnw-linux/src/dnw目录。

root@ubuntu:/mnt/hgfs/winshare/dnw-linux/src/dnw# dnw -a 0xd0020010 x210_usb.bin

optarg = 0xd0020010.

load address: 0xD0020010

Writing data...

100% 0x00002BAA bytes (10 K)

speed: 0.888348M/S

root@ubuntu:/mnt/hgfs/winshare/dnw-linux/src/dnw# dnw -a 0x23e00000 uboot.bin

optarg = 0x23e00000.

load address: 0x23E00000

Writing data...

100% 0x0006000A bytes (384 K)

speed: 0.405416M/S

root@ubuntu:/mnt/hgfs/winshare/dnw-linux/src/dnw#


9.

以后每次编译完,下载时按下POWER键,使用dnw -a 0xd0020010 led.bin命令行即可。

make(得到.bin文件)

dnw -a 0xd0020010 led.bin

2步就完成裸机实验,省得老是切换,鼠标指指点点。


uboot启动后的刷机注意事项:

1.正确的uboot启动后一定要先fdisk -c 0进行分区,然后再fastboot
2.uboot的参数中bootcmd和bootargs一定要正确。
set bootcmd 'movi read kernel 30008000; bootm 30008000'

set bootargs console=ttySAC2,115200 root=/dev/mmcblk0p2 rw init=/linuxrc rootfstype=ext3


注释:我将dnw目录放到和我的程序同一个主目录,方便后面的程序烧录全都在dnw下面



你可能感兴趣的:(cortex-A8裸机编程)