|
[转]
[转] 小弟新学STM32,惊喜地发现这里已经高手如云了,斗胆想问这个有点钻牛角尖的问题,因为我以前学ARM也花了不少时间在底层的文档上。我在看Coretex M3的Technical Reference Manual时,发现它的指令集跟ARM7,ARM9的很不同,有很多新指令,还有很多新理念,尤其是bit-banding和中断处理。我觉得如果这些特性利用得充分能很大程度上提高性能。 我印象最深的有一个指令是返回某寄存器的值中前导0的个数,叫CLZ.W。这让我突然想起uC/OS2的调度中就绪位图查找表,我感觉这个指令能完成以前需要查表才能做的事。现在uC/OS2能在CM3上跑了,可有网友指出移植有问题,在CtxSW中会破坏R4,R5的值。我不知道这个移植中是否利用了CM3的诸多新特性。 官方提供的固件库(包括我以前用的AT91SAM7s的),基本上都是以查询为驱动的,经常有"while (xxx!=#) ;"之类有可能绕死的结构,一看就觉得像是需要OS支持的。现在已经有RTOS被移植到CM3上了。可我觉得如果不是为CM3量身定制而重新写过的,根本无法发挥CM3的卓越处理性能。 固件库很好很强大,C编译器也把底层包装得天衣无缝,确实不必了解这些基础设施的东西了吗? |
|