前文:
终于搞好了荔枝派nano linux uboot瘦身 + usb gadget hid + gt911触控 + littlevgl demo
相关的配置文件,编译好的二进制都可以在楼层中找到。
0x01: 开机卡在waiting for rootfs
原因有两点
1. 找不到SPI flash
f1c100s应使用A31的spi控制器驱动,但lichee官方config中是启用的A10 SoC的驱动。
表现为开机ttl日志中没有dts中的spiflash 分区信息打印,且卡在waiting for rootfs
启用:Device Driver ---> SPI Support ---> Allwinner A31 SPI controller
禁用:Device Driver ---> SPI Support ---> Allwinner A10 SoCs SPI controller
2. 未开启mtdblock
lichee官方的u-boot 中 kernel cmdline 使用jffs2格式的mtdblock3作为rootfs,但config中没有打开mtdblock设备接口。
表现为开机ttl日志中有dts中的spiflash 分区信息打印,但仍然卡在waiting for rootfs
启用:Memory Technology Device (MTD) support ---> Caching block device access to MTD devices
0x02: 无法挂载jffs2分区
lichee 官方配置文件没有打开jffs2的文件系统支持。
启用: File systems ---> Miscellaneous filesystems ---> Journalling Flash File System v2 (JFFS2) support
这里推荐把squashfs4.0也一并打开,后面会开一帖讲下如何添加更新固件和恢复默认设置的功能。
0x03: 开机后报大量JFFS2 erase size错误
这个lichee官方和论坛里很多人的帖子都有提到,修复方法是patch掉内核里对应flash型号的SECT_4K参数。但是实际上内核配置文件中为我们预留了关闭4K erase size 的选项,无需侵入内核代码修改。
禁用:Memory Technology Device (MTD) support ---> SPI-NOR device support ---> Use small 4096 B erase sectors
这样以后更换其他的flash芯片也无需重新修改内核。
0x04: 运行framebuffer gui程序后,右上角有闪烁的光标
论坛里有修改bootargs的办法:
https://whycan.cn/t_543.html
https://whycan.cn/t_1953.html#p12829
搜索引擎里搜到的基本都说要patch代码
但我个人认为两种方法都不是根本办法,其实config中有可以关闭framebuffer 作为console的选项。
修改方法
禁用:Device Driver ---> Graphics support ---> Console display driver support ---> Framebuffer Console support
但这个选项默认无法修改。仔细查看相关的Kconfig文件后,发现这个选项只有启用了专家模式(Expert Mode),且没有其他依赖选项时才可以关闭。
启用专家模式:General setup ---> Configure standard kernel features (expert users) 但不要修改里面的选项
然后就可以禁用:Device Driver ---> Graphics support ---> Console display driver support ---> Framebuffer Console support
这样你的显示器在framebuffer初始化完了就会变成黑色,运行gui程序后也不会有闪烁的光标了。
最近编辑记录 xm1994 (2019-07-24 22:54:46)
离线
感谢分享, 0x03 技巧 get 到了!
我也是觉得以前给其他设备适配openwrt的时候,也用的w25qxx,没修改过内核的相关代码,后来仔细查了查发现能从config里直接关掉。而且用修改代码的方法换一片其他的flash就又要重编内核好麻烦。
离线
感谢分享,学习了
离线
0x04: 运行framebuffer gui程序后,右上角有闪烁的光标
论坛里有修改bootargs的办法:
https://whycan.cn/t_543.html
https://whycan.cn/t_1953.html#p12829
搜索引擎里搜到的基本都说要patch代码但我个人认为两种方法都不是根本办法,其实config中有可以关闭framebuffer 作为console的选项。
修改方法
禁用:Device Driver ---> Graphics support ---> Console display driver support ---> Framebuffer Console support
但这个选项默认无法修改。仔细查看相关的Kconfig文件后,发现这个选项只有启用了专家模式(Expert Mode),且没有其他依赖选项时才可以关闭。
启用专家模式:General setup ---> Configure standard kernel features (expert users) 但不要修改里面的选项
然后就可以禁用:Device Driver ---> Graphics support ---> Console display driver support ---> Framebuffer Console support
这样你的显示器在framebuffer初始化完了就会变成黑色,运行gui程序后也不会有闪烁的光标了。
原来如此
离线
关于framebuffer的问题,其实可以不用改内核编译参数的
echo 0 > /sys/class/graphics/fbcon/cursor_blink
echo 0 > /sys/class/vtconsole/vtcon1/bind
这样就可以关掉了
离线
不过那样改之后可以不用占ROM空间了
离线
留下记号,刚把系统运行起来,早看了这个早就好了。。。
离线
0x04 学到了 &_&, 谢谢分享.
离线
MARK,谢谢楼主干货
离线
感谢大神的解惑
离线
这个有用先标记,0x03 这样改好多啦。很多东西理解不到位啊!
离线
感谢分享,学习了
离线
离线
离线
离线