我眼中的AMetal之移植到STM32

既然AMetal打破了传统嵌入式编程的依靠单个硬件编程弊端,采用面向对象的C编程的方式来实现“一次编程,到处使用”的效果。那到底是如何实现的呢?自己手中没有NXP的平台,只有STM32F3/F4,A8,还有新塘,倒是有块飞思卡尔,但不在身边。这样就没法直接看效果了,只能边摸索,边修改,移植到STM32上了。

也是对照《AMetal框架与接口编程》这本书来弄的,只记录自己的思路历程。

先以最简单的GPIO看一下AMetal的架构:如图

我眼中的AMetal之移植到STM32

HW层直接操作芯片实现接口层所列功能,amhw_lpc82x_gpio.h位于SOC/NXP/drivers/include/gpio/hw下.soc文件存放的是与芯片相关的文件。

驱动层其实是提供了外设初始化函数。无非就是初始化IO。am_lpc82x_ghio.h位于SOC/NXP/drivers/include/gpio

辅助宏定义文件提供了引脚的一些配置宏定义,am_lpc82x_gpio_util.h位置同上。

接口层对外设抽象,实现外设功能函数的API。am_gpio.h位于/interface下

辅助宏定义也是定义引脚的功能和模式宏。am_gpio_util.h位置同上。

用户配置文件:提供硬件操作函数接口。am_hwconf_lpc82x_gpio.c位于\board\am824_core\ametal_book\user_config\am_hwgconf_usrcfg

似乎接口层与用户配置文件功能相似,有什么不同呢?还有驱动层的宏定义与接口层的宏定主文件有什么不同呢?