CH32V307启动文件长跳转

这边需要写一个IAP,于是在ld文件里面把项目的FLASH起始地址往后挪了0x4000


MEMORY

{

    BOOTFLASH (rx) :ORIGIN=0x00000000, LENGTH=16K

    FLASH (rx) :ORIGIN=0x00004000, LENGTH=176K

    RAM (xrw) :ORIGIN=0x20000000, LENGTH=128K

}


SECTIONS

{

    .bootapp:

    {

        _sbootappinit=.;

        .=ALIGN(4);

        KEEP(*(SORT_NONE(.bootapp)))

        .=ALIGN(4);

        _ebootappinit=.;

    } >BOOTFLASHAT>BOOTFLASH


    .init:

    {

        _sinit=.;

        .=ALIGN(4);

        KEEP(*(SORT_NONE(.init)))

        .=ALIGN(4);

        _einit=.;

    } >FLASHAT>FLASH

为了方便调试,在前面塞了个bootFLASH段,写了个新的s文件.在BOOTFLASH段,里面只有一个j指令,跳到原本的地址:

图片.png

    .section .bootapp,"ax",@progbits

    .global _boot

    .align  1

_boot:

    j _start

    .word0x00000013

    .word0x00000013

    .word0x00000013

    .word0x00000013

    .word0x00000013

    .word0x00000013

    .word0x00000013

    .word0x00000013

    .word0x00000013

    .word0x00000013

    .word0x00000013

    .word0x00000013

    .word0x00100073

但是实际调试发现,这个跳转根本不起作用,单步调试发现跳到了莫名其妙的地方去了.


改成

    lia6,0x4000

    jra6

也一样的效果


您好,可以检查一下ld文件中入口点这一块是否修改,如下图。我这边按照你的配置测试了一下没问题,附件为测试例程

icon_rar.gifCH32V307 Test.zip

image.png


我下载了你的工程文件,未进行任何修改,在main入口处打断点,F5运行调试,等半天都没进main.

点击暂停按钮后,发现程序跑飞至莫名其妙地址.

与我的工程结果一致.


您好,可以先通过WCHISPTool工具下载配置一下RAM和FLASH大小,然后再通过Link下载调试看看,如下图,后面若有问题,可通过邮箱(lzs@wch.cn)和我沟通。注意使用WCHISPTool下载时,BOOT0接VCC,BOOT1接GND

WCHISPTool工具下载链接:/downloads/WCHISPTool_Setup_exe.html 

image.png


有进行图中这个配置的.

另外,我发现偏移只有0x400的情况下就可以正常工作. 当偏移调到0x4000就出现这个问题.经过测试,0x800也不行.


您好,若是调试问题的话,目前这种写法不支持调试,后续版本MounRiver会更新解决该问题


好的.了解了,谢谢


只有登录才能回复,可以选择微信账号登录