日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

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

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

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

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

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

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

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

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

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

自我診斷API

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

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

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

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

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

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

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

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

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

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

審核編輯 黃宇

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

    關(guān)注

    5209

    文章

    20679

    瀏覽量

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

    關(guān)注

    41

    文章

    3831

    瀏覽量

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

    關(guān)注

    2

    文章

    2481

    瀏覽量

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

    關(guān)注

    7

    文章

    4085

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    MathWorks 加入 EDGE AI FOUNDATION,推進面向工程化系統(tǒng)嵌入式 AI 發(fā)展

    全新合作將支持工程師在 MATLAB 和 PyTorch 中構(gòu)建 AI 模型,將其集成到系統(tǒng)仿真中,并部署到嵌入式設(shè)備 MathWorks 近期宣布加入 EDGE AI FOUNDATION。該組織
    的頭像 發(fā)表于 04-17 15:46 ?153次閱讀

    知識分享-嵌入式系統(tǒng)可靠性模型

    嵌入式系統(tǒng)可靠性設(shè)計技術(shù)及案例解析1.3嵌入式系統(tǒng)可靠性模型嵌入式系統(tǒng)可靠性模型分為兩種:串聯(lián)結(jié)
    的頭像 發(fā)表于 03-11 16:43 ?414次閱讀
    知識分享-<b class='flag-5'>嵌入式</b><b class='flag-5'>系統(tǒng)</b>可靠性模型

    嵌入式系統(tǒng)安全設(shè)計原則

    隨著物聯(lián)網(wǎng)、工業(yè)控制和智能設(shè)備的普及,嵌入式系統(tǒng)的安全問題越來越突出。一個小小的漏洞,就可能導(dǎo)致設(shè)備被入侵、數(shù)據(jù)泄露,甚至對人身安全產(chǎn)生威脅。因此,從設(shè)計階段開始就考慮安全,是每一個嵌入式開發(fā)者必須
    的頭像 發(fā)表于 01-19 09:06 ?496次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系統(tǒng)</b>安全設(shè)計原則

    什么是嵌入式應(yīng)用開發(fā)?

    概述 所謂的嵌入式應(yīng)用開發(fā)就是在嵌入式操作系統(tǒng)下進行開發(fā)、軟硬件綜合開發(fā) ?嵌入式應(yīng)用開發(fā)?是指在嵌入式操作
    發(fā)表于 01-12 16:13

    嵌入式系統(tǒng)中的人工智能

    本文編譯ElectronicDesign人工智能(AI)正徹底變革嵌入式系統(tǒng),改變技術(shù)融入日常生活的方式。如今的人工智能不再局限于執(zhí)行基礎(chǔ)任務(wù),它還被應(yīng)用于智能汽車、工業(yè)自動化、醫(yī)療設(shè)備和智能家電
    的頭像 發(fā)表于 12-18 11:49 ?1226次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系統(tǒng)</b>中的人工智能

    系統(tǒng)嵌入式的學(xué)習(xí)路線

    嵌入式技術(shù)是各種電子產(chǎn)品的核心技術(shù),也是工業(yè)4.0、遠程醫(yī)療、3D打印等新興產(chǎn)業(yè)的核心技術(shù),具有廣闊的發(fā)展前景。很多計算機、電子信息類專業(yè)的學(xué)生都想把嵌入式開發(fā)作為自己的職業(yè)目標,但是因為嵌入式涉及
    發(fā)表于 12-16 07:49

    什么是嵌入式操作系統(tǒng)?

    要理解嵌入式操作系統(tǒng)(Embedded Operating System,簡稱 RTOS/EOS),我們可以從本質(zhì)定義→核心區(qū)別→實際作用→典型特征→嵌入式開發(fā)場景適配,五個維度來拆解, 一
    發(fā)表于 12-09 10:33

    一個面向單片機、事件驅(qū)動的嵌入式開發(fā)平臺介紹

    EventOS,是一個面向單片機、事件驅(qū)動的嵌入式開發(fā)平臺。它主要有兩大技術(shù)特色:一是事件驅(qū)動,二是超輕量。EventOS以及其母項目EventOS,目標是開發(fā)一個企業(yè)級的嵌入式開發(fā)平臺,以事件總線
    發(fā)表于 12-05 06:26

    嵌入式系統(tǒng)的定義和應(yīng)用領(lǐng)域

    嵌入式系統(tǒng),簡而言之,就是一種專為特定設(shè)備或裝置設(shè)計的計算機系統(tǒng)。它們通常配備一個嵌入式處理器,其控制程序被存儲在ROM中。這些系統(tǒng)在許多日
    發(fā)表于 11-17 06:49

    嵌入式實時操作系統(tǒng)的特點

    實時嵌入式操作系統(tǒng)(Real-Time Embedded Operating System)是專門設(shè)計用于嵌入式系統(tǒng)的實時操作系統(tǒng)。
    發(fā)表于 11-13 06:30

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

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

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

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

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

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

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

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

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

    隨著物聯(lián)網(wǎng)、智能硬件的發(fā)展,嵌入式開發(fā)成為熱門技能之一。以下將為初學(xué)者提供一份詳細的嵌入式開發(fā)入門指南,涵蓋學(xué)習(xí)路徑、必備工具、推薦資源等內(nèi)容。 1. 嵌入式系統(tǒng)的定義與應(yīng)用
    發(fā)表于 05-15 09:29
    鄄城县| 绩溪县| 湖北省| 北辰区| 湘乡市| 宜州市| 金溪县| 洛阳市| 临高县| 永春县| 大厂| 绵竹市| 平果县| 容城县| 鱼台县| 平山县| 齐齐哈尔市| 社旗县| 德惠市| 巩义市| 化州市| 绥江县| 乃东县| 新晃| 昂仁县| 伊春市| 海南省| 梁河县| 洛南县| 三原县| 双峰县| 肇庆市| 漳州市| 盘锦市| 承德县| 石屏县| 桂平市| 依安县| 盐源县| 利辛县| 噶尔县|