zcu102开发板驱动编写详细步骤

内核编译一搞就是一个小时,只能干瞪眼,利用这点时间用一个最简单的驱动把近期学的东西做一个整理。
1,下载开发板对应的内核源码。我用的是ZCUO102开发板,下载网址为在这里插入图片描述
记得选择对应的版本。我的板子里面的内核是2019.01,但是我下了2018.02的,耽误了不少事。
2,配置内核。
板子对应的交叉编译链是aarch64-linux-gnu-gcc。对应修改源码主目录下的Makefile。
在这里插入图片描述
搜索ARCH找到这两行,做出对应修改。
之后输出make menuconfig,进入内核配置界面,

在这里插入图片描述
在这里插入图片描述
把交叉编译链填入第一栏。保存退出。
寻找vermagic.h文件,打开后找VERMAGIC_STRING判断一下开发板内核版本与这个是否相同,在开发板输入uname -r,查看开发板内核版本。改成一样的。
在这里插入图片描述
在这里插入图片描述
我刚开始这里的vermagic是4.14.0,开发板是4.14.0-xilinx-v2018.2,最后加载驱动时候就报错了。后面那一串一个字符都不能少。后面那两个引号中间的空格也不能少,这个也报错过一次,心累。
3,编译内核。直接输入make就行。然后就是一个小时左右的等待。
4,编译内核的时间可以用来写个驱动。随便写在哪个文件夹都行,建议不要写在内核源码里,有特殊需求除外。建立一个文件夹,里面新建两个文件,一个hello.c,一个Makefile。分别写上

#include <linux/module.h>
#include <linux/init.h> 
#include <linux/kernel.h>
MODULE_LICENSE("GPL");
MODULE_AUTHOR("tang");
static int hello_init(void)
{
    printk("hello world!\n");
    return 0;
}
static void hello_exit(void)
{    
	printk("goodbye!\n");
}
module_init(hello_init); 
module_exit(hello_exit);

这段代码粘贴过来这个博客就会卡住,必须用word再复制一遍,烦。
然后是Makefile

KERN_DIR = /home/tang/Documents/bsp/xilinx-zcu102-2018.2/components/plnx_workspace/linux-xlnx-xilinx-v2018.2
all:
 make -C $(KERN_DIR) M=`pwd` modules
clean:
 make -C $(KERN_DIR) M=`pwd` modules clean
 rm -rf modules.order
obj-m    += hello.o

KERN_DIR需要改成你自己的内核源码对应的文件夹位置。
5,等内核make完毕后,在驱动文件夹内make一下,就可以生成hello.ko。
在这里插入图片描述
6,打开WINSCP,没有的话百度搜一下下载就行。我是用这个通过tftp把.ko文件传到开发板。你有别的办法也行。
在这里插入图片描述
输入ifconfig查看开发板的ip地址。
在这里插入图片描述
连上之后,把hello.ko拖到右边。就可以在开发板上找到这个文件。在这里插入图片描述
不要问我为啥没printk,我暂时也不清楚。等我整明白了再写。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值