【问题标题】:Set Flash Memory Location to certain values on MSP430 using GCC使用 GCC 在 MSP430 上将闪存位置设置为特定值
【发布时间】:2016-09-02 11:45:16
【问题描述】:

在使用 msp GCC 工具链对 mcu 进行编程时,如何将 Flash 编程器编程的 flash 的几个字节设置为某个值?例如,TI C/C++ 编译器工具链,包括汇编器,以下汇编行将内存位置设置为所需的值:

;----------------------------------------------------------------------
 .sect ".BSLSIG"
 .retain
;----------------------------------------------------------------------
                 .word       0xFFFF         ; 0x17F0
BslProtectVecLoc .word       BSL_Protect    ; 0x17F2 adress of function
PBSLSigLoc       .word       03CA5h         ; 0x17F4 1st BSL signature
SBSLSigLoc       .word       0C35Ah         ; 0x17F6 2nd BSL signature
                 .word       0xFFFF         ; 0x17F8
BslEntryLoc      .word       BSL_Entry_JMP  ; 0x17FA BSL_Entry_JMP

有没有办法使用 msp GCC 工具链做类似的事情?

【问题讨论】:

    标签: gcc msp430 mspgcc


    【解决方案1】:

    GNU 汇编器具有相同的机制。 例如,MSP430 startup code 是如何将启动代码的地址放入复位向量中的:

            .section ".resetvec", "a"
    __msp430_resetvec_hook:
            .word   __crt0_start
    

    与 TI 编译器一样,这需要在 linker script 中定义部分(此处为:.resetvec)。

    【讨论】:

    • 我认为不需要更改链接器脚本,可以在链接器参数中设置节的起始地址:LDFLAGS += "-Wl,--section-start=.resetvec=0x5000"。并且可以使用__attribute__ ((section (".resetvec"))) 语法在 GNU C 中设置节属性。
    • 是否可以做同样的事情,但使用 GCC C 编译器?
    • @kfx 如何在 C 中设置节 属性
    • @user1135541 查看 kfx 的评论。
    • 也许可以做到这一点const uint16_t __attrib__(__attribute__((section(".BSLSigLoc"), used)) SigLocVar = 0xC35A3CA5; 但我还不是 100% 确定
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    • 1970-01-01
    • 2013-02-07
    • 2023-02-21
    • 2015-07-21
    • 1970-01-01
    相关资源
    最近更新 更多