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

為了方便調(diào)試,在前面塞了個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

但是實際調(diào)試發(fā)現(xiàn),這個跳轉根本不起作用,單步調(diào)試發(fā)現(xiàn)跳到了莫名其妙的地方去了.


改成

? ? lia6,0x4000

? ? jra6

也一樣的效果


您好,可以檢查一下ld文件中入口點這一塊是否修改,如下圖。我這邊按照你的配置測試了一下沒問題,附件為測試例程

icon_rar.gifCH32V307 Test.zip

image.png


我下載了你的工程文件,未進行任何修改,在main入口處打斷點,F5運行調(diào)試,等半天都沒進main.

點擊暫停按鈕后,發(fā)現(xiàn)程序跑飛至莫名其妙地址.

與我的工程結果一致.


您好,可以先通過WCHISPTool工具下載配置一下RAM和FLASH大小,然后再通過Link下載調(diào)試看看,如下圖,后面若有問題,可通過郵箱(lzs@wch.cn)和我溝通。注意使用WCHISPTool下載時,BOOT0接VCC,BOOT1接GND

WCHISPTool工具下載鏈接:http://m.findthetime.net/downloads/WCHISPTool_Setup_exe.html?

image.png


有進行圖中這個配置的.

另外,我發(fā)現(xiàn)偏移只有0x400的情況下就可以正常工作. 當偏移調(diào)到0x4000就出現(xiàn)這個問題.經(jīng)過測試,0x800也不行.


您好,若是調(diào)試問題的話,目前這種寫法不支持調(diào)試,后續(xù)版本MounRiver會更新解決該問題


好的.了解了,謝謝


只有登錄才能回復,可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频