当前位置: 首页 > news >正文

山西城乡和住房建设厅网站首页如何做百度关键词推广

山西城乡和住房建设厅网站首页,如何做百度关键词推广,wordpress上传图片错误媒体库错误,seo关键词优化报价在上一小节中#xff0c;给大家讲解了驱动模块传参实验#xff0c;使用insmod命令加载驱动时可以进行参数的传递#xff0c;但是每一个内核模块之间是相互独立的#xff0c;那模块间的符号传递要怎样进行呢#xff0c;让我们带着疑问来进行本章节的学习吧#xff01; 6.…在上一小节中给大家讲解了驱动模块传参实验使用insmod命令加载驱动时可以进行参数的传递但是每一个内核模块之间是相互独立的那模块间的符号传递要怎样进行呢让我们带着疑问来进行本章节的学习吧 6.1 内核模块符号导出简介 驱动程序编译生成的ko文件是相互独立的即模块之间变量或者函数在正常情况下无法进行互相访问。而一些复杂的驱动模块需要分层进行设计这时候就需要用到内核模块符号导出。 内核符号导出指的是在内核模块中导出相应的函数和变量在加载模块时被记录在公共内核符号表中以供其他模块调用。符号导出所使用的宏为EXPORT_SYMBOL(sym)和EXPORT_SYMBOL_GPL(sym)。它们定义在 “内核源码/include/linux/export.h”文件中在module.h文件中已经对export.h进行引用所以不需要单独引用export.h文件,详细定义如下图6-1所示 #define EXPORT_SYMBOL(sym) \ __EXPORT_SYMBOL(sym, )#define EXPORT_SYMBOL_GPL(sym) \__EXPORT_SYMBOL(sym, _gpl)EXPORT_SYMBOL(sym)和EXPORT_SYMBOL_GPL(sym)两个宏使用方法相同而EXPORT_SYMBOL_GPL(sym)导出的模块只能被 GPL 许可的模块使用所以绝大多数的情况都使用EXPORT_SYMBOL(sym)进行符号导出。sym为函数的唯一参数表示要导出的函数或变量名称。 至此关于内核模块符号导出函数就讲解完成了在下一小节中将会编写两个驱动代码来进行内核模块符号导出实验。 6.2 实验程序的编写 本实验对应的网盘路径为iTOP-RK3568开发板【底板V1.7版本】\03_【iTOP-RK3568开发板】指南教程\02_Linux驱动配套资料\04_Linux驱动例程\03。 本章实验将编写Linux下的内核模块符号导出实例代码总共有两个驱动程序第一个驱动文件名为mathmodule.c用来定义参数num和函数add(a,b)第二个驱动文件名为hello.c,会引用mathmodule.c驱动程序中的参数num和数学函数add(a,b)并将相应的参数值和函数返回值打印到串口终端上。 编写完成的mathmodule.c代码如下图6-2所示 #include linux/init.h #include linux/module.h int num 10;//定义参数num EXPORT_SYMBOL(num);//导出参数numint add(int a, int b)//定义数学函数add()用来实现加法 {return a b; } EXPORT_SYMBOL(add);//导出数学函数add()static int __init math_init(void)//驱动入口函数 {printk(math_moudle init\n);return 0; }static void __exit math_exit(void)//驱动出口函数 {printk(math_module exit\n); }module_init(math_init);//注册入口函数 module_exit(math_exit);//注册出口函数MODULE_LICENSE(GPL);//同意GPL开源协议 MODULE_AUTHOR(topeet);//作者信息图6-2 以上代码定义了一个int类型的num变量和add()数学函数并使用EXPORT_SYMBOL宏进行导出。 编写完成的hello.c代码如下图6-3所示 #include linux/init.h #include linux/module.h extern int num;//导入int类型变量num extern int add(int a, int b);//导入函数add static int __init hello_init(void)//驱动入口函数 {static int sum;printk(num %d\n, num);//打印num值sum add(3, 4);//使用add函数进行34的运算 printk(sum %d\n, sum);//打印add函数的运算值return 0; }static void __exit hello_exit(void)//驱动出口函数 {printk(Goodbye hello module\n); }module_init(hello_init);//注册入口函数 module_exit(hello_exit);//注册出口函数MODULE_LICENSE(GPL);//同意GPL开源协议 MODULE_AUTHOR(topeet);//作者信息图6-3 程序导入了int类型的变量num和add()函数并在驱动入口函数中打印相应了num的参数值并对add()函数进行了调用。 至此两个驱动代码就编写完成了代码较为简单实现了内核模块符号的导出和导出符号的使用具体的驱动加载运行测试会在下个小节进行。 6.3 运行测试 6.3.1 编译驱动程序 在mathmodule.c和hello.c的同一目录下创建Makefile文件Makefile文件内容如下图6-4所示 export ARCHarm64#设置平台架构 export CROSS_COMPILEaarch64-linux-gnu-#交叉编译器前缀 obj-m : mathmodule.o obj-m hello.oKDIR :/home/topeet/Linux/linux_sdk/kernel #这里是你的内核目录 PWD ? $(shell pwd) all:make -C $(KDIR) M$(PWD) modules #make操作 clean:make -C $(KDIR) M$(PWD) clean #make clean操作图6-4 对于Makefile的内容注释已在上图进行添加这里要注意的是在hello.c代码中使用了mathmodule.c所导出的符号所以mathmodule.c要在hello.c之前进行编译即第3行和第4行顺序不能交换。保存退出之后来到相应的文件目录下如下图图6-5所示 图6-5 然后使用命令“make”进行驱动的编译编译完成如下图图6-6所示 图6-6 编译完后会生成hello.ko和mathmodule.ko目标文件如下图图6-7所示 图6-7 至此我们的驱动模块就编译成功了下面进行驱动的加载运行测试。 6.3.2 运行测试 这里要注意的是由于 hello.ko依赖于mathmodule.ko所以mathmodule.ko需要先加载分别使用以下命令进行模块的加载加载顺序不能变如下图6-8所示 insmod mathmodule.koinsmod hello.ko图6-8 可以看到 hello.ko驱动加载的时候mathmodule.ko模块中定义的num参数值和调用sum()函数的后正确的返回值都被打印了出来。至此内核模块符号导出实验就完成了。 最后可以输入以下命令进行驱动的卸载如下图图6-9所示 rmmod hello.kormmod mathmodule.ko图6-9 注意由于hello.ko文件使用了mathmodule.ko导出的符号所以要先卸载hello.ko卸载完成之后再卸载mathmodule.ko。 【最新驱动资料文档例程】 链接 https://pan.baidu.com/s/1M4smUG2vw_hnn0Hye-tkog 提取码hbh6 【B 站配套视频】 https://b23.tv/XqYa6Hm 【RK3568 购买链接】 https://item.taobao.com/item.htm?spma1z10.5-c-s.w4002-2245 链接 https://pan.baidu.com/s/1M4smUG2vw_hnn0Hye-tkog 提取码hbh6 【B 站配套视频】 https://b23.tv/XqYa6Hm 【RK3568 购买链接】 https://item.taobao.com/item.htm?spma1z10.5-c-s.w4002-2245 2452613.11.2fec74a6elWNeAid669939423234
http://www.sadfv.cn/news/327125/

相关文章:

  • 如何上传网站源码中山网站建设找阿 n 2
  • 龙海做网站费用全景网站app
  • 网站收录查询方法好的开源网站
  • 仿牛商网营销型网站网络营销策划书5000字
  • 二级网站收录分类信息网址导航
  • 网站制作中需要注意的地方网站管理系统源码
  • 流程图制作网站ps常用素材网站有哪些
  • 三水网站设计评论啦 wordpress怎么出来个友言
  • 信息发布网站有哪些外包公司好不好
  • 17网站一起做网店 睡衣上海人才网赶集网
  • 石岩做网站公司专门做h网页游戏的网站
  • 酒水食品做的好网站旅游网站做模板素材
  • 建网站地址网站建设中中文模板下载
  • 门户网站开发的意义智库建设网站
  • 网站建设贰金手指科杰2深圳网络品牌
  • 手机网站客户端设计与实现网络设计是干什么的呢
  • 网站建设 的介绍域名注册好了怎么使用
  • 注册网站账号审核不通过无法登陆怎么办做ptt网站
  • 网站案例网站建设免费咨询律师问题
  • 武进建设局网站为何老是打不开学电脑培训班多少一个月
  • 免费开源网站模板wordpress mysql加速
  • 公司要我做网站_没有公司的材料是不是不可以做深圳三站合一网站建设
  • 沈阳军成网站建设网络模块
  • 企业网站优化暴肃湖南岚鸿很好.net 快速网站开发
  • 网站模板织梦建个企业网站备案需要多长时间
  • 齐河县城乡建设局官方网站百度找不到 网站
  • 甘肃cms建站系统哪家好泰安网红打卡地
  • 做网站需要几步用于做分析图 的地图网站
  • flash网站开发百度云盘做网站
  • 购买商标去哪个网站学院网站建设项目的活动分解