通过JTAG口对DSP外部Flash存储器的在线编程
接口进行初始化,CE1空间定义为8位读写模式。
初始化函数如下:
voidc6x11_dsk_init(){/*DSP和EMIF初始化*/
CSR=0x100;/*禁止所有中断*/
IER=1;/*禁止除NMI外的所有中断*/
ICR=0xffff;/*清除所有未完成的中断*/
*(unsignedvolatileint*)EMIF_GCR=0x3300
;
*(unsignedvolatileint*)EMIF_CE0=0x30;
*(unsignedvolatileint*)EMIF_CE1=0xffffff03;
*(unsignedvolatileint*)EMIF_SDCTRL=0x07227000;
*(unsignedvolatileint*)EMIF_SDRP=0x61a;
*(unsignedvolatileint*)EMIF_SDEXT=0x54529;
}
2Flash存储器的编程
对Flash存储器进行字节编程之前,需要对它进行3个周期的编程指令操作,总线时序如图2。
从图2可知,各总线周期的操作如下:
第一总线周期——向5555H地址的存储单元写入数据AAH;
第二总线周期——向2AAAH地址的存储单元写入数据55H;
第三总线周期——向5555H地址的存储单元写入数据A0H;
第四总线周期——向地址的存储单元写入编程数据;
……
在TMS320C6711中,用C语言完成上述操作为:
/*---------------------------------------------------------------------*/
/*入口参数:pattern[]:数组,用于存储编程数据*/
*/start_address:所要编程的起始地址指针*/
/*page_size:所要编程的Flash的页面尺寸*/
/*出口参数:无*/
/*---------------------------------------------------------------------*/
voidflash_page_prog(unsignedcharpattern[],unsignedvolatilechar*start_address,intpage_size){
volatileinti;
unsignedvolatilechar*flash_ptr=start_address;
*(unsignedvolatilechar*)FLASH_ADR1=FLASH_KEY1;
*(unsignedvolatilechar*)FLASH_ADR2=FLASH_KEY2;
*(u 《通过JTAG口对DSP外部Flash存储器的在线编程(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/174754.html
初始化函数如下:
voidc6x11_dsk_init(){/*DSP和EMIF初始化*/
CSR=0x100;/*禁止所有中断*/
IER=1;/*禁止除NMI外的所有中断*/
ICR=0xffff;/*清除所有未完成的中断*/
*(unsignedvolatileint*)EMIF_GCR=0x3300
;
*(unsignedvolatileint*)EMIF_CE0=0x30;
*(unsignedvolatileint*)EMIF_CE1=0xffffff03;
*(unsignedvolatileint*)EMIF_SDCTRL=0x07227000;
*(unsignedvolatileint*)EMIF_SDRP=0x61a;
*(unsignedvolatileint*)EMIF_SDEXT=0x54529;
}
2Flash存储器的编程
对Flash存储器进行字节编程之前,需要对它进行3个周期的编程指令操作,总线时序如图2。
从图2可知,各总线周期的操作如下:
第一总线周期——向5555H地址的存储单元写入数据AAH;
第二总线周期——向2AAAH地址的存储单元写入数据55H;
第三总线周期——向5555H地址的存储单元写入数据A0H;
第四总线周期——向地址的存储单元写入编程数据;
……
在TMS320C6711中,用C语言完成上述操作为:
/*---------------------------------------------------------------------*/
/*入口参数:pattern[]:数组,用于存储编程数据*/
*/start_address:所要编程的起始地址指针*/
/*page_size:所要编程的Flash的页面尺寸*/
/*出口参数:无*/
/*---------------------------------------------------------------------*/
voidflash_page_prog(unsignedcharpattern[],unsignedvolatilechar*start_address,intpage_size){
volatileinti;
unsignedvolatilechar*flash_ptr=start_address;
*(unsignedvolatilechar*)FLASH_ADR1=FLASH_KEY1;
*(unsignedvolatilechar*)FLASH_ADR2=FLASH_KEY2;
*(u 《通过JTAG口对DSP外部Flash存储器的在线编程(第2页)》