Uboot22之led灯调试及刷机

时间:2018.4.6  作者:Tom   工作:HWE 说明:如需转载,请注明出处。已注明转载

1.Led灯的实验

目的:在lowleve_init前后加一个灯。

目标:九鼎X210开发板上的三个灯,GPJ0_3,GPJ0_4,GPJ0_5

需要的寄存器:

GPJ0CON        0xE020_0240

GPJ0_DAT        0xE020_0244

GPJ0PUD        0xE020_0248

GPJ0DRV        0xE020_024C

GPJ0CONPDN        0xE020_0250

GPJ0PUDPDN        0xE020_0254

操作的目标文件:start.S

增加的指令函数:注意我这里没使用读改写的步骤,不够规范。

Uboot22之led灯调试及刷机_第1张图片

增加灯的代码位置:

Uboot22之led灯调试及刷机_第2张图片

然后回到主目录,

第一步:make distclean

第二步:make

生成u-boot.bin文件。下面我们讲一下怎么把我们的uboot.bin文件刷到SD卡中。主要分线刷和卡刷。

2.将uboot.bin刷到SD中

2.1破坏开发板中inand中的uboot

1)uboot中破坏uboot

a.在inand的uboot底下擦除uboot有两种方法:一种是movi指令,一种是mmc指令,哪一种都可以。

Uboot22之led灯调试及刷机_第3张图片

执行(输入):

#:movi write u-boot 0x30000000

//将内存0x30000000里面的内容(应该全部是0)写入到u-boot分区(inand)里面

执行命令完毕后,画面显示:

重启X210,发现串口中输出,表明头部校验和失败,已经转入SD卡通道启动了。

再插入烧好的SD卡,即可启动。

b.在Sd卡的uboot下破坏uboot,这个不需要。我们刷卡的时候会把原来的覆盖。但是无法判断卡中的镜像是老的uboot,还是新的uboot。也就是说无法确定是否成功,但如果刷的uboot不对,肯定会有问题,能看出来。我尝试了将SD插在电脑上进行格式化,但结果里面的镜像还是存在的,比较奇怪。

2)系统中破坏uboot

1、android 系统控制台,执行如下指令:
#:busybox dd if=/dev/zero of=/dev/block/mmcblk0 bs=512 seek=1 count=1 conv=sync

#:sync

Uboot22之led灯调试及刷机_第4张图片

2、Linux系统控制台,执行如下指令:

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

#:sync

以上所有的验证是在Android下测试的,Linux下操作是一样的。

3、开机,发现系统无法启动。出现如下的提示信息:

Uboot22之led灯调试及刷机_第5张图片

2.1 windows中刷SD卡

这个就不多说了,网上很多教程。但我使用九鼎官方的那个软件烧录SD卡,插上去是失败的。

首先要说的是,刷机很浪费时间。在工作中使用的工具以及方法又不一样。所以我觉得只要掌握一种方法即可。工作中用到的时候再去研究。你不可能为了刷机耗了好几天,得不偿失。公司找你研发不是为了刷机,是为了后面的研发,所以我们应该把重点放在后面,谨记!!!!

但是刷机不成功会让人很恼火的!!

https://www.cnblogs.com/zou107/p/5054631.html。

2.2 linux下使用DD命令刷机

工具:九鼎官方uboot文件下的sd_fusing目录。

  1. 对uboot源代码进行完修改(修改内容根据自己的理解和分析来修改)
  2. make distclean然后make x210_sd_config然后make
  3. 编译完成得到u-boot.bin,然后去烧录。烧录方法按照裸机第三部分讲的linux下使用dd命令来烧写的方法来烧写。
  4. 烧写过程:

第一步:进入sd_fusing目录下

第二步:make clean

第三步:make

第四步:sd_fusing.sh的修改:确保下图中的bin文件名字是正确的。

Uboot22之led灯调试及刷机_第6张图片

第五步:插入sd卡,ls /dev/sd*得到SD卡在ubuntu中的设备号(一般是/dev/sdb,注意SD卡要连接到虚拟机ubuntu中,不要接到windows中)

第六步:./sd_fusing.sh /dev/sdb完成烧录(注意不是sd_fusing2.sh)

Uboot22之led灯调试及刷机_第7张图片

  1. 总结:uboot就是个庞大点复杂点的裸机程序而已,我们完全可以对他进行调试。调试的方法就是按照上面步骤,根据自己对代码的分析和理解对代码进行更改,然后重新编译烧录运行,根据运行结果来学习。

3.结果:三个常亮。

你可能感兴趣的:(Uboot22之led灯调试及刷机)