移植最新版u-boot至myir-ricoboard(am4378)卷1: 下载u-boot,将最适配的defconfig配置编译后烧录

声明:本文针对有一定u-boot开发基础的人员,初学者看起来还需要更多的辅助材料;

 最新版的u-boot至u-boot官方网站github中下载release版本,千万不要直接在GitHub中git clone临时版本,其中很可能有些功能没有调通.

至于编译环境, 笔者选择的是ubuntu18.04.接下来就是构建自己的编译工具链了, 由于使用的是ti的am4378 SOC,工具链可以很方便的从ti官网下载ti am4378的SDK,里面包含有arm-linux-gnueabihf-相关工具链,关于该工具链的细节可以至linaro官网进行了解.

而对于喜欢折腾的朋友可以自己动手构建工具链, 关于构建的细节可以参考crosstool-NG官网, 构建之后最好将其添加至环境变量;

做好这些之后先不要急于进行u-boot源码的编译,而要首先了解开发板的细节, 之后可以去ti官网看看,有不少的的教程可供参考,比如从这个页面, 详细介绍了ti官方的各个开发板的详细构建细节,各个开发板支持的启动方式等等.从这里了解到,如果需要从qspi启动,使用am43xx_evm_qspiboot_defconfig是最好的选择,接下来对开发板有了最初的了解后,就可以进行源码编译了:

在这有一个编译源码的小技巧,一般教程是这样编译的:

# Use 'am335x_evm' and 'AM335x GP EVM' in this example
$ make CROSS_COMPILE=arm-linux-gnueabihf- O=am335x_evm am335x_evm_defconfig
$ make CROSS_COMPILE=arm-linux-gnueabihf- O=am335x_evm

在这里有一个更佳的替代方案,首先将ARCH及CROSS_COMPILE导入临时环境变量,具体操作如下:

# Use 'myir-ricoboard' am4378 in this example
$ export ARCH=arm
$ export CROSS_COMPILE=arm-cortexA9-linux-gnueabi-

其中的arm-cortexA9-linux-gnueabi-,可以替换为自己工具链prefix,如"arm-linux-gnueabihf-"等等,接下来就可以make am43xx_evm_qspiboot_defconfig, make -j 8,生成uboot.bin,关于该文件详细介绍等,咨询www.baidu.com,或者uboot README文档等;

之后就可以将uboot烧录至qspi了,烧录uboot,不建议选择串口,网口是一个更佳的方案,而关于如何在虚拟机上构建tftp服务器,可以参考如下链接: 在ubuntu虚拟机下实现UBOOT的TFTP下载功能, 其中需要将网络连接设置为桥接模式,不过虚拟机设置为桥接后是不能访问外网的,可以参考这个教程来设置,Ubuntu Desktop 18.04 设置静态IP方法(超详细),之后打开ubuntu终端,输入ping www.baidu.com -c 4,就会出现下面这个画面了:

mnlife@ubuntu:~$ ping www.baidu.com -c 4
PING www.a.shifen.com (163.177.151.109) 56(84) bytes of data.
64 bytes from 163.177.151.109 (163.177.151.109): icmp_seq=1 ttl=53 time=35.1 ms
64 bytes from 163.177.151.109 (163.177.151.109): icmp_seq=2 ttl=53 time=53.6 ms
64 bytes from 163.177.151.109 (163.177.151.109): icmp_seq=3 ttl=53 time=53.9 ms
64 bytes from 163.177.151.109 (163.177.151.109): icmp_seq=4 ttl=53 time=32.7 ms

--- www.a.shifen.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3006ms
rtt min/avg/max/mdev = 32.782/43.876/53.920/9.942 ms
mnlife@ubuntu:~$ 

接下来就可以使用tftp进行下载了;打开串口终端,window,linux虚拟机下都可以(win10推荐secureCRT, ubuntu推荐minicom, secureCRT,等等),进行如下操作:

虚拟机内将u-boot.bin拷贝至tftp文件夹,将myir-ricoboard设置为qspi启动,连接网线,串口等,注意myir-ricoboard的串口为TTL电平,串口线也需要是TTL电平适配的.下载时要关掉win10无线网卡,否则不能连接tftp服务器,接下来进行如下操作:


U-Boot 2018.11 (Jan 23 2019 - 21:47:28 +0800)

All IO port config done!
CPU  : AM437X-GP rev 1.2
Board is not compatible with TI's EEPROM definition!!!
ti i2c eeprom recognition failed
Model: TI AM437x Industrial Development Kit
DRAM:  512 MiB
PMIC:  TPS65218
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1
Loading Environment from SPI Flash... SF: Detected w25q128bv with page size 256 Bytes, erase size 4 KiB, total 16 MiB, mapped at 30000000
*** Warning - bad CRC, using default environment

Net:   
Warning: ethernet@4a100000 using MAC address from ROM
eth0: ethernet@4a100000
Hit any key to stop autoboot:  0 
=> tftp 80800000 u-boot.bin
link up on port 0, speed 1000, full duplex
Using ethernet@4a100000 device
TFTP from server 192.168.43.6; our IP address is 192.168.43.8
Filename 'u-boot.bin'.
Load address: 0x80800000
Loading: ################################################
         3.6 MiB/s
done
Bytes transferred = 697092 (aa304 hex)
=> sf probe
SF: Detected w25q128bv with page size 256 Bytes, erase size 4 KiB, total 16 MiB, mapped at 30000000
=> sf update 80800000 0 b0000
device 0 offset 0x0, size 0xb0000
720896 bytes written, 0 bytes skipped in 18.839s, speed 39178 B/s
=> reset
resetting ...


U-Boot 2018.11 (Jan 27 2019 - 10:26:04 +0800)

CPU  : AM437X-GP rev 1.2
ti_i2c_eeprom_init failed
Model: Texas Instruments AM4372 Generic
DRAM:  

reset之后,程序打印DRAM:后就没有输出了,说明很大可能是卡在了DRAM初始化的地方,这些内容下次再详细介绍.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值