一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

Linux工具和項(xiàng)目布局

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

掃碼添加小助手

加入工程師交流群

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

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

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

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

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

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

步驟1:Linux工具和項(xiàng)目布局

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

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

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

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

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

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

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

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

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

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

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

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

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

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

●交叉編譯工具鏈

●根文件系統(tǒng)

●內(nèi)核映像

●引導(dǎo)映像

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

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

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

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

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

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

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

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

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

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

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

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

責(zé)任編輯:lq

聲明:本文內(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)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11511

    瀏覽量

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

    關(guān)注

    37

    文章

    7152

    瀏覽量

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

    關(guān)注

    1

    文章

    1662

    瀏覽量

    50220

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

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

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

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

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

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

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

    Linux常用命令大全

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

    Linux主要的性能有哪些?

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

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

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

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

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

    IAR正式加入Zephyr項(xiàng)目,成為銀牌會(huì)員

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

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

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

    cmp項(xiàng)目管理工具的優(yōu)缺點(diǎn)

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

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

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

    Kali Linux常用工具介紹

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

    freebsd和linux哪個(gè)好用

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

    Linux中查看IP地址的方法

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

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

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