在Linux嵌入式编程中,是否可以有在板上Linux启动后再加载这个应用的方法?

在Linux嵌入式编程中,是否可以有在板上Linux启动后再加载这个应用的方法?,第1张

应用程序本身就是在内核启动后运行的。

你得有传递文件的程序 比如ftp。建立好用户,用网络远程登录你开发板的linux,就能随时运行你想要的程序了。你得有linux系统使用的基础知识。

内核模块本身也可以动态加载

用root帐号 远程登录你的linux使用 insmod 命令加载模块 rmmod 移除已加载的模块。

内核和文件系统 调试好后就不需要频繁的编译内核了。 用网络把可执行文件传递给开发板就可以

nsmod和rmmod分别用于加载和卸载模块,但是每次只能加载/卸载一个模块,如果一个模块依赖于多个模块,则需要进行多次 *** 作,比较繁琐。modprobe命令集加载/卸载功能于一身,并且可以自动解决模块的依赖关系,将某个模块所依赖的其他模块全部加载。

用法:#modprobe 【选项】 模块 【符号=值】

同时modprobe支持很多选项

你也可以看一下ZLG的嵌入式Linux开发教程第64页,写得非常详细,我觉得很适合入门。

1)embed_hello_init 不是结构体名,是函数

2)int _init部分,int 表示函数的返回值类型,是整型

扣除_init去看,static int embed_hello_init (void),就是定义一个静态的无入参函数,返回值是整型。这些概念跟嵌入式,linux,驱动都没有任何关系,是C语法的概念。

回到_init,这是linux 内核编程的一个特殊宏,,展开是一个gcc的扩展属性语法,限制了函数链接时放elf文件的那个section。

定义大概如下(不同内核版本可能有差异):

#define __init __attribute__((__section__(".init")))

通过把init函数限制在一个固定的section,一个作用是在启动时简单遍历section调用初始化函数即可,另外一个作用是在初始化完成后,可以马上释放该section所占空间给系统用(因为初始化函数通常只在系统启动后执行一次)。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8749400.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-20
下一篇 2023-04-20

发表评论

登录后才能评论

评论列表(0条)

保存