0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

瑞萨CTSU程序在向嵌入式OS操作系统移植时的注意事项

RA生态工作室 2024-03-29 08:05 次阅读
wKgZomaCLKyAcpu6AAALN2XKaw0639.png

在裸机系统中,以一定的时间间隔循环调用CTSU APIs

QE for Cap Touch工具生成的Cap Touch Sample Code

•使用While(true)实现循环调用CTSU APIs

•使用R_BSP_SoftwareDelay()实现适当的定时间隔

嵌入式多任务系统中,也需要以一定的时间间隔循环运行CTSU APIs

•CTSU运行涉及的相关ISR以及API可直接移植到多任务系统中

•需要对QE for Cap Touch工具生成的CapTouch Sample Codee进行改写

wKgaomaCLLiAPDjyAAAPhSDDNVY788.png

CTSU底层驱动程序和应用程序在向RTOS系统中移植时,一般需要考虑的基本内容

RTOSSystick的设定

RTOS延时函数的使用

MCU中断优先级与RTOS任务优先级的设置

QE for Cap Touch工具生成的CTSU CapTouch Sample Code的改写

Systick的设定

FreeRTOS为例,使用e2 studio新建的FreeRTOS工程中, Systick的默认设定为1ms

wKgaomaCLMeABkvvAAFP1JhxH9E531.png

RTOS延时函数的使用

以FreeRTOS为例,FreeRTOS延时函数vTaskDelay()和vTaskDelayUntil()

• FreeRTOS提供了两个系统延时函数:相对延时函数vTaskDelay()和绝对延时vTaskDelayUntil()

•这两个延时函数和自己实现的延时函数不同,这两个延时函数一旦被调用,当前任务会立刻进入阻塞状态,而自己写的延时函数(以for循环等形式实现的软件延时)会被当做有效任务而一直执行。

•相对延时是指每次延时都是从任务执行函数vTaskDelay()开始,延时指定的时间结束;

vTaskDelay()函数的参数xTicksToDelay表示延时多少个系统节拍时钟周期(Systick)。

void vTaskDelay( const TickType_t xTicksToDelay )

•绝对延时是指每隔指定的时间,执行一次调用vTaskDelayUntil()函数的任务。换句话说:任务以固定的频率执行

MCU中断优先级与RTOS任务优先级的设置

以FreeRTOS任务优先级为例说明

FreeRTOS中任务的最高优先级是通过FreeRTOSConfig.h文件中的configMAX_PRIORITIES进行配置的,用户实际可以使用的优先级范围是0到configMAX_PRIORITIES – 1,建议用户配置宏定义configMAX_PRIORITIES的最大值不要超过32。根据实际应用配置,配置越大,需要的内存空间越大

使用e2 studio新建的FreeRTOS工程中, configMAX_PRIORITIES默认为5

wKgaomaCLNmAb7yiAAL03gvOgNE131.png

MCU中断优先级和FreeRTOS任务优先级区别

简单地说,这两者之间没有任何关系,不管中断的优先级是多少, MCU中断的优先级永远高于任何FreeRTOS任务的优先级,即在执行的过程中, MCU中断来了就开始执行中断服务程序。

MCU中断优先级数值越小,优先级就越高;而FreeRTOS的任务优先级是,任务优先级数值越小,任务优先级越低。

MCU中断优先级与RTOS任务优先级

通常的优先级分配方案:

• IRQ任务:IRQ任务是指通过中断服务程序进行触发的任务,所有任务中优先级最高

•高优先级后台任务:比如按键检测、触摸检测、USB消息处理

•低优先级时间调度任务:比如LCD界面显示、LED数码管显示

IRQ任务和高优先级任务必须设置为阻塞式(调用消息等待或者延迟等函数),只有这样高优先级任务才会 释放CPU的使用权,从而低优先级任务才会有机会得到执行。

CTSU CapTouch触摸按键任务建议配置成高优先级任务,并且设置成阻塞式。

CTSU CapTouch Sample Code的改写

默认的CTSU CapTouch Sample Code

QE for Cap Touch工具可生成默认的CapTouch Sample Code

Sample Code中使用While(1)死循环等待测量完成,以及使用R_BSP_SoftwareDelay()实现CTSU APIs20ms左右定时间隔的循环调用

CapTouch触摸按键对于实时性的要求并不高,但是涉及CTSU运行的很多参数都与循环调用的定时间隔有关,因此较大程度决定了触摸按键的灵敏度

例如Drift Correction Interval

下图中的设定值为255,实际值为255 x API定时调用间隔,按键按下的positive noise filter和按键释放的Negative Noise Filter也是如此。

wKgaomaCLQSAZV3lAAKUyjA_B1g063.png

因此,用户需要根据系统对Cap Touch触摸按键的实时性和灵敏度的要求,合理的改写默认的CTSU CapTouch Sample Code

wKgZomaCLRWAWyfNAAJ0CsyrPeY237.png

对默认的CTSU CapTouch Sample Code进行改写

FreeRTOS为例

• 合理设定Cap Touch Thread的优先级,例如设定为最高优先级

API调用报错时的改写

while(ture){} 改为 return

•延时R_BSP_SoftwareDelay() 的改写

可改为vTaskDelay()

Qe_touch_main()以及CTSU_FN_ISR测量完成中断Callback函数的改写

增加OS TimerSemaphore,定时启动CTSU的测量,释放while(1)等待测量完成中断时的CPU时间,此时可取消while(0 == g_qe_touch_flag)R_BSP_SoftwareDelay() / vTaskDelay()

wKgZomaCLSGAD26nAAKQ0QeZdBs047.png

wKgZomaCLS6AbGmgAAAPWutN1U4223.png

目的:分析整个系统中CapTouch线程与用户线程的运行关系

根据触摸按键的数量:

•确保CapTouch线程以合适的时间间隔循环运行

•确保CapTouch线程的按键处理阶段,不被其他用户线程抢占

•确保CapTouch线程的触摸按键测量阶段,其他用户线程可以运行

一些RTOS支持的分析工具

FreeRTOS:SEGGER Systemviewer

Azure ThreadX:TraceX

RT-Thread:SEGGER Systemviewer

wKgaomaCLT2AEZhDAAAUes7L1kk405.png

SEGGER SystemViewer应用示例

CapTouch触摸按键的基本运行过程

wKgZomaCLUqABwqDAADwFmpojjA721.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    17123

    浏览量

    350950
  • 嵌入式
    +关注

    关注

    5082

    文章

    19104

    浏览量

    304756
  • 操作系统
    +关注

    关注

    37

    文章

    6801

    浏览量

    123279
收藏 人收藏

    评论

    相关推荐

    CTSU程序嵌入式OS操作系统移植时的注意事项

    APIs • CTSU 运行涉及的相关ISR以及API可直接移植到多任务系统中 • 需要对 QE for Cap Touch 工具生成的 CapTouch Sample Codee 进行改写
    的头像 发表于 08-11 12:15 1412次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>CTSU</b><b class='flag-5'>程序</b><b class='flag-5'>在</b><b class='flag-5'>向</b><b class='flag-5'>嵌入式</b><b class='flag-5'>OS</b><b class='flag-5'>操作系统</b><b class='flag-5'>移植</b>时的<b class='flag-5'>注意事项</b>

    嵌入式操作系统及其特点

    嵌入式操作系统嵌入式应用软件的开发平台,嵌入式操作系统(OPerating System,OS
    发表于 07-11 16:51

    嵌入式实时操作系统μC/OS-IILPC2378上怎么移植

    操作系统及CPU是什么 μC/OS-Ⅱ内核结构及工作原理嵌入式实时操作系统μC/OS-IILP
    发表于 04-26 06:32

    怎样一步一步移植µC/OS嵌入式操作系统

    基于STM32F1怎样去移植µC/OS嵌入式操作系统呢?基于MDK-ARM V5怎样去移植µC/OS
    发表于 11-02 09:09

    实时操作系统μC/OS-II LPC2210 上的移植研究

    嵌入式实时操作系统目标处理器平台上的移植嵌入式软件开发的基础和前提。论文实现了源码公开的嵌入式
    发表于 06-03 09:48 20次下载

    基于ARM的嵌入式操作系统μC/OS-II的移植

        介绍了μC/OS-II RTOS 的内核结构和任务管理,阐述了ARM 嵌入式芯片的体系结构,给出了基于ARM 的嵌入式操作系统μC/
    发表于 09-04 09:49 28次下载

    MINIX嵌入式操作系统进程调度的移植

    MINIX操作系统作为与UNIX操作系统完全兼容但内部结构有完全不同的操作系统,采用微内核结构.分析了MINIX 3操作系统作为嵌入式
    发表于 11-07 15:49 18次下载
    MINIX<b class='flag-5'>嵌入式</b><b class='flag-5'>操作系统</b>进程调度的<b class='flag-5'>移植</b>

    嵌入式操作系统移植

    嵌入式操作系统移植,感兴趣的小伙伴们可以看看。
    发表于 11-08 18:13 3次下载

    嵌入式实时操作系统μC_OS_LPC1788上的移植及应用

    嵌入式实时操作系统μC_OS_LPC1788上的移植及应用
    发表于 09-25 09:35 10次下载
    <b class='flag-5'>嵌入式</b>实时<b class='flag-5'>操作系统</b>μC_<b class='flag-5'>OS</b>_<b class='flag-5'>在</b>LPC1788上的<b class='flag-5'>移植</b>及应用

    嵌入式实时操作系统的应用详细教程说明

    本文档的主要内容详细介绍的是嵌入式实时操作系统的应用详细教程说明包括了:1 嵌入式系统嵌入式操作系统
    发表于 12-05 08:00 2次下载
    <b class='flag-5'>嵌入式</b>实时<b class='flag-5'>操作系统</b>的应用详细教程说明

    嵌入式操作系统FREERTOS的移植.

    嵌入式操作系统FREERTOS的移植.(济南嵌入式开发招聘)-嵌入式操作系统FREERTOS
    发表于 07-30 12:01 15次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>操作系统</b>FREERTOS的<b class='flag-5'>移植</b>.

    嵌入式实时操作系统FreeRTOSARM7上移植实现

    嵌入式实时操作系统FreeRTOSARM7上移植实现(嵌入式开发工程师待遇)-嵌入式实时
    发表于 07-30 12:05 21次下载
    <b class='flag-5'>嵌入式</b>实时<b class='flag-5'>操作系统</b>FreeRTOS<b class='flag-5'>在</b>ARM7上<b class='flag-5'>移植</b>实现

    嵌入式操作系统FreeRTOS的原理与移植实现

    嵌入式操作系统FreeRTOS的原理与移植实现(嵌入式开发真的很难吗)-随着嵌入式技术的不断发展,嵌入式
    发表于 08-04 13:50 16次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>操作系统</b>FreeRTOS的原理与<b class='flag-5'>移植</b>实现

    嵌入式实时操作系统μC、OS-IIARM上的移植.

    嵌入式实时操作系统μC、OS-IIARM上的移植.(嵌入式开发环境是什么)-本文主要研究基于
    发表于 08-04 14:20 13次下载
    <b class='flag-5'>嵌入式</b>实时<b class='flag-5'>操作系统</b>μC、<b class='flag-5'>OS</b>-II<b class='flag-5'>在</b>ARM上的<b class='flag-5'>移植</b>.

    嵌入式实时操作系统μC/OS-ⅡLPC1788上的移植及应用

    电子发烧友网站提供《嵌入式实时操作系统μC/OS-ⅡLPC1788上的移植及应用.pdf》资料免费下载
    发表于 10-23 14:07 0次下载
    <b class='flag-5'>嵌入式</b>实时<b class='flag-5'>操作系统</b>μC/<b class='flag-5'>OS</b>-Ⅱ<b class='flag-5'>在</b>LPC1788上的<b class='flag-5'>移植</b>及应用