- 博客(148)
- 收藏
- 关注
原创 GRUB、UEFI、BIOS
GRUB定义:GRUB(GRand Unified Bootloader)是GNU项目的一个多操作系统启动程序。功能:允许用户在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。UEFI定义:UEFI(Unified Extensible Firmware Interface)是一种详细描述类型接口的标准,它定义了操作系统与系统固件之间的软件界面。功能。
2025-01-13 18:56:45
448
原创 Code、RO Data(ReadOnly Data,只读数据)、RW Data(ReadWrite Data,可读写数据)和ZI Data(Zero Initialized Data,0初始化数据)
Code定义:Code指的是编译器生成的机器指令,这些指令被存储到ROM区(如STM32的内部Flash中),用于程序的执行。功能:Code是程序的核心部分,包含了程序执行所需的所有指令。位置:存储在ROM区。实例:C语言编写的函数体,经过编译后生成的机器指令就是Code的一部分。RO Data定义:RO Data指的是程序中用到的只读数据,这些数据被存储在ROM区,程序不能修改其内容。功能:RO Data用于存储程序中不需要修改的数据,如常量、字符串字面量等。位置:存储在ROM区。实例。
2025-01-13 18:33:26
916
原创 C语言的关键字typedef与结构体的类型别名
在C语言中,typedef是一个非常有用的关键字,它用于为数据类型创建新的名称(别名)。这不仅可以提高代码的可读性,还可以简化复杂类型声明的使用。
2025-01-09 12:53:52
715
原创 链接脚本中符号的解析和重定位
在这些符号的定义过程中,链接器会根据链接脚本中的规则和输入文件的内容来进行符号的解析和重定位。例如,当程序运行时,符号所代表的内存地址会被加载到全局指针寄存器中,以便程序能够正确地访问其数据和代码。在上述链接脚本中,我们定义了几个关键的符号,并通过。
2025-01-07 12:57:29
295
原创 嵌入式start.S启动文件详细介绍
这段代码是一个RISC-V架构下的裸机(bare-metal)启动代码示例,它使用了一些特定于RISC-V的指令和SEGGER Embedded Studio(SES)相关的宏定义。
2025-01-07 12:40:35
689
原创 PLC(Programmable Logic Controller,可编程逻辑控制器)和单片机(Microcontroller Unit,MCU)
PLC(Programmable Logic Controller,可编程逻辑控制器)和单片机(Microcontroller Unit,MCU)都是广泛应用于工业自动化和控制领域的电子设备。虽然它们在功能上都旨在实现对设备的自动化控制,但二者在设计理念、结构、性能及应用等方面存在显著差异。
2025-01-06 11:54:52
362
原创 初始引导代码和Bootloader代码
初始引导代码主要负责硬件初始化和引导加载程序的加载,而Bootloader则专注于加载和启动操作系统或应用程序。两者在功能定位、执行时机与流程以及应用场景与灵活性等方面存在差异。
2025-01-03 13:00:10
457
原创 陪集和理想
给定一个理想III,可以定义商环R/IR/IR/I,其元素是III的陪集(这里陪集的概念与群论中的类似,但需要注意环的乘法不一定交换,因此左陪集和右陪集可能不同),运算由环的运算诱导而出。1. 理想在环的加法和乘法下是封闭的,但乘法封闭性具有单向性(即ririri和iririr在理想中,但r1i1r2r_1i_1r_2r1i1r2不一定在理想中,除非r2r_2r2也在理想中或环是交换的)。4. 子群HHH在GGG中的左(或右)陪集个数称为HHH在GGG中的指数,记作[G:H][G:H][G:H]。
2025-01-03 11:56:00
369
原创 向量空间、度量空间、拓扑空间
从这些概念中,我们可以抽象出“空间”在数学中的本质定义:空间是一个集合,它定义了元素之间的某种关系或结构。这种关系或结构可以是向量之间的运算规则(向量空间)、元素之间的距离(度量空间)或元素之间的连通性和邻域关系(拓扑空间)。在数学中,向量空间、度量空间、拓扑空间等概念中的“空间”概念,虽然具体定义和性质有所不同,但它们都共享一些基本的理念和结构。• 标量乘法:对于空间中的任意向量和任意标量(实数或复数),都存在一个唯一的向量作为该向量与标量的乘积。• 对称性:元素之间的距离与它们的顺序无关。
2025-01-03 11:55:37
355
原创 子环和理想
然而,理想在环中定义了一个自然的商结构,即商环R/IR/IR/I,其中III是RRR的一个理想。2. 对于任意r∈Rr \in Rr∈R和i∈Ii \in Ii∈I,有ri∈Iri \in Iri∈I和ir∈Iir \in Iir∈I(即III对环的左乘法和右乘法封闭)。在数学中,特别是在抽象代数领域,子环和理想是环论中的两个核心概念,它们各自具有独特的定义和性质,同时也在环的结构研究中发挥着重要作用。2. 单位元:子环不一定包含环的单位元(如果存在的话),而理想则自动包含零元素(作为加法子群的性质)。
2025-01-02 12:09:10
307
原创 软件测试中的等价类的划分方法
等价类定义:等价类是指某个输入域的子集合,在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,具有等价特性。测试某等价类的代表值就等于对这一类其它值的测试。等价类类型有效等价类:包含合理、有意义的输入数据,这些数据符合软件需求规格说明。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。无效等价类:包含不合理、无意义的输入数据,这些数据不符合软件需求规格说明。利用无效等价类可检验程序对于无效数据的异常处理能力。
2025-01-02 12:07:05
777
原创 系统顶层DFD(数据流图)
系统顶层DFD(数据流图)是描述系统整体数据流和功能的图形表示,它位于数据流图层次结构的最顶层,展示了系统的主要输入、输出以及它们之间的主要数据流。在顶层DFD中,数据存储可能不是必需的,但如果系统涉及大量数据存储或检索,则可能会包含。假设我们正在为一个简单的在线书店系统设计顶层DFD,该系统允许用户浏览书籍、下订单并支付。• 这些是数据在系统中流动的路径,从外部实体到过程,或从过程到外部实体,或从一个过程到另一个过程。• 确定系统的核心功能,这将作为顶层DFD中的主要过程。
2025-01-01 12:50:00
374
原创 分层OSPF(Open Shortest Path First)协议
• 特殊区域(Special Area):如末节区域(Stub Area)、完全末节区域(Totally Stubby Area)、非纯末节区域(Not-So-Stubby Area, NSSA)等,用于进一步简化路由和减少特定类型的路由信息在网络中的传播。1. 区域(Area):OSPF通过区域来划分网络,每个区域运行OSPF实例,但不同区域之间通过区域边界路由器(Area Border Router, ABR)进行通信。• 常规区域(Normal Area):非骨干区域,直接与骨干区域相连。
2025-01-01 12:46:20
423
原创 字节多路通道、数组多路通道和选择通道
在计算机系统中,通道(Channel)是一种用于连接输入输出设备(I/O设备)与内存之间的硬件组件,它负责数据的传输和控制。根据设计和功能的不同,通道可以分为多种类型,其中字节多路通道、数组多路通道和选择通道是三种常见的通道类型。• 设备利用率:字节多路通道 > 数组多路通道 > 选择通道(在连接多个设备时)。• 灵活性:字节多路通道 > 数组多路通道 > 选择通道(在连接不同类型设备时)。• 硬件成本:选择通道和数组多路通道相对较高,字节多路通道相对较低。
2025-01-01 12:45:04
435
原创 二进制指数后退算法(Binary Exponential Backoff Algorithm)
该算法主要用于CSMA/CD(载波监听多路访问/冲突检测)和CSMA/CA(载波监听多路访问/冲突避免)等网络访问控制方法中,以在检测到通信冲突后合理地延迟重传尝试,从而减少冲突的发生并提高网络效率。1. 初始退避时间:当节点(如以太网中的工作站或集线器)检测到通信冲突时,它会选择一个初始的退避时间。5. 线性增长与指数退避:虽然算法被称为“二进制指数后退”,但实际上退避时间是呈指数级增长的(即每次重传失败后退避时间范围翻倍),而不是线性增长。3. 重传尝试:节点在退避时间结束后,会再次尝试发送数据。
2025-01-01 12:43:11
485
原创 BGP(Border Gateway Protocol,边界网关协议)
BGP(Border Gateway Protocol,边界网关协议)是互联网上一个核心的去中心化的自治系统间的路由协议。它主要用于在互联网上不同的自治系统(AS,Autonomous System)之间交换路由信息,以实现跨AS的路由选择和互联。• BGP使用四种类型的消息进行通信:打开(OPEN)、更新(UPDATE)、保活(KEEPALIVE)和通知(NOTIFICATION)。• 打开消息用于建立BGP会话;• 路由信息以UPDATE消息的形式发送,包括目的网络的前缀、下一跳地址、路径属性等。
2025-01-01 12:40:41
1242
原创 SDRAM(Synchronous Dynamic Random Access Memory)
SDRAM(Synchronous Dynamic Random Access Memory),即同步动态随机存取存储器,是一种广泛使用的外部存储器。它具有容量大、速度快、价格相对较低等优点,因此被广泛应用于各种计算机系统中,包括个人电脑、服务器、嵌入式系统等。SDRAM的核心是存储单元阵列,由大量的存储单元组成,每个存储单元可以存储一位数据(在某些类型的SDRAM中也可以存储多位数据)。它使用外部时钟信号进行同步操作,因此可以与CPU等处理器保持同步,从而实现高速的数据读写。
2024-12-30 12:34:04
677
原创 软件测试报告模板概览
编写目的简要说明编写本测试报告的目的,例如对某软件系统的功能、性能、安全性和兼容性进行测试,并向项目管理者和用户提供软件质量的相关信息。项目背景简述测试所在项目的背景,包括项目的名称、版本、开发团队、开发周期以及测试的目的和重要性。测试范围明确本次测试的范围,包括哪些模块、功能或特性被纳入测试范围。测试方法详细说明测试方法,如黑盒测试、白盒测试、性能测试、安全测试、兼容性测试等。测试时间标注测试的开始和结束时间,以及各阶段的测试进度。
2024-12-27 12:08:03
396
原创 闭环控制中的开关电源(BUCK)
闭环控制中的开关电源(BUCK)是一种高效的直流-直流(DC-DC)转换器,其核心原理基于电感的储能特性和开关管的快速通断控制。
2024-12-26 12:32:56
1058
原创 电压纹波和电流纹波
电压纹波:在直流电源输出中,纹波是指输出电压中的交流成分,通常表现为正弦波或方波的畸变形态。它是电源整流后输出中残留的交流电压分量,通常是由输入电压波动或滤波不足引起的。电流纹波:与电压纹波类似,电流纹波是指电流中的周期性变化或波动。这种波动可能源于电源的不稳定、电路元件的周期性变化或外部电磁干扰等因素。
2024-12-26 12:21:46
590
原创 C语言的预处理器
C语言的预处理器是C语言编译器的一个组成部分,它在编译代码之前对源代码进行文本替换和条件编译等操作。预处理器指令以字符开头,它们不是C语言的正式语法部分,但它们在代码生成过程中起着非常重要的作用。
2024-12-25 12:46:35
667
原创 Windows脚本命令与Linux Bash脚本命令
语法:IF [NOT] ERRORLEVEL number command IF [NOT] string1==string2 command IF [NOT] EXIST filename command。示例对比:Windows脚本可以直接双击运行或通过命令提示符执行,而Linux Bash脚本则需要通过chmod +x script.sh赋予执行权限后,使用./script.sh运行。do command;语法:FOR [%%c] IN (set) DO [command] [arguments]
2024-12-25 12:37:01
936
原创 映射的简短总结
对于双射映射f:A→Bf: A \rightarrow Bf:A→B,存在一个逆映射f−1:B→Af^{-1}: B \rightarrow Af−1:B→A,使得对于所有y∈By \in By∈B,有f−1(f(x))=xf^{-1}(f(x)) = xf−1(f(x))=x(当x∈Ax \in Ax∈A)和f(f−1(y))=yf(f^{-1}(y)) = yf(f−1(y))=y(当y∈By \in By∈B)。换句话说,满射映射保证了输出集合中的每个元素都是输入集合中某个元素的映射结果。
2024-12-25 12:04:15
341
原创 C和C++编程语言中的前向声明简介
前向声明(Forward Declaration)是C和C++编程语言中的一种技术,用于在不需要完整类型定义的情况下,声明一个类型即将存在。这种技术主要用于减少头文件的相互依赖,以及加快编译速度。
2024-12-24 12:52:53
752
原创 “C:/Program Files/SEGGER/SEGGER Embedded Studio for RISC-V 7.32a/gcc/andes-riscv32-none-elf/bin/ld“
简而言之,这段命令首先使用链接器将多个目标文件和库文件链接成一个 ELF 格式的可执行文件,然后使用。工具将这个 ELF 文件转换为纯二进制格式,以便在嵌入式设备上运行。
2024-12-24 10:30:53
360
原创 ../../../../../tools/python3/python3.exe ../../../../scripts/bin2c.py $(OutDir)/demo.bin ……
连接,意味着只有在第一部分成功执行后,第二部分才会执行。这段命令行操作主要包含了两部分,通过。这两个操作都依赖于环境变量(如。二进制文件转换成C语言数组,并输出到。可执行文件进行反汇编,将结果输出到。综上所述,这段命令首先使用。)和工具路径的正确设置。
2024-12-24 10:10:50
308
原创 cmd_params.yaml文件解析
这是一个配置文件(可能是用于某个自动化脚本或项目生成器的),它定义了一系列路径、环境变量、构建类型以及默认设置,用于生成和构建基于HPM SDK(可能是针对HPM微控制器的软件开发工具包)的项目。
2024-12-23 18:11:18
271
原创 preset.bat文件解析
这个脚本是一个批处理文件(Batch file),用于配置HPMicro SDK(可能是针对HPMicro微控制器的软件开发工具包)的环境。它执行了一系列操作,包括检查并可能启用Windows的长路径支持、设置环境变量、复制OpenOCD配置文件到用户的。
2024-12-23 18:03:48
310
原创 4种编译优化
Local Optimizations(局部优化)优化内容:局部优化主要关注单个函数或代码块内的优化。它通过分析代码中的指令和数据流,尝试减少不必要的计算、消除冗余代码、优化循环结构等。优化方式:例如,编译器可能会将常量折叠(将常量表达式在编译时计算并替换为结果)、死代码消除(移除永远不会被执行的代码)等。Register Optimizations(寄存器优化)优化内容:寄存器优化旨在更有效地利用处理器中的寄存器资源。通过减少内存访问次数、优化寄存器分配等,可以提高程序的执行速度。优化方式。
2024-12-19 11:59:58
329
原创 EXCEL文件解析
要查看或编辑这些数据,你可以使用支持XML解析的工具或软件,如XML编辑器、文本编辑器(如Notepad++)或编程语言中的XML处理库(如Python的。具体来说,每个工作表(如Sheet1、Sheet2等)都会对应一个相应的。文件都按照特定的格式存储了对应工作表中的数据,包括单元格的值、格式、公式等信息。等),这些文件包含了该工作表中所有单元格的数据、格式和其他相关信息。将一个.xlsx文件解压缩后,表格中的数据一般存放在名为。文件是存放表格数据的关键位置。
2024-12-19 11:58:52
543
基于STM32F4硬件配置的Mbed TLS库,用以实现HTTPS协议栈
2024-09-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人