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

C2000系列 F28062的SCI-BOOT程序烧录问题请教

 因项目需要,我们开展了SCI-boot 方式烧录28062芯片程序工作。通过一段时间的熟悉,我们了解到SCI-boot方式烧录的基本流程是:
      a)先短接烧录端子;
      b) 通过串口向芯片SCI口发送“0x41”,用来校验波特率;
      c)当收到芯片返回的“0x41”时,按照TRM手册上2.2.11节中数据流下发我们的CKFA代码(CKFA代码很小仅是控制GPIO输出定时翻转);
      d)等待小许,收到了下发的数据表示我们的CKFA下载成功。按照正常的逻辑,现在的现象板子指定的GPIO输出会定时翻转,但是实际上没有动作,即CKFA没   有自动运行。

问题:
1.通过串口发送CKFA时,DSP保存CKFA的位置?
2.DSP保存CKFA的位置是M0、M1 SARAM?空间大小是否满足要求?
3.CKFA的Entrypoint应该是多少?发送CKFA没有自动运行,是由于Entrypoint的原因吗?
4.做SCI-boot的CKFA时,CMD该如何配置,附上我们CKFA的CMD,看看是否合理。

我将我们的工程CMD文件上传,请各位给看看。
MEMORY
{
PAGE 0 :
   /* BEGIN is used for the "boot to SARAM" bootloader mode   */

   BEGIN      : origin = 0x000000, length = 0x000002
   RAMM0      : origin = 0x000050, length = 0x0003B0
   RAML0_L3   : origin = 0x008000, length = 0x002000     /* RAML0-3 combined for size of .text */
                                                            /* in Example_F2806xSWPrioritezedInterrupts */
   RESET      : origin = 0x3FFFC0, length = 0x000002
   FPUTABLES  : origin = 0x3FD860, length = 0x0006A0     /* FPU Tables in Boot ROM */
   IQTABLES   : origin = 0x3FDF00, length = 0x000B50     /* IQ Math Tables in Boot ROM */
   IQTABLES2  : origin = 0x3FEA50, length = 0x00008C     /* IQ Math Tables in Boot ROM */
   IQTABLES3  : origin = 0x3FEADC, length = 0x0000AA     /* IQ Math Tables in Boot ROM */

   BOOTROM    : origin = 0x3FF3B0, length = 0x000C10

PAGE 1 :

   BOOT_RSVD   : origin = 0x000002, length = 0x00004E     /* Part of M0, BOOT rom will use this for stack */
   RAMM1       : origin = 0x000480, length = 0x000380     /* on-chip RAM block M1 */
   RAML4       : origin = 0x00A000, length = 0x002000     /* on-chip RAM block L4 */
   RAML5       : origin = 0x00C000, length = 0x002000     /* on-chip RAM block L5 */

    SYSTEM      : origin = 0x007010, length = 0x000030     /* System Control Registers */
    CPU_TIMER1  : origin = 0x000C08, length = 0x000008     /* CPU Timer1 Registers */
    GPIOCTRL    : origin = 0x006F80, length = 0x000040     /* GPIO Control Registers */
    SCIA        : origin = 0x007050, length = 0x000010     /* SCI-A registers */

}

SECTIONS
{
   codestart        : > RAMM0,     PAGE = 0
   .text            : > RAMM0,  PAGE = 0
   .cinit           : > RAMM0,     PAGE = 0
   .pinit           : > RAMM0,     PAGE = 0
   .switch          : > RAMM0,     PAGE = 0
   .reset           : > RESET,     PAGE = 0, TYPE = DSECT /* not used, */

   .stack           : > RAMM1,     PAGE = 1
   .ebss            : > RAMM0,     PAGE = 0
   .econst          : > RAMM0,     PAGE = 0
   .esysmem         : > RAMM0,     PAGE = 0
   .SCIARegs            : > SCIA        PAGE = 1
   DMARAML5            : > RAMM0,     PAGE = 0

   SysCtrlRegsFile   : > SYSTEM,      PAGE = 1
    CpuTimer1RegsFile : > CPU_TIMER1,  PAGE = 1
    GpioCtrlRegsFile  : > GPIOCTRL,    PAGE = 1

}

tong Lee:

问题补充:  开展这项工作的目的是:烧录白片时调高生产效率;对于成品能起到远程固件升级的效果。

 因项目需要,我们开展了SCI-boot 方式烧录28062芯片程序工作。通过一段时间的熟悉,我们了解到SCI-boot方式烧录的基本流程是:
      a)先短接烧录端子;
      b) 通过串口向芯片SCI口发送“0x41”,用来校验波特率;
      c)当收到芯片返回的“0x41”时,按照TRM手册上2.2.11节中数据流下发我们的CKFA代码(CKFA代码很小仅是控制GPIO输出定时翻转);
      d)等待小许,收到了下发的数据表示我们的CKFA下载成功。按照正常的逻辑,现在的现象板子指定的GPIO输出会定时翻转,但是实际上没有动作,即CKFA没   有自动运行。

问题:
1.通过串口发送CKFA时,DSP保存CKFA的位置?
2.DSP保存CKFA的位置是M0、M1 SARAM?空间大小是否满足要求?
3.CKFA的Entrypoint应该是多少?发送CKFA没有自动运行,是由于Entrypoint的原因吗?
4.做SCI-boot的CKFA时,CMD该如何配置,附上我们CKFA的CMD,看看是否合理。

我将我们的工程CMD文件上传,请各位给看看。
MEMORY
{
PAGE 0 :
   /* BEGIN is used for the "boot to SARAM" bootloader mode   */

   BEGIN      : origin = 0x000000, length = 0x000002
   RAMM0      : origin = 0x000050, length = 0x0003B0
   RAML0_L3   : origin = 0x008000, length = 0x002000     /* RAML0-3 combined for size of .text */
                                                            /* in Example_F2806xSWPrioritezedInterrupts */
   RESET      : origin = 0x3FFFC0, length = 0x000002
   FPUTABLES  : origin = 0x3FD860, length = 0x0006A0     /* FPU Tables in Boot ROM */
   IQTABLES   : origin = 0x3FDF00, length = 0x000B50     /* IQ Math Tables in Boot ROM */
   IQTABLES2  : origin = 0x3FEA50, length = 0x00008C     /* IQ Math Tables in Boot ROM */
   IQTABLES3  : origin = 0x3FEADC, length = 0x0000AA     /* IQ Math Tables in Boot ROM */

   BOOTROM    : origin = 0x3FF3B0, length = 0x000C10

PAGE 1 :

   BOOT_RSVD   : origin = 0x000002, length = 0x00004E     /* Part of M0, BOOT rom will use this for stack */
   RAMM1       : origin = 0x000480, length = 0x000380     /* on-chip RAM block M1 */
   RAML4       : origin = 0x00A000, length = 0x002000     /* on-chip RAM block L4 */
   RAML5       : origin = 0x00C000, length = 0x002000     /* on-chip RAM block L5 */

    SYSTEM      : origin = 0x007010, length = 0x000030     /* System Control Registers */
    CPU_TIMER1  : origin = 0x000C08, length = 0x000008     /* CPU Timer1 Registers */
    GPIOCTRL    : origin = 0x006F80, length = 0x000040     /* GPIO Control Registers */
    SCIA        : origin = 0x007050, length = 0x000010     /* SCI-A registers */

}

SECTIONS
{
   codestart        : > RAMM0,     PAGE = 0
   .text            : > RAMM0,  PAGE = 0
   .cinit           : > RAMM0,     PAGE = 0
   .pinit           : > RAMM0,     PAGE = 0
   .switch          : > RAMM0,     PAGE = 0
   .reset           : > RESET,     PAGE = 0, TYPE = DSECT /* not used, */

   .stack           : > RAMM1,     PAGE = 1
   .ebss            : > RAMM0,     PAGE = 0
   .econst          : > RAMM0,     PAGE = 0
   .esysmem         : > RAMM0,     PAGE = 0
   .SCIARegs            : > SCIA        PAGE = 1
   DMARAML5            : > RAMM0,     PAGE = 0

   SysCtrlRegsFile   : > SYSTEM,      PAGE = 1
    CpuTimer1RegsFile : > CPU_TIMER1,  PAGE = 1
    GpioCtrlRegsFile  : > GPIOCTRL,    PAGE = 1

}

tong Lee:

问题已解决。准备结贴。

 因项目需要,我们开展了SCI-boot 方式烧录28062芯片程序工作。通过一段时间的熟悉,我们了解到SCI-boot方式烧录的基本流程是:
      a)先短接烧录端子;
      b) 通过串口向芯片SCI口发送“0x41”,用来校验波特率;
      c)当收到芯片返回的“0x41”时,按照TRM手册上2.2.11节中数据流下发我们的CKFA代码(CKFA代码很小仅是控制GPIO输出定时翻转);
      d)等待小许,收到了下发的数据表示我们的CKFA下载成功。按照正常的逻辑,现在的现象板子指定的GPIO输出会定时翻转,但是实际上没有动作,即CKFA没   有自动运行。

问题:
1.通过串口发送CKFA时,DSP保存CKFA的位置?
2.DSP保存CKFA的位置是M0、M1 SARAM?空间大小是否满足要求?
3.CKFA的Entrypoint应该是多少?发送CKFA没有自动运行,是由于Entrypoint的原因吗?
4.做SCI-boot的CKFA时,CMD该如何配置,附上我们CKFA的CMD,看看是否合理。

我将我们的工程CMD文件上传,请各位给看看。
MEMORY
{
PAGE 0 :
   /* BEGIN is used for the "boot to SARAM" bootloader mode   */

   BEGIN      : origin = 0x000000, length = 0x000002
   RAMM0      : origin = 0x000050, length = 0x0003B0
   RAML0_L3   : origin = 0x008000, length = 0x002000     /* RAML0-3 combined for size of .text */
                                                            /* in Example_F2806xSWPrioritezedInterrupts */
   RESET      : origin = 0x3FFFC0, length = 0x000002
   FPUTABLES  : origin = 0x3FD860, length = 0x0006A0     /* FPU Tables in Boot ROM */
   IQTABLES   : origin = 0x3FDF00, length = 0x000B50     /* IQ Math Tables in Boot ROM */
   IQTABLES2  : origin = 0x3FEA50, length = 0x00008C     /* IQ Math Tables in Boot ROM */
   IQTABLES3  : origin = 0x3FEADC, length = 0x0000AA     /* IQ Math Tables in Boot ROM */

   BOOTROM    : origin = 0x3FF3B0, length = 0x000C10

PAGE 1 :

   BOOT_RSVD   : origin = 0x000002, length = 0x00004E     /* Part of M0, BOOT rom will use this for stack */
   RAMM1       : origin = 0x000480, length = 0x000380     /* on-chip RAM block M1 */
   RAML4       : origin = 0x00A000, length = 0x002000     /* on-chip RAM block L4 */
   RAML5       : origin = 0x00C000, length = 0x002000     /* on-chip RAM block L5 */

    SYSTEM      : origin = 0x007010, length = 0x000030     /* System Control Registers */
    CPU_TIMER1  : origin = 0x000C08, length = 0x000008     /* CPU Timer1 Registers */
    GPIOCTRL    : origin = 0x006F80, length = 0x000040     /* GPIO Control Registers */
    SCIA        : origin = 0x007050, length = 0x000010     /* SCI-A registers */

}

SECTIONS
{
   codestart        : > RAMM0,     PAGE = 0
   .text            : > RAMM0,  PAGE = 0
   .cinit           : > RAMM0,     PAGE = 0
   .pinit           : > RAMM0,     PAGE = 0
   .switch          : > RAMM0,     PAGE = 0
   .reset           : > RESET,     PAGE = 0, TYPE = DSECT /* not used, */

   .stack           : > RAMM1,     PAGE = 1
   .ebss            : > RAMM0,     PAGE = 0
   .econst          : > RAMM0,     PAGE = 0
   .esysmem         : > RAMM0,     PAGE = 0
   .SCIARegs            : > SCIA        PAGE = 1
   DMARAML5            : > RAMM0,     PAGE = 0

   SysCtrlRegsFile   : > SYSTEM,      PAGE = 1
    CpuTimer1RegsFile : > CPU_TIMER1,  PAGE = 1
    GpioCtrlRegsFile  : > GPIOCTRL,    PAGE = 1

}

Hong Liu37:

你好,不知道你什么时候上来看你的帖子,请教一下,我现在刚用28069,为了考虑批量生产,我要用串口进行烧录,但是总是失败,原因为,C2prog,报错,INVALID HEX DATA,你可以将你的经验和我分享吗?谢谢!

 因项目需要,我们开展了SCI-boot 方式烧录28062芯片程序工作。通过一段时间的熟悉,我们了解到SCI-boot方式烧录的基本流程是:
      a)先短接烧录端子;
      b) 通过串口向芯片SCI口发送“0x41”,用来校验波特率;
      c)当收到芯片返回的“0x41”时,按照TRM手册上2.2.11节中数据流下发我们的CKFA代码(CKFA代码很小仅是控制GPIO输出定时翻转);
      d)等待小许,收到了下发的数据表示我们的CKFA下载成功。按照正常的逻辑,现在的现象板子指定的GPIO输出会定时翻转,但是实际上没有动作,即CKFA没   有自动运行。

问题:
1.通过串口发送CKFA时,DSP保存CKFA的位置?
2.DSP保存CKFA的位置是M0、M1 SARAM?空间大小是否满足要求?
3.CKFA的Entrypoint应该是多少?发送CKFA没有自动运行,是由于Entrypoint的原因吗?
4.做SCI-boot的CKFA时,CMD该如何配置,附上我们CKFA的CMD,看看是否合理。

我将我们的工程CMD文件上传,请各位给看看。
MEMORY
{
PAGE 0 :
   /* BEGIN is used for the "boot to SARAM" bootloader mode   */

   BEGIN      : origin = 0x000000, length = 0x000002
   RAMM0      : origin = 0x000050, length = 0x0003B0
   RAML0_L3   : origin = 0x008000, length = 0x002000     /* RAML0-3 combined for size of .text */
                                                            /* in Example_F2806xSWPrioritezedInterrupts */
   RESET      : origin = 0x3FFFC0, length = 0x000002
   FPUTABLES  : origin = 0x3FD860, length = 0x0006A0     /* FPU Tables in Boot ROM */
   IQTABLES   : origin = 0x3FDF00, length = 0x000B50     /* IQ Math Tables in Boot ROM */
   IQTABLES2  : origin = 0x3FEA50, length = 0x00008C     /* IQ Math Tables in Boot ROM */
   IQTABLES3  : origin = 0x3FEADC, length = 0x0000AA     /* IQ Math Tables in Boot ROM */

   BOOTROM    : origin = 0x3FF3B0, length = 0x000C10

PAGE 1 :

   BOOT_RSVD   : origin = 0x000002, length = 0x00004E     /* Part of M0, BOOT rom will use this for stack */
   RAMM1       : origin = 0x000480, length = 0x000380     /* on-chip RAM block M1 */
   RAML4       : origin = 0x00A000, length = 0x002000     /* on-chip RAM block L4 */
   RAML5       : origin = 0x00C000, length = 0x002000     /* on-chip RAM block L5 */

    SYSTEM      : origin = 0x007010, length = 0x000030     /* System Control Registers */
    CPU_TIMER1  : origin = 0x000C08, length = 0x000008     /* CPU Timer1 Registers */
    GPIOCTRL    : origin = 0x006F80, length = 0x000040     /* GPIO Control Registers */
    SCIA        : origin = 0x007050, length = 0x000010     /* SCI-A registers */

}

SECTIONS
{
   codestart        : > RAMM0,     PAGE = 0
   .text            : > RAMM0,  PAGE = 0
   .cinit           : > RAMM0,     PAGE = 0
   .pinit           : > RAMM0,     PAGE = 0
   .switch          : > RAMM0,     PAGE = 0
   .reset           : > RESET,     PAGE = 0, TYPE = DSECT /* not used, */

   .stack           : > RAMM1,     PAGE = 1
   .ebss            : > RAMM0,     PAGE = 0
   .econst          : > RAMM0,     PAGE = 0
   .esysmem         : > RAMM0,     PAGE = 0
   .SCIARegs            : > SCIA        PAGE = 1
   DMARAML5            : > RAMM0,     PAGE = 0

   SysCtrlRegsFile   : > SYSTEM,      PAGE = 1
    CpuTimer1RegsFile : > CPU_TIMER1,  PAGE = 1
    GpioCtrlRegsFile  : > GPIOCTRL,    PAGE = 1

}

guanghong wei:

回复 tong Lee:

您好,请问您是怎么解决的呢?我们现在也是用SCI的方式烧录,但是提示

Invalid hex data

能把您经验分享吗?

赞(0)
未经允许不得转载:TI中文支持网 » C2000系列 F28062的SCI-BOOT程序烧录问题请教
分享到: 更多 (0)