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

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

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

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

Linux工具和項目布局

Q4MP_gh_c472c21 ? 來源:嵌入式ARM ? 作者:嵌入式ARM ? 2020-10-12 17:35 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

微控制器制造商的開發(fā)板,以及他們與開發(fā)板一起提供的軟件項目例程,在工程師著手一個新設(shè)計時可以提供很大幫助。但在設(shè)計項目完成其早期階段后,進(jìn)一步設(shè)計時,制造商提供的軟件也可能會導(dǎo)致一些問題。

使用實(shí)時操作系統(tǒng)作為應(yīng)用程序代碼平臺的設(shè)計還面臨著許多挑戰(zhàn),比如如何將功能分配給不同的并行任務(wù)、如何設(shè)計高可靠的進(jìn)程間通信、以及如何在硬件上測試整個軟件包等問題。

越來越多的OEM廠商發(fā)現(xiàn),避免上述兩個問題的最好方式,是使用基于開源、經(jīng)過驗(yàn)證、可擴(kuò)展、可運(yùn)行在不同硬件平臺的操作系統(tǒng)Linux開始新的設(shè)計。就已經(jīng)被移植到各種計算機(jī)硬件平臺的操作系統(tǒng)的數(shù)量來說,Linux首屈一指。

Linux的衍生版本已運(yùn)行在非常廣泛的嵌入式系統(tǒng)中,包括:網(wǎng)絡(luò)路由器、移動電話、建筑自動化控制、電視機(jī)和視頻游戲控制臺。

雖然Linux被成功使用,但并不意味著它很容易使用。Linux包含的代碼超過一百萬行,其運(yùn)作帶有鮮明的Linux方法論味道,初學(xué)者可能難以迅速掌握。

因此,本文的主旨是為使用Linux的嵌入式操作系統(tǒng)版本——μClinux,開始一個新的設(shè)計項目,該指南共分為五個步驟。為了說明該指南,本文介紹了在意法半導(dǎo)體STM32F429微控制器(ARMCortex-M4內(nèi)核,最高180MHz)上的一個μClinux項目實(shí)現(xiàn),使用了Emcraft 的STM32F429DiscoveryLinux板支持包(BSP)。

步驟1:Linux工具和項目布局

每個嵌入式軟件設(shè)計都從選擇合適的工具開始。

工具鏈?zhǔn)且唤M連接(或鏈接)在一起的軟件開發(fā)工具,它包含諸如GNU編譯器集合(GCC)、binutils(一組包括連接器、匯編器和其它用于目標(biāo)文件和檔案工具的開發(fā)工具)和glibc(提供系統(tǒng)調(diào)用和基本函數(shù)的C函數(shù)庫)等組件;在某些情況下,還可能包括編譯器和調(diào)試器等其它工具。

用于嵌入式開發(fā)的工具鏈?zhǔn)且粋€交叉工具鏈,更常見的叫法是交叉編譯器。

GNUBinutils是嵌入式Linux工具鏈的第一個組件。GNUBinutils包含兩款重要工具:

●“as”,匯編器,將匯編代碼(GCC所生成)轉(zhuǎn)換成二進(jìn)制代碼

●“l(fā)d”,連接器,將離散目標(biāo)代碼段連接到庫或形成可執(zhí)行文件

編譯器是工具鏈的第二個重要組成部分。在嵌入式Linux,它被稱為GCC,支持許多種微控制器和處理器架構(gòu)。

接下來是C函數(shù)庫。它實(shí)現(xiàn)Linux的傳統(tǒng)POSIX應(yīng)用編程接口(API),該API可被用來開發(fā)用戶空間應(yīng)用。它通過系統(tǒng)調(diào)用與內(nèi)核對接,并提供高階服務(wù)。

工程師有幾種C函數(shù)庫選擇:

●glibc是開源GNU項目提供的可用C函數(shù)庫。該庫是全功能、可移植的,它符合Linux標(biāo)準(zhǔn)。

●嵌入式GLIBC(EGLIBC)是一款針對嵌入式系統(tǒng)優(yōu)化的衍生版。其代碼是精簡的,支持交叉編譯和交叉測試,其源代碼和二進(jìn)制代碼與GLIBC的兼容。

●uClibc是另一款C函數(shù)庫,可在閃存空間有限、和/或內(nèi)存占用必須最小的情況下使用。

調(diào)試器通常也是工具鏈的一部分,因?yàn)樵谀繕?biāo)機(jī)上調(diào)試應(yīng)用程序運(yùn)行時,需要一個交叉調(diào)試器。在嵌入式Linux領(lǐng)域,GDB是常用調(diào)試器。

上述工具是如此地不可或缺,但當(dāng)它們各自為戰(zhàn)時,會花太長時間來編譯Linux源代碼并將其整合成最終映像(image)。幸運(yùn)的是,Buildroot(自動生成交叉編譯工具的工具)會自動完成構(gòu)建一個完整嵌入式系統(tǒng)的過程,并通過產(chǎn)生下述任一或所有任務(wù),簡化了交叉編譯:

●交叉編譯工具鏈

●根文件系統(tǒng)

●內(nèi)核映像

●引導(dǎo)映像

對嵌入式系統(tǒng)設(shè)計師來說,還可以方便地使用一種工具(utility)聚合工具,如BusyBox,這種工具將通常最需要的工具整合在一起。根據(jù) BusyBox的信息頁面介紹,“它將許多常用UNIX工具的微型版本整合成一個小的可執(zhí)行文件。它提供了對大多數(shù)你通常會在GNUfileutils和 shellutils等工具中看到的工具的替代。BusyBox里的工具通常比其全功能GNU對應(yīng)版本的選擇少;但所包含選項所提供的預(yù)期功能和行為則與對應(yīng)的GNU所提供的幾無差別。對任何小或嵌入式系統(tǒng)來說,BusyBox提供的環(huán)境都是相當(dāng)完整的?!?/p>

最后一個重要工具是一款BSP,是為搭載了項目目標(biāo)MCU或處理器的主板專門做的。

BSP包括預(yù)先配置的工具,以及將操作系統(tǒng)加載到主板的引導(dǎo)加載程序。它還為內(nèi)核和器件驅(qū)動器提供源代碼(見圖1)。

步驟2:引導(dǎo)序列、時鐘系統(tǒng)、存儲器和串行接口

典型的嵌入式Linux啟動順序執(zhí)行如下:

1)引導(dǎo)加載程序固件(示例項目里的U-Boot)運(yùn)行于目標(biāo)MCU內(nèi)置閃存(無需外部存儲器),并在上電/復(fù)位后,執(zhí)行所有必需的初始化工作,包括設(shè)置串口和用于外部存儲器(RAM)訪問的存儲器控制器。

2)U-Boot可將Linux映像從外部Flash轉(zhuǎn)移到外部RAM,并將控制交接到RAM中的內(nèi)核入口點(diǎn)??蓧嚎sLinux映像以節(jié)省閃存空間,代價是在啟動時要付出解壓縮時間。

3)Linux進(jìn)行引導(dǎo)并安裝基于RAM的文件系統(tǒng)(initramfs)作為根文件系統(tǒng)。在項目構(gòu)建時,Initramfs被填充以所需的文件和目錄,然后被簡單地鏈接到內(nèi)核。

4)在Linux內(nèi)核下,執(zhí)行/sbin/init。/sbin/init程序按照/etc/inittab中配置文件的描述對系統(tǒng)進(jìn)行初始化。

5)一旦初始化進(jìn)程完成運(yùn)行級執(zhí)行和/sbin/init里的命令,它會啟動一個登錄進(jìn)程。

6)殼初始化文件/etc/profile的執(zhí)行,標(biāo)志著啟動過程的完成。

通過使能就地執(zhí)行(ExecuteInPlace——XIP)可以顯著縮短啟動時間、提升整體性能,XIP是從閃存執(zhí)行代碼的方法。通常,Linux代碼是從閃存加載到外部存儲器,然后從外部存儲器執(zhí)行。通過從閃存執(zhí)行,因不再需復(fù)制這步,從而只需較少的存儲器,且只讀存儲器不再占程序空間。

責(zé)任編輯:lq

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

    關(guān)注

    88

    文章

    11831

    瀏覽量

    219668
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    7446

    瀏覽量

    129657
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1673

    瀏覽量

    52011

原文標(biāo)題:嵌入式項目使用Linux必會的技巧!

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

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

    Linux進(jìn)程管理不用愁!這6個工具幫你搞定90%場景

    Linux 系統(tǒng)中,進(jìn)程是資源分配的基本單位,無論是服務(wù)器運(yùn)維、程序調(diào)試還是日常使用,掌握進(jìn)程管理工具都是必備技能。今天就帶大家梳理 6 個最常用的進(jìn)程管理工具,從查看進(jìn)程到控制進(jìn)程,一篇文章全搞定!
    的頭像 發(fā)表于 02-04 16:23 ?3162次閱讀
    <b class='flag-5'>Linux</b>進(jìn)程管理不用愁!這6個<b class='flag-5'>工具</b>幫你搞定90%場景

    Linux進(jìn)程樹分析工具pstree詳解與實(shí)戰(zhàn)指南(另一視角優(yōu)化Linux系統(tǒng))

    Linux 系統(tǒng)開發(fā)與運(yùn)維中,理解進(jìn)程的運(yùn)行狀態(tài)和相互關(guān)系是排查問題、優(yōu)化性能的基礎(chǔ)。pstree 作為一款輕量高效的進(jìn)程樹可視化工具,能直觀展示系統(tǒng)中所有進(jìn)程的父子關(guān)系,為系統(tǒng)分析提供關(guān)鍵線索。本文將從基礎(chǔ)用法到實(shí)戰(zhàn)優(yōu)化,全面講解如何利用pstree 掌握系統(tǒng)運(yùn)行狀
    的頭像 發(fā)表于 02-04 16:21 ?929次閱讀
    <b class='flag-5'>Linux</b>進(jìn)程樹分析<b class='flag-5'>工具</b>pstree詳解與實(shí)戰(zhàn)指南(另一視角優(yōu)化<b class='flag-5'>Linux</b>系統(tǒng))

    Linux系統(tǒng)性能調(diào)試工具—strace

    今天給大家分享一個linux內(nèi)核自帶的調(diào)試工具,該工具可用于查看和定位系統(tǒng)問題,進(jìn)程運(yùn)行過程探索,進(jìn)行進(jìn)程監(jiān)控,對每個系統(tǒng)調(diào)用都可以監(jiān)測,有助于我們優(yōu)化系統(tǒng)性能。
    的頭像 發(fā)表于 01-30 17:03 ?2073次閱讀
    <b class='flag-5'>Linux</b>系統(tǒng)性能調(diào)試<b class='flag-5'>工具</b>—strace

    分享一個Linux音頻開發(fā)實(shí)用站:ALSA項目官網(wǎng)使用指南

    經(jīng)常和Linux音頻打交道的朋友,大概率聽過ALSA(Advanced Linux Sound Architecture),它是Linux系統(tǒng)里負(fù)責(zé)音頻和MIDI功能的基礎(chǔ)架構(gòu),日常用的很多音頻相關(guān)
    的頭像 發(fā)表于 12-10 07:03 ?860次閱讀
    分享一個<b class='flag-5'>Linux</b>音頻開發(fā)實(shí)用站:ALSA<b class='flag-5'>項目</b>官網(wǎng)使用指南

    晶科儲能進(jìn)一步擴(kuò)大英國儲能項目布局

    晶科儲能近日宣布進(jìn)一步擴(kuò)大其在英國的項目布局,新增加一套140MWh的電網(wǎng)級儲能系統(tǒng)。首期的140MWh項目正在交付過程中,兩期項目合計容量達(dá)到280MWh,成為英國規(guī)模最大的電池儲能
    的頭像 發(fā)表于 12-09 15:19 ?899次閱讀

    開源 | 60余套STM32單片機(jī)、嵌入式Linux、物聯(lián)網(wǎng)、人工智能項目(開發(fā)板+教程+源碼)

    嵌入式實(shí)戰(zhàn)項目推薦15個嵌入式Linux+Qt綜合應(yīng)用項目,涉及家居、醫(yī)療、農(nóng)業(yè)等多種應(yīng)用領(lǐng)域,案例中使用了嵌入式、物聯(lián)網(wǎng)、人工智能多技術(shù),包括Linux應(yīng)用開發(fā)、Q
    的頭像 發(fā)表于 12-04 11:42 ?1014次閱讀
    開源 | 60余套STM32單片機(jī)、嵌入式<b class='flag-5'>Linux</b>、物聯(lián)網(wǎng)、人工智能<b class='flag-5'>項目</b>(開發(fā)板+教程+源碼)

    智多晶EDA工具HqFpga軟件的主要重大進(jìn)展

    智多晶EDA工具HqFpga(簡稱HQ),是自主研發(fā)的一款系統(tǒng)級的設(shè)計套件,集成了Hqui主界面、工程界面、以及內(nèi)嵌的HqInsight調(diào)試工具、IP Creator IP生成工具、布局
    的頭像 發(fā)表于 11-08 10:15 ?4044次閱讀
    智多晶EDA<b class='flag-5'>工具</b>HqFpga軟件的主要重大進(jìn)展

    gcc工具鏈無法匯編硬件浮點(diǎn)指令fsqrt問題

    團(tuán)隊在項目推進(jìn)過程中發(fā)現(xiàn),Linux環(huán)境下,math庫中的sqrt()函數(shù)無論是在浮點(diǎn)數(shù)的gcc工具鏈中還是整數(shù)的gcc工具鏈中,綜合的結(jié)果都是以整數(shù)指令來模擬。 若果想要進(jìn)一步地節(jié)
    發(fā)表于 10-20 06:19

    如何解決I/O時鐘布局器錯誤

    在 I/O 時鐘布局器階段可能會發(fā)生錯誤,指出該工具無法對該時鐘結(jié)構(gòu)進(jìn)行布局,直至最后 BUFG 仍然無法完成布局。
    的頭像 發(fā)表于 09-23 16:05 ?1362次閱讀

    Keil 項目在構(gòu)建目標(biāo) software 時,F(xiàn)CARM 工具報錯

    使用工具搜索問題,Keil 項目 在構(gòu)建目標(biāo) software 時,F(xiàn)CARM 工具報錯,搜索是未指定輸出文件名。 根據(jù)網(wǎng)上提供的解決辦法,在魔法棒OUTPUT中點(diǎn)擊Create HEX File
    發(fā)表于 08-27 10:12

    如何選擇適合自己項目的通信協(xié)議評估工具?

    LZ-DZ200電能質(zhì)量在線監(jiān)測裝置 選擇適合項目的通信協(xié)議評估工具,核心是 對齊項目需求與工具能力 ,避免 “過度選型”(用高端工具測簡單
    的頭像 發(fā)表于 08-27 09:19 ?964次閱讀
    如何選擇適合自己<b class='flag-5'>項目</b>的通信協(xié)議評估<b class='flag-5'>工具</b>?

    【「Yocto項目實(shí)戰(zhàn)教程:高效定制嵌入式Linux系統(tǒng)」閱讀體驗(yàn)】+基礎(chǔ)概念學(xué)習(xí)理解

    軟件包的依賴關(guān)系、編譯選項、配置參數(shù)等。掌握元數(shù)據(jù)的使用方法對于定制和優(yōu)化嵌入式 Linux 系統(tǒng)至關(guān)重要。 BitBake BitBake 是 Yocto 項目的構(gòu)建工具。通過學(xué)習(xí)這部分內(nèi)容,我深入
    發(fā)表于 08-04 22:29

    項目捷報 冠捷科技泰國工廠THA MES項目成功驗(yàn)收!TPV國際化布局再添里程碑!

    盤古信息與冠捷科技(TPV)攜手打造的泰國工廠MES項目(THA MES項目)圓滿通過驗(yàn)收。這不僅標(biāo)志著TPV在全球數(shù)字化制造布局中取得重大突破,更成為盤古信息賦能其“兩國五城七期”數(shù)字化全球化
    的頭像 發(fā)表于 07-11 17:49 ?1434次閱讀
    <b class='flag-5'>項目</b>捷報  冠捷科技泰國工廠THA MES<b class='flag-5'>項目</b>成功驗(yàn)收!TPV國際化<b class='flag-5'>布局</b>再添里程碑!

    HarmonyOS NEXT應(yīng)用元服務(wù)布局合理使用布局組件

    ,可能帶來更多的性能消耗。 我們通過對不同的布局方式,設(shè)置對應(yīng)容器相同的嵌套深度為5、總元素節(jié)點(diǎn)為20個Text的情況下,來對比其性能消耗。通過Profiler工具獲取其首幀繪制時間進(jìn)行對比。對比結(jié)果
    發(fā)表于 06-20 15:48

    【書籍評測活動NO.61】Yocto項目實(shí)戰(zhàn)教程:高效定制嵌入式Linux系統(tǒng)

    用的嵌入式 Linux 構(gòu)建工具之一是 Buildroot。盡管 Buildroot 能在較短時間內(nèi)提供簡單的嵌入式系統(tǒng),但它的局限性在于對復(fù)雜項目和頻繁變化的軟硬件需求的支持不足。隨著嵌入式開發(fā)
    發(fā)表于 05-21 10:00
    竹山县| 鹤山市| 泸定县| 龙江县| 贡觉县| 普定县| 定结县| 城市| 乡宁县| 河曲县| 五家渠市| 房山区| 梧州市| 丘北县| 武邑县| 曲阳县| 运城市| 临猗县| 安达市| 信丰县| 铜陵市| 沈丘县| 宜都市| 南乐县| 上饶县| 庆云县| 东宁县| 体育| 东方市| 昌宁县| 吉安市| 阿拉善盟| 顺义区| 凤翔县| 余江县| 清丰县| 罗平县| 肃南| 锦州市| 崇仁县| 炉霍县|