- 博客(25)
- 收藏
- 关注
原创 关于锁\条件变量
简单的生产者消费者问题。生产者的链表头一直更新,当其链表头有新数字时,消费者才可获取其数字。加锁,生产数据,插入链表,解锁,发送。生产数据,插入链表,解锁,发送。(但此时没有消费者在等待,
2025-03-26 16:46:14
205
原创 关于IIC驱动函数自写,与调用linux自带的一些点
自己写并加载iic驱动,其实就是创建了一个或多个/dev/myiicA/B/C...驱动文件,后续app通过open来确定打开所创建的驱动文件,通过open返回的句柄fb,去实现对不同驱动文件的读写操作,读写操作在file_operation内实现。在应用程序中,封装关于针对不同iic外设的读写函数,内层调用linux自带的iic驱动的读写函数(注意iic驱动针对读写不同形式的参数设定规则)在驱动程序中,关于iic驱动程序,可以通过手动创建并添加读写规则函数(开始信号,应答信号,结束信号等)。
2025-03-18 17:17:53
126
原创 关于静态库动态库区分,及其GCC编译-I -L -l等
动态库文件通常有.dll或.so的扩展名。将.c编译为.so的核心优势在于资源优化、动态性和灵活性,适合需要高频更新、多程序共享或模块化设计的场景。它们通常有.lib或.a的文件扩展名。资源占用:由于库的代码被整合到可执行文件中,这可能导致文件体积较大,从而占用更多的磁盘和内存资源。例如:静态库(.a)或动态库(.so)易于更新:更新动态库不需要重新编译依赖它的程序,只需替换库文件即可。运行时链接:动态库的链接是在程序运行时进行的,而不是在编译时。-L./libs:告诉链接器在 ./libs 下找库文件。
2025-03-17 09:35:02
358
原创 基于深度学习的红外与可见光图像融合
读研期间主做这个方向,目前马上顺利毕业了。最近收到一些学弟学妹的私信,问我这个方向怎么样?我的回答是闭眼冲就完了,这个方向目前不倦,而且实验好做。有研一研二师弟师妹需要此方向指导的可以私信我。
2025-03-07 09:57:43
160
原创 尚硅谷32学习测试
(上下拉配置时无法选择具体的,选 什么是根据ODR配置的,ODR-0,下拉;当收到连续的10个高电平后(起始位为1、数据字长=8、停止位1),就认为遇到了一个空闲帧。片上外设(i2c,spi,定时器等);配置寄存器:GPIO常用寄存器:CRL端口配置低寄存器,CRH端口配置高寄存去。输入模式:模拟,上拉,下拉,浮空(耗电最少,外面输入什么就是什么)输入。输出模式:通用推挽输出,通用开漏输出,复用xx,复用xx。时钟控制方式:异步(无时钟),同步(有时钟)
2025-03-07 09:46:52
273
原创 标准io与文件io
例子:如果文件的大小是8k。你如果用read/write,且只分配了2k的缓存,则要将此文件读出需要做4次系统调用来实际从磁盘上读出。write/read是linux下的底层系统调用函数,fwrite与freadc/c++下的标准I/O库函数。如果你用fread/fwrite,则系统自动分配缓存,则读出此文件只要一次系统调用从磁盘上读出。fread可以读一个结构.read在linux/unix中读二进制与普通文件没有区别.linux/unix中任何设备都是文件,都可以用open,read.
2024-10-29 12:17:15
205
原创 ioctrl
问题:下面这句话的意思我不是很懂,请帮我举例子。设计出 ioctl 函数的主要原因是:内核设计者希望将用户空间和内核空间的驱动模块的交互分成两部分:数据读写以及状态控制。引入 ioctl 函数之后,数据读写和状态控制将被区分开进行管理,互不干扰。ioctl(Input/Output Control)函数是Unix和类Unix系统(包括Linux)中用于设备I/O操作的一个系统调用。它提供了一种机制,允许用户空间程序向设备驱动程序发送控制命令或查询设备状态,同时它也可以用于数据的特殊传输,但这些通常不是。
2024-09-21 21:51:29
293
原创 同步异步传输
这种传输方式利用每一帧的起、止信号来建立发送与接收之间的同步。特点是:每帧内部各位均采用固定的时间间隔,而帧与帧之间的间隔时随即的。同步通信进行数据传输时,发送和接收双方要保持完全的同步,因此,要求接收和发送设备必须使用同一时钟。可以这样说,不管是异步通信还是同步通信都需要进行同步,只是异步通信通过传送字符内的起始位来进行同步,而同步通信采用共用外部时钟来进行同步。所以,可以说前者是自同步,后者是外同步。每传输一个字符就用起始位来进来收、发双方的同步。不会因收发双方的时钟频率的小的偏差导致错误。
2024-09-05 20:49:35
343
原创 大小端存储,借鉴笔记
我们常用的 X86 结构是小端模式,而 KEIL C51 则为大端模式。很多的ARM,DSP都为小端模式。有些ARM处理器还可以由硬件来选择是大端模式还是小端模式。计算机读数据是从地位开始读的,先分清高低位。在所表示的数据的内存的第一个字节中,便于。2.内存的低地址处存放低字节,所以在。1.CPU做数值运算时。,这样的运算方式会更。
2024-08-18 22:21:39
170
原创 bootload和kernel的区分之:嵌入式系统启动流程
板子上电的第一个程序bootloader =>> 硬件初始化 ,加载内核 == kernel(uImage)=>>初始化,挂在rootfs ===APP。
2024-07-05 17:58:35
137
原创 uboot启动步骤
1.设置为svc模式获取最高权限。为了避免影响,关闭中断,mmu,看门狗等。2.基本硬件初始化,包括时钟,串口,flash,内存等。(uboot to ram)1.大部分硬件初始化(sd卡,usb等)2.搬移内核到内存。4.设置好栈,跳转到c部分。
2024-07-05 17:36:17
163
原创 关于字符数组和字符串
char a[]={'a','b','c'} 这是一个字符数组,占3个字节。 char a[]="abc" 则不同,它是一个字符串,最后还有一个'\0'结束符,占4个字节char占一个字节char*占两个字节
2022-08-20 22:20:55
562
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人