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.

TMS320F206 FLASH编程质量检验例程编译出错



在TI的官网上下载的实例程序,在 CCS3.3版本下编译出错,软件版本(VerSion3.3.83.20)

错误提示信息:

>> Cannot open "Debug.lkf"

实例工程链接地址如下:

www-s.ti.com/.../sprabe8.zip

  • 你可以参考一下下边帖子中的解决方法:https://e2e.ti.com/support/development_tools/code_composer_studio/f/81/t/178190

  • >> cannot allocate .text in B0 (page 1)
    >> warning: entry point other than _c_int0 specified
    >> errors in input - FL_RD.out not built

    编译出现了另外一个错误,

     cannot allocate .text in B0 (page 1)

    cmd 文件如下:

    /* F206 TRIPLE READ */
    -e START
    -m FL_RD.map
    -o FL_RD.out

    MEMORY
    {
    PAGE 0 : TB0: origin = 0h, length = 0F0h
    PSA: origin = 0F0h, length = 0Fh
    B0: origin = 0FE00h, length = 0100h
    FLASH0: origin = 0100h, length = 04F00h
    FLASH1: origin = 05000h, length = 05000h

    PAGE 1 : RAMB2: origin = 0060h, length = 0020h
    RAMB0: origin = 0200h, length = 0100h
    RAMB1: origin = 0300h, length = 0100h
    FLASH2: origin = 01000h, length = 01000h
    }

    SECTIONS
    {
    .text > B0 PAGE0
    .bss > RAMB2 PAGE1
    }
    已经分配了B0 PAGE0,为什么不能分配到page0。

  • B0的长度也太短了,你的.text段的长度肯定不至0xF0吧。

  • 这个程序是TI 官方网站提供的,是一个小的汇编程序,不是很大。而且是正式文档中说明的。

    TRIPLE_RD.ASM

    .title "50M21 FLASH READ ARRAY"
    .length 50
    .width 120
    .option X
    ************************************************************
    * FLASH READ ARRAY (FL_RD) *
    * Additional Subroutine for TMS320F206 Flash Utilities. *
    * Revision 1.0 *
    * This program reads the flash memory with three different *
    * methods as follows: *
    * Fast read sequential *
    * Slow read sequential *
    * XOR read *
    * Each read method is CHECKSUM'ed for pass or fail. *
    * This program can be built to read the flash memory of a *
    * device that had been cleared, erased, programmed with *
    * a checker board pattern or programmed with a piece of *
    * code by changing the compiled switch "CS" below. *
    * *
    * *
    * Passed Parameters: *
    * FL_START Start address of flash range to be cleared.*
    * This address must start on a row start *
    * boundary. *
    * FL_END End address of flash range to be cleared. *
    * This address must end on a row end *
    * boundary. *
    * *
    * Returned Parameter: *
    * ACC = error code (0 if passed) *
    * *
    * This function can be compiled/assembled and used as a *
    * standalone test or used by the C2XX_BRX.ASM file. *
    * *
    * - For Stand alone, use the read_stdalone.cmd to compile *
    * and link. Note that when using this mode, the compile *
    * variable PRG2xx must be set to 0 also set the CNF to 1 *
    * (by using the CCS) before code is downloaded onto the *
    * target board since the code is supposingly downloaded on *
    * the on-chip B0 block *
    * *
    * - For using with the control module C2XX_BRX.ASM and *
    * the utility code Sutils20.asm, use the *
    * C2XX_BRX(_CCS).CMD to compile and link. Note that when *
    * using this mode, the compile variable PRG2xx must be set *
    * to 1. The PRG_2XX(W).EXE automatically set the CNF bit *
    * to 1 before downloading the C2XX_BBX.OUT onto the F206. *
    * *
    ************************************************************
    .def FL_RD
    .global FL_RD
    .def _FL_RD
    .ref PARMS
    .global _FL_RD, START
    .include "fl_vars.h"
    .text
    PRG2xx .set 1 ;Set to 0 if not used by C2XX_BRX.ASM file
    *
    * STATISTICS VARIABLES
    FCSH .set 070h ;FAST CHECKSUM HI WORD
    FCSL .set 071h ;FAST CHECKSUM LO WORD
    SCSH .set 072h ;SLOW CHECKSUM HI WORD
    SCSL .set 073h ;SLOW CHECKSUM LO WORD
    XCSH .set 074h ;XOR CHECKSUM HI WORD
    XCSL .set 075h ;XOR CHECKSUM LO WORD
    CSH .set 076h ;CORRECT CHECKSUM HI
    CSL .set 077h ;CORRECT CHECKSUM LO

    CS .set 0 ;No checksum
    ;CS .set 1 ;clear checksum
    ;CS .set 2 ;erase checksum
    ;CS .set 3 ;checker shecksum

    ERSSUML .set 0C000h ;erase checksum lo
    ERSSUMH .set 0FFFFh ;erase checksum hi

    CLRSUML .set 00000h ;clear checksum lo
    CLRSUMH .set 00000h ;clear checksum hi

    CKRSUML .set 0E000h ;checker checksum lo
    CKRSUMH .set 0FFFFh ;checker checksum hi


    FPTR .set 07Dh ;FLASH READ POINTER
    RPT_N .set 07Eh ;TEMPORARY FOR REPEAT COUNT
    TEMP .set 07Fh ;TEMPORARY VARIABLE
    *
    * Constants
    FUT .set 0 ;Flash0 under Test
    ;FUT .set 1 ;Flash1 under Test
    FLST0 .set 0 ;start address of Flash0
    FLEND0 .set 03FFFh ;end address of Flash0
    FLST1 .set 04000h ;start address of Flash1
    FLEND1 .set 07FFFh ;end address of Flash1
    XORMASK .set 03FFFh ;address XOR mask

    .page
    *
    .sect "FL_RD"
    LBL FL_RD
    _FL_RD:
    START:
    *
    ;;<Configure Status Registers>======================================
    SETC SXM ;; ENABLE sign extension
    LDP #0
    LACL #0 ;ACC = 0
    SACL SCSL ;INITIALIZE CHECKSUM
    SACL SCSH ;INITIALIZE CHECKSUM
    SACL XCSL ;INITIALIZE CHECKSUM
    SACL XCSH ;INITIALIZE CHECKSUM

    .if CS==1 ;CLEAR
    SPLK #CLRSUML,CSL ;INITIALIZE CHECKSUM
    SPLK #CLRSUMH,CSH ;INITIALIZE CHECKSUM
    .endif

    .if CS==2 ;ERASE
    SPLK #ERSSUML,CSL ;INITIALIZE CHECKSUM
    SPLK #ERSSUMH,CSH ;INITIALIZE CHECKSUM
    .endif

    .if CS==3 ;CHECKER
    SPLK #CKRSUML,CSL ;INITIALIZE CHECKSUM
    SPLK #CKRSUMH,CSH ;INITIALIZE CHECKSUM
    .endif

    .if PRG2xx
    CALL RD3 ;Execute Triple Read on Flash0/1
    LDP #PARMS
    RET
    .else

    SPLK #FLST0,FL_START ;set flash start adrs
    SPLK #FLEND0,FL_END ;set flash end adrs
    LAR AR5,FL_START ;AR5 indicates which flash
    CALL RD3 ;Execute Triple Read on Flash0

    BCND FailRD3_0,NEQ ;if Flash0 fails

    LACL #0 ;ACC = 0
    SACL SCSL ;INITIALIZE CHECKSUM
    SACL SCSH ;INITIALIZE CHECKSUM
    SACL XCSL ;INITIALIZE CHECKSUM
    SACL XCSH ;INITIALIZE CHECKSUM

    SPLK #FLST1,FL_START ;set flash start adrs
    SPLK #FLEND1,FL_END ;set flash end adrs
    LAR AR5,FL_START ;AR5 indicates which flash
    CALL RD3 ;Execute Triple Read on Flash0

    BCND FailRD3_1,NEQ ;if Flash1 fails

    LBL PASS
    NOP
    * B PASS
    B FL_RD ;looping

    LBL FailRD3_0
    IDLE
    B FailRD3_0
    LBL FailRD3_1
    IDLE
    B FailRD3_1

    .endif

    *
    * EXECUTE FAST CHECKSUM
    *
    LBL RD3
    MAR *,AR5 ;ARP=>AR5
    LAR AR0,#0
    LACL FL_END ;ACC = FLASH END +1
    SUBS FL_START ;ACC= FLASH LENGTH +1
    * SUB #1 ;ACC -= 1 FLASH LENGTH
    SACL RPT_N ;SAVE FOR REPEAT COUNT
    SPLK #1,TEMP ;MPY FACTOR FOR CHECKSUM
    MPYK #0 ;PREG=0
    LACL #0 ;ACC=0

    CMPR 3
    BCND OverFL0,TC
    RPT RPT_N ;FOR I=0;I<N;++
    MAC #FLST0,TEMP ;CHECKSUM MEMORY
    B OverFL1
    LBL OverFL0
    nop
    RPT RPT_N ;FOR I=0;I<N;++
    MAC #FLST1,TEMP ;CHECKSUM MEMORY

    LBL OverFL1
    APAC ; LAST SUM
    SACL FCSL ;SAVE LO CHECKSUM
    SACH FCSH ;SAVE HI CHECKSUM
    *
    * EXECUTE SLOW CHECKSUM
    *
    LAR AR1,FL_START ;SET START ADRS
    LAR AR0,FL_END ;SET END ADRS
    MAR *,AR0
    MAR *+,AR1
    LACL FL_END ;ACC=>END OF ARRAY + 1
    ADD #1
    *
    LBL SLOOP
    SUB #1 ;ACC=>NEXT WORD
    SACL FPTR ;SAVE POINTER
    TBLR TEMP ;DUMMY READ OF FLASH DATA
    TBLR TEMP ;SLOW READ OF FLASH DATA
    LACC SCSH,16 ;ACCH=SLOW CHECKSUM HI
    ADDS SCSL ;ACC = SLOW CHECKSUM
    ADD TEMP ;ACC += NEXT FLASH WORD
    SACL SCSL ;SAVE SLOW CHECKSUM LO
    SACH SCSH ;SAVE SLOW CHECKSUM HI
    LACL FPTR ;ACC=>CURRENT WORD
    *
    MAR *+ ;AR1=+1
    CMPR 3 ;IF AR1 != AR0
    BCND SLOOP,TC ;THEN CONTINUE LOOP
    * ; ELSE DONE SLOW CHECKSUM
    *
    * EXECUTE XOR CHECKSUM
    *
    SPLK #XORMASK,XOR ;initialize XOR
    LAR AR1,FL_START ;SET START ADRS
    LACL FL_END ;ACC=>END OF ARRAY + 1
    ADD #1
    *
    LBL XLOOP
    SUB #1 ;ACC=>NEXT WORD
    SACL FPTR ;SAVE POINTER
    XOR XOR ;SWITCH TO XOR PATTERN
    TBLR TEMP ;DUMMY READ OF FLASH DATA
    XOR XOR ;RESTORE ADRS TO CURRENT WORD
    TBLR TEMP ;SLOW READ OF FLASH DATA
    LACC XCSH,16 ;ACCH=SLOW CHECKSUM HI
    ADDS XCSL ;ACC = SLOW CHECKSUM
    ADD TEMP ;ACC += NEXT FLASH WORD
    SACL XCSL ;SAVE SLOW CHECKSUM LO
    SACH XCSH ;SAVE SLOW CHECKSUM HI
    LACL FPTR ;ACC=>CURRENT WORD
    *
    MAR *+ ;AR1=+1
    CMPR 3 ;IF AR1 != AR0
    BCND XLOOP,TC ;THEN CONTINUE LOOP
    * ; ELSE DONE SLOW CHECKSUM
    *
    * COMPARE CHECKSUMS
    *
    MAR *,AR1 ;ARP=>AR1
    .if CS==0
    LAR AR0,FCSH ;AR0=MASTER CHECKSUM
    .else
    LAR AR0,CSH ;AR0=MASTER CHECKSUM
    .endif

    LAR AR1,FCSH ;AR1=FAST CHECKSUM HI
    CMPR 3 ;IF AR1 != AR0
    BCND CS_ERROR,TC ; THEN TAKE ERROR TRAP
    LAR AR1,SCSH ;AR1=FAST CHECKSUM HI
    CMPR 3 ;IF AR1 != AR0
    BCND CS_ERROR,TC ; THEN TAKE ERROR TRAP
    LAR AR1,XCSH ;AR1=FAST CHECKSUM HI
    CMPR 3 ;IF AR1 != AR0
    BCND CS_ERROR,TC ; THEN TAKE ERROR TRAP
    .if CS==0
    LAR AR0,FCSL ;AR0=MASTER CHECKSUM
    .else
    LAR AR0,CSL ;AR0=MASTER CHECKSUM
    .endif
    LAR AR1,FCSL ;AR1=FAST CHECKSUM LO
    CMPR 3 ;IF AR1 != AR0
    BCND CS_ERROR,TC ; THEN TAKE ERROR TRAP
    LAR AR1,SCSL ;AR1=FAST CHECKSUM LO
    CMPR 3 ;IF AR1 != AR0
    BCND CS_ERROR,TC ; THEN TAKE ERROR TRAP
    LAR AR1,XCSL ;AR1=FAST CHECKSUM LO
    CMPR 3 ;IF AR1 != AR0
    BCND CS_ERROR,TC ; THEN TAKE ERROR TRAP
    *
    LACL #0 ;NO ERRORS
    RET ;RETURN TO CALLING SEQUENCE
    *
    LBL CS_ERROR
    LACL #0Ch ;CHECKSUM FAILS
    RET ;RETURN TO CALLING SEQUENCE
    *
    .end

    *************************************************************
    ** Delay And Access Mode Subroutines **
    * **
    * TMS320F2XX Flash Utilities. **
    * Revision: 2.0, 9/10/97 **
    * Revision: 2.1, 1/31/98 **
    * **
    * Filename: sutils20.asm **
    * Modified for F2xx : Sam Saba 12/24/96 **
    * Changes20: Changed DELAY parameter passing to use AR6 **
    * instead of a RAM location. **
    * Changes21: Added conditional assembly statements to REGS **
    * and ARRAY subroutines for F206 versus F24X. **
    * **
    * **
    * Called by: These utilites are used by CLEAR,ERASE, **
    * PROGRAM algorithms written for F2xx devices. **
    * Function : DELAY - Delay loop specified by AR6. **
    * REGS - Clears MODE bit of F_ACCESS0/1 to **
    * access flash module control registers.**
    * ARRAY - Sets MODE bit of F_ACCESS0/1 to access**
    * the flash array. **
    *************************************************************
    .include "svar20.h"
    .def DELAY,REGS,ARRAY
    F24X .set 0
    .sect "DLY"

    *************************************
    *Delays as follows: *
    * LAR AR6,#N 2 Cycles *
    * CALL DELAY 4 Cycles *
    * RPT #DLOOP 2*(N+1) Cycles *
    * NOP DLOOP*(N+1) Cycles *
    * BANZ DLY_LP 4*N+2 Cycles *
    * RET 4 Cycles *
    * ------------------------ *
    * = DLOOP(N+1)+6*N+14 Cycles *
    * Set N and DLOOP appropriately to *
    * get desired delay. *
    *************************************

    DELAY ;AR6 = OUTER LOOP COUNT
    DLY_LP RPT #DLOOP ;APPROX 5US DELAY
    NOP
    BANZ DLY_LP,*- ;LOOP UNTIL DONE
    RET ;RETURN TO CALLING SEQUENCE

    .page
    **************************************************
    * REGS - Clears MODE bit of F_ACCESS0/1 to **
    * access flash module control registers.**
    **************************************************
    .sect "REG"
    REGS
    SPLK #0000h,SPAD2
    ***********The next instruction is for F240 only,*************
    .if F24X != 0 ;Assemble for F24X only.
    OUT SPAD2,F24X_ACCS ;Enable F24X flash reg mode.
    ;SPAD1 is dummy value.
    .endif

    **************************************************************
    .if F24X = 0 ;Assemble for F206 only.
    LACC FL_ST
    SUB #4000h
    BCND reg1, geq ;if address>= 4000h,set
    ;set reg mode for flash1 array
    OUT SPAD2,F_ACCESS0 ;Change mode of flash0.
    RET
    reg1 OUT SPAD2,F_ACCESS1 ;Change mode of flash1.
    .endif
    RET ;RETURN TO CALLING SEQUENCE

    .page
    **************************************************
    * ARRAY - Sets MODE bit of F_ACCESS0/1 to access**
    * the flash array. **
    **************************************************
    .sect "ARY"
    ARRAY
    SPLK #0001h,SPAD2
    ***********The next instruction is for F240 only,*************
    .if F24X != 0 ;Assemble for F24X only.
    IN SPAD1,F24X_ACCS ;Enable F24X flash array mode.
    ;SPAD1 is dummy value.
    .endif

    **************************************************************
    .if F24X = 0 ;Assemble for F206 only.
    LACC FL_ST
    SUB #4000h
    BCND ary1, geq ;if address>= 4000h,set
    ;set reg mode for flash1 array
    OUT SPAD2,F_ACCESS0 ;Change mode of flash0.
    RET
    ary1 OUT SPAD2,F_ACCESS1 ;Change mode of flash1.
    .endif
    RET ;RETURN TO CALLING SEQUENCE
    .end

  • 你查看一下生成的.map文件,先确定一下实际生成的text段有多大?

  • .MAP文件如下,看上去没有超过0100h的范围,我是第一次使用ccs,还请多指点。

    ******************************************************************************
    TMS320C24xx COFF Linker Version 7.04
    ******************************************************************************
    >> Linked Wed May 11 14:39:05 2016

    OUTPUT FILE NAME: <FL_RD.out>
    ENTRY POINT SYMBOL: "START" address: 00000142


    MEMORY CONFIGURATION

    name origin length used attributes fill
    -------- -------- --------- -------- ---------- --------
    PAGE 0: TB0 00000000 0000000f0 000000e9 RWIX
    PSA 000000f0 00000000f 0000000d RWIX
    FLASH0 00000100 000004f00 000000ad RWIX
    FLASH1 00005000 000005000 00000000 RWIX
    B0 0000fe00 000000100 00000000 RWIX

    PAGE 1: RAMB2 00000060 000000020 00000000 RWIX
    RAMB0 00000200 000000100 00000000 RWIX
    RAMB1 00000300 000000100 00000000 RWIX
    FLASH2 00001000 000001000 00000000 RWIX


    SECTION ALLOCATION MAP

    output attributes/
    section page origin length input sections
    -------- ---- ---------- ---------- ----------------
    .text 1 00000000 00000000 UNINITIALIZED
    00000000 00000000 C2XX_BRX.obj (.text)
    00000000 00000000 TRIPLE_RD.obj (.text)
    00000000 00000000 SUTILS20.obj (.text)

    PAGE1 1 00000000 00000000 UNINITIALIZED

    .bss 1 00000060 00000000 UNINITIALIZED
    00000060 00000000 C2XX_BRX.obj (.bss)
    00000060 00000000 TRIPLE_RD.obj (.bss)
    00000060 00000000 SUTILS20.obj (.bss)

    PAGE1 1 00000000 00000000 UNINITIALIZED

    .data 1 00000000 00000000 UNINITIALIZED
    00000000 00000000 C2XX_BRX.obj (.data)
    00000000 00000000 TRIPLE_RD.obj (.data)
    00000000 00000000 SUTILS20.obj (.data)

    PRG_parm 0 00000000 0000000c
    00000000 0000000c C2XX_BRX.obj (PRG_parm)

    PRG_data 0 0000000c 000000c8
    0000000c 000000c8 C2XX_BRX.obj (PRG_data)

    ary_var 0 000000d4 00000010
    000000d4 00000010 C2XX_BRX.obj (ary_var)

    PRG_text 0 00000100 00000035
    00000100 00000035 C2XX_BRX.obj (PRG_text)

    DLY 0 000000e4 00000005
    000000e4 00000005 SUTILS20.obj (DLY)

    REG 0 000000f0 0000000d
    000000f0 0000000d SUTILS20.obj (REG)

    ARY 0 00000135 0000000d
    00000135 0000000d SUTILS20.obj (ARY)

    FL_RD 0 00000142 0000006b
    00000142 0000006b TRIPLE_RD.obj (FL_RD)


    GLOBAL SYMBOLS

    address name address name
    -------- ---- -------- ----
    00000060 .bss 00000000 PARMS
    00000000 .data 00000000 .text
    00000000 .text 00000000 PRG_bufaddr
    00000135 ARRAY 00000000 etext
    000000e4 DELAY 00000000 edata
    00000142 FL_RD 00000000 .data
    00000000 PARMS 00000001 PRG_bufsize
    00000000 PRG_bufaddr 00000002 PRG_devsize
    00000001 PRG_bufsize 00000003 PRG_options
    00000002 PRG_devsize 00000004 PRG_paddr
    00000126 PRG_erase 00000005 PRG_page
    00000100 PRG_init 00000006 PRG_length
    00000006 PRG_length 00000007 PRG_status
    00000003 PRG_options 00000009 PROTECT
    00000004 PRG_paddr 0000000a SEG_ST
    00000005 PRG_page 0000000b SEG_END
    00000105 PRG_program 00000060 end
    00000007 PRG_status 00000060 .bss
    00000130 PRG_stop 000000e4 DELAY
    0000012b PRG_verify 000000f0 REGS
    00000009 PROTECT 00000100 PRG_init
    000000f0 REGS 00000105 PRG_program
    0000000b SEG_END 00000126 PRG_erase
    0000000a SEG_ST 0000012b PRG_verify
    00000142 START 00000130 PRG_stop
    00000142 _FL_RD 00000135 ARRAY
    UNDEFED _c_int0 00000142 FL_RD
    ffffffff cinit 00000142 START
    00000000 edata 00000142 _FL_RD
    00000060 end ffffffff pinit
    00000000 etext ffffffff cinit
    ffffffff pinit UNDEFED _c_int0

    [32 symbols]

  • 下边这几段代码的obj加起来已经超过0xF0了,所以你需要增大B0的长度。

    PRG_parm 0 00000000 0000000c 
    00000000 0000000c C2XX_BRX.obj (PRG_parm)

    PRG_data 0 0000000c 000000c8 
    0000000c 000000c8 C2XX_BRX.obj (PRG_data)

    ary_var 0 000000d4 00000010 
    000000d4 00000010 C2XX_BRX.obj (ary_var)

    PRG_text 0 00000100 00000035 
    00000100 00000035 C2XX_BRX.obj (PRG_text)

    DLY 0 000000e4 00000005 
    000000e4 00000005 SUTILS20.obj (DLY)

    REG 0 000000f0 0000000d 
    000000f0 0000000d SUTILS20.obj (REG)

    ARY 0 00000135 0000000d 
    00000135 0000000d SUTILS20.obj (ARY)

    FL_RD 0 00000142 0000006b 
    00000142 0000006b TRIPLE_RD.obj (FL_RD)

  • 您好:

    我是这将b0修改为内部saram,SARAM 的大小为4K ,我设定了1K的长度,但是编译后,还是看不到数据分配。

    B0:   origin = 08000h, length = 0400h

    /* F206 TRIPLE READ */
    -e START
    -m FL_RD.map
    -o FL_RD.out

    MEMORY
    {
    PAGE 0 : TB0: origin = 0h, length = 0F0h
    PSA: origin = 0F0h, length = 0Fh

    FLASH0: origin = 0100h, length = 04F00h
    FLASH1: origin = 05000h, length = 03000h


    PAGE 1 : RAMB2: origin = 0060h, length = 0020h
    RAMB0: origin = 0200h, length = 0100h
    RAMB1: origin = 0300h, length = 0100h
    FLASH2: origin = 01000h, length = 01000h
    B0: origin = 08000h, length = 0400h
    }

    SECTIONS
    {
    .text > B0 PAGE1
    .bss > RAMB2 PAGE1
    }

  • 你需要将“B0:   origin = 08000h, length = 0400h”放在PAGE 0:中,重新编译后,CCS的报错是什么?

  • 您好,修改为page 0后,

    /* F206 TRIPLE READ */
    -e START
    -m FL_RD.map
    -o FL_RD.out

    MEMORY
    {
    PAGE 0 : TB0: origin = 0h, length = 0F0h
    PSA: origin = 0F0h, length = 0Fh

    FLASH0: origin = 0100h, length = 04F00h
    FLASH1: origin = 05000h, length = 03000h
    B0: origin = 08000h, length = 0400h
    PAGE 1 : RAMB2: origin = 0060h, length = 0020h
    RAMB0: origin = 0200h, length = 0100h
    RAMB1: origin = 0300h, length = 0100h
    FLASH2: origin = 01000h, length = 01000h

    }

    SECTIONS
    {
    .text > B0 PAGE0
    .bss > RAMB2 PAGE1
    }

    报错如下:

    >> cannot allocate .text in B0 (page 1)
    >> warning: entry point other than _c_int0 specified
    >> errors in input - FL_RD.out not built

    如果修改为:如下,可以编译生成.out文件,但这个文件不能load 到芯片上。

    /* F206 TRIPLE READ */
    -e START
    -m FL_RD.map
    -o FL_RD.out

    MEMORY
    {
    PAGE 0 : TB0: origin = 0h, length = 0F0h
    PSA: origin = 0F0h, length = 0Fh

    FLASH0: origin = 0100h, length = 04F00h
    FLASH1: origin = 05000h, length = 03000h

    PAGE 1 : RAMB2: origin = 0060h, length = 0020h
    RAMB0: origin = 0200h, length = 0100h
    RAMB1: origin = 0300h, length = 0100h
    FLASH2: origin = 01000h, length = 01000h
    B0: origin = 08000h, length = 0400h
    }

    SECTIONS
    {
    .text > B0 PAGE1
    .bss > RAMB2 PAGE1
    }

  • 如果你用的是SD的仿真器的话,你可以试试用CCS中自带的SDFlash看能否烧写。