DSC core V.S ARM core
DSC(Digital Signal Controller, 数字信号控制器)是一个不同于MCU,也不同于DSP的一种CORE,有点跨界的意思,不过是一个年纪比较大的core了,比较典型的应用就是MCF56F83XX系列了。
Memory Map
DSC core采用哈佛体系结构,也就是有单独的数据总线和地址总线,数据和地址单独存储,可以使用相同的地址空间,一般对于运算量比较大的数字处理,这样可以有效的提升处理速度。正是因为这个原因,DSC的内存分布分为代码空间分布和数据空间分布。对于ARM来说,V7(Cortex系列MCU)一般是冯诺伊曼的结构,而ARM V9-V11一般是哈佛结构。
代码段地址分布如下:
地址范围 | 大小 | 用途 |
---|---|---|
0x000000 - 0x00FFFF | 64KW1 | Flash array 1 |
0x010000 - 0x01FFFF | 64KW | Flash array 22 |
0x060000 - 0x067FFF | 32KW | RAM |
0x078000 - 0x07BFFF | 16KW | BOOT ROM 3 |
数据段地址分布:
地址 | 大小 | 用途 |
---|---|---|
0x000000 - 0x007FFF | 32KW | Program/Data RAM |
0x008000 - 0x00BFFF | 16KW | Primary program/data flash(mapped from 0x00C000 - 0x00FFFF) |
0x00C000 - 0x00DFFF | 8KW | Core /system peripherals |
0x00E000 - 0x00FFFF | 8KW | slave peripherals |
0x020000 - 0x03FFFF | 128KW | Primary program/data flash(Mapped from 0x000000 - 0x01FFFF) |
0x078000 - 0x07BFFF | 16KW | BOOT ROM/DATA ROM |
0x07C000 - 0x07C3FF | 1KW | Flash Program Buffer |
0xFFFF00 - 0xFFFFFF | 128W | EOnCE register |
内存单位
在DSC中内存的最小单位是一个字,一个字是16bit(2 bytes),这个和ARM中采用Byte作为最小单位有一定的差异,同时也为代码的可移植性带来了挑战,比如在DSC的C语言中char类型就是2bytes而不是传统的1个byte,也就没有传统的uint8_t
了, 曾经觉得这个没有地方会出现,没想到还真的有。
C语言编译器
因为这个是一个比较古老的core,所以提供的工具链也是一个比较古老的tool,这个core的编译器只能支持一个比较低版本的C语言,对于各种版本的C语言我也没有过多的了解,只是我发现在这个编译器下面,C语言变量的定义只能放到函数的开头,所以这个也是程序可移植的一个会出问题的地方。
最后更新于 2019-03-12 12:13:33 并被添加「」标签,已有 2413 位童鞋阅读过。
本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。