北京飞冲绳航班:HELLO四(二):2812存储器映射及CMD--eyes札记
来源:百度文库 编辑:偶看新闻 时间:2024/05/08 14:12:41
这个系列为响应HELLODSP的2812学习活动的个人笔记,HELLODSP版权所有。转载请注明
2812存储器映射 2812具有32位的数据地址和22位的程序地址,总地址空间可以达到4M的数据空间和4M的程序空间。32位的数据地址,就是能访问2的32次,是4G,而22位的程序地址,就是能访问2的22次,是4M。其实,2812可寻址的数据空间最大是4G,但是实际线性地址能达到的只有4M,原因是2812的存储器分配采用的是分页机制,分页机制采用的是形如0xXXXXXXX的线性地址,所以数据空间能寻址的只有4M。
映射和空间的统一编址
F2812内部的映射空间低地址空间 高地址空间
F2812_nonBIOS_Flash.cmd --- 用于无BIOS,从片内FLASH引导
对于程序在FLASH中运行时,需要注意的: DSP在150M时钟频率下,FLASH中只能提供大约120M的时钟频率,所以有时候我们希望在RAM中运行时间敏感或计算量很大的子程序(比如AD采样)。但是我们所有代码都放在FLASH中,这就必须在上电后将FLASH中的这段敏感程序复制到RAM中运行,加快速度。这是在.CMD文件就必须划分一段用来设置RAM的载入和运行地址。 程序代码如下: SECTIONS {……… ramfuncs : LOAD = FLASHD, RUN = RAML0, LOAD_START(_RamfuncsLoadStart), LOAD_END(_RamfuncsLoadEnd), RUN_START(_RamfuncsRunStart), PAGE = 0 } DSP281x_Headers_nonBIOS.cmd ----- 用于无BIOS,外设寄存器产生的数据段映射至对应的存储器空间
2812存储器映射 2812具有32位的数据地址和22位的程序地址,总地址空间可以达到4M的数据空间和4M的程序空间。32位的数据地址,就是能访问2的32次,是4G,而22位的程序地址,就是能访问2的22次,是4M。其实,2812可寻址的数据空间最大是4G,但是实际线性地址能达到的只有4M,原因是2812的存储器分配采用的是分页机制,分页机制采用的是形如0xXXXXXXX的线性地址,所以数据空间能寻址的只有4M。
2812的存储器被划分成了下面的几个部分: 1. 程序空间和数据空间。2812所具有的RAM、ROM和FLASH都被统一编址,映射到了程序空间和数据空间,这些空间的作用就是存放指令代码和数据变量。 2. 保留区。数据空间里面某些地址被保留了,作为CPU的仿真寄存器使用,这些地址是不向用户开放的。 3.CPU中断向量。在程序空间里也保留了64个地址作为CPU的32个中断向量。通过CPU寄存器ST1中的VMAP位来将这一段地址映射到程序空间的底部或者顶部。
映射和空间的统一编址
F2812内部的映射空间低地址空间 高地址空间
非初始化的段:.bss,.ebss,.stack,.sysmem,和esysmem.(更好的理解就是,这些段就是存储空间而已) .bss: 为全局变量和局部变量保留的空间,在程序上电时.cinit空间中的数据复制出来并存储在.bss空间中。 .ebss:为使用大寄存器模式时的全局变量和静态变量预留的空间,在程序上电时,cinit空间中的数据复制出来并存储在.ebss中 .stack:为系统堆栈保留的空间,用于和函数传递变量或为局部变量分配空间。 .sysmem:为动态存储分配保留的空间。如果有宏函数,此空间被宏函数占用,如果没有的话,此空间保留为0.esysmem:为动态存储分配保留的空间。如果有far函数,此空间被相应的占用,如果没有的化,此空间保留为0.
F2812_nonBIOS_Flash.cmd --- 用于无BIOS,从片内FLASH引导
对于程序在FLASH中运行时,需要注意的: DSP在150M时钟频率下,FLASH中只能提供大约120M的时钟频率,所以有时候我们希望在RAM中运行时间敏感或计算量很大的子程序(比如AD采样)。但是我们所有代码都放在FLASH中,这就必须在上电后将FLASH中的这段敏感程序复制到RAM中运行,加快速度。这是在.CMD文件就必须划分一段用来设置RAM的载入和运行地址。 程序代码如下: SECTIONS {……… ramfuncs : LOAD = FLASHD, RUN = RAML0, LOAD_START(_RamfuncsLoadStart), LOAD_END(_RamfuncsLoadEnd), RUN_START(_RamfuncsRunStart), PAGE = 0 } DSP281x_Headers_nonBIOS.cmd ----- 用于无BIOS,外设寄存器产生的数据段映射至对应的存储器空间
cmd小技巧:
如果.text文件很大将其放在一段放不下,需将其放到两个程序段中最长的一个length=0x002000,也放不下时.可以这样处理:PAGE 0 : PRAMH0 : origin = 0x3F8002, length = 0x0014FE
L0RAM : origin = 0x008000, length = 0x001000 SECTIONS .text:{*(.text)} >>PRAMH0|L0RAM这样就可以将.text文件放在两个定义段中。
查看段的分配及使用情况.map的链接器(存储器)分配映射文件,链接器的map文件描述以下内容: 通过map文件可以查看各段的分配情况,包括段的起始地址,使用的字节数等配合cmd文件的使用,可确定各个段的使用情况,从而保证程序的正常运行和最小的空间使用。
VisualLinker可视化链接器TI公司出品的DSP软件开发环境CCS还提供了一种可视化生成存储器配置文件的工具:VisualLinker可视化链接器。如果程序原来包含了一个链接器命令文件(.cmd文件),则当创建可视化链接文件的时候,原来cmd文件中的内存配置仍然会被使用。如果读者想修改内存配置,双击.rcp文件就会在CCS中打开可视化链接器的图形界面,调整每个内存模块的大小,直到认为合适,然后只需要重新连编,程序即可生成新的输出文件,重复上面的步 骤,直到出现满意的结果。
什么是存储器映射
下面列出的四种存储器中,易失性存储器是
四及!~~~
映射映射映射映射
什么是“二四协定”?
hello,hello?
求助四及考试??
四及难吗??
武汉哪里有HELLO KITTY及相关商品批发???
广州哪里有HELLO KITTY及相关商品批发???
减二得四(猜一字)
系列翻译及回答四
cpu速度主要取决于什么?听说主要是二及缓存 难到AMD速龙3000+还不如奔四506快?
二及缓存之意
系列翻译及回答二
来猜谜: 二.四.六.八....一。 四字成语
数学"一 二 三 四"?
白云千载空悠悠--四字口语二
减二得四(打一字)
摩托车二冲和四冲是什么意思
十加十不是二十 十八点四
带数字的成语二四
合唱指挥四二、四三拍如何指挥
二四在眼前解数字