嵌入式爱好者

查看: 15619|回复: 4

[Linux] 咨询!请问全志A40i目前能否单独编译驱动ko文件

[复制链接]

10

主题

38

帖子

86

积分

A40i/T3/T507/T527通行证FCU2401通行证

扫一扫,手机访问本帖
发表于 2021-10-19 21:04:47 | 显示全部楼层 |阅读模式
如题,目前由于需要,单独写驱动程序,但是琢磨了几天也没弄出来个一二,请问一下如何能够单独编译xx.ko驱动文件,这个ko文件要能在目标板全志A40i上运行,而不是在虚拟机中运行
目前我的虚拟机linux版本是4.5.142,全志linux版本是3.10.65.
回复

使用道具 举报

10

主题

38

帖子

86

积分

A40i/T3/T507/T527通行证FCU2401通行证

 楼主| 发表于 2021-10-19 21:10:34 | 显示全部楼层
我写了一个linux_test.c程序。通过makefile编译成ko文件,用Ubuntu的linux内核编译出来之后在Ubuntu上运行是没有问题的,但是目前一直没整明白如何单独编译出ko文件能在开发板上运行,我的makefile文件如下:
  1. ifneq ($(KERNELRELEASE),)
  2.     obj-m := linux_test.o
  3. else
  4.     PWD := $(shell pwd)
  5.     KVER := $(shell uname -r)
  6. #    KDIR := /lib/modules/$(KVER)/build/
  7. #    KDIR := /lib/modules/4.15.0-142-generic/build/
  8.     KDIR := ???????????????????????
  9. all:
  10. #make -C $(KDIR) M= $(PWD) modules
  11. #-C:后面的参数为linux内核的顶层目录
  12. #M:后面的参数为需要编译文件的目录
  13.         make -C $(KDIR) M=$(PWD) modules
复制代码
请各位大佬指点一下目前全志A40i能否单独编译驱动模块,如何编译

然后看到手册还有一种方式是随着build.sh一起全部编译,这个具体要修改哪里,进行全局编译
点评回复 支持 反对

使用道具 举报

0

主题

1173

帖子

2194

积分

发表于 2021-10-20 11:19:27 | 显示全部楼层
参考A40i的源码中的驱动程序,找一下8723bu或8723du的源码,仿照着修改和编译就可以了

点评

感谢,可售后技术打电话也是这么说的,但是我看8723的源码工程文件太多了,而且他的makefile文件好几百行,看不明白是怎么编译的,不过目前寻找到了另外一种跟随全局编译的方式,在linux 3.10的driver下寻找qe5820  详情 回复 发表于 2021-10-20 20:19
点评回复 支持 反对

使用道具 举报

10

主题

38

帖子

86

积分

A40i/T3/T507/T527通行证FCU2401通行证

 楼主| 发表于 2021-10-20 20:19:19 | 显示全部楼层
本帖最后由 kuangboqi123 于 2021-10-20 20:20 编辑
zhichao 发表于 2021-10-20 11:19
参考A40i的源码中的驱动程序,找一下8723bu或8723du的源码,仿照着修改和编译就可以了

感谢,给售后技术打电话也是这么说的,但是我看8723的源码工程文件太多了,而且他的makefile文件好几百行,看不明白是怎么编译的,不过目前寻找到了另外一种跟随全局编译的方式,在linux3.10的driver下寻找ad5820,他和dw9714还有ov8825是一起在一个文件夹中的,这个很容易识别,在makefile中添加obj-m           += **/**.o,然后创建一个**文件夹,在**文件夹中附上**.c,可能我目前这个方式只能应付临时,因为一般驱动都是要把好几个文件打包一起的,我这只能单独打包一个c
点评回复 支持 反对

使用道具 举报

10

主题

38

帖子

86

积分

A40i/T3/T507/T527通行证FCU2401通行证

 楼主| 发表于 2021-10-20 22:11:27 | 显示全部楼层
在这里更新一下我的方法,也是飞凌售后技术建议的方式,全局编译附带自己写的驱动文件

针对于A40i,其他平台没用过不知道

1.在/root/workspace/allwinner/A40i/bsp/lichee/linux-3.10/drivers路径下创建一个文件夹,放置自己写的驱动文件,我起的名字为0myself_driver,排在第一个寻找方便,管理不乱
2.修改同级文件makefile,打开makefile,在最后一行加入obj-m    += 0myself_driver/**/**.o  ,这里用的是obj-m,意思是单独编译模块,生成ko文件,而不是obj-y编译进入内核,生成o文件,**指的是自己写的某一个驱动文件夹,**.o指的是自己写的某一个驱动**.c
3.到/root/workspace/allwinner/A40i/bsp/lichee路径下打开控制台,执行全局编译./build.sh,不用等待到编译完毕,发现自己的驱动ko文件即生成完毕,拿去用就可以了


点评回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-4-19 23:25

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表