MS-RTOS 内核模块动态装载

1、MS-RTOS 内核模块动态装载简介

        MS-RTOS 支持内核模块动态装载功能。用户可以根据需要,在不需要对内核重新编译的情况下,使用 insmod、rmmod 等命令动态地将模块加入或移出内核。这样可以提高 MS-RTOS 的灵活性,当需要对模块进行修改时,不用对整个内核编译而只需要对模块进行编程即可。模块可以不依赖于某个固定的硬件平台,当模块被加载入内核后,就相当于静态链接到了内核中,内核和模块的地址空间可以相互访问。

2、BSP 添加内核模块动态装载功能

1)BASE 构建时需要添加 `libmskmodloader` 模块

2)BSP 的 xxx.mk 文件中需要添加如下内容

#********************************************************************************************************* 
# Use kernel module loader 
#********************************************************************************************************* 
LOCAL_USE_KMOD_LOADER := yes

3)BSP boot_thread() 函数中调用如下内容

static void boot_thread(ms_ptr_t arg) 
{ 
    ... 
    ms_kmodule_loader_init(); 
    ... 
}

4)在 BSP 连接脚本中添加如下内容

#ifdef MS_CFG_KMOD_LOADER_EN
    . = ALIGN(8);
    PROVIDE (__ms_sym_tbl_start__ = .);
    KEEP (*(SORT(.ms_sym_tbl.*)))
    PROVIDE (__ms_sym_tbl_end__ = .);
#endif

5)重新编译 BSP

3、生成内核模块工程

1)在 IoT Studio 中使用专家模式生成内核静态库 (Kernel Static Lib)

2)修改模块工程 xxx.mk 文件,将目标名称改为 xxx.ko

3)修改模块工程 xxx.mk 文件,将 include $(KERNEL_LIBRARY_MK) 改为 include $(KERNEL_MODULE_MK)

4)工程中添加如下代码

int module_init (void)
{
    ms_printk(MS_PK_INFO, "hello_module init!\n");

    return 0;
}

void module_exit (void)
{
    ms_printk(MS_PK_INFO, "hello_module exit!\n");
}

5)编程生成 `xxx.ko` 文件

4、模块操作命令

MS-RTOS 中可以通过 `insmod`、`rmmod`、`lsmod` 等命令操作模块文件,具体使用方式如下

# help insmod
insmod path, load kernel module
# help rmmod
rmmod path, unload kernel module
# help lsmod
lsmod, show all kernel modules

5、内核模块上电自动装载

        内核模块文件可以通过启动参数文件在上电时自动装载,需要在 dts 文件中加入如下内容。dts 文件相关内容详见 "MS-RTOS 启动参数文件" 相关内容。

kmodules {
    xdev_mod {
        compatible = "ms-kmodule";          // 类型
        vendor = "acoinfo";                 // 厂商
        version = <1>;                      // 版本号
        
        img_file = "/nor/modules/xxx.ko";   // 模块文件路径
    };
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

stone8761

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值