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.

TMS320C6747 NOR Flash boot

Other Parts Discussed in Thread: OMAP-L137, TMS320C6748

问题分为两部分:1、烧写  2、加载

一、烧写问题:

1、首先将程序通过CCS生成.out文件,其次通过AISgen工具将.out文件转化为AIS格式的.bin文件,再其次通过CCS中的Load memory将AIS格式的.bin文件加载至SDRAM中,最后通过NOR Flash 写程序将SDRAM中的AIS格式的.bin文件烧写至NOR Flash中。此方法是否可行?或者有其他更合适的方法。

二、加载问题:

由于应用程序太大(200KB多)超过16KB,因而采用二次加载的方式,同时将程序分为两部分:1、二次加载程序   2、应用程序

1、二次加载程序通过CCS生成.out文件。然后使用AISgen工具生成AIS格式的.bin文件,在生成AIS格式的.bin文件过程中,在AISgen工具中配置了PLL,那么是否会与二次加载程序中的配置PLL冲突?应用程序中是不是不应再次配置PLL了?应该如何处理?

2、二次加载程序生成的相应的.out文件可以通过AISgen工具生成AIS格式的.bin文件,应用程序生成的.out文件可以吗?

2、应用程序生成的.out如何转化为DSP执行的.bin文件?如果使用AISgen工具转化为AIS格式的.bin文件,DSP能直接执行这种格式的.bin文件吗?SPABB1C文档中介绍的AIS格式的.bin文件似乎好像不是DSP能直接执行的机器码吧?应如何转化?

  • Elderfox Green 说:
    1、首先将程序通过CCS生成.out文件,其次通过AISgen工具将.out文件转化为AIS格式的.bin文件,再其次通过CCS中的Load memory将AIS格式的.bin文件加载至SDRAM中,最后通过NOR Flash 写程序将SDRAM中的AIS格式的.bin文件烧写至NOR Flash中。此方法是否可行?或者有其他更合适的方法。

    可以,但一般都是以读文件方式,直接读.bin写到flash,而不是load memory方式。

    Elderfox Green 说:
    1、二次加载程序通过CCS生成.out文件。然后使用AISgen工具生成AIS格式的.bin文件,在生成AIS格式的.bin文件过程中,在AISgen工具中配置了PLL,那么是否会与二次加载程序中的配置PLL冲突?应用程序中是不是不应再次配置PLL了?应该如何处理?

    AISEN里配置了,二次加载以及时应用程序里就不需要配置了。

    Elderfox Green 说:
    2、二次加载程序生成的相应的.out文件可以通过AISgen工具生成AIS格式的.bin文件,应用程序生成的.out文件可以吗?

    可行性上应用程序可以转成AIS,但是二次加载程序就要实现解释AIS文件的功能才能加载应用程序,所以很少有人采用这种方法。一般都是将应用程序转换在boot table格式,这种格式方便直观,便于二次加载程序来解释加载。

    Elderfox Green 说:
    2、应用程序生成的.out如何转化为DSP执行的.bin文件?如果使用AISgen工具转化为AIS格式的.bin文件,DSP能直接执行这种格式的.bin文件吗?SPABB1C文档中介绍的AIS格式的.bin文件似乎好像不是DSP能直接执行的机器码吧?应如何转化?

    AIS不是DSP能直接执行的,所以在将AIS文件boot起来时,需要先解释提取出执行代码而去掉格式相关的字段。只有内存镜像才可能是能直接执行的。

    参考一下文档spru186里的boot table章节。命令里加-b选项即生成bin文件,如果是-a则是ASCII码。

  • 另外参考一下L137 boot工具里的CCS工程。

    http://processors.wiki.ti.com/index.php/Serial_Boot_and_Flash_Loading_Utility_for_OMAP-L137

  • 首先非常感谢您的解答,目前还有两个疑问

    1、烧写程序使用读文件方式实现,如何实现,具体方法与工具是什么?

    2、如何将应用程序转换为boot table格式?使用什么工具?

  • 下面链接的工具里有各种flash writer,在CCS目录下:

    http://processors.wiki.ti.com/index.php/Serial_Boot_and_Flash_Loading_Utility_for_OMAP-L137

    boot table的制作参考文档spru186.

  • 1、网口带协议层(TCP、UDP)的例程

    2、EMIFA(nor flash)驱动例程

  • Elderfox Green 说:
    1、网口带协议层(TCP、UDP)的例程

    两个选择:

    #1. 用NDK: http://processors.wiki.ti.com/index.php/Network_Developers_Kit_Licensing_and_Availability?keyMatch=ndk&tisearch=Search-EN

    #2. 用LWIP,可以从C6748 starterware里的例程借鉴过来,本来LWIP也是开源的。

    Elderfox Green 说:
    2、EMIFA(nor flash)驱动例程

    前面软件里的NORwriter就是可以操作NOR的。

  • 1、ndk的有没有相关demo,是不是裸跑的?还是基于BIOS的?是否可以发个demo或者链接?

    2、LWIP的是否可以发个demo或者发个链接?

  • NDK在上面链接里啊。基于BIOS的。

    NDK 2.x

    As of February 2009, drivers for all supported devices/EVMs are provided in the NDK 2.x installation:

    NDK releases can be downloaded from: https://www-a.ti.com/downloads/sds_support/targetcontent/index.html

    Starterware下载,如果自己愿意移植,从C6748的网口例程开始会简单很多,但不要问如何从C6748转到C6747,TI不提供这种支持。

    http://processors.wiki.ti.com/index.php/StarterWare

  • 目前采用EMIFA地址线EMA_A[12:0],EMA_B1,数据总线宽度为16bit,可寻址空间只有32K字节,因此想通过6根GPIO口线进行地址扩展。

    1、通过GPIO口进行地址扩展,硬件是否规定必须使用规定的GPIO口?硬件应如何连接?

    2、目前硬件上DSP的GPIO4[5:0]与Nor flash地址[19:14]相连,是否可行?

    3、软件上应如何配置GPIO4[5:0]?应该配置哪些寄存器?GPIO4[5:0]应该配置成什么属性?是通用IO属性?还是与EMIFA相关的属性?

  • 既然如此,为什么要选C6747,而不选C6748?GPIO就是GPIO跟EMIF没有相关属性,只是用它来充当EMIF高位地址线,通过软件来控制其高低状态。

    硬件上要下拉GPIO管脚,管脚任意选,没有什么规定。

    GPIO的使用阅读TRM手册的GPIO的章节.

  • 非常感谢您的建议,目前硬件已经制板,还有几个问题需要咨询下您:

    1、C6748与C6747封装是否一致?区别有多大?

    2、应用程序转化为boot table的格式,我也查阅了SPRU186技术手册,能否给一个现成的demo?

  • #1. 不一样,可以找开各自的datasheet看一下。C6748支持的是DDR2,EMIFA一个片选的地址线支持32Mbyte空间,且没那么引脚复用关系,用起来会方便很多。

    #2. 这个贴子附件的PPT里有。

    http://www.deyisupport.com/question_answer/dsp_arm/omap_l1x/f/54/t/5319.aspx

  • C6747的SDRAM参数生成工具哪里下载?

  • 没有。

    参考gel文件里的函数自己算一下吧。

    Setup_EMIFB()

    {
    // ISSI IS42S16160B-6BL SDRAM, 2 x 16M x 16 (32-bit data path), 133MHz
    EMIFB_SDCFG = 0 // SDRAM Bank Config Register
    |( 1 << 15) // Unlock timing registers
    |( 2 << 9 ) // CAS latency is 2
    |( 2 << 4 ) // 4 bank SDRAM devices
    |( 1 << 0 ); // 512-word pages requiring 9 column address bits

    EMIFB_SDREF = 0 // SDRAM Refresh Control Register
    |( 0 << 31) // Low power mode disabled
    |( 0 << 30) // MCLK stoping disabled
    |( 0 << 23) // Selects self refresh instead of power down
    |( 1040 <<0); // Refresh rate = 7812.5ns / 7.5ns

    EMIFB_SDTIM1 = 0 // SDRAM Timing Register 1
    |( 25 << 25) // (67.5ns / 7.55ns) - 1 = TRFC @ 133MHz
    |( 2 << 22 ) // (20ns / 7.5ns) - 1 =TRP
    |( 2 << 19 ) // (20ns / 7.5ns) - 1 = TRCD
    |( 1 << 16 ) // (14ns / 7.5ns) - 1 = TWR
    |( 5 << 11 ) // (45ns / 7.5ns) - 1 = TRAS
    |( 8 << 6 ) // (67.5ns / 7.5ns) - 1 = TRC
    |( 2 << 3 ); // *(((4 * 14ns) + (2 * 7.5ns)) / (4 * 7.5ns)) -1. = TRRD
    // but it says to use this formula if 8 banks but only 4 are used here.
    // and SDCFG1 register only suports upto 4 banks.

    EMIFB_SDTIM2 = 0 // SDRAM Timing Register 2
    |( 14<< 27) // not sure how they got this number. the datasheet says value should be
    // "Maximum number of refresh_rate intervals from Activate to Precharge command"
    // but has no equation. TRASMAX is 120k.
    |( 9 << 16) // ( 70 / 7.5) - 1
    |( 5 << 0 ); // ( 45 / 7.5 ) - 1

    EMIFB_SDCFG = 0 // SDRAM Bank Config Register
    |( 1 << 16)
    |( 0 << 15) // Unlock timing registers
    |( 2 << 9 ) // CAS latency is 2
    |( 2 << 4 ) // 4 bank SDRAM devices
    |( 1 << 0 ); // 512-word pages requiring 9 column address bits

    GEL_TextOut( "SDRAM Setup Complete\n" );
    }

  • 没有excel那种参数生成表吗

  • 没有现成的,有兴趣可以做一个。

  • 方便告知下6748与6747的功耗各是多少?价格各是多少?

  • 到相应的产品网页查询

  • 网口程序移植

    现状:

    1、LCDKc6748开发板中网口连接采用的MII与PHY连接,应用设计是由于引脚复用原因,设计为RMII与LCDKc6748开发板上同样的PHY相连

    2、软件采用startWare软件包中的echonet程序,软件上修改了引脚复用为RMII引脚,50M时钟采用外部时钟同时给PHY与EMAC提供时钟,寄存器上电默认为RMII模式,因此未做任何设置,其他未做任何修改

    3、目前板子上电后PHY能自动与PC机连接,EMAC与PHY连接部分不通

    问题:

    1、startWare软件开发包中echonet程序从MII模式移植成RMII模式,软件上需要做那些修改?

    2、硬件上从MII模式修改为RMII模式,硬件上需要做那些修改?

  • 只需要修改引脚pinmux。

    可以参考附件BSL的里的例程:1014014A_TMS320C6748_GEL_BSL_Files\evmc6748_v1\tests\evm\emac_loopback_rmii

    1014014A_TMS320C6748_GEL_BSL_Files.zip
  • Tony Tang 说:

    没有。

    参考gel文件里的函数自己算一下吧。

    Setup_EMIFB()

    {
    // ISSI IS42S16160B-6BL SDRAM, 2 x 16M x 16 (32-bit data path), 133MHz
    EMIFB_SDCFG = 0 // SDRAM Bank Config Register
    |( 1 << 15) // Unlock timing registers
    |( 2 << 9 ) // CAS latency is 2
    |( 2 << 4 ) // 4 bank SDRAM devices
    |( 1 << 0 ); // 512-word pages requiring 9 column address bits

    EMIFB_SDREF = 0 // SDRAM Refresh Control Register
    |( 0 << 31) // Low power mode disabled
    |( 0 << 30) // MCLK stoping disabled
    |( 0 << 23) // Selects self refresh instead of power down
    |( 1040 <<0); // Refresh rate = 7812.5ns / 7.5ns

    EMIFB_SDTIM1 = 0 // SDRAM Timing Register 1
    |( 25 << 25) // (67.5ns / 7.55ns) - 1 = TRFC @ 133MHz
    |( 2 << 22 ) // (20ns / 7.5ns) - 1 =TRP
    |( 2 << 19 ) // (20ns / 7.5ns) - 1 = TRCD
    |( 1 << 16 ) // (14ns / 7.5ns) - 1 = TWR
    |( 5 << 11 ) // (45ns / 7.5ns) - 1 = TRAS
    |( 8 << 6 ) // (67.5ns / 7.5ns) - 1 = TRC
    |( 2 << 3 ); // *(((4 * 14ns) + (2 * 7.5ns)) / (4 * 7.5ns)) -1. = TRRD
    // but it says to use this formula if 8 banks but only 4 are used here.
    // and SDCFG1 register only suports upto 4 banks.

    EMIFB_SDTIM2 = 0 // SDRAM Timing Register 2
    |( 14<< 27) // not sure how they got this number. the datasheet says value should be
    // "Maximum number of refresh_rate intervals from Activate to Precharge command"
    // but has no equation. TRASMAX is 120k.
    |( 9 << 16) // ( 70 / 7.5) - 1
    |( 5 << 0 ); // ( 45 / 7.5 ) - 1

    EMIFB_SDCFG = 0 // SDRAM Bank Config Register
    |( 1 << 16)
    |( 0 << 15) // Unlock timing registers
    |( 2 << 9 ) // CAS latency is 2
    |( 2 << 4 ) // 4 bank SDRAM devices
    |( 1 << 0 ); // 512-word pages requiring 9 column address bits

    GEL_TextOut( "SDRAM Setup Complete\n" );
    }

    你好,EMIFB_SDTIM1寄存器时关于TRFC的配置为什么计算结果等于25?按照TI手册上的公式来计算应该和该寄存器TRC的配置结果一直,应该是8。TRFC的25的计算结果怎么得到的??

  • gel只是参考。以手册上的计算方法为准。