rust其中的一个目标是跟c同等地位,也即c能做的rust一定能做。
就说指针好了,mcu里的寄存器全部都是定义一串地址偏移量的指针。c里面都是一个头文件里面裸地址直接写在上面然后强制转换成指针。
rust当然也可以这么写,但给rust做hal库的人每这么做。他们的做法要安全并且严格的多。它利用rust的宏特性直接导入mcu厂方给出的svd文件。除非你去改svd,否则压根不存在改错的可能。当然,厂方也是会犯错的,所以这个导入svd文件的功能还有patch能力,可以按需要导入base svd,patch svd等等。
然后,因为是svd文件,所以rust对寄存器的操作可以精确到每一个bit的可读写性,以及humanreadable的可读性,和对每一个bit都有注释的完整文档。
比如同一个bit,读出来的值和写入的值的名字都是不一样的。比如读出来叫enabled,写进去得写enable,你如果写enabled直接就一根红线画上去提示你这里不对了。
至于安全特性对mcu是否有用,我只能说这就是嵌入式行业明明发展的时间和软件行业差不多久,应用规模也差不多大,但为啥生态规模相比之下小的可以忽略不计。就是因为大家都缺乏这种合作的思想,都满足于自己的一亩三分地,重复造自己的那个小轮子。自己在家做轮子,当然不需要上下游产业链配套了。而当你需要依赖生态的时候,安全特性就是相当重要的问题。
说到生态的问题,这里一个典型的案例就是arduino。刚出来的时候我也瞧不上arduino。但发展到现在arduino已经有了非常丰富的生态,现在很多时候,我自己都是更倾向于用arduino直接搞定的,这就是生态的威力。
【 在 Oriphia 的大作中提到: 】
: rust就不是给MCU用的,MCU最直接就是用显性指针,而不是隐性指针,安全特性对于MCU完全没有用。
:
--
修改:lvsoft FROM 180.111.26.*
FROM 180.111.26.*