• dsp 28377在线升级 实例总结


    使用dsp品台28377d来实现在线升级的功能。

    方案 : 升级程序  +  应用程序

    升级程序 : 主要的目的是将上位机发送过来的应用程序数据(ccs编译生成的.bin文件)烧写到指定位置,之后在跳转到应用程序执行。

    应用程序 : 等待升级的程序

    //-------------------------------------------------------------------------------------------------------------------------------------------------------------------

    升级代码段 :

    flash_programming_cpu01.c  
    1 //#########################################################################  
    2 // FILE: flash_programming_cpu01.c  
    3 // TITLE: Flash Programming Example for F2837xD.  
    4 //  
    5 //! addtogroup dual_example_list  
    6 //! <h1> Flash Programming </h1>  
    7 //!  
    8 //! This example demonstrates F021 Flash API usage.  
    9 //  
    10 //#########################################################################  
    11 // $TI Release: F2837xD Support Library v170 $  
    12 // $Release Date: Mon Sep 21 16:52:10 CDT 2015 $  
    13 // $Copyright: Copyright (C) 2013-2015 Texas Instruments Incorporated -  
    14 // http://www.ti.com/ ALL RIGHTS RESERVED $  
    15 //#########################################################################  
    16  
    17 #include "F28x_Project.h" // Device Headerfile and Examples Include<span style="white-space:pre">    </span>File  
    18 #include "F2837xD_Ipc_drivers.h"  
    19  
    20 #include <string.h>  
    21  
    22 //Include Flash API example header file  
    23 #include "flash_programming_c28.h"  
    24  
    25 #define ENTRYADDR 0x88000  
    26  
    27 extern void lightflash(void);  
    28  
    29 //*************************************************************************  
    30 // FILE Flash API include file  
    31 //*************************************************************************  
    32 #include "F021_F2837xD_C28x.h"  
    33  
    34 //Data/Program Buffer used for testing the flash API functions  
    35 #define WORDS_IN_FLASH_BUFFER 3608 // Programming data buffer, words  
    36  
    37 uint16 Buffer[WORDS_IN_FLASH_BUFFER + 1];  
    38 uint32 *Buffer32 = (uint32 *)Buffer;  
    39  
    40 #pragma DATA_SECTION(pbuffer , "PDATASAVE");  
    41 uint16 pbuffer[WORDS_IN_FLASH_BUFFER]= {  
    42 #include "P_DATA.h"  
    43 };  
    44  
    45 //*************************************************************************  
    46 // Prototype of the functions used in this example  
    47 //*************************************************************************  
    48 void Example_CallFlashAPI(void);  
    49  
    50 //*************************************************************************  
    51 // This is an example code demonstrating F021 Flash API usage.  
    52 // This code is in Flash  
    53 //*************************************************************************  
    54 void main(void)  
    55 {  
    56 // Step 1. Initialize System Control:  
    57 // Enable Peripheral Clocks  
    58 // This example function is found in the F2837xD_SysCtrl.c file.  
    59 InitSysCtrl();  
    60  
    61 IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH);  
    62  
    63 InitGpio();  
    64  
    65 InitPieCtrl();  
    66  
    67 IER = 0x0000;  
    68 IFR = 0x0000;  
    69  
    70 InitPieVectTable();  
    71  
    72 EINT; // Enable Global interrupt INTM  
    73  
    74 // Jump to RAM and call the Flash API functions  
    75 Example_CallFlashAPI();  
    76  
    77 DELAY_US(100000);  
    78  
    79 static void (*APPEntry)(void);  
    80  
    81 APPEntry = (void (*)(void))(ENTRYADDR);  
    82  
    83 ESTOP0;  
    84  
    85 (*APPEntry)();  
    86  
    87 while(1);  
    88  
    89 }  
    90  
    91 //*************************************************************************  
    92 // Example_CallFlashAPI  
    93 //  
    94 // This function will interface to the flash API.  
    95 // Flash API functions used in this function are executed from RAM  
    96 //*************************************************************************  
    97 #pragma CODE_SECTION(Example_CallFlashAPI , "ramfuncs");  
    98 void Example_CallFlashAPI(void)  
    99 {  
    100 uint32 u32Index = 0;  
    101 uint16 i = 0;  
    102  
    103 Fapi_StatusType oReturnCheck;  
    104 volatile Fapi_FlashStatusType oFlashStatus;  
    105  
    106 // Gain pump semaphore  
    107 SeizeFlashPump();  
    108  
    109 EALLOW;  
    110 Flash0EccRegs.ECC_ENABLE.bit.ENABLE = 0x0;  
    111 EDIS;  
    112  
    113 EALLOW;  
    114  
    115 oReturnCheck = Fapi_initializeAPI(F021_CPU0_BASE_ADDRESS, 200);//for now keeping it out  
    116  
    117 if(oReturnCheck != Fapi_Status_Success)  
    118 {  
    119 // Check Flash API documentation for possible errors  
    120 while(1);  
    121 }  
    122  
    123 oReturnCheck = Fapi_setActiveFlashBank(Fapi_FlashBank0);  
    124 if(oReturnCheck != Fapi_Status_Success)  
    125 {  
    126 // Check Flash API documentation for possible errors  
    127 while(1);  
    128 }  
    129  
    130 oReturnCheck = Fapi_issueAsyncCommandWithAddress(Fapi_EraseSector,  
    131 (uint32 *)ENTRYADDR);  
    132  
    133 while (Fapi_checkFsmForReady() != Fapi_Status_FsmReady){}  
    134  
    135 // In this case just fill a buffer with data to program into the flash.  
    136 for(i=0, u32Index = ENTRYADDR;  
    137  
    138 (u32Index < (ENTRYADDR + WORDS_IN_FLASH_BUFFER))&& (oReturnCheck ==Fapi_Status_Success);  
    139  
    140 i=i+1, u32Index = u32Index + 1)  
    141 {  
    142 oReturnCheck = Fapi_issueProgrammingCommand((uint32 *)u32Index,&pbuffer[i],  
    143 1,  
    144 0,  
    145 0,  
    146 Fapi_DataOnly);  
    147  
    148 while(Fapi_checkFsmForReady() == Fapi_Status_FsmBusy);  
    149  
    150 if(oReturnCheck != Fapi_Status_Success)  
    151 {  
    152 // Check Flash API documentation for possible errors  
    153 while(1);  
    154 }  
    155  
    156 // Read FMSTAT register contents to know the status of FSM after  
    157 // program command for any debug  
    158 oFlashStatus = Fapi_getFsmStatus();  
    159 }  
    160  
    161 // Leave control over flash pump  
    162 ReleaseFlashPump();  
    163 }  

    第98行的函数 :

    void Example_CallFlashAPI(void)  

    将数据烧写到地址为0x88000地址为首地址的flash内存当中。并且函数在ramfunc中运行,ramfunc和首地址的跳转在cmd文件中有体现

    2837xD_FLASH_lnk_cpu1.cmd  
      
    MEMORY  
    3 {  
    4 PAGE 0 : /* Program Memory */  
    5 /* Memory (RAM/FLASH) blocks can be moved to PAGE1 for dataallocation */  
    6 /* BEGIN is used for the "boot to Flash" bootloader mode */  
    78  
    BEGIN : origin = 0x080000, length = 0x000002  
    9 RAMM0 : origin = 0x000122, length = 0x0002DE  
    10 RAMD0 : origin = 0x00B000, length = 0x000800  
    11 RAMLS0 : origin = 0x008000, length = 0x000800  
    12 RAMLS1 : origin = 0x008800, length = 0x000800  
    13 RAMLS2 : origin = 0x009000, length = 0x000800  
    14 RAMLS3 : origin = 0x009800, length = 0x000800  
    15 RAMLS4 : origin = 0x00A000, length = 0x000800  
    16 RAMGS14 : origin = 0x01A000, length = 0x001000  
    17 RAMGS15 : origin = 0x01B000, length = 0x001000  
    18 RESET : origin = 0x3FFFC0, length = 0x000002  
    19  
    20 /* Flash sectors */  
    21 FLASHA : origin = 0x080002, length = 0x001FFE /* on-chipFlash */  
    22 FLASHB : origin = 0x082000, length = 0x002000 /* on-chipFlash */  
    23 FLASHC : origin = 0x084000, length = 0x002000 /* on-chipFlash */  
    24 FLASHD : origin = 0x086000, length = 0x002000 /* on-chipFlash */  
    25 FLASHE : origin = 0x088000, length = 0x008000 /* on-chipFlash */  
    26 FLASHF : origin = 0x090000, length = 0x008000 /* on-chipFlash */  
    27 FLASHG : origin = 0x098000, length = 0x008000 /* on-chipFlash */  
    28 FLASHH : origin = 0x0A0000, length = 0x008000 /* on-chipFlash */  
    29 FLASHI : origin = 0x0A8000, length = 0x008000 /* on-chipFlash */  
    30 FLASHJ : origin = 0x0B0000, length = 0x008000 /* on-chipFlash */  
    31 FLASHK : origin = 0x0B8000, length = 0x002000 /* on-chipFlash */  
    32 FLASHL : origin = 0x0BA000, length = 0x002000 /* on-chipFlash */  
    33 FLASHM : origin = 0x0BC000, length = 0x002000 /* on-chipFlash */  
    34 FLASHN : origin = 0x0BE000, length = 0x002000 /* on-chipFlash */  
      
    36 PAGE 1 : /* Data Memory */  
    37 /* Memory (RAM/FLASH) blocks can be moved to PAGE0 for programallocation */  
    38  
    39 BOOT_RSVD : origin = 0x000002, length = 0x000120 /* Part ofM0, BOOT rom will use this for stack */  
    40 RAMM1 : origin = 0x000400, length = 0x000400 /* on-chipRAM block M1 */  
    41 RAMD1 : origin = 0x00B800, length = 0x000800  
    42  
    43 RAMLS5 : origin = 0x00A800, length = 0x000800  
    44  
    45 RAMGS0 : origin = 0x00C000, length = 0x001000  
    46 RAMGS1 : origin = 0x00D000, length = 0x001000  
    47 RAMGS2 : origin = 0x00E000, length = 0x001000  
    48 RAMGS3 : origin = 0x00F000, length = 0x001000  
    49 RAMGS4 : origin = 0x010000, length = 0x001000  
    50 RAMGS5 : origin = 0x011000, length = 0x001000  
    51 RAMGS6 : origin = 0x012000, length = 0x001000  
    52 RAMGS7 : origin = 0x013000, length = 0x001000  
    53 RAMGS8 : origin = 0x014000, length = 0x001000  
    54 RAMGS9 : origin = 0x015000, length = 0x001000  
    55 RAMGS10 : origin = 0x016000, length = 0x001000  
    56 RAMGS11 : origin = 0x017000, length = 0x001000  
    57 RAMGS12 : origin = 0x018000, length = 0x001000  
    58 RAMGS13 : origin = 0x019000, length = 0x001000  
    59  
    60  
    61 CPU2TOCPU1RAM : origin = 0x03F800, length = 0x000400  
    62 CPU1TOCPU2RAM : origin = 0x03FC00, length = 0x000400  
    63 }  
    64  
    65  
    66 SECTIONS  
    67 {  
    68 /* Allocate program areas: */  
    69 .cinit : > FLASHB PAGE = 0, ALIGN(4)  
    70 .pinit : > FLASHB, PAGE = 0, ALIGN(4)  
    71 .text : >> FLASHB | FLASHC | FLASHD PAGE = 0,ALIGN(4)  
    72 codestart : > BEGIN PAGE = 0, ALIGN(4)  
    73 ramfuncs : LOAD = FLASHD,  
    74 RUN = RAMLS0 | RAMLS1 | RAMLS2 |RAMLS3,  
    75 LOAD_START(_RamfuncsLoadStart),  
    76 LOAD_SIZE(_RamfuncsLoadSize),  
    77 LOAD_END(_RamfuncsLoadEnd),  
    78 RUN_START(_RamfuncsRunStart),  
    79 RUN_SIZE(_RamfuncsRunSize),  
    80 RUN_END(_RamfuncsRunEnd),  
    81 PAGE = 0, ALIGN(4)  
    82  
    83 /* Allocate uninitalized data sections: */  
    84 .stack : > RAMM1 PAGE = 1  
    85 .ebss : >> RAMLS5 | RAMGS0 | RAMGS1 PAGE = 1  
    86 .esysmem : > RAMLS5 PAGE = 1  
    87  
    88 /* Initalized sections go in Flash */  
    89 .econst : >> FLASHF | FLASHG | FLASHH PAGE = 0,ALIGN(4)  
    90 .switch : > FLASHB PAGE = 0, ALIGN(4)  
    91  
    92 .reset : > RESET, PAGE = 0, TYPE = DSECT /* not used,*/  
    93  
    94 Filter_RegsFile : > RAMGS0, PAGE = 1  
    95  
    96 SHARERAMGS0 : > RAMGS0, PAGE = 1  
    97 SHARERAMGS1 : > RAMGS1, PAGE = 1  
    98 ramgs0 : > RAMGS0, PAGE = 1  
    99 ramgs1 : > RAMGS1, PAGE = 1  
    100  
    101 #ifdef __TI_COMPILER_VERSION  
    102 #if __TI_COMPILER_VERSION >= 15009000  
    103 .TI.ramfunc : {} LOAD = FLASHD,  
    104 RUN = RAMLS0 | RAMLS1 | RAMLS2 |RAMLS3,  
    105 LOAD_START(_RamfuncsLoadStart),  
    106 LOAD_SIZE(_RamfuncsLoadSize),  
    107 LOAD_END(_RamfuncsLoadEnd),  
    108 RUN_START(_RamfuncsRunStart),  
    109 RUN_SIZE(_RamfuncsRunSize),  
    110 RUN_END(_RamfuncsRunEnd),  
    111 PAGE = 0, ALIGN(4)  
    112 #endif  
    113 #endif  
    114  
    115 /* The following section definitions are required when using the IPC API Drivers */  
    116 GROUP : > CPU1TOCPU2RAM, PAGE = 1  
    117 {  
    118 PUTBUFFER  
    119 PUTWRITEIDX  
    120 GETREADIDX  
    121 }  
    122  
    123 GROUP : > CPU2TOCPU1RAM, PAGE = 1  
    124 {  
    125 GETBUFFER : TYPE = DSECT  
    126 GETWRITEIDX : TYPE = DSECT  
    127 PUTREADIDX : TYPE = DSECT  
    128 }  
    129  
    130 /* The following section definition are for SDFM examples */  
    131 Filter1_RegsFile : > RAMGS1, PAGE = 1, fill=0x1111  
    132 Filter2_RegsFile : > RAMGS2, PAGE = 1, fill=0x2222  
    133 Filter3_RegsFile : > RAMGS3, PAGE = 1, fill=0x3333  
    134 Filter4_RegsFile : > RAMGS4, PAGE = 1, fill=0x4444  
    135 Difference_RegsFile : >RAMGS5, PAGE = 1, fill=0x3333  
    136 PDATASAVE : > RAMGS0 , PAGE = 1  
    137  
    138 }  
    139  
    140 /* 
    141 //========================================================================= 
    == 
    142 // End of file. 
    143 //========================================================================= 
    == 
    144 */  
    145  

    应用程序代码如下所示 :

    blinky_cpu01.c  
    1 //#########################################################################  
    2 // FILE: blinky_cpu01.c  
    3 // TITLE: LED Blink Example for F2837xD.  
    4 //  
    5 //! addtogroup cpu01_example_list  
    6 //! <h1> Blinky </h1>  
    7 //!  
    8 //! This example blinks LED X  
    9 //  
    10 //#########################################################################  
    11 // $TI Release: F2837xD Support Library v180 $  
    12 // $Release Date: Fri Nov 6 16:19:46 CST 2015 $  
    13 // $Copyright: Copyright (C) 2013-2015 Texas Instruments Incorporated -  
    14 // http://www.ti.com/ ALL RIGHTS RESERVED $  
    15 //#########################################################################  
    16  
    17 #include "F28x_Project.h" // Device Headerfile and Examples IncludeFile  
    18 #include <string.h>  
    19  
    20 Uint16 test = 0;  
    21  
    22 //void setup_emif1_pinmux_async_16bit(Uint16 cpu_sel);  
    23 //***************************************************************  
    24 //usart initial block  
    25 //***************************************************************  
    26 void UsartInit(void)  
    27 {  
    28 GPIO_SetupPinMux(28, GPIO_MUX_CPU1, 1);  
    29 GPIO_SetupPinOptions(28, GPIO_INPUT, GPIO_PUSHPULL);  
    30 GPIO_SetupPinMux(29, GPIO_MUX_CPU1, 1);  
    31 GPIO_SetupPinOptions(29, GPIO_OUTPUT, GPIO_ASYNC);  
    32  
    33 //---- USART configuration ----------  
    34 SciaRegs.SCIFFTX.all=0xE040;  
    35 SciaRegs.SCIFFRX.all=0x2044;  
    36 SciaRegs.SCIFFCT.all=0x0;  
    37  
    38 SciaRegs.SCICCR.all =0x0007; // 1 stop bit, No loopback  
    39 // No parity,8 char bits,  
    40 // async mode, idle-line protocol  
    41 SciaRegs.SCICTL1.all =0x0003; // enable TX, RX, internal SCICLK,  
    42 // Disable RX ERR, SLEEP, TXWAKE  
    43 SciaRegs.SCICTL2.all =0x0003;  
    44 SciaRegs.SCICTL2.bit.TXINTENA =1;  
    45 SciaRegs.SCICTL2.bit.RXBKINTENA =1;  
    46 SciaRegs.SCIHBAUD.all =0x0002;  
    Page 1blinky_cpu01.c  
    47 SciaRegs.SCILBAUD.all =0x008B;  
    48 // SciaRegs.SCICCR.bit.LOOPBKENA =1; // Enable loop back  
    49 SciaRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset  
    50  
    51 //-DMA configuration  
    52 }  
    53  
    54 //***************************************************************  
    55 //usart UsartSendData block  
    56 //just fit for 8 bit data to send  
    57 //***************************************************************  
    58 void UsartSendData(uint16_t data_in)  
    59 {  
    60 SciaRegs.SCITXBUF.all = data_in;  
    61 while(SciaRegs.SCIFFTX.bit.TXFFST !=0); // wait for RRDY/RXFFST =1 fordata available in FIFO  
    62 }  
    63  
    64  
    65 void main(void)  
    66 {  
    67 InitSysCtrl();  
    68  
    69 InitGpio();  
    70  
    71 DINT;  
    72  
    73 InitPieCtrl();  
    74  
    75 // Disable CPU interrupts and clear all CPU interrupt flags:  
    76 IER = 0x0000;  
    77 IFR = 0x0000;  
    78  
    79 InitPieVectTable();  
    80  
    81 EINT; // Enable Global interrupt INTM  
    82  
    83 UsartInit();  
    84  
    85  
    86 EALLOW;  
    87 GpioCtrlRegs.GPAMUX1.bit.GPIO10 = 0;  
    88 GpioCtrlRegs.GPADIR.bit.GPIO10 = 1;  
    89 EDIS;  
    90  
    91 GpioDataRegs.GPADAT.bit.GPIO10 = 0;  
    92  
    93 while(1){  
    94  
    95 GpioDataRegs.GPADAT.bit.GPIO10 = 0;  
    96  
    97 DELAY_US(50000);  
    98  
    99 GpioDataRegs.GPADAT.bit.GPIO10 = 1;  
    100  
    101 DELAY_US(50000);  
    102  
    103 if(test == 255) test = 0;  
    104  
    105 test = test + 1;  
    106  
    107 UsartSendData(test);  
    108  
    109 DELAY_US(1000);  
    110 }  
    123 }  
    124  

    应用程序在调试的时候出现了一个问题 :

    就是在在线调试的过程中,从升级程序跳转到应用程序的时候:

    static void (*APPEntry)(void);  
    80  
    81 APPEntry = (void (*)(void))(ENTRYADDR);  
    82  
    83 ESTOP0;  
    84  
    85 (*APPEntry)();  

    进入应用程序,应用程序总是会在一些地方跳转到异常中断,最后找问题找到是在应用程序中的IntiFlash()函数,屏蔽掉该函数就正常啦。

    IntiFlash()函数是嵌入到InitSysCtrl();中,就是应用程序最开始调用的那个函数。

    2837xD_FLASH_lnk_cpu1.cmd  
    12  
    MEMORY  
    3 {  
    4 PAGE 0 : /* Program Memory */  
    5 /* Memory (RAM/FLASH) blocks can be moved to PAGE1 for data allocation */  
    6 /* BEGIN is used for the "boot to Flash" bootloader mode */  
    78  
    BEGIN : origin = 0x088000, length = 0x000002  
    9 RAMM0 : origin = 0x000122, length = 0x0002DE  
    10 RAMD0 : origin = 0x00B000, length = 0x000800  
    11 RAMLS0 : origin = 0x008000, length = 0x000800  
    12 RAMLS1 : origin = 0x008800, length = 0x000800  
    13 RAMLS2 : origin = 0x009000, length = 0x000800  
    14 RAMLS3 : origin = 0x009800, length = 0x000800  
    15 RAMLS4 : origin = 0x00A000, length = 0x000800  
    16 RAMGS14 : origin = 0x01A000, length = 0x001000  
    17 RAMGS15 : origin = 0x01B000, length = 0x001000  
    18 RESET : origin = 0x3FFFC0, length = 0x000002  
    19  
    20 /* Flash sectors */  
    21 FLASHA : origin = 0x080002, length = 0x001FFE /* on-chipFlash */  
    22 FLASHB : origin = 0x082000, length = 0x002000 /* on-chipFlash */  
    23 FLASHC : origin = 0x084000, length = 0x002000 /* on-chipFlash */  
    24 FLASHD : origin = 0x086000, length = 0x002000 /* on-chipFlash */  
    25 FLASHE : origin = 0x088002, length = 0x007FFE /* on-chipFlash */  
    26 FLASHF : origin = 0x090000, length = 0x008000 /* on-chipFlash */  
    27 FLASHG : origin = 0x098000, length = 0x008000 /* on-chipFlash */  
    28 FLASHH : origin = 0x0A0000, length = 0x008000 /* on-chipFlash */  
    29 FLASHI : origin = 0x0A8000, length = 0x008000 /* on-chipFlash */  
    30 FLASHJ : origin = 0x0B0000, length = 0x008000 /* on-chipFlash */  
    31 FLASHK : origin = 0x0B8000, length = 0x002000 /* on-chipFlash */  
    32 FLASHL : origin = 0x0BA000, length = 0x002000 /* on-chipFlash */  
    33 FLASHM : origin = 0x0BC000, length = 0x002000 /* on-chipFlash */  
    34 FLASHN : origin = 0x0BE000, length = 0x002000 /* on-chipFlash */  
    35  
    Page 12837xD_FLASH_lnk_cpu1.cmd  
    36 PAGE 1 : /* Data Memory */  
    37 /* Memory (RAM/FLASH) blocks can be moved to PAGE0 for programallocation */  
    38  
    39 BOOT_RSVD : origin = 0x000002, length = 0x000120 /* Part ofM0, BOOT rom will use this for stack */  
    40 RAMM1 : origin = 0x000400, length = 0x000400 /* on-chipRAM block M1 */  
    41 RAMD1 : origin = 0x00B800, length = 0x000800  
    42  
    43 RAMLS5 : origin = 0x00A800, length = 0x000800  
    44  
    45 RAMGS0 : origin = 0x00C000, length = 0x001000  
    46 RAMGS1 : origin = 0x00D000, length = 0x001000  
    47 RAMGS2 : origin = 0x00E000, length = 0x001000  
    48 RAMGS3 : origin = 0x00F000, length = 0x001000  
    49 RAMGS4 : origin = 0x010000, length = 0x001000  
    50 RAMGS5 : origin = 0x011000, length = 0x001000  
    51 RAMGS6 : origin = 0x012000, length = 0x001000  
    52 RAMGS7 : origin = 0x013000, length = 0x001000  
    53 RAMGS8 : origin = 0x014000, length = 0x001000  
    54 RAMGS9 : origin = 0x015000, length = 0x001000  
    55 RAMGS10 : origin = 0x016000, length = 0x001000  
    56 RAMGS11 : origin = 0x017000, length = 0x001000  
    57 RAMGS12 : origin = 0x018000, length = 0x001000  
    58 RAMGS13 : origin = 0x019000, length = 0x001000  
    59  
    60  
    61 CPU2TOCPU1RAM : origin = 0x03F800, length = 0x000400  
    62 CPU1TOCPU2RAM : origin = 0x03FC00, length = 0x000400  
    63 }  
    64  
    65  
    66 SECTIONS  
    67 {  
    68 /* Allocate program areas: */  
    69 .cinit : > FLASHE PAGE = 0, ALIGN(4)  
    70 .pinit : > FLASHE, PAGE = 0, ALIGN(4)  
    71 .text : >> FLASHE PAGE = 0, ALIGN(4)  
    72 codestart : > BEGIN PAGE = 0, ALIGN(4)  
    73 ramfuncs : LOAD = FLASHE,  
    74 RUN = RAMLS0 | RAMLS1 | RAMLS2 |RAMLS3,  
    75 LOAD_START(_RamfuncsLoadStart),  
    76 LOAD_SIZE(_RamfuncsLoadSize),  
    77 LOAD_END(_RamfuncsLoadEnd),  
    78 RUN_START(_RamfuncsRunStart),  
    79 RUN_SIZE(_RamfuncsRunSize),  
    80 RUN_END(_RamfuncsRunEnd),  
    81 PAGE = 0, ALIGN(4)  
    82  
    83 /* Allocate uninitalized data sections: */  
    84 .stack : > RAMM1 PAGE = 1  
    85 .ebss : >> RAMLS5 | RAMGS0 | RAMGS1 PAGE = 1  
    86 .esysmem : > RAMLS5 PAGE = 1  
    87  
    88 /* Initalized sections go in Flash */  
    89 .econst : >> FLASHE PAGE = 0, ALIGN(4)  
    90 .switch : > FLASHE PAGE = 0, ALIGN(4)  
    91  
    92 .reset : > RESET, PAGE = 0, TYPE = DSECT /* not used,*/  
    93  
    94 Filter_RegsFile : > RAMGS0, PAGE = 1  
    95  
    96 SHARERAMGS0 : > RAMGS0, PAGE = 1  
    97 SHARERAMGS1 : > RAMGS1, PAGE = 1  
    98 ramgs0 : > RAMGS0, PAGE = 1  
    99 ramgs1 : > RAMGS1, PAGE = 1  
    100  
    101 #ifdef __TI_COMPILER_VERSION  
    102 #if __TI_COMPILER_VERSION >= 15009000  
    103 .TI.ramfunc : {} LOAD = FLASHE,  
    104 RUN = RAMLS0 | RAMLS1 | RAMLS2 |RAMLS3,  
    105 LOAD_START(_RamfuncsLoadStart),  
    106 LOAD_SIZE(_RamfuncsLoadSize),  
    107 LOAD_END(_RamfuncsLoadEnd),  
    108 RUN_START(_RamfuncsRunStart),  
    109 RUN_SIZE(_RamfuncsRunSize),  
    110 RUN_END(_RamfuncsRunEnd),  
    111 PAGE = 0, ALIGN(4)  
    112 #endif  
    113 #endif  
    114  
    115 /* The following section definitions are required when using the IPC APIDrivers */  
    116 GROUP : > CPU1TOCPU2RAM, PAGE = 1  
    117 {  
    118 PUTBUFFER  
    119 PUTWRITEIDX  
    120 GETREADIDX  
    121 }  
    122  
    123 GROUP : > CPU2TOCPU1RAM, PAGE = 1  
    124 {  
    125 GETBUFFER : TYPE = DSECT  
    126 GETWRITEIDX : TYPE = DSECT  
    127 PUTREADIDX : TYPE = DSECT  
    128 }  
    129  
    130 /* The following section definition are for SDFM examples */  
    131 Filter1_RegsFile : > RAMGS1, PAGE = 1, fill=0x1111  
    132 Filter2_RegsFile : > RAMGS2, PAGE = 1, fill=0x2222  
    133 Filter3_RegsFile : > RAMGS3, PAGE = 1, fill=0x3333  
    134 Filter4_RegsFile : > RAMGS4, PAGE = 1, fill=0x4444  
    135 Difference_RegsFile : >RAMGS5, PAGE = 1, fill=0x3333  
    136  
    137 }  
    138  
    139 /* 
    140 //========================================================================= 
    == 
    141 // End of file. 
    142 //========================================================================= 
    == 
    143 */  
    144  

    升级程序完成,可用

  • 相关阅读:
    TouchAction实现连续滑动设置手势密码
    用命令方式启动、停止appium服务和app
    企业软件防火墙iptables
    磁盘分区
    docker-网络
    docker-镜像管理基础
    docker-简单操作
    docker-安装
    python-函数
    find一些常用参数的一些常用实例和一些具体用法和注意事项。
  • 原文地址:https://www.cnblogs.com/havihouston/p/6245107.html
Copyright © 2020-2023  润新知