LR_HEADER 0x08001800 NOCOMPRESS ALIGN 2048 0x800 ;size = 2kB
    {
      ER_HEADER 0x08001800 FIXED ALIGN 2048 0x800
      {
        *(:gdef:image_hdr)
      }
    }
    

    {
      ;//**********************************
      ;/// all RO Data in the Application (flash)
      ;//**********************************
      ER_RO_APPLICATION 0x08002000 0x1C800
      {
        *.o (RESET, +First)
        *(InRoot$$Sections)
        .ANY (+RO)
      }
    
      ;ER_VECTOR_TABLE 0x20000000 EMPTY 0xC0                                         ; 512 Byte-placeholder for vector table of application (SRAM)
      ;{
      ;}
    
      NIRAM 0x200000C0 UNINIT                                                       ; Placeholder for NIRAM for bootloader-application-communication (SRAM)
      {
        *.o(NIRAM)
      }
    
      ER_STACKS +0                                                                  ; Stack and OS / task stacks (SRAM)
      {
        ;stm32f0xx_startup.o(STACK, +FIRST)
        *.o(STACK, +FIRST)
        ; rtx_cfg.o(.bss)
        *rtx_cfg*.o(.bss)
      }
    
      ER_RW_APPLICATION +0                                                          
      {
        .ANY(+RW, +ZI)
      }
    }
    
    

    LR_CHECKSUM +0x0 NOCOMPRESS ALIGN 4 0x4
    {
      ER_CRC32 +0 0x4
      {
        ; application_crc.o(:gdef:APPCRC_ulCRC32)
        *application_crc*.o(:gdef:APPCRC_ulCRC32)
      }
    }
    
    
    ; Load Region "FLASH"
    ; In diesem Bereich wird der Flash-Pool der Applikation verwaltet
    ; die Größe ist so zu wählen, dass der Parameterbereich im Anschluss noch Platz findet

    
    

这是我的链接器脚本的一部分.我希望在闪存中放置一些配置,以便下次我的MCU启动时,它将地址提取到重置向量,并从 bootstrap 加载程序跳转到应用程序.我想更改这个数据,它是当前配置部分的闪存(我将创建它).

如何在不使用闪存驱动程序修改的情况下修改闪存中的变量?

推荐答案

如何在不使用Flash的情况下修改Flash中的变量 驱动程序来修改它.?

你不能.你的程序需要擦除闪存段,然后重新编程.这件事不可能有别的办法.

C++相关问答推荐

如何将一个enum类型类型转换为另一个类型?

海湾合作委员会是否保证大小匹配的访问?

POSIX文件描述符位置

将指针作为参数传递给函数

为什么C语言允许你使用var =(struct NAME){

C++中矢量类型定义和数据保护的高效解决方案

在C++中通过空指针隐式访问常量变量的值

如何在C语言中正确打印图形

将 struct 传递给函数

==284==错误:AddressSaniizer:堆栈缓冲区下溢

如何只获取字符串的第一个单词,然后将其与c中的另一个单词进行比较?

C代码可以在在线编译器上运行,但不能在Leetcode上运行

Printf()在C中打印终止字符之后的字符,我该如何解决这个问题?

C语言中浮点数的取整方式浮点数尾数超过23位时如何取整剩余部分

为什么编译器不能简单地将数据从EDI转移到EAX?

使用Open62541向OPCUA服务器发送读请求时内存泄漏

Leet代码运行时错误:代码不会在Leet代码上编译,而是在其他编译器中编译,如netbeans和在线编译器

通过GTK';传递回调参数;s g_signal_connect()导致C中出现意外值

C Makefile - 如何避免重复提及文件名

C 预处理器中的标记分隔符列表