通过CCS烧写FLASH的方法
2012-04-01 10:50
267 查看
求助:FLASH的烧写工具在CCS中无法显示!
答: 步骤:右击CCS2图标-----属性----查找目标---找到一个comp_mgr的文件(就是CCS图标类似,但是头上有个喇叭的)双击打开----Texas Instruments----把那个加号打开,在ON-chip flash programme,前面选中就好了
通过CCS烧写FLASH的方法
TI公司提供了一个烧写FLASH的软件,但是那需要将程序编译后生成的OUT文件再转换成ROM格式;或者是先将应用程序编译后导出到一个二进制文件中,再通过CCS编程序从这个二进制文件中一个一个的读入并写进FLASH。
笔者要介绍的方法与上述两个方法不同。根据SST39VF160的时序,编写一个搬运程序,注意与DSP的BOOT程序的区别,这里的搬运程序是将在CCS中打开的工程的内容原封不动的搬到FLASH中,如此完成FLASH的烧写。根据这个思想,需要编写两个工程:一个主程序工程(即用户应用程序,其中包括二次引导程序),一个搬运程序工程。搬移程序不能使用与主程序的程序空间和中断向量表重合的物理空间,以免覆盖。烧写时,同时打开主程序和搬移程序的PROJECT,先LOAD主程序,再LOAD搬移程序,然后执行搬移程序,烧写OK!
(分别编写project(项目本身用)和writer(烧写用)两个工程,并且通过CCS进行load后,就可以实现了。但是project的内容比较少,所以project和writer都可以放在RAM中,而我的问题在于project很大,RAM放不下project和writer,怎么办?
)
该方法应该是最简单的方法,只要在搬运程序中合理的调用下面列出的子程序,即可完成FLASH的擦除与编程。
1)FLASH擦除子程序
FLASH编写之前,应对FLASH进行擦除,使其每个数据位恢复1状态,即全FF状态。
void erase_flash()
{
*(unsigned volatile char*)FLASH_ADR1=0x00aa;
*(unsigned volatile char*)FLASH_ADR2=0x0055;
*(unsigned volatile char*)FLASH_ADR1=0x0080;
*(unsigned volatile char*)FLASH_ADR1=0x00aa;
*(unsigned volatile char*)FLASH_ADR2=0x0055;
*(unsigned volatile char*)FLASH_ADR1=0x0010;
delay();
}
这里FLASH_ADR1代表0x64005555、FLASH_ADR2代表0x64002AAA。
2) FLASH单字编程子程序
void Program_One_Word (BYTE SrcWord, BYTE *Dst)
{
BYTE *DestBuf;
BYTE *Temp;
DestBuf = Dst;
Temp = (BYTE *)((WORD)FLASH_START+(0x5555));
*Temp = 0xAA;
Temp = (BYTE *)((WORD)FLASH_START+(0x2AAA));
*Temp = 0x55;
Temp = (BYTE *)((WORD)FLASH_START+(0x5555));
*Temp = 0xA0;
*DestBuf = SrcWord;
Check_Toggle_Ready(DestBuf);
}
void Check_Toggle_Ready (BYTE *Dst)
{
BYTE Loop = TRUE;
BYTE PreData;
BYTE CurrData;
unsigned long TimeOut = 0;
PreData = *Dst;
PreData = PreData & 0x4040;
while ((TimeOut< 0x07FFFFFF) && (Loop))
{
CurrData = *Dst;
CurrData = CurrData & 0x4040;
if (PreData == CurrData)
Loop = FALSE;
PreData = CurrData;
TimeOut++;
}
}
答: 步骤:右击CCS2图标-----属性----查找目标---找到一个comp_mgr的文件(就是CCS图标类似,但是头上有个喇叭的)双击打开----Texas Instruments----把那个加号打开,在ON-chip flash programme,前面选中就好了
通过CCS烧写FLASH的方法
TI公司提供了一个烧写FLASH的软件,但是那需要将程序编译后生成的OUT文件再转换成ROM格式;或者是先将应用程序编译后导出到一个二进制文件中,再通过CCS编程序从这个二进制文件中一个一个的读入并写进FLASH。
笔者要介绍的方法与上述两个方法不同。根据SST39VF160的时序,编写一个搬运程序,注意与DSP的BOOT程序的区别,这里的搬运程序是将在CCS中打开的工程的内容原封不动的搬到FLASH中,如此完成FLASH的烧写。根据这个思想,需要编写两个工程:一个主程序工程(即用户应用程序,其中包括二次引导程序),一个搬运程序工程。搬移程序不能使用与主程序的程序空间和中断向量表重合的物理空间,以免覆盖。烧写时,同时打开主程序和搬移程序的PROJECT,先LOAD主程序,再LOAD搬移程序,然后执行搬移程序,烧写OK!
(分别编写project(项目本身用)和writer(烧写用)两个工程,并且通过CCS进行load后,就可以实现了。但是project的内容比较少,所以project和writer都可以放在RAM中,而我的问题在于project很大,RAM放不下project和writer,怎么办?
)
该方法应该是最简单的方法,只要在搬运程序中合理的调用下面列出的子程序,即可完成FLASH的擦除与编程。
1)FLASH擦除子程序
FLASH编写之前,应对FLASH进行擦除,使其每个数据位恢复1状态,即全FF状态。
void erase_flash()
{
*(unsigned volatile char*)FLASH_ADR1=0x00aa;
*(unsigned volatile char*)FLASH_ADR2=0x0055;
*(unsigned volatile char*)FLASH_ADR1=0x0080;
*(unsigned volatile char*)FLASH_ADR1=0x00aa;
*(unsigned volatile char*)FLASH_ADR2=0x0055;
*(unsigned volatile char*)FLASH_ADR1=0x0010;
delay();
}
这里FLASH_ADR1代表0x64005555、FLASH_ADR2代表0x64002AAA。
2) FLASH单字编程子程序
void Program_One_Word (BYTE SrcWord, BYTE *Dst)
{
BYTE *DestBuf;
BYTE *Temp;
DestBuf = Dst;
Temp = (BYTE *)((WORD)FLASH_START+(0x5555));
*Temp = 0xAA;
Temp = (BYTE *)((WORD)FLASH_START+(0x2AAA));
*Temp = 0x55;
Temp = (BYTE *)((WORD)FLASH_START+(0x5555));
*Temp = 0xA0;
*DestBuf = SrcWord;
Check_Toggle_Ready(DestBuf);
}
void Check_Toggle_Ready (BYTE *Dst)
{
BYTE Loop = TRUE;
BYTE PreData;
BYTE CurrData;
unsigned long TimeOut = 0;
PreData = *Dst;
PreData = PreData & 0x4040;
while ((TimeOut< 0x07FFFFFF) && (Loop))
{
CurrData = *Dst;
CurrData = CurrData & 0x4040;
if (PreData == CurrData)
Loop = FALSE;
PreData = CurrData;
TimeOut++;
}
}
相关文章推荐
- 通过CCS烧写FLASH的方法
- EVM DM8168 ccs-5.3 win7平台使用方法,烧写16位nandflash
- [原]client通过ActiveX与flash交互方法简介
- 关于FL2440烧写Norflash两种方法介绍(J-flash和H-flash)
- 基于Eclipse搭建的STM32环境下的J-Flash烧写【hex/bin】文件到STM32xx开发板中的设置方法与步骤
- DSP TMS320FF28335程序从FLASH中拷贝到RAM中的两种方法及FLASH烧写方法
- [转载]AS3)Flash(非Flex)开发中通过事件传递参数的一种方法
- [原]client通过ActiveX与flash交互方法简介
- 使用JLink间接烧写s3c6410 nand_flash的方法[转]
- DSP TMS320FF28335程序从FLASH中拷贝到RAM中的两种方法及FLASH烧写方法
- 不同型号和CCS版本的DSP程序Flash烧写总结
- 使用JLink间接烧写s3c6410 nand_flash的方法
- 使用JLink间接烧写S3C2410、S3C2440开发板Nor、Nand Flash的方法(暂未验证)
- 《iBoard 电子学堂》SPI Flash烧写方法
- 使用JLink间接烧写S3C2410、S3C2440开发板Nor、Nand Flash的方法
- 使用JLink间接烧写S3C2410、S3C2440开发板Nor、Nand Flash的方法
- 使用JLink间接烧写s3c6410 nand_flash的方法
- uboot通过tftp下载固件并烧写到flash
- 通过J-FLASH方式烧写程序到STM32
- 使用JLink间接烧写S3C2410、S3C2440开发板Nor、Nand Flash的方法