嵌入式
文章平均质量分 83
独孤九剑_Linux
坚定迈下每一步,跑赢昨天的自己
展开
-
【STM32】内存管理相关(内存架构,内存管理,map文件分析)
STM32的内存管理相关(内存架构,内存管理,map文件分析)flash 内存的和RAM中不同,RAM放data bass;falsh中text data ——因此数据和代码是分开存储的为哈弗结构,而x86RAM 较大,可以同时存下所以是冯诺依曼。转载 2024-08-30 16:47:23 · 963 阅读 · 0 评论 -
【PCIe基础】配置空间、BAR空间和BUS总线的理解整理
是一个地址转换单元,负责将一段存储器域的地址转换到PCIe总线域地址,除了地址转换外,还能提供访问类型等信息,这些信息都是ATU根据总线上的信号自己做的,数据都打包到TLP中,不用软件参与。这个标识符就是BDF(Bus,Device,Function),PCIe的配置软件(即Root的应用层,一般是PC)应当有能力识别整个PCIe总线系统的拓扑逻辑,以及其中的每一条总线(Bus),每一个设备(Device)和每一项功能(Function)。每个BAR具体干嘛使设备自己定义的,要看手册。转载 2024-08-08 20:11:07 · 676 阅读 · 0 评论 -
【PCIE】Capability ID汇总
PCIE Capability可以分为PCI兼容的capability 和PCIE extended capability两类。转载 2024-07-29 14:53:33 · 89 阅读 · 0 评论 -
【STM32】Keil 生成的Map文件分析
为什么Rom中还要存RW,因为掉电后RAM中所有数据都丢失了,每次上电RAM中的数据是被重新赋值的,每次这些固定的值就是存储在Rom中的,为什么不包含ZI段呢,是因为ZI数据都是0,没必要包含,只要程序运行之前将ZI数据所在的区域一律清零即可。其实,在MDK-ARM中,我们可以根据自己的情况(不同配置),在map文件中输出对应(我们需要)的内容。ARM处理器是32位的,如果定义一个8位或者16位变量就会剩余一部分,这里就是指的“补充”的那部分,会发现后面的其他几个选项都没有对应的值。转载 2024-07-17 17:37:54 · 329 阅读 · 0 评论 -
【Keil】软件调试和及其配置
对于8051单片机进行软件仿真的方法是使用集成开发环境提供的软件模拟器,它不需要有专用的硬件编程器或系统板的配合,可以独立完成单片机的模拟运行,接下来我们就以位操作流水灯的程序为例,来说明如何对8051系列单片机进行软件仿真。**设置断点的方法有几种,最简单的是双击程序行,当程序行的前面出现红色的方块形图标时,断点即设置完成。4)在已经设置了断点的程序行上,再次在鼠标右键菜单中,选择“插入/删除断点”项来取消断点,或选择“有效/禁止断点项”来使能或失能断点,同样的功能也可以在“调试”菜单中找到,如图。转载 2024-07-08 11:14:23 · 775 阅读 · 0 评论 -
【计算机】数字电路英语
conjunction(logical product) n.合取。disjunction(logical sum) n.析取。logical complementation 逻辑非。characteristic n.特征,特性。discrepancy n.相差,差异,差别。representative n.代表,典型。negation(NOT) n. 反(非)serial register 串行寄存器。logical function 逻辑函数。electromagnet n.电磁铁。转载 2024-07-06 23:50:51 · 42 阅读 · 0 评论 -
【STM32】.bss .data .text 与Code, RO-data , RW-data, ZI-data的关系
要注意的是,所有在函数内部定义的变量都是局部变量,函数内部定义的变量其作用域只在函数内部。在一个工程文件中因为有多个程序文件,当某一个变量在一个程序文件中定义了之后,如果在另一个程序文件中予以定义, 就会出现重复定义变量的错误。比如,在C语言之类的程序编译完成之后,已初始化的全局变量保存在.data 段中,未初始化的全局变量保存在.bss 段中。除此以外,在函数被调用时,其参数也会被压入发起调用的进程栈中,并且待到调用结束后,函数的返回值也会被存放回栈中。初始化为零,或者未初始化的变量,都存储于这个区域。转载 2024-07-04 10:41:31 · 156 阅读 · 0 评论 -
【ARM】指令集简介
如果数据处理指令的第二个操作数是立即值,在指令中用 8 位立即值和 4 位循环移位来表示它,所以对大于 255 的立即值,汇编器尝试通过在指令中设置循环移位数量来表示它,如果不能表示则生成一个错误。除了概念上的第 33 位(就是被移出的最小的那位)之外丢弃移出最左端的高位,如果逻辑类指令中 S 位被设置了,则此位将成为从桶式移位器退出时进位标志的值。循环右移类似于逻辑右移,但是把从右侧移出去的位放置到左侧,如果逻辑类指令中 S 位被设置了,则同时放置到进位标志中,这就是位的‘循环’。对设置特定的位有用。原创 2024-06-22 15:52:20 · 316 阅读 · 0 评论 -
【ARM-Cortex-M3/4】汇编基础与常用指令集
令用于产生软中断,从而实现在用户模式变换到特权模式,CPSR保存到管理模式的SPSR 中,执行转移到SWI向量,在其它模式下也可使用SWI 指令,处理同样地切换到特权模式。恢复寄存器列表, 先出栈的数据(即原先最后入栈的r0)保存到r0, 最后出栈的数据(即原先最先入栈的r14)保存到r14。即C语言extern,指示编译器当前的符号不是在本源文件中定义的,而是在其他源文件中定义的,在本源文件中可能引用该符号。symbol 要保留的局部标号(若没有该项,除了基于寄存器处的所有符号将包含在目标文件的符号表)转载 2024-06-19 09:31:43 · 901 阅读 · 0 评论 -
【ARM Cortex-M 系列】 -- Cortex-M0, M3, M4, M7, M33, M35P 差异
Cortex-M0 是ARM公司推出的一款微控制器(MCU)核心。这个核心是基于ARMv6-M架构设计的,只支持 56 条指令的小指令集,大部分指令是 16 位指令, 是 ARM Cortex-M 系列中的入门级产品。Cortex-M0 的设计目标是提供一种低成本、低功耗的解决方案,适用于简单的微控制器应用。小型和低功耗:Cortex-M0 的硬件设计非常紧凑,消耗的功率也非常低,这使得它非常适合在功率和空间受限的应用中使用。简单的指令集:Cortex-M0 使用的是基于 Thumb 指令集的。转载 2024-06-16 16:41:51 · 1398 阅读 · 0 评论 -
【ARM】STM32学习笔记:启动代码分析(Startup Code)
这种特点是由堆栈指针的移动方式决定的(先入栈的数据对应的指针值比较大,后入栈的数据对应的指针值比较小,而出栈时堆栈指针的值是递增的,所以指针值大的数据当然后出栈)。由于MDK中的汇编器(汇编编译器)用的是ARM的汇编器,所以可以从ARM官网下载汇编器的用户指南寻找关于伪指令的详细介绍,或者从MDK的“Help”中的汇编器用户指南中查找。在ARM汇编语言程序里,有一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊指令助记符为伪指令,他们所完成的操作称为伪操作。转载 2024-06-14 22:14:51 · 144 阅读 · 0 评论