18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

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

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

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

面向嵌入式系統(tǒng)的自診斷API

PCB線路板打樣 ? 來(lái)源:PCB線路板打樣 ? 作者:PCB線路板打樣 ? 2023-11-10 15:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

邁向嵌入式系統(tǒng)的自診斷API
隨著嵌入式系統(tǒng)需求的增長(zhǎng)和開(kāi)發(fā)周期的縮小,開(kāi)發(fā)人員越來(lái)越多地集成商業(yè)應(yīng)用程序編程接口(API)或軟件工具的功能集合發(fā)布者提供在應(yīng)用程序中使用該工具的功能。程序員選擇這些預(yù)先構(gòu)建的庫(kù),而不是手動(dòng)編寫(xiě)所需的功能。常見(jiàn)示例是通信,消息傳遞,數(shù)據(jù)庫(kù)和用戶界面庫(kù)。這些“中間件”API在便利性,可移植性,生產(chǎn)力和上市時(shí)間方面提供了諸多益處。但是,這些庫(kù)通常還存在引入破壞性和極難發(fā)現(xiàn)的編程錯(cuò)誤的風(fēng)險(xiǎn)。這種風(fēng)險(xiǎn)源于商業(yè)API的實(shí)施方式。包含API的軟件功能幾乎總是數(shù)據(jù)結(jié)構(gòu)無(wú)知。通過(guò)使用void指針在API庫(kù)和應(yīng)用程序之間傳遞數(shù)據(jù),他們處理數(shù)據(jù)而不“知道”他們運(yùn)行的數(shù)據(jù)類型。

然而,創(chuàng)建API的潛力它捕獲了更廣泛的編程錯(cuò)誤,并減少了API學(xué)習(xí)曲線的啟動(dòng),內(nèi)置于C ++和C語(yǔ)言中。通過(guò)利用每個(gè)ANSI C/C ++編譯器的函數(shù)參數(shù)類型檢查能力,可以創(chuàng)建一個(gè)數(shù)據(jù)感知的編程接口,從而實(shí)現(xiàn)自診斷。 C/C ++作為首選的嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境不斷發(fā)展,因此基于環(huán)境固有功能的任何改進(jìn)都具有廣泛的適用性。

數(shù)據(jù)管理通常是核心應(yīng)用程序需求,以及許多商業(yè)數(shù)據(jù)庫(kù)API在解決嵌入式系統(tǒng)的性能和占用空間要求的同時(shí),我們已經(jīng)開(kāi)始滿足這一需求。

從歷史上看,數(shù)據(jù)庫(kù)SDK已經(jīng)為數(shù)據(jù)庫(kù)提供的服務(wù)提供了預(yù)定義的靜態(tài)編程接口。對(duì)于嵌入式系統(tǒng),這些API中的大多數(shù)都是導(dǎo)航的,具有排序,存儲(chǔ)和檢索數(shù)據(jù)的功能,同時(shí)一次瀏覽數(shù)據(jù)庫(kù)的內(nèi)容。開(kāi)發(fā)人員必須學(xué)習(xí)這樣一個(gè)數(shù)據(jù)庫(kù)來(lái)完成一項(xiàng)任務(wù),一般都是積極的,或者至少是中立的:雖然API提供了一個(gè)可以增加項(xiàng)目時(shí)間的學(xué)習(xí)曲線,但這種記憶在未來(lái)的項(xiàng)目中可能會(huì)有用。人們普遍期望這個(gè)API幾乎可以處理任何類型和組織的數(shù)據(jù)。

然而,一個(gè)重要的缺點(diǎn)是,對(duì)于預(yù)定義的數(shù)據(jù)庫(kù)函數(shù)庫(kù)來(lái)說(shuō),能夠管理任何數(shù)據(jù)庫(kù)定義的數(shù)據(jù),接口必須忽略所有數(shù)據(jù)的類型。換句話說(shuō),數(shù)據(jù)庫(kù)編程接口必須將數(shù)據(jù)視為不透明或未鍵入的數(shù)據(jù)。簡(jiǎn)單來(lái)說(shuō),數(shù)據(jù)庫(kù)庫(kù)無(wú)法知道公司,人員,網(wǎng)絡(luò)節(jié)點(diǎn),傳感器,高速公路或任何其他特定類型的信息是從數(shù)據(jù)庫(kù)讀取還是寫(xiě)入數(shù)據(jù)庫(kù)。編程接口只能知道正在寫(xiě)入一些數(shù)據(jù)。

為了實(shí)現(xiàn)這一點(diǎn),所有這些數(shù)據(jù)庫(kù)都使用void指針在數(shù)據(jù)庫(kù)庫(kù)和應(yīng)用程序之間傳遞數(shù)據(jù)。 void指針是一個(gè)C/C ++語(yǔ)言程序變量,可以合法地指向任何類型的數(shù)據(jù)。無(wú)效指針是什么叫做un-typed?正如其名稱所暗示的那樣,它沒(méi)有類型。

沒(méi)有類型,C/C ++編譯器和數(shù)據(jù)庫(kù)運(yùn)行時(shí)都不能對(duì)它們執(zhí)行任何驗(yàn)證。這開(kāi)啟了編程錯(cuò)誤的可能性,這些錯(cuò)誤源于將指針傳遞給錯(cuò)誤類型的數(shù)據(jù)。這種錯(cuò)誤的后果包括數(shù)據(jù)庫(kù)中的無(wú)意義數(shù)據(jù)到損壞的(不可用的)數(shù)據(jù)庫(kù)到崩潰的程序。

編寫(xiě)函數(shù)參數(shù)時(shí)出錯(cuò)的結(jié)果將導(dǎo)致數(shù)據(jù)庫(kù)運(yùn)行時(shí)放置將數(shù)據(jù)放入數(shù)據(jù)庫(kù)中不適合的位置(例如,將數(shù)據(jù)放入數(shù)據(jù)庫(kù)為模型數(shù)據(jù)指定的位置)。充其量,這會(huì)導(dǎo)致亂碼存儲(chǔ)在數(shù)據(jù)庫(kù)中。更糟糕的是,數(shù)據(jù)庫(kù)運(yùn)行時(shí)可能會(huì)嘗試超出程序堆棧的末尾并導(dǎo)致內(nèi)存沖突(即崩潰)。

從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)會(huì)帶來(lái)其他風(fēng)險(xiǎn)。嘗試將N字節(jié)寬的數(shù)據(jù)讀入一個(gè)小于N字節(jié)寬的程序變量將導(dǎo)致數(shù)據(jù)庫(kù)覆蓋內(nèi)存中的隨機(jī)位置。關(guān)鍵數(shù)據(jù)可能會(huì)被覆蓋(例如程序調(diào)用堆棧),從而導(dǎo)致崩潰。重寫(xiě)數(shù)據(jù)庫(kù)運(yùn)行時(shí)結(jié)構(gòu)也可能會(huì)被覆蓋并導(dǎo)致數(shù)據(jù)庫(kù)損壞。

引入錯(cuò)誤有多容易?實(shí)際上,通過(guò)切割和粘貼代碼塊的省力實(shí)踐,這種錯(cuò)誤很快就會(huì)進(jìn)入代碼。任何與void指針相關(guān)的編輯錯(cuò)誤,無(wú)論是傳遞指向錯(cuò)誤主機(jī)程序變量的指針,還是傳遞指向已分配不足內(nèi)存的指針,編譯器或中間件都無(wú)法檢測(cè)到。無(wú)論錯(cuò)誤類型如何,使用void指針傳遞數(shù)據(jù)條C/C +編譯器和中間件運(yùn)行時(shí)它們檢測(cè)錯(cuò)誤的能力。糾正這些類型的錯(cuò)誤的努力從最小到最大不等。

自我診斷API

創(chuàng)建更好的數(shù)據(jù)庫(kù)API的潛力?一個(gè)捕獲這樣的編程錯(cuò)誤,并減少API學(xué)習(xí)曲線啟動(dòng)?自從80年代首次將函數(shù)原型引入C和C ++以來(lái),已經(jīng)存在:通過(guò)利用每個(gè)ANSI C/C ++編譯器的函數(shù)參數(shù)類型檢查能力,創(chuàng)建一個(gè)數(shù)據(jù)感知的編程接口,從而實(shí)現(xiàn)自診斷。/p>

函數(shù)原型是函數(shù)的“簽名”。函數(shù)原型聲明函數(shù)的名稱,函數(shù)的參數(shù)(參數(shù))數(shù),每個(gè)參數(shù)的數(shù)據(jù)類型以及函數(shù)返回值的數(shù)據(jù)類型。如果函數(shù)的實(shí)際使用與其簽名不匹配,編譯器將發(fā)出錯(cuò)誤消息,并且必須先糾正違規(guī)代碼,然后才能成功編譯程序。

利用現(xiàn)代ANSI C/C ++編譯器的函數(shù)原型設(shè)計(jì)功能要求我們放棄舊的想法,即數(shù)據(jù)庫(kù)編程接口必須是程序員學(xué)習(xí)的靜態(tài)函數(shù)庫(kù),然后應(yīng)用于每個(gè)可能的數(shù)據(jù)庫(kù)設(shè)計(jì)。相反,編程接口必須特定于每個(gè)數(shù)據(jù)庫(kù)設(shè)計(jì),因此了解每個(gè)特定數(shù)據(jù)庫(kù)的數(shù)據(jù)類型。換句話說(shuō),填充模型記錄以強(qiáng)制要求程序員傳遞模型信息的數(shù)據(jù)庫(kù)函數(shù)的唯一方法是,該接口是從模型所參與的數(shù)據(jù)庫(kù)設(shè)計(jì)派生的,也是特定的。

McObject的eXtremeDB是一種用于嵌入式系統(tǒng)的內(nèi)存數(shù)據(jù)庫(kù)系統(tǒng)(IMDS),它展示了如何將自診斷API應(yīng)用于嵌入式系統(tǒng)中間件。 eXtremeDB有一個(gè)用于通用任務(wù)的小型靜態(tài)API(打開(kāi)并建立與數(shù)據(jù)庫(kù)的連接,開(kāi)始和結(jié)束事務(wù)等)。但是,大多數(shù)接口??關(guān)于填充,搜索和讀取數(shù)據(jù)庫(kù)定義中動(dòng)態(tài)生成的數(shù)據(jù)的部分。

eXtremeDB數(shù)據(jù)庫(kù)用戶使用輸入到文本文件中的eXtremeDB數(shù)據(jù)庫(kù)定義語(yǔ)言(DDL)來(lái)描述數(shù)據(jù)庫(kù)。編譯器mcocomp處理此DDL,驗(yàn)證其語(yǔ)法,如果沒(méi)有錯(cuò)誤,則生成開(kāi)發(fā)人員在其應(yīng)用程序項(xiàng)目中包含的 .c和 .h文件。 .c和.h文件定義該唯一數(shù)據(jù)庫(kù)的編程接口。

在生成的文件中有函數(shù)原型(.h文件)和實(shí)現(xiàn)(.c文件)創(chuàng)建,搜索和讀取由數(shù)據(jù)庫(kù)設(shè)計(jì)者定義的每種類型的類和索引。每個(gè)接口都是針對(duì)特定數(shù)據(jù)元素和操作的特定用途的;因此,在接口定義中考慮了元素的類型。

eXtremeDB還建立在利用ANSI C函數(shù)原型的基礎(chǔ)上,提供了包含大量(和可配置)運(yùn)行的數(shù)據(jù)庫(kù)庫(kù)的開(kāi)發(fā)人員版本-time檢查函數(shù)原型無(wú)法檢測(cè)到的其他類型的編程錯(cuò)誤,例如嘗試使用事務(wù)范圍之外的對(duì)象的句柄,或者使用無(wú)效的事務(wù)句柄。

直觀的界面可以在項(xiàng)目的開(kāi)始階段提高程序員的工作效率,并延長(zhǎng)軟件的使用壽命。與基于模糊靜態(tài)編程接口的非描述性代碼相比,進(jìn)入項(xiàng)目的維護(hù)程序員發(fā)現(xiàn)閱讀和理解函數(shù)要容易得多。

為每個(gè)項(xiàng)目出現(xiàn)一個(gè)新界面,非常簡(jiǎn)單的規(guī)則管理它的產(chǎn)生和使用。掌握生成和使用此類API的基礎(chǔ)知識(shí)可以提供比學(xué)習(xí)靜態(tài)中間件API的100到250個(gè)功能更強(qiáng)大,更靈活的“生活工具”。

作者:Steven T. Graves,總裁兼首席執(zhí)行官,McObject LLC,Issaquah,WA

審核編輯 黃宇

聲明:本文內(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)注

    5177

    文章

    19996

    瀏覽量

    325118
  • 嵌入式系統(tǒng)
    +關(guān)注

    關(guān)注

    41

    文章

    3702

    瀏覽量

    132721
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1959

    瀏覽量

    65719
  • 數(shù)據(jù)庫(kù)
    +關(guān)注

    關(guān)注

    7

    文章

    3982

    瀏覽量

    67496
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    新一代嵌入式開(kāi)發(fā)平臺(tái) AMD嵌入式軟件和工具2025.1版現(xiàn)已推出

    AMD 2025.1 版嵌入式軟件和工具是面向新一代嵌入式系統(tǒng)開(kāi)發(fā)而打造的綜合平臺(tái),全面加速概念構(gòu)想到部署落地。 2025.1 版嵌入式軟件
    的頭像 發(fā)表于 08-20 09:15 ?3376次閱讀

    AMD 2025.1版嵌入式軟件和工具的新增功能

    AMD 2025.1 版嵌入式軟件和工具是面向新一代嵌入式系統(tǒng)開(kāi)發(fā)而打造的綜合平臺(tái),全面加速概念構(gòu)想到部署落地。
    的頭像 發(fā)表于 08-15 15:32 ?880次閱讀

    Linux嵌入式和單片機(jī)嵌入式的區(qū)別?

    Linux嵌入式與單片機(jī)嵌入式在多個(gè)方面存在顯著的區(qū)別,以下是詳細(xì)的比較和歸納: 一、基本概念 1. Linux嵌入式: 定義:將Linux操作系統(tǒng)運(yùn)行在
    發(fā)表于 06-20 09:46

    運(yùn)行在嵌入式系統(tǒng)上的emApps

    在當(dāng)今快節(jié)奏的嵌入式系統(tǒng)世界中,靈活性和適應(yīng)性是嵌入式系統(tǒng)實(shí)現(xiàn)的關(guān)鍵。SEGGER推出了其最新創(chuàng)新:Embedded apps(emApps)應(yīng)用,類似于手機(jī)上的應(yīng)用程序,可以運(yùn)行在
    的頭像 發(fā)表于 06-18 09:53 ?509次閱讀
    運(yùn)行在<b class='flag-5'>嵌入式</b><b class='flag-5'>系統(tǒng)</b>上的emApps

    嵌入式開(kāi)發(fā)入門指南:從零開(kāi)始學(xué)習(xí)嵌入式

    隨著物聯(lián)網(wǎng)、智能硬件的發(fā)展,嵌入式開(kāi)發(fā)成為熱門技能之一。以下將為初學(xué)者提供一份詳細(xì)的嵌入式開(kāi)發(fā)入門指南,涵蓋學(xué)習(xí)路徑、必備工具、推薦資源等內(nèi)容。 1. 嵌入式系統(tǒng)的定義與應(yīng)用
    發(fā)表于 05-15 09:29

    Python在嵌入式系統(tǒng)中的應(yīng)用場(chǎng)景

    你想把你的職業(yè)生涯提升到一個(gè)新的水平?Python在嵌入式系統(tǒng)中正在成為一股不可缺少的新力量。盡管傳統(tǒng)上嵌入式開(kāi)發(fā)更多地依賴于C和C++語(yǔ)言,Python的優(yōu)勢(shì)在于其簡(jiǎn)潔的語(yǔ)法、豐富的庫(kù)和快速的開(kāi)發(fā)周期,這使得它在某些
    的頭像 發(fā)表于 03-19 14:10 ?1022次閱讀

    嵌入式系統(tǒng)開(kāi)發(fā)圣經(jīng)【干貨】

    內(nèi)容包括:嵌入式系統(tǒng)的介紹、嵌入式SoC硬件系統(tǒng)概論、嵌入式系統(tǒng)軟件開(kāi)發(fā)。適用于產(chǎn)品主管、
    發(fā)表于 03-12 13:58

    使用Lattice mVision打造嵌入式視覺(jué)系統(tǒng)解決方案

    嵌入式視覺(jué)是嵌入式系統(tǒng)與機(jī)器視覺(jué)技術(shù)的集合,嵌入式視覺(jué)系統(tǒng)硬件集成攝像頭模組和處理板,將圖像捕獲和圖像處理功能結(jié)合在一臺(tái)設(shè)備中。
    的頭像 發(fā)表于 03-06 16:09 ?1085次閱讀

    嵌入式主板的概述與發(fā)展

    隨著科技的迅猛發(fā)展,嵌入式系統(tǒng)在現(xiàn)代電子產(chǎn)品中扮演著越來(lái)越重要的角色。嵌入式主板作為嵌入式系統(tǒng)的核心組件之一,承擔(dān)著控制、處理和通訊等多種功
    的頭像 發(fā)表于 01-13 16:30 ?1015次閱讀
    <b class='flag-5'>嵌入式</b>主板的概述與發(fā)展

    新手怎么學(xué)嵌入式?

    。但面對(duì)這個(gè)復(fù)雜的領(lǐng)域,很多人可能會(huì)感到迷茫,不知從何處入手。別擔(dān)心,本文將為你提供一些入門學(xué)習(xí)嵌入式技術(shù)的建議。 新手入門學(xué)習(xí)嵌入式技術(shù)的途徑 1. 了解基礎(chǔ)知識(shí) 首先,要對(duì)嵌入式系統(tǒng)
    發(fā)表于 12-12 10:51

    什么是嵌入式人工智能

    嵌入式人工智能是指將人工智能技術(shù)應(yīng)用于嵌入式系統(tǒng)中的一種技術(shù)。嵌入式系統(tǒng)嵌入到其他設(shè)備或
    的頭像 發(fā)表于 12-11 09:23 ?1336次閱讀
    什么是<b class='flag-5'>嵌入式</b>人工智能

    嵌入式系統(tǒng)開(kāi)發(fā)與硬件的關(guān)系 嵌入式系統(tǒng)開(kāi)發(fā)常見(jiàn)問(wèn)題解決

    嵌入式系統(tǒng)開(kāi)發(fā)與硬件的關(guān)系 嵌入式系統(tǒng)是專為特定應(yīng)用設(shè)計(jì)的計(jì)算機(jī)系統(tǒng),它們通常嵌入在所控制的設(shè)備
    的頭像 發(fā)表于 12-09 09:38 ?1307次閱讀

    mmc卡在嵌入式系統(tǒng)中的使用

    隨著科技的發(fā)展,嵌入式系統(tǒng)在我們的日常生活中扮演著越來(lái)越重要的角色。從智能手機(jī)到家用電器,再到工業(yè)控制系統(tǒng),嵌入式系統(tǒng)無(wú)處不在。存儲(chǔ)設(shè)備作為
    的頭像 發(fā)表于 11-25 09:58 ?1552次閱讀

    嵌入式超火的方向有哪些?

    目前,隨著全球物聯(lián)網(wǎng)設(shè)備的大量使用和ChatGpt等AI大模型的出現(xiàn),嵌入式系統(tǒng)市場(chǎng)目前呈現(xiàn)出快速發(fā)展的趨勢(shì),各種嵌入式系統(tǒng)被廣泛應(yīng)用于汽車、醫(yī)療、農(nóng)業(yè)、工業(yè)自動(dòng)化、安防監(jiān)控等領(lǐng)域。但
    發(fā)表于 11-21 15:49

    嵌入式系統(tǒng)與物聯(lián)網(wǎng)的結(jié)合

    隨著科技的飛速發(fā)展,嵌入式系統(tǒng)和物聯(lián)網(wǎng)(IoT)已經(jīng)成為現(xiàn)代技術(shù)領(lǐng)域的重要組成部分。嵌入式系統(tǒng)是指嵌入到設(shè)備或
    的頭像 發(fā)表于 11-06 10:23 ?1505次閱讀