打印

GD32 怎样把代码放到flash的固定地址

[复制链接]
1964|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
verdi_lam|  楼主 | 2017-9-18 15:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大家好?

请教一下有没有高手试过将 一段代码放到一个制定的地址,谢谢!
沙发
verdi_lam|  楼主 | 2017-9-18 15:19 | 只看该作者
我用的编译器是KEIL5.0

使用特权

评论回复
板凳
aozima| | 2017-9-18 16:19 | 只看该作者
本帖最后由 aozima 于 2017-9-18 16:20 编辑

学会写链接脚本,所有芯片通用。

特别是针对GD32这种,后面有1片慢速FLASH的情况。
都把静态资源放后面去。

比如我这个 130G8的 bootloader,使用最前面1K,和后末尾的慢速7K。慢速7K的执行速度慢,所以又加载到RAM中支持。
下面是KEIL MDK 的链接脚本 GD32F130_bootloader.sct

; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************

; GD32F130x8: FLASH 32KB + 32KB(慢速,且不能用于ISR入口地址)
; bootloader 使用最开头的1KB和最后面的11KB。

; load      region                size_region
LR_IROM1    0x08000000         (1024 * 1)
{
    ; load address = execution address
    ER_IROM1 0x08000000                (1024 * 1)
    {
        *.o (RESET, +First)
        *(InRoot$Sections)

        stm32f0xx_it.o(+RO)

        flash_if.o(+RO)
        stm32f0xx_hal_flash.o(+RO)
    }
}

; load      region                          size_region
LR_IROM2    (0x08000000 + 1024 * 64 - 1024 * 7)            (1024 * 7)
{
    ; load address = execution address
    ER_IROM2    (0x08000000 + 1024 * 64 - 1024 * 7)    (1024 * 7)
    {
        .ANY (+RO)
    }

    ; RW data
    RW_IRAM1 0x20000000 (1024 * 8 - 32)
    {
        crc32.o(*)
        usart.o(*)
        common.o(*)
        ymodem.o(*)
        fw.o(*)

        stm32f0xx_hal_uart.o(*)
        stm32f0xx_hal_flash_ex.o(*)

        .ANY (+RW +ZI)
    }
}

使用特权

评论回复
地板
Houtz| | 2017-9-19 16:54 | 只看该作者
可以使用分散加散的方式,请查看附件。有问题可联系GD32技术FAE,QQ375880228
https://bbs.21ic.com/forum.php?mod=attachment&aid=OTE0OTIyfDFmZDc5MjY3MGNmMzQ1ZDFkNDhhNTJkMDM3NmIyMGRhfDE3MTQwMTU4NTQ%3D&request=yes&_f=.pdf

使用特权

评论回复
5
verdi_lam|  楼主 | 2017-9-21 23:54 | 只看该作者
试了一下,方法是可以的,谢谢大家

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝