Xiaojie雷达之路---TI实战笔记---OSAL详解
OSAL全称为Operating System Abstration Layer,翻译为"操作系统抽象层",支持多任务的执行,但它并不是一个传统意义上的操作系统,但是实现了部分类似操作系统的功能。
在TI的mmwave_sdk中的OSAL抽象出下面几个层:
1. CycleprofilerP OSAL Porting Layer
2. DebugP OSAL porting Layer
3. HwiP OSAL Porting Layer
4. MemoryP OSAL Porting Layer
5. SemaphoreP OSAL Porting Layer
文章目录
- CycleprofilerP OSAL
- API函数介绍
- DebugP OSAL
- 宏定义介绍
- 外部宏定义介绍
- HwiP OSAL
- API函数介绍
- MemoryP OSAL
- API函数介绍
- SemaphoreP OSAL
- API函数介绍
CycleprofilerP OSAL
这个模块用于测量CPU周期的周期分析器模块
API函数介绍
CycleprofilerP_init 函数
函数原型:
void CycleprofilerP_init (void)
函数功能:
用于初始化周期分析器
CycleprofilerP_getTimeStamp 函数
函数原型:
uint32_t CycleprofilerP_getTimeStamp (void)
函数功能:
得到CPU周期计数时间戳
DebugP OSAL
这个模块用于调试使用
宏定义介绍
DebugP_ASSERT_ENABLED
#define DebugP_ASSERT_ENABLED 0
功能描述:
定义用于控制是否启用断言的功能
DebugP_LOG_ENABLED
#define DebugP_LOG_ENABLED 0
功能描述:
定义用于将日志API插入操作系统提供的日志机制中,应用程序开发人员可以根据其要求移植后端日志API
外部宏定义介绍
DebugP_assert
#define DebugP_assert(expression)
功能描述:
异常检测功能,如果表达式的计算结果为true,则API不执行任何操作。如果计算结果为false,则底层的RTOS端口实现将通过其基础处理异常
DebugP_log0
#define DebugP_log0(format)
功能描述:
0个参数的调试功能,"printf"格式字符串
DebugP_log1
#define DebugP_log1(format, p1)
功能描述:
1个参数的调试功能,"printf"格式字符串
DebugP_log2
#define DebugP_log2(format, p1, p2)
功能描述:
2个参数的调试功能,"printf"格式字符串
DebugP_log3
#define DebugP_log3(format, p1, p2, p3)
功能描述:
3个参数的调试功能,"printf"格式字符串
DebugP_log4
#define DebugP_log4(format, p1, p2, p3, p4)
功能描述:
4个参数的调试功能,"printf"格式字符串
HwiP OSAL
这个模块是硬件中断模块
API函数介绍
HwiP_clearInterrupt函数
函数原型:
void HwiP_clearInterrupt (int32_t interruptNum)
函数功能:
该函数用来清除一个中断
HwiP_create函数
函数原型:
HwiP_Handle HwiP_create (int32_t interruptNum, HwiP_Fxn hwiFxn, HwiP_Params *params)
函数功能:
该函数用来创建一个中断
HwiP_delete函数
函数原型:
HwiP_Status HwiP_delete (HwiP_Handle handle)
函数功能:
该函数用来删除一个中断
HwiP_disable函数
函数原型:
uintptr_t HwiP_disable (void)
函数功能:
该函数用于禁用中断以进入关键区域
HwiP_disableInterrupt函数
函数原型:
void HwiP_disableInterrupt (int32_t interruptNum)
函数功能:
该函数用于关闭一个中断
HwiP_enableInterrupt函数
函数原型:
void HwiP_enableInterrupt (int32_t interruptNum)
函数功能:
该函数用于开启一个中断
HwiP_Params_init 函数
函数原型:
void HwiP_Params_init (HwiP_Params *params)
函数功能:
将params结构初始化为默认值
HwiP_restore函数
函数原型:
void HwiP_restore (uintptr_t key)
函数功能:
该函数用于恢复中断以退出关键区域
MemoryP OSAL
这个模块是内存管理模块,内存管理模块允许应用程序执行内存分配和清除。这个模块提供各自的API为:Data Buffer、Control Buffer
API函数介绍
MemoryP_ctrlAlloc
函数原型:
void * MemoryP_ctrlAlloc (uint32_t size, uint8_t alignment)
函数功能:
该函数用于为控制操作分配空间
MemoryP_ctrlFree
函数原型:
void MemoryP_ctrlFree (void *ptr, uint32_t size)
函数功能:
该函数用于为控制操作释放空间
MemoryP_dataAlloc
函数原型:
void * MemoryP_dataAlloc (uint32_t size, uint8_t alignment)
函数功能:
该函数用于为数据操作分配空间
MemoryP_dataFree
函数原型:
void MemoryP_dataFree (void *ptr, uint32_t size)
函数功能:
该函数用于为数据操作释放空间
MemoryP_getStats
函数原型:
void MemoryP_getStats (MemoryP_Stats *stats)
函数功能:
该函数用于获取数据内存统计的信息
SemaphoreP OSAL
这个模块是信号量模块
API函数介绍
SemaphoreP_create
函数原型:
SemaphoreP_Handle SemaphoreP_create (uint32_t count, SemaphoreP_Params *params)
函数功能:
该函数用于创建一个信号量
SemaphoreP_delete
函数原型:
SemaphoreP_Status SemaphoreP_delete (SemaphoreP_Handle handle)
函数功能:
该函数用于删除一个信号量
SemaphoreP_Params_init
函数原型:
void SemaphoreP_Params_init (SemaphoreP_Params *params)
函数功能:
初始化参数结构体为默认值
SemaphoreP_pend
函数原型:
SemaphoreP_Status SemaphoreP_pend (SemaphoreP_Handle handle, uint32_t timeout)
函数功能:
该函数用于挂起一个信号量
SemaphoreP_post
函数原型:
SemaphoreP_Status SemaphoreP_post (SemaphoreP_Handle handle)
函数功能:
该函数用于释放一个信号量
SemaphoreP_postFromClock
函数原型:
SemaphoreP_Status SemaphoreP_postFromClock (SemaphoreP_Handle handle)
函数功能:
该函数用于释放来自ClockP的信号量
SemaphoreP_postFromISR
函数原型:
SemaphoreP_Status SemaphoreP_postFromISR (SemaphoreP_Handle handle)
函数功能:
该函数用于释放来自ISR的信号量
参考文献:
- 《mmWave SDK Module Documentation》
Xiaojie雷达之路---TI实战笔记---OSAL详解相关推荐
- Xiaojie雷达之路---TI实战笔记---MRR_MSS_CLIAdvancedFrameCfg详解
本篇文章主要是对MSS项目中的源文件中mss_pa_cli.c的函数进行MRR_MSS_CLIAdvancedFrameCfg详解 函数源程序如下: static int32_t MRR_MSS_CL ...
- Xiaojie雷达之路---TI实战笔记---MSS代码详细解读
文章目录 前言 基础知识 文章中会用到的专业术语 毫米波雷达的初始化流程(在MSS中) 本案例中要用的其他知识 UART MailBox Semaphore 代码解读 main函数 MRR_MSS_i ...
- Xiaojie雷达之路---TI实战笔记---BPM MIMO
雷达信号和调制波形如下图所示: 第一个是固定载频矩阵脉冲,第二个是线性调频脉冲,第三个是相位编码脉冲 固定载频和线性调频这两种类型的脉冲很常见 本篇文章主要是配置相位编码脉冲 当+时初始相位为0deg ...
- Xiaojie雷达之路---TI实战笔记---ESM Driver说明
ESM驱动提供API来配置和处理来自ESM H/W模块的错误 ESM头文件在应用程序中应该被包含如下: #include <ti/drivers/esm/esm.h> 驱动初始化 ESM驱 ...
- Xiaojie雷达之路---TI实战笔记---对AWR1843+DCA1000采集的数据进行解析
这篇文章主要是介绍对AWR1843和DCA1000采集的数据进行解析 下面两张图要必须看懂,才能进行以后的操作: 图1: 这张图片主要说明的意思是对于每个tx的chirp,每个rx都会接收到 从上面这 ...
- Xiaojie雷达之路---TI实战笔记---CCS调试模式
文章目录 前言 基础知识 毫米波雷达的两种调试模式 mmwave_automotive_toolbox_3_1_0工具箱 开发工具 案例演示 工程导入 工程重新编译 烧录xwr18xx_ccsdebu ...
- Xiaojie雷达之路---TI实战笔记---chirp、profile、frame、advframe
什么是chirp? chirp是雷达发射的一种信号,频率随着时间线性增加,最多可以定义512个chirp,如下图所示: Chirp Timing Parameters: Idle time:上一次ch ...
- Xiaojie雷达之路---EDMA Driver External Functions详解
文章目录 getNumInstances init open configErrorMonitoring configChannel startDmaTransfer isTransferComple ...
- Xiaojie雷达之路---Mailbox Driver External Functions详解
文章目录 init Config_init open write read readFlush 本文主要讲解为了使用驱动程序Mailbox而需要调用的所有导出的API init 函数原型: int32 ...
- Xiaojie雷达之路---Mailbox深挖
Hello,大家好,我是Xiaojie,欢迎大家能够和Xiaojie来一起学习毫米波雷达知识,本片文章主要是对Mailbox通信进行深挖: 有关Mailbox的源码解析已经在<Xiaojie雷达 ...
最新文章
- 关于Activity class {package/class} does not exist
- 自动驾驶定位技术-粒子滤波实践
- iOS-mac下 svn的使用
- 手把手Tinyxml入门,C++ VS2010
- Android Activity中加入View后进行后台截屏截图
- redis和mysql实现原理_redis和mysql结合数据一致性方案
- 运维自动化 第二章 openpyxl的用法,读写excel内容
- 聊一聊Load Average
- 开发者需要理解的分布式原语
- 新分类!全总结!最新Awesome-SLU-Survey资源库开源!
- Leetcode--7. 整数反转
- 为啥我的Python这么慢 (一)
- 10-2-文章分页展示
- python画饼图存在的问题_python_使用matplotlib画饼状图(pie)
- Android应用开发入门教程(经典版)
- Xilinx平台SRIO介绍(六)SRIO收发测试
- SolidWorks2008破解版及安装方法
- 简单制作登录注册页面
- 中标麒麟系统下(Neokylin7)达梦数据库的安装(DM8)
- 【组合数学】二项式定理与组合恒等式 ( 二项式定理 | 三个组合恒等式 递推式 | 递推式 1 | 递推式 2 | 递推式 3 帕斯卡/杨辉三角公式 | 组合分析方法 | 递推式组合恒等式特点 )
热门文章
- 计算机专业 英语词汇大全(持续更新)
- Linux尖角号符号怎么打出来,六角星号怎么打出来
- wifi发射功率各国标准_智能插座背后的两种无线协议——WiFi与ZigBee
- tarjan算法 java_最大强连通图算法 Tarjan算法 (图论)
- MAC 电脑安装jdk
- 1 Arduino开发软件和下载程序
- 基于springboot助学贷款管理毕业设计源码061528
- 中国队拿下口罩人脸识别世界第一!还将推全球最大公开人脸数据集
- 微信登录OpenId和UnionId区别
- c语言调用DOS命令删除文件,DOS删除命令怎么使用?用DOS命令删除文件的方法