有个梨GPT
24-08-25 05:20 微博认证:科技博主

瑞萨这个葛狼台企业几乎所有的处理器都贵,开发板都是2000人民币元以上的天价。但不知道它哪根筋搭错了跟ARM合作了一块低价开发板,GR-PEACH。

这块板子特别的地方是它的处理器,RZ/A系列的A1H,单核A9,但是给了10MB(是的你没看错是10MByte)的on-chip SRAM,这样它就成了一个。。。。32bit Cortex A核的MCU[二哈],而且这个RAM数量和速度和功耗,ESP32用户都会羡慕。

当然只能玩玩而以,真要用的话这个处理器要20美金了,毕竟10MB SRAM比较疯狂。

它的可玩性呢当然也不是用它跑mbed,是用它跑Linux,不过警告在先,这个系列官方支持Linux是2017年的事情了,现在官方只支持RTOS,毕竟10MB也不够跑Linux的,官方推广失败。

它跑Linux的特色在于,2017年左右瑞萨提供了Linux 4.9版本的BSP,支持kernel和userspace XIP。kernel XIP不算神奇,很多平台都可以;但是userspace XIP,我先解释下这个词,它指:

1)有一个flash介质,硬件上支持mmap到内存地址空间的,当然是read only;
2)有一个文件系统在这个介质上,有点象squashfs或者ubifs,但是不同之处在于,这个文件系统上的二进制可执行文件,包括so,在制作成flash镜像时,做了对齐处理(而且不能压缩,非可执行程序的其它文件可以压缩),这样在内核执行这个文件时,可以简单mmap,也不占用物理RAM;

这个听起来原理挺简单的东西实际上不是很简单就能用上。目前只有三个文件系统支持,romfs,cramfs,和axfs。romfs是给古老的nor flash xip使用的;cramfs先进一点,这个fs还是Linus Torvalds自己写的,后来它进化成了ramfs,也就是如果你使用initramfs而不是initrd启动linux(内核默认使用ramfs,两者的区别是ramfs是vfs里的一层,但没有block device作为backend;而initrd,即initramdisk,是在内存里创建了一个block device,然后再挂载访问的),你就在用一个和cramfs很接近的东西;第三个是axfs,和cramfs比axfs最重要突破了256MB的文件系统容量限制。这个文件系统没能并入内核,也停止开发很久,但似乎它很简单没什么bug也不需要升级。

在buildroot系统里,开包支持kernel xip的平台只有很古老的几个(比如ti的omap);这是因为这项技术在nor flash速度和dram相仿时是有意义的,但是现代处理器两者速度差别太大了,在nor flash上xip会大大影响系统性能,不如浪费一个kernel大小的内存空间把kernel复制到dram里使用。

但是xip在低端平台上,以及一部分mcu上仍然有意义,因为减少dram,使用sram或者psram,包括新近兴起的qspi/ospi/hspi等接口的psram,还是可以跑很精简的linux的,而且待机功耗极低。这类psram的待机功耗比lpddr4还要低一个数量级,比其它前辈dram就低更多了。如果用的是sram而不是psram,那就更低了。stm32u5系列有内置2-3MByte SRAM,待机电流不足1uA的型号。当然这个是新工艺,瑞萨这个可能没这么低。

但mcu系统上xip有个很重要的烦恼,就是二进制文件格式(binfmt)只能使用fdpic(而不是常用的flat),这个会把整个工具链搞得极其麻烦,需要编译支持fdpic的toolchain,内核abi也有修改;而且到了userspace会有不少冲突,有的部分编译要打开这个选项,有的则不能,打开fdpic选项后编译失败的包很多。我两年前在stm32系统上试过,非常接近成功但最后还是放弃了。有一个分成8个部分的patch在社区里(google搜索buildroot fdpic就能看到),review了好几年也没merge进去;开发者们不觉得这个应用场景还存在了。仔细的把patch邮件里的代码copy出来修改buildroot系统,是能够成功的build一个可以跑起来的系统的,但是不能指望后面的开发用到的所有userspace都一个一个自己改;还是得等upstream搞定。

而瑞萨的这个处理器特别在它是Cortex A的,有mmu;有mmu就没这些破事儿因为可以remap地址空间;而且mmu还有一个非常特别的收益,就是在nommu系统上的内存碎片问题,在mmu系统上不存在;为了玩儿总规可以自己打个板子焊个emmc或者至少是sdnand上去,配置一下swap,内存危机的时候就可以用上了。

瑞萨给的user xip选择了axfs而不是cramfs。我不确定知道axfs有什么坑,之前都是用cramfs尝试的。但既然是官方的,总规他们在github上提供的东西是可以开包使用的。这也是所有官方bsp和各大开发板社区里,唯一一个提供axfs支持的案例。

++++

写了很长,这是一个没多大用的偏门领域,但如果你需要极致的低功耗和低延迟,比如整个系统活着,唤醒时间是毫秒极,可能保持wifi连着,一颗21700电池能干半年的linux,那你也没别的选择只能干这种很边缘化的办法。

RZ/A系列的xip linux文档在elinux上 http://t.cn/A6R5ot4V
GR-PEACH的是这篇:http://t.cn/A6R5ot4f
瑞萨的官方页面:http://t.cn/A6R5ot4I 底部有很多project,瑞萨是想搞个类似arduino的小生态的,不过我对它的rtos努力没什么兴趣,rtos当然直接上车zephyr就欧了。

elinux的文档里给了瑞萨的相关github代码池地址。

非常骚的粉红色PCB,来自古板的工业MPU巨头,日本瑞萨电子。400块,挂载墙上欣赏也是物有所值的;如果有人问你这玩意有什么用,你可以把这篇微博甩给它。

抄送 @ZRGNiX @阿尼亚是安妮亞 @盐渍海蛞蝓 考验你们是不是真正的电子届二次猿的时刻到了!

发布于 中国香港