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

关于C6748程序仿真能运行,但是烧录到NAND FLASH就重新上电不运行

我参考官网的《TMS320C6748 DSP 开发套件 (LCDK)》原理图做了块板,NAND FLASH和DDR都是直接用官网的原理图了,用16位的nandflash,制作了NANDWriter_DSP,提示已经烧写成功了,但是拔掉仿真器重新上电后还是不能正常工作,LED灯不闪烁。什么原因?

user6157972:

补充:请问是我的CMD文件要修改什么东西吗?以下是我的CMD配置
MEMORY
{
#ifdef DSP_CORE
/****************************************************************************/
/**/
/*DSP 专有内存区域*/
/**/
/****************************************************************************/DSPL2ROMo = 0x00700000l = 0x00100000/* 1MBL2 DSP 本地 ROM (DSP ROM Bootloader) */DSPL2RAMo = 0x00800000l = 0x00040000/* 256kB L2 DSP 本地 RAM */DSPL1PRAMo = 0x00E00000l = 0x00008000/* 32kBL1 DSP 本地程序 RAM */DSPL1DRAMo = 0x00F00000l = 0x00008000/* 32kBL1 DSP 本地数据 RAM */
#endif

/****************************************************************************/
/**/
/*公共内存区域*/
/**/
/****************************************************************************/SHDSPL2ROMo = 0x11700000l = 0x00100000/* 1MBL2 共享内置 ROM */SHDSPL2RAMo = 0x11800000l = 0x00040000/* 256KB L2 共享内置 RAM */SHDSPL1PRAMo = 0x11E00000l = 0x00008000/* 32KBL1 共享内置程序 RAM */SHDSPL1DRAMo = 0x11F00000l = 0x00008000/* 32KBL1 共享内置数据 RAM */
EMIFACS0o = 0x40000000l = 0x20000000/* 512MB SDRAM (CS0) */EMIFACS2o = 0x60000000l = 0x02000000/* 32MB异步(CS2) */EMIFACS3o = 0x62000000l = 0x02000000/* 32MB异步(CS3) */EMIFACS4o = 0x64000000l = 0x02000000/* 32MB异步(CS4) */EMIFACS5o = 0x66000000l = 0x02000000/* 32MB异步(CS5) */
SHRAMo = 0x80000000l = 0x00020000/* 128KB 共享 RAM */DDR2o = 0xC0001000l = 0x08000000/* 128MBDDR2 分配给 DSP */
EntryPointo = 0xC0000000l = 0x00000800/* 2 KBC 语言入口点 */Vectoro = 0xC0000800l = 0x00000800/* 2 KB中断向量表 */

/****************************************************************************/
/**/
/*外设内存区域*/
/**/
/****************************************************************************/SYSCFG0o = 0x01C14000l = 0x00001000/* 4KSYSCFG0 */uPPo = 0x01E16000l = 0x00001000/* 4KuPP */GPIOo = 0x01E26000l = 0x00001000/* 4KGPIO */McBSP1o = 0x01D11000l = 0x00000800/* 2KMcBSP1 */

#ifndef DSP_CORE
/****************************************************************************/
/**/
/*ARM 专有内存区域*/
/**/
/****************************************************************************/ARMROMo = 0xFFFD0000l = 0x00010000/* 64kBARM 本地 ROM (ARM ROM Bootloader) */ARMRAMo = 0xFFFF0000l = 0x00002000/* 8kBARM 本地 RAM */
#endif
}

SECTIONS
{.text:_c_int00 >EntryPoint/* 可执行代码 C 程序入口点*/.text>DDR2/* 可执行代码 */.stack>DDR2/* 软件系统栈 *///.bss>DDR2/* 未初始化全局及静态变量 */.cio>DDR2/* C 输入输出缓存 */".vectors">Vector/* 中断向量表 */.const>DDR2/* 常量 */.data>DDR2/* 已初始化全局及静态变量 */.switch>DDR2/* 跳转表 */.sysmem>DDR2/* 动态内存分配区域 */.far>DDR2/* 远程全局及静态变量 */.args>DDR2.ppinfo>DDR2.ppdata>DDR2
/* TI-ABI 或 COFF */.pinit>DDR2/* C++ 结构表 */.cinit>DDR2/* 初始化表 */
/* EABI */.binit>DDR2.init_array>DDR2//.neardata>DDR2.fardata>DDR2//.rodata>DDR2.c6xabi.exidx >DDR2.c6xabi.extab >DDR2GROUP (NEARDP_DATA)// group near data{.neardata.rodata.bss// note: removed fill = 0}>DDR2
/* DDR2 */.buffer>DDR2
/* 外设*/.Reg_SYSCFG0 >SYSCFG0.Reg_uPP>uPP.Reg_GPIO>GPIO.Reg_McBSP1>McBSP1
}

Nancy Wang:

参考以下链接的Question: Why does my program work in CCS but does not boot from flash看一下
www.ti.com/…/spracm8.pdf
先检查以下几个方面:
1、Gel File Reliance
2、Incorrect External Memory Configuration3、Incorrect Boot Mode

user6157972:

回复 Nancy Wang:

第1点不太明白是什么意思?

第3点启动从nandflash,硬件上BOOT0拉低,BOOT1\2\\3拉高其它都拉低

第2点外部内存配置,是指.cfg文件里的吗?如下:

Boot Mode=NAND FlashBoot Speed=115200Flash Width=0Flash Timing=8224114Configure Peripheral=FalseConfigure PLL0=TrueConfigure SDRAM=FalseConfigure PLL1=TrueConfigure DDR2=TrueConfigure LPSC=TrueConfigure Pinmux=FalseEnable CRC=FalseSpecify Entrypoint=FalseEnable Sequential Read=FalseUse 4.5 Clock Divider=FalseUse DDR2 Direct Clock=FalseUse mDDR=FalseUse DuplicateMddrSetting=FalseROM ID=3Device Type=1Input Clock Speed=24Clock Type=0PLL0 Pre Divider=1PLL0 Multiplier=19PLL0 Post Divider=1PLL0 Div1=1PLL0 Div3=4PLL0 Div7=10PLL1 Multiplier=13PLL1 Post Divider=1PLL1 Div1=1PLL1 Div2=2PLL1 Div3=3Entrypoint=0SDRAM SDBCR=0SDRAM SDTMR=0SDRAM SDRSRPDEXIT=0SDRAM SDRCR=0DDR2 PHY=c3DDR2 SDCR=134632DDR2 SDCR2=0DDR2 SDTIMR=264a2a09DDR2 SDTIMR2=4412c722DDR2 SDRCR=40000260LPSC0 Enable=0+1+2+3+4+5+9+11+12+13+15+LPSC0 Disable=LPSC0 SyncRst=LPSC1 Enable=0+1+3+4+5+6+7+9+10+11+12+13+14+15+16+17+18+19+20+21+24+25+26+27+28+29+30+31+LPSC1 Disable=LPSC1 SyncRst=Pinmux=App File String=AIS File Name=

Nancy Wang:

回复 user6157972:

1、在线仿真的时候是通过GEL文件来配置DDR/PINMUX/PLL等,烧写程序是通过AISgen工具来配置,要确保两者配置是一致的。2、你应该是从nand 16启动,启动方式似乎配置的不对。

3、就是DDR部分的配置,也是在AISgen里面配置的。

user6157972:

回复 Nancy Wang:

我把BOOT0\1\2\3接地,BOOT4接高电平,其它低电平,都还是一样,仿真正常烧进去就不工作。一开始选择0x01110启动是因为官网的这个原理图上是16位的flash(我跟官网的一样了),而且官网原理图上标的启动有两项其中一项就是从nandflash启动写的是0x01110的,如下图

user6157972:

回复 Nancy Wang:

我的板子有一个问题是本应该1.8V的电压,却有时候是2.7V,有时候二次上电又正常1.8V,不知道这个会不会影响

Nancy Wang:

回复 user6157972:

也可以参考这个链接中的步骤再试一下,看能否正常启动,需要下载staterware。 processors.wiki.ti.com/…/C6748_StarterWare_Booting_And_Flashing 

staterware中提供的bootloader已经做了aisgen中需要的一些配置,可以排除配置问题。

user6157972:

回复 Nancy Wang:

你好!我又一块板子的各个电压都是正常的了,也能从仿真里读出BOOTMODE跟设置的一样是10000,但是还是不能脱离仿真器运行。有两个疑问,

1、我怎么可以判断我的ais程序真的烧到nand flash里了呢?我只是从仿真的时候可以看到提示NAND boot preparation was successful!  还有其它方法可以验证我的ais程序在不在nandflash吗?

2、可不可以提供一下16位nandflash的引导源程序?以下是我用到的DDR和flash

Nancy Wang:

回复 user6157972:

1、可以从nand flash中将数据读取出来与你生成的.ais文件对比看一下。
2、你是指哪个引导程序?是我上一条回复贴出来的吗?
software-dl.ti.com/…/index_FDS.html

赞(0)
未经允许不得转载:TI中文支持网 » 关于C6748程序仿真能运行,但是烧录到NAND FLASH就重新上电不运行
分享到: 更多 (0)