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

网站编辑合适内向的人做吗竞价代运营公司

网站编辑合适内向的人做吗,竞价代运营公司,微小店网站建设用途,网站开发视频资源放哪儿内核驱动不仅可以将驱动编译到内核中,还可以动态的编译内核驱动。本文档介绍如何以模块的方式编译内核驱动。 要动态的编译内核,首先需要将内核源码编译通过,内核的编译请参考使用手册第五章。9.5.2.1 内核和编译器路径 本节介绍内核路径、编…

内核驱动不仅可以将驱动编译到内核中,还可以动态的编译内核驱动。本文档介绍如何以模块的方式编译内核驱动。
要动态的编译内核,首先需要将内核源码编译通过,内核的编译请参考使用手册第五章。
9.5.2.1 内核和编译器路径
本节介绍内核路径、编译器路径
如下图所示,作者的 android 源码在“/home/imx6/iTOP-iMX6_android4.4.2”目录下,内核源码在其中的“kernel_imx”目录下。

进入“kernel_imx”目录,查看“build_android_kernel.sh”中的脚本文件,如下图所示。

如上图所示,我们可以得到一些信息,在后面编译内核模块的时候,需要设置编译目标平台为 arm,“export ARCH=arm”;编译器的路径为“$(pwd)/../prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi-”。
9.5.2.2 Makefile 文件
作者在“/home/imx6”目录下新建一个“imx_driver_modules”目录,将要编译的驱动和 Makefile 文件放到这个目录下。
Makefile 脚本文件:
obj-m += iTOP-iMX6_driver_hello.o
KDIR =/home/imx6/iTOP-iMX6_android4.4.2/kernel_imx
PWD ?= $(shell pwd)
all:
make -C $(KDIR) M=$(PWD) modules ARCH=arm
CROSS_COMPILE=$(KDIR)/../prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi-
clean:

rm -rf modules.order *.o workqueue.o Module.symvers *.mod.c *.ko
脚本中:
第一行bj-m += iTOP-iMX6_driver_hello.o 表示编译的源文件为 iTOP-iMX6_driver_hello.c,如果源文件名有变化,则需要修改成对应的。
第二行:KDIR 参数指向对应的内核源码目录。作者的内核源码是在/home/imx6/iTOP-iMX6_android4.4.2/kernel_imx 目录下,用户要根据自己的具体情况来改。
第三行:PWD ?= $(shell pwd)表示将当前目录的路径赋值给 PWD 变量,也就是/home/imx6/imx_driver_modules
第五行:其中 make -C $(KDIR) M=$(PWD) modules,表示将当前目录下的文件编译为模块,并且制定了内核源码的路径;
其中 ARCH=arm 表示设置目标 CPU 类别为 arm,也就是编译的依赖内核和驱动模块目标 CPU 为 ARM;
其中 CROSS_COMPILE=$(KDIR)/../prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi-,表示设置编译器路径,$(KDIR)为/home/imx6/iTOP-iMX6_android4.4.2/kernel_imx,所以这里完整的路径为“/home/imx6/iTOP-iMX6_android4.4.2/kernel_imx/../prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi-”,正好指向作者内核编译器的路径。
9.5.2.3 简单驱动源码
驱动文件名称为:iTOP-iMX6_driver_hello.c,源码如下:
#include
#include
MODULE_LICENSE("Dual BSD/GPL");
MODULE_AUTHOR("iTOPEET_dz");
static int hello_init(void)
{
printk(KERN_EMERG "Hello World enter!\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_EMERG "Hello world exit!\n");
}
module_init(hello_init);
module_exit(hello_exit);
驱动源码只有基本的入口和出口函数。加载和卸载的时候分别打印“Hello Worldenter!”和“Hello world exit!”。
9.5.2.4 模块编译
如下图所示,将源码拷贝到 Ubuntu 系统下。

使用命令“make”,如下图所示,可以看到有“iTOP-iMX6_driver_hello.ko”文件生成。

使用命令“make clean”,可以删除中间文件,如下图所示。

9.5.2.5 模块编译常见问题
在以模块的方式编译驱动的过程中,新手可能会以下问题。
1.内核源码没有编译或者内核源码路径设置不正确。
如果内核源码没有编译,那么模块将会提示缺少库之类的错误;如果路径设置不正确,会提示找不到内核。
2.源码和 Makefile 文件在 Windows 下编写,然后拷贝到 Ubuntu 上,由于编辑器不同导致转码错误。
这种错误比较容易解决,Make 编译之后,系统会提示 Makefile 或者驱动文件具体某一行出现问题。使用 vim 编辑器打开查看一下,就能找出一些乱码,使用 vim 编辑器修正一下再编译即可。
9.5.2.6 模块加载和卸载
作者这里使用最小 linux 系统来测试模块的加载和卸载,最小系统在使用手册第十三章有介绍。在编译模块前,内核源码必须要编译通过,作者这里是在最小系统是加载模块,那么内核源码也必须编译为 qt 的内核(最小系统使用的是 qt 的内核),否则是无法加载的。
如下图所示,将 ko 文件拷贝到 u 盘上,启动开发板,将 U 盘插到开发板上(靠近网口的usb 接口),使用命令“mkdir /mnt/udisk”新建文件夹,使用命令“mount /dev/sda1/mnt/udisk/”挂载盘符,使用命令“cp -r /mnt/udisk/iTOP-iMX6_driver_hello.ko ./”将驱动模块拷贝到开发板。

然后使用命令“insmod iTOP-iMX6_driver_hello.ko”加载驱动模块,如下图示,打印出“Hello World enter!”,表明模块驱动加载成功。

接着使用命令“rmmod iTOP-iMX6_driver_hello”卸载模块,如下图所示,发现提示没有目录“/lib/modules”,我们就按照提示新建目录。

如下图所示,使用命令“mkdir /lib/modules”新建目录,再次使用命令“rmmodiTOP-iMX6_driver_hello”卸载驱动模块,发现仍然提示没有“3.0.35-g0e09bb1-dirty”这个路径。

如下图所示,使用命令“mkdir /lib/modules/3.0.35-g0e09bb1-dirty”新建目录,再次用命令“rmmod iTOP-iMX6_driver_hello”卸载驱动模块,发现打印信息“Hello worldexit!”,模块卸载成功。

只要重新烧写系统,这些新建目录只需要建立一次即可。

http://www.lbrq.cn/news/2609641.html

相关文章:

  • 做电视的视频网站吗怎么申请域名建网站
  • 山东平台网站建设方案5151app是交友软件么
  • 肥西上派网站开发上海做seo的公司
  • 产品做优化好还是超级网站好太原网站建设谁家好
  • 怎么自己做网站卖东西重庆排名seo公司
  • wordpress 域名插件重庆公司网站seo
  • 成都中小企业网站建设建网站软件
  • 南宁定制网站建设网络营销的模式有哪些?
  • 政府网站建设公司西安关键词快速排名
  • 网站栏目及内容衡阳seo优化报价
  • 重庆建设厂招聘信息网站软文推荐
  • 芷江建设工程招投标网站中国最新消息新闻
  • 深圳专业集团网站建设百度指数什么意思
  • 做网站需要多少钱知乎百度图片识别在线使用
  • 长沙做网站 必看 磐石网络上海关键词优化排名软件
  • pbootcms快速仿站西安网站推广慧创科技
  • wordpress清理数据库的垃圾文件广州推动优化防控措施落地
  • 网站开发华企云商信息流投放
  • .net网站方案充电宝seo关键词优化
  • 合肥高端网站开发seo网络优化师就业前景
  • 如何做网站frontpage中国十大品牌营销策划公司
  • 怎么给网站加在线客服营业推广怎么写
  • 网站建设基础信阳seo优化
  • 住房城市建设委官方网站在线搜索资源
  • 如何做公司培训网站太原seo建站
  • 济南自适应网站建设营销策划案
  • 网站设计的专业流程温州seo公司
  • 专业网站建设排名企业培训课程价格
  • 一起作做业网站seo推广收费标准
  • 湛江网站建设方案咨询网站关键词快速排名技术
  • SmartMediaKit 模块化音视频框架实战指南:场景链路 + 能力矩阵全解析
  • Spring 的优势
  • Redis面试精讲 Day 11:Redis主从复制原理与实践
  • LINUX 85 SHElL if else 前瞻 实例
  • [GESP202306 四级] 2023年6月GESP C++四级上机题超详细题解,附带讲解视频!
  • 线程锁-互斥、自旋、读写、原子操作、线程池