因项目需要,我们开展了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
能把您经验分享吗?