作者icetofux ()
看板ASM
标题[问题] 关於ARM系列MCU的函式库
时间Tue Aug 7 14:42:22 2018
最近在学习使用ARM系列的MCU,我使用的是STM32系列的开发板,发现光是最基本的I/O
操作,就有直接操作暂存器、使用CMSIS函式库、使用HAL函式库等三种方式能做到。
目前理解是CMSIS是针对暂存器操作的抽象化实作,只要是Cortex M系列的MCU都通用,
可以很方便的在不同的IC间互相移植,并且减轻更换IC所造成的学习时间成本。
HAL感觉跟CMSIS有点接近,但只针对STM32系列有效。
目前用CubeMX产生出来的样板专案好像是采用HAL,但实务上大家比较常看到哪一种呢?
另外还有两个问题是个人满好奇的,也许未来学习的过程就会得到解答,但如果各位先
进愿意提前给我指点我会很感激:
看介绍CMSIS理念上的确是个很棒的东西,但是各家MCU周边硬体百百款,CMSIS真的有办
法包的下所有的周边吗?
另外就是CMSIS是ARM所主导的,所以理所当然只为ARM的Cortex M系列所用,但是根据以
往经验,当面临到换IC的情境下,没办法保证未来采用的一定是ARM系列的IC,也许会因
为各种考量换成其他架构的MCU。那麽用CMSIS或是HAL这类的函式库对专案的可移植性或
可维护性是真的有帮助的吗?毕竟要是真的换MCU架构了还是得全部打掉重来。
谢谢大家。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.250.45.16
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/ASM/M.1533624145.A.9C4.html
1F:→ james732: 考虑移植性来说,直接操作暂存器是最糟的选项 08/08 00:38
2F:→ james732: 新的MCU如果没有抽象层,顶多自己做一个 08/08 00:38
3F:→ james732: 总之就是要把"硬体相依"与"硬体无关"的程式码完全分开 08/08 00:39
4F:→ ypyp1010: 请问下James为什麽直接操作暂存器会最糟阿... 08/08 09:22
5F:→ ypyp1010: 主要应用层的程式,跟MCU功能设定完全分离,不论用甚麽 08/08 09:23
6F:→ ypyp1010: 架构应该都好换,除非是使用到MCU特殊功能 08/08 09:24
7F:→ ypyp1010: 像我用ST的HAL就用的超不习惯,设定GPIO很麻烦... 08/08 09:28
8F:→ icetofux: ypyp你的意思是自己实作类似CMSIS或HAL的函式库,把 08/08 10:10
9F:→ icetofux: 底层操作跟程式逻辑分开吗? 08/08 10:11
10F:→ ypyp1010: 应用跟mcu底层是本来就要分开的,不论在CMSIS或HAL,但 08/08 14:35
11F:→ ypyp1010: 是我会依自己习惯去改,像ST的HAL就包超多.c跟.h,看了 08/08 14:35
12F:→ ypyp1010: 就烦,要k这种架构写出来的code也很烦,我都把他移掉, 08/08 14:35
13F:→ ypyp1010: 改成自己的东西,好处是很浅显易懂,坏处是要花时间, 08/08 14:35
14F:→ ypyp1010: 而且不是大众平台,别人要用会不方便,我其实也在找看 08/08 14:35
15F:→ ypyp1010: 有没有别的比较好的方法 08/08 14:35
16F:→ icetofux: 看来大家都在想一样的事呢XD 08/08 16:16
17F:→ MasterChang: 写习惯就好,ST、新唐、Microchip的Crotex-M都有在用 08/10 01:37
18F:→ MasterChang: 没甚麽差,转换也不过一天的事情。顶多USB、Ethernet 08/10 01:38
19F:→ MasterChang: 这类比较麻烦的周边要花点时间处理。 08/10 01:39
20F:→ MasterChang: 反正看顾客要甚麽就用甚麽方案....自己选的话就用ST 08/10 01:40
21F:→ MasterChang: 的,CubeMx初始化可以省不少时间。 08/10 01:40