你得有传递文件的程序 比如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所占空间给系统用(因为初始化函数通常只在系统启动后执行一次)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)