1. Start-up sequences
F2833x具有16个不同的启动方式,由四个GPIO (GPIO87,86,85,84)硬件编码,如下图所示
例如,假如需要从Flash执行代码,就可以将四个GPIO全部上拉。
具体的启动步骤如下:
- RESET地址0x3FFFC0,由于该地址是内部由TI定义的BOOT-ROM地址,因此复位后程序指针最先指向该地址
- Boot Code区:这部分会执行部分CPU初始化操作并且扫描GPIO口,由此确定系统的启动方式
- 如果四个GPIO口都被上拉,即状态为“1111”,那么程序会继续跳转到0x33FFF6,也即Flash的入口地址,然而该区域只有2个字的长度,因此需要在这里紧接一个跳转地址,如果是C代码编写的程序,在配置工程文件时“rts2900_ml.lib"会定义“c_int00"的地址,也就是后续要执行的C程序的启动代码
- “c_int00"会先进行C环境的初始化以及全局变量的初始化操作;最后"c_int00"会跳转到main函数
整个过程如下图所示:
F2833x Flash Memory的片区
内部Flash大小为256k x 16bit, 被分为8个片区,每个片区都可以独立编程。如下图所示,Flash Entry Point之前已经介绍过,Security Password在开发时一般不用,除非是为了防止逆向工程而需要认为设置密码;除此之外,Sector A的高128位地址是无法用作通用存储功能的。
Flash 速度初始化
Flash的读取速度是可以认为设定的,该速度由访问Flash片区的等待状态数目决定,在RESET后,这个等待状态数通常设置为16;而对于150MHz的F2833x,其最快可以设置为5;这样可以提升系统的实时性。
Flash是通过128个连续地址作为一个Page,因此等待状态数目也分为,Page内连续访问与Page间随机访问,分别由FBANKWAIT寄存器中的PAGEWAIT与RANDWAIT来指定,最高速度可以将二者赋值为5;此时F2833x执行一个单周期指令时的MIPS可计算为:
同时,如果我们使能Flash Pipeline功能,也即一次读取64bit,则MIPS可以达到100,翻了四倍;默认RESET后,该功能是不开启的,需要手动置位"ENPIPE"
Flash 配置寄存器
其他的配置寄存器如下图所示,然而多数情况下RESET后的默认值就能满足要求。 TI在“DSP2833x_SysCtrl.c"文件中提供了内部Flash的初始化函数“InitFlash()",一般情况下使用该函数进行初始化配置即可