这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 在STM32上实现驱动注册initcall机制

共1条 1/1 1 跳转至

在STM32上实现驱动注册initcall机制

高工
2025-03-15 12:59:11     打赏

一、前言

    每个硬件如LED控制,GPIO口需要初始化,初始化函数bsp_led_init();这个函数需要在主函数中调用初始化,类似这样:

image.png

    当有很对驱动,加入100个硬件驱动,我们只用到了了50个,剩下的源文件不参与编译,此时如果忘记将主函数中的相应初始化删除,就会报错。这样操作很麻烦,不能很好的实现单个驱动文件的隔离。    那么现在就提供解决此问题的方式。这个方式源自于Linux内核--initcall机制。具体讲解网络上很多,在此不在详细说明。    可阅读:

    keil 之Image:

    https://www.cnblogs.com/idle_man/archive/2010/12/18/1910158.html

    linux的initcall机制(针对编译进内核的驱动) :

二、代码

    头文件:

image.png

    源文件:

image.pngimage.png

    在主进程中调用void do_init_call(void)进行驱动初始化,驱动注册初始化时调用:

image.png

    举个例子:

image.png

    这样头文件中就没有有对外的接口函数了。

三、代码

    gitee:

https://gitee.com/schuck/cola_os

    girhub:

https://github.com/sckuck-bit/cola_os






关键词: STM32     实现     驱动     注册    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]