- 博客(99)
- 收藏
- 关注
原创 设备树的引入及简明教程
首先说明,设备树不可能用来写驱动。设备树只是用来给内核里的驱动程序,指定硬件的信息。比如LED驱动,在内核的驱动程序里去操作寄存器,但是操作哪一个引脚?这由设备树指定。需要编写设备树文件(),它需要编译为文件,内核使用的是dtb文件。
2023-06-10 23:01:42 1730
原创 驱动进化之路:总线设备驱动模型
return 0;return 0;return;return;return;该程序只用于测试platform框架是否可以成功匹配,struct platform_device hello_device 并没有设置任何硬件信息。
2023-06-09 22:03:01 1111
原创 LED驱动程序框架
把驱动拆分为通用的框架()、具体的硬件操作():如图:抽象出一个结构体:每个单板相关的实现自己的结构体,供上层的调用驱动程序分为上下两层:、。负责注册结构体,它的成员会调用中提供的硬件中的对应函数。::头文件的实现:测试程序::在ubuntu系统上使用交叉编译工具链编译之后,将文件和测试程序拷贝到网络文件系统中启动开发板,将虚拟机中ubuntu系统的网络文件系统目录挂载到开发板上,192.168.3.54为ubuntu系统的ip在 /mnt 目录下,装载驱动程序:在 /mn
2023-05-09 11:09:33 609
转载 Linux 字符设备驱动结构(三)—— file、inode结构体及chardevs数组等相关知识解析
Linux 字符设备驱动结构struct file、struct inode结构体及chardevs数组等相关知识解析
2023-05-03 12:36:34 907
转载 Linux 字符设备驱动结构(一)——cdev 结构体、设备号相关知识解析
:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后数据。字符设备是面向流的设备,常见的字符设备有鼠标、键盘、串口、控制台和LED设备等。:是指可以从设备的任意位置读取一定长度数据的设备。块设备包括硬盘、磁盘、U盘和SD卡等。每一个字符设备或块设备/dev。
2023-05-03 12:32:01 925
转载 Linux 字符设备驱动结构(四)—— file_operations 结构体知识解析
file_operations 结构体知识解析file_operations 结构体中成员的解析
2023-05-03 12:21:11 2019
转载 Linux 字符设备驱动开发基础——read()、write() 相关函数解析
read()、write() 相关函数解析及用法copy_from_user和copy_to_user函数的用法及解析
2023-04-24 22:29:43 3102
原创 Makefile的使用
Makefile规则Makefile语法::通配符 、假想目标: .PHONY、变量Makefile函数:foreach、filter/filter-out、Wildcard函数、patsubst函数Makefile使用实例通用Makefile编写
2023-04-16 20:32:04 4094 1
原创 VIM编辑常用命令
删除命令、数字的奥义、撤销和恢复命令粘贴命令、替换命令、替换模式和修改命令文件信息、跳转、定位括号和缩进搜索命令和替换命令插入模式和退出VIM的方法执行shell命令、文件另存为、合并文件和打开多个文件
2023-04-13 11:41:07 2080
原创 编译ORB_SLAM3的ROS部分报错
编译ROS报错: The OLD behavior for policy CMP0011 will be removed from a future version of CMake.
2022-12-01 13:17:02 1564 8
原创 C++使用链表实现栈
C++使用链表实现栈由于栈是先进后出的特征,入栈操作可转化为在链表头插入元素,出栈操作可转化为删除链表头结点,因此只需要一个链接结点即可表示栈,然后再用一个整型变量n表示栈的长度。
2022-09-17 20:26:28 823
原创 priority_queue的自定义排序与sort的自定义排序对比
先说,sort排序默认是升序,如果想降序,需要重写sort的第三个参数。参考链接:C++使用sort函数进行自定义排序通过上面的代码,就可以实现对数组v进行降序排序,注意cmp中的是 ,即通过实现了降序。接下来和priority_queue进行比较。再来说一下。参考链接:c++优先队列(priority_queue)用法详解定义:Type 就是数据类型,Container 就是容器类型(Container必须是用数组实现的容器,比如vector,deque等等,但不能用 list。STL里面默认用的
2022-06-12 15:01:24 455 1
原创 C++中使用stringstream与getline处理一行被空格(逗号)隔开的数据
使用stringstream和getline函数处理一行以空格(逗号)分割的数据
2022-06-05 22:34:29 6379 2
原创 使用cmake常用命令编译自己的项目
总结自己的项目。根据自己项目的结构,书写CMakeLists.txt,并给与注释。了解了Cmake的基本语法与用法。 - 定义工程名称,并可指定工程支持的语言例子: - 显式的定义变量例子: - 向工程添加多个特定的头文件搜索路径 —>相当于指定g++编译器的-I参数例子: - 向工程添加多个特定的库文件搜索路径 —>相当于指定g++编译器的-L参数例子: - 生成库文件例子: - 添加编译参数例子: - 生成可执行文件例子: - 为
2022-05-31 22:08:18 869
原创 148.排序链表【leetcode】
题目字节面试题复杂度分析时间复杂度O(nlogn)空间复杂度为O(1)解题思路参照官方做法2:自底向上归并排序这里给出注释版,便于本次和以后做这题的理解class Solution { // 自底向上归并排序 public ListNode sortList(ListNode head) { if(head == null){ return head; } // 1. 首先从头向后遍历,统计链表长度
2022-05-07 11:39:31 350 2
原创 25.K个一组翻转链表5/100【leetcode】
题目:给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k 的整数倍,那么请将最后剩余的节点保持原有顺序。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。示例1:示例2:cpp代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next;
2022-04-28 14:15:10 781
原创 215.数组中的第K个最大元素 4/100【leetcode】
题目:给定整数数组nums和整数k,请返回数组中第k个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。示例1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4热度:4/100分析1.怎么和快排联系到了一起:因为快排的思想是每次通过一个数arr[q],将数组arr分为两部分,索引q左边区间[left,q-1]对应的数组元素都小于等于arr[q],索引q右边的区
2022-04-27 15:13:42 117
原创 146.LRU缓存【leetcode】3/100
题目:146.LRU缓存请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。实现 LRUCache 类:LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value) 如果关键字 key 已经存在,则变更其数据值 value ;如果不存在,则向缓存中插入该组 key-val
2022-04-26 14:21:32 112
原创 3.无重复字符的最长子串【leetcode】2/100
题目:给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,
2022-04-22 11:38:55 228
原创 十大排序算法之选择排序C++实现及详细注释
算法讲解思路选择排序也是一种简单直观的排序算法。它的工作原理很容易理解:初始时在序列中找到最小(大)元素,放到序列的起始位置作为已排序序列;然后,再从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。注意选择排序与冒泡排序的区别:冒泡排序通过依次交换相邻两个顺序不合法的元素位置,从而将当前最小(大)元素放到合适的位置;而选择排序每遍历一次都记住了当前最小(大)元素的位置,最后仅需一次交换操作即可将其放到合适的位置。时间复杂度为O(n),空间复杂度
2022-04-12 17:30:52 726
原创 SQL之DDL(数据定义语言):创建数据库、表;修改删除表
SQL介绍:全称 Structured Query Language,结构化查询语言。操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准 。SQL分类:SQL分类 分类 全称 说明 DDL Data Definition Language 数据定义语言,用来定义数据库对象(数据库,表,字段) DML Data Manipulation Language 数据操作语言,用来对数据库表中的数据进行增删改 DQL Data Query Lan
2022-04-08 16:50:49 1631
原创 C++ 对小数取整和四舍五入函数
向上取整函数:ceil向下取整函数:floor四舍五入函数:round直接上代码#include <iostream>#include <string>#include <cmath>using namespace std;//向上取整函数:ceil//向下取整函数:floor//四舍五入函数:roundvoid test() { int a = 10; int b = 20; int c = 3; cout <<
2022-04-08 15:51:00 3840
原创 leetcode 59.螺旋矩阵2 C++
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。示例:输入:n = 3输出:[[1,2,3],[8,9,4],[7,6,5]]输入:n = 1输出:[[1]]代码:class Solution {public://模拟, vector<vector<int>> generateMatrix(int n) { //四个边界 in
2022-04-08 09:23:09 490
原创 C++使用sort函数进行自定义排序
我们平时使用sort都是对一个数组进行从大到小或者从小到大排序,然而,有时候我们需要对一些特殊的数据进行我们想要的排序,就需要自定义一些比较函数用于排序,将这些比较函数作为sort函数的第三个参数,这样就可以实现我们想要的排序。但是不是随便一个比较函数都可以作为sort函数的第三个参数的。通常作为sort函数的第三个参数的函数指针必须是全局函数指针或静态成员函数指针,经常在力扣上刷题的同学,如果有自定义比较函数的经历,一定了解非静态成员函数指针不能直接传递给std::sort下面用两......
2022-04-07 19:49:19 5205
原创 十进制与十六进制之间的转换C++实现
1.十进制转十六进制转换流程1.每次取出 要转化的数 与 要转化的进制 的余数2.将余数根据大小,转化成要对应进制的正确表达形式3.将最后得到的字符串翻转直接上代码#include <iostream>#include <algorithm>#include <string>using namespace std; typedef long long ll; //十进制转十六进制 string s; //存放十六进制的字
2022-04-06 14:45:10 4718
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人