- 博客(18)
- 收藏
- 关注
原创 端口号与进程号
总而言之,对于一个正在运行的程序来说,从操作系统的角度去看他,我们就可以看到他所运行的内存区域(堆栈)以及他的身份识别号(即PID进程号),从网络通信的角度来看,我们就可以看到他所对应的端口号(用来去和其他计算机中的进程进行通信)。去定义的,主要是用来确定进程间通信双方位置的,一个进程是可以有多个端口号的,这不难理解,因为一个进程可以和多个进程同时通信,这个时候当然需要多个端口号。但一个端口号不能对应多个进程。当然也有一些进程是不需要网络通信的,所以他自然也就没有被分配到端口号,但肯定有进程号。
2025-07-31 14:49:26
211
原创 简单记录一下VSCode中的一些学习记
首先说一下最重要的,即终端Terminal,终端其实就相当于一个内嵌在VSCode中的命令行界面,类似Windows的cmd或者其他平台的powershell等,用户可以在这里面执行命令(比如打开文件夹、编译文件、安装依赖库等),也可以执行脚本(比如文件批处理等),也可以在终端里直接显示代码的运行结果,我们在这个VSCode内嵌的终端里可以使用bash也可以使用powershell,这取决于我们具体打开的是什么命令行程序,即第一幅图右侧那三条,就是对应的我们打开的不同的终端。
2025-07-31 14:26:39
453
原创 一文搞懂集线器、交换机、路由器、子网、子网掩码、默认网关!
我们只是为了讲明白集线器、交换机、路由器三者的区别,实际上具体还有很多细节没有深挖,比如路由器构造路由表的路由算法、由IP地址获得MAC地址的ARP地址解析协议等等,但这并不影响我们理解这三者的功能。最后,我们分别从设备、交换机、路由器三者视角总结一下:(1)假设我们是台设备,我们想在计算机网络中与另一台设备通信,首先我们要知道自己的IP以及对方的IP(不需要知道MAC地址!),并通过子网掩码判断我们是否在同一个子网内(同一台交换机连接),如果在同一子网内,我们就通过ARP协议。
2025-05-12 09:29:59
2287
原创 有关DMA的一些个人理解
简单记录一下stm32f103zet6中DMA开发过程的一些理解目录1. 中断读取2. DMA读取3. 结尾总结 实际上DMA并不是一个存储器,而是一个控制器,控制两个数据存储区域之间的数据传输,这个“数据存储区”可以是Flash或DRAM中的一大片存储区,也可以是SRAM中的某个存储变量,也可以是外设中的某个数据寄存器,具体是什么可以通过配置DMA的源地址和目标地址来确定。 比如在ADC数据采集方案中,可以采用中断或DMA的方式读取采集到的数据。ADC在采集过程中,会在一个转换
2025-05-11 20:33:47
490
原创 深度剖析STM32启动文件,一文搞懂STM32启动全流程!(以STM32F103ZET6)
时间:2025-05-11在较老版本中,ST公司所提供的启动文件并不是单独的一份,而是根据一系列产品线提供了一组启动文件,用户需要根据自己产品的定位选择不同的启动文件,但启动文件的本质结构都是一样的,只是一些参数上的区别。例如,在ST提供的启动文件夹中包括startup_stm32f10x_md.s、startup_stm32f10x_xl.s等,是针对不同STM32F103子系列芯片量身定制的启动汇编文件。
2025-05-11 20:28:24
1164
原创 一文区分STM32常见开发工具链:RVMDK、Keil、GNU
(1)RVMDK:RealView-Microcontroller-Development-Kit,是Keil-MDK工具的早期全称,是Keil与ARM合作版本。(2)Keil:ARM公司旗下的开发平台,集成编译器、调试器、工程管理,属于ARM开发的一种IDE。(3)GNU:GNU-GCC-Toolchain-for-ARM,一种开源编译器工具链,例如由GNU组织开发的GCC,与上述二者有本质区别,但在STM32开发者也会用到,比如STM32CubeIDE。
2025-05-09 21:09:26
628
原创 MCU开发体系详解:内核、操作系统与应用
时间:2025-05-09本人笔记均是根据自己多年从业的理解整理而成,转载请备注来源。本笔记从底层视角出发,以最为常见的MCU:STM32F103ZET6为例,深度剖析以下问题:(1)结合STM32芯片的实际架构举例,重点讲;(2);(3)应用层开发;(寄存器、流水线、中断、总线等)。事实上,上述也是许多新手极易忽视的问题。
2025-05-09 20:42:35
2483
原创 深度解析嵌入式开发中的内联函数功能及使用场景
本文详细介绍了内联函数(inline function)在C语言和C++中的应用,特别是在嵌入式开发中的重要性。内联函数通过关键字“inline”提示编译器将函数体直接插入调用位置,从而减少函数调用的开销,提高代码执行效率。与普通函数相比,内联函数避免了压栈、跳转和返回的开销,但可能增加代码体积并影响调试。文章还对比了内联函数与宏的优缺点,指出内联函数在类型检查和安全性上优于宏,同时保持了较高的执行效率。通过STM32中的GPIO输出示例,展示了内联函数在实际应用中的优势。最后,文章总结了在频繁执行寄存器操
2025-05-08 21:35:34
713
原创 Cortex-M3、MCU、SoC、CMSIS、HAL库之间是什么关系?
时间:2025-05-08本人笔记均是根据自己多年从业的理解整理而成,转载请备注来源。对于一些刚开始接触MCU开发的同学来说,一定会经常听到“内核”、“Soc”、“芯片”、“片上”等概念,如果是用STM32入门学习嵌入式开发的话,肯定还会听说过“Cortex-M3”、“CMSIS”、“HAL库”等词汇,本篇笔记目的就是梳理这些基本概念,彻底区分开这些新手混淆不清的知识点。
2025-05-08 21:06:38
771
原创 SWD、JTAG与USB?STM32F1系列芯片程序烧录方法汇总
时间:2025-05-07我们在学习以STM32系列作为主控芯片的开发板时,经常会拿着一个下载器对开发板烧录程序,这种下载器通常是基于SWD协议或JTAG协议的,此外,对于一些核心板/最小系统板,我们也会直接用一个CH340模块和一根USB线烧录程序,那SWD、JTAG或者USB这三种烧录程序的方法各自有什么区别呢?这就是本次我们需要重点学习掌握的内容。
2025-05-07 09:30:52
1193
原创 嵌入式系统的核心保障机制:初识看门狗
我们先用一句话来概括什么是看门狗:看门狗是一种定时器类型的硬件模块,能在系统软件出现异常(如死循环、跑飞、卡死)时自动重启MCU,以实现故障自恢复。看门狗是硬件层面的最后一道安全防线,当系统无法自我修复时,看门狗能触发复位。我们在学习看门狗的过程中经常听到“喂狗”这一操作,其实“喂狗”就是去定期操作看门狗模块中的计数器,只要你一直喂它(定时“喂狗”),它就安静,一旦你不喂(程序卡死了),它就“咬你”(触发MCU复位)。
2025-05-06 20:04:46
699
原创 存储设备驱动开发:移植Flash的FatFs文件系统以及常见知识点扫盲
最后,还有一些小白容易混淆的点,比如我们说设备驱动开发是指“从零开始编写代码来控制硬件外设工作”,从而让上层应用或系统能通过标准接口调用硬件功能,这似乎与设备驱动移植很像,但需要明确的是,设备驱动开发强调的是,用代码去控制硬件,并将这些繁琐的控制代码(驱动程序)封装成开发友好的函数,提供给应用开发人员使用,而设备驱动移植则强调将已有平台上的驱动代码(驱动程序),适配到新的平台/芯片/操作系统上,使其能继续工作。总结一下就是,设备驱动开发是写驱动程序,而设备驱动移植。
2025-05-06 16:47:59
1075
原创 有关EEPROM分页写入策略的理解(以AT24C02为例)
以AT24C02存储芯片为例,AT24C02是一种2K位的串行CMOS-EEPROM存储器,内部包含256个8字节大小的存储区域,CMOS技术可以使得该存储芯片功耗大幅减小,该芯片通过I2C总线接口进行读写操作,且有一个专门的写保护引脚,当该引脚接VCC时,芯片启动写保护功能,当该引脚接GND时,该芯片允许正常的读/写操作。,前者操作起来简单,操作更加精确,但速率较低,后者则相反,操作略微复杂,且写入数据时可能会因为分页问题导致数据写入存在一些边界条件,但写入速率远快于按字节写入的方式。
2025-05-06 16:14:30
384
原创 STM32系列MCU的经典外设:W25Q64及其常用数据信息记录(极简版)
分区:8MB分为128个块(block),每块64KB分为16个扇区(sector),每个扇区4KB分为16个页(page),每页256B;特点:Flash芯片内的数据只能由1变0,不能由0变1。大小:共计8MB(Bytes)通讯方式:SPI通讯。
2025-05-06 16:09:31
178
原创 Flash存储器:NAND和NOR区别与性能比较
由于擦除NOR器件时是以64~128KB的块进行的,执行一个写入/擦除操作的时间为5s,与此相反,擦除NAND器件是以8~32KB的块进行的,执行相同的操作最多只需要4ms。执行擦除时块尺寸的不同进一步拉大了NOR和NADN之间的性能差距,统计表明,对于给定的一套写入操作(尤其是更新小文件时),更多的擦除操作必须在基于NOR的单元中进行。NAND读和写操作采用512字节的块,这一点有点像硬盘管理此类操作,很自然地,基于NAND的存储器就可以取代硬盘或其他块设备。1、NOR的读速度比NAND稍快一些。
2025-05-06 16:03:38
594
原创 常见MCU片上存储器扫盲帖:RAM、ROM、Flash以及TF卡、SD卡等存储器的原理及区别汇总
本篇笔记记录一下有关MCU常用存储器的定义、主要区别、常见容量以及常用的使用场景。一般来说,MCU里的存储器件包括以及三种,而RAM又分为DRAM和SRAM,ROM又分为EPROM、EEPROM,Flash又分为NOR和NAND,此外,还有一种被称为的存储器,它们的主要区别是什么?常见容量是多少?常见的使用场景又是什么样的?本篇笔记将回答这些问题。
2025-05-06 15:53:30
2673
原创 事件驱动与消息驱动
事件:按下鼠标,按下键盘,按下游戏手柄,将U盘插入USB接口,都将产生事件。比如说按下鼠标左键,将产生鼠标左键被按下的事件。 消息:当鼠标被按下,产生了鼠标按下事件,windows侦测到这一事件的发生,随即发出鼠标被按下的消息到消息队列中,这消息附带了一系列相关的事件信息,比如鼠标哪个键被按了,在哪个窗口被按的,按下点的坐标是多少?如此等等。 要理解事件驱动和程序,就需要与非事件驱动的程序进行比较。实际上,现代的程序大多是事件驱动的,比如多线程的程序,肯定
2022-09-21 09:23:19
427
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1