- 博客(65)
- 收藏
- 关注
原创 【解决vmware ubuntu不小心删boot分区,进不去系统】
如果仍然提示,有可能是源中不包含该工具(LiveCD 使用的是“最小环境”)。
2025-07-23 23:52:31
521
原创 解决 i.MX6ULL 通过 ADB 连接时权限不足问题 not in the plugdev group
【代码】解决 i.MX6ULL 通过 ADB 连接时权限不足问题 not in the plugdev group。
2025-07-23 23:37:47
368
原创 32位系统和64位系统数据大小的区别
64位系统能处理更大的内存空间和更大范围的整数。指针和long等类型变大,影响程序内存占用和性能。需要注意跨平台代码的类型兼容性,避免因数据类型大小差异产生bug。
2025-07-23 10:48:58
318
原创 【Linux 中断机制:工作队列与中断线程化详解】
特性工作队列(Workqueue)中断线程化(Threaded IRQ)上下文类型内核线程(进程上下文)内核线程(中断线程)是否可阻塞✅ 可以✅ 可以是否响应中断❌ 不能直接处理中断✅ 响应中断手动调度✅ 需要❌ 否,自动在线程中处理延迟能力✅ 可以延迟❌ 不支持延迟中断响应速度✅ 快(中断函数快速返回)⚠ 稍慢(线程调度有延迟)推荐应用场景异步处理、非实时任务中断后需等待或复杂逻辑处理中断线程化与工作队列都是解决中断上下文不能阻塞的经典方法。
2025-07-18 14:47:11
724
原创 Linux 驱动中 Timer / Tasklet / Workqueue 的作用与对比
【代码】Linux 驱动中 Timer / Tasklet / Workqueue 的作用与对比。
2025-07-16 22:39:58
212
原创 【树莓派上编译kprobe】
从图中可以看出arch =arm64 交叉编译工具链为aarch64-linux-gnu-或者在终端输入export CONFIG_SAMPLE_KPROBES=m。在对应的源码目录下修改Makefile。
2024-10-16 11:32:45
307
原创 树莓派读写spi_flash w25q64
写入数据前必须先擦除,擦除后,所有数据位变为1(Flash有专门的擦除命令,操作时仅需要发送擦除命令即可),在Flash中0FFH代表空白。连续写入多字节时,最多写入一页的数据,超过页尾位置的数据,会回到页首覆盖写入(页缓存器的限制),在写入时,要注意写入的地址范围不能跨越页尾。直接调用读取时序,无需使能,无需额外操作,没有页的限制,读取操作结束后不会进入忙状态,但不能在忙状态时读取。每个数据位只能由1改写为0,不能由0改写为1(成本和技术原因)写入操作结束后,芯片进入忙状态,不响应新的读写操作。
2024-10-08 15:21:45
818
原创 树莓派之修改设备树文件
在设备树文件中添加设备节点,路径为arch/arm/boot/dts/bcm2710-rpi-3-b.dts。重启设备,在/sys/firmware/devicetree/base/目录下可以看到添加的节点。下载对应版本的树莓派内核源码。替换到开发板的boot目录下。并且可以看到对应的属性。
2024-09-23 16:38:35
629
原创 SPI子系统
Mode0:CPOL=0,CPHA=0:此时空闲态时,SCLK处于低电平,数据采样是在第1个边沿,也就是SCLK由低电平到高电平的跳变,所以数据采样是在上升沿(准备数据),(发送数据)数据发送是在下降沿。Mode1:CPOL=0,CPHA=1:此时空闲态时,SCLK处于低电平,数据发送是在第1个边沿,也就是SCLK由低电平到高电平的跳变,所以数据采样是在下降沿,数据发送是在上升沿。spidev.c文件解析,spidev.c是spi通用的设备驱动文件,一些简单的spi设备可以直接使用spidev.c。
2024-09-10 17:38:31
1327
原创 pycharm远程连接服务器
2.我自己create的conda虚拟环境里面有3个版本的python,只有python3.9的那个才配了pytorch环境的是能用的。1.学长教的是默认配的conda环境,其他pytorch啥的还是要自己配。3.找pyhon3.9的环境路径。
2022-11-20 15:17:44
668
原创 JAVA学习之继承
语法在java中用extents关键字来表示一个类继承了另一个在JAVA中object类是所有类的父类方法重写:方法重写是指子类可以根据需要对从父类继承来的方法进行改写,是多态机制的前奏方法重写注意点:·重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值·重写方法不能比被重写方法有更严格的访问权限·父类中的私有方法,不能被重写·在子类重写的方法中继续调用父类被重写的方法可以通过super.函数名获取toString();equals();hashcode();clone
2022-04-18 17:42:41
297
原创 java学习之面向对象——封装
面向对象有三大特性:封装、继承、多态。封装的概念:将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体(即:对象)。类内的访问权限:封装的目的:隐藏内部实现细节,对外提供功能接口UML(Unified Modeling Language):是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言。构造函数(构造方法)构造方法负责对象初始化工作, 为对象的属性赋合适的初始值创建对象时,其类的构造方法确保在用户操作对象之前进行。语法规则:方法名与类名一致没有返回类型
2022-04-17 11:03:20
298
原创 JAVA 学习第二课 周边概念理解
JAVA、 SE、 EE、 ME的区别:JAVA SE:(Java Platform,Standard Edition)标准版本。JAVA EE:Java 平台企业版(Java Platform Enterprise Edition)面向企业的开发。多了很多api。主要用于B/S架构开发。Java ME: 称为微型版本(Java Platform,Micro Edition)是为机顶盒、移动电话和PDA之类嵌入式消费电子设备提供的Java语言平台。JRE、JDK、JVM的区别JRE:(Java R
2022-04-11 15:53:15
164
原创 嵌入式学习Java第一课
嵌入式为什么要学习java首先来看一下传统的嵌入式学习路线:C语言 >> 应用:C51,STM32linux系统编程C++ >> 应用:QTARM开发在系统的UI层面上:无操作系统的裸机开发:用C语言手撕图像像素(优点:响应速度快,对硬件资源要求低。缺点:UI界面丑)带操作系统的(linux):c、MINIGUI、GTK图像库、NCURSE-带操作系统的(linux):C++、QT目前趋势:安卓平台普及(刷卡机、点歌机)鸿蒙系统:内嵌安卓总结:在
2022-04-11 11:14:49
1358
原创 在 制作基于stm32f103的温湿度检测时遇到的问题及解决方法
1、DHT11模块启动不了1.没有做DHT11启动判断(若DHT11启动会出现一段低电平),(硬件启动有点玄学问题),如果一次不行就跳过这次循环,下一次再尝试启动DHT11传感器。或者尝试多次拉高电平然后再根据芯片手册的启动电平信号去改变电平信号。2、屏幕上的数值反应有点慢。。有时候还会卡住。猜想:可能是DHT11在某次数据采集过程中出现问题,然后在某个while循环中阻塞住了。解决办法:在while循环中做延时有效性判断,若延时了很久那就直接return,进入下一次数据采集。3.在DHT11_
2022-04-06 16:22:18
6979
原创 学习c++遇到的问题
1:&在定义时为引用,在当做运算符时为取地址、2.再类内定义有参数的构造函数时,在类外定义该类时应调用该构造函数Person p = Person(10,10);//显示调用Person p1(10,10);//隐式调用
2022-03-06 11:08:58
458
原创 C语言易错点
在子函数定义的数组不能被return,因为在子函数的数组的内存在运行结束后会回收。使用malloc申请内存空间即可。free()函数 只能free malloc创建的内存,free静态创建的变量会导致段错误。
2022-02-07 13:23:25
576
转载 C语言结构体大小计算
我们实际生活中,保存的数据一般不会是同一种类型,所以引入了结构体。而结构体的大小也不是成员类型大小的简单相加。需要考虑到系统在存储结构体变量时的地址对齐问题。由于存储变量地址对齐的问题,结构体大小计算必须满足两条原则:一、结构体成员的偏移量必须是成员大小的整数倍(0被认为是任何数的整数倍)二、结构体大小必须是所有成员大小的整数倍下面来具体分析1、简单结构体truct s1{undefined char ch1; char ch2; int i;};这个结构体的大小
2022-02-01 19:51:09
488
原创 KMP算法求next数组
next 数组各值的含义:代表当前字符之前的字符串中,相同前缀后缀长度+1本文仅供本人忘记时复习使用。b站有个老师讲的很好的:https://www.bilibili.com/video/BV16X4y137qw?from=search&seid=8054889486484307163&spm_id_from=333.337.0.0...
2022-01-28 18:46:34
207
原创 字符数组与字符串赋值问题
产生这个错误的原因:[Error] assignment to expression with array type字符数组与字符串赋值问题(1)数组不能直接给数组赋值(2)指针不能直接给数组赋值根本原因:数组名在内存中是一个类似于常量的存在,可以理解为const,在编译的时候就已经给分配的储存位置,在需要使用到数组名时,直接获取的就是一个地址值,因此是不能改变的。char c[3] = a; //错误---》数组不能直接给数组赋值char d[3] = p; //错误---》指针不能
2022-01-26 17:10:44
2672
原创 为什么在printf中 数组名++不行,而数组名+1却可以
#include<stdio.h>int main(){ int arry[3] = {1,2,3}; int *p = arry; printf("%d\n",*p); printf("%d\n",*p++); printf("%d\n",*arry++); printf("%d\n",*(arry+1));} 对上面的代码进行编译发现第三个printf出现报错,错误信息:lvalue required as increment operand个人理解:数组名表示数组首元
2022-01-11 19:06:56
1520
1
原创 关于STM32上电按下复位键时串口输出FF
最近玩stm32,使用串口发送数据在PC端使用串口工具检测接收到的数据,发现STM32串口发送到电脑的数据乱码,按下复位键总是显示FF,配置GPIO的时候先打开GPIO时钟再初始化GPIO和串口问题就解决了(可能是顺序问题)配置串口时尽量按下面的顺序配置1.开启IO和外设USART时钟。2.GPIO_Iinit();3.NVIC_Init();(如果使能中断)4.USART_ITConfig();5.USART_Cmd();2和3一定不能颠倒!!!...
2021-03-05 21:41:53
2160
1
原创 智能家居中 将树莓派摄像头拍摄的图片转为base64流时 libcurl传输时出现的 “产品类型错误”
如视频所示 20210212-202151 这可能是由于拍摄的图片的文件过大从而导致转换成base64流的字符串也特别长将拍摄命令改为`可解决问题raspistill -o img1.jpg -q 5...
2021-02-12 20:36:24
317
转载 Linux环境变量 PATH与LD_LIBRARY_PATH的区别去设置总结
转载自:https://os.51cto.com/art/201703/535881.htmPATH: 可执行程序的查找路径查看当前环境变量:echo $PATH设置:方法一:export PATH=PATH:/XXX 但是退出当前终端后就失效方法二:修改 ~/.bashrc 或 ~/.bash_profile或系统级别的/etc/profile在其中添加例如export PATH=/opt/ActivePython/bin:$PATHsource .bashrc (Source命令
2021-02-05 16:30:04
385
转载 HTTP与 HTTPS相关名词扫盲(面试)
文章目录http协议http之请求请求行http协议的响应响应行响应头响应主体HTTPS密码学基础对称加密非对称加密http协议http协议是建立在TCP/IP协议之上应用层协议,默认端口为80,8080http之请求http协议的报文传输的是ASCII码,在TCP/IP协议之上,主要主要分为三部分:请求行、请求头、请求体请求行第一行,包含三个信息:请求方式,url,http协议版本GET 请求GET /books/?sex=man&name=Professional HTTP/1.
2021-02-03 19:49:57
575
原创 TCP三次握手、四次挥手(面试)
TCP三次握手第一次握手:客户端发送第一个包,其中SYN标志位为1, ACK=0,发送顺序号sequence=X(随机int)。客户端进入SYN发送状态,等待服务器确认。第二次握手:服务器收到这个包后发送第二个包,其中包SYN、ACK标志位为1,发送顺序号seq=Y(随机int),接收顺序号ACK=X+1,此时服务器进入SYN接收状态。第三次握手:客户端收到服务器传来的包后,向服务器发送第三个包,SYN=0, ACK=1,接收顺序号ACK = Y+1,发送顺序号seq=X+1。此包发送完毕,客户端
2021-01-31 15:58:05
319
转载 OSI七层网络模型 (面试重点)
综合图表下面的图表试图显示不同的TCP/IP和其他的协议在最初OSI模型中的位置:7 应用层 例如HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP6 表示层 例如XDR、ASN.1、SMB、AFP、NCP5 会话层 例如ASAP、TLS、SSH、ISO 8327 / CCITT X.225、RPC、NetBIOS、ASP、Winsock、BSD sockets4 传输层 例如TCP、
2021-01-31 12:05:48
2920
原创 树莓派3B + Pi摄像头+mjpg-streamer操作步骤
步骤1:sudo apt-get install libjpeg8-dev #JPEG支持库sudo apt-get install imagemagicksudo apt-get install libv4l-dev #4l是小写"L"sudo apt-get install cmake #下载编译工具步骤2:sudo apt-get install gitgit clone https://github.com/jacksonliam/mjpg-streamer.gitcd
2021-01-30 18:36:59
209
原创 网络编程1、概念
IPC的几种方式:管道、消息队列、共享内存、信号和信号量。它们都是基于内核来工作的,只能让本机上的进程之间通讯,无法做到多机通讯。多机通讯就是电脑和电脑之间,或者手机和电脑之前的通讯。想要做到多机通讯就要用到网络通讯。IP地址:设备在网络中的地址,而且只有一个端口号:网络服务的端口,起到区分服务的作用 ...
2021-01-27 19:03:16
107
原创 线程学习之互斥锁
互斥锁 当一个进程中存在两个及以上(一个进程本来就有一个线程)的线程时,线程间会互相争夺共享资源,导致单个线程中的执行秩序会被打乱。所以需要用到互斥量来进行秩序控制,保证单个线程中的程序先执行完毕。 所以互斥锁的作用就是使上锁与解锁之间的代码完整的、不受别的线程“打扰”的执行完。而另一个线程必须等到这个锁解开了,才能执行自己的代码。注意互斥锁不能控制多线程的执行顺序,也就是我们加了锁之后,并不知道先执行那个线程.相关API创建互斥锁pthread_mutex_init();函数原型; int
2021-01-27 19:03:01
1604
原创 函数指针与指针函数
函数指针定义: 函数名表示存储空间的首地址,存放着函数首地址的指针变量,简称函数指针。定义方式: 函数返回值类型 (* 指针变量名) (函数参数列表);例子 int(*p)(int, int);使用struct humanlife{ char name[6]; char sex[6]; void (*pborn)(); void (*pgrew)(); void (*pchasedream)
2021-01-16 12:45:22
139
原创 SYStick定时器编写延迟函数
SysTick—系统定时器SysTick—系统定时器有 4 个寄存器,简要介绍如下。在使用 SysTick 产生定时的时候,只需要配置前三个寄存器,最后一个校准寄存器不需要使用。SysTick 寄存器汇总寄存器名称寄存器描述CTRLSysTick 控制及状态寄存器LOADSysTick 重装载数值寄存器VALSysTick 当前数值寄存器CALIBSysTick 校准数值寄存器(不常用到)SysTick 控制及状态寄存器位段名称类型
2021-01-12 12:53:22
1125
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人