- 博客(37)
- 收藏
- 关注
原创 20260728
SPI是一种高速全双工串行通信总线,相比半双工的I2C具有更高传输速率(几M至几十M)。其四线制包含片选线(CS)、主入从出线(MISO)、主出从入线(MOSI)和时钟线(SCLK)。SPI通过CPOL(时钟极性)和CPHA(时钟相位)配置4种工作模式,决定时钟空闲状态和数据采样边沿。以ADXL345加速度传感器为例,它采用SPI接口,具有13位分辨率,量程0-8191,工作电压3.3V。SPI通过片选信号选择从机,支持高速数据传输。
2026-07-28 18:15:56
158
原创 20260727
ADC(模拟-数字转换器)是将模拟信号转换为数字信号的器件。iMX6ULL的ADC分辨率为12位(0-4095级),基准电压为3.3V。其工作原理采用逐次逼近法:通过多次比较待测电压与参考电压(量程),逐步逼近并生成数字信号。逐次逼近法是多数ADC的核心转换方式,通过二进制比较序列实现高精度量化。
2026-07-27 17:47:55
163
原创 20260724
I2C总线是一种串行同步半双工通信协议,采用MSB高位先行的数据传输方式,需使用4.7KΩ-10KΩ上拉电阻。设计时需为SCLK和SDA线分别加上拉电阻。通信时序包括起始信号(下降沿)、地址/数据帧传输和应答机制,写操作包含7位从机地址+写位(0),读操作需重发起始信号并切换为读位(1)。标准速率为100KHz,快速模式达400KHz。地址帧中7位为从机地址,第8位指示读写方向(0写/1读),第9位为应答位。AT24C02容量为2Kbit(256字节),设备地址为0x1010加上引脚配置位(a2a1a0)和
2026-07-24 19:05:15
222
原创 20260723
EPIT(增强型周期中断定时器)是32位向下计数的PPI私有中断定时器,具有自动重装载功能,适用于精准周期定时。GPT(通用目的定时器)是32位向上计数的SPI共享中断定时器,支持周期定时、输入捕获和输出比较功能。两者均为32位定时器,但计数方向不同(EPIT向下、GPT向上),且中断类型各异(EPIT为私有中断,GPT为共享中断)。
2026-07-23 18:27:24
192
原创 20260722
本文总结了时钟系统相关知识点及配置实践:1) 解析PLL(锁相环)、Prescaler(预分频器)、PFD(相位分数分频器)的倍频/降频功能;2) 实践SoC时钟配置,包括设置ARM内核528MHz主频、配置PLL2/PLL3的8个PFD、建立3个根时钟源;3) 说明GIC中断控制器支持256级优先级,而i.MX6ULL实际实现32级中断优先级。内容涵盖时钟架构原理与具体芯片配置要点。
2026-07-22 17:49:49
213
原创 20260721
本文介绍了嵌入式系统中几个关键概念:1. GIC(通用中断控制器)用于统一调度所有中断,支持1024个中断,分为SPI、PPI和SGI三类;2. 协处理器是辅助CPU的专用硬件单元,Cortex-A7内核有16个协处理器;3. 异常向量表重映射的原因(避免0地址风险)和方法(修改VBAR寄存器);4. i.MX6ULL处理器支持160个中断。这些概念对理解ARM架构的中断处理机制具有重要意义。
2026-07-21 19:06:18
204
原创 20260720
本文介绍了ARM开发工具链和程序内存段的基本知识。主要内容包括:1)常用工具功能:gcc负责代码编译转换,ld进行目标文件链接,objcopy转换文件格式,objdump反汇编机器码;2)关键内存段作用:.text存储代码指令,.bss存放未初始化数据,.data存储初始化变量,.rodata存放只读常量,common段处理未初始化全局变量;3)i.MX6ULL启动流程:初始化异常向量表→处理复位中断→设置工作模式和栈指针→清除.bss/common段→跳转main函数。这些知识对理解ARM架构程序编译和运
2026-07-20 18:53:33
194
原创 20260717
IMX6ULL点灯需配置5个关键寄存器:1)CCM_CCGR1开启GPIO1时钟;2)IOMUXC_SW_MUX_CTL_PAD复用引脚为GPIO功能;3)IOMUXC_SW_PAD_CTL_PAD配置电气属性(上拉/推挽/中速模式);4)GPIO1_GDIR设方向为输出;5)GPIO1_DR设数据电平。配置顺序必须为:时钟→复用→电气→方向→数据,缺一不可。每个寄存器对应不同功能,共同实现GPIO控制LED亮灭。(99字)
2026-07-17 19:06:14
237
原创 20260715
本文摘要: RISC(精简指令集)与CISC(复杂指令集)对比:RISC简单高效、成本低;CISC性能强但复杂度高。 Cortex-A7内核含16个通用寄存器(R0-R15),关键寄存器如PC(程序计数器)、LR(链接寄存器)、SP(栈指针)及状态寄存器(CPSR/SPSR)各有特定功能。 MMU管理虚拟内存映射,Cache(分数据/指令缓存)加速数据访问;NorFlash支持字节寻址,NandFlash以块为单位访问。 ARM处理器7种工作模式包括User、FIQ、IRQ等,异常处理流程涉及状态保存、模式
2026-07-16 18:10:08
219
原创 20260716
摘要: 本文总结了ARM汇编关键知识点:1) 立即数需满足0-0xFF范围或特定二进制格式;2) 跳转指令差异(b无返回地址,bl保存到lr,bx通过寄存器跳转);3) 栈类型分空减/增、满减/增四种,ARM采用满减栈;4) ldr/str用于寄存器与RAM数据交换,ldmfd/stmfd实现栈操作;5) bic/orr分别用于位清0与置1,mrs/msr读写特殊寄存器;6) 传参规则:汇编→C时,≤4参数用R0-R3,超4用栈,返回值存R0;C→汇编则通过寄存器传参,R0返回结果。
2026-07-16 17:51:54
170
原创 无名管道、有名管道、信号、信号处理
进程间通信(IPC)是指在不同进程之间交换数据或信息的机制。消息队列允许一个或多个进程向队列中写入消息,同时允许一个或多个进程读取这些消息。提供高效的进程间通信,但需要同步机制(如互斥锁)来避免数据竞争。只能用于具有亲缘关系的进程间通信(如父子进程)。提供一种在不同主机上的进程之间进行通信的机制。提供一种同步机制,用于控制对共享资源的访问。(20):挂起进程(如 Ctrl+Z)。(2):中断信号(如 Ctrl+C)。(3):退出信号(如 Ctrl+\)。提供高效的进程间通信,但需要同步机制。
2025-02-24 19:42:21
969
1
原创 线程的分离属性、互斥锁、信号量
具有阻塞功能,线程不结束,会一直等待线程结束,回收线程空间后再继续执行。如果资源数为 0,再次申请将会阻塞等待,直到有资源才会继续执行。为防止多线程操作全局变量导致的资源竞争,需要引入互斥锁的概念。:存在一个循环等待链,每个线程都在等待下一个线程持有的资源。避免死锁的方法:保持一致的加锁顺序,使用非阻塞加锁。功能:申请信号量资源(资源数 - 1)。功能:释放信号量资源(资源数 + 1)。线程的分离属性决定了线程结束时的行为。:线程已经持有资源,但又请求新的资源。):线程结束后,操作系统自动回收资源。
2025-02-23 23:27:29
1662
原创 进程&线程的创建、退出、回收
子进程已经结束,但父进程尚未读取子进程的状态信息时,子进程的状态信息仍然保留在系统中。线程位于进程空间内部,共享进程的文本段、数据段和堆区。:要回收的子进程的 PID(-1 表示任意子进程)。:文本段、数据段、堆区与进程及进程内的其他线程共享。特点:子进程是父进程的副本,拥有独立的内存空间。特点:不创建新进程,直接替换当前进程的代码。线程切换在进程空间内部完成,资源开销较小。线程切换在进程空间内部完成,资源开销小。功能:在调用函数的进程中创建一个线程。功能:在当前进程空间中执行新的程序。
2025-02-21 18:45:52
1629
原创 进程创建、进程调度、进程消亡
僵尸进程是指在进程结束后,空间未被回收产生原因:父进程未调用 wait() 或 waitpid(),或忽略了 SIGCHLD 信号。避免方法:1、让父进程先结束,子进程会成为孤儿进程,被init进程收养,子进程结束时,init进 程回收子进程空间 子进程结束2、父进程回收子进程空间(wait或者waitpid回收子进程空间。
2025-02-20 23:32:01
382
原创 文件IO、目录IO
常见的文件 I/O 操作包括 open()、read()、write()、lseek() 等,这些系统调用提供了访问文件、读取文件内容、写入数据和操作文件指针等功能。VFS 提供了很多与文件操作相关的函数,如 vfs_read()、vfs_write()、vfs_open() 等。在内核中,lseek() 系统调用通过 vfs_llseek() 来实现,它会根据文件的类型和文件系统的不同来处理文件偏移操作。open() 函数返回一个非负整数的文件描述符(文件句柄),如果出错,则返回 -1。
2025-02-17 23:16:39
430
原创 标准IO的学习
保存文件本身的数据(数据可能无法在终端显示或在终端显示乱码)(8)fread:从流中读取nmemb个对象,存放ptr指向的空间中,每个对象size字节。(7)fwrite:向流中写入ptr指向的nmemb个元素,每个元素size字节。可以在linux中船舰一个脚本:run.sh------->将make。(1)fputc:向stream流中写入 字符c。(2)fgetc:从stream流中接收一个字符。(3)fputs:将字符串写入stream流中。(5)fscanf:从流中读取格式化的字符串。
2025-02-15 20:03:06
294
原创 Linux软件编程:IO编程
d directory 目录文件 存放文件信息 目录IO、文件IO。l link 链接文件 与某个指定文件链接 链接IO、文件IO。4. 不同类型文件的操作方式: 标准IO 文件IO 目录IO 链接IO。2. 文件IO是一种没有缓存的IO 效率低 实时性好。
2025-02-14 20:11:14
510
原创 二叉树、哈希表、希尔排序
1. 二叉树中所有的分支节点都有左右孩子,且所有叶子节点都在同一层。数据通过哈希算法映射成唯一键值,存储在键值对应的位置,读取时可以根据键值快速读取。1. 从节点出发,离最远的叶子节点的距离称为该节点的高度。1. 从根节点出发,到达节点的距离称为节点的深度。1. 根节点:树形结构中最顶层的节点,只有后继,没有前驱。1. 二叉树所有的节点按照顺序排列。4. 层序遍历(逐层从左至右遍历)哈希算法:将数据根据哈希算法映射成唯一的键值。1. 前序遍历(根左右)不同的数据通过哈希算法映射出来的键值相同。
2025-02-13 19:50:35
671
原创 栈(顺序栈、链式栈)和队列(循环队列、链式队列)
3. 空栈:栈针指向要插入的元素的位置。4. 满栈:栈针指向栈顶元素所在的位置。1. 增栈:栈的增长方向自低向高。2. 减栈:栈的增长方向自高向低。栈和队列只允许在固定位置取出或者插入数据。2. 栈底:不允许入栈出栈的一端称为栈底。1. 栈顶:允许入栈出栈的一端称为栈顶。4. 出栈:将数据从栈顶位置取出。3. 入栈:将数据插入栈顶位置。5. 栈针:栈顶元素所在的位置。3. 入队:将元素插入到队列中。栈和队列是一种特殊的表状结构。4. 出队:从队列中取出元素。1. 队头:出队的位置。2. 队尾:入队的位置。
2025-02-11 20:19:19
255
原创 单向链表、段错误调试方法
段错误产生时可以生成一个包含段错误信息的core文件,根据gdb工具查看段错误产生时的堆栈信息能够直接定位到段错误产生的位置。走一圈回到相遇点,计数器的值即为环长。两个指针相遇的位置即为环入口位置。快指针走到末尾时,慢指针即停留在链表中间位置。文件(需要修改系统配置,只需要第一次修改,后续无需再次修改)一个指针从链表头开始走。一个指针从相遇点开始走。快指针走到末尾,慢指针刚好走到倒数第。将后一个节点的数据覆盖当前节点。快指针走一次,慢指针也走一次。6.不知道链表头结点的情况下删除链表中间节点。
2025-02-09 21:40:06
623
原创 Makefile工程管理工具、虚拟机联网设置、链表
二、虚拟机联网设置1.将虚拟机设置为NAT模式2. 将虚拟机网卡设置为自动获取IP地址 1. 打开网络配置文件 sudo vim /etc/network/interfaces 2. 修改为如下内容 3.保存退出3.重启网络服务 sudo /etc/init.d/networking restart4.测试与百度是否能够连通 ping www.baidu.com 如果与百度连通:1.数组和链表区别
2025-02-07 18:59:25
814
原创 数据结构、顺序表、gdb调试工具
1.概念:程序 == 数据结构 + 算法2.衡量程序好坏的标准:1.可读性2.稳定性3.扩展性4.时间复杂度(数据量增长与程序运行时间增长所呈现的比例函数关系称为时间渐进复杂函数也称为时间复杂度)5.空间复杂度3.数据结构:存储和操作数据对象的一种结构,用合理的数据结构能够减小程序的时间复杂度和空间复杂度4.分类:1.逻辑结构线性结构(表)非线性结构(树、图)2.存储结构顺序存储、链式存储、索引存储、散列存储5.数据结构:顺序表。
2025-02-06 18:59:52
506
原创 共用体、枚举、
2.结构体成员变量空间是独立的,共用体成员变量空间是共享的。存放的数据空间超过申请的空间大小,操作超过申请空间大小的数据,称为内存溢出、内存越界。2.栈区:存放局部变量,变量定义时申请空间,超过作用域回收空间。1.内存低地址存放低数据位称为小端。2.内存低地址存放高数据位称为大端。语言被执行后,操作系统分为不同的区域(堆和栈用来存放数据的区域)5.堆区空间很大的,可以用来存放超过。6.堆的增长方向由低到高。7.栈的增长方向由高到低。typedef等价于rename。3.内存溢出、内存越界。
2025-01-23 18:52:38
243
原创 指针和一维数组、二维数组的关系, 数组作为函数参数,构造数据类型
1.结构体成员变量只能存放在内存地址为自身基本类型长度整数倍的内存单元中。2.结构体整体的大小必须为最大类型长度的整数倍。1.结构体变量访问成员变量。2.结构体指针访问成员变量。数组的数组名是指向数组第一个元素的指针常量。数组的数组名是指向数组第一行元素的数组指针。1.构造数据类型:结构体、共用体、枚举。6.结构体作为函数参数。2.结构体变量的定义。4.字符型二维数组作为函数参数。3.一维数组和二维数组的本质。
2025-01-22 20:25:16
456
原创 二级指针、const指针、void指针、指针数组和数组指针
定义指针变量a,占8个字节空间,指针指向20个字节空间的一个数组。定义一个5个元素的数组,占40个字节的空间,每个元素是整形指针。1.函数体内部想修改函数体外部指针变量的值,需要传递指针变量的地址即二级指针。2.字符型指针数组:char *str[5];1.指针数组:int *a[5];2.指针数组的数组是二级指针。1.指针数组是数组,数组的每个元素是指针。2.数组指针是指针,指针指向一个数组。指向一级指针变量的指针。4.指针数组 和 数组指针。2. const指针。
2025-01-21 23:04:50
408
原创 指针变量、指针作为函数参数、指针与数组的关系、数组作为函数参数
地址传递:将实参的地址给了形参,形参是指向实参的指针,可以利用形参修改实参的值。2.函数体内部想修改函数体外部变量值的时候使用地址传递。1.未经初始化的指针,或指向一段被释放过空间的指针称为野指针。2.提供一种对变量的间接访问,通过找到变量在内存中的位置来操作变量。--:向内存低地址偏移指向数据类型大小个字节空间。2.表达式的值为:变量在内存空间中的首地址。2.地址:用来区分内存中不同字节的编号,称为地址。1.&:获得变量在内存空间中的首地址。个字节空间,存放指针(地址)的变量,有时也会简称为指针。
2025-01-19 19:20:19
935
原创 函数的传参、递归函数、预处理命令
实参将值传递给形参函数体内部想使用函数体外部变量值的时候,使用值传递形参是实参的副本,形参的变化不会影响实参的变化。
2025-01-18 20:46:03
815
原创 函数的定义、变量的作用域、变量的存储类型
5.全局变量存放在静态区,全局变量可以和局部变量重名,局部变量会在作用域内将全局变量隐藏。函数体内部想使用函数体外部变量值的时候,使用值传递。2.局部变量的作用域在离定义该变量最近的大括号内。1.从终端接收一个年份,封装一个函数实现判断年份,如果为闰年返回。局部变量执行到变量定义时分配空间,超过变量作用域回收空间。封装一个函数传入两个数的数值,返回这两个数的最大公约数。封装一个函数传入两个数的数值,返回这两个数的最小公倍数。从终端接收一个数,封装一个函数,判断该数是否为水仙花数。2.可以减少重复性代码。
2025-01-17 21:53:51
343
原创 switch嵌套结构、循环结构、辅助控制语句
(2)continue:结束本次循环。(3)return:结束当前函数。从终端接收一个年份,判断概念为闰年还是平年。普通闰年(4的倍数,却不是。的值,根据公式计算result的结果并打印。goto常用于出错处理。1.用双for循环实现9*9乘法表。编写程序,从终端接收。
2025-01-13 19:22:48
687
原创 scanf、puts、gets、if分支,switch分支
1.scanf():从终端接收字符串并转换为对应的数据形式存放到内存空间中(1).接收非输入控制符 scanf("m");(2).接收输入控制符%d 按照int类型接收%ld 按照long类型接收%f 按照float类型接收%lf 按照double类型接收%s 按照字符串接收%c 按照char类型接收(可以接收到' '和'\n'字符的)
2025-01-12 18:21:23
715
原创 自学嵌入式第3日总结
m : math的缩写,链接数学库。%nd n:域宽,不足域宽用空格补齐。%.mf m:保留小数点后m位有效数。%0nd 0:不足域宽高位用0补齐。3.输入三角形的三个边长,求周长和面积并输出。%-nd -:左对齐。1.printf()打印输出的几种格式。2. printf()打印表达式的值。
2025-01-11 19:01:37
201
原创 Linux的基本命令、目录结构、C语言开发相关软件
touch /test1/filename1.txt /test2/filename2.txt 同时给不同目录创建不同文件。ls filename1 filename2 filename3 同时查看不同目录下的所有文件。3. rmdir命令 :删除空目录文件 (注:若目录文件不为空,使用该命令会报错)绝对路径:登录用户不同,所在目录不同,相同路径不会出现不同的含义。3.相对路径:登录用户不同,所在目录不同,相同路径会出现不同的含义。用户在家目录下创建文件、修改文件、删除文件权限不受限制。
2025-01-09 20:14:45
1822
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅