Linux学习记录
文章平均质量分 85
个人的嵌入式学习记录
轻指弹
这个作者很懒,什么都没留下…
展开
-
Linux 学习记录60(ARM篇)
【代码】Linux 学习记录60(ARM篇)原创 2023-07-31 09:29:08 · 1022 阅读 · 0 评论 -
Linux 学习记录59(ARM篇)
二、系统框图2. 数据传输信号3. 应答信号 / 非应答信号4. 寻址信号四、IIC协议1. 主机给从机发送一个字节(写)2. 主机给从机发送多个连续字节4. 从机给主机发送多个连续字节原创 2023-07-27 17:56:05 · 1607 阅读 · 0 评论 -
Linux 学习记录58(ARM篇)
GIC层一共管理288个中断号(ID:0 ~ 287),16个SGIS,16个PPIS,256个SPIS。功能:使能cpu中断。原创 2023-07-26 20:48:30 · 2052 阅读 · 3 评论 -
Linux 学习记录57(ARM篇)
PIN1对应EXTI0,PIN2对应EXTI2,以此类推。原创 2023-07-25 20:07:17 · 1252 阅读 · 0 评论 -
Linux 学习记录56(ARM篇)
在1位停止位的情况下,发送端在每个数据字节传输完之后会发送一个逻辑高电平的停止位,用于告知接收端数据传输结束。其原理是将数据分成多个位元,每个位元通过不同的线路传输,这些线路同时工作,从而实现数据的并行传输。串口的停止位(Stop Bit)是指在每个数据字节传输完之后,发送端发送的一个额外的位,用于标识数据传输的结束。在串口通信中,发送端和接收端必须统一设置停止位的配置,否则可能导致数据传输出错。数据位:串口数据传输(进行数据的收发),先发送低位,在发送高位,串口配置信息常用配置8位数据位。原创 2023-07-25 08:59:47 · 1584 阅读 · 0 评论 -
Linux 学习记录55(ARM篇)
【代码】Linux 学习记录55(ARM篇)原创 2023-07-24 08:35:13 · 529 阅读 · 0 评论 -
Linux 学习记录54(ARM篇)
【代码】Linux 学习记录51(ARM篇)原创 2023-07-20 19:27:16 · 329 阅读 · 0 评论 -
Linux 学习记录53(ARM篇)
栈指针寄存器(R13 [SP]),sp始终保存栈顶元素的首地址栈的本质就是一段内存空间,被分出来用于存放一些临时数据,我们可以用过对栈区内存读写来保护现场。原创 2023-07-19 19:15:59 · 2327 阅读 · 0 评论 -
Linux 学习记录52(ARM篇)
格式:opcode:比较指令的指令码是cmp功能:将第一操作寄存器和第二操作数的值进行比较本质:比较指令的本质就是拿进行比较的两个数值进行减法运算,并且减法运算的结果会影响到CPSR的条件位我们可以根据条件位的数值进行两个数值的判断,再根据判断的结果做不同的操作一般比较指令和条件码都是一起使用的格式:opcode {功能:跳转到指定的标签下功能码: 1. b : 跳转到指定的标签下,返回地址不保存 2. bl : 跳转到指定的标签下,返回地址保存至 LR寄存器中。原创 2023-07-18 20:03:10 · 2015 阅读 · 0 评论 -
Linux 学习记录51(ARM篇)
点击此查看ARM发展史ARM :Advanced RISC Machines(最初命名为Acorn RISC Machine)简称ARM。对ARM可以有三种理解:1)ARM公司:Advanced RISC Machines Limited;2)ARM处理器架构;3)一种技术——ARM技术。里程碑1——ARM成立ARM前身为艾康电脑(Acorn),于1978年,英国剑桥成立,大学的孵化物。1980年代晚期,苹果开始与艾康合作,开发新版ARM核心。原创 2023-07-18 09:28:31 · 656 阅读 · 0 评论 -
Linux 学习记录50(QT篇)
【代码】Linux 学习记录50(QT篇)原创 2023-07-11 20:57:22 · 637 阅读 · 0 评论 -
Linux 学习记录49(QT篇)
事件是由窗口系统或者自身产生的,用以响应所发生的各类事情,比如用户按下并释放了键盘或者鼠标、窗口因暴露而需要重绘、定时器到时而应有所动作,等等从某种意义上讲,事件比信号更原始,甚至可以认为大多数信号其实都是由事件产生的。比如一个下压式按钮首先感受到的是鼠标事件在进行必要的处理以产生按钮下沉继而弹起的视觉效果之后,才会发射 clicked()信号Q_OBJECT//关闭当前窗口 void min_signals(void);原创 2023-07-11 08:48:15 · 340 阅读 · 0 评论 -
Linux 学习记录48(QT篇)
【代码】Linux 学习记录48(QT篇待完成)原创 2023-07-09 20:51:52 · 757 阅读 · 0 评论 -
Linux 学习记录47(QT篇)
【代码】Linux 学习记录47(QT篇待完成)原创 2023-07-09 09:13:22 · 650 阅读 · 0 评论 -
Linux 学习记录46(QT篇)
pro是一个工程管理文件,依据这个文件来生成makefile文件来编译源文件#添加相关的类库,例如进程线程库、网络编程库、数据库等待 QT += core gui #默认提供两个类库: core包含了核心库,io相关操作等 gui库提供了图形化相关的类库 #如果qt版本超过4.0,就会多加一个widgets类库,大部分组件全部来自于该库 greaterThan(QT_MAJOR_VERSION, 4) : QT += widgets。原创 2023-07-07 21:08:16 · 501 阅读 · 0 评论 -
Linux 学习记录45(C++篇)
模板定义:template<typename T1,typename T2> 定义了一个模板,模板可以接收两个不同的数据类型[T1/T2]/*定义模板*/ template < typename T1 , typename T2 > T1 add(T1 a , T1 b) {/*显式调用*/ cout << add < int , int >(num1 , num2) << endl;原创 2023-07-04 18:45:31 · 255 阅读 · 0 评论 -
Linux 学习记录44(C++篇)
定义英雄类hero,受保护的属性string name,int hp,int attck;公有的无参构造,有参构造,虚成员函数 void Atk(){blood-=0;},法师类继承自英雄类,私有属性 int ap_atk=50;重写虚成员函数void Atk(){blood-=(attck+ap_atk);重写虚成员函数void Atk(){blood-=(attck+ac_atk);多态按字面的意思就是多种形态,相同的方法调用,但是有不同的实现方式。使用virtual修饰的函数就是虚函数。原创 2023-07-03 19:25:20 · 293 阅读 · 0 评论 -
Linux 学习记录43(C++篇)
把A类声明为B类的友元(friend class A),A类内可以访问B类中的所有成员。把一个类声明为另一个类的友元。原创 2023-06-30 20:01:15 · 413 阅读 · 1 评论 -
Linux 学习记录42(C++篇)
用于实例化类对象时,系统自动调用功能:实例化类对象时,给类对象开辟空间和初始化格式:类名(形参列表)函数体;例: class test {private ://私有的成员属性/方法 int a;string b;double c;public ://公有的成员属性/方法 /*有参构造和无参构造构成函数重载*/ test(int a , string b , double c) {//有参构造 this -> a = a;} test() {原创 2023-06-29 19:34:16 · 521 阅读 · 0 评论 -
Linux 学习记录41(C++篇)
引用:是C++对C的一个重要的扩充引用可以理解为给变量取别名不会额外开辟空间左值一般是变量,栈区、堆区、.bss、.data右值一般是常量或者是临时值(4+5),.ro定义格式:变量类型 &引用目标=要引用的变量;int a = 99;return 0;原创 2023-06-28 18:51:42 · 385 阅读 · 0 评论 -
Linux 学习记录40(C++篇)
1. cout是由ostream提供的C++中的标准输出流类2. cout还包含在std中,cout就是一个类对象istream类中提供的输入流对象1. 不需要加格式符2. 不能加endlreturn 0;命名空间的作用:为了解决命名污染问题(命名冲突问题)查看std: 按住ctrl点击std//用于全局导入命名空间内的所有标识符 using std :: cout;原创 2023-06-27 19:02:06 · 1202 阅读 · 0 评论 -
Linux 学习记录39(C高级篇)
enum 类型名 {枚举项 1 , 枚举项 2 , 枚举项 3 , . . . 枚举项n , };1. 枚举项能直接使用2. 枚举项默认整形常量3. 能够给枚举项直接赋值4. 枚举项值是按顺序递增的5. 枚举是适用于typedef类型重定义的6. 枚举一般用于数据间有相互关系并连续的return 0;使用场景:用于是v要使用连续的常量,并且每个常量特殊含义的时候Makefile 是一个名为Makefile的工程管理文件。原创 2023-06-25 20:16:32 · 779 阅读 · 0 评论 -
Linux 学习记录38(C高级篇)
字符串列表在的是变量可能出现的所有情况,for循环执行的次数和字符串的个数有关,变量要顺序遍历结果字符串列表中的每一种情况,for循环才结束。函数名 参数1 参数2 参数3。=用以输出连续的序列=原创 2023-06-23 08:34:30 · 952 阅读 · 0 评论 -
Linux 学习记录37(C高级篇)
所以shell擅长执行指令,不擅长做运算操作,所以通常需要借助工具完成运算。格式:变量名=$[表达式1,表达式2,表达式3…原创 2023-06-20 20:34:28 · 1253 阅读 · 0 评论 -
Linux 学习记录36(C高级篇)
存储类型 数据类型 变量名;存储类型 : auto const static volatile register externshell是一个弱数据类型的语言,都是当作字符串处理的shell脚本中定义变量时,等号两边不能有空格变量名 = 变量的值变量名 = '变量的值' 变量名 = "变量的值" #!原创 2023-06-19 19:02:19 · 1569 阅读 · 0 评论 -
Linux 学习记录35(C高级篇)
1. 压缩效率:xz>bz2>gz2. 压缩时间:xz>bz2>gz适用场合:xz一般用于需要将文件归档(长时间不再去使用),gz一般用于即时的文件传输。原创 2023-06-16 18:47:29 · 2192 阅读 · 0 评论 -
Linux 学习记录33(网络编程篇)
上下文切换: 从A进程切换到B进程,A进程的资源要完全替换成B进程的,是一个耗时操作。不需要创建新的进程和线程,减少系统的资源开销,减少上下文切换的次数。上下文: 运行一个进程所需要的所有资源。IO多路复用(重点)原创 2023-06-12 19:55:10 · 324 阅读 · 0 评论 -
Linux 学习记录31(网络编程篇)
仅仅是将对端的IP和端口号记录到内核套接字中。记录后只能与记录的端口和IP进行通信。此时UDP只能与记录的对端进行通信。TCP中这个函数只能成功一次。UDP中这个函数可以成功多次。原创 2023-06-08 21:00:19 · 368 阅读 · 0 评论 -
Linux 学习记录30(网络编程篇)
*输入打印的错误类型 打印错误信息,行,具体函数*/ # define ERR_MSG(msg) do {/*输入打印的错误类型 打印错误信息,行,具体函数*/ # define ERR_MSG(msg) do {/*输入打印的错误类型 打印错误信息,行,具体函数*/ # define ERR_MSG(msg) do {do/*输入打印的错误类型 打印错误信息,行,具体函数*/ # define ERR_MSG(msg) do {fprintfstderr。原创 2023-06-07 21:10:23 · 236 阅读 · 0 评论 -
Linux 学习记录29(网络编程篇)
windows+R 输入cmd回车输入ipconfig然后回车或者ipconfig/all查看IP+/all。原创 2023-06-06 18:39:50 · 246 阅读 · 0 评论 -
Linux 学习记录27(进程线程篇)
当子进程结束时,父进程会拿到哟个SIGCHLD的信号,我们可以将该信号进行捕获,在该信号对应的信号处理函数中手动回收子进程的资源。所谓信号,就是软件模拟的中断的功能,信号是软件实现的,而中断是硬件实现的。异步通信:进程在要执行前不需要一直阻塞等待其他进程结束。同步通信:进程在要执行前一直阻塞等待其他进程结束。ipcs -想要删除的信息 信息ID。可以使用kill -l查看所有信号。系统5又提供了三种进程间通讯。原创 2023-06-02 20:48:22 · 95 阅读 · 0 评论 -
Linux 学习记录26(进程线程篇)
无名信号量维护了一个value,生产者线程每生产一个,value就会自增1,消费者线程每消费一个,value就会自减1,当value为0时,生产者线程可以执行,但是消费者线程,阻塞等待。在linux系统中,如果有多个线程需要同步的话,如果只使用无名信号量来完成,需要定义多个无名信号量,使用起来比较麻烦,此时我们可以采用系统开发的条件变量来完成这个工作。条件变量维护了一个队列,可以将多个线程先放入该队列中进行休眠,当有信号唤醒该线程时,那么该线程进入执行状态。已经知道线程的执行顺序,并且线程是顺序执行的。原创 2023-06-01 19:47:08 · 151 阅读 · 0 评论 -
Linux 学习记录25(进程线程篇)
与斥是多个线程共同强占临界资源的过程中,只有抢占成功,就可以操作临界资源,如果没有抢占成功,就不能操作临界资源,这里没有体现按顺序进行使用临界资源问题,可能在某个线程执行多次后,才抢占到临界资源,也有可能永远枪不到,还有可能是多个线程同时抢到,为了解决这个问题,我们引入互斥机制,,不依赖于终端而存在因为在终端上运行的进程,随着终端被关闭,进程也随之关闭而且一般不会被打断,需要将其执行放在根目录下。,默认是结合态,结合态的线程,结束后需要使用pthread_join回收资源。所谓守护进程,其实就是一个服务,原创 2023-05-31 18:36:54 · 119 阅读 · 0 评论 -
Linux 学习记录24(进程线程篇)
进程创建过程,是通过拷贝父进程得到的,进程的内核空间中是通过task_struct结构体表述的,新经常在创建过程中,直接拷贝父进程的该结构体得到,只需要稍微修改即可,保留了父进程的的大部分遗传信息。2进程(kthreadd进程):也称为调度进程,这个进程也是由0号进程产生,他的任务是完成任务调度工作。1进程(init进程):他是在0号进程产生,这个进程主要用于硬件的初始化工作。0进程(idel进程):是linux系统启动后的第一个进程。进程6041,进程6042,进程6043,进程6044。原创 2023-05-30 19:10:22 · 175 阅读 · 0 评论 -
Linux 学习记录23(IO篇+静/动态库+多进程理论)
在使用gcc编译时,会将你的我加你和库文件一起生成一个可执行文件,但是程序体积较小,但是在执行程序时,需去寻找该库的位置,效率较低,但是可以由多个文件共享一个文件,动态库又称共享库。静态库只,将xxx.c文件编译生成的一个库名为.a的二进制文件,当需要使用该库中的某个函数时,直接调用该函数即可,前提是编译时链接了该库。将xxx.c文件编译生成的一个库名为.a的二进制文件,当需要使用该库中的某个函数时,直接调用该函数即可,前提是编译时链接了该库。命令:gcc main.c -L ./ -ladd -I ./原创 2023-05-29 20:05:54 · 198 阅读 · 0 评论 -
Linux 学习记录22(IO篇)
并没有产生新的文件描述符,只是在程序中多了一个变量,记录该文件描述符而已,所以无论操作哪个变量,都是对该文件描述符的操作,使用变量拷贝文件描述符,其实。原创 2023-05-26 19:01:30 · 224 阅读 · 0 评论 -
Linux 学习记录21(IO篇)
可以看到存入的是一个不能识别的二进制数据。原创 2023-05-25 19:49:14 · 266 阅读 · 0 评论 -
Linux 学习记录19(数据结构篇)
节点定义 typedef struct node {char data;//数据 struct node * left;//左分支 struct node * right;//右分支 } btree;原创 2023-05-27 10:47:07 · 151 阅读 · 0 评论 -
Linux 学习记录20(IO篇)
1> 系统调用:从用户空间到内核空间的一次切换过程不同的系统,进入内核空间的方式是不同的,所以,接口函数有所不同但是,只要从用户空间,切换到内核空间,就会发生系统调用,效率比较低2> 库函数:库函数是对系统调用的封装: 缓冲区+系统调用库函数有缓冲区,系统调用没有缓冲区什么是FILE结构体在Linux中,FILE结构体是一个用于管理文件I/O操作的结构体。它包含有关打开文件的信息,如文件描述符、缓冲区指针、读/写位置和错误状态等。在C语言中,FILE结构体通常以指针形式进行处理,用于访问文件。原创 2023-05-24 19:01:51 · 284 阅读 · 0 评论 -
Linux 学习记录18(数据结构篇)
哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表int data;//数据域 struct node * next;//指针域 } hash_type;原创 2023-05-27 10:53:00 · 66 阅读 · 0 评论