DSP2000 底层外设寄存器的配置与 TC234 外设底层寄存器的配置
TC234有3 部分程序与CPU 相关的程序存储单元
(1)PMU
(2)擦写板程序存储器 擦写版数据存储器
(3)LMU 0kB
其中 PMU 包括2M 的 programm flash PFLASH
就是 memtool 能够看到的26个扇区

数据 flash memory 相当于EEprom
32kb 的bootrom
用户配置模块 ? user configure block
CPU0 部分包括
8kB 的擦写版程序 SRAM
184KB 的 擦写 版 数据 RAM
8kB 的程序缓存
4.1 HOW TO READ MEMORY MAPS ?
详细的地址映射,例如控制寄存器,sram块或闪存银行/扇区在模块内的相关模块章节中描述。
SPB总线地址映射从SPB主代理的观点显示系统地址。、
SRI地址图从SRI主代理的角度显示系统地址。
SFI是SRI和SPB之间的双向桥梁,因此在地址图中没有提到SRI或SPB master。SFI是完全透明的,不包括地址转换机制。
综上 3类总线 SPB SRI SFI 总线 而 28335 仅仅是地址总线 还有 数据总线
注意:除了这里描述的系统地址映射外,每个TriCore都有一个通过C000_0000访问其PSPR的TriCore IP内部访问,以及通过D000_0000访问其DSPR的内部访问。这个附加的/私有的视图在CPU章节中描述。
什么是PSPR ? 什么是DSPR ?
答: 这两个东西 其实都是RAM 。
PSPR program scratch PAD SRAM 程序擦写版RAM
DSPR data scratch pad sram 数据擦写版RAM
4.2 是重要的
The CPU attributes (cached / non-cached) of these segments can be configured for each CPUs data and program side individually (see CPU chapter: Physical Memory Attribute Registers, PMAx).
这些段的CPU属性(缓存/非缓存)可以为每个CPU的数据和程序端单独配置(参见CPU章节:物理内存属性寄存器,PMAx)。
Segments 0-6
These memory segments are reserved.
Segment7
地址范围: ?
这些内存段允许访问CPU的程序RAM和数据RAM (PSPR, DSPR)
这个段 CPU 的默认属性 是 非缓存的 non cached
Segment 8
地址范围
这些内存段 允许 访问 PFLASH 和bootrom
段的属性可以单独配置
默认的属性 是缓存的 cached
Segment 9
这个内存段允许访问LMU SRAM(如果实现了的话)和EMEM(仅模拟设备)。
这个段的CPU默认属性:cached。
Segment10
这些段允许访问 PFLASH BFLASH
Segment11
Segment12
这个内存段是保留的。
Segment13
这个内存段是保留的。
Segment14
这个内存段是保留的。
Segment15 居然低128MB 由SPB总线访问 ,高128MB由SRI 总线访问。
地址范围 :
大小:
This memory segment allows accesses to all SFRs, CSFRs
这个内存段允许访问所有的SFRs CSFRS
什么是SFRS CSFRS ?
SFRS : Special function register
CSFRS : Core Special Function Registers 核心 特殊共功能寄存器
以上两个寄存器到底是用来做什么 具体的定义 ?
提问:
这个段的低128MB 是如何进行访问的 ?
在 SPB总线上的DMA FPI主接口处理
这个段的高128MB 是如何进行访问的 ?
通过SRI总线上的DMA SRI主接口处理。
4.3
Address Map of the On Chip Bus System
片上总线系统地址图
All bus master agents can address identical peripherals and memories at identical address.
所有总线主代理都可以在相同的地址上寻址相同的外设和内存。
什么意思? 答:对多核单片机来讲, 每一个核心都可以在相同的地址上寻找相同的外设和内存。
The system address map is visible and valid for all CPUs which means that all peripherals and resources are accessible from all TriCore CPUs and other on chip bus master agents.
系统地址映射对所有cpu都是可见和有效的,这意味着所有的外设和资源都可以从所有TriCore cpu和其他芯片总线主代理访问。
Parallel access by more than one bus master agents to one slave agent are executed sequentially.
多个总线主代理对一个从代理的并行访问按顺序执行。 ??




程序编译连接完成以后 生成的hex文件 最终都存放在扇区15中去
还有外设寄存器一些底层的定义 也是在扇区15 中 例如GPIO 的一些寄存器
如下图 正是在 这个段 15中。
至于我编写的程序 如何让放在段 7中 运行, 则直接用编译器的伪指令 将代码定位到段落7 的RAM中。
下图的地址是在0xf000 0000 的地址空间中

在这个地方再去看28335 的程序 段落分布
发现实际上 28335 在进行地址分配的时候,也是类似的方法 :
外设寄存器类都放在一个确定的地址空间
然后程序可以放在FLASH 或者RAM 中

外设寄存器的定义放在如下图的位置 以为SCIB为例
它在文件 HeadernonBios .cmd 文件中。 外设寄存器在内存中的地址是上图PF1 和
PF2 的位置

程序的定义 位置
放在FLASH 中 却放在 RAML0 中执行
以DC_control.c 文件中 函数 PI 调节函数 定义在ramfuncs 段落中



注意: 与外设寄存器定义的内存地址空间是分开的。
DSP2000中寄存器的定义
其实和Y英飞凌的TC234定义差不多
以DSP 的GPIO MUX 寄存器为例子




以上4张图是 DSP2812 中 关于GPIOMUX 寄存器的定义
我想它与英飞凌底层通用IO口定义的区别 仅是
2812中的GPIO 用的是联合体 GPIOMUX 一系列寄存器在地址空间上本来就是连续的。
所以对于GPIOMUXREGFILE 段 只用 指明 初始地址和长度,后面直接 用成员名 调用联合体中的其他成员寄存器。
例如 上面 GPIOMUXREG ORIGIN=0X007CC0 LENGTH= 0020

浙公网安备 33010602011771号