This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

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启动方式进行配置应该怎么配置?

谢谢

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

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

  • 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的程序我们都读出来验证过了,也是没有问题的。还可能有什么原因造成上述现象???

  • 你好:

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

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

    谢谢!

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

  • FPGA强制启动I2C在0x51处的IBL程序,IBL启动以后从FPGA的寄存器中读取启动方式的设置信息。

    具体的看MCSDK中的IBL代码,6678的话就是C66xinit.c中的iblEnterRom()函数。

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

    麻烦指导一下,谢谢

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

  • Yang Yang7 说:

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

    请问可以具体说一说有关修改IBL的代码的情况吗?

    我现在遇到的问题是不管配置什么状态,DEVSTAT寄存器获取得到的都是0x0000FFFF。

    非常感谢!

  • Hi, Ting Zheng1:

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

  • liang jiang

       你好!

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

  • 您好,我正在做这一方面,请问一下怎么修改ibl代码?

  • 您好,我遇到了和您之前一样的问题,请问您最后是怎么解决的。 您说修改IBL代码,但是从DEVSTAT直接看就是0x21,这个和IBL有什么关系?

    如果通过修改IBL代码可以解决,应该怎么修改,修改完如何进行编译。