自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 《U-Boot 命令记不住?这一张速查表够用了》

U-Boot是嵌入式系统中广泛使用的开源bootloader,负责硬件初始化并引导Linux内核。其镜像u-boot.imx由IVT、DCD、Boot Data和用户程序组成,通过Boot ROM加载至OCRAM执行,完成DDR初始化后将完整U-Boot载入DDR运行。启动流程分为四阶段:Boot ROM检测启动设备并加载头部;SPL(或DCD)初始化内存与外设;U-Boot主程序加载zImage和设备树;内核启动后挂载根文件系统。关键点包括:SD卡1KB偏移写入、分区对齐、FAT32用于快速加载,以及依赖

2026-10-20 18:16:43 261

原创 嵌入式内核打怪:字符设备驱动通关手册

顺序:先pinctrl把引脚配置为GPIO功能,再使用GPIO子系统控制引脚。用于实现read阻塞等待数据,没有数据的时候进程休眠,有事件的时候唤醒进程。也可以使用class/device实现自动创建。sysfs是内存中的虚拟文件系统,挂载在。优点:不需要重新烧写内核,调试方便。,2.6版本以后尽量不使用。

2026-10-19 18:11:56 203

原创 一文读懂 i.MX6ULL Linux 系统移植

系统移植是将Linux系统部署到开发板的关键步骤,主要包括U-Boot、zImage内核镜像、设备树文件(dtb)及rootfs文件系统的烧写。通过SD卡、EMMC或TFTP+NFS等方式实现,其中SD卡适用于开发调试,EMMC用于量产,TFTP/NFS模式则便于快速迭代开发。开发板基于i.MX6ULL芯片,支持多种启动方式(如USB、SD、EMMC),需正确配置拨码开关与网络参数。烧写工具如mfgtool(Windows)或脚本(Ubuntu)可完成分区布局与镜像写入,最终通过uboot引导加载内核并挂载

2026-10-08 18:30:45 205

原创 裸机开发速记:启动流程|GIC 中断|时钟系统|UART 通信

ARM裸机启动流程包括设置异常向量表、重映射至链接地址、配置各模式栈、使能IRQ中断、清零BSS段、开启I-Cache并关闭D-Cache,最终跳转至C语言main函数。中断系统基于GIC V2,支持SPI、PPI、SGI三类中断,以GPIO按键为例,完成外设与GIC配置后,CPU进入IRQ模式处理中断。时钟系统通过PLL、PFD、Prescale实现528MHz内核时钟及多路总线时钟分频,外设使用前需开启时钟门控。UART采用异步通信,支持轮询与中断两种收发方式,需配置时钟、引脚复用、波特率及帧格式,适用

2026-09-29 17:36:28 446

原创 从零裸机开发 i.MX6ULL:点灯起步,搞定外部中断

i.MX6ULL裸机开发从点灯三阶段入手:汇编直接操作寄存器,C语言通过volatile封装地址,最终使用NXP SDK库简化配置。程序内存分为.text、.data、.bss等段,通过交叉编译工具链(gcc、ld、objcopy、objdump)完成编译、链接与烧录。GPIO外设统一遵循时钟开启、引脚复用、电气属性、方向设置四步流程。外部中断基于GIC V2架构,支持SPI/PPI/SGI类型,实现按键中断处理。

2026-09-20 18:14:21 515

原创 一文搞懂 ARM 汇编|指令、栈、C 混编、User 模式

本文系统阐述了学习ARM汇编的核心目的——编写启动代码,涵盖初始化异常向量表、设置栈指针、开启中断、切换至User模式及跳转至C语言main函数等关键任务。重点介绍了移位指令(LSR、ASR、ROR、LSL)、数据传送(MOV)、加法(ADD)、立即数规则、内存操作(LDR/STR)、位操作(ORR/BIC)、比较跳转(CMP/B/BX)、栈管理(STMFD/LDMFD)及汇编与C混合编程机制。特别强调通过MRS/MSR读写特殊寄存器实现模式切换,完整构建了从汇编到C的嵌入式系统启动流程基础。

2026-09-16 18:00:14 410

原创 速记!ARM 基础必学知识点汇总

本文系统介绍ARM架构核心知识:基于CISC与RISC对比,阐述ARM内核演进(ARM7~Cortex系列),解析AHB/APB总线结构;详述寄存器体系(含PC、LR、SP、CPSR等)及冯·诺依曼/哈佛架构差异;说明交叉编译原理与存储器类型;梳理处理器模式与异常处理流程,涵盖中断向量表机制与硬件自动状态切换。

2026-09-16 17:53:31 316

原创 《一文搞懂 51 单片机|硬件‑中断‑通信‑外设全解析》

本文系统总结51单片机核心知识点,涵盖嵌入式基础、位运算、GPIO控制、中断系统、定时器与PWM、通信协议(如UART、DS18B20单总线)等关键内容。重点解析最小系统构成、寄存器操作、中断流程、定时器初值计算及串行通信时序,强调位运算在IO控制中的应用,全面梳理高频考点,为学习与实践提供清晰框架。

2026-09-14 16:24:06 443

原创 零基础啃 51:硬件概念|位运算|数码管模块化实战

# 51单片机嵌入式基础 **嵌入式系统**:以应用为中心,基于计算机技术,软件可裁剪的专用系统。 **计算机五大组成**:控制器、运算器(CPU)、存储器、输入/输出设备。 **处理器类型**:MCU(单片机,集成外设)、MPU(仅CPU,需外接)、SOC(片上系统,如手机主控)。 ### 单片机最小系统 - 电源供电 - 晶振提供时钟 - 复位电路实现上电复位 ### 存储器 - **RAM(内存)**:运行时变量,掉电丢失,51单片机约512字节。 - **ROM(外存)**:程序代码,掉电不丢失,5

2026-09-10 18:34:52 284

原创 解密标准 IO 与文件 IO:用法、差异、踩坑合集

<think>我们根据内容生成一个不超过150字的摘要。内容涵盖标准IO与文件IO知识,重点在特点、区别、易错点。需要简洁概括。</think>本文总结了文件IO与标准IO的核心知识:文件IO基于系统调用,操作文件描述符,无用户缓冲区;标准IO封装于C库,操作FILE*流,自带缓冲区。对比两者在缓冲区、可移植性、适用场景上的差异,并提醒缓冲区刷新、fgetc返回类型等易错点。

2026-09-03 17:40:18 613

原创 吃透标准 IO:缓冲区、读写流程避坑完整总结

流指针含义对应硬件文件IO等价fdstdin标准输入流键盘0stdout标准输出流显示屏1stderr标准出错流显示屏2。

2026-08-28 19:15:28 653

原创 吃透基础算法:冒泡、选择、插入、快速排序 & 二分查找

每个算法均从四个维度展开,并配有,帮助你在理解原理的同时,也能动手验证、从容应对考试与面试。基础概念稳定排序:相等元素排序后相对顺序不变;不稳定则会改变。原地排序:仅使用常数级额外内存,不需要开辟新数组。二分查找。

2026-08-26 09:42:59 669

原创 栈与队列终极笔记|考点、差异、场景全覆盖

队列是。

2026-08-25 15:39:15 566

原创 吃透链表!单向链表与双向链表原理、API 及优缺点对比

本文总结了单向链表和双向链表的核心知识点。单向链表每个结点包含数据域和指向下一个结点的指针,实现头插、尾插、尾删等操作时需注意遍历方向;双向链表结点包含前后两个指针,支持双向遍历但操作更复杂。文章对比了两种链表的特性:单向链表内存开销小但操作受限,双向链表功能更强但指针维护复杂。最后指出常见错误点,如单向链表删除需找前驱、双向链表指针维护遗漏等,并提到内核链表通过结构体嵌入实现通用性。两种链表都需要注意内存管理,避免泄漏。

2026-08-24 18:42:57 239

原创 一文吃透顺序表和链表,面试常考点全梳理

摘要:顺序表(数组)和链表是两种基本线性结构,核心区别在于存储方式不同。顺序表通过连续内存存储元素,支持随机访问(O(1)),但插入/删除效率低(O(n));链表通过指针连接分散结点,插入/删除快(O(1)),但访问需遍历(O(n))。顺序表适合查询频繁的场景,链表适合频繁增删的场景。链表需注意内存泄漏问题,顺序表需防范越界风险。二者各有利弊,实际选型需结合具体操作需求和数据特点。

2026-08-21 14:31:05 344

原创 别再搞混堆和栈!C 语言内存管理与位运算完整学习笔记

本文摘要: 操作系统内存管理 4G虚拟地址空间分区:内核空间、栈区(自动管理)、堆区(手动管理)、数据区(.data/.bss/常量)、文本区 堆栈对比:栈自动管理、空间小、效率高;堆手动管理、空间大、需防泄漏 堆内存函数:malloc申请、free释放、calloc初始化申请 动态数组实现和内存泄漏防范 位运算 支持整型的6种位运算符:& | ^ ~ << >> 经典应用场景:位设置/清除/判断、无临时变量交换 移位运算注意事项:算术/逻辑右移区别、避免越界

2026-08-19 14:54:07 453

原创 别再混淆 struct/union/enum!看完这篇彻底搞懂构造数据类型

本文整理了C语言中三种构造数据类型(结构体struct、共用体union、枚举enum)的核心知识点: 结构体:用于组合不同类型数据,支持内存对齐,可通过.和->访问成员,传参推荐使用指针提高效率。 共用体:所有成员共享内存空间,大小为最大成员尺寸,常用于内存复用和大小端检测,修改成员会覆盖原有数据。 枚举:定义一组整型常量,默认从0开始自增,提高代码可读性,本质是整型变量。 三者的主要区别在于: 结构体各成员独立存储 共用体成员共享存储空间 枚举只有常量没有变量 文章还包含typedef用法、内存对齐原理

2026-08-18 15:41:58 430

原创 一秒分清指针函数 vs 函数指针(总结 + 快速区分口诀)

可以返回:static静态变量地址、全局变量地址、字符串常量地址、参数传进来的地址、malloc堆地址。将函数(的地址)作为参数传给另一个函数,这个被传入的函数叫回调函数,依靠函数指针实现。允许返回:static变量地址、全局变量、malloc堆地址、字符串常量地址。答案:函数指针,func是指针,指向返回float、带int参数的函数。答案:指针函数,func是函数,返回float*,只是它的返回值是指针(地址)。后面带()说明指向函数 →。先有函数,返回结果是指针。它是变量,存函数地址。

2026-08-17 16:02:47 489

原创 Linux Framebuffer纯C五子棋项目完整技术整合全部源码、知识点、功能、踩坑点)

init_fb():初始化帧缓冲,获取屏幕参数、建立显存内存映射;:绘制单个像素点,兼容32/16位色深;:绘制水平、垂直直线;:绘制实心矩形(红色落子光标);:循环极坐标绘制圆形(黑白棋子);draw_clear:全屏填充指定十六进制底色(原木棋盘底色0xCCB08A)。彻底吃透Linux帧缓冲底层图形渲染原理,理解显存映射、像素色彩存储逻辑,摆脱对GUI库的依赖;掌握C语言大型工程多文件分层开发、头文件管理、全局变量跨文件调用规范;

2026-08-12 17:19:12 297

原创 一眼分清数组指针与指针数组,C 语言核心难点拆解

二维数组存完整字符串,占用连续字符空间;指针数组只存地址,体积更小。文档明确规则:二维数组传参必须指定列数,底层就是数组指针。地址直接+20,跳到下一个同规格数组。(4字节int / 1字节char)只向后走1字节,指向下一个字符。指针数组:数组存指针,char。

2026-08-07 09:30:59 555

原创 自学C函数2.0:零基础吃透 C 函数数组、变量、预处理

本文介绍了C语言中数组作为函数参数的传递规则及注意事项:一维整型数组需传递数组首地址和长度,字符数组因'\0'结尾无需长度;二维数组需明确列数,行数通过参数传递。同时阐述了变量的作用域(局部/全局)和生命周期(动态/静态),以及auto、static、register、extern等存储类型特性。最后讲解了预处理命令,包括宏定义(带参/不带参)、头文件包含方式和条件编译的三种形式(#ifdef/#if/#ifndef),强调了宏与函数的区别及条件编译在代码控制中的应用。

2026-08-05 13:46:02 204

原创 自学C函数1.0:理清值传递与递归,攻克 C 语言函数难点

本文主要讲解C语言函数的核心知识点,重点解析值传递和递归调用两大难点。首先介绍函数定义的三要素(返回值、函数名、形参表)及调用规范,强调实参与形参的类型匹配要求。其次说明函数声明的作用和调用过程中的现场保护机制。在传参方面,详细解释值传递原理及参数传递顺序(自右向左)。最后剖析递归调用的本质和注意事项,包括递归出口的必要性和栈内存开销问题,帮助读者掌握函数模块化编程和递归逻辑的实现方法。

2026-08-04 16:56:05 304

原创 如何同时保存多个字符串?吃透 C 语言二维字符数组

本文介绍了二维字符型数组的概念与应用。二维字符型数组用于存储多个字符串,定义格式为char 数组名[行数][列数],如char str[3][100]可存储3个字符串,总占300字节。文章展示了二维字符数组的初始化方法和输入输出操作,通过示例说明如何存储和访问多个字符串数据。这种结构适用于需要处理多个字符串的场景,是C语言中重要的数据结构之一。

2026-08-03 19:18:18 228

原创 零基础秒懂二维数组:下标访问与行优先连续存储原理

本文介绍了二维整型数组的基本概念及使用方法:1)定义格式为"类型说明符 数组名[行数][列数]";2)通过行列下标访问元素,下标从0开始;3)初始化方式包括全部初始化、局部初始化(未初始化为0)和全0初始化;4)存储特性包括类型单一、元素有序和空间连续。通过示意图展示了数组的定义、初始化和内存存储结构。

2026-08-01 16:33:04 215

原创 一维字符数组:定义 + 初始化 + 操作全攻略

本文介绍了C语言中一维字符型数组的基本概念和操作方法。主要内容包括:字符数组的定义方式(如char st[32])、元素访问(通过下标)、初始化方法(全部/局部初始化);字符数组的存储特性(单一性、有序性、连续性);输入输出方式及注意事项;常用字符串处理函数(strlen计算长度、strcpy字符串拷贝、strcat字符串拼接、strcmp字符串比较)的使用方法。重点强调了字符串必须以'\0'结尾的特性,并区分了strlen(有效字符数)和sizeof(内存字节数)的不同作用。文章通过代码示例和图示说明了各

2026-07-31 14:36:11 182

原创 吃透 C 语言数组基础!越界、冒泡 / 选择排序

数组基础摘要 数组是存储同类型数据的连续内存结构,通过下标访问元素(0到n-1)。定义时需指定类型、名称和大小。初始化可全量、局部(未赋值为0)或全零。数组特点包括单一性、有序性和连续性。常见操作包括排序(选择、冒泡、插入)和查找(二分法)。选择排序(不稳定,O(n²))和冒泡排序(稳定,O(n²))是基础算法,二分查找(O(logn))需有序序列。注意避免数组越界访问和直接对数组名赋值。

2026-07-30 14:26:25 185

原创 零基础速通C语言循环:break、continue、嵌套全讲透

2)for循环中的三个表达式都可以被省略,但是循环初始条件,让循环执行判断的条件及让循环趋于结束的条件必须要有。表达式2:循环被执行的条件:表达式2结果为真,执行循环体;循环执行的条件:逻辑结果表达式,表达式结果为真,执行循环体:表达式结果为假,跳出循环。2)while(表达式)后面的{},当循环体只有一行语句时可省略,但建议不要省略。1)goto这种无条件跳转语句,可能会造成语法混乱,代码可读性差,尽量少用。4)for(表达式1;循环断路语句:表示跳出当前循环(当多层循环嵌套时,只跳出当前一层循环)

2026-07-29 09:39:43 170

原创 零基础自学C语言!分支结构超通俗详解

当表达式结果为真,则执行()中的语句;如果表达式结果为假,则跳过()中的语句。 当if或者else后面的语句只有一句时,{}可以省略,建议不要省略。 | | 逻辑或 要么…| |: 第一个表达式若为真,则第二个表达式不会再被执行。 If(表达式)后面不要写分号,这代表if语句直接结束。| | 逻辑或 要么… && 逻辑与 既要…&&:第一个表达式若为假,则第二个表达式不会再被执行。逻辑非 真取非为假 假取非为真。逻辑非 真取非为假 假取非为真。C规定:0为假,非零即为真。

2026-07-28 14:57:09 167

原创 高效总结记忆C语言C常用输入输出函数

常用输入输出函数函数:封装的一个功能模块输入输出:标准C库提供的输入输出函数 putchar功能:向终端输出一个字符参数:C:要输出的字符的ASCII值返回值:返回输出字符的ASCII值 getchar功能:从终端读取一个字符参数:空返回值:返回终端读到的字符的ASCII值 printf:向终端输出格式化后的字符串1) 输出非格式控制符‘\”’‘%%’2)输出带有格式控制符的字符串。

2026-07-25 18:26:26 207

原创 高效自学C语言基本数据类型、表达式及运算符2.0

float常量:3.14f 3.14F 3.14e2f 3.14E2f 3.14e-2f。double常量:3.14 2.134 3.14e2 3.14E2 3.14e-2。表达式:使用关系运算符连接的若干个常量、变量、常量和变量构成的式子。表达式的结果为假(不成立),三目运算符最终结果为表达式2的结果。//可以但是不凡方便代码注释。2)%左操作数是正数,结果是正数,左操作数是负数。表达式的结果为真(成立),三目运算符最终结果为表达式1的结果。(成立) 取表达式1 :(不成立) 取表达式2。

2026-07-24 18:39:33 152

原创 高效自学C语言基本数据类型、表达式及运算符1.0

最小值:1000 0000 0000 0000 0000 0000 0000 0000—》-2^31 -21亿。最大值:1111 1111 1111 1111 1111 1111 1111 1111—》2^32-1 42亿。最大值:0111 1111 1111 1111 1111 1111 1111 1111—》2^31-1 21亿。最小值:0000 0000 0000 0000 0000 0000 0000 0000—》0。内存:0000 0000 0110 0100。

2026-07-23 18:25:01 180

原创 C语言学前储备知识

摘要: 本文为零基础学习者提供C语言学前必备知识,涵盖计算机组成、数据单位及进制转换等核心概念。介绍了计算机五大部件(CPU、内存、硬盘等)的功能特性,明确数据存储单位(bit到TB)的换算关系。重点解析二进制、八进制、十六进制与十进制的相互转换方法,包括权值累加法和短除法,并举例说明8421编码在进制转换中的应用。这些基础知识为后续C语言学习奠定底层理解基础,帮助学习者平滑过渡到编程领域。

2026-07-22 18:35:55 231

原创 速通Linux 基础,快速运用

本文是一篇Linux基础速通指南,涵盖虚拟机操作、常用命令、目录结构及C语言开发流程。重点介绍了20+个核心命令(如ls/cd/mkdir/chmod等)的使用方法,并详解了Linux目录体系(/bin、/etc、/home等)。针对开发者特别整理了Vim编辑器操作技巧(复制/粘贴/撤销)和gcc编译流程,强调代码规范要求。内容兼顾零基础入门与开发者查漏补缺,掌握后可满足日常服务器基础运维需求,为后续Linux进阶学习奠定基础。

2026-07-21 18:34:45 318

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除