silabs 硬件抽象层

Silabs 硬件抽象层

  1. 介绍

  硬件抽象层(HAL)是系统硬件及其软件之间的程序代码,为可在多个不同硬件平台上运行的应用程序提供一致的接口。要利用此功能,应用程序应通过HAL提供的API访问硬件,而不是直接访问。然后,当您转移到新硬件时,您只需要更新HAL。在某些情况下,由于硬件的极端差异,HAL API也可能略有变化以适应新硬件。在这些情况下,更新的有限范围使得使用HAL比不使用HAL更容易移动应用程序。

  对于使用EmberZNet PRO,EmberZNet RF4CE或Silicon Labs Thread的所有软件开发人员,建议使用本文档的介绍部分。需要修改HAL或将其移植到新硬件平台的开发人员需要阅读整个文档,以了解如何在满足网络堆栈要求的同时进行更改。

  1. HAL API组织

  HAL API分为以下功能部分,这些部分在第5 节中描述.HAL API 描述:

 

  1. 通用微控制器功能:用于控制MCU行为和配置的API。
  2. 令牌访问: EEPROM,模拟EEPROM(SimEEPROM)和令牌抽象。有关令牌系统的详细讨论,请参阅文档UG103.7:应用程序开发基础知识:令牌。
  3. 外围访问:用于控制和访问系统外围设备的API。
  4. 系统计时器控制:用于控制和访问系统计时器的API。
  5. 引导加载:文档UG103.6:应用程序开发基础知识:引导加载中介绍了引导加载的使用。
  6. HAL实用程序:可能依赖于硬件功能的通用API(例如,可以利用硬件加速的CRC计算)。
  7. 调试通道:API跟踪,调试printfs,断言和崩溃信息,以及与堆栈的DEBUG构建一起使用时的虚拟UART支持。
  1. 命名约定

  HAL函数名称具有以下前缀约定:

 

  1. hal:API示例应用程序使用。您可以根据需要删除或更改这些功能的实现。
  2. halCommon:堆栈使用的API,也可以从应用程序调用。自定义HAL修改必须保持这些功能的功能。
  3. halStack:只有堆栈使用此API。不应从任何应用程序直接调用这些函数,因为这可能违反时间约束或导致重入问题。自定义HAL修改必须保持这些功能的功能。
  4. halInternal:HAL内部的API。这些函数不是直接从堆栈调用的,不应直接从任何应用程序调用。它们仅从 halStack 或 halCommon 函数中调用。您可以修改这些函数,但要小心保持任何相关的 halStack 或 halCommon 函数的正常功能。

 

大多数应用程序将调用halXXX和halCommonXXX函数,而不需要修改HAL。如果您需要特殊的实施或修改HAL,请务必先阅读本文档的其余部分以及Silicon Labs平台的数据表。

  1. API文件和目录结构

  组织HAL目录结构和文件以便于独立修改编译器,MCU和PCB配置。

 

  1. <hal> /hal.h :此主包含文件包含所有其他相关的HAL包含文件,您应将其包含在使用HAL功能的任何源文件中。大多数程序不包括低级别的包含,而是应该包括这个顶级 hal.h 。
  2. <hal> /ember-configuration.c:此文件定义编译时可配置堆栈变量的存储,并实现函数的默认实现。您可以通过在编译时定义预处理器变量并在应用程序中实现该函数的自定义版本来自定义许多这些函数。(有关更多信息,请参阅软件的API参考中的 ember-configuration-defaults.h )。
  3. <hal> / micro / generic :此目录包含用于POSIX兼容系统上的通用MCU的文件。默认编译器是GCC

  4.1、ARM Cortex-M3 SOC平台的HAL实现

  ARM Cortext-M3片上系统(SOC)平台有一个HAL实现,如下所示:

 

  1. <hal> / micro / cortexm3:此目录包含 cortexm3 的HAL实现,后者是EM3x和EFR32平台使用的处理器核心。此目录中的函数特定于cortexm3,但并非特定于特定的微控制器系列或变体(请参阅下一条目)。
  2. <hal> / micro / cortexm3 / {mcu_family}:该目录实现特定于MCU系列的功能,例如基于EM3x的MCU系列的 <hal> / micro / cortexm3 / em35x ,包括诸如EM357,EM3588和EM346; 要么
  3. EFR32MG的<hal> / micro / cortexm3 / efm32。

 

  1. <hal> / micro / cortexm3 / bootloader :此目录实现与基于Cortex M3的平台上使用的片上引导加载程序相关的功能,以便于运行时加载/更新应用程序。(可以在 <hal> / micro / co rtexm3 / {mcu_family} / bootloader中找到更多特定于MCU的文件。)
  2. <hal> / micro / cortexm3 / {mcu_family} / board :该目录包含定义外设配置和其他PCB级设置的头文件,例如初始化函数。这些在HAL实现中用于为不同的PCB提供正确的配置。
  1. HAL API说明
  • 通用微控制器功能

  常见的微控制器功能包括halInit&

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值