- 博客(58)
- 收藏
- 关注
原创 Linux-内核驱动-led
登记设备号(后面可以动态分配)自己定义内核函数登记设备名字和功能exit和init在内核启动自动执行这样定义直接操作物理地址。
2025-04-12 20:47:04
365
原创 Linux-内核驱动
U-Boot(Universal Boot Loader)是一种广泛使用的开源引导加载程序,它允许用户从各种设备(如硬盘、USB设备、网络等)加载操作系统。U-Boot提供了丰富的命令行接口(CLI),允许用户执行各种硬件级别的操作,比如配置硬件、加载和启动操作系统等。从内存地址处启动压缩的内核映像,需要指定内核映像、DTB(设备树)和内核解压后的存放地址。从FAT、ext2或ext4文件系统中加载文件到内存中。nm:内存显示命令,显示内存中的值(但不允许修改)。mm:内存修改命令,允许修改内存中的值。
2025-04-12 19:50:20
461
原创 ARM-外部中断,ADC模数转换器
根据您提供的图片,我们可以看到一个S3C2440微控制器的中断处理流程图。这个流程图展示了从中断请求源到CPU的整个中断处理过程。这些是具体的中断源,例如UART0-ERR、UART0-RXD、UART0-TXD等。每个请求源可能有一个对应的子中断源挂起标志(SUBSRCPND),用于指示该请求源下的具体中断事件。这个开关用于使能或禁用子中断源的中断请求。例如,如果SUBMASK寄存器的某位被清除(即设置为0),则对应的子中断源的中断请求将被屏蔽。
2025-04-04 20:47:20
1305
原创 ARM指令集
CMP指令用于把一个寄存器的内容和另一个寄存器的内容或立即数进行比较,同时更新CPSR中条件标志位的值。标志位表示的是操作数1与操作数2的关系(大、小、相等),例如,当操作数1大于操作数2时,则此后的有GT后缀的指令将可以执行。其中S选项决定指令的操作是否影响CPSR中条件标志位的值,当没有S选项时指令不更新CPSR中条件标志位的值。将寄存器R1的值与寄存器R0的值相减,并根据结果设置 CPSR的标志位 CMP R1,#100;把寄存器R0中的数据载入到R2寄存器R2<-R0,寄存器寻址。
2025-04-01 19:50:49
632
原创 ARM-基础概念
D-Cache是L1缓存的一部分,专门用于存储数据。它与指令缓存(I-Cache)分开设计,以提高CPU的性能。D-Cache的主要作用是减少CPU访问主内存的次数,从而提高数据访问速度I-Cache的主要作用是减少CPU从主内存中读取指令的次数,从而提高指令的读取速度。由于指令的读取通常具有较高的局部性(即程序往往会连续执行一系列指令),I-Cache可以有效地利用这种局部性来提高性能。
2025-03-31 19:40:57
264
原创 Linux-数据结构-哈夫曼树-哈希表-内核链表
哈夫曼树是一种带权路径长度最短的二叉树。给定一组权值,将这些权值作为叶子节点的权值构造一棵二叉树,若该树的带权路径长度(WPL)达到最小,则称这样的二叉树为哈夫曼树。
2025-03-23 16:25:20
1416
原创 Linux-顺序队列练习-链式队列-树
【2】.h文件的查找函数【3】主函数复制,及递归函数【4】sem 信号量用于同步,队列收,子进程就接受【5】
2025-03-21 17:33:31
1258
原创 Linux-数据结构-单链表练习-双链表
(1)定义存放数据的结构体,在每次向里面存放数据时候需要清空(2)对字典进行切割空格切割字母,再从剩余里切割到解释,这里windows的txt文件下,以\r\n结尾,切除\r保留\n(3)存放进结构体中(4)插入链表,插入函数(5)从键盘获得要查询的单词,\n读入需要消除(6)进行查找。
2025-03-18 19:03:31
740
原创 Linux-数据结构-线性表-顺序表
相互之间存在一种或多种特定关系的数据元素的集合。(1)逻辑结构集合,所有数据在同一个集合中,关系平等。线性,数据和数据之间是一对一的关系树, 一对多图,多对多(2) 物理结构(在内存当中的存储关系)顺序存储,数据存放在连续的存储单位中。逻辑关系和物理关系一致链式,数据存放的存储单位是随机或任意的,可以连续也可以不连续。
2025-03-17 15:22:51
1420
原创 HTML网上商城项目(sqlite3)
【1】结构说明:声明文档类型,告诉浏览器这是一个 HTML5 文档。<html>:根元素,包含整个 HTML 文档的内容。<head>:头部区域,包含元数据(如字符集、视口设置、标题、样式表链接等)。<body>:主体区域,包含用户可以看到的所有内容(如文本、图片、链接等)。
2025-03-13 17:45:08
1401
原创 IO多路复用实现并发服务器
select 的调用注意事项在使用 select 函数时,需要注意以下几个关键点:1. 参数的修改与拷贝readfds 等参数是结果参数 :select 函数会直接修改传入的 fd_set(如 readfds、writefds 和 exceptfds)。为了保留原始监听集合,通常会定义一个备份集合(如 allread_fdset),并将它的拷贝传递给 select。
2025-03-09 15:28:47
991
原创 天气查询项目(cJOSN)
JSON对象是一个无序的"名称/值"键值对的集合:以"“开始,以”"结束,允许嵌套使用;每个名称和值成对出现,名称和值之间使用""分隔;键值对之间用""分隔在这些字符前后允许存在无意义的空白符;对于键值,可以有如下值:一个新的json对象数组:使用"“和”"表示数字:直接表示,可以是整数,也可以是浮点数字符串:使用引号表示字面值:false、null、true中的一个(必须是小写)示例如下:"name""age"22"weight"55.5。
2025-03-09 13:53:57
944
原创 计算机网络-服务器模型
一.服务器模型一.服务器模型1.支持多客户端访问//单循环服务器socketbindlistenwhile(1)acceptwhile(1)recv/sendclose注:该模式remvform为阻塞态,服务器将等待接收数据2..支持多客户端同时访问 (并发能力)socketbindlistenwhile(1)//出错处理while(1) //负责 与 客户端通信的recv/sendclose。
2025-03-07 20:54:45
1031
原创 (1)udp双向通信(2)udp实现文件复制(3)udp实现聊天室
(1)父进程从键盘获取字符串(2)输入quit,发送结束子进程信号(3)exit退出父进程(1)子进程接受信息(2)getppid用于退出父进程。
2025-03-04 20:05:21
846
原创 Linux-计算机网络.udp
addrlen //src_addr 大小---使用方式与accept中的addrlen使用方式一样。recv(,0) /send(,0) ///TCP 常用套机字读写。recvfrom()/sendto() ///UDP 常用套接字读写。read()/write () ///通用文件读写,可以操作套接字。addrlen //dest_addr的大小。dest_addr //要发送到的目的地址。@src_addr //源地址。为len字节的数据到指定的buff内存中。
2025-03-03 20:34:05
1592
原创 Linux——计算机网络
整个互联网非常复杂,涉及到很多知识,学习互联网不能一蹴而就,所以这里从最简单的家庭网络开始学习:家庭网络一般是通过Modem拨号上网,然后通过家庭路由器,将网络连接到家里所有的可以联网的设备。家庭网络中,所有设备联网方式完全相同,所以只需要学习一个设备和其他设备之间如何通讯,即可理解家庭网络。这里我们通过telnet和百度两个网络应用,来研究A电脑如何跟其他设备进行通讯:telnet(远程登录)本地计算机B搞清楚计算机A如何跟局域网内部设备通讯。2.百度搞清楚计算机A如何跟局域网外部的设备通讯。
2025-03-01 13:54:09
3257
原创 Linux——mplayer项目
【2】赋值给current_index索引,用于播放选择歌曲.current_index范围是0-playlist_size-1,所以在输入基础减1。【1】如果输入1时有父进程在运行,说明此时有子进程运行,歌曲在播放,停止子进程并使pid=-1;【2】case3需要结束播放,停止子进程结束,并且将pid=-1.这样如果没有播放会跳过功能,命令不会滞留在管道.【3】如果没有播放音乐时使用停止命令会使命令滞留在管道里,在播放音乐会停止。【2】运行playlist中索引为current_index的曲目。
2025-02-27 17:34:06
1116
原创 进程间通信-信号,共享内存
xxxget()函数 //建立了 key <==>ipc对象之间的一一对应的关系。【3】key --- IPC_PRIVATE //创建一个key对应ipc对象 ---- 主要用于亲缘关系进程间。[用户空间] ````[key]``` //name ---fifo。sig 当前程序要发送的信号编号 《=== kill -l。中断(信号)处理程序 --- 负责对该中断(信号)做出反应的。//signo //参数 ---表示 接收到的信号的编号。
2025-02-25 19:39:24
773
原创 unxi-进程间通信
=>fd 是固定写端。==>fd 是固定读端。pipefd[1] ==>无名管道的固定写端//1 -- 标准输出。半双工 ---发送端 和 接收端 同一个时刻之后有一个起效 ---对讲机。参数:pipefd[0] ==>无名管道的固定读端//0 -- 标准输入。有名管道 ===》fifo ==》可以给任意单机进程通信(同一主机内)双工 ---发送和接收可以同时进行 --手机,电话。(1).创建有名管道 -- 类似 文件 (管道文件)单工 ---发送端 接收端固定 --- 广播。
2025-02-24 20:44:26
1089
原创 Unix——线程
2.pthread_cleanup_pop(0) //pthread_exit() //退出动作会导致 触发。1. pthread_detach //将指定的线程设置为分离状态 --- 那么资源的回收将自动完成。2. pthread_exit //主线程调用的时候,此时不会结束进程,只是结束了主线的执行流。1. pthread_exit //带出的是 保存了 退出状态值 的空间的地址。一般是NULL表示默认锁 //一般的锁 ,读写锁。定义互斥锁 ==》初始化锁 ==》加锁 ==》解锁 ==》销毁。
2025-02-23 13:39:45
972
原创 Unix-进程和线程
start_routine ---线程执行函数//线程回调函数 --- 提现线程任务执行的部分。线程(轻量级的进程): 更侧重于 成为一个 执行单位 ---- 调度执行的最小单位。@attr --- 线程属性 //默认属性 NULL --可结合性。进程(重量级的进程): 更多侧重于 成为 资源分配的单位 ---- 资源分配的基本单位。程序计数器 (program counter) //寄存器 --- 8字节。等待所有子进程 ---当前进程的所有进程。
2025-02-21 21:12:21
793
原创 Unix-进程
str 表示要分割的字符串 //如果填写NULL 表示接着原来的字符串继续分割。vector //向量 --- 后面的参数 以字符串指针数组的形式组织。@path //说明 --要执行的可执行文件的名字 (包含路径)//which 命令名 ---查看命令在系统中位置。list //列举 --- 后面的参数逐个列举出来。(主要用来 --- 回收子进程的资源----避免僵尸态)//看要执行的文件 是否有需要的参数。成功 返回结束了的子进程的pid号。@arg0 //执行文件的名字。
2025-02-20 20:55:20
1064
原创 进程-fork函数
全局区|data/bss data --- 已经初始化了的全局变量或静态变量 bss ---未初始化。bash(2590) bash() + exec()//执行了一个与bash完全不用的程序。bash(7765) (a.out)bash(7766) //运行了一个 a.out //exec。ps -eLf | grep a.out //查看a.out 信息 //可以观察到 PID PPID。init进程(1) //UNIX环境高级编程(init -- systemd)
2025-02-19 19:11:51
494
原创 Linux-文件IO(2)
根据gid到/etc/group文件中解析组信息。@statbuf //用来保存文件的属性信息。根据用户id到/etc/passwd文件下解析获得。功能: 获得/etc/passwd中相关的信息通过name。根据用户名到/etc/passwd文件下解析获得。创建一个链接向oldpath文件的新符号链接文件。根据组名到/etc/group文件中解析组信息。@pathname //需要一个文件名字。功能,从/etc/group,获取相关组的信息。oldpath:被链接向的文件的路径。
2025-02-17 20:11:04
623
原创 【无标题】
在我们桌面上的图标只是一个快捷方式,它真正的运行路径是在其他的磁盘中。我们的Linux系统中也存在类似的形式,在Linux中的链接形式有两种,一种叫做软链接,一种叫做硬连接。并且他们的inode号不一样。由上面接口可以知道,我们新建的硬链接文件,只是给源文件起了一个别名,他们共用同一个inode号。:对原文件删除,会导致软链接不可用,因为软连接存储是路径,而硬链接不受影响。3、然后通过inode表中的保存的数据区的指针,读取我们相应数据区的内容。当我们查看一个文件的时候,linux系统的运行过程如下图。
2025-02-17 13:58:37
243
原创 Linux-文件IO
c.设备文件 ---- 文件IO ///dev/video0 ----> fopen();offset >= 0 //可以 --- 创建 空洞 文件。offset < 0 //不能超过这个文件开头。O_TRUNC //文件存在 截短为0。SEEK_SET //相对于文件开头的。SEEK_END //相对于文件末尾。O_CREAT //文件不存在 创建。文件IO --- 安全性 操作的是硬件 ---文件IO。b.umask (掩码) //二进制位 --- 遮住。
2025-02-16 14:22:32
2836
原创 Linux-文件基本操作1
offset >= 0 //可以 --- 创建 空洞 文件。offset < 0 //不能超过这个文件开头。offset<0 //不能超过这个文件开头。time_t time(time_t *t) //可以获得一个时间的秒数。SEEK_SET //相对于文件开头的。SEEK_END //相对于文件末尾。./a.out < main.c //< 表示输入重定向。./a.out > main.c //> 表示输出重定向。3.fread/fwrite //二进制读写函数 按对象读写。
2025-02-14 18:39:42
876
原创 Linux-文件基本操作
"123" --- 文本文件 --- '1''2''3' //每个数据是按照固定的编码格式存放的 -ASCII。成功 FILE*指针 //文件指针 流指针 --- 从程序上讲,FILE *指针就代表打开的这个文件。stderr //标准出错 --- 屏幕 --- 可以专门把错误信息输出到 stderr。(1).处理缓冲区分配 (缓存--提高效率 --- 慢速 快速)@pathname --- 要打开的文件名 //字符串形式的名字。@c //要输出的字符 ---ascii码值。
2025-02-13 18:45:41
947
原创 Shell-基本命令与运算符
b 块设备文件 block test -b /dev/sda --- 硬盘。/bin/bash --- 表示指定当前shell脚本的解释器为 /bin/bash 这个解释器。/bin/bash --- 表示当前这个shell脚本用哪个shell来解释执行。/bin/bash //编辑文件 shebang。10.//条件的生成 --test的命令 //注意: test 执行结果为真 0。
2025-02-12 19:08:47
886
原创 C语言-结构体
192.168.0.59 //ip地址 --- 网络环境中 ---实际对应是一个32位的数值。//s是struct stu 这个类型的别名。无符号 --- 最高位补0 //逻辑右移。所谓"枚举"是指将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。2.共用体初始化,只能写一个值,这个值是给第一个成员变量的值。看是有符号 --- 最高位补符号位 //算术右移。枚举 --- 将变量的可能值(常量值) 一一列举出来。//使用方式 类似 结构体 --- 也是构造类型。
2025-02-10 18:55:53
2626
2
原创 C语言-结构体
1.free本身表示将空间释放,就是将空间交还给操作系统,操作系统之后,可以自由安排。//64位的平台 ---- 64位平台 整个结构体对齐, 按成员中最大的对齐。@size ---说明,要申请的空间的大小。//此时 表示 定义了一个 学生信息 的 结构体类型。1.结构体成员的对齐 --- 放在自然边界 (偶数位置)2.结构体整体的对齐 --- 以结构体中最大的成员对齐。//结构体类型 定义 --- 定义(从无到有) 声明()一般,都是变量定义的形式。//如果没有超过4字节的,则按成员变量中最大对齐。
2025-02-08 18:50:33
1179
原创 指针+函数 指针+数组
int cmpFunc(const void *a, const void *b) //a 和 b 获得到是 要比较的数组中的两个元素的地址。int (*compar)(const void *, const void *) //指向一个比较规则的 函数。//是带了一个int型返回值 和 两个int型形参的这样的函数的指针。//是带了一个int型返回值 和 两个int型形参的这样的函数的指针。int (*p)(int a,int b) // C语言正确的语法形式。// 函数(的)指针。
2025-02-07 20:32:09
459
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人