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

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

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

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

C編程如何做到完美庫(kù)化?

GReq_mcu168 ? 來(lái)源:未知 ? 作者:佚名 ? 2017-12-01 09:19 ? 次閱讀

一個(gè)的設(shè)備程序如果完美庫(kù)化,它意味著:

1.所有工程師在移植或創(chuàng)建該設(shè)備驅(qū)動(dòng)時(shí),花費(fèi)的代價(jià)超小。

2.隨著使用者的增多,它飽經(jīng)考驗(yàn),不斷趨于穩(wěn)定,變?yōu)楫?dāng)之無(wú)愧的公共代碼。

3.庫(kù)對(duì)外的接口(函數(shù)名及其參數(shù)聲明)是不變的,當(dāng)所有常用設(shè)備都實(shí)現(xiàn)庫(kù)化時(shí),它帶來(lái)另外一個(gè)好處,應(yīng)用層的移植、創(chuàng)建、修改維護(hù)的時(shí)間耗費(fèi)也會(huì)劇烈減少。應(yīng)用層的跨平臺(tái)無(wú)縫移植不是傳說(shuō),當(dāng)它所依賴的所有外圍設(shè)備通通在不同平臺(tái)庫(kù)化的時(shí)候,應(yīng)用層的實(shí)現(xiàn),就像在寫java代碼一樣。

4.庫(kù)意味這公司核心代碼的安全,庫(kù)代碼只掌握在核心工程師手里,應(yīng)用層的程序即使丟失也是無(wú)礙。

5.新人對(duì)于這些基于庫(kù)案子更快上手,一來(lái)有庫(kù)幫助文檔的說(shuō)明,二來(lái)不必也無(wú)法關(guān)心底層細(xì)節(jié),專注于應(yīng)用開(kāi)發(fā)。

6.提供給客戶二次開(kāi)發(fā),你可以把硬件和外設(shè)驅(qū)動(dòng)的庫(kù)交給客戶,讓其二次開(kāi)發(fā)。

7.通信協(xié)議的庫(kù)化,將使通信系統(tǒng)類的產(chǎn)品更加安全,至少不會(huì)被離職的工程師破壞,比如RFID的扣款充值。

8. ......

怎么樣,它使老板心動(dòng),工程師百味雜陳。

當(dāng)然,有些工程師會(huì)想到,庫(kù)可以使他脫離繁瑣的底層驅(qū)動(dòng)工作,進(jìn)行更高層次的工作。

庫(kù)的創(chuàng)建要想搞得好,有以下幾個(gè)條件

1.提供給客戶的只有.h檔和.lib檔。

2.所有.h檔中沒(méi)有define,編譯條件對(duì)于.lib檔來(lái)說(shuō)只是一個(gè)笑話。

3.所有.h檔中沒(méi)有extern變量,如果有,這意味著系統(tǒng)只能創(chuàng)建一個(gè)這種設(shè)備。比如蜂鳴器驅(qū)動(dòng),如果extern變量,就意味著整個(gè)系統(tǒng)只允許一個(gè)蜂鳴器。

4.完善而詳細(xì)的使用幫助文檔。可參考keil的hlp文檔格式。

5.簡(jiǎn)單的使用該.h檔的demo程序讓人參考。

6.“動(dòng)態(tài)鏈接”庫(kù)代碼,簡(jiǎn)言之,沒(méi)用到的接口函數(shù)代碼不會(huì)被鏈接器搞到最終的二進(jìn)制檔中。

7.還有一點(diǎn),盡量的平臺(tái)無(wú)關(guān)性,它不依賴于任何寄存器或者其他和平臺(tái)相關(guān)的東西。

要達(dá)到上述的目的,通常會(huì)使庫(kù)有如下特點(diǎn)

1.結(jié)構(gòu)體指針

2.大量的回調(diào)函數(shù)指針。

3.豐富的接口。

4.庫(kù)源碼的.c檔將按接口函數(shù)拆分成更多的.c檔,這為了實(shí)現(xiàn)鏈接時(shí)代碼空間最小化。

庫(kù)的缺點(diǎn)也是有的

1.它會(huì)使設(shè)備速度變慢一些,多了幾層間接取址的消耗。但對(duì)于32位機(jī),對(duì)于它帶來(lái)的便利,還是可接受的。

2.它會(huì)使code空間消耗相對(duì)更大一些,但請(qǐng)相信我,對(duì)于一整個(gè)中大型系統(tǒng)而言,它會(huì)使代碼量不升反降,因?yàn)榇笙到y(tǒng)中有非常多的重復(fù)冗余代碼。這方面我個(gè)人的經(jīng)驗(yàn),降的不是一般的多,簡(jiǎn)直到了一個(gè)難以置信的程度。

早期的8位機(jī),51平臺(tái)上其實(shí)不能很好地實(shí)現(xiàn)完美的庫(kù),至少是不能實(shí)現(xiàn)一個(gè)跨機(jī)型的底層設(shè)備驅(qū)動(dòng)庫(kù)。近年來(lái)隨著32位機(jī)的興起,庫(kù)漸漸地受到越來(lái)越多工程師的青睞。這里面最本質(zhì)的原因在于,51架構(gòu)的棧是靜態(tài)編譯的,局部變量和傳參的棧也是靜態(tài)的,函數(shù)無(wú)法重入。而多數(shù)的32位機(jī)都是壓棧傳參的方式。當(dāng)然,51速度慢也是重要的原因之一。

如果有熟悉面向?qū)ο笳Z(yǔ)言或者linux驅(qū)動(dòng)的朋友,你大概就明白一個(gè)好的庫(kù)是什么樣子的了。庫(kù)就像是面向?qū)ο笾械念悾劣趌inux底層驅(qū)動(dòng)的代碼,那就是函數(shù)指針和結(jié)構(gòu)體指針的世界。C的精華在指針,在里面得到完美的詮釋。

當(dāng)然,庫(kù)的代價(jià)也是有的

1.它會(huì)使設(shè)備速度變慢一些,多了幾層取地址的消耗。但對(duì)于32位機(jī),對(duì)于它帶來(lái)的便利,還是可接受的。

2.它會(huì)使code消耗便大一些,但請(qǐng)相信我,對(duì)于一個(gè)中大型系統(tǒng)而言,它會(huì)使代碼不升反降,因?yàn)榇笙到y(tǒng)中有非常多的重復(fù)冗余代碼。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴

原文標(biāo)題:嵌入式C編程經(jīng)驗(yàn)細(xì)談: 你庫(kù)了嗎?

文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    藍(lán)牙AOA定位系統(tǒng)如何做到高精準(zhǔn)度?

    藍(lán)牙AOA定位系統(tǒng)是一種高精度的室內(nèi)定位技術(shù),其高精準(zhǔn)度是通過(guò)一系列高科技的技術(shù)和方法實(shí)現(xiàn)的。以下是給大家分析的幾點(diǎn)關(guān)于如何做到高精準(zhǔn)度的幾個(gè)關(guān)鍵點(diǎn):
    的頭像 發(fā)表于 12-13 11:42 ?155次閱讀

    上位機(jī)編程語(yǔ)言選擇 上位機(jī)在自動(dòng)中的作用

    上位機(jī)編程語(yǔ)言選擇 在自動(dòng)領(lǐng)域,上位機(jī)(Upper Computer)通常指的是與下位機(jī)(如PLC、單片機(jī)等)進(jìn)行通信的計(jì)算機(jī)系統(tǒng)。上位機(jī)在自動(dòng)系統(tǒng)中扮演著監(jiān)控、控制、數(shù)據(jù)處理和用戶界面
    的頭像 發(fā)表于 12-04 10:25 ?346次閱讀

    ADC7846如何做到使用手指觸摸有效?

    ADC7846芯片觸摸轉(zhuǎn)換時(shí)候,不準(zhǔn),能否通過(guò)配置,如何做到使用手指觸摸有效?
    發(fā)表于 12-04 06:47

    如何快速入門HAL庫(kù)編程 HAL庫(kù)與裸機(jī)編程的比較

    如何快速入門HAL庫(kù)編程 要快速入門HAL庫(kù)編程,可以遵循以下步驟: 了解基礎(chǔ)知識(shí) : 掌握C語(yǔ)言編程
    的頭像 發(fā)表于 12-02 11:39 ?352次閱讀

    兩個(gè)高速ADC的CLK時(shí)鐘如何做到同步無(wú)相位差?

    如何做到同步無(wú)相位差,兩個(gè)ADC使用同一個(gè)時(shí)鐘發(fā)生器是否可以滿足同步問(wèn)題? 2、兩個(gè)高速ADC的CLKOUT是否存在時(shí)延,如果存在那相位差是多少?我再規(guī)格書中沒(méi)有看到CLKOUT引腳關(guān)于這方面的描述
    發(fā)表于 11-18 06:47

    工程行業(yè)中如何做到低碳甚至零碳

    低碳的生活方式越來(lái)越多地融入我們的日常習(xí)慣當(dāng)中。但是在工程行業(yè)中如何做到低碳甚至零碳呢?
    的頭像 發(fā)表于 10-14 10:31 ?437次閱讀

    TPA3251如何做到180W的功率,電壓12V,電流應(yīng)該多少?

    TPA3251如何做到180W的功率,電壓12V,電流應(yīng)該多少,請(qǐng)推薦DCDC
    發(fā)表于 10-11 06:54

    請(qǐng)問(wèn)使用lwip創(chuàng)建socket,該如何做到非阻塞的接收發(fā)送數(shù)據(jù)?

    請(qǐng)問(wèn)使用lwip創(chuàng)建socket,該如何做到非阻塞的接收發(fā)送數(shù)據(jù)?
    發(fā)表于 06-19 06:02

    PLC編程語(yǔ)言和C語(yǔ)言的區(qū)別

    在工業(yè)自動(dòng)和計(jì)算機(jī)編程領(lǐng)域中,PLC(可編程邏輯控制器)編程語(yǔ)言和C語(yǔ)言各自扮演著重要的角色。盡管兩者都是
    的頭像 發(fā)表于 06-14 17:11 ?2914次閱讀

    c語(yǔ)言怎么做可視界面

    C語(yǔ)言是一種通用的編程語(yǔ)言,廣泛應(yīng)用于系統(tǒng)編程、嵌入式開(kāi)發(fā)等領(lǐng)域。雖然C語(yǔ)言本身并不支持直接創(chuàng)建可視界面,但通過(guò)結(jié)合一些圖形
    的頭像 發(fā)表于 06-06 10:46 ?2394次閱讀

    STM32在PWM輸出模式中,如何做到PWM移向輸出?

    在PWM輸出模式中,如何做到PWM移向輸出?在DSP中有時(shí)基相位寄存器,可以移向配置占空比。但是好像沒(méi)有發(fā)現(xiàn)STM32單片機(jī)有類似的寄存器功能。請(qǐng)問(wèn)各位大神是否有其他方法可以實(shí)現(xiàn)PWM移向輸出呢?
    發(fā)表于 05-15 06:02

    多路電源并聯(lián)輸出如何做到均流不倒灌?

    如果負(fù)載所需要的功率較大,單獨(dú)一路供電又滿足不了需求,但是有暫時(shí)沒(méi)有大的供電電源,那么是如何做到兩個(gè)或者多個(gè)同樣的電源做到相等輸出均流不倒灌呢?有什么辦法解決,其原理是什么? 舉例,在兩個(gè)LDO輸出
    發(fā)表于 04-27 22:54

    基于原生libbpf庫(kù)的eBPF編程改進(jìn)方案

    為了簡(jiǎn)化 eBPF程序的開(kāi)發(fā)流程,降低開(kāi)發(fā)者在使用 libbpf 庫(kù)時(shí)的入門難度,libbpf-bootstrap 框架應(yīng)運(yùn)而生。基于libbpf-bootstrap框架的編程方案是目前網(wǎng)絡(luò)上看到的最主流編程方案。
    發(fā)表于 03-19 14:19 ?677次閱讀
    基于原生libbpf<b class='flag-5'>庫(kù)</b>的eBPF<b class='flag-5'>編程</b>改進(jìn)方案

    光伏戶用如何做到低成本獲客?

    光伏戶用如何做到低成本獲客? 隨著可再生能源的日益普及和技術(shù)的不斷進(jìn)步,光伏系統(tǒng)正逐漸走進(jìn)千家萬(wàn)戶。然而,對(duì)于光伏企業(yè)來(lái)說(shuō),如何在激烈的市場(chǎng)競(jìng)爭(zhēng)中低成本地獲取客戶,成為了他們面臨的一大挑戰(zhàn)。本文將
    發(fā)表于 02-27 10:33

    “其貌不揚(yáng)”的共模電感究竟是如何做到抗干擾的呢?

    “其貌不揚(yáng)”的共模電感究竟是如何做到抗干擾的呢? 共模電感是一種用于濾除電子設(shè)備中的共模噪聲的重要元件,其主要作用是提供阻抗來(lái)濾除共模干擾信號(hào)。盡管外觀看起來(lái)“其貌不揚(yáng)”,但共模電感通過(guò)其特殊
    的頭像 發(fā)表于 01-11 16:27 ?803次閱讀
    主站蜘蛛池模板: 偷拍亚洲制服另类无码专区| 久久久乱码精品亚洲日韩| 偷尝禁果H1V1幸运的山熊| 青青精品国产自在线拍| 久久久久亚洲精品影视| 久久久久久久电影| 麻豆AV久久AV盛宴AV| 好男人视频免费高清在线观看www| 国产在线高清视频| 久久99热这里只有精品66| 国产亚洲精品久久久999蜜臀| 国产高清超清在线播放| 国产日韩久久久精品影院首页 | 国产一区二区三区内射高清| 混乱家庭电影完整版在线看| 国产福利秒拍weipai.ee| 国产精品无码亚洲精品| 黑人巨大交牲老太| 老师我好爽再深一点老师好涨| 黄网13区| 蜜臀AV999无码精品国产| 欧美午夜理伦三级在线观看| 手机在线播放成人亚洲影院电影| 羞羞麻豆国产精品1区2区3区| 色翁荡熄月月| 亚州笫一色惰网站| 最近中文字幕无吗免费高清| 亚洲欧洲精品成人久久曰影片| 在线伦理电影网| 草莓视频在线播放视频| 超碰98人人插| 国产三级多多影院| 麻豆AV无码精品一区二区| 日韩免费一级毛片| 日日夜夜天天操| 日韩毛片在线视频| 亚洲色噜噜狠狠网站| a级精品九九九大片免费看| 99热久久视频只有精品6 | 欧美中文字幕一区二区三区| 小776论坛|