大家好,
我在做C6678板子,现在写完了上电时序,给板子加电后,遇到了如下的问题:
在CCS的“Target Configuration”中,测试连接了一下,显示JTAG链正常。
但是我写了一个简单的程序后Debug,却弹出对话框,显示:“Device is held in reset”。
可是我板子上C6678的RESETSTST引脚已经指示高电平了,怎么还显示说Device处于reset状态??
我的上电程序中,对BOOTMODE[]12:0]的配置是:0b011 0000000 000
还有就是C6678的GEL文件怎么编写?
Andy Yin1:
1. 对照手册看看上电时序是否满足要求;
2. 测量各输入电压及时钟是否满足要求并且稳定。
gel就是用来初始化main pll及DDR,可以参考ccs及mcsdk中自带的模板修改其中的pll及DDR初始化程序即可,或者可以参考如下链接中提供的基本例程,这些例程中包含了PLL及ddr的初始化代码,此时不需要gel。
http://www.deyisupport.com/question_answer/w/faq/215.keystone-c66xdsp.aspx
Feng Jin:
回复 Andy Yin1:
谢谢您的回复!
我供给6678的电源、时钟应该没有问题。上电时序也是按照advantech的EVM手册来的。
最后都把POR、RESET、RESETFULL都拉高了。
而且RESETSTAT引脚都指示高电平了,为什么还是显示“device is held in reset?
#############################################################################
目前,我只是做了以下步骤,烦您看看正确与否
1. C6678的CVDD、CVDD_Fixed、1.8V、1.5V、0.75V都正常供应。
2. C6678的Core(100MHz)、DDR(66.67MHz)、PASS(100MHz)都正常供应
3. FPGA端按照advantech的EVM写了上电时序,
4. 在上电时序的最后阶段:拉高RESET(同时给BOOTMODE[12:0]为0b0110000000000),接着拉高POR,最后拉高RESETFULL
对于这样的步骤,我有以下几个问题:
1.我计划是先给NO BOOT,然后写个GPIO程序测试一下软件到硬件的通路。那么我在第4步骤时,给BOOTMODE[12:0]为0b0110000000000行不行?我参照6678最新的Datasheet的2.5.4 PLL Boot Configuration Settings一节,我的Core是100MHz、器件是1.25GHz的,所以如果我把BOOTMODE[12:10]给了0b011,则6678的工作频率就是1.25GHz?其中的PLLD=0、PLLM=24,是RBL固化的,不需要自己配?
2. 我这样操作后,C6678的RESETFULL引脚已经指示高电平了。那么为什么我在CCS端写个GPIO程序后,Debug,连接C6678时显示“Device is held in reset”?我想问一下:CCS是根据什么判断6678处于RESET状态的?比如,CCS是去读6678的某个寄存器的值后判断的?还是?我这样问是为了定位我的板卡中6678仍然处于RESET的原因。
Feng Jin:
回复 Andy Yin1:
我发现问题了:应该是我直接就是NO BOOT模式,导致内部的Main PLL处于Bypass模式,输入的100MHz没有经过PLLD、PLLM。而且我检测到C6678的SYSCLKOUT引脚输出的是16.67MHz(100MHz/6)。所以C6678没有运行起来。请问是这么回事吗?
那么我现在想让C6678的Core0跑起来,我打算切换到SPI BOOT Mode。按照Secondary Boot的方式,RBL将从外部的SPI Flash拷贝最前一段的参数表以便去配置PLL。那么我很疑惑:
我怎么把这个参数表烧到SPI FLASH里面去呢?在RBL执行这个参数表之前,C6678是没有运行的,也就无法通过C6678去烧写这个SPI FLASH。难道要把SPI FLASH拆下来后,用外部烧写器烧写??
还有这个SPI FLASH的parameter table,有例子参考吗?
期待您的回复!!
Nick Zhang~:
回复 Feng Jin:
16.67M是正常的 默认就是bypass模式
Feng Jin:
回复 Nick Zhang~:
您好!
您说的对。我目前给了SPI BOOT mode,默认是Bypass mode,100MHz的COREclk的话,SYSCLK输出的是16.6MHz。我还没有写第二级bootloader去配置Main PLL。
.
请问您知不知道,为什么在bypass mode下,我用CCS去连接C6678,却显示“Device is held in reset”?我的C6678的RESETSTAT引脚,已经指示高电平了啊。
我写的是很简单的一个程序,就是在控制台下显示“Hello”。没有添加GEL文件,没有添加CMD文件。只是弄了“target configuration”cxml文件,然后点击”test connection“显示的是”JTAG DR interigty chain had been scanned successfully“(大概是这样)。
.
难道是必须要CMD文件?或者GEL文件?
.
望您回复
Feng Jin:
回复 Feng Jin:
自己的错误:
1. 把LRESET、LRESETNMIEN、NMI、CORESEL0~3漏了;
2. BOOTMODE[12:0]对应到GPIO的[12:0]了。
改了后,加上EVM的GEL、TI原始的CMD,程序可以调试了。
物色物色:
回复 Feng Jin:
你好,问题具体怎么解决的啊,我也遇到了和你一样的问题,望指点一二,谢谢
yimin dong:
回复 Feng Jin:
Feng Jin:
你好,我现在也正在调试6678,现在能跑通helloworld的例程,但是有时会发生错误,不知道是不是LRESET、LRESETNMIEN、NMI、CORESEL0~3的配置有问题。
我现在把LRESET=1、LRESETNMIEN=0、NMI=1、CORESEL0~3=1000是在拉高RESET的同时赋值的,不知道这个值和时序是否是正确的?
能不能告诉我你LRESET、LRESETNMIEN、NMI、CORESEL0~3的时序?
user4939991:
回复 yimin dong:
同问,现在手头也遇到这个问题了
user4802057:
您好,我们目前调试6678,也碰到跟你一样的问题6678 device is held in reset,麻烦问一下,你怎么解决的呀?谢谢!就是上电是怎么初始化,自己的错误:
1. 把LRESET、LRESETNMIEN、NMI、CORESEL0~3漏了;
2. BOOTMODE[12:0]对应到GPIO的[12:0]了。
怎么解决的呀?