TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320C6455: TMS320C6455如何制作烧录到外部NOR FLASH的bin文件

Part Number:TMS320C6455

请教下CCS5.2上如何制作TMS320C6455的外部NOR FLASH烧录的BIN文件呢?谢谢!

Nancy Wang:

可以在ccs post build指令转换成bin文件:

https://www.ti2k.com/wp-content/uploads/ti2k/DeyiSupport_DSP_ccs_project-management.html

Hex转换工具详细描述可参考 章节11 Hex Conversion Utility Description:

https://www.ti.com/lit/ug/spru186w/spru186w.pdf

e2e.ti.com/…/680588

,

wang yanping:

生成bin文件了,但是刷机后系统跑不起来,用仿真器加载是可以的,是烧录到emifa flash的0xb0000000地址吗?

,

wang yanping:

生成bin文件了,但是刷机后系统跑不起来,用仿真器加载是可以的,是烧录到emifa flash的0xb0000000地址吗?

,

Nancy Wang:

刷机调用的是代码里自带的flash擦除和写的函数,所以需要转换为bin格式的吧

我对该型号不是很熟悉,请问是看到有过类似的讨论吗?是否直接转换成.bin就可以我不太确定,可能得先确认一格式的问题。

如果格式没有问题,是用的哪个烧写程序,程序中一般会指定烧写到flash的起始地址,例如0地址开始。

https://e2echina.ti.com/support/processors/f/processors-forum/204852/tms320c6455-tms320c6455-rc28f640j3d-nor-flash

,

wang yanping:

这是我写的刷机代码,都执行成功了的。百度上面记得以前看过,生成bin烧录到flash起始地址oxb0000000地址。你在帮忙确认下呢,谢谢了。

#define E_PASS 0#define E_FAIL -1static Uint8 tx[550];static Uint8 rx[550];void write_flash(){ Int16 i; Uint8* p8; ; FILE *fPtr; Int32 fileSize = 0; Int32 no_of_pages; Int32 no_of_sectors; Int8 fileName[256], itype[20]; unsigned long sector_size; sector_size = 0x020000; printf("Enter the File Name\n"); scanf("%s", fileName); fflush(stdin); fPtr = fopen(fileName, "rb"); if(fPtr == NULL) { printf("File %s Open failed\n", fileName); return E_FAIL; }

printf("Reading file…"); printf("This may take sometime depending on the size of the file…\n"); fflush(stdout); // Initialize the pointer fileSize = 0;

// Read file size fseek(fPtr,0,SEEK_END); fileSize = ftell(fPtr);

if(fileSize == 0) { printf("File read failed.. Closing APP\n"); fclose (fPtr); return E_FAIL; } fseek(fPtr,0,SEEK_SET); no_of_sectors = (fileSize/sector_size + ((fileSize % sector_size) ? 1 : 0)); FlashErase(0xb0000000,no_of_sectors*sector_size); printf("Writing flash number of pages: %d\n", no_of_pages); i = 0; while(!feof(fPtr)) { p8 = (Uint8*) tx; if(!feof(fPtr)) { fread(p8, 1, 512, fPtr); } FlashWrite(0xb0000000 + i * 512, ( Uint8 *)tx, 512); i++; }

fseek(fPtr,0,SEEK_SET);

printf("Reading verifying the file.. "); fflush(stdout);

i = 0;

while(!feof(fPtr)) { unsigned int nbytes;

if(!feof(fPtr)) { nbytes = fread(tx, 1, 512, fPtr); } tx[nbytes] = '\0';

FlashRead (0xb0000000 + i * 512, (Uint8 *)rx, 512 ); rx[nbytes] = '\0'; if(strcmp((const char *)rx,(const char *)tx)!= 0) { printf("Files did not match @ %d\n", ftell(fPtr)); goto finish; } i++; }

printf("Files matched \n");

finish: fclose(fPtr);}

,

wang yanping:

刷机后系统起不来和cmd文件有关吗?现在配置成IRAM的

,

wang yanping:

我把tcf文件和cmd改成加载到FLASH编译出来的的bin有2.4GB,但是out只有2MB,cmd和tcf改成IRAM的编出来的就只有700KB

,

Nancy Wang:

跟cmd文件应该没有关系,跑不起来,先确认一下boot模式没问题,其次用仿真器跟一下看看pc指向哪里?有没有跳转到应用程序。

,

wang yanping:

1.boot模式是硬件决定的吧?应该没问题,因为板子以前都能跑起来,只是刷了软件起不来。

2.另外仿真器可以调试从flash启动的程序吗,要怎么设置呢?我只知道加载到内存来调试

,

Nancy Wang:

1、是硬件决定的。确保在emif启动模式就可以了

2、boot起来之后jtag连上板子ccs->load symbol->  .out文件。

,

wang yanping:

1.load symbol以后,pc指向B0000000就是emifa地址

2.然后单步运行到B0000024就卡住了,再点PC就是0x00000000开始跑

,

wang yanping:

load program可以进main,load symbol就进不了main

,

wang yanping:

我是在debug模式下编译的,这个有影响吗?

,

Nancy Wang:

wang yanping 说:我是在debug模式下编译的,这个有影响吗?

没有影响的。

赞(0)
未经允许不得转载:TI中文支持网 » TMS320C6455: TMS320C6455如何制作烧录到外部NOR FLASH的bin文件
分享到: 更多 (0)