ARM經典300問(轉貼)

2021-06-16 03:51:43 字數 2198 閱讀 6525

id="861".

第156 問:

q:任務間的資料傳輸除郵箱等外是否可以建立乙個全域性變數在任務間傳遞資料!

a:可以,但要注意重入問題和**優化問題,最好使用volatile 修飾變數,如果不能一次

讀寫完畢則需要加上開關中斷的**.

第157 問:

q:請問:uc/os 任務堆疊問題.

在ucos 移植的程式ex1_arm 中:

#define task_stk_size 128 /* size of each task's stacks (# of words) */

#define n_tasks 10 /* number of identical tasks */

請問,任務堆疊設為什麼設這麼大

a:可以變小,但要在複雜任務中應保證夠用.

第158 問:

q:在看uc/os-ii 的書時,關於ucos-ii 中任務切換的幾種情況的問題.

1.在乙個時鐘週期內,至少所有的任務都要執行一遍,對嗎

2.任務切換發生的三種情況:

a.任務a 主動放棄cpu 的主動權,利用 ostimedly() 延時,進行任務切換;

b.中斷時鐘週期發生時,在任務就緒表中尋找最高優先權的任務,如果當前任務不

是最高優先順序,發生任務切換,否則仍執行原任務;

c.發生irq,fiq,軟中斷,取指錯誤和取資料錯誤五種異常模式時,直接發生任務

切換, 中斷處理結束後,在任務就緒表中尋找最高優先權的任務,如果當前任

務不是最高優先順序,發生任務切換,否則仍執行原任務.

a:1.不一定,如等訊號時 ospend(x, 0, &err)時.

2.只有在irq,fiq 和軟中斷受os 管理時才能進行任務切換,同理取指,取數異常在啟

動階段的 死迴圈根本談不上任務切換.

第159 問:

q:請問:在移植uc/os 中的軟體中斷彙編介面程式中取功能號碼.原程式為:

如果是在thumb 狀態,則為ldr r0,[lr,#-2]

如果是在arm 狀態, 則為ldr r0, [lr, #-4],

在清除r0 中的最高兩位,r0 的值就為功能號.

為什麼是從lr 中取值呢 lr 的值是進入中斷時候儲存的pc 值嗎 迷惑!

a:執行swi 指令後,處理器進入管理模式,lr_svc 中儲存返回位址,順藤摸瓜,根據lr_svc

38就可以取得swi 語句,也就取得了中斷號.

第160 問:

q:請問及各位高手:osintctxsw()函式分別在includes.h 和os_cpu_a.s 中有定義,區別

在哪程式osintexit 中呼叫該函式的時候是不是都是去呼叫了includes.h 中的巨集定義的那

個兩者各自的應用範圍在哪兒 我看過乙個移植例項上只有乙個osintctxsw 函式.請指

教!a:includes.h 中的巨集 osintctxsw 在c 中被呼叫.

第161 問:

q:問乙個堆疊指標的問題

在osintctxsw_1,獲取新任務堆疊指標.

ldr r4, [r6]

add sp, r4, #68 ;17 暫存器

cpsr,osentersum,r0-r12,lr,sp

ldr lr, [sp, #-8]

msr cpsr_c, #(noint | svc32mode) ;進入管理模式

mov sp, r4 ;設定堆疊指標

ldmfd sp!, ;cpsr,osentersum

;恢復新任務的osentersum

......

我想問一下

的值a:這是調整sp 的指標,使其指向棧中的lr.看一看配套《arm 微控制器基礎與實戰》的圖

6.3.

q:ucos 中斷丟失.

在ucos 在每秒切換200 次時正常,但在1000 次時中斷丟失 可能是**的問題

a:問題已經找到,是隨2104 中的ucos 不支援中斷巢狀.在不巢狀時4000 次/秒也是正常

的.第162 問:

q:uc/os-ii 能在2104 上和使用者程式一起編譯嗎 一定得分開編譯嗎

《arm 微控制器基礎與實戰》上介紹的移植方法上是分開編譯的,我想合併在一起除錯,

這樣就不必用軟體中斷去尋找系統函式的入口位址.要做到這樣,是不是只需把

os_task_stat_en 設定為1,os_self_en 為0

39a:可以,**上有例子

php經典程式300例(11 15)

第十一例,年齡計算器 第十二例,選擇頭像 created by phpstorm.user administrator date 2019 9 19 0019 time 19 34 選擇頭像 頭像1頭像2 頭像3 第十三例,使用內建函式設定日期時區 created by phpstorm.user ...

轉貼 周星馳經典對白

1.其實我就是改變社會風氣,風魔萬千少女,刺激電影市道,提高年輕人內涵,玉樹臨風,風度翩翩的整蠱專家,我名叫古晶,英文名叫jing koo!2.你應該這麼做,我也應該死。曾經有乙份真誠的愛情放在我面前,我沒有珍惜,等我失去的時候我才後悔莫及,人世間最痛苦的事莫過於此。你的劍在我的咽喉上割下去吧!不用...

人生經典四問

第一問 你知道在你身上 每個人身上都擁有著代表人類精神的偉大基因嗎?這話聽起來很像一句可笑的大話空話,其實不管是誰,只要靜下心來認真思考一下本人自我意識覺醒的過程,就知道這句話的實在與分量了。小時候我們剛開始有自我意識時,最大的困惑與恐懼之一就是不知道自己是誰,想弄清楚自己是誰。為什麼後來沒弄清楚就...