04 2023 档案
摘要:学习蓝牙协议栈可以看其交互数据,所用到的工具如下: air packet sniffer:如ellisys(是个仪器) 这是一个仪器,能抓取两个蓝牙设备之间的数据;将这个仪器和PC相连,在PC上通过ellisys、frontline、wireshark等软件可以看到两设备之间的交互数据。 hw hc
阅读全文
摘要:队列:也是一个线性表(即包括顺序队列和链式队列),先进先出,但限制在两端进行插入和删除 队尾:进行存入操作的一端 队头:进行删除操作的一端 顺序队列: //sqqueue.h #ifndef _SQ_QUEUE_H_H #define _SQ_QUEUE_H_H #define N 6 typede
阅读全文
摘要:线性表: 顺序表:数组 链表:链表 栈:也是线性表。特点是先进后出,只能从栈顶入栈和出栈。 链式栈: 链式栈就是链表的头插法,由于是从头部插入,所以先进的后出 顺序栈: //sqstack.h #ifndef _SQ_STACK_H_ #define _SQ_STACK_H_ typedef int
阅读全文
摘要://sqlist.h //sqlist/h #ifndef _SQLIST_H_ #define _SQLIST_H_ typedef int data_t; #define N 128 typedef struct{ data_t data[N]; int last; }sqlist, *sqli
阅读全文
摘要:数据结构的三个方面: 1. 数据的逻辑结构(可以脱离编程语言,是一种思维): a . 线性结构:一对一,即一个节点只有一个前驱和一个后继 线性表、栈、队列 b. 非线性结构: 树:一对多,即一个节点有一个前驱和多个后继 图:多对多,即一个节点有多个前驱和多个后继 2. 数据的存储结构(要依赖编程语言
阅读全文
摘要:linux应用编程其实都是通过调用c库,c库给上层应用提供支配内核(进程、网络等)干活的接口 驱动: 在内核中,有个驱动链表管理类所有的设备驱动,驱动插入链表的顺序由设备号检索; 设备号分为主设备号和次设备号,主设备号被系统用来确定要调用哪个驱动程序(设备类型:如USB设备,硬盘设备),主设备号相同
阅读全文
摘要:文件系统是操作系统明确文件在储存设备上的组织方法。即怎样组织文件,将其存入储存设备中。 所以不同的组织方式,就有不同的文件系统。如常见的文件系统有FAT、EXT1/2/3、NTFS 分区: 分区是指将硬盘中的一个整体空间划分为多个相互独立的分区,以便管理或提高其效率。 windows中,分区很随意,
阅读全文
摘要:目的: 在Ubuntu上编译出树莓派的内核。 由于linux内核非常庞大,大约有1.4w个c文件,一千多万行代码,但是linux内核编译出来才才几M,这是为什么呢? 因为linux是开源的,支持多平台、多架构。所以里面包含了很多平台的代码。我们现在要的是树莓派这个平台上的内核,所以其他的平台代码就是
阅读全文
摘要:linux内核并非操作系统,是操作系统的基本,负责对计算机硬件进行管理,并且提供了使用这些硬件资源的通用接口。 主要管理如下几个方面: 1. 内存管理:追踪记录有多少内存存储了什么以及存储在哪里 2. 进程管理:其实就是对cpu的管理,即确定哪些进程可以使用中央处理器、何时使用以及持续多长时间 3.
阅读全文
摘要:软链接: 1. 软连接是一个特殊的文件,类似windows的快捷方式。 2. 软连接文件里面保存的要链接的那个文件的位置。 3. 软连接文件不占磁盘空间。 制作软连接: ln -s 源文件名 软连接名 硬链接: 硬链接文件要占磁盘空间,大小和源文件相同,且和源文件的i节点相同,只是i节点中的链接数增
阅读全文
摘要:什么是交叉编译? 交叉编译是在一台机上编译,编译生成的可执行程序在另一台机上运行。 如c51单片机的可执行程序,在pc机上编译,下载到C51上执行 为什么需要交叉编译? 1. 因为目标机上资源贫乏,无法运行我们的编译器。 难道由编译器的平台就不用编译器了吗(如树莓派)? 不对,因为树莓派的操作系统也
阅读全文
摘要:现study目录有三个目录:src、include、obj src目录下有main.c、func1.c include目录下有func1.h //main.c #include "func1.h" #include <stdio.h> int main() { func1(); printf("th
阅读全文
摘要:什么是函数库: 库文件是函数的具体实现,库文件是通过目标文件(.o)制作成的,所以库文件是多个目标文件的集合。 生成可执行程序分为四个阶段:预处理、编译(.s)、汇编(.o)、链接 库文件就用于链接阶段。 如果一个项目有多个源程序,会将这些源程序经过编译器生成对应的目标文件(这时就有多个源文件对应的
阅读全文
摘要:处理器(CPU)的功能: 1. 运算: a. 算数运算(加减乘除) b. 逻辑运算(如if else)、 2. 控制硬件 地址空间: 单片机能够读写储存器,但她的地址范围是有限的。(如32bit的ARM能够读写的地址空间为4G) 运算: ROM只读存储空间,掉电不丢失数据; RAM可读可写,掉电会丢
阅读全文
摘要:shell是一个命令解释器。 ./hello,shell将这条命令解释为将可执行文件hello加载进内存。程序就从main函数处开始运行,这个程序就变成了一个进程,内核就给它分配4G的虚拟地址空间。 程序操作的所有地址都是虚拟地址,然后通过MMU可以将虚拟地址转换成物理地址。 内存只能做到存储数据,
阅读全文
摘要:全局变量和静态全局变量未初始化时,默认值为0; 局部变量未初始化时,其值是未知的;静态局部变量未初始化时,默认值也为0; 所以在定义局部变量的时候最好初始化。
阅读全文
摘要:寄存器是什么? 寄存器就是单片机中的一小段内存单元(它有地址),如stc89c51 8位单片机,它有TCON寄存器,TCON是定时器/计数器的控制寄存器。 8位单片机,说明它的地址总线宽度为8位,范围为0x00—0xFF。 SFR:特殊功能寄存器 TCON特殊功能寄存器,它的地址为0x88,配置这个
阅读全文
摘要:定时的本质:每经过一个机器周期,就加1 时钟周期:晶振频率的倒数 机器周期:n倍的时钟周期,不同单片机,n可能不同 如stc89c51单片机,晶振频率为11.0592Mhz,n一般为12,所以一个机器周期为1/11059200*12 = 1.085us ,即每加一就要花费1.085微秒
阅读全文
摘要:#include <stdio.h> #include <stdlib.h> struct Node { int value; struct Node *next; }; //增 struct Node *increaseFromBehand(struct Node *head, int data,
阅读全文
摘要:结构体: struct Student { char name[32]; int age; int sex; char add[32]; }; 上面只是一种数据类型(同int、char基本类型一样),表示是一个结构体,不占用地址空间,只有在定义结构体变量时才分配空间,即struct Student
阅读全文
摘要:int main() { char str1[] = {'h','e','l','l','o'}; char str3[] = "hello"; char str4[5] = "hello"; char *str2 = "hello";//'\0' int len1 = sizeof(str1)/s
阅读全文
摘要:32位的cpu,地址总线即为32位,它的寻址能力就为2的32次方,即4GB。 cpu可以在0—4G的地址空间对内存、外设进行读写操作 系统总线: 1.地址总线: cpu用来寻址的 2.控制总线: 传输cpu的控制信息 3.数据总线: 同cpu进行数据传输的 虚拟地址(逻辑地址): 程序在启动后,内核
阅读全文