您尚未登录。

楼主 #1 2020-06-22 06:41:05

羽剑天涯
会员
注册时间: 2019-10-22
已发帖子: 13
积分: 13

f1c100s/f1c200s尝试从0开始使用主线uboot

新开一个系列挖坑贴,尝试从0开始使用主线的uboot/kernel等支持f1c100s/f1c200s,一下内容有错误时欢迎讨论补充
好的,废话不多说,先把现在摸索的进展贴一下:
目前主线uboot 2020.04已成功编译运行,但好像不分驱动还有些问题:
uboot_pic1.png
请忽略Run@……的调试信息,这是我自己加的正在调试的。
(以下简称f1c100s,我实际是在f1c200s上调试的(tiny200),但应该是通用的)

1,一些前提介绍(大神欢迎指点,记录下也方便解答一下我以前一直不是清楚的地方):
f1c100s芯片的启动顺序,论坛里已经有介绍过了,具体是参考V3s手册中的介绍,详细链接见https://whycan.cn/t_1746.html中晕哥的解答。
简单来说芯片上电后后启动芯片的BROM固话代码,该启动代码会按照sdc0-> spi0 nor -> spi0 nand -> usb顺序尝试启动
我现在测试用的spi0 nor

spi0 nor时,BROM会先加载uboot固件中的spl代码(Secondary Program Loader),然后由spl加载真正的uboot,所以你看到启动时会先打印u-boot spl 然后再打印一次u-boot。

uboot 后会再去加载kernel,加载rootfs真正完成linux启动

2,一些工具源码准备:
主线用到的工具或源码:

2.1 编译工具链官网:https://www.linaro.org/(或https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain后文以linaro为例)
     进入support->downloads可以看到下载页面,点击稳重的GNU cross-toolchain binary archives,可以进入对应下载列表https://releases.linaro.org/components/toolchain/binaries/,可以看到各个版本的toolchain,这里我使用的latest-7/arm-linux-gnueabi/即gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi
2.2 Uboot官网:http://www.denx.de/wiki/U-Boot/WebHome

   进入source code,可以找到源码的Git路径:https://gitlab.denx.de/u-boot/u-boot.git
2.3 Kernel官网:https://www.kernel.org/
   下载Git源码,可以自行选择对应的分支(5.4.x/4.19.x/...),点击browse,下一个页面点击summary,最下边clone可以看到对应的git地址

2.4 rootfs:一般建议用https://buildroot.org/,也有其他如Yocto,OpenWRT/LEDE等(这些都没用过)

3,一般步骤:
  编译uboot,编译kernel,打包rootfs,最后打包完整镜像,烧写。



后续开始从楼下开始正文

离线

楼主 #2 2020-06-22 06:47:28

羽剑天涯
会员
注册时间: 2019-10-22
已发帖子: 13
积分: 13

Re: f1c100s/f1c200s尝试从0开始使用主线uboot

uboot 折腾记录:
uboot我使用主线的v2020.04版本,参考licheepinano给的资料(他的uboot是基于v2018.01)
通过对比v2018.01与licheepinano官方uboot的差异,逐一合并入v2020.04,以下是一些合并的记录,目前还没解决完,解决完以后放出差异文件:
uboot_pic2.png

目前有问题的是dm tree已经有了这个flash,但是系统其它模块好像没识别,sf等命令会提示重新挂载flash,而实际probe时,又报错。
准备对一下v2018.01的执行顺序和v2020.04的执行顺序,看看差异在哪,今天折腾不动了。

最近编辑记录 羽剑天涯 (2020-06-22 06:51:22)

离线

楼主 #3 2020-06-22 06:52:13

羽剑天涯
会员
注册时间: 2019-10-22
已发帖子: 13
积分: 13

Re: f1c100s/f1c200s尝试从0开始使用主线uboot

占个楼,后续更新Kernel折腾记录用

离线

楼主 #4 2020-06-23 07:13:52

羽剑天涯
会员
注册时间: 2019-10-22
已发帖子: 13
积分: 13

Re: f1c100s/f1c200s尝试从0开始使用主线uboot

自己发的帖子不能编辑了吗?

更新一下最新进展:
uboot_pic3.png

uboot可以正常读取spi flash了,原来是v2020.04的spi驱动drivers/spi/spi-sunxi.c不能直接用,
无法按参数树读取clock等信息。替换进来v2018.01的spi驱动drivers/spi/sun6i_spi.c并修改Makefile和config使用这个驱动就可以了。


摸索中学到的一些flashlayout信息:

offset-start     offset-end         content       其他说明
0                     0x8000          uboot-spl     offset-end由下一个offset-start决定,实际大小为u-boot-spl.bin的大小
0x8000            0x100000        uboot         offset-start由menuconfig中的CONFIG_SYS_SPI_U_BOOT_OFFS决定
0x100000         0x110000       kernel         offset-start由uboot的bootcmd中的sf read决定,目前是从100000读0x4000到0x80C00000
0x110000         0x510000        rootfs         offset-start由uboot的bootcmd中的sf read决定,目前是从110000读0x400000到0x80008000


后边继续继续开始准备折腾主线kernel

离线

楼主 #7 2020-06-23 14:11:03

羽剑天涯
会员
注册时间: 2019-10-22
已发帖子: 13
积分: 13

Re: f1c100s/f1c200s尝试从0开始使用主线uboot

合并后的提交在https://gitee.com/wang33__winner/u-boot.git分支v2020.04-f1cxxx
感兴趣的可以试试,主要就是比较了原来版本的差异,合并入主线v2020.04,碰到的一些问题做了处理,目前可以正常编译运行
不能编辑楼层,那之前占楼白占楼了,后边折腾kernel的再单独开贴吧。

离线

楼主 #8 2020-06-23 14:24:18

羽剑天涯
会员
注册时间: 2019-10-22
已发帖子: 13
积分: 13

Re: f1c100s/f1c200s尝试从0开始使用主线uboot

本帖目的不是为了让大家用我提交的那个版本(我不会做很好维护,会提交一些我自己定制的东西),而是抛砖引玉,通过折腾让各位了解一下如何使用最新版本的uboot/kernel等(最主要是让我摸索学习一下:P )。
有些人可能就是有这种“洁癖”,希望能跟上最新的主线代码(比如我,哈哈),那么这里可以参考一下,后边有v2020.07甚至v2021.xx也可以自己动手,合并后跟上相应主线代码。
这里的toolchain也是选择的latest-7(说不定8或9也可以,各位也可以自己试一下)

离线

楼主 #9 2020-07-17 04:01:26

羽剑天涯
会员
注册时间: 2019-10-22
已发帖子: 13
积分: 13

Re: f1c100s/f1c200s尝试从0开始使用主线uboot

u-boot v2020.07发布了,合并后的提交在https://gitee.com/wang33__winner/u-boot.git分支v2020.07-suniv
同时把差异文件也放一份,喜欢折腾的可以自己折腾:
v2020_07.zip

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn