上位机图像处理和嵌入式模块部署(树莓派4b进行驱动的编写)

server/2024/12/23 7:04:11/

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        树莓派4b上面还支持驱动代码的编写,这是我没有想到的。这里驱动,更多的是一种框架的编写,不一定是编写真正的驱动代码,比如说reserve一块内存,又或者是做一些防止程序被copy,或者不同进程的通信,这些都是可以的。不一定说是真正地去驱动某个硬件。大家可以根据自己的需求,灵活去进行处理和选择就好了。

1、准备测试代码hello.c

#include <linux/init.h>
#include <linux/sched.h>
#include <linux/module.h>MODULE_LICENSE("GPL");
MODULE_AUTHOR("feixiaoxing");
MODULE_DESCRIPTION("This is just a hello module!\n");static int __init hello_init(void)
{printk(KERN_EMERG "hello, init\n");return 0;
}static void __exit hello_exit(void)
{printk(KERN_EMERG "hello, exit\n");
}module_init(hello_init);
module_exit(hello_exit);

2、准备编写Makefile

        有了hello.c文件,下面就可以编写Makefile,内容如下所示,

ifneq ($(KERNELRELEASE),)
obj-m := hello.oelse
PWD  := $(shell pwd)
KVER := $(shell uname -r)
KDIR := /lib/modules/$(KVER)/build
all:$(MAKE) -C $(KDIR) M=$(PWD) modules
clean:rm -rf .*.cmd *.o *.mod.c *.ko .tmp_versions
endif

3、编译和加载

        有了hello.c以及makefile,下面直接输入make就可以。不出意外的话,我们会看到一个hello.ko文件生成。利用sudo insmod hello.ko,我们就可以在sudo dmesg 看到相关的内容,

[ 8693.530556] hello, init

4、删除驱动

        删除驱动和加载驱动不一样,不需要ko这个后缀,直接输入sudo rmmod hello就可以了。同样,我们也可以在dmesg看到对应的打印,

[ 8771.999743] hello, exit

5、一个利用驱动的实际案例

        刚才我们说过,可以通过编写驱动的格式,不让自己的app程序在客户的其他开发板运行起来。其中一个方法就是检测当前的设备有没有对应的自定义节点,或者是自定义数据,这一点可以通过编写驱动代码来完成。这样程序被转移到非当前kernel、当前compiler的板子上,是运行不起来的。

        当然如果客户想自己买树莓派4b来窃取程序,这一点就要通过其他的方法来解决了,比如说在上位机和嵌入式设备之间做一个激活绑定等等。


http://www.ppmy.cn/server/9390.html

相关文章

深入了解高保真线框:设计师必备利器推荐!

什么是高保真线框 高保真线框是低保真线框的高级版本。它不仅是一个更详细的草图&#xff0c;而且是一系列经过思考的“屏幕”&#xff0c;非常接近产品的最终外观和产品的主要功能。低保真度与高保真度线框的关键区别在于&#xff1a;低保真代表设计方向和整体布局&#xff0…

上位机图像处理和嵌入式模块部署(树莓派4b使用pcl点云库)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 图像处理&#xff0c;大家都知道它有显著的优点和缺点。优点就是分辨率高&#xff0c;信息丰富。缺点就是&#xff0c;整个图像本身没有深度信息。…

软件测试金三银四招聘季,好公司10大特点VS烂公司10大特点

选择公司&#xff0c;就是在选自己未来的命运。 遇到一家好公司&#xff0c;你未来的职业道路&#xff0c;生活水平&#xff0c;工作热情&#xff0c;技术提升都是积极生长的。 但遇到一家烂公司&#xff0c;你未来的一年甚至几年&#xff0c;都将处在水深火热之中。 有时候仅仅…

力扣刷题4.22

88. 合并两个有序数组 解题思路&#xff1a; 双指针加单指针 同时从后往前遍历原始的nums1和2&#xff0c;比较大小&#xff0c;大的往后站。 class Solution:def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:"""Do not ret…

力扣爆刷第120天之CodeTop100五连刷86-90

力扣爆刷第120天之CodeTop100五连刷86-90 文章目录 力扣爆刷第120天之CodeTop100五连刷86-90一、62. 不同路径二、226. 翻转二叉树三、179. 最大数四、152. 乘积最大子数组五、122. 买卖股票的最佳时机 II 一、62. 不同路径 题目链接&#xff1a;https://leetcode.cn/problems…

AI-数学-高中-39空间向量-2空间向量法(法向量)

原作者视频&#xff1a;【空间向量】【一数辞典】2空间向量法&#xff08;重要&#xff09;_哔哩哔哩_bilibili 法向量&#xff08;高中阶段所有与面的关系&#xff0c;都可以通过法向量去证明和解答&#xff09;&#xff1a; 是空间解析几何的一个概念&#xff0c;垂直于平面…

【C语言】strstr函数刨析-----字符串查找

目录 一、strstr 函数介绍 ✨函数头文件&#xff1a; ✨函数原型&#xff1a; ✨函数解读 ✨功能演示 二、函数的原理以及模拟实现 ✨函数原理 ✨函数的模拟实现 三、strstr函数的注意事项 四、共勉 一、strstr 函数介绍 strstr函数是在一个字符串中查找另一个字符…

tcp网络编程——2

1.一个服务器只能有一个客户端连接&#xff08;下面代码&#xff09; ​​​​​​​tcp网络编程&#xff08;基础&#xff09;-CSDN博客 2.一个服务器可以有多个客户端连接&#xff08;多线程&#xff09; server端创建多个线程&#xff0c;每个线程与不同的client端建立连…