- 博客(32)
- 收藏
- 关注
转载 【STM32】内存管理相关(内存架构,内存管理,map文件分析)
STM32的内存管理相关(内存架构,内存管理,map文件分析)flash 内存的和RAM中不同,RAM放data bass;falsh中text data ——因此数据和代码是分开存储的为哈弗结构,而x86RAM 较大,可以同时存下所以是冯诺依曼。
2024-08-30 16:47:23 963
转载 【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
转载 【PCIE】Capability ID汇总
PCIE Capability可以分为PCI兼容的capability 和PCIE extended capability两类。
2024-07-29 14:53:33 89
转载 【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
转载 【Keil】软件调试和及其配置
对于8051单片机进行软件仿真的方法是使用集成开发环境提供的软件模拟器,它不需要有专用的硬件编程器或系统板的配合,可以独立完成单片机的模拟运行,接下来我们就以位操作流水灯的程序为例,来说明如何对8051系列单片机进行软件仿真。**设置断点的方法有几种,最简单的是双击程序行,当程序行的前面出现红色的方块形图标时,断点即设置完成。4)在已经设置了断点的程序行上,再次在鼠标右键菜单中,选择“插入/删除断点”项来取消断点,或选择“有效/禁止断点项”来使能或失能断点,同样的功能也可以在“调试”菜单中找到,如图。
2024-07-08 11:14:23 775
转载 【计算机】数字电路英语
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
转载 【STM32】.bss .data .text 与Code, RO-data , RW-data, ZI-data的关系
要注意的是,所有在函数内部定义的变量都是局部变量,函数内部定义的变量其作用域只在函数内部。在一个工程文件中因为有多个程序文件,当某一个变量在一个程序文件中定义了之后,如果在另一个程序文件中予以定义, 就会出现重复定义变量的错误。比如,在C语言之类的程序编译完成之后,已初始化的全局变量保存在.data 段中,未初始化的全局变量保存在.bss 段中。除此以外,在函数被调用时,其参数也会被压入发起调用的进程栈中,并且待到调用结束后,函数的返回值也会被存放回栈中。初始化为零,或者未初始化的变量,都存储于这个区域。
2024-07-04 10:41:31 156
原创 【ARM】指令集简介
如果数据处理指令的第二个操作数是立即值,在指令中用 8 位立即值和 4 位循环移位来表示它,所以对大于 255 的立即值,汇编器尝试通过在指令中设置循环移位数量来表示它,如果不能表示则生成一个错误。除了概念上的第 33 位(就是被移出的最小的那位)之外丢弃移出最左端的高位,如果逻辑类指令中 S 位被设置了,则此位将成为从桶式移位器退出时进位标志的值。循环右移类似于逻辑右移,但是把从右侧移出去的位放置到左侧,如果逻辑类指令中 S 位被设置了,则同时放置到进位标志中,这就是位的‘循环’。对设置特定的位有用。
2024-06-22 15:52:20 316
转载 【ARM-Cortex-M3/4】汇编基础与常用指令集
令用于产生软中断,从而实现在用户模式变换到特权模式,CPSR保存到管理模式的SPSR 中,执行转移到SWI向量,在其它模式下也可使用SWI 指令,处理同样地切换到特权模式。恢复寄存器列表, 先出栈的数据(即原先最后入栈的r0)保存到r0, 最后出栈的数据(即原先最先入栈的r14)保存到r14。即C语言extern,指示编译器当前的符号不是在本源文件中定义的,而是在其他源文件中定义的,在本源文件中可能引用该符号。symbol 要保留的局部标号(若没有该项,除了基于寄存器处的所有符号将包含在目标文件的符号表)
2024-06-19 09:31:43 901
转载 【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
转载 【ARM】STM32学习笔记:启动代码分析(Startup Code)
这种特点是由堆栈指针的移动方式决定的(先入栈的数据对应的指针值比较大,后入栈的数据对应的指针值比较小,而出栈时堆栈指针的值是递增的,所以指针值大的数据当然后出栈)。由于MDK中的汇编器(汇编编译器)用的是ARM的汇编器,所以可以从ARM官网下载汇编器的用户指南寻找关于伪指令的详细介绍,或者从MDK的“Help”中的汇编器用户指南中查找。在ARM汇编语言程序里,有一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊指令助记符为伪指令,他们所完成的操作称为伪操作。
2024-06-14 22:14:51 144
转载 【vscode】新建工程
5.VSC有时候提示找不到路径,先建立一个.vscode文件夹(win下面输入.vscode.否则无法命名,并且鼠标放在工作区名字上面(可以在vscode终端新建),linux下通过命令建立,编辑器里面建立的路径可能不符合要求)输入crtl+shift+p,输入c/C++:edit(json),保存,4.在vsc里面新建文件夹,命名LED,用来管理工程文件,在这里面建文件夹,在文件夹里面存放代码。3.将工作区另存为,还是选择test,此时会生成test.code-workspace。,可以一键美化代码。
2024-05-28 22:36:50 1233
转载 【体系结构】冯诺依曼和哈佛架构
程序指令存储和数据存储分开,可以使指令和数据有不同的数据宽度,如Microchip公司的PIC16芯片的程序指令是14位宽度,而数据是8位宽度。一般DSP都是采用改进型哈佛结构,就是分开的数据空间和地址空间都不只是一条,而是有多条,这根据不同的生产厂商的DSP芯片有所不同。(2).具有一条独立的地址总线和一条独立的数据总线,利用公用地址总线访问两个存储模块(程序存储模块和数据存储模块),公用数据总线则被用来完成程序存储模块或数据存储模块与CPU之间的数据传输;二者的区别就是程序空间和数据空间是否是一体的。
2024-03-28 10:02:49 200
原创 【linux】编译问题『/lib/modules/内核版本/build: 目录不存在的』
/lib/modules/内核版本/build:没有那个文件和目录
2023-10-31 16:34:27 3792 1
转载 【工具】MobaXterm常用使用功能设置
首先确认是否修改了其他的ini文件,搜索注意是否有多个该配置文件,如果都修改仍然无效,可以使用MobaXterm Professional 版本,具体怎么激活,网上可以找一下很多方法。保存session后,在点击左侧菜单session会话的时候,仍然不能直接免密登陆,依然提示输入登陆user名。当Xterm会话数量到14个时,发现新增的会话没有保存下来,在左侧菜单无法新增保存会话session。SSH会话新建立的时候,会新开一个SFTP在左侧,但是这样不能很专注的写命令,可以取消。
2023-01-09 14:48:04 13581
转载 【Linux】gcc编译器下载与手动安装
要知道,每个 Linux 发行版都有自己的软件包管理工具,比如 CentOS 系统的 yum 包管理器、Ubuntu 系统的 apt 包管理器等等,并且大多数 Linux 发行版都提供有 GCC 编译器的二进制软件包。注意,本节是以 Ubuntu 操作系统为例,演示安装 GCC 编译器的具体过程,但实际上,此过程也完全适用于其它 Linux 发行版,只是在个别细节上(比如使用 yum 还是 apt 有或是其他软件包管理器),读者需要灵活调整,将其修改为自己所用操作系统支持的指令。
2022-12-29 16:18:57 15195 4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人