跳到主要内容

总览

文档说明

正文按原始 PDF 的文本层、书签层级和页面顺序转换,仅移除重复页眉、页脚与水印,不改写技术内容。

1 前言

1.1 文档简介

介绍HAL_V2 中设计逻辑、目录、使用方法,为开发者提供参考。

1.2 目标读者

HAL_V2 驱动的开发/维护人员。

1.3 适用范围

表1-1: 适用产品列表

产品名称支持架构内核版本驱动文件
T536A55、E907FreeRTOS/Baremetal{SDK}/rtos/lichee/hal_v2
T153A7、E907FreeRTOS/Baremetal{SDK}/rtos/lichee/hal_v2

1.4 文档约定

1.4.1 标志说明

! 注意

  • 提醒操作中应注意的事项。不当的操作可能会损坏器件,影响可靠性、降低性能等。

说明

为准确理解文中指令、正确实施操作而提供的补充或强调信息。

技巧

一些容易忽视的小功能、技巧。了解这些功能或技巧能帮助解决特定问题或者节省操作时间。

1.5 相关术语介绍

1.5.1 硬件术语

表1-2: 硬件术语

术语解释说明
Baremetal指裸机环境
HAL_V2指基于rtos 或者baremetal 系统上设计类MCU 用法的bsp 驱动

1.5.2 软件术语

表1-3: 软件术语

术语解释说明

HAL Hardware Abstraction Layer,硬件抽象层

2 HAL_V2库介绍

2.1 源码结构

HAL_V2 源码已经集成到Tina5.0 SDK 中,源码位于{SDK}/rtos/lichee/hal_v2 目录中,以下是HAL_V2 源码结构。

.
├──drv_osal
-- 面向rtos场景
│ ├──examples
-- 结合特定rtos场景的驱动使用例子
│ ├──Makefile
│ └──source
-- 部分驱动耦合rtos API组合,适用于rtos场景API
├──hal
-- 底层驱动
│ ├──examples
-- 基于bsp驱动测试用例
│ ├──Makefile
│ └──source
-- 全部bsp驱动,可用于baremetal和rtos环境构建
├──include
│ ├──hal
-- bsp驱动头文件
│ └──osal
-- 用于屏蔽上层rtos类型统一接口
└──Makefile

2.2 宏配置介绍

2.2.1 驱动版本宏定义

驱动版本宏定义解释说明
CONFIG_DRIVERS_V2代表hal_v2 驱动

CONFIG_DRIVERS_V2_* 代表hal_v2 各个模块驱动; 例如CONFIG_DRIVERS_V2_CCU、

CONFIG_DRIVERS_V2_UART等等

2.2.2 SOC宏定义

SOC 宏定义解释说明
CONFIG_ARCH_SUN8IW22T153
CONFIG_ARCH_SUN55IW6T536

2.2.3 架构宏定义

一级架构定义二级架构定义解释说明
CONFIG_ARCH_ARM/代表32bitARM
CONFIG_ARCH_ARM64/代表64bit ARM
CONFIG_ARCH_RISCVCONFIG_ARCH_RISCV_RV32代表32bit RV
CONFIG_ARCH_RISCVCONFIG_ARCH_RISCV_RV64代表64bit RV
CONFIG_ARCH_XTENSACONFIG_ARCH_XTENSA_HIFI4代表hifi4;
CONFIG_ARCH_XTENSACONFIG_ARCH_XTENSA_HIFI5代表hifi5;
CONFIG_DSP0/dsp0 使用CONFIG_DSP0
CONFIG_DSP1/dsp1 使用CONFIG_DSP1

2.2.4 系统区分宏定义

系统区分宏定义解释说明
CONFIG_KERNEL_FREERTOS代表FreeRTOS 系统
CONFIG_KERNEL_BAREMETAL代表裸机系统
CONFIG_KERNEL_RTT代表RTT 系统
CONFIG_OS_MELIS代表Melis 系统

2.3 HAL_V2开发指南

本章用于介绍HAL_V2 驱动接口的头文件、测试用例相关路径及说明。

2.3.1 HAL_V2驱动头文件介绍

驱动头文件位于${SKD}/lichee/hal_v2/include/hal/目录下,现在SDK 中有如下驱动的头文件。

.
├──aw_common.h
├──aw_list.h
├──hal_can.h
├──hal_clk.h
├──hal_dma.h
├──hal_ethernet.h
├──hal_gpadc.h
├──hal_gpio.h
├──hal_hwspinlock.h
├──hal_irqchip.h
├──hal_irrx.h
├──hal_irtx.h
├──hal_lbc.h
├──hal_lradc.h
├──hal_msgbox.h
├──hal_pwmcs.h
├──hal_pwm.h
├──hal_reset.h
├──hal_rtc.h
├──hal_spi.h
├──hal_sunxi_timer.h
├──hal_twi.h
├──hal_uart.h
├──hal_watchdog.h
└──sunxi_hal_common.h

w_common.h_hal_common.h 比较特殊,是一些通用的接口。

如果需要增加驱动,可以在这个${SKD}/lichee/hal_v2/include/hal/目录下增加驱动头文件,再在${SKD}/lichee/hal_v2/hal/source/目录下增加相应的驱动。

2.3.2 测试用例说明

HAL_V2 的SDK 提供了各个驱动的测试用例,使用者可以结合测试用例来快速理解HAL_V2 的各个驱动。example 的目录结构如下。

.
├──can
├──ccu
├──dma
├──ethernet
├──gpadc
├──gpio
├──hwspinlock
├──irq
├──irrx
├──irtx
├──lbc
├──lradc
├──Makefile
├──msgbox
├──pwm
├──pwmcs
├──rtc
├──spi
├──timer
├──twi
├──uart
└──watchdog

如果需要使用某一个驱动的例子,需要打开对应的宏,这里以Hwspinlock 的驱动作为例子。目录结构如下。

.
├──hwspinlock_block_test.c
├──hwspinlock_noblock_test.c
├──hwspinlock_timeout_test.c
└──Makefile

首先,打开对应的驱动。

原文第 9 页插图

图2-1: 打开Hwspinlock 驱动

然后,打开example 目录下对应的宏。

原文第 9 页插图

图2-2: 打开Hwspinlock 驱动测试例子

重新编译RV,然后启动RV,输入help 就可以看到hwspinlock_noblock_test.c 例子里面添加的

原文第 10 页插图

图2-3:Help命令

通过这个命令,可以测试各个驱动,以及可以参考这些例子,使用驱动做相应的应用开发。

2.4 源码构建

2.4.1 RTOS

1、进入{SDK}/rtos 目录,执行source envsetup.sh 命令

root:~/pms/t153_aiot/rtos/lichee/baremetal$cd..
root:~/pms/t153_aiot/rtos/lichee$ cd ..
root:~/pms/t153_aiot/rtos$ ls
board envsetup.sh lichee tools
root:~/pms/t153_aiot/rtos$ source envsetup.sh
Setup env done!
Run lunch_rtos to select project

然后执行lunch_rtos,选择对应方案,这里以T153 为例子

root:~/pms/t153_aiot/rtos$ lunch_rtos
last=t153_e907_demo

You're building on Linux

Lunch menu... pick a combo:

1. ai985_e906_scanp_fastboot
2. mr153_e907_evb1
3. mr527_e906_evb
4. mr536_e907_evb1
5. t153_bga_demo
6. t153_demo
7. t153_demo_smp
8. t153_e907_bga_demo
9. t153_e907_demo
10. t536_demo
11. t536_demo_smp
  1. t536_e907_demo
Which would you like? [Default t153_e907_demo]: 9
select=9...
t153_e907/demo
'/home/wujiayi/pms/t153_aiot/rtos/lichee/rtos/projects/t153_e907/demo/defconfig' -> '/home/wujiayi/pms/t153_aiot/
rtos/lichee/rtos/.config'
============================================
RTOS_BUILD_TOP=/home/wujiayi/pms/t153_aiot/rtos
RTOS_TARGET_ARCH=riscv
RTOS_TARGET_CHIP=sun8iw22p1
RTOS_TARGET_DEVICE=t153_e907
RTOS_PROJECT_NAME=t153_e907_demo
============================================
Run mrtos_menuconfig to config rtos
Run m or mrtos to build rtos

行mrtos_menuconfig ,勾选CONFIG_DRIVERS_V2 ,使能HAL_V2 源码编译;SDK 配套方

案已经默认勾选好,客户可使用。

3、执行mrtos 进行编译。

说明

RTOS 详细构建逻辑,参考《FreeRTOS_RTOS_ 系统_ 开发指南.pdf》、《FreeRTOS_RTOS_ 系统调试_ 使用指南.pdf》文档

2.4.2 Baremetal

1、进入{SDK}/rtos/lichee/baremetal 目录,执行./build.sh config 命令,选择对应方案,这里以

为例子

~/pms/t153_aiot/rtos/lichee/baremetal$ ./build.sh config
Welcome to mkscript setup progress
All available bare_project:
0. mr153_e907
1. t153
2. t153_e907
3. t536
4. t536_e907
Choice [t153_e907]:2
All available bare_board:
0. bga_demo
1. demo
2. sram_lp
Choice [demo]:1

2、然后打开menuconfig,勾选CONFIG_DRIVERS_V2 ,使能HAL_V2 源码编译;SDK 配套方案

已经默认勾选好,客户可使用。

原文第 12 页插图

图2-4: menuconfig 界面

3、然后执行./build.sh 命令进行编译

原文第 12 页插图

图2-5: 固件编译

3 FAQ

权声明

本文档及内容受著作权法保护,其著作权由珠海全志科技股份有限公司(“全志”)拥有并保留一切权利。

本文档是全志的原创作品和版权财产,未经全志书面许可,任何单位和个人不得擅自摘抄、复制、修改、发表或传播本文档内容的部分或全部,且不得以任何形式传播。

商标声明

(不完全列

举)均为珠海全志科技股份有限公司的商标或者注册商标。在本文档描述的产品中出现的其它商标,产品名称,和服务名称,均由其各自所有人拥有。

免责声明

您购买的产品、服务或特性应受您与珠海全志科技股份有限公司(“全志”)之间签署的商业合同和条款的约束。本文档中描述的全部或部分产品、服务或特性可能不在您所购买或使用的范围内。使用前请认真阅读合同条款和相关说明,并严格遵循本文档的使用说明。您将自行承担任何不当使用行为(包括但不限于如超压,超频,超温使用)造成的不利后果,全志概不负责。

本文档作为使用指导仅供参考。由于产品版本升级或其他原因,本文档内容有可能修改,如有变

恕不另行通知。全志尽全力在本文档中提供准确的信息,但并不确保内容完全没有错误,因

使用本文档而发生损害(包括但不限于间接的、偶然的、特殊的损失)或发生侵犯第三方权利事件,全志概不负责。本文档中的所有陈述、信息和建议并不构成任何明示或暗示的保证或承诺。

本文档未以明示或暗示或其他方式授予全志的任何专利或知识产权。在您实施方案或使用产品的过程中,可能需要获得第三方的权利许可。请您自行向第三方权利人获取相关的许可。全志不承担也不代为支付任何关于获取第三方许可的许可费或版税(专利税)。全志不对您所使用的第三方许可技术做出任何保证、赔偿或承担其他义务。