荔枝派的V3S有人使用Xboot进行学习吗?
最近裸机开发,使用Xboot的例程,GCC编译出来的.bin文件达到了4MB多;
下载到荔枝派的板载flash上后,上电到程序启动需要5秒多,我在想这个以后要用的话,是不是需要裁剪,因为很多外设驱动都没用到,但是直接删除makefile文件就会报错。该如何裁剪用不到的驱动呢,不是很清楚如何修改。网上没搜到,希望有大佬指点迷津。
另外就是这个启动慢的情况,是否与V3S和板载spi nor flash之间的数据传输设置问题有关。
求助。感谢!!!
https://gitee.com/xboot/xboot
离线
本人没用过xboot,初看源码,看似没有类似kconfig的配置方式,而需要修改src/Makefile里的SRCDIRS变量,注释不需要用到的源码的dir来实现裁剪。
感谢,确实裁剪了一些。。。但是makefile有些用不到的dir我已经进行了相关的注释,源码文件也进行了删除,编译的时候仍然会报错。是GCC编译器里边的.o文件报的错。是我没删干净还是编译器版本的问题。
/opt/gcc-arm-10.2-2020.11-x86_64-arm-none-linux-gnueabihf/bin/../lib/gcc/arm-none-linux-gnueabihf/10.2.1/../../../../arm-none-linux-gnueabihf/bin/ld: .obj/kernel/command/built-in.o: in function `menu':
/home/XXX/xboot/src/kernel/command/cmd-menu.c:111: undefined reference to `xui_end'
一些列的undefined reference to问题。请问继续删行得通吗?
离线
XBOOT里面包含了太多的功能 要提高速度必须的去掉没用到的
离线
@毅北辰
想多了,XBoot光靠改Makefile是远远不够的。很多代码都是写死了的,什么模块调用什么,都是有依赖的。
找找我N年前有个帖子,裁剪XBoot的,代码要改好多的。
离线
好像最小可以弄到150K左右
但是的去掉GUI ,去掉图形引擎 ,去掉字体库
离线
@毅北辰
想多了,XBoot光靠改Makefile是远远不够的。很多代码都是写死了的,什么模块调用什么,都是有依赖的。
找找我N年前有个帖子,裁剪XBoot的,代码要改好多的。
我找到18年有个博客帖子,我按照里边的,只能操作了一部分,说是按照报错去找文件删除。操作了一会,再按照博客的继续删,就会出现报错,项目里边的代码删了也还是会提示错误,文件在项目里都找不到了,还报错,也不知道那里链上的,吐了。而且有的看路径是GCC文件里边的错,我这就有点懵了。现在纠结是不知道该删那些,因为看不懂:(。xboot应该不是给小白用的吧,好像没什么资料看。
离线
好像最小可以弄到150K左右
但是的去掉GUI ,去掉图形引擎 ,去掉字体库
对。但是如果里边的对图形的操作之类的不动的话,最终减下来也减不了多少吧。我在网上有个思路说是程序拷到SRAM里边后,提前执行代码及其需要的资源,运行起来,再加载剩下的资源,但是我不懂怎么改。话说回来:D ,我要会改好像也不会纠结了,有点无知闭环了[尴尬]。
离线
@毅北辰
你说的就是SPL的思想,XBoot已经用SPL了。
离线
加载的瓶颈是spi nor flash的SPI读取速度
印象中基本不能再快了
离线
可以考虑用SD卡加载 有模拟SD卡的芯片的
离线
改下spi读取那一块,读取16M数据仅需0.75s
离线
@毅北辰
你说的就是SPL的思想,XBoot已经用SPL了。
【尴尬】对,我看到编译输出信息提示里边有一句“The bootloader head has been fixed, spl size is 32768 bytes.”
请教了GPT的解释是:“这句话是一个启动引导程序的输出信息。它表示启动引导程序头部已被固定,SPL(Secondary Program Loader)大小为 32768 字节。换句话说,启动引导程序的头部和 SPL 的大小已被确定下来。启动引导程序是一段特殊的代码,负责系统启动时进行低级别的硬件初始化、加载操作系统内核或其他引导加载程序等操作。在启动引导程序中,SPL 是启动引导程序执行时加载和运行的第二个程序镜像,通常作为引导加载程序的一部分使用。”
离线
改下spi读取那一块,读取16M数据仅需0.75s
老哥能细说吗?我改了设备树文件SPI总线的频率好像没用。
"blk-spinor@0": {
"spi-bus": "spi-v3s.0",
"chip-select": 0,
"mode": 0,
"speed": 50000000,
"partition": [
{ "name": "xboot", "offset": 0, "length": 4194304 },
{ "name": "private", "offset": 4194304, "length": 0 }
]
},
我按着修改了这个,没起作用。
GPT:“"speed" 属性指定了 SPI 总线的速率,它控制了 SPI 传输的时钟频率。因此,可以通过修改 "speed" 属性来修改 SPI 总线的速率,进而间接地修改 SPI 速度。在这个例子中,"speed" 属性值为 50000000,表示 SPI 总线的时钟频率为 50MHz。”
“根据全志 V3S 数据手册中的说明,板载 SPI NOR Flash 支持的最高速率为 83 MHz”
我的flash芯片是XT25F128B。16MB大小的。如果读得快一些应该会更快吧?
离线
@毅北辰
spi可以支持到100M的,另外还需要修改优化spi读取部分,一般做到20M/s不是问题
离线