博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
6.5号——内核文件系列
阅读量:5014 次
发布时间:2019-06-12

本文共 1356 字,大约阅读时间需要 4 分钟。

1.一般的io函数芯片厂商都已经写进内核里了,在内核源码下的source/linux-3.4.112/Documentation/gpio.txt中

  如:gpio_request()   gpio_direction_input()    gpio_set_value()    gpio_get_value()    

    gpio_free();      gpio_to_irq();等

  如果需要复杂的功能,则这些标准的io函数则做不到,需要特殊的函数,但是那些特殊的函数不是标准的函数,每个芯片厂商设计的都不同,

  如:三星的在orangepi_sdk/source/linux-3.4.112/drivers/gpio/gpio-samsung.c

  但是全志的并不在这里,而是在编译内核时生成的script.bin文件中

2.  修改模块参数

     modprobe   g_ether   dev_addr ="40:30:11:22:33:44"  

  modprobe:只需要相对路径,而后面的g_ether是一个网路模块g_ether.ko,   dev_addr为模块的mac地址

3.如果一个模块里有多个.c文件,如何写makefile文件生成一个.KO

  obj-m += mytest.o

      mytest-objs := test.o a.o b.o d.o   //固定语法,将test.o  a.o  b.o  d.o  加入到mytest.o 中

4.如果工作中只给了一个动态编译的库,我们怎么取调用?

  如通过arm-linux-gnueabihf-ld   cr    myfunc.a   a.o b.o d.o 

  如果我们只有一个myfunc.a的库,那么在写makefile时只需要将myfunc.a当作.o文件使用就可以了

    obj-m += mytest.o

    mytest-objs :=test.o myfunc.a

5.static 定义的变量只能在模块内引用,若想在模块外调用怎么办? 

  答:用引用符号

  如:EXPORT——SYMBOL(函数名)  //导出函数,此时该函数则为全局函数

  cat  /proc/kallsyms  |     grep   myfunc   //myfunc为函数名

  查看内核符号表,查看信息,如全局变量(T)、局部变量(t)等。

    如果想要调用外部函数怎么声明?    

    extern void  myfunc(char *line);

 

6.如果想要在加载模块时改变某个参数的值,怎么办?

  解:1.将已经声明的变量声明为模块驱动的参数,如:

  #include <linux/moduleparam.h>         //需要加载的头件

  static   int num=88;//声明一个整型变量为88,当加载驱动模块时不指定变量的值则默认为88

  moudle_param(变量名,类型,权限)     //如:module_param(num,int ,0644)

  2.加载驱动模块时指定模块参数的具体的值

    insmod   test.ko   变量名= 值

 

 

 

  

  

 

 

 

转载于:https://www.cnblogs.com/edan/p/9138779.html

你可能感兴趣的文章
py自动化之环境配置
查看>>
Winodws SNMP服务安装和配置(Windows 2003 & 2008 R2)
查看>>
红黑树-想说爱你不容易
查看>>
【题目】英文字符进行频率的统计,直方图输出
查看>>
LeetCode-Binary Tree Level Order Traversal
查看>>
COM组件开发实践
查看>>
yii2 源码分析1从入口开始
查看>>
浅谈网站推广
查看>>
Away3D基础之摄像机
查看>>
Leetcode 128. Longest Consecutive Sequence
查看>>
程序员必须知道的几个Git代码托管平台
查看>>
导电塑料入梦来
查看>>
C# 线程手册 第五章 扩展多线程应用程序 - 什么是线程池
查看>>
笔记1126ASP.NET面试题(转)
查看>>
考研路茫茫--单词情结 - HDU 2243(AC自动机+矩阵乘法)
查看>>
HTTP运行期与页面执行模型
查看>>
tableView优化方案
查看>>
近期思考(2019.07.20)
查看>>
Apache2.4使用require指令进行访问控制
查看>>
冗余关系_并查集
查看>>