过去的一周开始折腾起了Dm6437 TI的一款c64+的dsp。之前一直玩ARM现在又转来玩dsp,这下真的是没有什么没玩过的。单片机,arm,dsp都摸一摸,呵呵。当然总结出来的话,开发起来东西还是差不多,当然难易程度由自己的项目所决定。之前本科时候学过c54的dsp汇编,不过基本忘光啦。随着时间的推移,上手dsp也变得不再复杂。过去一个星期,主攻了dm6437的boot模式,在这里分成几篇博客来对自己过去学到的新内容进行一个总结,和大家分享。
参考手册:
Using the TMS320DM643x Bootloader (Rev. C).pdf.
DM6437_DataSheet.pdf.
往往在dsp上做算法的开发时,都只是简单的使用GEL和CCS,加XDS JTAG来完成程序的编码、开发和调试。但是,你需要知道,最终的Execute file需要下载到flash中可以脱离仿真器,在板子上运行。那么dm6437处理器又是如何自动boot启动的呢?
dm6437的boot模式主要包括以下内容:EMIFA ROM,I2C boot,SPI(16bit 或者24bit) boot,Nandflash boot,Uart boot。
boot 模式的决定权完全交予设计者,它是基于初始硬件设计的管脚电平来决定整个启动模式,
• BOOTMODE[3:0]
• PCIEN
• FASTBOOT
• AEM[2:0]
• PLLMS[2:0]
在数据手册里的reset说道:当内部芯片复位时,会触发锁存器将上述的管脚信息全部锁存到BOOTCFG这个寄存器去。一旦锁存后,变成只读寄存器。
非FASTBOOT模式直接采用27MHz的时钟来直接进行工作。
其中FASTBOOT决定了boot启动是否使用快速模式,其中PLLM[3:0]则是用于配置相应的PLL。
FASTBOOT又包括固定的(fixed)模式,用户可选择的(user-select模式)等。这两者的区别在于,后者可以根据PPLM管脚来配置PLL的倍频数。前者的PLL倍频数固定默认为20。
本文使用的boot模式为快速SPI24位norflash启动。
因此MCBSP模块的默认时钟为SYSCLK3/3=27*20/2/6/3=15MHz,顾SPL采用的是15MHz的时钟来读取norflash中的数据(其实后续在RBL启动完成后,会自动修改PLL的倍频数到22,SPL clock增加到了16.5MHz)。
对于上述内容总结为如下图:
AIS镜像文件将在下一博文中和大家分享。