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.

[参考译文] MSPM33-SDK:EEPROM 管理

Guru**** 2996960 points

Other Parts Discussed in Thread: SYSCONFIG, MSPM33C321A

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1662719/mspm33-sdk-eeprom-management

器件型号: MSPM33-SDK
主题中讨论的其他器件: MSPM33C321A 、SYSCONFIG、 UNIFLASH

您好:

我使用 μ µC MSPM33C321A、我想管理 EEPROM。

我不想使用示例(管理 Type_A 或 Type_B 中的 EEPROM)、我想管理自己的 EEPROM。

所以我需要知道,以下几点:

1 — 它是修改 makefile 还是其他文件来声明 EEPROM 内存?

2 — 如何初始化 EEPROM 存储器(如有必要),使用哪些功能?

3-哪个功能用于读取 EEPROM 存储器中的 8 位?

4-哪个函数用于在 EEPROM 存储器中写入 8 位?

5 — 哪个功能用于擦除扇区?

6- EEPROM 存储器始终为 32KB、表示 32 个扇区?

祝你度过美好的一天

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    ",="" roboto,="" arial,="" sans-serif;="" font-size:="" 20px;="" font-weight:="" 600;="" margin:="" 24px="" 0px="" 12px;="" text-decoration:="" none;="" border-bottom:="" rgb(10,="" 10,="" 10);"="">你(们)好  
    ",="" roboto,="" arial,="" sans-serif;="" font-size:="" 20px;="" font-weight:="" 600;="" margin:="" 24px="" 0px="" 12px;="" text-decoration:="" none;="" border-bottom:="" rgb(10,="" 10,="" 10);"="">1.它是修改 makefile 还是其他文件来声明 EEPROM 存储器?
    ",="" roboto,="" arial,="" sans-serif;="" font-size:="" 16px;="" font-weight:="" 400;="" margin:="" 12px="" 0px="" text-decoration:="" none;="" border-bottom:="" rgb(10,="" 10,="" 10);"="">不需要、您不需要修改 Makefile。 相反,您必须配置 ",="" roboto,="" arial,="" sans-serif;="" font-size:="" 16px;="" font-weight:="" 700;="" margin:="" 0px;="" text-decoration:="" none;="" border-bottom:="" 0px="" rgb(10,="" 10,="" 10);"="">链接器命令文件 。 您必须确保从其指定的存储器地址开始的 32KB 数据闪存区域被标记为保留或指定为特定段、以便编译器不会将可执行应用程序代码或标准 RAM 变量置于该区域
    ",="" roboto,="" arial,="" sans-serif;="" font-size:="" 16px;="" font-weight:="" 400;="" margin:="" 12px="" 0px="" text-decoration:="" none;="" border-bottom:="" rgb(10,="" 10,="" 10);"="">我稍后会回答另一个问题。
    ",="" roboto,="" arial,="" sans-serif;="" font-size:="" 16px;="" font-weight:="" 400;="" margin:="" 12px="" 0px="" text-decoration:="" none;="" border-bottom:="" rgb(10,="" 10,="" 10);"="">我不想使用示例、该示例管理 Type_A 或 Type_B 中的 EEPROM
    ",="" roboto,="" arial,="" sans-serif;="" font-size:="" 16px;="" font-weight:="" 400;="" margin:="" 12px="" 0px="" text-decoration:="" none;="" border-bottom:="" rgb(10,="" 10,="" 10);"="">我知道为什么不使用 EEPROM 仿真吗?
    ",="" roboto,="" arial,="" sans-serif;="" font-size:="" 16px;="" font-weight:="" 400;="" margin:="" 12px="" 0px="" text-decoration:="" none;="" border-bottom:="" rgb(10,="" 10,="" 10);"="">您将保存多少数据以及更新这些数据需要多长时间?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    可以 修改链接器命令文件,但你能告诉我如何做,写什么?

    我不想使用 Type_A 或 B 因为我会有一个 EEPROM 管理,非常具体,我的意思是我有很多结构要保存,但独立管理,任何将是 redondid,其他不 并且未对这些示例进行改编。

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

    您好:

    有关 cmd 文件的第一个问题

    您要求我添加:

    DATA_FLASH (RW):origin = 0x80000000、length = 0x00008000 /* 32KB 高耐久性区域*/

    但我有:

    SRAM (rwx):origin = 0x30000000、length = 0x0003FFFF
    数据 (R):原点= 0x80000000、长度= 0x00007FFF
    BCR_CONFIG (R):origin = 0x80101800、长度= 0x000003FF
    BSL_CONFIG (R):origin = 0x80101C00、length = 0x000003FF

    这意味着它将与 DATA BCR_CONFIG 和 BSL_CONFIG 发生冲突。

    由于 DATA 和 DATA_FLASH 位于同一位置、该怎么办?  

    以及如何处理 DATA、BCR_CONFIG 和 BSL_CONFIG?

    谢谢

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

    你(们)好  

    我将在下周初查看详细信息和反馈

    谢谢

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

    您好:

    你那有新消息吗?

    谢谢

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

    您好:

    非常感谢所有这些信息,但我再次有一些问题:

    ************************************************************************************************

    问题 1 :您确认修改正确吗?

    在 device_linker.cmd 文件中:

    解决方案

    移动数据
    {
    闪存 (RX):原点= 0x10000000、长度= 0x000FFFFF
    SRAM (rwx):origin = 0x30000000、length = 0x0003FFFF
    数据 (R):原点= 0x80000000、长度= 0x00007FFF
    BCR_CONFIG (R):origin = 0x80101800、长度= 0x000003FF
    BSL_CONFIG (R):origin = 0x80101C00、length = 0x000003FF
    }

    很重要
    {
    .intvecs:palign (16){}> 0x10000000
    .text:palign(16){}> flash
    .const : palign(16){}> flash
    .cinit:palign (16){}> FLASH
    .pinit:palign(16){}> flash
    .rodata : palign(16){}> flash
    .arm.exidx:palign(16){}> flash
    .init_array:palign(16){}> flash
    .binit : palign(16){}> flash
    .TI.ramfunc:load = FLASH、palign (16)、run=SRAM、table (BINIT)

    .vtable :> sram
    .args :> sram
    .data :> sram
    .bss :> sram
    .sysmem :> sram
    .stack :> SRAM (high)

    .bCRConfig:{}> BCR_config
    .BSLSConfig:{}> BSL_config

    .databank : palign(16){}>数据

    }

    1 安培

    移动数据
    {
    闪存 (RX):原点= 0x10000000、长度= 0x000FFFFF
    SRAM (rwx):origin = 0x30000000、length = 0x0003FFFF
    /*数据 (R):origin = 0x80000000、长度= 0x00007FFF*/
    DATA_FLASH (RW):origin = 0x80000000、length = 0x00008000 /* 32KB 高耐久性区域*/
    BCR_CONFIG (R):origin = 0x80101800、长度= 0x000003FF
    BSL_CONFIG (R):origin = 0x80101C00、length = 0x000003FF
    }

    很重要
    {
    .intvecs:palign (16){}> 0x10000000
    .text:palign(16){}> flash
    .const : palign(16){}> flash
    .cinit:palign (16){}> FLASH
    .pinit:palign(16){}> flash
    .rodata : palign(16){}> flash
    .arm.exidx:palign(16){}> flash
    .init_array:palign(16){}> flash
    .binit : palign(16){}> flash
    .TI.ramfunc:load = FLASH、palign (16)、run=SRAM、table (BINIT)
    .eeprom_section :> data_flash, type = NoLoad                 /*<--在此处添加*/

    .vtable :> sram
    .args :> sram
    .data :> sram
    .bss :> sram
    .sysmem :> sram
    .stack :> SRAM (high)

    .bCRConfig:{}> BCR_config
    .BSLSConfig:{}> BSL_config

    .databank : palign(16){}>数据

    }

    ************************************************************************************************

    问题 2 :关于部分中的 EEPROM 声明

    第一个答案,你告诉添加:

    .eeprom_section :> data_flash, type = NoLoad

    最后:

    .TI.EEPROM:{}> data_flash

    那么、哪一个是好的、第二个是、这意味着当我重新刷新 SW 时、此部分将刷新为? 由于没有“NoLoad“

    ************************************************************************************************

    问题 3 :EEPROM 声明

    你告诉我这样声明:

    #pragma DATA_SECTION

     或

     __attribute__((section(".TI.eeprom"))))

    它是否声明所有 EEPROM、表示 32KB?

    或者我可以这样声明:

    __attribute__((section(“.“)TI.eeprom) uint8_t EEPROM_Memory[32768];

    谢谢

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

    您好:

    另一方面、当我编译时、我得到了这个

    [13]警告#10247-D:创建不带段规范的输出段“.text“
    [14]警告#10247-D:创建不带段规范的输出段“.data“
    [15]警告#10247-D:在没有 SECTIONS 规范的情况下创建输出段“.bss“
    [16]警告#10247-D:在没有段规范的情况下创建输出段“.cinit “
    [17]警告#10247-D:创建没有段规范的输出段“.rodata“
    [18]警告#10247-D:创建不带段规范的输出段“.intvecs“
    [19]警告#10247-D:创建不带段规范的输出段“.stack“
    [20]警告#10210-D:创建默认大小为 0x800 的“.stack“段;使用-stack 选项更改默认大小

    谢谢

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

    您好、Sebastien Le Diour

    我稍后会查看详细信息。 在下周初进行讨论并提供反馈

    谢谢

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

    您好:

    有什么新消息?

    谢谢

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

    您好:  

    非常感谢所有这些说明、不幸的是第一部分(关于链接器)不起作用。

    现在、我拥有:

    -uinterruptVectors
    -stack_size=256

    移动数据
    {
    闪存 (RX):原点= 0x10000000、长度= 0x000FFFFF
    SRAM (rwx):origin = 0x30000000、length = 0x0003FFFF
    /*数据 (R):origin = 0x80000000、长度= 0x00007FFF*/
    DATA_FLASH (RW):origin = 0x80000000、length = 0x00008000 /* 32KB 高耐久性区域*/
    BCR_CONFIG (R):origin = 0x80101800、长度= 0x000003FF
    BSL_CONFIG (R):origin = 0x80101C00、length = 0x000003FF
    }

    很重要
    {
    .intvecs:palign (16){}> 0x10000000
    .text:palign(16){}> flash
    .const : palign(16){}> flash
    .cinit:palign (16){}> FLASH
    .pinit:palign(16){}> flash
    .rodata : palign(16){}> flash
    .arm.exidx:palign(16){}> flash
    .init_array:palign(16){}> flash
    .binit : palign(16){}> flash
    .TI.ramfunc:load = FLASH、palign (16)、run=SRAM、table (BINIT)
    .eeprom_section :> data_flash, type = NoLoad

    .vtable :> sram
    .args :> sram
    .data :> sram
    .bss :> sram
    .sysmem :> sram
    .stack :> SRAM (high)

    .bCRConfig:{}> BCR_config
    .BSLSConfig:{}> BSL_config

    /*.databank : palign(16){}> data*/
    .databank : palign(16){}> data_flash
    }

    编译时、我得到以下内容:

    [13]警告#10247-D:创建不带段规范的输出段“.text“
    [14]警告#10247-D:创建不带段规范的输出段“.data“
    [15]警告#10247-D:在没有 SECTIONS 规范的情况下创建输出段“.bss“
    [16]警告#10247-D:在没有段规范的情况下创建输出段“.cinit “
    [17]警告#10247-D:创建没有段规范的输出段“.rodata“
    [18]警告#10247-D:创建不带段规范的输出段“.intvecs“
    [19]警告#10247-D:创建不带段规范的输出段“.stack“
    [20]警告#10210-D:创建默认大小为 0x800 的“.stack“段;使用-stack 选项更改默认大小

    你能告诉我,如果你看到一些错误的定义?

    祝你度过美好的一天

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

    您好、Sebastien Le Diour

    我稍后会检查并回复您。

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

    您好:

    有什么新消息?

    谢谢

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

    您好、Xiaodong、

    我综合了你的意见,不幸的是,同样的结果

    [13]警告#10247-D:创建不带段规范的输出段“.text“
    [14]警告#10247-D:创建不带段规范的输出段“.data“
    [15]警告#10247-D:在没有 SECTIONS 规范的情况下创建输出段“.bss“
    [16]警告#10247-D:在没有段规范的情况下创建输出段“.cinit “
    [17]警告#10247-D:创建没有段规范的输出段“.rodata“
    [18]警告#10247-D:创建不带段规范的输出段“.intvecs“
    [19]警告#10247-D:创建不带段规范的输出段“.stack“
    [20]警告#10210-D:创建默认大小为 0x800 的“.stack“段;使用-stack 选项更改默认大小

    谢谢

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

    您好、 Sebastien Le Diouris  

    请在最新版本的 www.ti.com/.../MSPM33-SDK 中将头文件和链接配置与 EEPROM 类型 A 和 SDK 类型 B 进行比较
    版本:1.04.00.00 发布日期:2026 年 7 月 6 日

    我知道、与我们的标准解决方案相比、您不希望拥有我们的 EEPROM 解决方案、也许可以找到一些详细的方法来解决您自己的解决方案。

    谢谢!

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

    您好、Xiaodong、

    我加载了 EEPROM B 型工程、并且链接器文件相同(无需修改我的工程)、意味着 EEPROM 存储器没有任何内容。 配置  

    那么 EEPROM 内存声明在哪里完成呢?

    谢谢

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

    您好、 Sebastien Le Diouris  

    我不在办公室。 我已经和我的同事讨论过这个主题。

    我稍后会回复你。

    谢谢

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

    您好、 Sebastien、

    MSPM33 上没有 EEPROM、SDK 中的示例/库是在闪存中仿真 EEPROM(基于 driverlib 中的 FLASHCTL API)。

    示例/库本身不需要修改 cmd 文件、而只需使用通用闪存范围。 您可以在头文件中找到地址定义。

    如果您想开发自己的 EEPROM 仿真代码、可以参考闪存示例作为基础。

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

    您好、Yuhao、

    是的,我在示例中看到的,好吧,所以如果没有配置要做的完美.

    感谢您的回答。

    我有一些关于 EEPROM 管理的问题、我能否继续讨论这个主题、或者我是否应该再创建一个?

    谢谢

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

    您好、 Sebastien

    >>我是否可以继续讨论这个主题、或者我是否应该创建另一个主题?

    这个主题很长、我们重点讨论一个主题。

    请创建另一个主题。

    谢谢