Skip to content

芯片级裸机软件包,定义了一系列常用外设(如:UART、IIC、SPI、ADC等)的通用接口,基于通用接口的应用可以跨平台复用。

License

LGPL-2.1, Unknown licenses found

Licenses found

LGPL-2.1
LICENSE
Unknown
COPYING
Notifications You must be signed in to change notification settings

skyformat99/ametal

Repository files navigation

简介

AMetal是芯片级的裸机软件包,定义了跨平台的通用接口(使得基于AMetal的应用程序可以和具体硬件完全分离,实现跨平台复用),并提供了一系列驱动及常用的软件服务。

背景

在MCU产业快速发展的今天,芯片厂商推出了越来越多的MCU。不同厂商、型号之间,MCU外设的差异却是千差万别的,这给广大嵌入式开发人员带来了诸多烦恼。Apollo平台对同一类外设进行了抽象,并设计了相应的标准接口以及对应的中间层,使得不同厂商、型号的MCU外设都能以标准的接口操作。

但是,各个外设的差异实在是太大了,Apollo平台只能将最通用的那一部分功能抽象出来,外设特有的功能就被去除,毕竟,鱼和熊掌不能兼得。在Apollo早期版本中,为了操作外设特有的功能,程序员则需要绕过Apollo直接操作寄存器,这就要求程序员花大量时间去熟读外设的用户手册。

此外,部分从传统单片机转过来的程序员,更喜欢直接控制硬件,对操作系统之类比较排斥。在某些特殊应用下,为了提高效率、节省内存资源或“榨干”MCU,程序员会选择直接操作硬件。

对于上层操作系统而言,例如,AWorks、Linux等,对各个外设都需要编写驱动。在编写特定操作系统下的驱动时,必须要熟悉特定的驱动框架及操作系统调用,这往往会花费开发人员相当大的精力。对于同一个外设而言,如果要支持多个操作系统,就需要编写多个驱动,其实,驱动底层对硬件的操作是有相通之处的。

AMetal裸机软件包的出现便是解决这里提到的问题。

特点

  • 将外设操作标准化,避免上层软件、驱动的再次开发;
  • 能独立运行的软件包,全部开源,提供工程模板与DEMO程序,可在此基础上开发应用程序;
  • 不依赖操作系统服务;
  • 尽可能将外设的所有特性开放出来;
  • 尽可能浅地对外设进行封装,把效率放在第一位;
  • 用户不用看芯片手册也能使用。

快速入门

  • 模板工程位于 ametal/board/{board_name}/project_template 目录下。例如:硬件板 am116_core 对应的 keil5 模板工程位于:ametal/board/am116_core/project_template/project_keil5/template_am116_core.uvprojx。可以直接打开后使用。

    注意:ZLG 相关芯片的 keil pack 包位于:ametal/tools/keil_pack。

  • 示例工程位于 ametal/board/{board_name}/project_example 目录下。默认为LED闪烁的demo,通过修改调用的demo函数,可以运行其他demo,如 SPI、ADC、EEPROM 等等。

  • TODO:

About

芯片级裸机软件包,定义了一系列常用外设(如:UART、IIC、SPI、ADC等)的通用接口,基于通用接口的应用可以跨平台复用。

Resources

License

LGPL-2.1, Unknown licenses found

Licenses found

LGPL-2.1
LICENSE
Unknown
COPYING

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages