色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

給嵌入式項(xiàng)目也來(lái)個(gè)分層試試

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

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

一 遇到的問(wèn)題

通過(guò)這一段時(shí)間的編碼實(shí)踐,積累了一些編碼經(jīng)驗(yàn),但也體會(huì)到了之前的代碼結(jié)構(gòu)的缺陷:

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

(2)代碼重復(fù)較多:每個(gè)實(shí)驗(yàn)源碼中,諸如xtal_init,led_init等初始化函數(shù)每次都要編寫(xiě)

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

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

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

筆者在學(xué)習(xí)嵌入式編程之前,曾有過(guò) ASP.NET 網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn),對(duì)其分層理論也有所實(shí)踐,下面簡(jiǎn)單提一下:

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

(1)數(shù)據(jù)接入層(DAL):負(fù)責(zé)與數(shù)據(jù)庫(kù)的交互,供業(yè)務(wù)邏輯層調(diào)用

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

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

相信博客園中很大一部分朋友都對(duì)此非常熟悉,在此不再贅述??傊謱右院?,大大提高了代碼的復(fù)用性與擴(kuò)展性。

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

三 嵌入式項(xiàng)目也來(lái)個(gè)分層

當(dāng)然不能照搬ASP.NET 的具體分層思想,具體問(wèn)題得具體分析嘛~

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

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

OK,現(xiàn)在原材料都準(zhǔn)備齊了:芯片+擴(kuò)展模塊,接下來(lái)就要開(kāi)始真正的加工了:我們需要靈活調(diào)用之前兩層所提供的接口,實(shí)現(xiàn)具體的項(xiàng)目需求。我們將其命名為應(yīng)用程序?qū)樱ˋpplication Layer)。

圖文:

(1)硬件抽象層(HAL)

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

(2)功能模塊層(FML)

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

(3)應(yīng)用程序?qū)樱ˋPL)

通過(guò)調(diào)用HAL與FML,實(shí)現(xiàn)最終的應(yīng)用功能。

四 小試牛刀

OK,我們舉一個(gè)具體的例子,來(lái)說(shuō)明分層思想的運(yùn)用。

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

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

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

?節(jié)點(diǎn)可以接收來(lái)自PC的控制指令,以調(diào)整采樣速率和電源模式

?具備停機(jī)自動(dòng)復(fù)位能力

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

從上面的需求中我們可以看出,本實(shí)驗(yàn)的核心芯片為CC2430,需要的片外擴(kuò)展模塊為L(zhǎng)ED燈與按鍵,預(yù)期要達(dá)到具體項(xiàng)目需求即以上五點(diǎn)。

接下來(lái),我們利用上面提到的分層理論小試牛刀,對(duì)“溫度監(jiān)測(cè)系統(tǒng)”這一實(shí)驗(yàn)的代碼結(jié)構(gòu)進(jìn)行規(guī)劃:

(1)應(yīng)用程序?qū)樱ˋPL)

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

(2)功能模塊層(FML)

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

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

(3)硬件抽象層(HAL)

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

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

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

經(jīng)此設(shè)計(jì),其優(yōu)點(diǎn)逐漸浮出水面:

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

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

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

? 較好的可維護(hù)性:項(xiàng)目代碼結(jié)構(gòu)清晰,HAL 與 FML 幾乎不需要修改,只需修改 APL 即可

五 結(jié)論

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

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

    關(guān)注

    5126

    文章

    19457

    瀏覽量

    313450
  • CC2430
    +關(guān)注

    關(guān)注

    1

    文章

    96

    瀏覽量

    42960

原文標(biāo)題:這個(gè)思路不錯(cuò) 給嵌入式項(xiàng)目代碼來(lái)個(gè)結(jié)構(gòu)分層

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

收藏 3人收藏
  • efans_46ba2d1

評(píng)論

相關(guān)推薦
熱點(diǎn)推薦

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

`嵌入式系統(tǒng)的分層及對(duì)口專業(yè)要求,嵌入式系統(tǒng)分為4層,硬件層、驅(qū)動(dòng)層、操作系統(tǒng)層和應(yīng)用層。硬件層比較適合于電子、通信、自動(dòng)化、機(jī)電一體、信息工程類專業(yè)的人來(lái)搞。需要掌握的專業(yè)基礎(chǔ)知識(shí),有:?jiǎn)纹瑱C(jī)原理及接口技術(shù)、微機(jī)原理及接口技術(shù)
發(fā)表于 05-07 16:39

嵌入式代碼來(lái)個(gè)分層

嵌入式代碼來(lái)個(gè)分層 一、遇到的問(wèn)題代碼結(jié)構(gòu)會(huì)有缺陷:(1)開(kāi)發(fā)效率低:每次使用片內(nèi)的某一資
發(fā)表于 03-23 13:54

怎么利用分層思想進(jìn)行嵌入式項(xiàng)目設(shè)計(jì)

利用分層思想進(jìn)行嵌入式項(xiàng)目設(shè)計(jì),你試過(guò)嗎?
發(fā)表于 05-22 10:16

嵌入式分層架構(gòu)的相關(guān)資料分享

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

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

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

探討一下嵌入式軟件分層設(shè)計(jì)

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

JPEG分層壓縮模式在嵌入式GIS中的應(yīng)用

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

嵌入式系統(tǒng)設(shè)計(jì)師考試試題與小結(jié)

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

嵌入式框架-分層

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

嵌入式開(kāi)源項(xiàng)目

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

嵌入式分層概括總結(jié)

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

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

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

嵌入式硬件通信接口協(xié)議-SPI(二)分層架構(gòu)設(shè)計(jì)模擬接口

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

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

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

聊聊嵌入式軟件分層

今天以控制LED閃爍為例,聊聊嵌入式軟件分層
的頭像 發(fā)表于 12-28 09:22 ?826次閱讀
主站蜘蛛池模板: 国产成人免费在线 | 飘雪在线观看免费完整版 | 午夜影院老司机 | 日本吃孕妇奶水免费观看 | 99视频精品在线 | 永久免费的污视频网站 | 精品午夜国产福利观看 | 高潮久久久久久久久不卡 | 乱精品一区字幕二区 | 18美女腿打开无遮软件 | 最近最新中文字幕MV高清在线 | 国产精品久久久久AV麻豆 | 美女裸露胸部100%无遮挡 | 无码爽死成人777在线观看网站 | 精品国产自在天天线2019 | 91久久偷偷做嫩草影院免费看 | 2017天天拍天天拍香蕉视频 | 国产成人精品免费视频下载 | 十七岁日本免费完整版BD | 日韩亚洲国产欧美免费观看 | 国精产品砖一区二区三区糖心 | 伊人久久亚洲综合天堂 | 1a级毛片免费观看 | 亚洲 欧美 国产在线视频 | 伦理片在线3348 | 我半夜摸妺妺的奶C了她 | 亚洲人成色777777老人头 | 共妻肉多荤文高h一女n男 | VIDEOSGGRATIS欧美另类 | 久久99国产精品一区二区 | 高清毛片一区二区三区 | 亚洲va精品中文字幕 | bl肉yin荡受np各种play | 国产在线观看免费观看 | 久久99影院 | 欧美性xxxxxx爱| 无遮掩H黄纯肉动漫在线观看星 | 久久黄色小视频 | 精品爽爽久久久久久蜜臀 | 强开少妇嫩苞又嫩又紧九色 | 妖精视频在线观看高清 |

電子發(fā)燒友

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

  • 2931785位工程師會(huì)員交流學(xué)習(xí)
  • 獲取您個(gè)性化的科技前沿技術(shù)信息
  • 參加活動(dòng)獲取豐厚的禮品