国产在线观看91_国语自产偷拍精品视频偷_国产成人精品永久免费视频_日韩主播新片在线观看,欧美丰满熟妇xx猛交,久久精品国产自在天天线,成人综合色站

海天精工機床有限公司 海天精工博客

基于源碼組裝技術(shù)的嵌入式軟件系統(tǒng)的研究

在通用程序設計方法中 從面向過程程序設計方法 到面向?qū)ο蟪绦蛟O計方法 再到現(xiàn)在的 COM 程序設計方法 軟件工程的發(fā)展經(jīng)歷了一個長期的過程 在這個過程中 人們追求的一個重要目標 就是希望軟件開發(fā)能象汽車制造那樣 先按照標準制造零件和部件 最后再用這些零件和部件組裝成成品[1]嵌入式系統(tǒng)是面向應用的系統(tǒng) 其硬件環(huán)境具有個性和多樣性的特點 這要求相應的軟件也具有個性和多樣性的特點[2-3]然而 在不同的硬件環(huán)境中 有許多功能又是共性的 這些共性功能模塊的代碼 只需要經(jīng)過簡單修改 便可重用在新系統(tǒng)中 如何利用已開發(fā)的共性功能代碼 加速軟件的開發(fā) 這正是源碼組裝技術(shù)解決的問題1 源碼組裝思想在嵌入式應用中 使用 c 語言庫 或者微軟的 MFC 類庫 有時會感覺它產(chǎn)生的目標代碼太大 這是因為無論你用到某個庫中的一個函數(shù) 該庫的整個代碼就被全部連接進入目標程序 造成應用程序的冗余代碼較多顯然 利用包含函數(shù)庫的方式并不完全能適合嵌入式開發(fā)的要求 基于這種情況 作者提出一種既能減輕程序員的負擔 又能滿足代碼盡可能少的一種開發(fā)方式 即源代碼級裝配方式在源代碼級進行裝配 其基本思想是1 建立一個由開發(fā)工具管理的源代碼庫函數(shù)使用情況登記表 S_CODE_USED_TAB2 除 c 語言的基本函數(shù)庫外 與應用程序 或者操作系統(tǒng)相關的一些功能函數(shù)以匯編語言 或者 c 語言的源代碼的形式存放在源代碼資源庫中 通過數(shù)據(jù)庫方式進行管理3 通過裝配方式移植并產(chǎn)生該嵌入式操作系統(tǒng)的源代碼 在開發(fā)應用程序開發(fā)過程中 當用到某個函數(shù)時 源代碼資源函數(shù)開發(fā)工具軟件檢索 S_CODE_USED_TAB 表 看是否已包含該函數(shù)代碼 如果有 則設置好調(diào)用參數(shù)直接調(diào)用該函數(shù) 否則除了產(chǎn)生調(diào)用代碼外 還需將該源代碼添加到要求生成的應用程序源代碼中 并在 S_CODE_USED_TAB 表中添加記錄項4 本文只是解決生成可重組的源代碼問題 重組工具另做研究2 源碼組件源碼組裝技術(shù)的第一步就是獲得可用于組裝的源代碼組件 想要獲得功能完整 獨立 冗余度小的高質(zhì)量源代碼組件[4-5]首先要將整個軟件系統(tǒng)合理的劃分層次 解耦軟件部件2.1 嵌入式軟件系統(tǒng)層次劃分根據(jù)嵌入式軟件的特點 如圖 1 所示 將嵌入式軟件系統(tǒng)自下而上共分為四層 硬件層 基本實時內(nèi)核層 操作系統(tǒng)服務層和用戶應用層 各層之間通過各層的頭文件進行聲明和調(diào)用硬件層在系統(tǒng)的最下層 用于描述嵌入式系統(tǒng)的硬件資源情況 該層包括兩部分內(nèi)容 處理器資源及板級資源描述部分和操作系統(tǒng)基本內(nèi)核與硬件相關部分處理器資源 如 c8051f020.H 描述了處理器全部特殊寄存器 SFR 的定義 及部分 SFR 的各控制位 如 ES,TRO 等 的定義 板級資源 hard_layer.H 描述了電路板上的各種信息 如 晶振頻率 各存儲器容量和起止地址 各 I/O 口的類型 地址等 這部分信息是在建立項目之初 由開發(fā)工具軟件做向?qū)?由用戶填寫 再將它們定義為符號常量 供上層使用操作系統(tǒng)基本內(nèi)核與硬件相關部分是操作系統(tǒng)與硬件的接口 也就是移植操作系統(tǒng)需要改動的部分 以 uc/osII 為例 它包含了 OS_CPU.HOS_CPU_A.ASM 和 OS_CPU_C.C 三個文件[6]基本實時內(nèi)核層存放操作系統(tǒng)的最基本的四個功能模塊 內(nèi)核初始化模塊 中斷管理模塊 調(diào)度模塊和任務管理模塊操作系統(tǒng)服務層向用戶提供各種系統(tǒng)服務 包括 進程通信 內(nèi)存管理 文件系統(tǒng) 網(wǎng)絡系統(tǒng) 設備驅(qū)動等功能 該層的源碼組件是根據(jù)應用需要由用戶添加的 并且可以在開發(fā)中不斷增加 構(gòu)成具有用戶特色的組件庫用戶應用層是由用戶編寫的應用軟件 它可以調(diào)用服務層的 API 完成自身的功能 然后以任務的形式 掛接到操作系統(tǒng)上 由操作系統(tǒng)調(diào)度運行源碼組件的結(jié)構(gòu)系統(tǒng)按功能劃分后 為了實現(xiàn)組裝 源碼組件需要具有一定的結(jié)構(gòu)和接口 從代碼實現(xiàn)的角度看 源碼組件的基本結(jié)構(gòu)包括 代碼體 數(shù)據(jù)體和聲明體代碼體是源碼組件的實現(xiàn)部分 程序中體現(xiàn)為 FUNx.C 文件 其中包含了功能模塊的初始化函數(shù)和各種使用函數(shù) 數(shù)據(jù)體特指組件與組件調(diào)用者共同使用的變量 程序中體現(xiàn)為 FUNx_DEF.C 文件 聲明體是源碼組件對外部的使用聲明 具體為組件中的數(shù)據(jù)體 各函數(shù)的聲明以及自定義的數(shù)據(jù)結(jié)構(gòu) 程序中體現(xiàn)為 FUNx.H 文件 通過這些變量 系統(tǒng)和用戶可對組件進行信息查詢和通信聲明體和代碼體是源碼組件的必備組成 數(shù)據(jù)體根據(jù)情況不同可能沒有源碼組件的組裝在源代碼塊組裝時 按照系統(tǒng)軟件層次 從硬件層到應用層 分層次組織所有源代碼功能組件 將同一層內(nèi)所有組件的聲明體組合成本層的頭文件 Layern.H 代碼體組合成本層的代碼文件 Layern.C 數(shù)據(jù)體組合成本層的數(shù)據(jù)文件 Layern_Def.C 這樣的組合使得軟件代碼結(jié)構(gòu)清晰 便于閱讀 調(diào)試 修改基于源碼組裝技術(shù)的嵌入式精工系統(tǒng)的實現(xiàn)嵌入式精工系統(tǒng)的介紹本文所用的精工系統(tǒng)是電火花加工的三軸兩聯(lián)動精工系統(tǒng) 該系統(tǒng)不僅要求具有普通精工系統(tǒng)的輪廓控制功能 還需要實時檢測工件與刀具間的間隙電壓 并以此控制插補過程 同時 還要通過串行口與上位機進行實時通信系統(tǒng)代碼組織按照圖 1 嵌入式軟件系統(tǒng)的層次劃分 將整個系統(tǒng)的代碼分四個層次 用五個文件夾組裝 下面圖 2 具體給出系統(tǒng)代碼的組裝后的結(jié)構(gòu)1 Header Files 文件夾 它包含了系統(tǒng)中的所有的頭文件 其中 c8051F020.h是處理器 SFR 的定義 OS_CPU.H 是與操作系統(tǒng)相關的文件 hard_layer.H 是板級資源的符號常量定義 os_core_layer.h os_service_layer.h 和 user_layer.h 是各層所有組件的聲明體的集合 INCLUDES.H 是將其它五個頭文件匯總的一個總頭文件 這樣使得在其它 C 語言文件中只需要簡單的引用一個 INCLUDES.H 文件就可以了2 OS_ASM Files 文件夾 它包含了 OS_CPU_A.ASM 和 OS_CPU_C.C 與操作系統(tǒng)相關的兩個文件 以及 STARTUP.A51 和 INIT.A51 兩個文件 這兩個文件在 main 函數(shù)之前調(diào)用的 完成初始化工作3 OS_CORE Files 文件夾 它包含了五個文件 OS_CORE_DEF.C 是本層所有組件數(shù)據(jù)體的集合 OS_SCHEDULE.C 用于任務調(diào)度 OS_TASK.C 用于任務管理 OS_INIT.C 用于系統(tǒng)初始化 包括操作系統(tǒng)內(nèi)核初始化和 2.2 中提到的功能模塊的初始化 OS_INTERRUPUT.C 用于中斷管理 主要是中斷處理函數(shù)4 OS_SERVICE Files 文件夾 它包含了使用到的系統(tǒng)服務的模塊 共五個文件 OS_SERVICE_DEF.C 是本層所有組件數(shù)據(jù)體的集合 Device.C 內(nèi)含 A/D 定時器等設備的使用函數(shù) Interpolation.C 內(nèi)含插補控制的實現(xiàn)函數(shù) Serial.C 內(nèi)含串口控制和 SEM.C 內(nèi)含信號量處理5 USER_C FILES 文件夾 它包含了由用戶編寫的用戶應用層的文件 mymain.c 內(nèi)含 main 函數(shù) BandInit.c 內(nèi)含系統(tǒng)上電后的對硬件自檢程序 該程序在操作系統(tǒng)工作之前運行 剩下的是各任務的任務函數(shù)測試本軟件按上述結(jié)構(gòu) 在 uVision2 IDE 中組裝 編譯 連接 并下載到自行設計的硬件系統(tǒng)中運行 經(jīng)測試 系統(tǒng)運行正確 說明系統(tǒng)構(gòu)件使用的成功 此體系結(jié)構(gòu)和源碼組件結(jié)構(gòu)具有可行性 結(jié)論本文將源碼組裝的思想引入到嵌入式軟件的開發(fā) 以此為目標對嵌入式軟件進行分解 提出了嵌入式軟件四層體系結(jié)構(gòu)硬件層 基本實時內(nèi)核層 操作系統(tǒng)服務層和用戶應用層 并以功能完整 獨立 冗余度小為原則 將軟件系統(tǒng)分解成多個源碼組件不同應用可以根據(jù)自身需求 對軟件系統(tǒng)的功能模塊進行選擇 減少重復性的工作 使開發(fā)工作簡單 快速本文由海天精工文章整理發(fā)表,文章來自網(wǎng)絡僅參考學習,本站不承擔任何法律責任。http://www.dyliao.com/
留言列表
發(fā)表留言
◎歡迎參與討論,請在這里發(fā)表您的看法、交流您的觀點。

主站蜘蛛池模板: 沁源县| 蓬莱市| 平和县| 西乌珠穆沁旗| 白山市| 射洪县| 澜沧| 桃园县| 凌云县| 宣威市| 盐山县| 临漳县| 通州市| 宣武区| 积石山| 靖宇县| 丹凤县| 固原市| 萨嘎县| 轮台县| 道真| 高陵县| 大关县| 喜德县| 遵义市| 龙泉市| 当涂县| 奉贤区| 东城区| 绥宁县| 宁武县| 峨眉山市| 富阳市| 崇礼县| 云南省| 临澧县| 张家口市| 普定县| 叶城县| 铜鼓县| 密云县|