在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

給嵌入式項目也來個分層試試

h1654155971.7688 ? 來源:未知 ? 作者:李倩 ? 2018-05-11 09:18 ? 次閱讀

在一個初學者從入門走向精通的途中,像這種 發(fā)現(xiàn)問題 → 投入思考 → 提出方案 的學習模式是非常有效的。

一 遇到的問題

通過這一段時間的編碼實踐,積累了一些編碼經(jīng)驗,但也體會到了之前的代碼結構的缺陷:

(1)開發(fā)效率低:每次使用片內的某一資源(例如定時器等),筆者都要去查詢技術手冊,比較eggache~

(2)代碼重復較多:每個實驗源碼中,諸如xtal_init,led_init等初始化函數(shù)每次都要編寫

(3)不易修改:代碼中的業(yè)務邏輯與SFR的操作混在一起,可讀性較差,修改起來也費力

正是由于以上問題,筆者決定暫停了該系列博文的續(xù)寫,抽出時間來思考一下解決辦法。

二 由網(wǎng)站分層引起的思考

筆者在學習嵌入式編程之前,曾有過 ASP.NET 網(wǎng)站開發(fā)經(jīng)驗,對其分層理論也有所實踐,下面簡單提一下:

一般的有一定復雜度的網(wǎng)站可分為以下三層:

(1)數(shù)據(jù)接入層(DAL):負責與數(shù)據(jù)庫的交互,供業(yè)務邏輯層調用

(2)業(yè)務邏輯層(BLL):調用數(shù)據(jù)接入層以獲取數(shù)據(jù),并為具體的業(yè)務需求提供支持

(3)用戶界面層(UIL):負責呈現(xiàn)最終的用戶界面

相信博客園中很大一部分朋友都對此非常熟悉,在此不再贅述。總之,分層以后,大大提高了代碼的復用性與擴展性。

那么在嵌入式開發(fā)中,能否也利用分層的思想,來提高開發(fā)效率,增強其可維護性與可擴展性呢?下面,是一些筆者思考后的淺見。

三 嵌入式項目也來個分層

當然不能照搬ASP.NET 的具體分層思想,具體問題得具體分析嘛~

首先,嵌入式開發(fā)的核心就是芯片,它提供固定的片內資源共開發(fā)者使用。而且它具有一個很重要的特點就是,不隨項目的需求變動而變動。所以應將其作為最底層,為上層提供基礎支持。我們將其命名為硬件抽象層(Hardware Abstract Layer)。

芯片有了當然還不夠,通常我們會在片外擴展一些功能模塊來滿足具體的項目需求,例如:傳感器、鍵盤、LCD屏等。這一層的特點是,隨項目的變動而以模塊為單位動態(tài)增減。這一層的運作需要芯片內部資源的支持,所以應處于硬件抽象層之上,并為上層調用。我們將其命名為功能模塊層(Functional Module Layer)。

OK,現(xiàn)在原材料都準備齊了:芯片+擴展模塊,接下來就要開始真正的加工了:我們需要靈活調用之前兩層所提供的接口,實現(xiàn)具體的項目需求。我們將其命名為應用程序層(Application Layer)。

圖文:

(1)硬件抽象層(HAL)

實現(xiàn)對片內資源 (如定時器、ADC、中斷、I/O等) 的通用配置,隱藏具體的SFR操作細節(jié),為上層提供簡單清晰的調用接口。

(2)功能模塊層(FML)

通過調用 HAL,實現(xiàn)項目中所涉及到的各片外功能模塊,隱藏具體的模塊操作細節(jié),并為上層提供簡單清晰的調用接口。

(3)應用程序層(APL)

通過調用HAL與FML,實現(xiàn)最終的應用功能。

四 小試牛刀

OK,我們舉一個具體的例子,來說明分層思想的運用。

之前,筆者需要完成一個略帶綜合性的小實驗“溫度監(jiān)測系統(tǒng)”,需求分析大概如下:

?CC2430節(jié)點實現(xiàn)對溫度的定時采集,并可通過LED燈指示其采樣頻率

?節(jié)點將數(shù)據(jù)傳送至PC端

?節(jié)點可以接收來自PC的控制指令,以調整采樣速率和電源模式

?具備停機自動復位能力

? 可進入睡眠狀態(tài),并可由按鍵喚醒

從上面的需求中我們可以看出,本實驗的核心芯片為CC2430,需要的片外擴展模塊為LED燈與按鍵,預期要達到具體項目需求即以上五點。

接下來,我們利用上面提到的分層理論小試牛刀,對“溫度監(jiān)測系統(tǒng)”這一實驗的代碼結構進行規(guī)劃:

(1)應用程序層(APL)

[main.c] 引用hal.h、ioCC2430.h與module.h,實現(xiàn)溫度采集、與PC互通信、停機復位等具體的應用需求

(2)功能模塊層(FML)

[module.h] 定義了一系列片外功能模塊(LED、按鍵),以及一系列的相關函數(shù)的聲明

[module.c] 引用 hal.h,實現(xiàn)各片外模塊(LED、按鍵)的功能

(3)硬件抽象層(HAL)

[ioCC2430.h](系統(tǒng)自帶):定義了CC2430的所有SFR 、中斷向量

[hal.h] 包括常用類型定義、常用賦值宏、以及CC2430片上資源的配置(I/O、串口通訊、ADC、定時器、電源管理等)

(注:由于本實驗所涉及的片外模塊——LED與按鍵——的使用極其簡單,所以筆者將其合并入了單個源文件。若遇到較復雜的模塊,可以單獨新建 .h 與 .c 文件來實現(xiàn),如LCD.h、LCD.c)

經(jīng)此設計,其優(yōu)點逐漸浮出水面:

? 高效的開發(fā)速率:編完 HAL 層中的hal.h之后,我們就可以很方便地調用,而不必反復地去查詢SFR的具體設置細則

? 快速擴展:若需要加強系統(tǒng)功能,只需在 FML 層添加相應功能模塊(即 .c 文件),并在main.c 中調用即可

? 較高的代碼重用性:HAL 層所提供的SFR操作可供通用,而且該層幾乎不用修改就可直接用于新的CC2430項目中

? 較好的可維護性:項目代碼結構清晰,HAL 與 FML 幾乎不需要修改,只需修改 APL 即可

五 結論

可能對于嵌入式編程高手來說,上述理論可能完全算不得什么,甚至還存在著很大的錯誤。不過在一個初學者從入門走向精通的途中,像這種發(fā)現(xiàn)問題 →投入思考 →提出方案的學習模式,我相信是值得而且很有必要的。就像很多人說的那樣:過程比結論更重要。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5122

    文章

    19423

    瀏覽量

    312743
  • CC2430
    +關注

    關注

    1

    文章

    96

    瀏覽量

    42937

原文標題:這個思路不錯 給嵌入式項目代碼來個結構分層

文章出處:【微信號:weixin21ic,微信公眾號:21ic電子網(wǎng)】歡迎添加關注!文章轉載請注明出處。

收藏 3人收藏
  • efans_46ba2d1

評論

相關推薦

嵌入式系統(tǒng)的分層及對口專業(yè)要求

`嵌入式系統(tǒng)的分層及對口專業(yè)要求,嵌入式系統(tǒng)分為4層,硬件層、驅動層、操作系統(tǒng)層和應用層。硬件層比較適合于電子、通信、自動化、機電一體、信息工程類專業(yè)的人來搞。需要掌握的專業(yè)基礎知識,有:單片機原理及接口技術、微機原理及接口技術
發(fā)表于 05-07 16:39

嵌入式代碼來個分層

嵌入式代碼來個分層 一、遇到的問題代碼結構會有缺陷:(1)開發(fā)效率低:每次使用片內的某一資
發(fā)表于 03-23 13:54

怎么利用分層思想進行嵌入式項目設計

利用分層思想進行嵌入式項目設計,你試過嗎?
發(fā)表于 05-22 10:16

嵌入式分層架構的相關資料分享

最近重新進入嵌入式領域,有必要對嵌入式分層架構有一個清晰的理解。經(jīng)過多方查閱以及個人的理解,本人對嵌入式分層架構概括總結如下:比較細的層次由
發(fā)表于 10-28 08:42

嵌入式操作系統(tǒng)時如何分層的?各層的功能是什么?

嵌入式操作系統(tǒng)時如何分層的?各層的功能是什么?
發(fā)表于 12-27 06:44

探討一下嵌入式軟件分層設計

嵌入式軟件分層設計嵌入式軟件就是某一項目的源碼文件集合,源碼文件的數(shù)量,根據(jù)項目復雜程度的不同而有規(guī)模和層次的差別。就拿簡單的一個芯片廠..
發(fā)表于 02-14 07:19

JPEG分層壓縮模式在嵌入式GIS中的應用

本文介紹了嵌入式GIS 系統(tǒng)的構成,就如何在嵌入式GIS 中對圖像進行分層壓縮進行了討論,并對JPEG 層次壓縮模式進行了改進。關鍵詞: JPEG 嵌入式 GIS
發(fā)表于 06-15 08:26 ?15次下載

嵌入式系統(tǒng)設計師考試試題與小結

嵌入式系統(tǒng)設計師考試試題與小結 引言    
發(fā)表于 05-17 09:22 ?975次閱讀

嵌入式框架-分層

嵌入式架構有多重要?要做到嵌入式應用的代碼邏輯清晰,且避免重復的造輪子,沒有好的應用架構怎么行?如果沒有好的架構,移植將會是一件很痛苦的事情。如果沒有好的架構,復用是最大的難題,沒法更大限度的復用
發(fā)表于 10-20 16:06 ?24次下載
<b class='flag-5'>嵌入式</b>框架-<b class='flag-5'>分層</b>

嵌入式開源項目

嵌入式開源項目精選專欄
發(fā)表于 10-20 21:35 ?19次下載
<b class='flag-5'>嵌入式</b>開源<b class='flag-5'>項目</b>

嵌入式分層概括總結

最近重新進入嵌入式領域,有必要對嵌入式分層架構有一個清晰的理解。經(jīng)過多方查閱以及個人的理解,本人對嵌入式分層架構概括總結如下:比較細的層次由
發(fā)表于 10-21 10:51 ?11次下載
<b class='flag-5'>嵌入式</b><b class='flag-5'>分層</b>概括總結

嵌入式開發(fā)資料免費分享

嵌入式開發(fā)資料免費分享嵌入式工程師經(jīng)驗分享:如何學習嵌入式開發(fā)截取文檔部分學習嵌入式工程師經(jīng)驗分享的資料分享大家,文檔上從、
發(fā)表于 10-21 11:07 ?47次下載
<b class='flag-5'>嵌入式</b>開發(fā)資料免費分享

嵌入式硬件通信接口協(xié)議-SPI(二)分層架構設計模擬接口

嵌入式硬件通信接口協(xié)議-SPI(二)分層架構設計模擬接口
發(fā)表于 12-09 12:36 ?19次下載
<b class='flag-5'>嵌入式</b>硬件通信接口協(xié)議-SPI(二)<b class='flag-5'>分層</b>架構設計模擬接口

嵌入式軟件分層隔離的典范是什么?

嵌入式軟件開發(fā)分層、模塊化是理想狀態(tài),實際開發(fā)中因各種限制而有所取舍,但這不妨礙學習參考優(yōu)秀軟件架構,即使有部分思想在項目中落實,也是大有裨益的。
的頭像 發(fā)表于 01-20 11:08 ?1320次閱讀
<b class='flag-5'>嵌入式</b>軟件<b class='flag-5'>分層</b>隔離的典范是什么?

聊聊嵌入式軟件分層

今天以控制LED閃爍為例,聊聊嵌入式軟件分層
的頭像 發(fā)表于 12-28 09:22 ?805次閱讀

電子發(fā)燒友

中國電子工程師最喜歡的網(wǎng)站

  • 2931785位工程師會員交流學習
  • 獲取您個性化的科技前沿技術信息
  • 參加活動獲取豐厚的禮品
主站蜘蛛池模板: 激情亚洲 | www.夜夜骑| 亚洲啊v在线| 国产日韩欧美一区二区 | 亚洲影视一区二区 | 国产三级日产三级韩国三级 | 色偷偷免费视频 | 国产女人18毛片水真多18精品 | 香港日本三级在线播放 | 日韩毛片高清在线看 | 伊人久久综合成人亚洲 | ggg成人 | 黄色天天影视 | 天天摸日日碰天天看免费 | 久久久精品免费观看 | 人人添人人澡人人澡人人人爽 | 欧美日韩乱国产 | 亚洲伊人精品综合在合线 | 国产欧美亚洲精品 | 午夜在线免费视频 | 在线观看a网站 | 日本免费色网站 | 久久久伊香蕉网站 | 亚洲视频1| 久久综合九色综合98一99久久99久 | 黄色国产网站 | 天天爱天天做久久天天狠狼 | 女人张开双腿让男人桶完整 | 美女一级牲交毛片视频 | 中文字幕第一 | 欧美黑人性xxx猛交 欧美黑人性受xxxx精品 | 国产色婷婷精品综合在线观看 | 国产成人三级经典中文 | 色综合网天天综合色中文男男 | 丁香五月网久久综合 | 91激情网 | 一区二区三区四区精品 | 日本骚视频| 天堂va欧美ⅴa亚洲va一国产 | 日本a级影院 | 中国美女一级黄色片 |