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.

[参考译文] TMS320F28035-OTP:刷写 F28035 MCU 上的用户 EP 存储器

Guru**** 2782625 points

Other Parts Discussed in Thread: UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1609965/tms320f28035-ep-flashing-user-otp-memory-on-f28035-mcu

器件型号: TMS320F28035-TMS320F28035 EP
Thread 中讨论的其他器件: UNIFLASH

您好、我无法找到使用最新 CCS v20 在 F28035 MCU 上刷写用户 OTP 存储器的方法。 请您分享与此相关的任何文档。

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

    Kiran、

    如果您在执行程序加载时在用户 OTP 位置定义了包含内容的存储器、则 CCS 闪存插件应注意这一点。  您是否说通过受支持的.out 文件、CCS 无法正确对 OTP 进行编程?

    由于 OTP 仅为一次、因此在插件对话框中不会有擦除 OTP 的选项。

    如果这样回答了您的问题、或者 CCS v20 在加载到该区域时阻止了 OTP 写入、请告诉我。

    此致、

    Matthew

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

    您好、Matthew、

    我收到这个错误


    C28xx:loader:程序的一个或多个段落在不可写的存储器区域内。 这些区域实际上不会写入目标。 检查链接器配置和/或存储器映射。
    C28xx:闪存编程器:写入闪存时遇到错误
    C28xx:文件加载器:内存写入失败:未知错误
    C28xx:GEL:file:c:\Users\E004\workspace_ccstheia\F2803x_flash_kernel\Debug\F2803x_flash_kernel.out:加载失败。 我使用 SPRAAQ3 作为参考。
    下面是我使用的链接器文件。  

    MEMORY
    {
    PAGE 0 : 
        
    	    LINBOOTINIT : origin = 0x3D7800, length = 0x000020
    	    LINBOOT     : origin = 0x3D7820, length = 0x000400  
    
    PAGE 1 : 
            BOOT_RSVD   : origin = 0x000000, length = 0x000050     /* Part of M0, BOOT rom will use this for stack */
            RAMM0       : origin = 0x000050, length = 0x0003B0     /* on-chip RAM block M0 */
            RAMM1       : origin = 0x000400, length = 0x000400     /* on-chip RAM block M1 */
            RAML2       : origin = 0x008C00, length = 0x000400     /* on-chip RAM block L2 */
            RAML3       : origin = 0x009000, length = 0x001000     /* on-chip RAM block L3 */
            /*FLASHB      : origin = 0x3F4000, length = 0x002000     /* on-chip FLASH */
    }
     
    SECTIONS
    {
             .InitBoot    : > LINBOOT,  PAGE = 0
             .text        : > LINBOOT,      PAGE = 0
             .stack       : >  RAMM0       PAGE = 1
             .ebss        : >> RAMM1 | RAML2 | RAML3,       PAGE = 1
             LIN_BOOT     : > LINBOOTINIT,     PAGE = 0, ALIGN(4)
         
    }

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

    1) 您可以尝试 Uniflash 是否给出了相同的错误?  

    2) 我查看了 CCS 包含的 GEL 文件 (C:\ti\ccs2040\ccs\ccs_base\emulation\gel\F28035.gel)、我唯一注意到的是 OTP 段被标记为可写、而闪存被标记为只读(true、您需要调用闪存 API 才能对其进行编程)。  对于映射 OTP 的 2 条线、您能更改吗

      GEL_MapAdd (0x3d7800、0、0x400、1、1);       /* OTP        */

    最终目的  

      GEL_MapAdd (0x3d7800、0、0x4001、0);       /* OTP        */

    我想知道 CCS 是否正在使用此参数来确定它是否需要调用闪存实用程序、并将“1、1“误解为 RAM 位置。

    menuitem "Initialize Memory Map";
    
    hotmenu F28035_Memory_Map()
    {
        GEL_MapReset();
        GEL_MapOn();
    
        /* Program memory maps */
        GEL_MapAdd(0x0,0,0x400,1,1);                /* M0 SARAM        */
        GEL_MapAdd(0x400,0,0x400,1,1);              /* M1 SARAM        */
        GEL_MapAdd(0xD00,0,0x100,1,1);              /* PIEVECT(DSPBIOS)*/
        GEL_MapAdd(0x8000,0,0x800,1,1);             /* L0 SARAM        */
        GEL_MapAdd(0x8800,0,0x400,1,1);             /* L1 SARAM        */
        GEL_MapAdd(0x8c00,0,0x400,1,1);             /* L2 SARAM        */
        GEL_MapAdd(0x9000,0,0x1000,1,1);            /* L3 SARAM        */
        GEL_MapAdd(0x3d7800,0,0x400,1,1);           /* OTP             */
        GEL_MapAdd(0x3d7c80,0,0x040,1,1);           /* Device Cal      */
        GEL_MapAdd(0x3d7cc0,0,0x040,1,1);           /* Boot Get Mode   */
        GEL_MapAdd(0x3d7e80,0,0x001,1,0);           /* PARTID value    */
    	GEL_MapAdd(0x3d7e82,0,0x02F,1,0);           /* Calibration Data*/
        GEL_MapAdd(0x3e8000,0,0x10000,1,0);         /* FLASH           */
        GEL_MapAdd(0x3f8000,0,0x400,1,1);           /* L0 SARAM Mirror */
        GEL_MapAdd(0x3fe000,0,0x2000,1,0);          /* BOOT ROM        */
    
        /* Data memory maps */
        GEL_MapAdd(0x0,1,0x400,1,1);                /* M0 SARAM        */
        GEL_MapAdd(0x400,1,0x400,1,1);              /* M1 SARAM        */
        GEL_MapAdd(0x800,1,0x1800,1,1);             /* PF0             */
        GEL_MapAdd(0x6000,1,0x0400,1,1);            /* PF1-A           */
        GEL_MapAdd(0x6400,1,0x0600,1,1);            /* PF3             */
        GEL_MapAdd(0x6A00,1,0x0600,1,1);            /* PF1-B           */
        GEL_MapAddStr(0x7000,1,0x1000,"R|W|AS2",0); /* PF2             */
        GEL_MapAdd(0x8000,1,0x800,1,1);             /* L0 SARAM        */
        GEL_MapAdd(0x8800,1,0x400,1,1);             /* L1 SARAM        */
        GEL_MapAdd(0x8c00,1,0x400,1,1);             /* L2 SARAM        */
        GEL_MapAdd(0x9000,1,0x1000,1,1);            /* L3 SARAM        */
        GEL_MapAdd(0x3d7800,1,0x400,1,1);           /* OTP             */
        GEL_MapAdd(0x3d7c80,1,0x040,1,1);           /* Device Cal      */
        GEL_MapAdd(0x3d7cc0,1,0x040,1,1);           /* Boot Get Mode   */
        GEL_MapAdd(0x3d7e80,1,0x001,1,0);           /* PARTID value    */
    	GEL_MapAdd(0x3d7e82,1,0x02F,1,0);           /* Calibration Data*/
        GEL_MapAdd(0x3e8000,1,0x10000,1,0);         /* FLASH           */
        GEL_MapAdd(0x3f8000,1,0x0800,1,1);          /* L0 SARAM Mirror */
        GEL_MapAdd(0x3fe000,1,0x2000,1,0);          /* BOOT ROM        */
    }
    

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

    相同的误差

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

    Kiran、

    我需要介绍一些闪存工具团队。  请给我们一天左右的时间让他们参与进来。

    此致、

    Matthew