<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 8051與AndesCore的軟件差異與移植

8051與AndesCore的軟件差異與移植

作者: 時(shí)間:2015-07-29 來(lái)源:電子產(chǎn)品世界 收藏

  3. 系統相關(guān)事項說(shuō)明

本文引用地址:http://dyxdggzs.com/article/277989.htm

  3.1. 操作模式

  只有一種mode,™有兩種mode,分別是 superuser mode和user mode ,當系統上電啟動(dòng)時(shí)是在 superuser mode,或者當系統進(jìn)入到中斷或者異常時(shí)也進(jìn)入到superuser mode,當從中斷或者是異常返回后,會(huì )返回到user mode 。由于沒(méi)有mode切換的問(wèn)題,所以在移植的時(shí)候只需要理解™在mode方面的機制就可以。

  3.2. 系統的啟動(dòng)

   ™的系統啟動(dòng)過(guò)程類(lèi)似,通常在0 地址存放中斷向量表,第一個(gè)向量表是reset,當系統上電或者是reset 后,經(jīng)過(guò)該向量會(huì )跳轉到一個(gè)啟動(dòng)函數中,該啟動(dòng)函數會(huì )完成系統啟動(dòng)所必要的步驟,比如設置CPU,初始化SoC ,清理內存,初始化 C 運行環(huán)境等, 最后完成所有的準備后跳轉到 main函數。

  3.3. 中斷處理

  8051有5 個(gè)中斷源,通常中斷向量表只是一個(gè)跳轉,會(huì )跳到真正的中斷處理函數,8051只能設置成兩級的中斷優(yōu)先級。

  AndesCore™包含了9 個(gè)內部異常,中斷向量號對應于從 0 到8, 9 之后對應于外部中斷,在Internal VIC (IVIC )mode時(shí)可支持32個(gè)外部中斷,

         當External VIC(EVIC) mode時(shí)由外部中斷控制器決定, 最多有64個(gè)。

  中斷的處理由以下幾部分組成:

  1. 實(shí)現中斷處理函數

  可以用匯編實(shí)現8051 的中斷處理函數,也可以用C 來(lái)實(shí)現,在8051中C 實(shí)現的中斷處理函數會(huì )有一個(gè)"interrupt" 的關(guān)鍵字,如果有寄存器 bank被使用到,還要加上"using"關(guān)鍵字。如果要將中斷處理函數固定在特定位置還需要使用"at" 關(guān)鍵字,而 AndesCore™使用的是標準的 C 語(yǔ)法,不需要為中斷處理函數做這些設置。

  2. 中斷向量表的產(chǎn)生

  8051 中斷向量表擺放在 0 開(kāi)始的位置,在A(yíng)ndesCore™中硬件可以設定啟動(dòng)地址,通常設為 0 地址,也可以是非 0 地址,中斷向量表存放在對應系統啟動(dòng)地址處。在程序編寫(xiě)過(guò)程中可以通過(guò)標準的gnu 語(yǔ)法再加上link script 的sag 工具,以使產(chǎn)生的中斷向量表在鏈接的時(shí)候存放于特定的位置。

  3. 中斷配置

  在8051中,需要做以下設置

  1. IE 寄存器中Individual Interrupt Enable 位設1

  2. IE 寄存器中EA(Enable All)位設1

  3. 當是外部中斷時(shí),配置相關(guān)的pin 為輸入,并設置對應的觸發(fā)屬性為edge或level 觸發(fā)。

  而在A(yíng)ndesCore™中需要做以下設置:

  1 .設置CPU IVIC 或者 EVIC mode

  2 .設置INT_MASK位

  3 .設置中斷的優(yōu)先級

  4. 關(guān)于異常處理差異

  在8051中沒(méi)有異常處理向量,所以在8051中并沒(méi)有這部分的處理函數,在A(yíng)ndesCore™中有一些系統的exception 中斷向量,比如Machine Error,GeneralException, 建議在A(yíng)ndesCore ™上實(shí)現對應的處理函數, 當發(fā)生這類(lèi)異常時(shí)做一些基本的處理。

  3.4. 時(shí)序和延遲

  在8051中可以采用NOP指令來(lái)延遲,在 AndesCore™中也有NOP指令來(lái)達到類(lèi)似目的。

  3.5. 電源管理

  8051 單片機中有兩種省電方式,分別是空閑方式和掉電模式, 單片機處于空閑工作方式時(shí),CPU處于睡眠狀態(tài),它的片內其它部件還是會(huì )繼續工作,片內RAM的內容和所有專(zhuān)用寄存器的內容在空閑方式期間都被保存下來(lái)了, 可以通過(guò)中斷或者硬件復位來(lái)終止空閑工作方式。單片機處于掉電工作方式時(shí),片內的振蕩器停止了工作,因此它的一切都被迫停止了。但片內 RAM的內容和專(zhuān)用寄存器的內容一直保持到掉電方式結束為止。掉電方式的喚醒方式只有一種,就是硬件復位。

  在A(yíng)ndesCore™上,可以通過(guò)軟件standby 指令使CPU進(jìn)入到低功耗模式,通常標準c 代碼并不能直接控制硬件,Andes 的compiler 提供了intrinsic 函數來(lái)做到這點(diǎn)。分別是:__nds32_standby_no_wake_grant(), __nds32_standby_wake_grant(),__nds32_standby_wait_done().指定系統進(jìn)入低功耗模式時(shí)被喚醒的方式,分別是外部中斷中斷喚醒,電源管理模塊喚醒,和中斷配合電源管理模塊喚醒,可以根據系統需要分別設計。

  4. 從8051移植到AndesCore上注意事項

  一個(gè)8051工程,當移植到AndesCore™上時(shí)有以下注意事項:

  1. 內存映射,代碼和數據擺放位置相關(guān)的設置。

  2. 可以不必考慮變量數目,或者是函數的overlay, 因為在32bit 的AndesCore™上開(kāi)發(fā)時(shí)內存空間通常不會(huì )像 8051那樣小。

  3. 如果空間允許,在 AndesCore™上盡量使用32bit的數據類(lèi)型,這樣效率會(huì )更高。

  4. 在8051上用于表示內存區域屬性的標志如(idata, xdata, bdata, pdata 等)在A(yíng)ndesCore™上可以移除。

  5. 在8051上不需要設置內存區塊模式,比如:small, compact, large 等。

  6. 在8051 上用于表示對像遠近的屬性"near" 和"far",都可以移除,AndesCore™上的指針的訪(fǎng)問(wèn)可以達到所有地址空間。

  7. 在中斷處理函數中不需要像8051那樣指定哪塊寄存器塊會(huì )被用到的關(guān)鍵字"using"。

  8. 在8051上中斷處理函數就和普通的函數一樣,中不需要設置其它的關(guān)鍵字,如interrupt 。

  9. 如果有8051匯編部分移植到 AndesCore™,需要重新實(shí)現,盡可能的用c 來(lái)實(shí)現,便于維護和調試。

  10. 在8051中使用到的#progma 相關(guān)部分需要刪除。

  11. 在A(yíng)ndesCore™中函數不需要聲明為"reentrant" 屬性。

  12. 如果使用了數學(xué)運算,在8051中默認是使用32bit單精度浮點(diǎn),如果要

  保持和8051 中相同的精度,需要將函數名做一些調整,如將 sin() 改成sinf()。



關(guān)鍵詞: 8051 AndesCore

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>