驱动操作 驱动移植试验和Source Insight添加项目

news2024/11/19 3:43:53

目录

驱动移植

》1.需要有一个驱动对应的 .c代码

》2.将.c文件放入到对应的文件夹内

》3.修改Makefile文件

》4.修改Kconfig菜单

》5.到顶层目录配置自己驱动

》6.编译成模块

》7.此时用的开发板上内核的编译器,安装得到开发板上进行安装

》8.在开发板上进行安装

Source Insight 基础使用手册

》1.添加工程到Source Insight

》2.修改索引设置

》3.工程同步


驱动移植

》1.需要有一个驱动对应的 .c代码

本文使用lcd.c进行试验,自己随意创建一个即可

注:在试验环节lcd.c内部必须为空

》2.将.c文件放入到对应的文件夹内

我放的路径是/home/hq/temp/kernel-3.4.39/drivers/char

路径解析:内核源码下(kernel-3.4.39)的设备文件夹(drivers)的字符设备(char

》3.修改Makefile文件

注:修改的Makefile文件是kernel-3.4.39/drivers/char下的Makefile

在Makefile中添加

obj-$(CONFIG_LCD) +=lcd.o

保存退出

》4.修改Kconfig菜单

注:修改的Kconfig文件是kernel-3.4.39/drivers/char下的Kconfig

在Kconfig中添加

config LCD

tristate "this is my LCD"

保存退出

》5.到顶层目录配置自己驱动

注:在kernel-3.4.39文件下执行make menuconfig

执行成功后会弹出

进行如下操作

》6.编译成模块

注:在kernel-3.4.39文件下执行make modules

执行成功后会得到 lcd.ko 文件

路径是kernel-3.4.39/drivers/char

》7.此时用的开发板上内核的编译器,安装得到开发板上进行安装

来到kernel-3.4.39/drivers/char路径,找到对应的lcd.o文件

作者此时的开发板根文件系统已经挂载到nfs工作路径下,只需将lcd.ko复制到nfs工作路径下即可

注:关于如何挂载nfs,作者有别的文章介绍

》8.在开发板上进行安装

可以看到lcd.ko已经同步过来了

在开发板根文件系统执行

insmod lcd.ko

安装驱动

会得到这个提示,因为我们的lcd.c是空的,只是为了进行试验,这条警告的意思是我们需要模块许可证。

以上,试验完成,关于模块许可证,我们在驱动移植环节讲。

Source Insight 基础使用手册

基础驱动编译需要用到内核源码中的函数,使用Source Insight工具将内核源码工程导入,在工程下写驱动能方便很多。

》1.添加工程到Source Insight

写在前面:在点击add all会弹出如下界面,需要全部选中

》2.修改索引设置

源码中有很多类型的文件,为了让Source Insight能索引到所有类型文件,进行如下配置

可以直接赋值下面添加上

*.c;*.h;*.S;*.lds;*defconfig;*Makefile;*.mak;*.dts;*.dtsi

》3.工程同步

弹出的窗口能勾选的全部勾线上

以上,就是Source Insight添加工程的基本操作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/654152.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

标准IO和文件IO分别实现cp功能(嵌入式学习)

标准IO和文件IO分别实现cp功能 标准IO实现cp功能标准IO概念代码实现 文件IO实现cp功能文件IO概念代码实现 标准IO实现cp功能 标准IO概念 想了解标准IO的概念,请点击这里——》IO进程——标准IO(嵌入式学习) IO进程——标准IO(嵌…

【C语言】三子棋详解(包教包会的那种)

君兮_的个人主页 勤时当勉励 岁月不待人 C/C 游戏开发 三子棋及五子棋详解 前言三子棋的实现1. 打印菜单2.初始化并打印棋盘棋盘初始化函数功能的实现打印棋盘 3.玩家下棋与模拟电脑下棋玩家下棋电脑下棋随机数的生成 4.判断输赢我们的game函数 源码game.hgame.ctest.c 总结 …

PMP课堂模拟题目及解析(第18期)

171. 一个项目已经结束,然而,项目经理和项目团队成员仍然被要求解决技术问题,进行一些变更,并评估新的需求。若要保证项目开发的产品或服务现在具有运营支持,项目经理应该执行下列哪些工作? (选…

Nacos配置中心交互模型是push还是pull?

对于Nacos大家应该都不太陌生,出身阿里名声在外,能做动态服务发现、配置管理,非常好用的一个工具。然而这样的技术用的人越多面试被问的概率也就越大,如果只停留在使用层面,那面试可能要吃大亏。 比如我们今天要讨论的…

44从零开始学Java之详解容易让初学者懵圈的abstract抽象类、抽象方法

作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 经过前面几篇文章的讲解,我们现在已经对面向对象有了基本的认知,掌握了面向对…

基于Java员工信息管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍: ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精…

2.04_基于矩阵分解的协同过滤推荐

矩阵分解发展史 Traditional SVD: 通常SVD矩阵分解指的是SVD(奇异值)分解技术,在这我们姑且将其命名为Traditional SVD(传统并经典着)其公式如下: Traditional SVD分解的形式为3个矩阵相乘,中间矩阵为奇异值矩阵。如果想运用SVD分解的话,有一个前提是要求矩阵是稠密…

AAC ADTS格式分析

标题 1.AAC简介2. AAC ADTS格式分析2.1 adts_fixed_header详细介绍2.2 adts_variable_header详细介绍 1.AAC简介 AAC音频格式:Advanced Audio Coding(⾼级⾳频解码),是⼀种由MPEG-4标准定义的有损⾳频压缩格式,由Fraunhofer发展,Dolby, Sony…

[CISCN 2023 初赛]puzzle 解析

打开文件包给了一堆拼图碎片,由于文件数量高达2880张,这里不考虑gaps的方式进行修正拼图 (因为跑了也只会把gaps跑冒烟) tmp类型的拼图,因为tmp文件特性在文件头的位置会有其在原图片上的位置坐标 于是,我…

MyBatis-Plus一级缓存和二级缓存-redis解决缓存的脏数据

MyBatis-Plus一级缓存和二级缓存 文章目录 MyBatis-Plus一级缓存和二级缓存[TOC](文章目录) 基本缓存问题一级缓存-MyBatis默认打开一级缓存、不允许关闭二级缓存(默认是开启)注意:二级缓存的作用域不然更新了数据,还是使用查询到缓存的数据)操作演示第一…

系统编程(1):基本程序框架--IO

文章目录 一、main函数二、IO&#xff08;输入/输出&#xff09;2.1 标准IO和文件IO2.2 文件描述符2.2 open函数 一、main函数 #include <stdio.h> #include <stdlib.h>int main(int argc, char* argv[]) {// argc&#xff1a;表示是命令行中参数的个数// argv&am…

天融信堡垒机怎么结合国密OTP动态令牌实现双因子身份认证?

摘要&#xff1a; 结合宁盾国密OTP动态令牌为天融信堡垒机登录开启双因子身份认证机制&#xff0c;能有效增强运维人员的账号安全&#xff0c;满足等保合规要求。 天融信运维安全审计系统&#xff08;简称“堡垒机”&#xff09;是面向政府、企事业单位等组织机构推出的兼具运…

一篇文章教你pytest+yaml实现参数化

目录 一、使用背景 二、parametrize 三、yaml 四、将yaml数据转换成parametrize可读的列表形式 总结&#xff1a; 一、使用背景 当我们在设计用例的时候&#xff0c;经常会出现需要不同参数的情况&#xff0c;例如一个登录的用例&#xff0c;我们需要测试它登录名正常、为…

【JAVA集合篇】深入理解HashMap源码

文章目录 HashMap简介源码分析关键参数获取数组下标put方法resize扩容过程jdk1.7的扩容实现jdk1.8的扩容实现 get()方法remove()方法 总结 关于HashMap&#xff0c;一直都是一个非常热门的话题&#xff0c;只要你出去面试&#xff0c;一定少不了它&#xff01; 本文主要结合 JD…

Scala--04

第 8 章 高级语法 Scala//需求&#xff1a;制作一个计算器&#xff0c;实现你传一个字符串给我&#xff0c;比如 23&#xff0c;然后我返回一个结果5给你 def plus(str: String): String { var res "" if (str.contains("")) { val arr: Array[S…

Halcon 循环找出多张电路板上的焊盘 (PCB板的有效区域在图中位置不一样)

文章目录 1 问题描述2 关键代码演示2.1 缩减范围,提高效率2.2 求差,去掉矩形块,只剩下圆3.3 最终效果3 完整代码1 问题描述 如图,循环找出下面四张电路板上的 焊盘; 四张图的有效区域在图中的位置不一样; 且图中还有和焊盘区域相近的矩形黑块; 为了提高效率,先找到产…

[数据分析与可视化] Python绘制数据地图3-GeoPandas使用要点

本文主要介绍GeoPandas的使用要点。GeoPandas是一个Python开源项目&#xff0c;旨在提供丰富而简单的地理空间数据处理接口。GeoPandas扩展了Pandas的数据类型&#xff0c;并使用matplotlib进行绘图。GeoPandas官方仓库地址为&#xff1a;GeoPandas。GeoPandas的官方文档地址为…

模糊聚类在负荷实测建模中的应用(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Python如何把列表自定义分组后并重复2次

一、问题的由来 之前&#xff0c;我写过一篇调用同花顺机器翻译api&#xff0c;批量翻译字幕的文章。 在调用机器翻译api过程中&#xff0c;我遇到一个问题&#xff0c;就是网站给的Python样例代码中只接收字符长度少于5000的列表&#xff0c;所以我想&#xff0c;如果我们一…

Docker常用命令(+仓库,镜像,容器的关系)

一、仓库&#xff08;repository&#xff09;&#xff0c;镜像&#xff08;image&#xff09;&#xff0c;容器&#xff08;container&#xff09;的关系 Docker 是一个开源的C/S架构应用容器引擎&#xff08;客户端&#xff08;client&#xff09;和服务端&#xff08;server&…