页次: 1
&pio { spi0_cs_pins: spi0_cs_pins { pins = "PC3", "PH6"; function = "gpio_out"; }; }; &spi0 { status ="okay"; pinctrl-names = "default"; pinctrl-0 = <&spi0_pins &spi0_cs_pins>; cs-gpios = <&pio 2 3 GPIO_ACTIVE_HIGH>, <&pio 7 6 GPIO_ACTIVE_HIGH>; mx25l25635e:mx25l25635e@0 { compatible = "jedec,spi-nor"; reg = <0x0>; spi-max-frequency = <50000000>; #address-cells = <1>; #size-cells = <1>; }; panel@0 { compatible = "sitronix,st7789v"; reg = <1>; reset-gpios = <&pio 2 4 GPIO_ACTIVE_HIGH>;//PC4 dc-gpios = <&pio 2 7 GPIO_ACTIVE_LOW>;//PC7 /*backlight = <&pwm_bl>;*/ led-gpios = <&pio 7 0 GPIO_ACTIVE_LOW>;//PH0 spi-max-frequency = <50000000>; spi-cpol; spi-cpha; buswidth = <8>; rotate = <270>; rgb; fps = <30>; debug = <1>; };
亲测可用。
对于f1c100s的spi0的cs应该默认为PC1
u-boot v2020.07发布了,合并后的提交在https://gitee.com/wang33__winner/u-boot.git分支v2020.07-suniv
同时把差异文件也放一份,喜欢折腾的可以自己折腾:
v2020_07.zip
合并后的提交在https://gitee.com/wang33__winner/u-boot.git分支v2020.04-f1cxxx
感兴趣的可以试试,主要就是比较了原来版本的差异,合并入主线v2020.04,碰到的一些问题做了处理,目前可以正常编译运行
不能编辑楼层,那之前占楼白占楼了,后边折腾kernel的再单独开贴吧。
自己发的帖子不能编辑了吗?
更新一下最新进展:
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
新开一个系列挖坑贴,尝试从0开始使用主线的uboot/kernel等支持f1c100s/f1c200s,一下内容有错误时欢迎讨论补充
好的,废话不多说,先把现在摸索的进展贴一下:
目前主线uboot 2020.04已成功编译运行,但好像不分驱动还有些问题:
请忽略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,最后打包完整镜像,烧写。
后续开始从楼下开始正文
页次: 1