chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

簡(jiǎn)化SBC的嵌入式Linux軟件開發(fā)

星星科技指導(dǎo)員 ? 來源:嵌入式計(jì)算設(shè)計(jì) ? 作者:Nathan Z. Gustavson, ? 2022-06-28 11:45 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

如今,大多數(shù)從大學(xué)畢業(yè)并獲得電氣工程或計(jì)算機(jī)科學(xué)學(xué)位的程序員都非常精通 Linux 桌面平臺(tái)上的編程。當(dāng)這些程序員需要跨越式地對(duì)嵌入式 Linux 系統(tǒng)進(jìn)行編程時(shí),他們常常會(huì)驚訝和困惑,他們?cè)谧烂嫔暇帉懙某绦驅(qū)o法運(yùn)行他們的 Linux 嵌入式系統(tǒng)

為了緩解這個(gè)問題,一些程序員選擇在嵌入式應(yīng)用程序中使用桌面系統(tǒng)版本。這通常不太適合,因?yàn)榕_(tái)式機(jī)系統(tǒng)通常具有風(fēng)扇和硬盤驅(qū)動(dòng)器,它們是故障點(diǎn)。更大的障礙是快速變化;擁有最快、最新技術(shù)的需求在短短六個(gè)月內(nèi)就淘汰了桌面系統(tǒng)。圍繞一個(gè)沒有壽命的平臺(tái)設(shè)計(jì)一個(gè)壽命長(zhǎng)的嵌入式產(chǎn)品是災(zāi)難的根源。

即使桌面平臺(tái)可以保證從現(xiàn)在起大約五年后,Linux 內(nèi)核和相關(guān)的發(fā)行版也是移動(dòng)的目標(biāo)。內(nèi)核和標(biāo)準(zhǔn)庫在不斷發(fā)展,發(fā)行版也在努力跟上步伐。內(nèi)核補(bǔ)丁和庫更新可能會(huì)使用戶的程序無法運(yùn)行。當(dāng)工程師由于安全漏洞或其他問題而需要更新開發(fā)機(jī)器時(shí),這種情況會(huì)更加嚴(yán)重。需要一種從標(biāo)準(zhǔn)桌面環(huán)境中抽象出嵌入式開發(fā)環(huán)境的方法。

關(guān)鍵不僅是要找到一個(gè)長(zhǎng)壽命的嵌入式Linux硬件平臺(tái),還要找到一個(gè)長(zhǎng)壽命的嵌入式Linux軟件平臺(tái)。熟練的嵌入式 Linux 程序員通??梢酝ㄟ^收集正確的庫和工具版本,并適當(dāng)?shù)匦薷?Makefile 來創(chuàng)建嵌入式開發(fā)平臺(tái)。即使成功,它也是一個(gè)次優(yōu)的開發(fā)環(huán)境。

理想情況下,編譯器不應(yīng)該依賴于其主機(jī)的庫和內(nèi)核,而是依賴于更靜態(tài)目標(biāo)的工具鏈。軟件平臺(tái)應(yīng)與其他平臺(tái)、其他操作系統(tǒng)(OS)和其他語言兼容。軟件開發(fā)工具包 (SDK) 應(yīng)該基于具有廣泛社區(qū)支持的工具鏈,以便即使驅(qū)動(dòng) SDK 的組織之一停止支持它,它也可以在其他組織的肩膀上生存。

進(jìn)入日食

Eclipse 是一個(gè)開源的、可再發(fā)行的、跨平臺(tái)的代碼開發(fā)框架。它本身就支持 Java 和 C/C++ 及其 CDT 插件。它提供了許多由商業(yè)集成開發(fā)環(huán)境 (IDE) 反復(fù)改造的相同功能(語法突出顯示、語言感知搜索、代碼完成等),但不依賴于任何特定的工具集來完成它(見圖1)。

圖 1:商業(yè)集成開發(fā)環(huán)境 (IDE) 反復(fù)改造的許多相同功能(語法突出顯示、語言感知搜索、代碼完成等)但不依賴于任何特定的一組完成它的工具

poYBAGK6eWuACZOaAARwCSx-aKI995.png

該解決方案的靈活性促使 EMAC 和其他嵌入式軟件公司在 Eclipse 環(huán)境中構(gòu)建開發(fā)平臺(tái)。這種商業(yè)采用為嵌入式代碼開發(fā)人員創(chuàng)造了事實(shí)上的標(biāo)準(zhǔn)化。OEM 可以編寫與 GNU 工具鏈一起使用的 Eclipse 插件和項(xiàng)目,同時(shí)提供與運(yùn)行 Windows 和 Linux 的眾多商業(yè)平臺(tái)的兼容性。

嵌入式 Java

EMAC 的原始 Eclipse 環(huán)境是為 SoM-400M 模塊開發(fā)的,使用 Dallas/Maxim 的 DS400 TINI 處理器。該處理器的固件包含專有的嵌入式 JRE。通過為普通 JRE 環(huán)境編譯類,用 TINI 特定 jar 替換核心 jar,然后將生成的類轉(zhuǎn)換為 TINI 可執(zhí)行文件來完成為系統(tǒng)構(gòu)建 Java 代碼。

為此,開發(fā)人員利用了 Eclipse 的原生 Ant 支持,它可以用來創(chuàng)建一種 XML 格式的高級(jí) Java Makefile。Ant 然后使用 Eclipse 的 JDTcompileradaptor 類構(gòu)建目標(biāo),這使得內(nèi)部編譯器可用于 Ant 的任務(wù)。Sourceforge TiniAnt 擴(kuò)展然后執(zhí)行從 Java 類到 TINI 可執(zhí)行文件的最終轉(zhuǎn)換。執(zhí)行此操作所需的所有復(fù)雜聲明都隱藏在頂級(jí) build.properties 文件中,從而極大地降低了將 SoM-400M 編譯為簡(jiǎn)單的標(biāo)準(zhǔn) Ant 任務(wù)的復(fù)雜性。

交叉編譯的 C

Eclipse 工具項(xiàng)目提供了一個(gè)開放的、可再發(fā)行的 C 開發(fā)插件,稱為 CDT。除其他外,它還提供:

語法高亮

代碼完成

即時(shí)構(gòu)建

調(diào)試器集成(使用 GDB 的 MI 接口

它不提供實(shí)際的編譯器、鏈接器和調(diào)試器二進(jìn)制文件。這些特定于正在構(gòu)建的目標(biāo),并且必須從外部源提供。然后可以通過編寫 Eclipse 插件將它們集成到 Eclipse 中,或者更簡(jiǎn)單地說,通過使用“標(biāo)準(zhǔn)”make 項(xiàng)目并在 Makefile 中指定編譯器。

清單 1 中的 Makefile 將在 EMAC Eclipse 環(huán)境中編譯一個(gè)簡(jiǎn)單的 Hello World 示例項(xiàng)目。

SDKBASE=。./。./

CROSS=$(SDKBASE)gcc-4.0.0-i486-D/bin/i486-linux-

CC=$(CROSS)gcc

LIBFLAGS =-lc

#VERBOSE=-v

CFLAGS= -g

OFLAGS=-Wl

TARGET=hello

CFILES=hello.c

all: $(TARGET)

$(TARGET): objects

$(CC) $(VERBOSE) *.o $(OFLAGS) $(SLIBS)-o $(TARGET) $(LIBFLAGS)

objects: $(CFILES)

$(CC) $(VERBOSE) $(CFLAGS) -c $(CFILES)

clean:

$(RM) *.o *.gdb $(TARGET)

TARGET_IP=192.168.0.1

LOGIN=someuser

PASSWORD=somepassword

upload

wput $(TARGET) ftp://$(LOGIN):$(PASSWORD)@$(TARGET_IP)/。./。./tmp/$(TARGET)

與嵌入式 Java 環(huán)境一樣,所有項(xiàng)目共有的復(fù)雜編譯器/鏈接器標(biāo)志隱藏在更高級(jí)別的文件中,然后包含在 SDK 中的所有 Makefile 中。

EMAC 通過針對(duì)目標(biāo)開發(fā)操作系統(tǒng)的庫構(gòu)建免費(fèi)可用的 GNU 交叉編譯器,為其所有板提供交叉編譯器。在 Linux 上,這些庫是原生的;在 Windows 上使用 Cygwin 庫。然后,我們“隱藏”實(shí)際的 Eclipse 可執(zhí)行文件并用一個(gè)批處理文件替換它,該批處理文件在 Eclipse 啟動(dòng)時(shí)臨時(shí)添加所需的路徑以支持 GNU 工具鏈。

調(diào)試

使用 GDB 和 GDBServer 進(jìn)行調(diào)試以促進(jìn)遠(yuǎn)程調(diào)試環(huán)境。為此,將編譯后的可執(zhí)行文件上傳到 SBC 并啟動(dòng) GDBServer 會(huì)話,偵聽特定端口或串行終端。Eclipse 調(diào)試透視圖允許用戶通過指定要使用的連接參數(shù)以及為目標(biāo)體系結(jié)構(gòu)構(gòu)建的 GDB 版本來調(diào)試應(yīng)用程序。

“通過一點(diǎn)點(diǎn)集成,OEM 可以為其開發(fā)板創(chuàng)建一個(gè)強(qiáng)大的跨平臺(tái)開發(fā)平臺(tái),該平臺(tái)將在許多商業(yè)軟件供應(yīng)商采用的同一平臺(tái)上運(yùn)行?!?/p>

Debugging 透視圖顯示要調(diào)試的程序的源代碼和生成的匯編代碼。易于管理和監(jiān)視斷點(diǎn)和變量,以及逐行單步執(zhí)行程序。源代碼中的當(dāng)前位置會(huì)自動(dòng)突出顯示。Eclipse 提供了一個(gè)圖形化的調(diào)試環(huán)境,極大地簡(jiǎn)化了遠(yuǎn)程目標(biāo)調(diào)試的過程。

目標(biāo)溝通

在為嵌入式環(huán)境進(jìn)行開發(fā)時(shí),需要通過串行終端程序或使用 Telnet、SSH 或其他類似連接通過 TCP 與目標(biāo)板建立連接。當(dāng)這是通過命令行界面或圖形前端完成時(shí),程序員被迫不斷地在窗口之間切換以同時(shí)監(jiān)視連接和 IDE。

EMAC 通過集成 Eclipse 插件消除了這個(gè)問題,這些插件允許 SSH、Telnet 和終端連接都在 Eclipse 中。這允許程序員監(jiān)控嵌入式目標(biāo)板,就像它是本地文件系統(tǒng)一樣,并直接發(fā)出命令,而無需離開 Eclipse 環(huán)境。

CVS

Eclipse 原生提供了強(qiáng)大的 CVS。通過設(shè)置 CVS 登錄并向客戶提供密碼,開發(fā)人員可以確保他們始終可以訪問最新版本的代碼和產(chǎn)品的錯(cuò)誤修復(fù)。

將 SDK 的軟件補(bǔ)丁和全新組件上傳到 CVS 服務(wù)器可為客戶提供最新的軟件支持,客戶可以以圖形方式查看文件中的差異,并使用已上傳的部分、全部或不修補(bǔ)自己的 SDK 。

文檔

Eclipse 提供了自己的本機(jī)瀏覽器,這有利于在工作區(qū)中創(chuàng)建 HTML 鏈接文檔。通過這種方式,客戶可以瀏覽 HTML 文檔(類似于 Doxygen 和 Javadoc 生成的文檔)。上下文相關(guān)的幫助也集成在 Eclipse 中(參見圖 2),使新用戶的工作效率更高。

圖 2:上下文相關(guān)的幫助也集成在 Eclipse 中

pYYBAGK6eXWARKK0AAe3UaB-E_8246.png

該文檔也可以直接鏈接回軟件開發(fā)人員的網(wǎng)站,從而允許動(dòng)態(tài)添加用戶文檔。用戶可以使用選項(xiàng)卡從代碼直接切換到文檔,而不是一次瀏覽多個(gè)窗口。

集成工具,更好的開發(fā)

Eclipse 提供了一個(gè)環(huán)境,讓 GNU 工具和商業(yè)工具可以一起發(fā)揮作用。只需稍加集成,OEM 就可以為其電路板創(chuàng)建一個(gè)強(qiáng)大的跨平臺(tái)開發(fā)平臺(tái),該平臺(tái)將在許多商業(yè)軟件供應(yīng)商采用的同一平臺(tái)上運(yùn)行。

在 Eclipse 框架內(nèi),EMAC 使用交叉編譯來緩解將嵌入式開發(fā)環(huán)境從標(biāo)準(zhǔn)桌面環(huán)境中抽象出來的問題。調(diào)試是使用帶有 Eclipse 窗口的 GDB 來完成的,用于調(diào)試器的輸入和輸出。與目標(biāo)的通信也通過 Telnet、FTP、終端和 SSH 插件集成到 Eclipse 中。CVS 版本控制和 HTML 文檔也是在 Eclipse 環(huán)境中完成的。

將上述所有開發(fā)功能整合到一個(gè)標(biāo)準(zhǔn) IDE 中,構(gòu)成了一個(gè)強(qiáng)大、高效的開發(fā)平臺(tái),可以與基于 Java 的小型 8 位控制器和用 C 編程的 32 位 Linux 服務(wù)器一起使用。

作者:Nathan Z. Gustavson,Eric Rossi

審核編輯:郭婷

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

    關(guān)注

    88

    文章

    11576

    瀏覽量

    216688
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    13

    文章

    10003

    瀏覽量

    90144
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    2992

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

    搶先體驗(yàn) SHEL 流程簡(jiǎn)化所有 AMD 嵌入式開發(fā)平臺(tái)上的軟件項(xiàng)目生成過程 Zephyr RTOS 兼容性已擴(kuò)展至第二代 AMD Versal AI Edge 系列、Kria SOM
    的頭像 發(fā)表于 08-20 09:15 ?3139次閱讀

    2025“芯原杯”全國嵌入式軟件開發(fā)大賽圓滿落幕

    此前,2025年7月20日至26日,第四屆“芯原杯”全國嵌入式軟件開發(fā)大賽決賽在??诔晒εe辦。
    的頭像 發(fā)表于 08-06 09:51 ?861次閱讀

    嵌入式軟件開發(fā)常用的軟件有哪些?

    對(duì)于初學(xué)嵌入式的朋友們,會(huì)想要了解嵌入式軟件開發(fā)常用的軟件有些,有什么用。那么看以下常用的軟件介紹。 1.Visual Studio Cod
    發(fā)表于 07-03 17:06

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

    區(qū)別 單片機(jī)嵌入式系統(tǒng)和Linux嵌入式系統(tǒng)是兩種不同的嵌入式系統(tǒng)開發(fā)方式,它們?cè)趹?yīng)用領(lǐng)域、開發(fā)
    發(fā)表于 06-20 09:46

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

    特定功能的計(jì)算機(jī)系統(tǒng),廣泛應(yīng)用于智能家居、工業(yè)控制、醫(yī)療設(shè)備、車載系統(tǒng)等領(lǐng)域。 2. 學(xué)習(xí)嵌入式開發(fā)的前置知識(shí)熟悉C語言編程掌握基本的數(shù)據(jù)結(jié)構(gòu)與算法了解數(shù)字電路與微控制器原理熟悉Linux操作系統(tǒng)
    發(fā)表于 05-15 09:29

    如何成為一名嵌入式軟件工程師?

    、Java等)和軟件開發(fā)工具,還需要對(duì)硬件的工作原理有深入的理解。 在團(tuán)隊(duì)中,嵌入式軟件工程師往往扮演著核心角色,他們的工作直接關(guān)系到產(chǎn)品的性能、穩(wěn)定性和用戶體驗(yàn)。 02掌握核心技能與知識(shí)
    發(fā)表于 04-15 14:37

    硬核升級(jí)!華清遠(yuǎn)見STM32MP157驅(qū)動(dòng)開發(fā)課程助力嵌入式Linux底層開發(fā)入門進(jìn)階

    嵌入式Linux系統(tǒng)開發(fā)中,驅(qū)動(dòng)程序開發(fā)是一項(xiàng)關(guān)鍵技術(shù),它作為硬件與軟件之間的橋梁,實(shí)現(xiàn)了操作系統(tǒng)對(duì)硬件設(shè)備的控制。相較于
    的頭像 發(fā)表于 04-03 16:40 ?613次閱讀
    硬核升級(jí)!華清遠(yuǎn)見STM32MP157驅(qū)動(dòng)<b class='flag-5'>開發(fā)</b>課程助力<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>底層<b class='flag-5'>開發(fā)</b>入門進(jìn)階

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

    內(nèi)容包括:嵌入式系統(tǒng)的介紹、嵌入式SoC硬件系統(tǒng)概論、嵌入式系統(tǒng)軟件開發(fā)。適用于產(chǎn)品主管、系統(tǒng)設(shè)計(jì)分析人員及欲進(jìn)入該領(lǐng)域的工程師。本資料詳細(xì)的理論講解,廣泛深入地分析相關(guān)的
    發(fā)表于 03-12 13:58

    IAR發(fā)布云端平臺(tái),助力現(xiàn)代嵌入式軟件開發(fā)團(tuán)隊(duì)

    該平臺(tái)為嵌入式軟件開發(fā)人員提供前所未有的自由度與靈活性,助力開發(fā)團(tuán)隊(duì)在工具選擇和日常工作流中實(shí)現(xiàn)更高效的協(xié)作與創(chuàng)新。
    的頭像 發(fā)表于 03-12 11:56 ?512次閱讀

    嵌入式軟件工程師就業(yè)好不好?

    、智能醫(yī)療設(shè)備等,都離不開嵌入式軟件的支持。預(yù)計(jì)2025年,物聯(lián)網(wǎng)設(shè)備的數(shù)量將呈爆發(fā)式增長(zhǎng),這將為嵌入式軟件開發(fā)工程師帶來大量的就業(yè)機(jī)會(huì)。 薪資待遇具有競(jìng)爭(zhēng)力 由于
    發(fā)表于 02-20 10:19

    打破技術(shù)壁壘!AWFlow讓嵌入式軟件開發(fā)觸手可及

    嵌入式軟件開發(fā)中,創(chuàng)意和技術(shù)創(chuàng)新常常難以融合。AWFlow通過其圖形化組態(tài)方法,利用拖拽節(jié)點(diǎn)構(gòu)建業(yè)務(wù)流程圖,幫助用戶實(shí)現(xiàn)奇思妙想。在嵌入式軟件開發(fā)中,創(chuàng)意和技術(shù)創(chuàng)新常常難以融合。一方
    的頭像 發(fā)表于 02-10 16:44 ?627次閱讀
    打破技術(shù)壁壘!AWFlow讓<b class='flag-5'>嵌入式</b><b class='flag-5'>軟件開發(fā)</b>觸手可及

    嵌入式機(jī)器學(xué)習(xí)的應(yīng)用特性與軟件開發(fā)環(huán)境

    設(shè)備和智能傳感器)上,這些設(shè)備通常具有有限的計(jì)算能力、存儲(chǔ)空間和功耗。本文將您介紹嵌入式機(jī)器學(xué)習(xí)的應(yīng)用特性,以及常見的機(jī)器學(xué)習(xí)開發(fā)軟件開發(fā)環(huán)境。 嵌入式機(jī)器學(xué)習(xí)的應(yīng)用特性與優(yōu)勢(shì) 由于
    的頭像 發(fā)表于 01-25 17:05 ?982次閱讀
    <b class='flag-5'>嵌入式</b>機(jī)器學(xué)習(xí)的應(yīng)用特性與<b class='flag-5'>軟件開發(fā)</b>環(huán)境

    嵌入式軟件開發(fā)符合ISO 26262 功能安全標(biāo)準(zhǔn)

    )的符合性呢?現(xiàn)在,您可以通過 “如何遵守 ISO 26262 標(biāo)準(zhǔn) ”白皮書在 ISO 26262 合規(guī)性方面搶占先機(jī)。了解如何以最佳方式加快嵌入式軟件開發(fā)符合
    發(fā)表于 01-15 12:04 ?3次下載

    一文了解嵌入式軟件開發(fā)的對(duì)象

    以前應(yīng)用場(chǎng)景很單一,嵌入式開發(fā)可能談不上面向?qū)ο?b class='flag-5'>開發(fā)。但現(xiàn)在,做嵌入式開發(fā),沒有面向?qū)ο?b class='flag-5'>開發(fā),你就有點(diǎn)落伍了。 本文結(jié)合個(gè)人經(jīng)驗(yàn)和周立功《抽象接口技術(shù)和組件
    的頭像 發(fā)表于 11-15 10:31 ?1141次閱讀
    一文了解<b class='flag-5'>嵌入式</b><b class='flag-5'>軟件開發(fā)</b>的對(duì)象

    【北京迅為】i.mx8mm嵌入式linux開發(fā)指南第四篇 嵌入式Linux系統(tǒng)移植篇第六十九章uboot移植

    【北京迅為】i.mx8mm嵌入式linux開發(fā)指南第四篇 嵌入式Linux系統(tǒng)移植篇第六十九章uboot移植
    的頭像 發(fā)表于 10-22 14:46 ?1411次閱讀
    【北京迅為】i.mx8mm<b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b><b class='flag-5'>開發(fā)</b>指南第四篇 <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>系統(tǒng)移植篇第六十九章uboot移植