stm32f469i-disco,在qspi flash上把xip内核拉起来了;竟然花了高达15秒的时间。如果是on-chip flash这个时间只有3-4秒。因为没有i cache和d cache,大部分时间都消耗在等待指令上了。这也是为什么这类使用场景应该转向cortex m7或m33的原因。
当前这个配置来自buildroot官方配置,稍作修改。启动后的rootfs是initramfs,是cpio压缩后和内核一起打包的。我不清楚initramfs有没有可能不压缩而且支持xip,很多年以前有个commit进入主线声称是干这个的(for nommu),如果这个能做到当然是最好的方式。
另外一个方式是使用cramfs文件系统,可以一起打包成initrd也可以不用initrd/initramfs直接就在flash里,要看一下文档怎么告知内核它的内存地址。
还有一个方式是用axfs,瑞萨曾经在mmu系统上支持过这个文件系统。它的优点是没什么限制,最初是为了替代cramfs开发的,但没有并入主线,开发也已经停止了。好在这类只读文件系统都很简单,易于维护。cramfs的具体限制是单个可执行文件不能超过16MB,总大小不超过256MB。
图片里能看到系统内存是16MB,用掉了5MB,一部分是内核自己需要的数据段,还有一部分就是解压到initramfs,因为没有switch_root/pivot_root走,这部分内存还占着。
这个内核裁到毛都没了,整个网络协议栈扔掉,重要的设备协议栈,主要是USB,也扔了,文件系统也砍到接近于无,但凡要做一点有用的东西这三样不能全砍光。
这个xip实现里没有使用uboot,用了一个很精简的afboot,用于初始化时钟,内存,usart打印,qspi等等。afboot用Makefile的,但实际上也可以把代码都端到ide里去搞,那个配置外设方便很多。
st官方给过一个各种flash和内存配置下的CPU benchmark的文档,在cortex m7上即使使用qspi flash和55ns的psram,因为有cache,性能也没比使用片上flash/sram慢多少,这一点和m4是巨大差别。
++++
linus曾经表示过内核有肿的倾向不适合这个级别的iot,但是内核里的设备协议栈,网络栈,和文件系统仍然非常宝贵。网络栈有可能在一些rtos里逐渐成熟起来,但设备协议栈和文件系统非常任重道远,更不要说userspace了。
实际上只要不是特别苛刻的要求功耗,大约成本上能抗64MB左右内存这个坎,因为越来越多的iot节点需要应对网络通讯,应用层的网络api,设备协议栈和文件存储,在未来十年里Linux(uclinux)卷土重来是大几率事件,尤其是随着wasm的成熟,使用软vm来对抗没有硬件mmu的程序安全的和可靠性问题将变得越来越可行。对高精度图形的支持也会是一个重要硬件推手。它会推高内存配置,而只要有足够的内存,*nix就可以大显身手。
当前这个配置来自buildroot官方配置,稍作修改。启动后的rootfs是initramfs,是cpio压缩后和内核一起打包的。我不清楚initramfs有没有可能不压缩而且支持xip,很多年以前有个commit进入主线声称是干这个的(for nommu),如果这个能做到当然是最好的方式。
另外一个方式是使用cramfs文件系统,可以一起打包成initrd也可以不用initrd/initramfs直接就在flash里,要看一下文档怎么告知内核它的内存地址。
还有一个方式是用axfs,瑞萨曾经在mmu系统上支持过这个文件系统。它的优点是没什么限制,最初是为了替代cramfs开发的,但没有并入主线,开发也已经停止了。好在这类只读文件系统都很简单,易于维护。cramfs的具体限制是单个可执行文件不能超过16MB,总大小不超过256MB。
图片里能看到系统内存是16MB,用掉了5MB,一部分是内核自己需要的数据段,还有一部分就是解压到initramfs,因为没有switch_root/pivot_root走,这部分内存还占着。
这个内核裁到毛都没了,整个网络协议栈扔掉,重要的设备协议栈,主要是USB,也扔了,文件系统也砍到接近于无,但凡要做一点有用的东西这三样不能全砍光。
这个xip实现里没有使用uboot,用了一个很精简的afboot,用于初始化时钟,内存,usart打印,qspi等等。afboot用Makefile的,但实际上也可以把代码都端到ide里去搞,那个配置外设方便很多。
st官方给过一个各种flash和内存配置下的CPU benchmark的文档,在cortex m7上即使使用qspi flash和55ns的psram,因为有cache,性能也没比使用片上flash/sram慢多少,这一点和m4是巨大差别。
++++
linus曾经表示过内核有肿的倾向不适合这个级别的iot,但是内核里的设备协议栈,网络栈,和文件系统仍然非常宝贵。网络栈有可能在一些rtos里逐渐成熟起来,但设备协议栈和文件系统非常任重道远,更不要说userspace了。
实际上只要不是特别苛刻的要求功耗,大约成本上能抗64MB左右内存这个坎,因为越来越多的iot节点需要应对网络通讯,应用层的网络api,设备协议栈和文件存储,在未来十年里Linux(uclinux)卷土重来是大几率事件,尤其是随着wasm的成熟,使用软vm来对抗没有硬件mmu的程序安全的和可靠性问题将变得越来越可行。对高精度图形的支持也会是一个重要硬件推手。它会推高内存配置,而只要有足够的内存,*nix就可以大显身手。
【必读好文】WebAssembly (Wasm) 最初以不受语言限制的浏览器运行时环境,可安全、快速地运行 JavaScript 以外的其他语言而迅速崛起。现在,面向服务器端的 Wasm 以更高的灵活性和可管理性开启了标准插件模型的无限可能,可让插件实现语言中立、硬件中立、模块化以及彼此隔离。了解更多:https://t.cn/A6jOZDRY
ALT会不会是下一个百倍币
Altlayer属于模块化赛道。
不仅可以连通L1,支持EVM和WASM(支持这两个,意味着除了Move系的公链几乎都可以支持),可见支持的公链范围较广。altlayer还提出了rollup as a service,想做一个定制化的 rollup基础设施。L2会呈现出越来越多的趋势,比如常见的op,arb,还有正在开发的linea,zksync,starknet,scroll,taiko,mnt等。
L2的定制化(也可以叫L3)也会呈现越来越多的趋势,比如op的op stack, arb的 arb orbit, zkysnc的hyperchains等。虽然目前只有op stack繁荣一些,但趋势势不可挡。由之前公链Zilliqa的CTO创建。
币安, Coinbase的CTO,波卡创始人都有投这个项目,可以看到投资阵容是比较强大的。所以altlayer是一个值得关注的项目,它的投资机构雄厚,L1和L2的模块化都有参与,属于蓝海赛道。 短期和长期相对来说都比较看好。#公链##区块链#
Altlayer属于模块化赛道。
不仅可以连通L1,支持EVM和WASM(支持这两个,意味着除了Move系的公链几乎都可以支持),可见支持的公链范围较广。altlayer还提出了rollup as a service,想做一个定制化的 rollup基础设施。L2会呈现出越来越多的趋势,比如常见的op,arb,还有正在开发的linea,zksync,starknet,scroll,taiko,mnt等。
L2的定制化(也可以叫L3)也会呈现越来越多的趋势,比如op的op stack, arb的 arb orbit, zkysnc的hyperchains等。虽然目前只有op stack繁荣一些,但趋势势不可挡。由之前公链Zilliqa的CTO创建。
币安, Coinbase的CTO,波卡创始人都有投这个项目,可以看到投资阵容是比较强大的。所以altlayer是一个值得关注的项目,它的投资机构雄厚,L1和L2的模块化都有参与,属于蓝海赛道。 短期和长期相对来说都比较看好。#公链##区块链#
✋热门推荐