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

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

3天内不再提示

基于RK3568的内部定时器应用示例

武汉万象奥科 2023-11-09 17:03 次阅读

1. 内部定时器介绍

内核定时器是内核用来控制在未来某个时间点(基于jiffies)调度执行某个函数的一种机制,其实现位于kernel/linux/timer.hkernel/timer.c 文件中。

被调度的函数肯定是异步执行的,它类似于一种“软件中断”,而且是处于非进程的上下文中,所以调度函数必须遵守以下规则:

a. 没有 current 指针、不允许访问用户空间。因为没有进程上下文,相关代码和被中断的进程没有任何联系。

b. 不能执行休眠(或可能引起休眠的函数)和调度。

c. 任何被访问的数据结构都应该针对并发访问进行保护,以防止竞争条件。

内核定时器的调度函数运行过一次后就不会再被运行了(相当于自动注销),但可以通过在被调度的函数中重新调度自己来周期运行。

在SMP系统中,调度函数总是在注册它的同一CPU上运行,以尽可能获得缓存的局域性。

3568

2. 驱动示例代码

RK3568蜂鸣器定时鸣叫:

#include

#include

#include

#include

#include

#defineGPIO_PIN 15 // 替换为你的GPIO引脚

staticstruct timer_list timer;

intgpio_status = 1;

// 定时器中断处理函数

staticvoid timer_callback(struct timer_list *t) {

gpio_set_value(GPIO_PIN ,gpio_status);

gpio_status = ! gpio_status;

mod_timer(&timer, jiffies +msecs_to_jiffies(1000)); // 1秒后再次触发定时器

}

staticint __init mymodule_init(void) {

int ret;

// 请求GPIO

ret = gpio_request(GPIO_PIN,"my_gpio");

if (ret) {

printk("无法请求GPIO %d\n",GPIO_PIN);

return ret;

}

// 配置GPIO引脚为输出

gpio_direction_output(GPIO_PIN, 0);

// 初始化定时器

timer_setup(&timer, timer_callback, 0);

mod_timer(&timer, jiffies +msecs_to_jiffies(2000)); // 2秒后触发定时器

return 0;

}

staticvoid __exit mymodule_exit(void) {

// 删除定时器

del_timer_sync(&timer);

// 释放GPIO

gpio_free(GPIO_PIN);

}

module_init(mymodule_init);

module_exit(mymodule_exit);

MODULE_LICENSE("GPL");

MODULE_AUTHOR("zou");

MODULE_DESCRIPTION("SampleGPIO and Timer Interrupt Kernel Module");

3. 内部定时器验证

将驱动编译成模块并insmod(加载)模块后,等待2秒后蜂鸣器开始以1s时间间隔鸣叫。


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

    关注

    23

    文章

    3147

    浏览量

    112037
  • 嵌入式硬件
    +关注

    关注

    1

    文章

    897

    浏览量

    7982
  • RK3568
    +关注

    关注

    4

    文章

    433

    浏览量

    4127
收藏 人收藏

    评论

    相关推荐

    RK3568-视频开发案例

    RK3568-视频开发案例
    的头像 发表于 01-18 15:51 286次阅读
    <b class='flag-5'>RK3568</b>-视频开发案例

    RK3568-三屏同显、异显方案演示

    RK3568-三屏同显、异显方案演示
    的头像 发表于 01-18 15:11 318次阅读
    <b class='flag-5'>RK3568</b>-三屏同显、异显方案演示

    rk3568是什么架构的?

    RK3568是什么架构的? 中国领先的无晶圆厂半导体公司Rockchip Electronics推出了一款专门为人工智能应用设计的新型片上系统(SoC)。这种新型SoC被称为RK3568,构建
    的头像 发表于 08-15 17:25 1631次阅读

    介绍rk3568的4G模块

    介绍rk3568的4G模块 RK3568作为一款新一代的高性能处理器,其内部集成了4G通讯模块。这款通讯模块采用了LTE Cat.6标准,支持多个频段和传输协议,具有高速、稳定、灵活等多种特性。本文
    的头像 发表于 08-15 17:25 733次阅读

    rk3568有多少引脚?

    rk3568有多少引脚? 首先,让我们来了解一下什么是rk3568rk3568是由瑞芯微推出的一款高性能、低功耗的嵌入式处理器,它是rk3566的升级版本,采用了更加先进的技术和架构
    的头像 发表于 08-15 17:25 1007次阅读

    RK3568与全志H6参数对比

    RK3568与全志H6参数对比 全志是一家知名的处理器设计公司,专注于移动和家庭娱乐电子领域。它提供了许多流行的处理器,如H6、H5、H3等。最近,全志推出了一款名为RK3568的新处理器,那么
    的头像 发表于 08-15 17:25 3940次阅读

    RK3568与STIM的差异

    RK3568与STIM的差异 RK3568和STIM是两款不同的处理器,都属于ARM架构的芯片。RK3568是瑞芯微推出的一款低功耗高性能的芯片,STIM则是一家法国芯片制造企业生产的处理器。虽然
    的头像 发表于 08-15 17:25 604次阅读

    RK35683568J的区别

    RK35683568J的区别 在当前处理器市场中,以小而美形象闻名的瑞克微电子旗下产品RK3568/J也引起了广泛关注,其中RK35683568
    的头像 发表于 08-15 17:25 5073次阅读

    RK3568RK3566的区别

    RK3568RK3566的区别 RK3568RK3566是两种不同的芯片,都是由Rockchip公司推出的。它们都是面向高性能应用市场的芯片,具有相似的性能规格和功能特点。但是在某
    的头像 发表于 08-15 17:25 1.1w次阅读

    rk3568和1619b那个更好?

    rk3568和1619b那个更好? 在当前市场上,RK3568和1619B这两个芯片都是比较受欢迎的选择。不过,如果要对比两者的优劣,还需要从多个方面来进行考虑。下面,我们来分别看看RK3568
    的头像 发表于 08-15 17:05 4213次阅读

    rk3568rk3399的区别

    rk3568rk3399的区别 随着人工智能、物联网和5G等技术的不断发展,CPU芯片的需求越来越高。而在所有的CPU芯片中,Rockchip的产品备受瞩目。作为一家集成电路设计厂商
    的头像 发表于 08-15 17:04 2309次阅读

    瑞芯微RK3568核心板PET_RK3568_CORE简述

    瑞芯微RK3568核心板PET_RK3568_CORE简述
    的头像 发表于 08-08 11:44 2105次阅读
    瑞芯微<b class='flag-5'>RK3568</b>核心板PET_<b class='flag-5'>RK3568</b>_CORE简述

    瑞芯微RK3568主板开发板PET_RK3568_P01简述

    瑞芯微RK3568主板开发板PET_RK3568_P01简述
    的头像 发表于 08-08 11:41 1768次阅读
    瑞芯微<b class='flag-5'>RK3568</b>主板开发板PET_<b class='flag-5'>RK3568</b>_P01简述

    RK3568-OpenAMP应用示例

    rk3568 cpu0 / 3上各自跑rtthread,并通过openamp跑demo
    的头像 发表于 08-07 15:46 1472次阅读
    <b class='flag-5'>RK3568</b>-OpenAMP应用<b class='flag-5'>示例</b>

    一文读懂!RK3668和RK3568有什么区别?

    从上图可以看出,RK3568RK3566 CPU均为四核Cortex-A55架构,GPU为Mali-G522EE,内置NPU,可提供1T算力,支持DDR及CPU Cache全链路ECC等,RK366与
    的头像 发表于 05-18 11:15 1279次阅读
    一文读懂!<b class='flag-5'>RK</b>3668和<b class='flag-5'>RK3568</b>有什么区别?