www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] 最近做STM32F030C8的Bootloader升級,使用的是Coocox的工程,發(fā)現(xiàn)Bootloader可以正常跳轉(zhuǎn),但是到應(yīng)用程序時(shí),就直接跑飛,經(jīng)過仔細(xì)查看,發(fā)現(xiàn)是中斷向量表沒有映射,但是在把中斷向量表映射后,程序依

最近做STM32F030C8的Bootloader升級,使用的是Coocox的工程,發(fā)現(xiàn)Bootloader可以正常跳轉(zhuǎn),但是到應(yīng)用程序時(shí),就直接跑飛,經(jīng)過仔細(xì)查看,發(fā)現(xiàn)是中斷向量表沒有映射,但是在把中斷向量表映射后,程序依舊跑飛。一直自己找了好幾天,在Nick的幫助下,終于解決了,方法如下:

1、在Bootloader里設(shè)置跳轉(zhuǎn):

/* Jump to user application */
JumpAddress = *(__IO uint32_t*) (APPLICATION_ADDRESS + 4);
Jump_To_Application = (pFunction) JumpAddress;

/* Initialize user application's Stack Pointer */
__set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS);

/* Jump to application */
Jump_To_Application();

2、在Application里重新映射中斷向量表;并修改連接文件,十分重要的是不能用Coocox自帶的連接文件,要重新向Coocox公司要一份新的,否則向量映射不成功,程序就跑飛。

#if (defined ( __CC_ARM ))
__IO uint32_t VectorTable[48] __attribute__((at(0x20000000)));
#elif (defined (__ICCARM__))
#pragma location = 0x20000000
__no_init __IO uint32_t VectorTable[48];
#elif defined ( __GNUC__ )
__IO uint32_t VectorTable[48] __attribute__((section(".RAMVectorTable")));
#elif defined ( __TASKING__ )
__IO uint32_t VectorTable[48] __at(0x20000000);
#else
#error "it should define the vector table"
#endif

int main(void)
{
#if 1
uint32_t i;

/* Relocate by software the vector table to the internal SRAM at 0x20000000 ***/

for(i = 0; i < 48; i++)
{
VectorTable[i] = *(__IO uint32_t*)(APPLICATION_ADDRESS + (i<<2));
}

/* Enable the SYSCFG peripheral clock*/
RCC_APB2PeriphResetCmd(RCC_APB2Periph_SYSCFG, ENABLE);
/* Remap SRAM at 0x00000000 */
SYSCFG_MemoryRemapConfig(SYSCFG_MemoryRemap_SRAM);
#endif
}

在以上完成中斷向量映射后,就要修改連接文件了,我對比了Coocox自帶的link文件和向Coocox要的link文件,發(fā)現(xiàn)自帶的link文件,缺少向量重新映射的配置代碼,具體如下:

.ARM.attributes 0 : { *(.ARM.attributes) }
/* RAM space for the vector table */
.RAMVectorTable(NOLOAD): {*(.RAMVectorTable)} >VTRAM

當(dāng)把以上的代碼加在自帶的link文件_sidata = __etext;代碼后面,重新編譯生成bin文件,再次用Bootloader升級后,發(fā)現(xiàn)程序正常執(zhí)行。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

在這篇文章中,小編將對PLC的相關(guān)內(nèi)容和情況加以介紹以幫助大家增進(jìn)對它的了解程度,和小編一起來閱讀以下內(nèi)容吧。

關(guān)鍵字: PLC 模塊化 程序

對程序進(jìn)行優(yōu)化,通常是指優(yōu)化程序代碼或程序執(zhí)行速度。優(yōu)化代碼和優(yōu)化速度實(shí)際上是一個(gè)予盾的統(tǒng)一。一般是優(yōu)化了代碼的尺寸,就會帶來執(zhí)行時(shí)間的增加;如果優(yōu)化了程序的執(zhí)行速度,通常會帶來代碼增加的副作用。很難魚與熊掌兼得,只能在...

關(guān)鍵字: 單片機(jī) 程序

一個(gè)程序首先要保證正確性,在保證正確性的基礎(chǔ)上,性能也是一個(gè)重要的考量。要編寫高性能的程序,必須選擇合適的算法和數(shù)據(jù)結(jié)構(gòu)。

關(guān)鍵字: CPU 程序 緩存

仿真的概念其實(shí)使用非常廣,最終的含義就是使用可控的手段來模仿真實(shí)的情況。在嵌入式系統(tǒng)的設(shè)計(jì)中,仿真應(yīng)用的范圍主要集中在對程序的仿真上。

關(guān)鍵字: 單片機(jī) 仿真器 程序

6月21日消息,最近在法國巴黎舉行的聯(lián)合國教科文組織首屆阿勒福贊獎(jiǎng)?lì)C獎(jiǎng)儀式上,中國科學(xué)院古脊椎動物與古人類研究所付巧妹獲得阿勒福贊科學(xué)、技術(shù)、工程、數(shù)學(xué)領(lǐng)域杰出青年科學(xué)家國際獎(jiǎng)(簡稱"阿勒福贊獎(jiǎng)")。

關(guān)鍵字: 科學(xué) 技術(shù) 工程

步進(jìn)電動機(jī)是將電脈沖激勵(lì)信號轉(zhuǎn)換成相應(yīng)的角位移或線位移的離散值控制電動機(jī),這種電動機(jī)每當(dāng)輸入一個(gè)電脈沖就動一步,所以又稱脈沖電動機(jī)。

關(guān)鍵字: 步進(jìn)電機(jī) 正反轉(zhuǎn) 程序

KeilμVision4是Keil軟件公司為8051系列微控制器及其兼容產(chǎn)品設(shè)計(jì)的集成式軟件開發(fā)環(huán)境。μVision4集成了C51編譯器和A51匯編器,其界面類似于Microsoft VS,支持C語言和匯編語言程序的編寫...

關(guān)鍵字: 程序 編譯 鏈接

雙方各執(zhí)一詞,誰也不退讓,吳雄昂的身份成為薛定諤的貓:在Arm公司眼中,他已經(jīng)被罷免一切職位;在安謀中國聲明里,吳仍然一切照常。這種疊加態(tài)或許還會持續(xù)一段時(shí)間,但疊加態(tài)應(yīng)該很快就會塌縮成一個(gè)確定結(jié)果。同樣,安謀中國董事會...

關(guān)鍵字: ARM 中國董事會 程序

除了指令空間,自定義指令對應(yīng)的程序出入口也有嚴(yán)格限制。自定義指令在使用過程中出現(xiàn)任何錯(cuò)誤時(shí),Arm的工具鏈都能及時(shí)對其進(jìn)行識別、提取,并且進(jìn)行相應(yīng)的控制。目前也已經(jīng)有第三方編譯器,可以識別自定義指令集可能會出現(xiàn)的錯(cuò)誤。專...

關(guān)鍵字: 指令空間 程序 ARM

如果說一眾美國科技公司遵循特朗普命令斷供華為,還算某種程度上維護(hù)所謂程序正義不得已而為之;那么各路本應(yīng)對政治保持中立的國際技術(shù)標(biāo)準(zhǔn)組織,先后宣布剔除華為成員資格,絕對算助紂為虐;而聯(lián)邦快遞將華為委托寄送目的地為中國的快遞...

關(guān)鍵字: 快遞 華為 程序
關(guān)閉