求一個(gè)CH579的APP是基于RTOS的IAP升級(jí)程序,謝謝
檢測(cè)到升級(jí)信號(hào)以后,進(jìn)入臨界段,后面的操作就和裸機(jī)差不多了.直接當(dāng)做系統(tǒng)不存在就好.
建議官方把用這個(gè) RB_ROM_CODE_OFS標(biāo)識(shí)升級(jí)和app 基于rtos的中斷向量重定位的例程都做了吧?
下面這個(gè)應(yīng)該才指出了問題點(diǎn)
“琢磨了兩天,終于搞定了:
boot跳轉(zhuǎn)至app就不說了,問題在于跳轉(zhuǎn)后這款芯片沒有提供中斷向量偏移的寄存器,跳轉(zhuǎn)至app后由于中斷向量表還是指向0x00000000的位置所以導(dǎo)致跳轉(zhuǎn)后app的中斷無法使用
我的解決方式就是先把boot的向量表(0x00000000~0x00000048)保存在別的flash中(假設(shè)0x30000)中
然后跳轉(zhuǎn)至app(假設(shè)0x9000),把a(bǔ)pp的向量表(0x00009000~0x00009048)的內(nèi)容復(fù)制到boot的向量表中。
然后app就可以進(jìn)中斷了,我在app上了freertos也沒問題。
boot程序一開始要把(0x30000)的數(shù)據(jù)放回來,然后要跳轉(zhuǎn)了再存過去。
還不知道這款芯片后面還有什么坑呢,大家互相探討
/******************************************/
最開始我是想在boot每個(gè)中斷服務(wù)函數(shù)里面做判斷
這樣的話跳轉(zhuǎn)至app后,若觸發(fā)中斷,中斷函數(shù)在boot中,在boot中做判斷通過函數(shù)指針來調(diào)用app的函數(shù)
但是發(fā)現(xiàn)這樣做的話freertos就不能切換任務(wù)了,因?yàn)樵趐endsv中斷里面的操作只能在這個(gè)中斷服務(wù)函數(shù)里實(shí)現(xiàn)不能跳到別的函數(shù)執(zhí)行。
/*****************************************/”
結(jié)帖,通過RB_ROM_CODE_OFS實(shí)現(xiàn)了(這里需注意APP起始地址還是0)