91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

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

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

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

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

因此,本文的主旨是為使用Linux的嵌入式操作系統(tǒng)版本——μClinux,開始一個(gè)新的設(shè)計(jì)項(xiàng)目,該指南共分為五個(gè)步驟。為了說明該指南,本文介紹了在意法半導(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ì)都從選擇合適的工具開始。

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

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

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

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

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

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

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

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

●glibc是開源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í)間來編譯Linux源代碼并將其整合成最終映像(image)。幸運(yùn)的是,Buildroot(自動(dòng)生成交叉編譯工具的工具)會(huì)自動(dòng)完成構(gòu)建一個(gè)完整嵌入式系統(tǒng)的過程,并通過產(chǎn)生下述任一或所有任務(wù),簡(jiǎn)化了交叉編譯:

●交叉編譯工具鏈

●根文件系統(tǒng)

●內(nèi)核映像

●引導(dǎo)映像

對(duì)嵌入式系統(tǒng)設(shè)計(jì)師來說,還可以方便地使用一種工具(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所提供的幾無差別。對(duì)任何小或嵌入式系統(tǒng)來說,BusyBox提供的環(huán)境都是相當(dāng)完整的?!?/p>

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

BSP包括預(yù)先配置的工具,以及將操作系統(tǒng)加載到主板的引導(dǎo)加載程序。它還為內(nèi)核和器件驅(qū)動(dòng)器提供源代碼(見圖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)置閃存(無需外部存儲(chǔ)器),并在上電/復(fù)位后,執(zhí)行所有必需的初始化工作,包括設(shè)置串口和用于外部存儲(chǔ)器(RAM)訪問的存儲(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)過程的完成。

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

責(zé)任編輯:lq

聲明:本文內(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

    文章

    11772

    瀏覽量

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

    關(guān)注

    37

    文章

    7405

    瀏覽量

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

    關(guān)注

    1

    文章

    1672

    瀏覽量

    51704

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

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

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

    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 ?757次閱讀
    <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

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

    分享一個(gè)Linux音頻開發(fā)實(shí)用站:ALSA項(xiàng)目官網(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 ?483次閱讀
    分享一個(gè)<b class='flag-5'>Linux</b>音頻開發(fā)實(shí)用站:ALSA<b class='flag-5'>項(xiàng)目</b>官網(wǎng)使用指南

    晶科儲(chǔ)能進(jìn)一步擴(kuò)大英國(guó)儲(chǔ)能項(xiàng)目布局

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

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

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

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

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

    如何解決I/O時(shí)鐘布局器錯(cuò)誤

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

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

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

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

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

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

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

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

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

    【書籍評(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)目和頻繁變化的軟硬件需求的支持不足。隨著嵌入式開發(fā)
    發(fā)表于 05-21 10:00

    Linux常用命令大全

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

    Linux主要的性能有哪些?

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