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.

[参考译文] CC1312R7:减小.cmd 文件中的闪存映像大小、使程序进入故障 ISR。

Guru**** 657930 points
Other Parts Discussed in Thread: CC1312R7
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1286208/cc1312r7-reducing-flash-image-size-in-cmd-file-make-program-go-to-fault-isr

器件型号:CC1312R7

您好!

我´m´m 一个具有 OTA 功能的引导加载程序、因此我需要对主程序的链接器文件进行配置、使其适合引导加载程序的时隙(0x40000/256KB)、这远远超出了我的需要(大约74KB) 但为了发展未来的理由 if (如果更多的特征在以后添加)。

当我将大小从正常配置0xB000000000/704Kb 减小到0x40000时、问题就出现了、然后进行调试时 、我发现 RF_PARAMS_INIT (&rfParams)负责将我带入 FaultISR 条件、但是、在较大的大小下不会发生这种情况。

´m 我注释掉所有与无线电相关的内容、那么该程序凭借较小的闪存大小不会崩溃、即使将其加载到引导加载程序插槽中、我也能够使其正常工作。

有任何帮助吗? 对我来说、仅当无线电以某种方式受某些闪存区域或大小限制时才有意义。 此外、提供 FaultISR 故障排除指南也会很好。

#define BOOTLOADER

//which sector will we use

#define PRIMARY_SECTOR
//#define SECONDARY_SECTOR

//size of the programs

#ifdef BOOTLOADER

	#define PROGRAM_SIZE 0x40000
	#define HDR_SIZE 0x80
	#define TRAILER_SIZE 0x700

	#ifdef PRIMARY_SECTOR
		#define FLASH_BASE              HDR_SIZE
		#define FLASH_SIZE              PROGRAM_SIZE-HDR_SIZE-TRAILER_SIZE
	#else
		#define FLASH_BASE              PROGRAM_SIZE+HDR_SIZE;
		#define FLASH_SIZE              PROGRAM_SIZE-HDR_SIZE-TRAILER_SIZE
	#endif

#else
	#define FLASH_BASE              0x00000
	#define FLASH_SIZE              0xB0000
#endif

此致、Javier

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Javier、您好!

    这可能是堆栈溢出。 请您能增加任务的堆栈大小吗、看看它是否有帮助。

    此致、

    SID

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    它被定义为1024、更改为4096和没有运气。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、我指的是线程 Stack。 我看到如果输入是一个 NULL 指针, RF_params_init()将失败。

    我怀疑对讲机代码是否绑定到位置、但大小可能是导致代码失败的原因。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    为什么会这样? OAD 示例工作 并利用无线电库(假设我使用 prop_rf)、我只是尝试0x56000作为程序大小、仍然不能成功

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我已根据 ns_CoAP_OAD_offchip_LP_CC1312R7_tirtos7_ticlang 示例更新了.cmd 文件。

    #define BOOTLOADER
    
    //which sector will we use
    
    //size of the programs
    
    
    
    #ifdef BOOTLOADER
    	#define PROGRAM_SIZE 0x40000
    	#define MCUBOOT_HEAD_SIZE 0x80
    	#define ENTRY_SIZE 0x100
    	#define TRAILER_SIZE 0x2000
    	#define PRIMARY_SLOT_BASE 0x0
    
    	#define ENTRY_START (PRIMARY_SLOT_BASE + MCUBOOT_HEAD_SIZE)
    	#define ENTRY_END   (ENTRY_START + ENTRY_SIZE - 1)
    
    	#define FLASH_BASE              PRIMARY_SLOT_BASE + MCUBOOT_HEAD_SIZE + ENTRY_SIZE
    	#define FLASH_SIZE              PROGRAM_SIZE - MCUBOOT_HEAD_SIZE -TRAILER_SIZE - ENTRY_SIZE
    #else
    	#define FLASH_BASE              0x00000
    	#define FLASH_SIZE              0xB0000
    #endif
    
    #define NVS_BASE 0x80000
    #define NVS_SIZE 0x20000
    
    #define RAM_BASE                0x20000000
    #define RAM_SIZE                0x24000
    #define GPRAM_BASE              0x11000000
    #define GPRAM_SIZE              0x2000
    
    /* System memory map */
    
    MEMORY
    {
        /* Application stored in and executes from internal flash */
        FLASH (RX) : origin = FLASH_BASE, length = FLASH_SIZE
    
    	#ifdef BOOTLOADER
        	ENTRY (RX) : origin = ENTRY_START, length = ENTRY_SIZE
        	/* NVS area (unused in linker file, reserved for shared NV) */
        	NVS (RWX) : origin = NVS_BASE, length = NVS_SIZE
        #endif
    
        /* Application uses internal RAM for data */
        SRAM (RWX) : origin = RAM_BASE, length = RAM_SIZE
    
    
    
    }
    
    /* Section allocation in memory */
    
    SECTIONS
    {
    	#ifdef BOOTLOADER
    	    .resetVecs      :   > ENTRY
        #else
        	.resetVecs      :   > FLASH_BASE
        #endif
        
        .text           :   > FLASH
        .TI.ramfunc     : {} load=FLASH, run=SRAM, table(BINIT)
        .const          :   > FLASH
        .constdata      :   > FLASH
        .rodata         :   > FLASH
        .binit          :   > FLASH
        .cinit          :   > FLASH
        .pinit          :   > FLASH
        .init_array     :   > FLASH
        .emb_text       :   > FLASH
        .ccfg           :   > FLASH (HIGH)
    
        .ramVecs        :   > SRAM, type = NOLOAD, ALIGN(256)
        .data           :   > SRAM
        .bss            :   > SRAM
        .sysmem         :   > SRAM
        .stack          :   > SRAM (HIGH)
        .nonretenvar    :   > SRAM
    }

    现在、  memset ((void*)&pObj->state、0、sizeof (pObj->state))中的 RF_Open 故障 ISR 试用程序;使用引导加载程序定义时、RFCC26X2_multiple.c 的第4717行。

    如果启用了正常模式、它会写入正常曲线。

    有什么想法吗?这是 RAM 工作、闪存大小不应该是问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我能够让它顺利地卸载所有内容、安装最新的 CCS 和 SimpleLink 库、并且第一次创建一个新项目。