自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(81)
  • 收藏
  • 关注

原创 面试题整理01

野指针:指针指向一个已经释放或未初始化的内存地址方法示例初始化指针释放后置空free(p);p = NULL;避免返回局部变量地址使用动态分配或全局/静态变量谨慎指针运算不越界访问数组或缓冲区空指针是指向 0 的指针,表示“不指向任何有效内存”*p = 10;

2025-10-30 20:46:30 513

原创 之前的知识补充 03

SCLK(SCK):时钟,由Master产生。:主出从入,Master 发数据到 Slave。:主入从出,Slave 发数据到 Master。:片选(通常为低电平有效),用于选中某个 slave。Master 控制时钟,因此 Master 决定数据速率与采样时刻(同步通信)。全双工:每个时钟周期 Master 可同时输出一位(MOSI)并读取一位(MISO)。SPI 的四种工作模式(Mode 0~3)是由时钟极性 (CPOL)和时钟相位 (CPHA)两个参数决定的。

2025-10-05 21:14:45 968

原创 关于之前知识的一些补充 02

网际层(Internet / Network) — IP(IPv4/IPv6)、路由、ICMP(ping)、ARP(ARP 实现于链路与网际之间)。链路层(Link / Data Link) — 负责帧的局域网传输(Ethernet, Wi-Fi 等),包含 MAC(网卡)。​ 线程交互(send/recv) 其中有着便利链表的功能,根据名字来入队/出队(也传tid),从而数据共享。传输层(Transport) — TCP / UDP:端口、分段、重传、流控、可靠性等。​ mqtts(加密后):8883。

2025-09-28 11:39:34 471

原创 关于之前知识的一些补充 01

概念UART 是一种串行通信控制器/模块,提供异步串行数据收发功能。它不是物理接口标准,而是一种逻辑通信方式,负责把并行数据转成串行数据发送,并把串行数据转换成并行数据接收。特点异步通信:无需时钟线,由波特率约定通信速率。半双工或全双工:一般单片机 UART 支持全双工(TX/RX 两条线)。帧格式:起始位(1 bit)、数据位(5-9 bit)、可选奇偶校验位、停止位(1-2 bit)。自定义通信协议在 UART/RS-232/RS-485 上常用自定义协议:设计原则帧头。

2025-09-24 21:47:15 889

原创 lvgl库移植

复制LVGL-V8_3.tar 到虚拟机 的rootfs目录解压,tar -xvf LVGL-V8_3.tarlv_drivers 显示设备驱动相关的代码(fb0,分辨率,色深)lvgl 图形库的核心代码 (控件)lv_port_linux_frame_buffer 用于移植的模板进入 LVGL-V8_3 创建目录 mkdir mylvgl复制 lv_port_linux_frame_buffer/* 到mylvlg。

2025-09-18 10:45:11 738

原创 自旋锁/互斥锁 设备树 iic驱动总线 day66 67 68

​ ---- 一定要在连接互联网的环境下才能做,因为要下载使用的资源 任意写一个应用程序 `​ ---- 添加各种服务 eg: tftp nfs。IIC总线驱动: (主要实现与设备无关的IIC读写时序并提供操作读写的方法)​ buildroot: 编译完即可生成可以直接使用的根文件系统。不会使线程进入阻塞状态,减少了不必要的上下文切换,执行速度快。长-------互斥锁。短-------自旋锁。

2025-09-06 22:08:29 404

原创 dht11 day66

【代码】dht11 day66。

2025-09-01 19:37:41 176

原创 ADC platfrom day65

先加载device,再加载driver //如果不用release的话。

2025-08-31 15:49:17 186

原创 动态加载和异步调用tasklet/workqueue day63 ay64

/ /proc/devices DEV_NAME ,二选一cdev_add();led_exit()//对应按相反顺序注销。

2025-08-28 22:08:51 977

原创 设备驱动程序 day62

块设备:数据可以随机访问(eg:存储设备),以块的形式访问数据(类似数组,成块的字节操作)设备号:内核维护设备驱动程序的数字(每个设备都有唯一的设备号)字符设备:一般以数据(字节)流的形式操作,数据访问有严格顺序。网络设备:集成复杂的协议栈(eg:网卡) — 按名字维护。​ 高12位:主设备号 //区分不同类别的设备。​ 低20位:次设备号 //同类设备的不同设备。

2025-08-26 23:18:46 188

原创 内核编译 day61

因为没有向内核传参(根文件系统类型/xxxxxx)嵌入式系统:软硬件可裁剪的专用计算机系统。

2025-08-25 19:49:36 156

原创 linux驱动 day60

linux。

2025-08-22 20:31:53 673

原创 LCD DMA day59

​ 读: (先数据操作,再从数据总线拿出数据)从DATA获取数据。​ 3.写:写数据到DATA(先写到数据总线中,再数据操作)​ 1.传输bank地址和行地址。从内存空间操作的,所以是AHB。​ 2传输列地址及读写信号。

2025-08-21 21:04:46 172

原创 静/动态库 IIC(arm) day58

配制IIC总线:可以编程ICCON寄存器中的4位预分频器值来控制串行时(SCL)的频率。IIC总线接口地址被储存在IC总线地址(IICADD)寄存器中。生成一个独立的可执行程序(运行时仅需要一个文件即可) 使用方便 不需要安装。程序执行时,需要可执行文件及库文件同时存在,并且可执行文件能找 到库文件。库:一堆可执行二进制文件的集合,由若干个.o文件归并生成。即可(不需要全更改),可执行程序不需要重新编译。,仅会在内部记录库文件 的位置等链接信息。库文件有改动则需要编译整个工程。库文件有改动时,只需要。

2025-08-20 21:19:34 283

原创 uart串口 day57

每个UART通道包含两个的64字节的FIFO给发送和接收。

2025-08-18 20:14:59 225

原创 pwn定时器,ARM定时delay 外部中断用函数指针(统一)day55,56

​ 每个定时器有它自己的由定时器时钟驱动的16位递减计数器。当定时器计数器到达零时,相应的TCNTBn的值将自动被加载到递减计数器以继续下一次操作。然而,如果定时器停止了,例如,在定时器运行模式期间清除TCONn的定时器使能位,TCNTBn的值将不会被重新加载到计数器中。定时比较缓冲寄存器(TCMPBn)包含了一个被加载到比较寄存器中的与递减计数器相比较的初始值。定时器4是一个无输出引脚的内部定时器。​ 定时计数缓冲寄存器(TCNTBn)包含了一个当使能了定时器时的被加载到。​ PWM:脉宽调制。

2025-08-16 20:31:07 424

原创 时钟 中断 day54

​ 总结:写1 清 0,他不是对应的位变成1 ,而是写入对应位的1,进行这个操作,与它本身这个状态没有关系,他的逻辑要的是:向对应位写1,有这个操作,才能进行清0 这个动作。先配置HDIVN和PDIVN,因为如果先配置PMS的话,由于H,P没有配置比例,导致他们的频率没有限制,过高,下面的模块可能损坏。​ 中断偏移(INTOFFSET)寄存器是CPU处理,CPU才知道你进行的是什么样的中断,我们之前学的寄存器,是当这位为0/1,才能有这样的功能,要的是结果。​ 先清源挂起标志,因为他是中断挂起标志的源头,

2025-08-14 21:19:47 670

原创 ARM 实操 流水灯 按键控制 day53

​ S3C2440A 中,大多数端白为复用引脚。如果在掉电模式中PE0至PE7用于唤醒信号,这些端口必须配置为输入模式。​ 如果端口配置为输出端口,可以写入数据到PnDAT的相应位。如果端口配置为输入端口,可以从PnDAT的相应位读取数据。配置1bit一步完成配置多个bit两步完成先清0再置1配置GPB5引脚功能为输出。可是大多数的基于ARM 的系统有有>2个的中断源,因此需要一个中断控制器。这样就会在缓冲区操作后,立马写入内存的值,写在内存。每次读取值的时候,都操作的是内存,返回时,需要手动:恢复。

2025-08-13 22:05:49 485

原创 ARM基础概念 异常处理01 day52

段又可以分为代码段和数据段,代码段存放执行代码,数据段存放代码运行时的数据,A搜素解释快速润色总一个ARM源程序至少需要一个代码段,大的程序可以包含多个代码段和数据段。段是相对独立的、具有特定名称的、不可分割的指令或者数据序列。2.Load/Store指令 //(完成CPU与内存IO外设之间的数据传输)可是大多数的基于ARM 的系统有有>2个的中断源,因此需要一个中断控制器。5.协处理器指令 //(完成CPU扩展功能的实现)6.异常产生指令 //(用户程序异常触发)3.跳转指令 //(完成程序的跳转)

2025-08-12 19:33:29 520

原创 ARM基础概念 day51

RAM:随机存储 访问速率快 掉电数据丢失​ROM:只读存储 访问速率慢 掉电数据不丢失​ RAM类:RAM SRAM(静态,最快,主要是晶体管构成) DRAM(动态,主要是电容构成)​ SSRAM SDRAM:都带有同步时钟​ ROM类:PROM(可编程) EPROM(可擦除) EEPROM(电)​flash:结合RAM和ROM的优点CPU :中央处理单元ALU:运算单元,实现基本的运算RO~R12:寄存器,存储数据。

2025-08-11 19:20:47 506

原创 温度传感器 02 day50

接收应答:在发送完一个字节之后,主机在下一个时钟接收一位数据(在高电平读取),判断从机是否应答,数据0表示应答,数据1表示非应答(可将AD/DA模块直接集成在单片机内,这样直接写入/读出寄存器就可进行AD/DA转换,单片机的IO口可直接复用为AD/DA的通道。AD/DA转换打开了计算机与模拟信号的大门,极大的提高了计算机系统的应用范围,也为模拟信号数字化处理提供了可能。**X **:是数据改变的时候,也即是SCL低电平的时候,高电平不能改变。•发送应答:在接收完一个字节之后,主机在下一个时钟发送一位数据,

2025-08-09 11:08:53 735

原创 串口通信02 温度传感DS18B20 01 day49

异步:通信双方使用不同时钟,双方要固定的数据帧(0起始,1停止)和传输速度(波特率,一般都是9600bps = 1s:单位时间传输了多少个码元,这里用二进制码元),无CLK引脚。​ 从机将在总线拉低30us后(典型值)(30us相当于:主机发送数据后,缓一会,丛机再读取)读取电平,整个时间片应大于60us。可将AD/DA模块直接集成在单片机内,这样直接写入/读出寄存器就可进行AD/DA转换,单片机的IO口可直接复用为AD/DA的通道。),并在拉低后15us内读取总线电平(尽量贴近15us的末尾),

2025-08-07 23:03:51 343

原创 串口通信 day48

单片机:电源+时钟(晶振)+复位 //实现的最小组件电源:5V直流时钟(晶振):决定系统运行的速率 一般12M(不超过50M),因为过快导致稳定性,抗干扰性能下降,​ 分为分频和倍频,一般都是分频(1/(2*6)分频)复位:电平信号(高/低) 2种:先上升沿,在下降沿;先下降沿,后上升沿原理图:表示器件的逻辑连接关系PCB:表示器件物理连接关系。

2025-08-06 21:05:40 690

原创 单片机51 day46

单片机:电源+时钟(晶振)+复位 //实现的最小组件电源:5V直流时钟(晶振):决定系统运行的速率 一般12M(不超过50M),因为过快导致稳定性,抗干扰性能下降,​ 分为分频和倍频,一般都是分频(1/(2*6)分频)复位:电平信号(高/低) 2种:先上升沿,在下降沿;先下降沿,后上升沿原理图:表示器件的逻辑连接关系PCB:表示器件物理连接关系。

2025-08-04 21:09:40 316

原创 报文头 和fprint的说明 day45

头部信息基本都是固定的,关注报文的响应报文,而不是请求报文。给浏览器一个校准的头,不依靠浏览器的自身纠错能力。它为什么不需要你手动逐字符扫过去(像。是否可以详细解释一下。遇到普通字符,如空格、等,会直接写入文件。

2025-07-31 20:43:07 214

原创 数据库02 网页html01 day44

1、分类: 大型 中型 小型关系型数据库2、名词:DB 数据库DBMS 数据库管理系统MIS 管理信息系统OA 办公自动化GNU特点:1、开源 C语言开发2、代码量少 1万行左右,总大小10M以内3、绿色软件无需安装4、文件型数据库,可以移动。5、数据容量最大 2T:关系型数据库 非关系 :芒果建表dml新增 修改 删除一行查询查询select。

2025-07-29 19:59:00 346

原创 广播,数据库01 day43

1、分类: 大型 中型 小型。2、代码量少 1万行左右,总大小10M以内。:关系型数据库 非关系 :芒果。MIS 管理信息系统。4、文件型数据库,可以移动。OA 办公自动化。DBMS 数据库管理系统。新增 修改 删除一行。1、开源 C语言开发。5、数据容量最大 2T。3、绿色软件无需安装。

2025-07-28 20:54:14 297

原创 mqtt数据上传云端,且用线程缓冲邮箱 (项目) day42

【代码】mqtt数据上传云端,且用线程缓冲邮箱 (项目) day42。

2025-07-26 17:56:26 173

原创 TCP模型,mqtt协议01 day41

发布者发送数据(必须携带主题名)到服务器,服务器会查看自己订阅链表, 如果有订阅该主题的订阅者,就会转发数据。订阅者需要向服务器注册自己关心的主题名,服务器记录该主题被订阅,已经是那个客户端订阅的。不代表只能绑三个客户端,他中间有时间间断要去三次握手,第四个只是要等一会才能接受。适合嵌入式设备,移动设备,资源受限。3个端 :发布者,订阅者,broker(代理服务器)。订阅者也可以发布数据,发布者也可以订阅主题。的值不能正确的传递,发生错误,所以用。协议 : 消息队列遥测传输协议。只负责自己的部分,就和。

2025-07-25 19:24:43 403

原创 多路复用IO day40

​ 而CPU单核在同一时刻只能做一件事情,一种解决办法是对CPU进行时分复用(多个事件流将CPU切割成多个时间片,不同事件流的时间片交替进行)。在计算机系统中,我们用线程或者进程来表示一条执行流,通过不同的线程或进程在操作系统内部的调度,来做到对CPU处理的时分复用。应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标的输入、中断信号等等事件,再比如。创建的Rd_set,里面不仅有放进去的描述符,也会在描述符上 有标志位(0/1)时,是轮训的方式(以一个检测文件描述符) |

2025-07-24 20:23:58 606

原创 TCP day39

/阻塞接收客户端的数据。//阻塞接收客户端的数据。并获得通信套接字(服务器和客户端后续进行通信,用的套接字)如果要获取客户端信息,则事先定义变量并传入变量地址,函数执行完毕将会将客户端信息存储到该变量中。打开网络设备 获得文件描述符(套接字) listfd 监听套接字,作用,就是三次握手。发送的快,把对方的缓冲区填满就阻塞。发送的快,把对方的缓冲区填满就阻塞。.当收到对方的断开请求(0 == recv())。就断开与客户端的通信。功能:从已经监听到的队列中取出有效的客户端链接并接入到当前程序。

2025-07-22 20:46:31 731

原创 网络协议 day38

功能:如果该函数在服务器端调用,则表示将参数1相关的文件描述符文件与参数2 指定的接口地址关联, 用于从该接口接受数据。如果该函数在客户端调用,则表示要将数据从 参数1所在的描述符中取出并从参数2所在的接口设备上发送出去。功能:从msg所在的内存中获取长度为len的数据以flags。注意:如果是客户端,则该函数可以省略,由默认接口发送数据。返回值:成功 返回申请的套接字id, 失败 -1;之前通过socket函数创建的文件描述符,套接字id。返回值:成功 发送的字符长度, 失败 -1;

2025-07-22 11:02:11 392

原创 异步通信,共享内存 day37

key值(唯一键值) ==> 申请共享内存 ==》读写 ==》关闭 ==》卸载。功能:修改共享内存属性,也可以删除指定的共享内存对象。功能:定时由系统给当前进程发送信号, 也称为闹钟函数。Q:共享内存数据的存储方式是拷贝还是剪切?功能:进程暂停,不再继续执行,除非收到其他信号。返回值:成功 返回唯一键值, 失败 -1;===》任意文件,只要不会被删除重建即可。注意: 闹钟只有一个,定时只有一次有效,返回值:成功 返回映射的地址,一般等于。整形的数字,一般用ASCII码的。

2025-07-18 19:57:17 492

原创 进程间通信 day36

4.read 0 :写端关闭,读端读,读完内容之后还会向下读,如果管道没有内容,read 0;2.管道的数据容量:建议值: 512* 8 = 4k,实际值:65536byte= 64k。1,读端存在,一直向管道中去写,超过64k,写会阻塞。2,写端是存在的,读管道,如果管道为空的话,读会阻塞。1、无名管道 ===》管道的特例 ===>pipe函数。使用框架:创建管道 ==》读写管道 ==》关闭管道。结论:读写端必须同时存在,才能进行管道的读写。无名管道的读写:===》文件IO的读写方式。

2025-07-17 21:20:25 653

原创 线程同步,互斥 day35

功能:用指定的互斥锁开始加锁代码, 加锁后的代码到解锁部分的代码属于原子操作,在加锁期间其他进程/线程都不能操作该部分代码。如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则。(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。框架:定义互斥锁 — >初始化锁 — >加锁 — >解锁 — >销毁。互斥机制 — >互斥锁 — >保证临界资源的访问控制。框架:信号量的定义 — >信号量的初始化 — >信号量的。没有资源(==0),则线程阻塞等待,一旦有资源。

2025-07-16 21:18:31 809

原创 线程回收 day34

优点: 比多进程节省资源,可以共享变量。概念:线程是轻量级进程,一般是一个进程中的多个任务。进程是系统中最小的资源分配单位.线程是系统中最小的执行单位都能并发完成任务,特征:1、共享资源2、效率高 30%3、三方库:pthreadcloneposix3.1 编写代码头文件:pthread.h3.2 编译代码加载库: -lpthreadlibrary缺点:1,线程和进程相比,稳定性,稍微差些2,线程的调试gdb,相对麻烦些。

2025-07-16 09:19:01 848

原创 进程exec,waitpid,回调函数等 day33

当进程调用一种exec函数时,该进程的。​ 用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),用户空间代码和数据完全被新程序替换,从新程序的启动例程开始执行。​ 其实有六种以exec开头的函数,统称exec函数:但是功能都一样,参数不同。功能:该函数可以阻塞等待任意子进程退出,并回收该进程的状态。新进程,所以调用exec前后该进程的id并未改变。功能: 注册进程退出前执行的函数。僵尸进程:进程执行结束但空间(一般用于父进程回收子进程状态。如果要回收进程退出状态,则用。

2025-07-14 21:37:49 401

原创 进程基础概念,fork day32

PID 进程标识符当前工作路径 chdirumask 0002 进程打开的文件列表 文件IO中有提到信号相关设置 处理异步io,用户id,组id进程资源的上限ulimit - a, 显示资源上限。open files (-n) 1024 //文件默认开1023个stack size (kbytes, -s) 8192 //栈大小,默认8M(8kk)

2025-07-13 17:37:13 625

原创 文件IO day29

程序出错打印对应出错原因和用户输入字符串并退出。: 获得文件属性(主要是大小)返回值: 成功返回对应的错误信息。status:程序退出的状态。: 属性存放空间的首地址。要打印在终端上的出错信息。出错码对应的出错信息。

2025-07-07 20:30:33 199

原创 文件IO 01 day28

操作系统为了方便用户使用系统功能而对外提供的一组系统函数。称之为 系统调用 其中有个 文件IO一般都是对设备文件操作,当然也可以对普通文件进行操作。一个基于Linux内核的没有缓存的IO机制特性:.1 没有缓存区.2 操作对象不在是流,而是文件描述符 FILE* 4.3文件描述符很小的非负的整数int 0-1023操作系统最多开1k内核每打开一个文件就会获得一个文件 描述符​ 每个程序在启动的时候操作系统默认为其打开。

2025-07-04 17:07:49 944

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除