DSP技术目前已经被广泛的应用在了集成芯片研发过程中,这一类新产品的出现,为工程师的电路设计工作带来了极大的革新和帮助。C2000作为一种比较常见的DSP技术集成芯片产品,应用范围广泛,但在使用过程中却常常会出现仿真运行正常但单机程序跑不起来的情况,今天我们将会就这种问题进行详细解析。
其实就DSP集成芯片C2000而言,之所以会在调试时出现单机程序无法运行的情况,其根本原因还是因为工程师没有正确的完成C2000的引导模式设置。以C2000Piccolo系列的引导模式为例,尽管这一系列的芯片与delfino稍微有点区别,而concerto系列的芯片在引导模式设置方面更复杂。但是Piccolo系列是最基础的DSP集成芯片类型,理解了Piccolo的引导原理对我们在日后工作中使用其余两个系列的芯片有非常大的帮助。
首先我们需要了解的,是C2000DSP技术集成芯片的代码执行程序运行问题。下图中,图1是C2000的芯片复位流程图,从图中我们可以看到,当芯片在接收到一个复位信号后,会到0x3FFFC0去复位向量,该复位向量跳到BootROM0x3FF75C中去执行bootloader的程序,这里主要有进入引导和选择启动模式,以及一些外设引导的函数。选择启动模式根据芯片的硬件或软件设置来判断芯片该去哪里寻找程序入口,其直接目的是如何找到main,然后执行应用程序。
在了解了这种C2000集成芯片的复位流程之后,接下来我们再来看一下这种DSP技术集成芯片在平时应用中所常见的引导模式。就目前国内的应用情况而言,我们最常用到的主要有两种引导模式,一种是boottoRAM,也就是直接跳到0x000000的RAM中开始执行指令,主要针对程序加载在RAM的仿真模式。另外一种引导模式被成为boottoFlash,指的是跳到0x3F7FF6中去开始执行代码。与之相对应的,是程序会从这两个入口地址,也就是0x000000和0x3F7FF6,释放一条跳转指令在codestart。asm源文件中,原因是在Flash的入口地址处只有两个单元的空间,后面是CSM模块,所以需要跳转。而在RAM中之所以也需要跳转,主要是因为在跳转到main之前,需要执行一小段代码_c_int00,该代码会使用0x000003之后的一段RAM,如果代码放在那里,在执行_c_int00之后会损坏代码。
那么,这种DSP技术集成芯片在上电引导模式的选择和匹配过程中,选择启动模式函数是依据哪些方面来判断芯片的引导模式设置情况呢?答案很简单,从上图图2中我们可以很明显的看到,C2000芯片首先会判断芯片是否连接仿真器,根据TRST引脚的状态来判断上电引导模式的设置情况。如果是仿真器连接,则进入仿真引导,这时候芯片的引导主要是靠2个RAM的单元来判断,即EMU_BMODE和EMU_KEY,地址是0xD01和0xD00,所以我们在连接仿真器后,可以首先修改这两个RAM单元来设置引导模式。如果没有连接仿真器,则进入单机跑模式,这时候芯片的引导主要靠GPIO34和GPIO37的状态,以及两个OTP存储单元的值来判断。不过就目前的DSP技术集成芯片使用情况来看,国内暂时没有没有使用OTP这两个单元的情况,仅使用GPIO的状态就已经够了。
声明:本内容为作者独立观点,不代表电源网。本网站原创内容,如需转载,请注明出处;本网站转载的内容(文章、图片、视频)等资料版权归原作者所有。如我们采用了您不宜公开的文章或图片,未能及时和您确认,避免给双方造成不必要的经济损失,请电邮联系我们,以便迅速采取适当处理措施;欢迎投稿,邮箱∶editor@netbroad.com。
微信关注 | ||
技术专题 | 更多>> | |
2024慕尼黑上海电子展精彩回顾 |
2024.06技术专题 |