背景:芯片是t113,开发板是mango pi,在windowPC上用虚拟机ubuntu,通过机箱USB连接开发板的OTG口。
目标:利用芯片的fel功能将uboot以及linux内核烧录进ram,实现不插卡、不用flash直接启动。
易错点:sunxi-tools已采用master分支,uboot在make时已选用此开发板对应的deconfig配置。
已经实现:虚拟机可以sunxi-fel version识别芯片,并可以实现sunxi-fel uboot u-boot-sunxi-with-spl.bin烧录(见附图)
问题:烧录结束后没有任何反馈,连接串口到windows没有uboot的开机提示(正常用TF卡启动有欢迎界面),虚拟机命令行也没有欢迎语句,怀疑未正常烧录/启动。
辅助信息:烧录命令执行后,包括“sunxi-fel version”在内的所有代码均显示超时,进行新的测试只能按实体reset按钮。本机RAM大小128M。本机插卡可以正常使用。sunxi-fel splflash-info代码显示Invalid command splflash-info。
可能原因:uboot版本不对所以无法执行?但是uboot的deconfig关于mangopi只有一个;uboot已经运行但是没有显示?我需要在uboot添加什么代码才能有反馈,或者串口?
第一次发帖,格式不正确请见谅:rolleyes::rolleyes:
离线
现已解决,mangopi板上已成功用USB启动uboot并进入内核。
uboot部分:
1、在arch\arm\dts中寻找本芯片对应的dtsi文件,例如‘u-boot-master\arch\arm\dts\sunxi-d1s-t113-mangopi-mq-r.dtsi’,里面有‘serial3 = &uart3;’,然后在'arch\riscv\dts'的'sunxi-d1s-t113.dtsi'找到uart3对应PB6和PB7,把串口插在此处,运行sunxi-fel uboot ....bin即可识别到uboot开机界面。如果版本正确的话就可以顺利启动 uboot。
2、启动uboot后会发现很多网络错误,我们是用USB传输的,直接无视即可。
3、uboot界面顺利启动,下一步是参考 https://linux-sunxi.org/FEL/USBBoot 以及 https://whycan.com/t_2388.html ,得到结论,要想顺利启动linux内核,芯片(或者说sunxi-tools)需要提供uboot-with-spl.bin(进入uboot)、zimage、设备树dtb、脚本scr、和内核文件系统。
3.1、zimage需要寻找符合自己芯片的buildroot,本芯片所需的zimage在 https://codeload.github.com/mangopi-sbc/buildroot-mangopi-r/zip/refs/heads/master 下载的buildroot,按照readme提供的方式编译(约40min)就可以得到。
3.2、设备树也是本buildroot提供的。
3.3、脚本在晕哥的基础上修改,直接放到linux运行,把run.bat的命令复制出来即可(可以省5积分哈哈)主要改了文件名,地址没有改。地址依据在uboot的sunxi-common.h下,如果有用其他芯片的可以参考该头文件的规则进行修改,根据sunxi版本和ram大小略有不同。
3.4、内核文件系统也是从buildroot里拿的,找rootfs.cpio.gz.uImage。
4、环境变量有可能出错,解决方法参见 https://whycan.com/t_635.html ,也可以直接把这段咒语写进scr,需要先修改cmd,然后用工具生成scr。
kernel部分:
1、恭喜找齐五个正确的文件(这花去了我主要的时间),uboot报错的大部分的错误都是五个文件中某一个不正确导致的,尤其是rootfs.cpio.gz.uImage。
2、下一个困扰我很久的问题是串口显示start kernel ...但是没有下文,我注意到板上LED亮起,猜想内核已启动,猜想正确。原因是linux的console所用的串口和uboot的串口不同,需要修改。直接打开刚刚五个文件中准备传给kernel的dtb,把里面的uart对应的P??和P??,统统改为PB6和PB7就可以。dtb是二进制不能直接打开,找到对应的dts,修改后用dtc工具转化成新的dtb就可以。
至此进入内核linux系统,进行下一项任务(待续)
离线
@夜里的星星
https://whycan.com/t_2388.html
参考这个贴,把启动内核需要的文件用命令一起传输过去就行了,可能sunxi-fel只能在BROM时期使用,uboot起来就用不了了。佐证:内核起来之后再在上位机使用sunxi-fel命令会显示“Allwinner devices not found”,内核彻底接管了开发板。
最近编辑记录 fxx (2024-01-29 20:54:05)
离线