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

C6678 I2C 加载nandflash问题

各位专家,

        我们自己做的6678板,DSP用的PG1.0,和评估板用的一样的i2c芯片,一样的nandflash,一样的程序,程序可以正常下载到i2c和nandflash中,但是用评估板可以正常启动,但我们自己的板不能启动。我们同时测试了POST程序,发现POST程序在我们的板上是可以启动的,但启动的速度要比评估板慢很多。

        我们猜想问题可能出在fpga上,是不是上电,复位或引导顺序出现了什么问题。于是研读了TI所提供的FPGA代码,并将FPGA代码做了仿真,及实际测试,非常奇怪的是,在TI官方所给的FPGA代码中,DSP的启动配置引脚DSP_GPIO_p,是被强制配为了0x080b,也就是I2C在0x51地址上启动,这是shevm_fpga_core.v里强制配置的代码: 

assign    force_bootmode [13:1] = (bm_gpio_i[6:5]==2'b00 && bm_gpio_i[3:1]==3'b000)? bm_gpio_i[13:1] : 13'h405;assign    dsp_gpio_o = {bm_gpio_i[15:14], force_bootmode[13:1], bm_gpio_i[0]};  //20110219

这是我们仿真图

现在的问题是,的确在评估板的拨码开关拨不同的值时,6678的启动方式不一样。

我们问题是6678什么时候把启动方式读到自己寄存器里的,如果我们用FPGA对6678启动方式进行配置应该怎么配置?

谢谢

Andy Yin1:

你上面说post程序在你们的板卡上也是可以通过I2C加载运行成功?但是另外一个程序不能运行么?

6678在上电后,会将bootpin管脚的状态锁定到DEVSTAT寄存器中,进入ROM中的RBL后会读取DEVSTAT寄存器决定boot mode。I2C bootmode可以配置boot开始的地址是0x50或者0x51,你可以根据你们的板卡设计进行选择,你可以试试设置为0x51后是否boot成功。

Yang Yang7:

回复 Andy Yin1:

Hello Andy

     POST程序是TI所给的mcsdk的tools目录下用来上电测试的程序,可以烧写到I2C的0x50地址下用来进行上电测试,我们将6678的bootpin管脚设为00000000001011后,可以启动I2C内的测试程序,但是POST程序不引导nandflash,这时读取DEVSTAT寄存器的值为0x0B,和我们的设置是一致的。

      但是如果我们将bootpin设为00100000101011,也就是从I2C的0x51地址加载程序,是不成功的,DEVSTAT寄存器的值这时候会变为0x21,而正常启动应该是0x82B的,也就是说可能存在两种情况:

      1.系统上电的过程中DSP读取bootpin管脚错了,导致加载错误。

      2.系统上电是正确的,但程序运行过程中将DEVSTAT寄存器的值给改了

      而从TI的手册上看,bootpin的值需要在RESETFULL拉起的前后保持稳定(如下图),我们的板的bootpin管脚是上电就赋值,应该满足这个条件,但出现的上述情况,现在想不出来是什么原因造成的,I2C和nandflash的程序我们都读出来验证过了,也是没有问题的。还可能有什么原因造成上述现象???

fuming bai:

你好:

“于是研读了TI所提供的FPGA代码,并将FPGA代码做了仿真”,你的TI所提供的FPGA代码是在哪里找到的?在说明地方可以下载到?

你们问题解决了吗?我也遇到差不多的问题了,能给指点下吗?我的邮箱:bfmnuc@163.com

谢谢!

Andy Yin1:

回复 fuming bai:

可以在http://www.advantech.com/Support/TI-EVM/ 相关EVM链接中找到EVM相关资料。

Wu Feng:

回复 Yang Yang7:

你好,不知道你的这个状态最后是如何解决的,现在我们自行设计的板子也在配置bootpin 为I2C启动后,读DEVSTAT寄存器状态为0x21。

麻烦指导一下,谢谢

Yang Yang7:

回复 Wu Feng:

修改ibl的代码就可以了!!

Ting Zheng1:

回复 Yang Yang7:

Yang Yang7

修改ibl的代码就可以了!!

user4217086:

回复 Ting Zheng1:

Hi, Ting Zheng1:

    我也遇到了和你相同的情况,不管怎么配置GPIO管脚,DEVSTAT寄存器的值都是0x0000FFFF,你现在有没有解决这个问题?

Ting Zheng1:

回复 user4217086:

liang jiang

   你好!

   我的GPIO管脚配置是由FPGA控制,当时是复位信号时序不对导致DEVSTAT寄存器没有读取到GPIO的值。按照DSP datasheet修改复位信号时序后就可以了。

赞(0)
未经允许不得转载:TI中文支持网 » C6678 I2C 加载nandflash问题
分享到: 更多 (0)