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.

F28035串口在线升级的问题



/*
//###########################################################################
//
// FILE:	F2808.cmd
//
// TITLE:	Linker Command File For F2808 Device
//
//###########################################################################
// $TI Release: F2803x C/C++ Header Files and Peripheral Examples V127 $
// $Release Date: March 30, 2013 $
//###########################################################################
*/

/* ======================================================
// For Code Composer Studio V2.2 and later
// ---------------------------------------
// In addition to this memory linker command file,
// add the header linker command file directly to the project.
// The header linker command file is required to link the
// peripheral structures to the proper locations within
// the memory map.
//
// The header linker files are found in <base>\DSP2803x_Headers\cmd
//
// For BIOS applications add:      DSP2803x_Headers_BIOS.cmd
// For nonBIOS applications add:   DSP2803x_Headers_nonBIOS.cmd
========================================================= */

/* ======================================================
// For Code Composer Studio prior to V2.2
// --------------------------------------
// 1) Use one of the following -l statements to include the
// header linker command file in the project. The header linker
// file is required to link the peripheral structures to the proper
// locations within the memory map                                    */

/* Uncomment this line to include file only for non-BIOS applications */
/* -l DSP2803x_Headers_nonBIOS.cmd */

/* Uncomment this line to include file only for BIOS applications */
/* -l DSP2803x_Headers_BIOS.cmd */

/* 2) In your project add the path to <base>\DSP2803x_headers\cmd to the
   library search path under project->build options, linker tab,
   library search path (-i).
/*========================================================= */

/* Define the memory block start/length for the F28035
   PAGE 0 will be used to organize program sections
   PAGE 1 will be used to organize data sections

   Notes:
         Memory blocks on F2803x are uniform (ie same
         physical memory) in both PAGE 0 and PAGE 1.
         That is the same memory region should not be
         defined for both PAGE 0 and PAGE 1.
         Doing so will result in corruption of program
         and/or data.

         L0 memory block is mirrored - that is
         it can be accessed in high memory or low memory.
         For simplicity only one instance is used in this
         linker file.

         Contiguous SARAM memory blocks or flash sectors can be
         be combined if required to create a larger memory block.
   FLASHH      : origin = 0x3E8000, length = 0x002000
   FLASHG      : origin = 0x3EA000, length = 0x002000
   FLASHF      : origin = 0x3EC000, length = 0x002000
   FLASHE      : origin = 0x3EE000, length = 0x002000
   FLASHD      : origin = 0x3F0000, length = 0x002000
   FLASHC      : origin = 0x3F2000, length = 0x002000
*/

MEMORY
{
PAGE 0:    /* Program Memory */
           /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */
   /*****************��Ϊ RAML0 ��RUN�궨�������ΪPage0�����Է�������*****************/
   RAML0       : origin = 0x008000, length = 0x000800     /*SARAM--2K */
   OTP         : origin = 0x3D7800, length = 0x000400     /* on-chip OTP */
   FLASHD 	   : origin = 0x3E8000, length = 0x00A000     /**40K** App-Pro*/
   FLASHC  	   : origin = 0x3F2000, length = 0x002000     /**8K**/
   FLASHB      : origin = 0x3F4000, length = 0x002000     /**8K** Boot-Pro*/
   FLASHA      : origin = 0x3F6000, length = 0x001F80     /* on-chip FLASH 7K+896words*/
   CSM_RSVD    : origin = 0x3F7F80, length = 0x000076     /* Part of FLASHA.  Program with all 0x0000 when CSM is in use. */
   BEGIN       : origin = 0x3F7FF6, length = 0x000002     /* Part of FLASHA.  Used for "boot to Flash" bootloader mode. */
   CSM_PWL_P0  : origin = 0x3F7FF8, length = 0x000008     /* Part of FLASHA.  CSM password locations in FLASHA */

   IQTABLES    : origin = 0x3FE000, length = 0x000B50     /* IQ Math Tables in Boot ROM */
   IQTABLES2   : origin = 0x3FEB50, length = 0x00008C     /* IQ Math Tables in Boot ROM */
   IQTABLES3   : origin = 0x3FEBDC, length = 0x0000AA	  /* IQ Math Tables in Boot ROM */

   ROM         : origin = 0x3FF27C, length = 0x000D44     /* Boot ROM */
   RESET       : origin = 0x3FFFC0, length = 0x000002     /* part of boot ROM  */
   VECTORS     : origin = 0x3FFFC2, length = 0x00003E     /* part of boot ROM  */

PAGE 1 :   /* Data Memory */
           /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE0 for program allocation */
           /* Registers remain on PAGE1                                                  */
   /*********************Cla use*****************/
   RAML1       : origin = 0x008800, length = 0x000400     /* Cla DataRam0--1K */
   RAML2	   : origin = 0x008C00, length = 0x000400	  /* cla DataRam1--1K */
   RAML3       : origin = 0x009000, length = 0x001000     /* Cla Prog Ram--4K */

	/************�ɵ�����Ϊ������M0--M1--40--400--800*************/
   BOOT_RSVD   : origin = 0x000000, length = 0x000050     /* Part of M0, BOOT rom will use this for stack */
   RAMM0       : origin = 0x000050, length = 0x000300     /* on-chip RAM block M0 */
   RAMM1       : origin = 0x000350, length = 0x000350     /* on-chip RAM block M1 */
}

/* Allocate sections to memory blocks.
   Note:
         codestart user defined section in DSP28_CodeStartBranch.asm used to redirect code
                   execution when booting to flash
         ramfuncs  user defined section to store functions that will be copied from Flash into RAM
*/

SECTIONS
{

   /* Allocate program areas: */
   .cinit              : > FLASHB      PAGE = 0//��ʼ���ı����ͳ���,Ҫ����ڳ���ҳ
   .pinit              : > FLASHB,     PAGE = 0//������ȫ�ֹ�����(C++)��ʼ���ı����ͳ������Ҫ����ڳ���ҳ
   .text               : > FLASHB      PAGE = 0//���������еĿ�ִ�д���ͳ�����������ڳ���ҳ��
   codestart           : > BEGIN       PAGE = 0
   ramfuncs            : LOAD = FLASHC,//�������#program ������famfuncs���
                         RUN = RAML0,
                         LOAD_START(_RamfuncsLoadStart),
                         LOAD_END(_RamfuncsLoadEnd),
                         LOAD_SIZE(_RamfuncsLoadSize),
                         RUN_START(_RamfuncsRunStart),
                         PAGE = 0

   csmpasswds          : > CSM_PWL_P0  PAGE = 0
   csm_rsvd            : > CSM_RSVD    PAGE = 0

   /* Allocate uninitalized data sections: */
      //ΪCϵͳ��ջ����ռ䣬�ⲿ�ִ洢��Ϊ��������������������Ϊ�ֲ���������ռ䣬Ҫ����ڵ͵�ַ������ҳ
   .stack              : > RAMM0       PAGE = 1
     //������Զ(far)����(ֻ����C)�ʹ�洢ģʽ��ʹ�ã���Ϊȫ�ֱ����;�̬��������ռ䡣
     //�ڳ���ʼ����ʱ��C����·�������ݴ�.cinit�θ��Ƴ�ȥȻ�����.ebss���У����Է�������ҳ���κεط���
   .ebss               : > RAMM1       PAGE = 1
     //��̬�洢�����䱣��ռ䣬����ռ������ⲿmalloc�����������ʹ���ⲿmalloc����������εĴ�С����0�����Է�������ҳ���κεط���
   .esysmem            : > RAMM1       PAGE = 1

   /* Initalized sections go in Flash */
   /* For SDFlash to program these, they must be allocated to page 0 */
   .econst             : > FLASHB      PAGE = 0
   .switch             : > FLASHB      PAGE = 0
   /* Allocate IQ math areas: */
   IQmath              : > FLASHB      PAGE = 0            /* Math Code */
   IQmathTables        : > IQTABLES,   PAGE = 0, TYPE = NOLOAD


   .reset              : > RESET,      PAGE = 0, TYPE = DSECT
   vectors             : > VECTORS     PAGE = 0, TYPE = DSECT

   /***********�Լ������****************/
   //ReceivedMsgBuf	   : >RAML0		PAGE = 0

}

/*
//===========================================================================
// End of file.
//===========================================================================
*/

最近做一个在线升级的程序,根据网上思路,做个两个程序,一个BootLoader,一个AppPro。两程序的的ROM分开,在CMD里面定义好。

上电后bootloader程序接收到上位机升级命令,就准备升级接收Appro的十六进制代码,然后flash擦除写入。一次擦除一个扇区8K,写满16次512字节,再擦除再写。写完后,绝对地址函数跳转到Appro软件CMD定义的起始地址。

上位机也是自己用labview 写的,通过仿真,数据都是写入到了flash里面,函数也跳转了。但为什么跳转回就没有反映了,我Appro程序里,再次初始化串口,问题应该不大吧。怀疑是CMD文件不对,也不清楚那里不对,都是参照网上资料做的。现传上来请大神检查下。

还有boot程序里,做了如下才做,应用程序再做会冲突吗?如下。

InitSysCtrl();

DINT; //Disable CPU interrupts
InitPieCtrl(); //Initialize PIE control registers to default state

IER = 0x0000; //Disable CPU interrupts
IFR = 0x0000; //Clear all CPU intrrupt flags

InitPieVectTable();
/*****************/
memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (Uint32)&RamfuncsLoadSize);

Sci_Init();

由于CMD文件无法上传,扩展名改成了txt格式文件。

CMD参考附件F28035_flash_Boot.txt 和F28035_flash_App.txt

Boot_cmd:

MEMORY
{
PAGE 0: /* Program Memory */
/* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */
/*****************因为 RAML0 在RUN宏定义里后面为Page0,所以放在这里*****************/
RAML0 : origin = 0x008000, length = 0x000800 /*SARAM--2K */
OTP : origin = 0x3D7800, length = 0x000400 /* on-chip OTP */
FLASHD : origin = 0x3E8000, length = 0x00A000 /**40K** App-Pro*/
FLASHC : origin = 0x3F2000, length = 0x002000 /**8K**/
FLASHB : origin = 0x3F4000, length = 0x002000 /**8K** Boot-Pro*/
FLASHA : origin = 0x3F6000, length = 0x001F80 /* on-chip FLASH 7K+896words*/
CSM_RSVD : origin = 0x3F7F80, length = 0x000076 /* Part of FLASHA. Program with all 0x0000 when CSM is in use. */
BEGIN : origin = 0x3F7FF6, length = 0x000002 /* Part of FLASHA. Used for "boot to Flash" bootloader mode. */
CSM_PWL_P0 : origin = 0x3F7FF8, length = 0x000008 /* Part of FLASHA. CSM password locations in FLASHA */

IQTABLES : origin = 0x3FE000, length = 0x000B50 /* IQ Math Tables in Boot ROM */
IQTABLES2 : origin = 0x3FEB50, length = 0x00008C /* IQ Math Tables in Boot ROM */
IQTABLES3 : origin = 0x3FEBDC, length = 0x0000AA /* IQ Math Tables in Boot ROM */

ROM : origin = 0x3FF27C, length = 0x000D44 /* Boot ROM */
RESET : origin = 0x3FFFC0, length = 0x000002 /* part of boot ROM */
VECTORS : origin = 0x3FFFC2, length = 0x00003E /* part of boot ROM */

PAGE 1 : /* Data Memory */
/* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE0 for program allocation */
/* Registers remain on PAGE1 */
/*********************Cla use*****************/
RAML1 : origin = 0x008800, length = 0x000400 /* Cla DataRam0--1K */
RAML2 : origin = 0x008C00, length = 0x000400 /* cla DataRam1--1K */
RAML3 : origin = 0x009000, length = 0x001000 /* Cla Prog Ram--4K */

/************可调调整为正常的M0--M1--40--400--800*************/
BOOT_RSVD : origin = 0x000000, length = 0x000050 /* Part of M0, BOOT rom will use this for stack */
RAMM0 : origin = 0x000050, length = 0x000300 /* on-chip RAM block M0 */
RAMM1 : origin = 0x000350, length = 0x000350 /* on-chip RAM block M1 */
}

/* Allocate sections to memory blocks.
Note:
codestart user defined section in DSP28_CodeStartBranch.asm used to redirect code
execution when booting to flash
ramfuncs user defined section to store functions that will be copied from Flash into RAM
*/

SECTIONS
{

/* Allocate program areas: */
.cinit : > FLASHB PAGE = 0//初始化的变量和常量,要求放在程序页
.pinit : > FLASHB, PAGE = 0//它包括全局构造器(C++)初始化的变量和常量表,要求放在程序页
.text : > FLASHB PAGE = 0//它包括所有的可执行代码和常数,必须放在程序页;
codestart : > BEGIN PAGE = 0
ramfuncs : LOAD = FLASHC,//保存的是#program 定义在famfuncs的函数
RUN = RAML0,
LOAD_START(_RamfuncsLoadStart),
LOAD_END(_RamfuncsLoadEnd),
LOAD_SIZE(_RamfuncsLoadSize),
RUN_START(_RamfuncsRunStart),
PAGE = 0

csmpasswds : > CSM_PWL_P0 PAGE = 0
csm_rsvd : > CSM_RSVD PAGE = 0

/* Allocate uninitalized data sections: */
//为C系统堆栈保留空间,这部分存储器为用来将声明传给函数及为局部变量留出空间,要求放在低地址的数据页
.stack : > RAMM0 PAGE = 1
//它是在远(far)访问(只用于C)和大存储模式下使用,它为全局变量和静态变量保留空间。
//在程序开始运行时,C导入路径把数据从.cinit段复制出去然后存在.ebss节中,可以放在数据页的任何地方;
.ebss : > RAMM1 PAGE = 1
//动态存储器分配保留空间,这个空间用于外部malloc函数,如果不使用外部malloc函数,这个段的大小就是0,可以放在数据页的任何地方。
.esysmem : > RAMM1 PAGE = 1

/* Initalized sections go in Flash */
/* For SDFlash to program these, they must be allocated to page 0 */
.econst : > FLASHB PAGE = 0
.switch : > FLASHB PAGE = 0
/* Allocate IQ math areas: */
IQmath : > FLASHB PAGE = 0 /* Math Code */
IQmathTables : > IQTABLES, PAGE = 0, TYPE = NOLOAD


.reset : > RESET, PAGE = 0, TYPE = DSECT
vectors : > VECTORS PAGE = 0, TYPE = DSECT

/***********自己定义的****************/
//ReceivedMsgBuf : >RAML0 PAGE = 0

}

App_cmd:

MEMORY
{
PAGE 0: /* Program Memory */
/* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */
/*****************因为 RAML0 在RUN宏定义里后面为Page0,所以放在这里*****************/
RAML0 : origin = 0x008000, length = 0x000800 /*SARAM--2K */
OTP : origin = 0x3D7800, length = 0x000400 /* on-chip OTP */
//FLASHD : origin = 0x3E8000, length = 0x00A000 /**40K** App-Pro*/
FLASHD : origin = 0x3E8002, length = 0x009FFE
FLASHC : origin = 0x3F2000, length = 0x002000 /**8K**/
FLASHB : origin = 0x3F4000, length = 0x002000 /**8K** Boot-Pro*/
FLASHA : origin = 0x3F6000, length = 0x001F80 /* on-chip FLASH 7K+896words*/
CSM_RSVD : origin = 0x3F7F80, length = 0x000076 /* Part of FLASHA. Program with all 0x0000 when CSM is in use. */
//BEGIN : origin = 0x3F7FF6, length = 0x000002 /* Part of FLASHA. Used for "boot to Flash" bootloader mode. */
BEGIN : origin = 0x3E8000, length = 0x000002
CSM_PWL_P0 : origin = 0x3F7FF8, length = 0x000008 /* Part of FLASHA. CSM password locations in FLASHA */

IQTABLES : origin = 0x3FE000, length = 0x000B50 /* IQ Math Tables in Boot ROM */
IQTABLES2 : origin = 0x3FEB50, length = 0x00008C /* IQ Math Tables in Boot ROM */
IQTABLES3 : origin = 0x3FEBDC, length = 0x0000AA /* IQ Math Tables in Boot ROM */

ROM : origin = 0x3FF27C, length = 0x000D44 /* Boot ROM */
RESET : origin = 0x3FFFC0, length = 0x000002 /* part of boot ROM */
VECTORS : origin = 0x3FFFC2, length = 0x00003E /* part of boot ROM */

PAGE 1 : /* Data Memory */
/* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE0 for program allocation */
/* Registers remain on PAGE1 */
/*********************Cla use*****************/
RAML1 : origin = 0x008800, length = 0x000400 /* Cla DataRam0--1K */
RAML2 : origin = 0x008C00, length = 0x000400 /* cla DataRam1--1K */
RAML3 : origin = 0x009000, length = 0x001000 /* Cla Prog Ram--4K */

/************可调整为正常的M0--M1--40--400--800*************/
BOOT_RSVD : origin = 0x000000, length = 0x000050 /* Part of M0, BOOT rom will use this for stack */
RAMM0 : origin = 0x000050, length = 0x000300 /* on-chip RAM block M0 */
RAMM1 : origin = 0x000350, length = 0x000350 /* on-chip RAM block M1 */
}

/* Allocate sections to memory blocks.
Note:
codestart user defined section in DSP28_CodeStartBranch.asm used to redirect code
execution when booting to flash
ramfuncs user defined section to store functions that will be copied from Flash into RAM
*/

SECTIONS
{

/* Allocate program areas: */
.cinit : > FLASHD PAGE = 0
.pinit : > FLASHD, PAGE = 0
.text : > FLASHD PAGE = 0
codestart : > BEGIN PAGE = 0
ramfuncs : LOAD = FLASHC,
RUN = RAML0,
LOAD_START(_RamfuncsLoadStart),
LOAD_END(_RamfuncsLoadEnd),
LOAD_SIZE(_RamfuncsLoadSize),
RUN_START(_RamfuncsRunStart),
PAGE = 0

csmpasswds : > CSM_PWL_P0 PAGE = 0
csm_rsvd : > CSM_RSVD PAGE = 0

/* Allocate uninitalized data sections: */
.stack : > RAMM0 PAGE = 1
.ebss : > RAMM1 PAGE = 1
.esysmem : > RAMM1 PAGE = 1

/* Initalized sections go in Flash */
/* For SDFlash to program these, they must be allocated to page 0 */
.econst : > FLASHD PAGE = 0
.switch : > FLASHD PAGE = 0
/* Allocate IQ math areas: */
IQmath : > FLASHD PAGE = 0 /* Math Code */
IQmathTables : > IQTABLES, PAGE = 0, TYPE = NOLOAD


.reset : > RESET, PAGE = 0, TYPE = DSECT
vectors : > VECTORS PAGE = 0, TYPE = DSECT

}

  • /*
    //###########################################################################
    //
    // FILE:	F2808.cmd
    //
    // TITLE:	Linker Command File For F2808 Device
    //
    //###########################################################################
    // $TI Release: F2803x C/C++ Header Files and Peripheral Examples V127 $
    // $Release Date: March 30, 2013 $
    //###########################################################################
    */
    
    /* ======================================================
    // For Code Composer Studio V2.2 and later
    // ---------------------------------------
    // In addition to this memory linker command file,
    // add the header linker command file directly to the project.
    // The header linker command file is required to link the
    // peripheral structures to the proper locations within
    // the memory map.
    //
    // The header linker files are found in <base>\DSP2803x_Headers\cmd
    //
    // For BIOS applications add:      DSP2803x_Headers_BIOS.cmd
    // For nonBIOS applications add:   DSP2803x_Headers_nonBIOS.cmd
    ========================================================= */
    
    /* ======================================================
    // For Code Composer Studio prior to V2.2
    // --------------------------------------
    // 1) Use one of the following -l statements to include the
    // header linker command file in the project. The header linker
    // file is required to link the peripheral structures to the proper
    // locations within the memory map                                    */
    
    /* Uncomment this line to include file only for non-BIOS applications */
    /* -l DSP2803x_Headers_nonBIOS.cmd */
    
    /* Uncomment this line to include file only for BIOS applications */
    /* -l DSP2803x_Headers_BIOS.cmd */
    
    /* 2) In your project add the path to <base>\DSP2803x_headers\cmd to the
       library search path under project->build options, linker tab,
       library search path (-i).
    /*========================================================= */
    
    /* Define the memory block start/length for the F28035
       PAGE 0 will be used to organize program sections
       PAGE 1 will be used to organize data sections
    
       Notes:
             Memory blocks on F2803x are uniform (ie same
             physical memory) in both PAGE 0 and PAGE 1.
             That is the same memory region should not be
             defined for both PAGE 0 and PAGE 1.
             Doing so will result in corruption of program
             and/or data.
    
             L0 memory block is mirrored - that is
             it can be accessed in high memory or low memory.
             For simplicity only one instance is used in this
             linker file.
    
             Contiguous SARAM memory blocks or flash sectors can be
             be combined if required to create a larger memory block.
       FLASHH      : origin = 0x3E8000, length = 0x002000
       FLASHG      : origin = 0x3EA000, length = 0x002000
       FLASHF      : origin = 0x3EC000, length = 0x002000
       FLASHE      : origin = 0x3EE000, length = 0x002000
       FLASHD      : origin = 0x3F0000, length = 0x002000
       FLASHC      : origin = 0x3F2000, length = 0x002000
    */
    
    MEMORY
    {
    PAGE 0:    /* Program Memory */
               /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */
       /*****************��Ϊ RAML0 ��RUN�궨�������ΪPage0�����Է�������*****************/
       RAML0       : origin = 0x008000, length = 0x000800     /*SARAM--2K */
       OTP         : origin = 0x3D7800, length = 0x000400     /* on-chip OTP */
       FLASHD 	   : origin = 0x3E8000, length = 0x00A000     /**40K** App-Pro*/
       FLASHC  	   : origin = 0x3F2000, length = 0x002000     /**8K**/
       FLASHB      : origin = 0x3F4000, length = 0x002000     /**8K** Boot-Pro*/
       FLASHA      : origin = 0x3F6000, length = 0x001F80     /* on-chip FLASH 7K+896words*/
       CSM_RSVD    : origin = 0x3F7F80, length = 0x000076     /* Part of FLASHA.  Program with all 0x0000 when CSM is in use. */
       BEGIN       : origin = 0x3F7FF6, length = 0x000002     /* Part of FLASHA.  Used for "boot to Flash" bootloader mode. */
       CSM_PWL_P0  : origin = 0x3F7FF8, length = 0x000008     /* Part of FLASHA.  CSM password locations in FLASHA */
    
       IQTABLES    : origin = 0x3FE000, length = 0x000B50     /* IQ Math Tables in Boot ROM */
       IQTABLES2   : origin = 0x3FEB50, length = 0x00008C     /* IQ Math Tables in Boot ROM */
       IQTABLES3   : origin = 0x3FEBDC, length = 0x0000AA	  /* IQ Math Tables in Boot ROM */
    
       ROM         : origin = 0x3FF27C, length = 0x000D44     /* Boot ROM */
       RESET       : origin = 0x3FFFC0, length = 0x000002     /* part of boot ROM  */
       VECTORS     : origin = 0x3FFFC2, length = 0x00003E     /* part of boot ROM  */
    
    PAGE 1 :   /* Data Memory */
               /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE0 for program allocation */
               /* Registers remain on PAGE1                                                  */
       /*********************Cla use*****************/
       RAML1       : origin = 0x008800, length = 0x000400     /* Cla DataRam0--1K */
       RAML2	   : origin = 0x008C00, length = 0x000400	  /* cla DataRam1--1K */
       RAML3       : origin = 0x009000, length = 0x001000     /* Cla Prog Ram--4K */
    
    	/************�ɵ�����Ϊ������M0--M1--40--400--800*************/
       BOOT_RSVD   : origin = 0x000000, length = 0x000050     /* Part of M0, BOOT rom will use this for stack */
       RAMM0       : origin = 0x000050, length = 0x000300     /* on-chip RAM block M0 */
       RAMM1       : origin = 0x000350, length = 0x000350     /* on-chip RAM block M1 */
    }
    
    /* Allocate sections to memory blocks.
       Note:
             codestart user defined section in DSP28_CodeStartBranch.asm used to redirect code
                       execution when booting to flash
             ramfuncs  user defined section to store functions that will be copied from Flash into RAM
    */
    
    SECTIONS
    {
    
       /* Allocate program areas: */
       .cinit              : > FLASHB      PAGE = 0//��ʼ���ı����ͳ���,Ҫ����ڳ���ҳ
       .pinit              : > FLASHB,     PAGE = 0//������ȫ�ֹ�����(C++)��ʼ���ı����ͳ������Ҫ����ڳ���ҳ
       .text               : > FLASHB      PAGE = 0//���������еĿ�ִ�д���ͳ�����������ڳ���ҳ��
       codestart           : > BEGIN       PAGE = 0
       ramfuncs            : LOAD = FLASHC,//�������#program ������famfuncs���
                             RUN = RAML0,
                             LOAD_START(_RamfuncsLoadStart),
                             LOAD_END(_RamfuncsLoadEnd),
                             LOAD_SIZE(_RamfuncsLoadSize),
                             RUN_START(_RamfuncsRunStart),
                             PAGE = 0
    
       csmpasswds          : > CSM_PWL_P0  PAGE = 0
       csm_rsvd            : > CSM_RSVD    PAGE = 0
    
       /* Allocate uninitalized data sections: */
          //ΪCϵͳ��ջ����ռ䣬�ⲿ�ִ洢��Ϊ��������������������Ϊ�ֲ���������ռ䣬Ҫ����ڵ͵�ַ������ҳ
       .stack              : > RAMM0       PAGE = 1
         //������Զ(far)����(ֻ����C)�ʹ�洢ģʽ��ʹ�ã���Ϊȫ�ֱ����;�̬��������ռ䡣
         //�ڳ���ʼ����ʱ��C����·�������ݴ�.cinit�θ��Ƴ�ȥȻ�����.ebss���У����Է�������ҳ���κεط���
       .ebss               : > RAMM1       PAGE = 1
         //��̬�洢�����䱣��ռ䣬����ռ������ⲿmalloc�����������ʹ���ⲿmalloc����������εĴ�С����0�����Է�������ҳ���κεط���
       .esysmem            : > RAMM1       PAGE = 1
    
       /* Initalized sections go in Flash */
       /* For SDFlash to program these, they must be allocated to page 0 */
       .econst             : > FLASHB      PAGE = 0
       .switch             : > FLASHB      PAGE = 0
       /* Allocate IQ math areas: */
       IQmath              : > FLASHB      PAGE = 0            /* Math Code */
       IQmathTables        : > IQTABLES,   PAGE = 0, TYPE = NOLOAD
    
    
       .reset              : > RESET,      PAGE = 0, TYPE = DSECT
       vectors             : > VECTORS     PAGE = 0, TYPE = DSECT
    
       /***********�Լ������****************/
       //ReceivedMsgBuf	   : >RAML0		PAGE = 0
    
    }
    
    /*
    //===========================================================================
    // End of file.
    //===========================================================================
    */
    
    

  • 有可能与初始化外设有关 建议先从简单的LED等进行测试吧
    APP只做led控制
  • 我试过了,也不是。是不是hex文件处理错了。我是这样处理的:每一行去掉冒号,再去掉前4个特征字节,及最后一个CRC校验字节;也尝试过去掉整个第一行和最后一行(表示文本文件的开始和结束)都不行。

  • 楼主你好,请问你的问题解决了么,我也遇到了和你一样的问题。
  • 有很大概率是因为修改了BEGIN段位置