一步步学习基于Linux4.4的TINY4412开发--uboot的移植

开发板:tiny4412-1506 储存4G、内存1G

系统:ubuntu16.04 虚拟机

u-boot: u-boot 2010.12

compiled tool: arm-none-linux-gnueabi-gcc (gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29))

参考:

1、https://www.cnblogs.com/pengdonglin137/p/5137941.html

2、https://www.cnblogs.com/pengdonglin137/articles/4161084.html

3、http://www.cnblogs.com/kevinhwang/p/5617629.html

感谢两位的分享!

uboot 下载:https://github.com/friendlyarm/uboot_tiny4412

dnw 下载:https://github.com/xxxdk/tiny4412_kernel4.4

交叉编译链: http://p9hmezxvc.bkt.clouddn.com/arm-linux-gcc-4.8.3.tar.gz


第零步交叉编译链的安装不在这里说明了。编译时提示没有arm-linux-gcc等错误,针对该问题,1、对Makefile进行修改。2、处理arm-linux-*与arm-none-linux-gnueabi-*不对等的问题。即对arm-2014.05/bin中的文件进行软连接,然后将软连接的名字由arm-none-linux-gnueabi-*改为arm-linux-*即可,这里可以直接使用rename进行操作。

第一步就是根据彭东林博客对友善之臂在github的代码进行修改,然后再根据Kevin_Hwang的博客进行修改。彭的修改主要是为了实现MMU的关闭、支持uImage、支持设备树,Kevin的修改主要对tiny4412-1506更改了内存方案的支持,具体的说明请看具体博文。

第二步DNW的注意点,1、需要注意下载地址和校验,2、需要安装libusb环境。网上DNW大概有两个版本libusb和secbulk,libusb编译、使用便捷。4412-1506内存只有1G,uboot也关闭了MMU,所以内存地址为0x40000000--0x80000000,如果按照彭的博文进行操作会遇到错误地址之类的错误提示!校验是对传输的数据进行校验和,放在数据流的最末传输给板子的dnw接收程序。正常的传输过程是板子的dnw接受完数据后会提示接收完成,自动退出板子端的dnw。之前试过几个PC端的dnw是没有这个情况的,也是比较坑。

第三步emmc write大小计算,将uboot下载到内存后,就需要写入emmc中了。具体烧写操作可以看彭的博文,但是需要注意,烧写的块数要根据实际情况修改,具体可以根据dnw传输量进行计算。例如E4412_tzsw.bin大小为94208字节,根据算式94208/512 = 184,184的hex为B8,则 mmc write 1 0x50000000 0x2c0 0xB8。如果计算有小数,直接向上取整在取hex。

猜你喜欢

转载自blog.csdn.net/colouring/article/details/80591604