欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5533|回復(fù): 1
收起左側(cè)

一個(gè)關(guān)于IAP+APP 模式下不能啟動(dòng)RTOS的話題

[復(fù)制鏈接]
ID:140840 發(fā)表于 2017-1-17 09:42 | 顯示全部樓層 |閱讀模式
問(wèn)題描述:
某客戶工程師講述:他使用STM32F407IGT6 開發(fā)產(chǎn)品,使用了IAP+APP 模式的軟件架構(gòu)。IAP 為自行編寫的 BOOT程序,負(fù)責(zé)系統(tǒng)啟動(dòng)及更新 APP 程序,而 APP 則用于處理常規(guī)業(yè)務(wù)。系統(tǒng)啟動(dòng)后,首先運(yùn)行 IAP程序,由其完成系統(tǒng)初始化后跳轉(zhuǎn)APP。兩段程序分別由兩個(gè)獨(dú)立的軟件工程生成。其中,APP 程序是其于某款RTOS 構(gòu)建的。在加入 IAP+APP 模式之前,分別做了單獨(dú)的調(diào)試,即將其定位到0x08000000 開始的地址空間直接啟動(dòng),而不通過(guò) IAP 跳轉(zhuǎn),證實(shí)可以正常運(yùn)行。加入到IAP+APP 架構(gòu)中后,APP程序被重新定位到了 0x08004000 開始的地址空間。然而這種情況下 APP不能正常運(yùn)行,跳飛掉了。通過(guò)打印跟蹤,發(fā)現(xiàn)從 IAP 到 APP的跳轉(zhuǎn)可以順利完成,APP前幾行代碼也可以執(zhí)行,直到執(zhí)行啟動(dòng) RTOS 的函數(shù)后,不知去向。

問(wèn)題調(diào)研:
檢查 APP 軟件工程,發(fā)現(xiàn)其軟件工程是其于 ST 的標(biāo)準(zhǔn)外設(shè)驅(qū)動(dòng)庫(kù)構(gòu)建的。于是,檢查其中的system_stm32f4xx.c 文件,找到systemInit()函數(shù)。
將其中的
SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET
改成:
SCB->VTOR = FLASH_BASE | 0x00004000

重新下載后,RTOS 可以正常運(yùn)行。

結(jié)論及處理:
用戶沒(méi)有重新定位中斷向量表,導(dǎo)致 CPU 依使用 IAP 的中斷向量表,進(jìn)而APP 的中斷無(wú)法被正常的處理。通常,RTOS 需要通過(guò)中斷來(lái)進(jìn)行任務(wù)調(diào)度,所以,致使其不能正常的運(yùn)行。
當(dāng)我們修改軟件,重新定位中斷向量表到正確的位置后就OK。

話題延伸:
Cortex-M3 和Cortex-M4 的中斷向量表是可以在最低 1GB 的地址空間內(nèi)浮動(dòng)的,且專門設(shè)有一個(gè)偏移地址寄存器VTOR,用于指示中斷向量表的位置,如圖(一):
640.webp.jpg
640.webp (1).jpg
VTOR 的地址為:0xE000ED08,復(fù)位值為:0x00000000。所以,復(fù)位后Cortex-M3 或Cortex-M4會(huì)到地址0x00000000 取SP 的取值,而到地址0x00000004 取PC 的取值,來(lái)啟動(dòng)程序。一般來(lái)說(shuō),程序啟動(dòng)后要重新裝載VTOR 的取值,使其指向自身的中斷向量表,以保證后續(xù)程序能夠正確的響應(yīng)各個(gè)中斷請(qǐng)求。在Cortex-M3 和Cortex-M4 的系統(tǒng)中,對(duì)于中斷向量表的存放位置的對(duì)齊邊界有一定的要求,可按如下公式計(jì)算:
640.webp (2).jpg

其中,N表示對(duì)齊字節(jié)數(shù),Size表示中斷向量表的字節(jié)數(shù)。
這里特別提醒下,Cortex-M0沒(méi)有VTOR 寄存器,所以它的中斷向量表必須放在0x00000000 地址起始的尋址空間中,而不能浮動(dòng)。因此,在Cortex-M0 的系統(tǒng)中,如要更新中斷向量表,需將RAM映射到0x00000000 地址,然后將新的中斷向量表復(fù)制到0x00000000 地址起始的尋址空間當(dāng)中。



文章來(lái)源:微信公眾號(hào)   融創(chuàng)芯城(一站式電子元器件、PCB、PCBA購(gòu)買服務(wù)平臺(tái),項(xiàng)目眾包平臺(tái),方案共享平臺(tái))

回復(fù)

使用道具 舉報(bào)

ID:422675 發(fā)表于 2019-1-31 11:01 | 顯示全部樓層
我也遇到這個(gè)情況,前面和他的情況一致,后面的情況不一樣,我單獨(dú)都能運(yùn)行,包括加了rtos在不IAP好的情況下,也都正常運(yùn)行,沒(méi)有RTOS情況下IAP也是正常運(yùn)行,只是在IAP+RTOS(APP)后,不能跳到APP開始的main函數(shù)。跟蹤調(diào)試跳到了osStatus osKernelStart (void) 這里后好像是回調(diào)不正確,在這就出不去了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表