学习嵌入式Linux驱动真的不需要开发板!!!

不知道大家刚学习Linux驱动的时候,是否会一定要买一块开发板才正式开始学习。反正我刚开始接触Linux驱动的时候,开发板买了一大堆。
但是随着开发年限的推移发现,开发板真的不方便。环境、网络、硬件、更换电脑等等因素都会干扰我们的学习热情。最近在gitee发现了个大佬采用qemu来虚拟arm/arm64平台,真的超级方便。仅仅需要一个Ubuntu环境即可,相当于在自己电脑上运行了一个开发板。本人购置了一个阿里云服务器,更加是锦上添花。随时随地都可以连接服务器来学习Linux驱动,可以说是我的线上Linux开发板。

一、虚拟平台地址

linux虚拟平台仓库
克隆下整个项目之后,按照README正常情况下都可以正常的运行起来模拟器。可能大大小小会遇到一点问题,但是基本都能靠搜索引擎来解决问题。详细的内容,我就不在这里赘述了,大佬的README已经写的很详细了。

环境搭建ok之后,就可以在/elegant_linux_design/qemu路径下./setup armXX来启动对应的虚拟机了。使用按下Ctrl+A后(mac电脑为fn+Ctrl+A),再按下x按键之后退出

二、如何使用虚拟平台编写Linux驱动

1.目录结构

项目的目录结构大概为如下:
在这里插入图片描述
busybox-1.35.0:这个是用来构建文件系统的
elegant-design:这个是大佬的教程代码
linux-5.9:linux内核代码
qemu:使用qemu搭建的虚拟平台

2.编写Linux驱动

(1)拷贝驱动模版:

首先我们来到elegant_linux_design/elegant-design路径,新建一个自己要写驱动的文件夹,以masterLi为例:
我们将elegant-design/elegant_drivers/Chapter2文件夹拷贝到masterLi。保留如下三个文件,其他文件可以删除
在这里插入图片描述

(2)修改环境配置:

因为大佬的配置的交叉编译器和部分路径也是大佬的路径,下面来修改如下变量:
在这里插入图片描述需要自己根据实际路径更改

(3)编写linux驱动

①我们写一个最简单的Linux驱动示例,test.c

/* GPL-2.0-only
 *
 * The learn linux driver sample:
 * create object with attributes
 *
 * Copyright(c) 2023-2024 masterlifeng@163.com
 */
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/kobject.h>
#include <linux/sysfs.h>
#include <linux/module.h>

static int __init myobj_init(void)
{
        pr_info("--- hello masterLi ---\n");
        return 0;
}

static void __exit myobj_exit(void)
{
        pr_info("--- exit masterLi ---\n");
        return 0;
}

module_init(myobj_init);
module_exit(myobj_exit);

MODULE_AUTHOR("masterlifeng@163.com");
MODULE_DESCRIPTION("learn linux driver");
MODULE_LICENSE("GPL");

②修改Makefile为
obj-$(CONFIG_ELG_CORE) += test.o
③./build_module,编译出ko文件在这里插入图片描述
④拷贝到虚拟机的共享目录,一会儿在虚拟机里面安装驱动用
由于我想写一个模版文件夹,用于后面编写驱动程序,所以写了个脚本,大家注意路径即可

#!/bin/bash

cp *.ko ../../../qemu/arm64/kmodules/lib/modules/
echo "cp *.ko ../../../qemu/arm64/kmodules/lib/modules/"

执行脚本拷贝到qemu/arm64/kmodules/lib/modules/

⑤启动虚拟机,验证
在这里插入图片描述
与实际期望结果吻合

  • 14
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
嵌入式 Linux 是一种在嵌入式系统中运行的 Linux 操作系统。学习嵌入式 Linux 可以让你了解如何在资源有限的环境中构建和部署 Linux 系统。下面是一些建议来帮助你开始学习嵌入式 Linux: 1. 学习 Linux 基础知识:了解 Linux 的基本命令和文件系统结构是学习嵌入式 Linux 的基础。你可以阅读一些入门级的 Linux 教程,例如《鸟哥的 Linux 私房菜》。 2. 掌握 C/C++ 编程语言:嵌入式系统常用 C/C++ 进行开发,熟悉这两种编程语言可以帮助你更好地理解和编写嵌入式 Linux 应用程序。 3. 了解嵌入式系统架构:不同的嵌入式设备可能采用不同的体系结构,例如 ARM、MIPS 等。了解这些架构的特点和应用场景,可以帮助你选择合适的开发板和工具链。 4. 学习交叉编译:由于嵌入式设备资源有限,通常需要在主机上进行交叉编译,将应用程序编译成目标设备可执行的代码。学习如何配置和使用交叉编译工具链是嵌入式 Linux 开发的重要一环。 5. 实践项目:通过完成一些嵌入式 Linux 项目来实践所学知识。可以选择一款嵌入式开发板,从搭建开发环境、编写驱动程序到构建用户应用,逐步深入了解嵌入式 Linux开发流程和技术。 6. 参考文档和社区:在学习过程中,及时查阅相关的文档和参考资料,如 Linux 内核文档、开发板厂商提供的技术手册等。此外,参与嵌入式 Linux开发社区,与其他开发者交流和分享经验也是很有价值的。 希望以上建议对你学习嵌入式 Linux 有所帮助!如果有更多问题,欢迎继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是李校长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值