當前位置:首頁 » 操作系統 » 嵌入式linux的命令

嵌入式linux的命令

發布時間: 2022-05-15 20:44:43

① 嵌入式linux應用程序通常用什麼編譯器編譯

Linux有一系列功能強大的編譯器:vi、emace是屏幕互動式編譯器,GNU CC是GNU項目中符合ANSI C標準的編譯系統。

vi命令是Linux下全屏幕文本編輯,雖然這個編譯器特簡陋,對於初學者來說不是很友好,但是在Linux中vi的作用非常大。

主要的三種模式:命令模式、輸入模式、末行模式。

掌握這三種模式十分重要:

命令模式:vi啟動後默認進入的是命令模式,從這個模式使用命令可以切換到另外兩種模式,同時無論在任何模式下只要按一下[Esc]鍵都可以返回命令模式。在命令模式中輸入字幕「i」就可以進入vi的輸入模式編輯文件。

輸入模式:在這個模式中我們可以編輯、修改、輸入等編輯工作,在編輯器最後一行顯示一個「--INSERT--」標志著vi進入了輸入模式。當我們完成修改輸入等操作的時候我們需要保存文件,這時我們需要先返回命令模式,在進入末行模式保存。

末行模式:在命令模式輸入「:」即可進入該模式,在末行模式中有好多好用的命令。

vim是vi編輯器的改進版本,在vi編譯的基礎上擴展了很多實用的功能。

至於vi/vim的命令就不給大家介紹了,我們在日常實際的使用之中隨著積累都會掌握。

② 學嵌入式linux需要先學什麼

韋東山:6000字長文告訴你如何學習嵌入式linux

鏈接:網頁鏈接

第1章 單片機和Linux的區別

1.1 有哪些產品使用單片機或Linux

所有的電子產品,所用技術都可以認為要麼是單片機,要麼是Linux;GUI方面主要是QT/Android,它們都是運行於Linux之上的。

下面我們用類比和邏輯推導出嵌入式Linux系統的組成,沒錯,「推導」。

從上圖可以知道:

① 組成:

嵌入式Linux系統

= bootloader + linux內核 + 根文件系統(裡面含有APP)。

② bootloader:

它的目的是啟動內核,去哪等讀內核?讀到哪裡?去Flash等外設讀內核,存到內存里去。所以需要有Flash里外設的驅動能力,為了調試方便還會有網路功能。

所以,可以認為 booloader = 裸機集合,它就是一個復雜的單片機程序。

③ Linux內核

Linux內核的最主要目的是去啟動APP,APP保存在哪裡?保存在「根文件系統」里。「根文件系統」又保存在哪裡?在Flash、SD卡等設備里,甚至可能在網路上。所以Linux內核要有這些Flash、SD卡里設備的驅動能力。

不僅如此,Linux內核還有進程調度能力、內存管理等功能。

所以:Linux內核 = 驅動集合 + 進程調度 + 內存管理等。

2.3 要學習bootloader嗎

Bootloader有很多種,常用的叫作u-boot。

在實際工作中,對於u-boot基本上是修修改改,甚至不改。但是u-boot本身是很復雜的,比如為了便於調試,它支持網路功能;有些內核是保存在FAT32分區里,於是它要能解析FAT32分區,讀FAT32分區的文件。

花那麼多精力去學習u-boot,但是工作中基本用不到,這對初學者很不友善。

所以,對於初學者,我建議:理解u-boot的作用、會使用u-boot的命令,這就可以了。

如果你的工作就是修改、完善bootloader,那麼再去研究它吧。

2.4 要學習Linux內核、要學習驅動程序嗎

之前我們說過Linux內核 = 驅動集合 + 進程調度 + 內存管理等,如果要學習Linux內核,從驅動程序入手是一個好辦法。

但是人人都要學習Linux內核、人人都要學習Linux驅動嗎?顯然不是。

作為初學者,懂幾個簡單的驅動程序,有利於工作交流;理解中斷、進程、線程的概念,無論是對驅動開發、應用程序開發,都是很有好處的。

所以對於初學者,建議前期只學習這幾個驅動:LED、按鍵、中斷。

① LED驅動程序:

這是最簡單的驅動程序。

② 按鍵驅動程序:

它也比較簡單,從它引入「中斷」。

③ 中斷:

從「中斷」它可以引入:休眠-喚醒、進程/線程、POLL機制、非同步通知等概念。這些概念無論是對驅動開發,還是對應用開發,都很重要。

所以,對於初學者,我建議必須學習這幾個驅動:LED、按鍵、中斷。

入門之後,如果你想從事內核開發、驅動開發,那麼可以去鑽研幾個驅動程序(輸入系統、I2C匯流排、SPI匯流排等),掌握若干個大型驅動程序後,你對內核的套路就有所了解了,再去研究其他部分(比如進程管理、文件系統)時你會發現套路是如此通用。

攝像頭(VL42)、音效卡ALSA驅動是Linux中比較復雜的2類驅動,它們是很難的,如果工作與此相關再去研究。


2.5,要學習Linux應用程序嗎?先學一些基礎技能

要學,即使以後你只想研究內核,一些基本的應用開發編寫能力也是需要的:

① 基本設備的訪問,比如LCD、輸入設備

② 進程、線程、進程通信、線程同步與互斥

③ 休眠-喚醒、POLL機制、信號

④ 網路編程

①②③部分的知識,跟驅動有密切的關系,它們是相輔相承的。

掌握了基本驅動開發能力、基本應用開發能力之後,在工作中你就可以跟別人友好溝通了,不至於一臉懵逼。


2.6,應用程序是怎麼啟動的?要了解一下根文件系統

你辛辛苦苦寫出了應用程序,怎麼把它放到板子上,讓它開機就自動啟動?

你寫的程序,它依賴於哪些庫,這些庫放到板子上哪個目錄?

怎麼做一個可升級的系統?即使升級中途斷電了,也要保證程序至少還可以運行老的版本?

這些都需要我們了解一下根文件系統。

先了解一下init進程:它要讀取配置文件,根據配置文件啟動各個APP。

了解了init進程,你就了解了根文件系統的組成,就可以隨心所欲裁剪系統,為你的項目製作出最精簡的系統。

第3章 學習方法

3.1,先不要打破砂鍋問到底

嵌入式涉及的東西太多太雜了,如果心裡沒有主線,碰到什麼都要去研究個透徹,最終反而忘記自己要學什麼了。

嵌入式涉及硬體知識、軟體知識,軟體里涉及匯編、ARM架構、C語言、Makefile、Shell;又分為bootloader、內核、驅動、基本的APP、GUI。

比如我們會用到Makefile,了解它的基本規則,會用我們提供的Makefile就可以。

不需要深入研究那些make函數,因為在工作中都有現成的Makefile給你使用,不需要自己去編寫一套Makefile。何必花上好幾天去深入研究它呢?

比如我們會用到bootloader,難道又要花上幾個月來深入研究u-boot嗎?工作中基本不需要改u-boot,會用那幾個命令就可以。

甚至有些學員先去買本shell的書來學習shell命令,何必?我們在視頻中用到什麼命令,你不懂時再去網路一下這些命令就可以了。

不要脫離初學者的主線:應用基礎、驅動基礎。有了這2個基礎後,你想深入研究某部分時,再去花時間吧。

3.2,思路要清晰,不怕抄代碼

視頻里的代碼,請你一定要自己去寫一次、寫多次。為什麼我現在寫驅動那麼熟?我2009年在華清遠見上課時,

每次上課我都要給學生寫一次那些驅動,十幾次下來閉著眼睛都知道內核的套路了。

記不住那些函數?我也記不住,我都是去參考同類的驅動程序,這又不是閉卷考試。

但是要理清楚思路,你寫這個程序要完成什麼功能、怎麼實現這些功能?這個要弄清楚。

有了思路後再寫代碼,不知道怎麼寫?沒關系,看看視頻,看看示例,然後關閉視頻看看能否自己寫出來。

3.3,對自己的方向很了解,我只能帶你到這里了

我的專長是操作系統,是快速地帶領大家掌握一些項目開發的基礎知識。

如果你決定深入研究某方面時,我並不能帶你多久。你要去看源碼,去看這方面的專業書籍。

比如想深入鑽研內核的內存管理時,它有頁表映射(你需要閱讀ARM架構的手冊)、SLAB分配器、vmalloc/malloc實現、mmap實現、缺頁中斷、父進程子進程之間的頁面管理等等,內容非常多。有時候連書籍都沒有,你需要直接啃代碼。

當你想從事某個行業時,就需要深入研究行業相關的知識。

比如CAN匯流排,它可以寫成一本書:CAN協議、CAN報文、Socket CAN、車身網路拓撲結構,CAN應用報文,CAN網路管理報文,CAN診斷報文。

想做物聯網網關,需要深入研究MQTT,MQTT協議相對簡單,但是MQTT英文原版協議有130多頁,中文版有近100頁,是一本小書了。

每個行業都有自己的業務邏輯,在掌握基本的編程能力之一,你需要結合具體的業務去深入學習。

-☆ END ☆-

③ 嵌入式開發板上的linux系統,為什麼有些命令不能使用

嵌入式開發板上的linux 系統一般是和PC機上的不一樣的,他一般是經過剪裁的,至於你說的各種命令,也是經過裁剪的,在編譯linux內核或者文件系統的時候,會有一個工具,必須用到,這是busy_box,就是傳說中的嵌入式軍刀,他是可以裁剪系統上的命令的,你可以通過它來選擇需要什麼命令,具體情況可以網路一下busy_box。

④ 嵌入式linux:很簡單的匯編指令,關於LDR R0,R1

答案是B.
確切地說是,R1的數據+R2的數據合成一個地址值,該地址中存放的數據賦值給R0
LDR指令是從某存儲空間取數據,賦值給某寄存器.
這是ARM匯編,和Linux有什麼關系?
建議看看ARM匯編的解釋

⑤ 嵌入式linux

嵌入式 Linux是以Linux為基礎的嵌入式作業系統,它被廣泛應用在行動電話、個人數字助理(PDA)、媒體播放器、消費性電子產品以及航空航天等領域中。
嵌入式linux 是將日益流行的Linux操作系統進行裁剪修改,使之能在嵌入式計算機系統上運行的一種操作系統。嵌入式linux既繼承了Internet上無限的開放源代碼資源,又具有嵌入式操作系統的特性。嵌入式Linux的特點是版權費免費;購買費用媒介成本技術支持全世界的自由軟體開發者提供支持網路特性免費,而且性能優異,軟體移植容易,代碼開放,有許多應用軟體支持,應用產品開發周期短,新產品上市迅速,因為有許多公開的代碼可以參考和移植,實時性能RT_Linux Hardhat Linux 等嵌入式Linux支持,實時性能穩定性好安全性好。
如果分別讓10位工程師給出嵌入式系統的定義,將得到10個不同的答案。一般來說,大部分的嵌入式系統執行特定的任務。我們假定最簡單的嵌入式系統包括輸入/輸出功能,以及一些控制邏輯,該系統基於它的配置執行某些類型的功能。按照這個標准,可以認為一個包含實現控制邏輯74123計數器以及一個狀態是一個嵌入式系統。也許可以補充說,該系統必須可通過存儲在固件中的軟體進行編程。這個新的嵌入式系統定義包括輸入/輸出(I/O),以及存儲在系統固件中的控制邏輯。一個帶有滑鼠、鍵盤、網路連接並運行圖形用戶界面(GUI,graphical user interface)多任務操作系統的桌面計算機顯然滿足這些要求,但我們能認為它是一個嵌入式系統嗎?
如果桌面計算機不是一個嵌入式系統,那麼手持設備呢?它們有I/O功能,可以運行存儲在固件中的控制邏輯。有人說,桌面計算機和手持設備都有通用計算機設備,可以運行軟體來執行許多不同的任務,與之不同的是,嵌入式系統(例如,洗碗機控制器或飛行導航系統)主要是為特定任務而設計的。這種特定的功能限定使嵌入式設備有功能上的唯一性。如果是這樣,為什麼一些嵌入式系統設計成具有附加的功能,如存儲在非易失性存儲器中的程序,並且具有運行可以完成原始設計范圍之外的任務的多任務操作系統的能力呢?
在過去,區分嵌入式系統和通用計算機比簡單得多。例如,可以很容易地區分出一個基於8051的T1分幅卡嵌入式系統和一台Sun UNIX工作站。從功能方面很難區分一台Sun工作站和一個包含PowerPC以及32MB內存和16MB快閃記憶體的機頂盒。這樣的機頂盒可以運行帶GUI的多任務操作系統,可現場升級,可以同時運行多個程序(如視頻控制器、數字錄像和Java虛擬機),還可以進行安全的網際網路在線交易。很難判斷這種機頂盒是否是一個嵌入式系統。顯然,硬體性能的提升和價格的下降使通用計算機和嵌入式系統之間的界限變得很模糊,技術的進步使得我們很難定義什麼是嵌入式。
……………………………………………………………………………………
嵌入式linux的前景和待遇都不錯,一般從事嵌入式的待遇在6000-15000之間。雖然嵌入式很難,但是也可以自學嵌入式。
關於如何學習嵌入式,我剛才看到一篇很不錯的文章,是一個專科生介紹自己如何自學嵌入式,並找到嵌入式的工作,裡面介紹了他的學習方法和學習過程,希望對你有幫助。
先做個自我介紹,我07年考上一所很爛專科民辦的學校,學的是生物專業,具體的學校名稱我就不說出來獻丑了。09年我就輟學了,我在那樣的學校,一年學費要1萬多,但是根本沒有人學習,我實在看不到希望,我就退學了。
退學後我也迷茫,大專都沒有畢業,我真的不知道我能幹什麼,我在糾結著我能做什麼。所以輟學後我一段時間,我想去找工作,因為我比較沉默寡言,不是很會說話,我不適合去應聘做業務。我想應聘做技術的,可是處處碰壁。
一次偶然的機會,我才聽到嵌入式這個行業。那天我去新華書店,在計算機分類那邊想找本書學習。後來有個女孩子走過來,問我是不是讀計算機的,有沒有興趣學習嵌入式,然後給我介紹了一下嵌入式現在的火熱情況,告訴我學嵌入式多麼的有前景,給我了一份傳單,嵌入式培訓的廣告。聽了她的介紹,我心裡癢癢的,確實我很想去學會一門自己的技術,靠自己的雙手吃飯。
回家後,我就上網查了下嵌入式,確實是當今比較熱門的行業,也是比較好找工作的,工資也是相對比較高。我就下決心想學嵌入式了。於是我去找嵌入式培訓的相關信息,說真的,我也很迷茫,我不知道培訓是否真的能像他們宣傳的那樣好,所以我就想了解一段時間再做打算。
後來,我在網路知道看到一篇讓我很鼓舞的文章,是一個嵌入式高手介紹沒有基礎的朋友怎麼自學入門學嵌入式,文章寫的很好,包含了如何學習,該怎麼學習。他提到一個方法就是看視頻,因為看書實在太枯燥和費解的,很多我們也看不懂。這點我真的很認同,我自己看書往往看不了幾頁。
我在想,為什麼別人都能自學成才,我也可以的!我要相信自己,所以我就想自學,如果實在學不會我再去培訓。
主意一定,我就去搜索嵌入式的視頻,雖然零星找到一些嵌入式的視頻,但是都不系統,我是想找一個能夠告訴我該怎麼學的視頻,一套從入門到精通的視頻,一個比較完整的資料,最好能有老師教,不懂可以請教的。
後來我又找到一份很好的視頻,是在IT學習聯盟網站推出的一份視頻《零基礎嵌入式就業班》(喜歡《零基礎嵌入式就業班》的可以復制 sina.lt/qKh 粘貼瀏覽器地址欄按回車鍵即打開)。裡面的教程還不錯,很完整,可以讓我從基礎的開始學起。視頻比較便宜。
下面介紹下我的學習流程,希望對和我一樣完全沒有基礎的朋友有所幫助。
收到他們寄過來的光碟後,我就開始學習了,由於我沒有什麼基礎,我就從最簡單的C語言視頻教程學起,話說簡單,其實我還是很多不懂的,我只好請教他們,他們還是很熱心的,都幫我解決了。C語言我差不多學了一個禮拜,接下來我就學了linux的基本命令,我在他們提供linux虛擬機上都有做練習,敲linux的基本命令,寫簡單的C語言代碼,差不多也就三個禮拜。我每天都在不停的寫一些簡單的代碼,這樣一月後我基本掌握了C和linux的基本操作。
接下來我就去學習了人家的視頻的培訓教程,是整套的,和去參加培訓沒有多大的區別,這一看就是兩個月,學習了ARM的基本原理,學習嵌入式系統的概念,也掌握了嵌入式的環境的一些搭建,對linux也有更深層次的理解了,明白了嵌入式應用到底是怎麼做的,但是驅動我只是有一點點的了解,這個相對難一點,我想以後再慢慢啃。
這兩個月,除了吃飯睡覺,我幾乎都在學習。因為我知道幾乎沒有基礎,比別人差勁,我只能堅持努力著,我不能放棄,我必要要靠自己來養活自己,必須學好這門技術,然後我就把不懂的問題總結記下來,這樣慢慢積累了一段時間,我發現自己真的有點入門了。
最後的一個月,我就去看關於實踐部分的內容,了解嵌入式項目具體的開發流程,需要什麼樣的知識,我就開始准備這方面的知識,也就是學習這方面的視頻,同時他們建議我去找了找一些嵌入式面試的題目,為自己以後找工作做准備。我就到網上找了很多嵌入式的題目,把他們理解的記下來,這樣差不多准備了20天左右
我覺得自己差不多入門了,會做一些簡單的東西了。我就想去找工作看看,於是我就到51job瘋狂的投簡歷,因為我學歷的問題,專科沒有畢業,說真的,大公司沒有人會要我,所以我投的都是民營的小公司,我希望自己的努力有所回報。沒有想過幾天過後,就有面試了,但是第一次面試我失敗了,雖然我自認為筆試很好,因為我之前做了准備,但是他們的要求比較嚴格,需要有一年的項目經驗,所以我沒有被選中。
後來陸續面試了幾家公司,終於功夫不負有心人。我終於面試上的,是在閔行的一家民營的企業,公司規模比較小,我的職務是嵌入式linux應用開發,做安防產品的應用的。我想我也比較幸運,經理很看重我的努力,就決定錄用我,開的工資是3500一個月,雖然我知道在上海3500隻能過溫飽的生活,但是我想我足夠了。我至少不用每天都要靠父母養,我自己也能養活自己的。我想只要我繼續努力,我工資一定會翻倍的。
把本文寫出來,希望能讓和我一樣的沒有基礎的朋友有信心,其實我們沒有必要自卑,我們不比別人笨,只要我們肯努力,我們一樣會成功。
希望我的回答能幫助到你。

…………………………………………………………

⑥ 嵌入式linux和電腦上裝的linux的區別

linux內核是可以採集配置的,嵌入式硬體資源有限,不相關的最後可以不用編譯到bin文件里,電腦上的除了內核,還有相關的應用軟體,界面這些,都是嵌入式linux所沒有的。

熱點內容
風行視頻緩存 發布:2024-10-10 23:02:55 瀏覽:602
武漢學java 發布:2024-10-10 23:00:52 瀏覽:359
php入門到精通 發布:2024-10-10 22:51:27 瀏覽:526
我的世界基岩版的伺服器怎麼進入 發布:2024-10-10 22:45:32 瀏覽:360
什麼是保險櫃主密碼 發布:2024-10-10 22:39:54 瀏覽:660
sql臨時表效率 發布:2024-10-10 22:24:37 瀏覽:503
linux搭建mc伺服器搭建 發布:2024-10-10 21:58:38 瀏覽:984
ubuntu解壓工具 發布:2024-10-10 21:58:27 瀏覽:231
c語言一組標識符 發布:2024-10-10 21:37:38 瀏覽:748
安卓游戲機在哪裡下載 發布:2024-10-10 21:23:48 瀏覽:462