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

东莞哪家做网站比较好网站建设 报价

东莞哪家做网站比较好,网站建设 报价,12380网站建设情况汇报,dw制作旅游网站教程linux驱动学习记录 一、背景 在开始学习我的linux驱动之旅之前#xff0c;先提一下题外话#xff0c;我是一个c语言应用层开发工作人员#xff0c;在工作当中往往会和硬件直接进行数据的交互#xff0c;往往遇到数据不通的情况#xff0c;常常难以定位#xff0c;而恰巧…linux驱动学习记录 一、背景 在开始学习我的linux驱动之旅之前先提一下题外话我是一个c语言应用层开发工作人员在工作当中往往会和硬件直接进行数据的交互往往遇到数据不通的情况常常难以定位而恰巧驱动是处于应用层和硬件之间的一个重要的数据传输媒介也是在这个背景下驱动了我对驱动的好奇心当抱着了解的心态来的时候却不知不觉地对驱动的执行方式产生了兴趣由此也开始了我学习的征途… 二、驱动开发 驱动的作用是用来操作硬件工作使其应用开发人员能间接实现对功能的开发。驱动函数都是注册在内核当中应用层代码也都是通过直接调用系统的函数来实现对驱动的数据传递和接收实现流程如下图所示 1、驱动环境搭建内核编译的方式 从官网获取将获取的压缩包解压后放入/usr/src中使用apt指令获取 sudo apt-cache search linux-source sudo apt-get install linux-source-version sudo tar jxvf linux-source-version.tar.bz2编译源码 cd /usr/src/linux-source-version #以下三选一 sudo make config #逐一选择kernel的配置形式 #或 sudo make oldconfig #按原有kernel配置配置kernel #或 sudo make menuconfig #使用可视化环境配置kernel#编译内核的过程 sudo make #编译内核时间较长可能会长达1小时及以上如5.4.0用时约3-5个小时 #此时已完成了镜像编译和所有modules编译如果不确定可以使用以下指令再编译 sudo make modules #编译内核驱动modules sudo make bzImage #编译内核镜像#加载modules的过程 sudo make modules_install #安装内核模块 #检查安装 cd /lib/modules #如果安装正常这里面会出现以版本号为文件名的文件夹就证明安装成功了如5.4.xx或5.4.xx-xx-generic2、驱动加载和卸载的指令 lsmod list moduel 把我们机器上所有的驱动打印出来insmod安装驱动rmmod删除驱动modinfo打印驱动信息 3、最简单的驱动开始示例 #include linux/module.h // module_init module_exit #include linux/init.h // __init __exit// 模块安装函数 static int __init chrdev_init(void) { printk(KERN_INFO chrdev_init helloworld init\n);return 0; }// 模块下载函数 static void __exit chrdev_exit(void) {printk(KERN_INFO chrdev_exit helloworld exit\n); }module_init(chrdev_init); module_exit(chrdev_exit);// MODULE_xxx这种宏作用是用来添加模块描述信息 MODULE_LICENSE(GPL); // 描述模块的许可证注 __init宏告知编译器将变量或函数放在一个特殊的区域这个区域定义在vmlinux.lds中。__init将函数放在.init.text这个代码区中__initdata将数据放在.init.data这个数据区中。 标记为初始化的函数,表明该函数供在初始化期间使用。在模块装载之后模块装载就会将初始化函数扔掉。这样可以将该函数占用的内存释放出来。 __exit宏告知编译器将函数放在.exit.text这个区域中。__exitdata宏则告知编译器将数据放在.exit.data这个区域中。 exit.*区域仅仅对于模块是有用的如果编译稳定的话exit函数将永远不会被调用。只有当模块支持无效的时候exit.*区域将被丢弃。这就是为什么定义中会出现ifdef。 printk是内核的日志函数日志级别有八个0-7通过读写/proc/sys/kernel/printk文件可以读取、修改控制台的日志级别数字越小级别越高其实printk始终能输出信息只不过是在 /var/log/messages文件中可以通过dmesg来进行查看。 #define KERN_EMERG 0    #define KERN_ALERT 1    #define KERN_CRIT 2    #define KERN_ERR 3    #define KERN_WARNING 4    #define KERN_NOTICE 5    #define KERN_INFO 6    #define KERN_DEBUG 7 4、驱动编译Makefile的编写 前提 一定要把源码树目录中主Makefile中ARCH、cross_compile变量的值更改了 #ubuntu的内核源码树如果要编译在ubuntu中安装的模块就打开这2个 #KERN_VER $(shell uname -r) #KERN_DIR /lib/modules/$(KERN_VER)/build# 开发板的linux内核的源码树目录 KERN_DIR /root/driver/kernelobj-m module_test.oall: make -C $(KERN_DIR) Mpwd modulescp: cp *.ko /root/porting_x210/rootfs/rootfs/driver_test.PHONY: clean clean: make -C $(KERN_DIR) Mpwd modules clean注 make -C $(KERN_DIR) MPWD modules这句话代码的作用就是到 KERN_DIR这个文件夹中 make modules 把当前目录赋值给MM作为参数传到主目录的Makefile中实际上是主目录的makefile中有目标modules下面有一定的规则来编译驱动 #KERN_VER $(shell uname -r)#KERN_DIR /lib/modules/$(KERN_VER)/build我们在ubuntu中编译内核的时候用这两句代码因为在ubuntu中为我们保留了一份linux内核的源码树我们编译的时候直接调用那个源码树的主Makefile以及一些头文件、内核函数等 了解规则以后我们设置好KERN_DIR、obj-m这两个变量以后直接make就可以了 这里注意vermagic 这个的1.8.0-41是你用的linux内核源码树的版本号只有这个编译的版本号与运行的linux内核版本一致的时候驱动程序才会被安装 注意licenseGPL linux内核开元项目的许可证一般都是GPL这里尽量设置为GPL否则有些情况下会出现错误
http://www.hkea.cn/news/14406848/

相关文章:

  • 王璞网站开发实战答案wordpress 主题 更新
  • 北京建设工程质量协会网站wordpress mu 搜索
  • 重庆网站设计中心百度联盟网站有哪些
  • 保定网站开发公司怎么选择扬中网站建设
  • 网站数据库是什么手机网页界面设计
  • wordpress抓取别人网站电商网站建设实训报告心得
  • 深圳展览设计网站建设手工制作代加工接单网
  • 音乐网站素材php网站开发工具
  • 如何选择营销网站建设dw个人网页制作素材
  • 做网站的实验报告网站编辑如何做原创
  • 有源码后怎么做网站百度收录率高的网站
  • 莘县网站建设返回链接 网站惩罚检查 错误检查
  • 自己网站做问卷调查网站定制公司哪家最权威
  • 网站建设视频讲解网站域名过期不续费
  • 互联网电商网站建设长沙官网优化推广
  • 湖北省建设厅网站证件网络营销有哪些方面
  • 快速网站排名logo设计在线生成免费免费
  • 晋州住房保障建设局网站wordpress用户集成
  • 网站制作成功后怎么使用标签云小工具 wordpress nofollow
  • 威海专业做网站公司如何作wordpress 主题
  • 郑州企业建网站制作网站判断手机跳转代码
  • 网站的手机客户端怎样做太月星网站建设程序开发
  • 怎么查看网站解析西大路网站建设公司
  • 建企业网站一般需要多少钱沧州好的做网站的公司
  • 有没有好网站推荐小米手机官方网站
  • php网站开发模式有哪些WordPress添加作者信息小工具
  • 做网站与网页有什么区别wordpress的站 做固定链接301重定向对百度的影响
  • 新化网站建设成都推广网站多少钱
  • wordpress如何建站公司网站空间
  • 中国行业网站做网站企业经营范围