- 博客(36)
- 收藏
- 关注
原创 S3C2440按键、中断、等待队列
2.初始化等待队列头 (使用带参宏init_waitqueue_head(q))1.定义一个队列头 数据类型位wait_queue_head_t。3.阻塞wait_event(wq,condition);参数:wait_queue_head_t类型变量。condition为假才能进入函数调用。
2024-09-09 23:08:30
299
原创 Linux字符设备驱动
make modules生成.ko文件。模块加载时调用init函数。模块卸载时调用exit函数。将.ko文件移动到开发板上。
2024-09-05 22:54:25
303
原创 汇编
汇编指令的s后缀,几乎所有的汇编指令都可以在指令后面加上s后缀,s后缀的含义是在指令执行过程中会更新cpsr寄存器的N,V,C,Z位。大多数指令的格式为opcode rd, rn ,rm,其中,rd是目标寄存器,rn是第一操作数寄存器。2.把某个数展开成2进制,这个数的最高位1至最低位1之间的二进制数序列的位数不能超过8位;bic r1, r0, #(1<<0) 将r0中数据为1的位数清零后 存入r1中。mov指令:加载12位立即数到寄存器或转移一个寄存器的值到另外一个寄存器。push{r0} 入栈。
2024-08-23 22:46:50
409
原创 ARM工作模式
大端格式:高字节在低地址,低字节在高地址。小端格式:高字节在高地址,低字节在低地址。RAM:随机访问存储器。ROM:只读访问存储器。
2024-08-22 20:16:58
443
原创 framebuffer
3.使用mmap函数将framebuffer映射到进程的地址空间,得到一个指针,通过操作这个指针就可以对framebuffer的内容进行修改了。2.使用ioctl函数获取屏幕的相关信息(bbp 、屏幕的最大宽度xres、屏幕的最大高度yres等)并保存到结构体中。//获取屏幕信息(可变)1.使用open函数打开framebuffer。
2024-08-14 21:36:19
281
原创 数据结构.
一组用来保存一种或者多种特定关系的数据的集合(组织和存储数据)程序的设计:将现实中大量而复杂的问题以特定的数据类型和特定的存储结构存储在内存中,并在此基础上实现某个特定的功能的操作;
2024-08-07 15:06:22
177
原创 TCP并发
2.将关注的文件描述符添加到集合中。4.有事件到达时,处理相应的任务。1.使用信号通知的机制,效率高。1.创建一个文件描述符集合。2.用来区分少量的IO。
2024-07-31 19:21:07
190
原创 Linux网络通信
C/S模型: client----->server 专用的客户端。B/S模型 : browesr ---->server 通用的客户端。网络套接字:文件描述符 为应用层提供的端口。2.主机1和主机2软件层面互联互通。1.主机1和主机2物理层互联互通。2.ping ip 地址/域名。网络:进程间通信(不同主机)网络协议:OSI七层模型。功能:创建通信网络套接字。dns(域名解析服务)ARP:地址解析协议。
2024-07-26 14:01:19
238
原创 Linux进程间通信
无名管道:同一主机下,具有亲缘关系的进程间通信。1.创建并打开无名管道(创建时会自动打开)fd。有名管道:同一主机下,任意两个进程间通信。
2024-07-22 11:31:56
182
原创 Linux线程
定义:定义: 同步是指协调多个线程的执行顺序,以确保它们在特定的时间点完成任务或达到某种状态。同步机制用于控制线程的执行顺序和协调线程之间的操作。定义:互斥是指在同一时刻只能有一个线程访问共享资源。互斥机制用来防止多个线程同时操作共享资源,避免数据竞争和不一致性。临界资源:多个线程可以同时访问到的资源,如:共享变量,全局变量,共享内存等。线程在分离状态下会自动回收资源,无需调用 pthread_join。问题:多个线程在操作临界资源时存在资源竞争问题。在多线程中对临界资源的排他性访问。
2024-07-21 17:35:54
241
原创 Linux进程
进程创建后,操作系统为进程分配独立的0-4G虚拟空间。程序 ----加载到内存去运行— 进程。5)一个程序可以运行多次,变成多个进程。进程是 操作系统资源分配的 最小单位。4)进程与进程会存在竞争计算机的资源。2)进程有程序状态的变化,程序没有。一个进程可以运行一个或多个程序。1)程序是永存,进程是暂时的。3)进程可以并发,程序无并发。进程是 程序运行的实体。保障多个任务能同时执行。
2024-07-18 19:46:11
302
1
原创 嵌入式DAY14
> 右移 右移n位 等价于 让该数 / 2^n。<< 左移 左移n位 等价于 让该数 * 2^n。^ 按位异或 相同为0 相异为1。char 按照1字节对齐。short 按照2字节对齐。int 按照4字节对齐。double 按照4字节对齐。数据类型1 成员变量1;数据类型2 成员变量2;数据类型3 成员变量3;2.结构体变量的定义。3.结构体元素的访问。union 共用体名。enum 枚举类型名。
2024-01-30 19:41:41
318
1
原创 嵌入式DAY13
const 关键字 常量(只读) readonly。指针函数:是函数,函数的返回值类型是指针类型。函数指针:是指针,指针指向了函数。数据类型1 成员变量1;数据类型2 成员变量2;数据类型3 成员变量3;struct 结构体名。1.结构体类型的定义。
2024-01-29 17:20:41
53
原创 嵌入式DAY11
练习:封装一个函数,给定一个字符串,统计该字符串中大写字母、小写字母、数字和空格的个数。定义一个数组指针变量,占8个字节空间,指针指向了一个int类型5个元素的数组。定义一个指针数组,数组占40个字节空间,每个元素为int *型,共5个元素。对数组指针*,值不变,类型降级成为指向数组第一个元素的指针。&a:获得数组的首地址,其类型为int (*)[5]数组的数组名a是指向数组第一个元素的一个指针常量。指针数组时数组,数组每个元素都是指针类型。1.sizeof运算时。数组指针是指针,指针指向一个数组。
2024-01-26 21:23:33
398
1
原创 嵌入式DAY10
3.指针变量:是一个变量, 变量里面存放了一个指针(地址), 称为指针变量,使用指针变量等价于使用其内部存放的指针,所以我们有时也把指针变量简称为指针。1.封装一个函数,完成传入两个数值,获得这两个数值的最大公约数和最小公倍数。实参将值传递给形参,形参是实参的副本,形参改变不会影响实参。2.指针:指针就是地址,地址就是指针,指针多了指向的概念。1.宏是代码的替换,中间不进行任何数据计算的操作。1.地址:用来区分内存中不同字节的编号。&:只能操作左值(变量)3.指针可以操作硬件。*:只能操作指针类型。
2024-01-25 19:54:32
322
原创 嵌入式DAY9
实参将值拷贝一份给形参,形参是实参的副本,形参的值发生改变不会影响实参。函数类型 函数名(数据类型1 形参1, 数据类型2 形参2, …2.封装一个函数实现获得一个数字每位数上的和值。函数名(实参1, 实参2, …1.递归一定要有结束条件。1.赋值传递(复制传递)函数定义时调用函数本身。2.避免深层次的递归。1.封装冒泡排序函数。
2024-01-24 19:41:44
345
1
原创 嵌入式DAY7
C语言没有字符串类型,也无法定义字符串变量,只能通过字符型数组,每个元素存放一个字符,最终存放字符串。数组类型 数组名[行数][列数];
2024-01-22 19:09:56
366
原创 嵌入式DAY6
1.从终端接收若干个成绩,以-1结尾,计算所有输入有效成绩的平均分。1.数组:一组类型相同的有限个元素的集合。2.分类:一维数组、二维数组、多维数组。数据类型 数组名[元素个数];跳出循环或者switch结构。
2024-01-20 21:28:54
338
原创 嵌入式DAY5
练习:编写程序,从终端接收两个数 Num1和Num2,如果Num1 >= Num2则打印Num1。case 常量1:语句块1;case 常量2:语句块2;case 常量3:语句块3;switch (整形表达式)} while (表达式);否则将两者交换打印Num1。while (表达式)
2024-01-19 18:29:19
438
1
原创 嵌入式DAY4
1.scanf如果输入数据与想要接收的数据不匹配,从不匹配的位置开始不再向后读取。3.scanf除了%c形式外,均无法接收’ ‘和’\n’字符。4.scanf中_%c可以接收非’ ‘和’\n’字符。2.scanf除了%s形式外,都需要加 &从main函数开始执行,执行到main结束。功能:在终端打印一行字符串。功能:从终端接收一行字符串。5.scanf中严禁\n。
2024-01-18 19:01:48
369
1
原创 嵌入式DAY3
1.显示类型转换(强制类型转换)功能: 从终端接收一个字符。% : 不能对浮点数操作。功能:在终端打印一个字符。++ 自增运算符。
2024-01-17 18:32:06
425
原创 C语言数据类型
十进制:0 1 2 3 4 5 6 7 8 9 A B C D E F。二进制(B)、八进制(O)、十进制(D)、十六进制(H)1.二进制、八进制、十六进制 --> 十进制。2.十进制 --> 二进制、八进制、十六进制。八进制:0 1 2 3 4 5 6 7。(十进制数除以进制数得到的余数逆序排列)将多个二进制代码链接成为一个可执行程序。正数:在计算机中存放对应的二进制数。(对应位*对应位的权值再求和)十六进制1位对应二进制4位。将汇编代码编译成二进制代码。八进制1位对应二进制3位。3.补码(反码+1)
2024-01-16 19:34:50
442
1
原创 Linux系统下基本操作
Ubuntu、Redhat、Debian、CentOS、FreeBSD Linux操作系统(以Linux为内核的操作系统)3.重启:Ubuntu系统中点击"Power Off",再将虚拟机关闭,再重新启动虚拟机和Ubuntu系统。第二组rwx: 创建文件的用户同组用户对文件是否拥有读写执行权限。当前所在目录不同,登录用户不同,相同路径不会产生不同含义。当前所在目录不同,登录用户不同,相同路径会产生不同含义。可以有多个,也可以一个没有,名字没有限制。第一组rwx: 创建文件的用户对文件是否拥有读写执行权限。
2024-01-15 21:51:45
913
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人