99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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)致一些問題。

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

越來越多的OEM廠商發(fā)現(xiàn),避免上述兩個問題的最好方式,是使用基于開源、經(jīng)過驗證、可擴(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項目實現(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ù)庫。它實現(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)試器通常也是工具鏈的一部分,因為在目標(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)核入口點??蓧嚎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)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11511

    瀏覽量

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

    關(guān)注

    37

    文章

    7149

    瀏覽量

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

    關(guān)注

    1

    文章

    1662

    瀏覽量

    50210

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

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

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

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

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

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

    用的嵌入式 Linux 構(gòu)建工具之一是 Buildroot。盡管 Buildroot 能在較短時間內(nèi)提供簡單的嵌入式系統(tǒng),但它的局限性在于對復(fù)雜項目和頻繁變化的軟硬件需求的支持不足。隨著嵌入式開發(fā)
    發(fā)表于 05-21 10:00

    Linux常用命令大全

    Linux常用命令是指在Linux操作系統(tǒng)中廣泛使用的命令工具,這些命令工具可以完成各種不同的任務(wù),如管理文件和目錄、操作進(jìn)程、網(wǎng)絡(luò)通信、軟件安裝等。
    的頭像 發(fā)表于 05-03 18:08 ?1118次閱讀

    Linux主要的性能有哪些?

    都有確定的用途。它支持32位和64位硬件,能運(yùn)行主要的unix工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。linux繼承了unix以網(wǎng)絡(luò)為核心的設(shè)計思想,是一個性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。 Linux主要特性 1 永久免費
    的頭像 發(fā)表于 04-30 18:09 ?234次閱讀
    <b class='flag-5'>Linux</b>主要的性能有哪些?

    VirtualLab Fusion應(yīng)用:使用1D-1D EPE的光波導(dǎo)布局設(shè)計工具

    Fusion用Light Guide Toolbox Gold Edition為您提供了幾個系統(tǒng)的設(shè)計工具,幫助光學(xué)工程師以更可控的方式一步一步地解決設(shè)計過程。這些系統(tǒng)的設(shè)計工具涵蓋了器件的布局,以及耦合
    發(fā)表于 02-24 08:54

    VirtualLab Fusion應(yīng)用:光導(dǎo)布局設(shè)計工具

    ,將任務(wù)分解成一個受控的、循序漸進(jìn)的過程。在這個用例中,我們演示了布局設(shè)計工具根據(jù)用戶的規(guī)格自動生成“Hololens 1”類型(線性光柵下的1D-1D孔徑擴(kuò)張)系統(tǒng)的功能。 打開AR&
    發(fā)表于 02-21 08:46

    IAR正式加入Zephyr項目,成為銀牌會員

    全球領(lǐng)先的嵌入式系統(tǒng)開發(fā)軟件解決方案供應(yīng)商IAR,近日宣布正式加入由Linux基金會托管的Zephyr項目,并榮膺銀牌會員身份。這一舉措標(biāo)志著IAR在嵌入式行業(yè)的又一重要布局,展現(xiàn)了其對開源社區(qū)
    的頭像 發(fā)表于 02-12 14:25 ?579次閱讀

    EE-306:PGO linker-面向Blackfin處理器的代碼布局工具

    電子發(fā)燒友網(wǎng)站提供《EE-306:PGO linker-面向Blackfin處理器的代碼布局工具.pdf》資料免費下載
    發(fā)表于 01-05 09:43 ?0次下載
    EE-306:PGO linker-面向Blackfin處理器的代碼<b class='flag-5'>布局</b><b class='flag-5'>工具</b>

    cmp項目管理工具的優(yōu)缺點

    CMP項目管理工具,在不同的語境下有不同的含義。一種是指綜合項目管理平臺(Comprehensive Management Platform),它旨在整合和優(yōu)化項目的各個方面,包括時間
    的頭像 發(fā)表于 12-17 09:42 ?813次閱讀

    【畢設(shè)項目參考】嵌入式Linux 10+項目推薦,附項目文檔/源碼/視頻

    又是一年畢設(shè)季,針對即將開始畢業(yè)設(shè)計的大學(xué)生,我們匯總了10+嵌入式linux項目,供同學(xué)們參考。這些項目覆蓋了多個領(lǐng)域,希望可以為同學(xué)們提供豐富的靈感來源。我們鼓勵同學(xué)們根據(jù)自己的興趣和專業(yè)方向
    的頭像 發(fā)表于 11-19 15:21 ?1185次閱讀
    【畢設(shè)<b class='flag-5'>項目</b>參考】嵌入式<b class='flag-5'>Linux</b> 10+<b class='flag-5'>項目</b>推薦,附<b class='flag-5'>項目</b>文檔/源碼/視頻

    Kali Linux常用工具介紹

    Kali Linux 虛擬機(jī)中自帶了大量滲透測試工具,涵蓋了信息收集、漏洞利用、口令破解、漏洞掃描等多個方面。 以下是按分類簡要介紹一部分常用工具的使用方法: 使用方法只能當(dāng)做參考,**詳細(xì)
    的頭像 發(fā)表于 11-11 09:29 ?1602次閱讀

    freebsd和linux哪個好用

    操作系統(tǒng)歷史和起源: FreeBSD和Linux都是基于UNIX的操作系統(tǒng)。FreeBSD起源于加州大學(xué)伯克利分校的BSD項目,而Linux則是由Linus Torvalds在1991年創(chuàng)建
    的頭像 發(fā)表于 08-08 10:29 ?1017次閱讀

    Linux中查看IP地址的方法

    ifconfig是一個網(wǎng)絡(luò)管理工具,用于配置、控制和查詢網(wǎng)絡(luò)接口。在許多舊的Linux發(fā)行版中,ifconfig是查看和配置網(wǎng)絡(luò)接口的主要工具
    的頭像 發(fā)表于 08-07 15:16 ?9315次閱讀
    在<b class='flag-5'>Linux</b>中查看IP地址的方法

    聚焦嵌入式開發(fā)中的合規(guī)性工具項目管理工具、版本迭代工具應(yīng)用

    ,就嵌入式開發(fā)與管理領(lǐng)域的最新趨勢、工具選擇以及DevSecOps實踐應(yīng)用等方面展開了深入探討。 本期對話龍智資深DevSecOps顧問徐晨暉, 分享嵌入式開發(fā)中的合規(guī)性工具項目管理和版本管理的
    的頭像 發(fā)表于 07-29 15:15 ?1083次閱讀