第五讲:存储器以及地址分配1、TMS320F28335存储器空间分配2、TMS320F28335存储器保护特点3、XINTF接口4、相关寄存器介绍F28335DSP就是采用多级流水线的增强的哈佛总线结构,能够并行访问程序和数据存储空间。在F28335芯片内部集成了大量的不同的存储介质,F28335片上有256K×16位的FLASH,34K×16位的SARAM,8K×16位的BOOTROM,2K×16位的OPTROM,采用统一寻址方式(程序、数据和I/O统一寻址),从而提高了存储空间的利用率,方便程序的开发。除此之外,F28335DSP还提供了外部并行扩展接口XINTF,可进一步外扩存储空间。TMS320F28335存储器空间分配F28335的CPU内核本身并不包含任何存储器,通过总线访问芯片内部集成的或者外部扩展的存储器。其总线按照改进哈佛结构,分成了32位的数据读、数据写数据总线,地址读、地址写总线,公用数据总线即程序总线,包括22位的程序地址总线,用于传送程序空间的读/写地址,32位读数据程序总线,用于读取程序空间的指令或者数据。改进的哈佛结构其实是综合了冯.诺依曼结构的简洁,哈佛结构的高效。F28335应用32位数据地址和22位程序地址控制整个存储器以及外设,最大可寻址4M字的数据空间和4M字程序空间。TMS320F28335存储器空间分配代码安全模块CSM--代码安全模块(CSM)是F28335上程序安全性的主要手段,它禁止未授权的用户访问片内存储器,禁止私有代码的复制或者逆向操作。安全模块限制CPU去访问片内存储器。实际上,对各种存储器的读写访问都是通过JTAG端口或外设来进行的,而CSM模块所谓的代码安全性主要是针对片内存储器的访问来定义的,用来禁止未经授权去复制私人代码或数据。通过一个128位的密码(相当于8个16位的字)来对安全区来进行加密或解密。这段密码保存在FLASH的最后8个(0X33FFF8~0X33FFFF),也就是密码区中(PWL),通过密码匹配(PMF),可以解锁器件。如果密码保护区中的128位数都是同一个数,这个器件不受保护,全是同一个数有两种可能,一种全为0,另一种全为1,一个新的FLASH或FLASH被擦除后,就变为全1了,这样只要读一下密码区,就能破解了,还一种情况,就是全为0,这时候器件是被加密了,但是不管密钥寄存器的内容是什么,器件都处在加密状态,即该器件无法解锁了,这时候芯片就被完全锁住了。因此不要用全0作为密码。如果在擦除FLASH的期间,芯片复位了,那这个芯片的密码就不确定了,也不能解锁。TMS320F28335内存保护特点数据空间程序空间片上存储器片外扩展存储器地址范围0x0000000x000040M0向量RAM(32X32)M0SRAM(1kX16)M1SRAM(1kX16)PF0PF0PIE中断向量表0x0004000x0008000x000D000x000E000x002000保留保留0x005000PF3DMAPF1PF2保留0x0060000x0070000x008000L0SRAM(4kX16)L1SRAM(4kX16)L2SRAM(4kX16)L3SRAM(4kX16)L4SRAM(4kX16)L5SRAM(4kX16)L6SRAM(4kX16)L7SRAM(4kX16)0x0090000x00A0000x00B0000x00C0000x00D0000x00E0000x00F0000x010000保留FLASH(256KX16)128位密码保留TIOTP(1kX16)用户OTP(1kX16)保留L0SARAM(4kX16)L1SARAM(4kX16)L2SARAM(4kX16)L3SARAM(4kX16)保留BootROM(8kx16)BROM向量表-ROM(32X32)0x3000000x33FFF80x3400000x3800000x3804000x3808000x3F80000x3F90000x3FA0000x3FB0000x3FC0000x3FE0000x3FFFFC外部区域0扩展4KX16CS0外部区域6扩展1MX16CS6外部区域7扩展1MX16CS7保留保留保留0x0040000x0050000x1000000x2000000x300000TMS320F28335内存保护特点F28335对数据空间和程序空间进行了统一编址,图5.1的映射表就像是各个空间的地图一样,有些空间既可以作为数据空间也可以作为程序空间,有些空间只能作为数据空间,有些空间是受到密码模块保护,有些空间地址是作为保留的,具体内容就要仔细对照这个地图来进行查阅了。图右半部分主要是通过XINTF外扩的存储空间,当片内数据存储空间不够的时候,我们可以外扩存储器。其中的保留区是为片内存储器所占的地址。有些空间是Protected,表示这三个空间存放的寄存器不可以随便配置,若要对存放在Protected空间内的寄存器进行配置,要进行EALLOW声明,以EDIS结束声明,起到保护和警示作用。用户用来解锁的寄存器为密钥寄存器,在存储空间映射地址为0x00000AE0~0x00000AE7,该区域受EALLOW保护。当这个128位的密钥位全1时,密钥寄存器不需要与之匹配。当一开始调试FLASH区加密的芯片的时候,仿真器取得CPU的控制权需要一定的时间,在此期间,CPU正在开始运行,并且会执行保护加密区的操作,这个操作会引起仿真器断开连接,有两个方法可以解决这个问题。1、采用Wait-in-Reset仿真模式,这种方法是让芯片保持在复位状态直到仿真器得到控制,这种方法要求仿真器要能支持这种模式。2、采用“Branchtocheckbootmode”引导。这个方法会持续不停的让引导模式选择引脚。可以选择这种引导模式,一旦仿真器通过重新映射PC到另外的地址或者改变引导模式选择引脚以进入引导而进行连接。如何杜绝由于程序原因导致FLASH加密?TMS320F28335内存保护特点XINTF接口XINTF每个区域都有一个片选信号线,当对某个区域进行读写访问时,就要将信号线置低,某些器件将两个区域的片选信号通过内部的与逻辑连接在一起,从而形成一个共用的信号线,在这样的情况下,同一存储器可以与两个XINTF区域相连,要区分这两个区域就要与区分这两个区域的逻辑电路相连。XINTF的存储器的三个区域中的任何一个都可通过编程设定独立的等待时间,选通信号建立时间及保持时间,每个区域的读写操作都可以配置成不同的等待时间,另外可以通过XREADY信号线延长等待时间,XINTF接口的这些特性允许其访问不同速率的外部存储器设备。通过XTIMINGx寄存器可配置每个区域的等待时间及选通信号的建立于保持时间。XINTF接口的访问时序是以内部时钟XTIMCLK位基准的,XTIMCLK信号频率可配置为系统时钟SYSCLKOUT的频率或其一半。XINTF接口XINTF接口XINTF接口