Linux嵌入式應(yīng)用是以Linux為基礎(chǔ)的嵌入式作業(yè)系統(tǒng)的應(yīng)用,它被廣泛應(yīng)用在移動電話、個人數(shù)字助理(PDA)、媒體播放器、消費性電子產(chǎn)品以及航空航天等領(lǐng)域中。
中文名稱 | linux嵌入式應(yīng)用 | 基????礎(chǔ) | Linux |
---|---|---|---|
應(yīng)????用 | 移動電話、個人數(shù)字助理等 | 類????別 | 嵌入式作業(yè)系統(tǒng) |
縱觀嵌入式系統(tǒng)的發(fā)展歷程,大致經(jīng)歷了以下四個階段: 無操作系統(tǒng)階段 嵌入式系統(tǒng)最初的應(yīng)用是基于單片機的,大多以可編程控制器的形式出現(xiàn),具有監(jiān)測、伺服、設(shè)備指示等功能,通常應(yīng)用于各類工業(yè)控制和飛機、等武...
linux嵌入式開發(fā)板 買哪種的比較好 我是一個初學(xué)者
買arm11內(nèi)核的吧,6410芯片,聽說arm9要停產(chǎn)了。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ———答案來自希賽教育Linux...
你理解沒錯。 常見的600*600mm烤漆龍骨礦棉板就是屬于浮擱形式。 衛(wèi)生間用的600*600或300*300的鋁方板屬于嵌入式,方板四周折返立邊,立邊插入專用龍骨中固定。 一般來說無論是嵌入還是浮...
格式:pdf
大?。?span id="tk4k5x5" class="single-tag-height">1.3MB
頁數(shù): 9頁
評分: 4.4
嵌入式linux的LED實驗
格式:pdf
大?。?span id="qvrxyji" class="single-tag-height">1.3MB
頁數(shù): 未知
評分: 4.6
簡要介紹了基于嵌入式ARM處理器芯片LPC3250的嵌入式Linux的LED驅(qū)動程序的開發(fā)原理、流程以及相關(guān)主要接口硬件電路的設(shè)計。實際運行結(jié)果表明,該設(shè)計完全達到預(yù)期效果。
嵌入式學(xué)習是一個循序漸進的過程,如果是希望向嵌入式軟件方向發(fā)展的話,目前最常見的是嵌入式Linux方向,關(guān)注這個方向,大概分3個階段:
1、嵌入式Linux上層應(yīng)用,包括QT的GUI開發(fā)
2、嵌入式Linux系統(tǒng)開發(fā)
3、嵌入式Linux驅(qū)動
Linux是開源免費的,而且其源代碼是開放的,更加適合學(xué)習嵌入式。
(1) C語言是所有編程語言中的強者,因此必須非常熟練的掌握。
(2)Linux操作系統(tǒng)就是用C語言編寫的,所以也應(yīng)該先學(xué)習下Linux方面的編程,只有會應(yīng)用了,才能近一步去了解其內(nèi)核的精髓。
(4) 了解ARM的架構(gòu),原理,以及其匯編指令,我們在嵌入式開發(fā)中,一般很少去寫匯編,但是最起碼的要求是能夠看懂a(chǎn)rm匯編。
(5) 系統(tǒng)移植的時候,就需要你從最下層的bootloader開始,然后內(nèi)核移植,文件系統(tǒng)移植等。
(6) 驅(qū)動開發(fā)
linux驅(qū)動程序設(shè)計既是個極富有挑戰(zhàn)性的領(lǐng)域,又是一個博大精深的內(nèi)容。
以上是大概的框架,
推薦學(xué)習平臺:
iTOP-4412開發(fā)板涵蓋嵌入式技術(shù)熱點,支持linux,android,QT,Ubuntu系統(tǒng)
核心板參數(shù)
尺寸:50mm*60mm
高度:連同連接器在內(nèi)0.26cm
CPU:Exynos4412,四核Cortex-A9,主頻為1.4GHz-1.6GHz
內(nèi)存:1GB 雙通道 DDR3(2GB 可選)
存儲4GB EMMC(16GB 可選)
電源管理:低功耗動態(tài)三星S5M8767電源管理,最優(yōu)架構(gòu)!
工作電壓:2.65V--5.5V (推薦4.0V)
系統(tǒng)支持:Linux-QT/Android4.2/Ubuntu操作系統(tǒng)
USB HOST:板載USB3503,引出高性能HSIC,實現(xiàn)2路USB HOST輸出
引角擴展:引出腳多達320個,滿足用戶各類擴展需求
運行溫度:-25度至+80度區(qū)間,設(shè)備工作正常,運行良好!
底板參數(shù)
尺寸:110mm*190mm
SWITCH:電源接口
RESET:1個復(fù)位按鍵
POWER:電直流電源輸入接口,5V/2A電源輸入
TF Card:1個標準TF卡接口
USB Host:2路USB Host,支持USB2.0協(xié)議
USB OTG:1路USB OTG 2.0
以太網(wǎng)口:10M/100M自適應(yīng)網(wǎng)口
PHONE:支持耳機輸出
MIC:支持MIC輸入
串口:2路串口
A/D:1路
User Key:5個功能按鍵
DIP SWITCH:1個
GPIO:20PIN(電源和地)
CAMERA接口:1個(可支持200萬和500萬攝像頭)
WIFI接口:1個
HDMI接口:標準HDMI v1.4,1080p高清分辨率輸出
LCD接口:共3個,2個LVDS接口,1個RGB接口
LCD電源開關(guān):1個
MIPI接口:1個
實時時鐘:內(nèi)部實時時鐘,帶有后備鋰電池座,斷電后系統(tǒng)時間不丟失
BUZZER:1個蜂鳴器
JTAG接口:1個
串口、矩陣鍵盤、GPS接口:1個
嵌入式系統(tǒng)(Embedded System)--"嵌入到特定設(shè)備中的計算機系統(tǒng)。
一、定義:
嵌入式系統(tǒng)是一種"完全嵌入到受控器件內(nèi)部,為特定應(yīng)用而設(shè)計的專用計算機系統(tǒng)"。
嵌入式系統(tǒng)是相對桌面系統(tǒng)來講的,凡是帶有微處理器的專用軟硬件系統(tǒng)都可以稱為嵌入式系統(tǒng)。作為系統(tǒng)核心的微處理器又包括三類:微控制器(MCU)、數(shù)字信號處理器(DSP)、嵌入式微處理器(MPU)。嵌入式比較準確一個定義如下:系統(tǒng)以應(yīng)用為中心、以計算機技術(shù)為基礎(chǔ)、軟件硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統(tǒng)。
二、說明:
受控器件:
1.消費電子:mp3、手機、電梯、汽車...
2.智能家電:數(shù)字電視、微波爐、數(shù)碼相機、空調(diào)...
3.網(wǎng)絡(luò)設(shè)備:交換機、路由器...
4.醫(yī)療儀器:..各種醫(yī)療器械...
5.航天設(shè)備:衛(wèi)星、航天飛機、月球探測儀...
6.工業(yè)控制:控制主機,智能監(jiān)控...
計算機系統(tǒng):包括硬件和軟件系統(tǒng)、且軟、硬件均可裁剪,但必須有最小系統(tǒng)要求。
Linux 調(diào)度器對比
BFS vs CFS,設(shè)計上的不同 白天 Con Kolivas 在醫(yī)院里當麻醉師,為人們解除痛苦,業(yè)余的時候借 Linux 解除自己的痛苦。額,Kolivas 學(xué)習 Linux 并不是為了解決痛苦,我臆測而已。但據(jù) Kolivas 自述,他接觸 Linux 內(nèi)核時連 C 語言也沒有學(xué)習過。。。這個事實證明,語言只是一項工具,對問題本質(zhì)的深入理解才是寫程序的關(guān)鍵??赡苓€有執(zhí)著,CFS 和 RSDL 之爭導(dǎo)致 Kolivas 離開 Linux 社區(qū),此去經(jīng)年,當 Kolivas 再次開始看內(nèi)核代碼的時候,他立即發(fā)現(xiàn) CFS 存在以下幾個設(shè)計上的問題:
CFS 的目標是支持從桌面到高端服務(wù)器的所有應(yīng)用場景,這種大而全的設(shè)計思路導(dǎo)致其必須做一些實現(xiàn)上的折中,此外,那些只有在高端機器中才需要的特性將引入不必要的復(fù)雜代碼。
其次,為了維護多 CPU 上的公平性,CFS 采用了負載平衡機制,Kolivas 認為,這些復(fù)雜代碼抵消了 per cpu queue 曾帶來的好處。
最后,主流內(nèi)核的 CFS 還是對睡眠進程存在一些偏好,這意味著"不公平"。
在現(xiàn)實中,調(diào)度算法類似一個處境尷尬的主婦,滿足孩子對晚餐的要求便有可能傷害到老人的食欲。Linux 內(nèi)核一直試圖做出一道讓全家老少都喜歡的菜,在這方面,CFS 已經(jīng)做的很好。但一道能被所有人接受的菜,或許就意味著稍許平淡。而 BFS 只打算滿足一種口味,以便將這種口味發(fā)展到極限。
根據(jù) Linux Magazine的說法,Con Kolivas是看到了下面這則來自 xkcd 的漫畫而開始思考 BFS 的。
事情源于一些 Linux 用戶,他們發(fā)現(xiàn) Linux 雖然號稱能夠充分發(fā)揮 4096 顆 CPU 系統(tǒng)的計算能力,但在普通的 laptop 上卻無法流暢地播放 Youtube 視頻。
這讓人們開始思考,對于 Desktop 環(huán)境來講,CFS 哪些復(fù)雜的特性究竟是否還有意義?人們是否有必要在自己的個人電腦中使用一個支持 4096 個 CPU 的調(diào)度器?
BFS 正是對這種質(zhì)疑的自然反應(yīng)。它不打算支持 4096 個 CPU 的龐然大物,BFS 的目標是普通人使用的桌面電腦。此外,BFS 還刪除了那些只有在服務(wù)器上才需要的特性。比如,BFS 拋棄了 CFS 的組調(diào)度特性,類似 CGROUP 這樣的特性對于普通的桌面用戶是多余的技術(shù)。
這很容易理解:在只有一個 CPU 的系統(tǒng)中,誰還會設(shè)計多個 CGroup,哪里還能用到 NUMA domain等概念呢?
此外 BFS 使用單一的 run queue,不再需要復(fù)雜的負載均衡機制。由于不再有 CGROUP 概念,也不再需要 Group 間的負載均衡。
這些簡單的裁剪使得 BFS 的代碼極大地簡化,簡化的代碼意味著執(zhí)行一次調(diào)度所需要的指令數(shù)減少了,相應(yīng)的 footprint 自然也減少了。
當然簡化代碼只是一個顯而易見的方面,更重要的是,這種理念的不同會對最終的調(diào)度器實現(xiàn)產(chǎn)生更加深遠的影響,這實在是難以盡述。
多隊列 vs 單一隊列
?在 Linux 內(nèi)核進入 2.6 時,調(diào)度器采用 per cpu run queue 從而克服了單一 run queue 的局限。在多 CPU 系統(tǒng)中,單一 run queue 意味著 run queue 成為了系統(tǒng)的瓶頸,因為在同一時刻,一個 CPU 訪問 run queue 時,其他的 CPU 即使空閑也必須等待。當使用 per CPU 的 run queue 之后,每個 CPU 不必再使用大鎖,從而能夠并行地處理調(diào)度。
但很多事情都不像第一眼看上去那樣簡單。
Kolivas 發(fā)現(xiàn),采用 per cpu run queue 所帶來的好處會被追求公平性的 load balance 代碼所抵消。在目前的 CFS 調(diào)度器中,每顆 CPU 只維護本地 run queue 中所有進程的公平性,為了實現(xiàn)跨 CPU 的調(diào)度公平性,CFS 必須定時進行 load balance,將一些進程從繁忙的 CPU 的 run queue 中移到其他空閑的 run queue 中。
這個 load balance 的過程需要獲得其他 run queue 的鎖,這種操作降低了多運行隊列帶來的并行性。
并且在復(fù)雜情況下,這種因 load balance 而引入的 footprint 將非??捎^。
當然,load balance 引入的加鎖操作依然比全局鎖的代價要低,這種代價差異隨著 CPU 個數(shù)的增加而更加顯著。但請您注意,BFS 并不打算為那些擁有 1024 個 CPU 的系統(tǒng)工作,假若系統(tǒng)中的 CPU 個數(shù)有限時,多 run queue 的優(yōu)勢便不明顯了。
而 BFS 采用單一隊列之后,每一個需要調(diào)度的新進程都可以在全局范圍內(nèi)查找最合適的 CPU,而無需 CFS 那樣等待 load balance 代碼來決定,這減少了多 CPU 之間裁決的延遲,最終的結(jié)果是更小的調(diào)度延遲。
向前看還是向后看?
多年來 Kolivas 一直關(guān)注著 Linux 在 desktop 上的表現(xiàn)。對于 desktop 的用戶,最注重的不是系統(tǒng)的吞吐量,而是交互性程序的流暢體驗。從 SD 開始,Kolivas 就告訴內(nèi)核黑客們,完全公平能夠從根本上保證交互性。他始終堅持一個基本觀點:調(diào)度器應(yīng)該 forward look only。決不要去考慮一個進程的過去。
CFS 卻偏偏要考慮進程的過去。2.6.23 的時候,CFS 記錄并使用 sleep time。之后不久,在 2.6.24 發(fā)布的時候,CFS 合并了"Real Fair Scheduler",刪除了 sleep time。因此在 2.6.24 之后的內(nèi)核中,CFS 終于也不再考慮進程過去的睡眠時間。
但 CFS 還是保留了 sleeper fairness 的思想,當進程 wakeup 的時候,在 place_entity() 函數(shù)中,CFS 將對 sleeper 進行獎勵,以便其能盡快得到 CPU。這個策略是非常微妙的,我們在 2.1 節(jié)中詳細介紹了 sleeper fairness 的演進過程。假如您花些時間回頭再看看,就會發(fā)現(xiàn) sleeper fairness 曾造成怎樣嚴重的延遲問題。雖然 Ingo 自稱 Gentle fairness 解決了延遲問題,但從代碼上看,Gentle Fairness 只是對 sleeper 的獎勵減半而已。因此我們可以說,CFS 依然對 Sleeper 進程進行獎勵,這代表著一種偏好,一種"不公平"。而這,正是 BFS 所反對的。
BFS 中,當一個進程 wakeup 時,調(diào)度器將根據(jù)進程的 deadline 來進行選擇(關(guān)于 deadline 本文將在第 4 章中詳細描述),其結(jié)果是,更早睡眠的進程能更快地得到調(diào)度;CFS 的 sleeper fairness 則意味著要根據(jù) wakeup 的時間來選擇下一個被調(diào)度的進程,更早 wakeup 的進程會更快得到調(diào)度。
這種不同究竟會對桌面應(yīng)用造成何種影響尚沒有理論依據(jù)可以參考。但我個人認為,BFS 的策略更加合理。
您現(xiàn)在可能已經(jīng)讀得有些煩躁了 ( 這些英文加中文的說些啥啊 ),所以我還是盡快介紹一下 BFS 的實現(xiàn)細節(jié)吧。然后或許您會理解我,有些詞還是不翻譯更好。