linux和嵌入式系統是相互於相互交叉使用的。
嵌入式系統的定義就是軟硬體可裁剪,在實際項目中,對產品的功耗、存儲等要求嚴格,所以就會涉及將完整的Linux系統進行精簡瘦身,節約存儲提高效率,這就是所謂的系統移植、裁剪。此工作需要對Linux內核極其熟悉。
Linux驅動開發:嵌入式產品上面的各種外設的驅動開發,不僅要懂軟體、還需要熟悉Linux內核代碼、了解硬體相關知識。
嵌入式應用開發:調用Linux的系統調用介面,進行基於Linux系統的應用開發,只需要有LinuxC語言知識的積累即可完成。
(1)嵌入式linuxboaphp擴展閱讀
嵌入式linux的特點
1、嵌入式linux既繼承了Internet上無限的開放源代碼資源,又具有嵌入式操作系統的特性。
2、嵌入式Linux的特點是版權費免費;購買費用媒介成本技術支持全世界的自由軟體開發者提供支持網路特性免費。
3、一些嵌入式系統設計成具有附加的功能,如存儲在非易失性存儲器中的程序,並且具有運行可以完成原始設計范圍之外的任務的多任務操作系統的能力。
Ⅱ 嵌入式設備的嵌入式設備上的Linux系統開發
Linux正在嵌入式開發領域穩步發展。因為Linux使用GPL(請參閱本文後面的參考資料),所以任何對將Linux定製於PDA、掌上機或者可佩帶設備感興趣的人都可以從網際網路免費下載其內核和應用程序,並開始移植或開發。許多Linux改良品種迎合了嵌入式/實時市場。它們包括RTLinux(實時Linux)、uclinux(用於非MMU設備的Linux)、MontavistaLinux(用於ARM、MIPS、PPC的Linux分發版)、ARM-Linux(ARM上的Linux)和其它Linux系統
嵌入式Linux開發大致涉及三個層次:引導裝載程序、Linux內核和圖形用戶界配鎮鉛面(或稱GUI)。引導裝載程序通常是在任何硬體上執行的第一段代碼。在象台式機這樣的常規系統中,通常將引導裝載程序裝入主引導記錄(MasterBootRecord,(MBR))中,或者裝入Linux駐留的磁碟的第一個扇區中。通常,在台式機或其它系統上,BIOS將控制移交給引導裝載程序。
專用軟體可以直接與遠程系統上的快閃記憶體設備進行交互並將引導裝載程序安裝在快閃記憶體的給定位置中。快閃記憶體設備是與存儲設備功能類似的特殊晶元,而且它們能持久存儲信息—即,在重新引導時不會擦除其內容。旅腔
某些種類的嵌入式設備具有微小的引導代碼—根據幾個位元組的指令—它將初始化一些DRAM設置並啟用目標上的一個串列(或者USB,或者乙太網)埠與主機程序通信。然後,主機程序或裝入程序可以使用這個連接將引導裝載程序傳送到目標上,並將它寫入快閃記憶體。設置工具鏈在主機機器上創建一個用於編譯將在目標上運行的內核和應用程序的構建環境—這是因為目標硬體可能沒有與主機兼容的二進制執行級別。
工具鏈由一套用於編譯、匯編和鏈接內核及應用程序的組件組成。這些組件包括:Binutils—用於操作二進制文件的實用程序集合。它們包括諸如ar、as、objmp、obj這樣的實用程序。G—GNUC編譯器。Glibc—所有用戶應用程序都將鏈接到的C庫。避免使用任何C庫函數的內核和其它應用程序可以在沒有該培好庫的情況下進行編譯。構建工具鏈建立了一個交叉編譯器環境。本地編譯器編譯與本機同類的處理器的指令。交叉編譯器運行在某一種處理器上,卻可以編譯另一種處理器的指令。重頭設置交叉編譯器工具鏈可不是一項簡單的任務:它包括下載源代碼、修補補丁、配置、編譯、設置頭文件、安裝以及很多很多的操作。另外,這樣一個徹底的構建過程對內存和硬碟的需求是巨大的。如果沒有足夠的內存和硬碟空間,那麼在構建階段由於相關性、配置或頭文件設置等問題會突然冒出許多問題。
因此能夠從網際網路上獲得已預編譯的二進制文件是一件好事(但不太好的一點是,它們大多數只限於基於ARM的系統,但遲早會改變的)。一些比較流行的已預編譯的工具鏈包括那些來自Compaq(FamiliarLinux)、LART(LARTLinux)和Embedian(基於Debian但與它無關)的工具鏈—所有這些工具鏈都用於基於ARM的平台。從用戶的觀點來看,圖形用戶界面(GUI)是系統的一個最至關重要的方面:用戶通過GUI與系統進行交互。所以GUI應該易於使用並且非常可靠。但它還需要是有內存意識的,以便在內存受限的、微型嵌入式設備上可以無縫執行。所以,它應該是輕量級的,並且能夠快速裝入。
另一個要考慮的重要方面涉及許可證問題。一些GUI分發版具有允許免費使用的許可證,甚至在一些商業產品中也是如此。另一些許可證要求如果想將GUI合並入項目中則要支付版稅。
最後,大多數開發人員可能會選擇XFree86,因為XFree86為他們提供了一個能使用他們喜歡的工具的熟悉環境。但是市場上較新的GUI,象CenturySoftware的(Nano-X)和TrolltechQT/Embedded,與X在嵌入式Linux的競技舞台中展開了激烈競爭,這主要是因為它們佔用很少的資源、執行的速度很快並且具有定製窗口構件的支持。
Ⅲ 什麼是嵌入式linux腳本描述語言php
PHP是一種伺服器端HTML-嵌入式腳本描述語言。的詳細頁面,介紹了和php,有關的知識、技巧、經驗,和一些php源碼等。
class='pingjiaF' frameborder=Ɔ' src='biancheng.dnbcw.info/pingjia.php?id=342559' scrolling='no'>
PHP是一種伺服器端HTML-嵌入式腳本描述語言。 其最強大和最重要的特徵是其資料庫數虛枯集成層,使用它完成一個含有資料庫功能的網頁是不可置信的簡單。在薯洞HTML文件中, PHP腳本程序(語法類似於Perl或者c語言)可以使用特別的PHP標簽進行引用, 這樣汽車零部件網頁製作者也不必完全依賴HTML生成網頁了。由於PHP是在伺服器端執行的, 客戶端是看不到PHP代碼的。 PHP可以完成任何CGI腳本可以完成的任務,但它的功能的發揮取決於它和各種資料庫的兼譽神容性。 PHP除了可以使用HTTP進行通信,也可以使用IMAP, SNMP, NNTP, POP3協議。
Ⅳ 請問學習ARM嵌入式開發應該准備些什麼開發工具和要求
感謝邀請。
這個問題相信是困擾所有嵌入式初學者的難題,
下面課內容是嵌入式學習必學的:C語言;C++;操作系統;計算機組成原理;linux編程;51單片機;arm;硬體編程語言(FPGA);模擬電路&數字電路。
1、cc++語言,這是計算機行業的必修課凳穗,必須找扎實實學好,可以安裝turboc編譯器為開發環境,聯系C語言編程;安裝vc++6.0學習襲粗粗C++編程。
2、操作系統,先在電腦上安裝一個vmwareworkstation,然後在vmwareworkstation里安裝一個linux(redhat企業版)虛擬機。學習一下操作系統的基本原理,熟悉linux環境下的開發環境,然後你就可以照著《自己動手寫操作系統》寫個操作系統試試。
3、計算機組成原理,熟悉計算機的基本原理,看看一個計算機的基本組成及軟體在裡面是如何跑的。
4、《unix/linux編程實踐教程》可以說是linux編程的必修課,很不錯的一本書,初學嵌入式的朋友可以看看。
5、單片機,其實就是一台電腦,像現在的汽車控制、led控制、屏幕亮光程度控制,它都可以實現,自己買塊開發板拍鎮弄一下,你能學到很多的別人學不到的。
6、arm,現在流行的微機,說白了就是32位的單片機,還可以跑操作系統哦,自己想辦法移植一個操作系統上去吧
7、硬體編程語言(FPGA),晶元到底是怎麼做成的,學習這門課,你就知道了
8、模擬電路&數字電路,硬體的基礎,如果可以的話,學習下protel,自己做個硬體pcb板試試。
計算機這行都是偏向於實踐的課程,所以要注重動手能力,
學習嵌入式這基本課程的時候,你可以按照這樣的順序來學習:
1:C語言、計算機組成原理、模擬電路&數字電路
2:匯編語言、單片機、操作系統、C++
3:硬體編程語言、arm
嵌入式開發大抵分四個方向,硬體、驅動、內核、應用,如果是希望向嵌入式軟體方向發展的話,目前常見的是
嵌入式Linux+ARM方向,關於這個方向,大概分3個階段:
1、嵌入式linux上層應用,包括QT的GUI開發
2、嵌入式linux系統開發
3、嵌入式linux驅動開發嵌入式目前主要面向的幾個操作系統是,LINUX,WINCE、VxWorks等等Linux是開源免費的,而且其源代碼是開放的,更加適合我們學習嵌入式。
自學的話你可以嘗試以下路線:
(1)C語言是所有編程語言中的強者,單片機、DSP、類似ARM的種種晶元的編程都可以用C語言搞定),因此必須非常熟練的掌握。推薦書籍:譚浩強的很不錯,《TheCProgrammingLanguage》這本經典的教材是老外寫的,也有中譯版本。
(2)操作系統原理,是必需的,如果你是計算機專業畢業那也就無所謂了,如果是非計算機專業的就必須找一本比較淺顯的計算機原理書籍看一看,把啥叫「進程」「線程」「系統調度」等等基本問題搞清楚。
(3)Linux操作系統就是用C語言編寫的,所以你也應該先學習下Linux方面的編程,只有你會應用了,才能近一步去了解其內核的精髓。推薦書籍:《UNIX環境高級編程》(第2版)
(4)了解ARM的架構,原理,以及其匯編指令,我們在嵌入式開發中,一般很少去寫匯編,但是起碼的要求是能夠看懂arm匯編。
(5)系統移植的時候,就需要你從下層的bootloader開始,然後內核移植,文件系統移植等。而移植這部分對硬體的依賴是非常大的,其配置步驟也相對復雜,也沒有太多詳細資料。
(6)驅動開發linux驅動程序設計既是個極富有挑戰性的領域,又是一個博大精深的內容。linux驅動程序設計本質是屬於linux內核編程范疇的,因而是對linux內核和內核編程是有要求的。在學習前你要想了解linux內核的組成,因為每一部分要詳細研究的話足夠可以擴展成一本厚書。
給大家把一個嵌入式開發學習大方面的學習框架搭出來了
。最後呢祝大家能夠在學習的路上馬到成功。
Ⅳ linux開發嵌入式系統要裝什麼工具
嵌入式系統通常為一個資源受限的系統。直接在嵌入式系統的硬體平台上編寫軟體比較困難,有時甚至是不可能的。目前,敗告一般採用的辦法是,先在通用計算機上編寫程序,然後,通過交叉編譯,生成目標平台上可運行的二進制代碼格式,最後下載到目標平台上的特定位置上運行,下面就由福州卓躍教育做具體步驟介紹。
第一步,建立嵌入式Linux應用開發環境。目前,常用的交叉開發環境主要有開放和商業兩種類型。開放的交叉開發環境的典型代表是GNU工具鏈,目前已經能夠支持x86、ARM、MIPS、PowerPC等多種處理器。商業的交叉開發環境主要有MetrowerksCodeWarrior、ARMSoftwareDevelopmentToolkit、SDSCrosscompiler、WindRiverTornado、MicrosoftEmbeddedVisualC等。交叉開發環境是指叢嘩編譯、鏈接和調試嵌入式應用軟體的環境。它與運行嵌入式應用軟體的環境有所不同,通常採用宿主機/目標機模式。
第二步,交叉編譯和鏈接。在完成嵌入式軟體的編碼之後,就是進行編譯和鏈接,以生成可執行代碼。由於開發過程大多是在Intel公司x86系列CPU的通用計算機上進行的,而目標環境的處理器晶元卻大多為ARM、MIPS、PowerPC、DragonBall等系列的微處理器,察鄭明這就要求在建立好的交叉開發環境中進行交叉編譯和鏈接。
第三步,交叉調試。
①硬體調試。如果不採用在線模擬器,可以讓CPU直接在其內部實現調試功能,並通過在開發板上引出的調試埠,發送調試命令和接收調試信息,完成調試過程。目前,Motorola公司提供的開發板上使用的是DBM調試埠,而ARM公司提供的開發板上使用的則是JTAG調試埠。使用合適的軟體工具與這些調試埠進行連接,可以獲得與ICE類似的調試效果。
②軟體調試。在嵌入式Linux應用開發系統中,Linux系統內核調試,可以先在Linux內核中設置一個調試樁(debugstub),用作調試過程中和宿主機之間的通信伺服器。然後,可以在宿主機中通過調試器的串口與調試樁進行通信,並通過調試器控制目標機上Linux內核的運行。
Ⅵ Linux嵌入式的開發流程是什麼呢, 具體的詳細點的有嗎
下面就由福州卓躍教育具體介紹下嵌入式系統開發流程。操作系統一般使用Redhat Linux,選擇定製安裝或全部安裝,通過網路下載相應的GCC交叉編譯器進行安裝,或者安裝產品廠家提供的相關交叉編譯器;
二、配置開發主機,配置MINICOM,一般的參數為波特率115200 Baud/s,數據位8位,停止位為1,9,無奇偶校驗,軟體硬體流控設為無。在Windows下的超級終端的配置也是這樣。MINICOM軟體的作用是作為調試嵌入式開發板的信息輸出的監視器和鍵盤輸入的工具。配置網路主要是配置NFS網路文件系統,需要關閉防火牆,簡化嵌入式網路調試環境設置過程。
三、建立引導裝載程序BOOTLOADER,從網路上下載一些公開源代碼的BOOTLOADER,如U.BOOT、BLOB、VIVI、LILO、ARM-BOOT、RED-BOOT等,根據具體晶元進行移植修改。有些晶元沒有內置引導裝載程序,比如,三星的ARV17、ARM9系列晶元,這樣就需要編寫開發板上FLASH的燒寫程序,可以在網上下載相應的燒寫程序,也有Linux下的公開源代碼的J-FLASH程序。
四、下載已經移植好的Linux操作系統,如MCLiunx、ARM-Linux、PPC-Linux等。
五、建立根文件系統,可以從http://www.busy.box.net下載使用BUSYBOX軟體進行功能裁減,產生一個最基本的根文件系統,再根據自己的應用需要添加其他的程序。由於默認的啟動腳本一般都不會符合應用的需要,所以就要修改根文件系統中的啟動腳本,它的存放位置位於/etc目錄下,包括:/etc/init.d/rc.S、/etc/profile、/etc/.profile等,自動掛裝文件系統的配置文件/etc/fstab,具體情況會隨系統不同而不同。根文件系統在嵌入式系統中一般設為只讀,需要使用mkcramfs genromfs等工具產生燒寫映像文件。
六、建立應用程序的FLASH磁碟分區,一般使用JFFS2或YAFFS文件系統,這需要在內核中提供這些文件系統的驅動,有的系統使用一個線性FLASH(NOR型)512KB~32MB,有的系統使用非線性FLASH(NAND型)8MB~512MB,有的兩個同時使用,需要根據應用規劃FLASH的分區方案。
Ⅶ 想做嵌入式開發,為什麼要學習linux
我最開始用Linux是被逼的。當時用的是一台舊的筆記本電腦,做一些文字處理的工作。跑Windows動不動就死機,無奈之下安裝了Ubuntu。當時只是想找一個Windows的替代品。用Ubuntu的圖形化界面很多,不怎麼用命令行,所以總覺得比不上Windows。當然,基本的功能還是全的。我用那台舊電腦兼職翻譯,賺了2000塊的「巨款」。
後來深入使用Linux,是因為做論文時要用伺服器。伺服器是Debian系統,只能用ssh連接。我只能可憐巴巴的對著命令行敲字了。也是在這種情況下,我才真正發現Linux的好處。
首先,Shell編程很方便,特別是配合Linux下的各個工具,比如cat, sed, awk, grep。我經常會向伺服器的任務管理器提交工作。工作太大,沒有足夠處理器時,就要排隊等空隙。用shell編寫一個小腳本,讓它來替我安排工作的提交,就節省了我大量的時間。Shell編程甚至可以實現相當復雜的功能。Linux把每個小工具的功能都做強。想要實現復雜功能時,就利用文本流把它們連接在一起。這樣,功能性和獨立性就都兼顧了。(Linux文本流)
其次,Linux的穩定性很好。這也是大部分伺服器使用Linux的一個重要原因。我沒有用過Windows的伺服器版本,不好評價。但在PC上,Linux要比Windows穩定的多。由於Linux與Windows的存儲方式不同,所以Linux可以長時間的持續運轉,也不需要對磁碟進行碎片整理。當然,Linux的圖形化界面略弱。如果用圖形化界面,會時有崩潰。(為什麼Linux不需要磁碟碎片整理)
再次,Linux的源碼和架構都是開放的,你可以從中學到很多操作系統原理。Linux的整個哲學體系繼承自UNIX,發展的年頭要比Windows長很多時間,整個設計體系已經相當穩定,並化繁為簡。POSIX的標准也很普遍,Linux熟悉了之後,其它的UNIX系統也很容易上手。Windows的許多東西不透明,很復雜,又常變化,並不是一個很好的學習樣例。(Linux架構)
最後,Linux下的各種工具基本上都是免費的。更方便的,使用package manager下載編譯好的版本。這和Windows下到處買光碟、找可用下載連接、找注冊碼的繁瑣過程完全不同。如果你想要使用任何的工具,一般只需要幾分鍾,就能借網路搞定。Linux的開源社區也很活躍,很容易找到人討論,或者找個項目練手。
再從我個人的角度說說吧。首先,Linux是一個很強的附加技能。Windows對於用戶來說很貼心,但也意味著使用門檻低,基本上大家都會。而Linux,即使是命令行的使用,也需要一定時間熟悉。在CV上寫上熟悉Linux的命令行使用,熟悉Linux配置,要比寫熟悉Windows使用,加分不少。
其次,伺服器和雲服務平台選用Linux的比較多。這意味著,在超越PC的戰場上,Linux是一個必修技能。如果是從事IT開發的人,Linux基本上是繞不過去的一個檻。現在Linux在移動端發展的也不錯。看Ubuntu最近的動作,是希望在移動端有所作為的。而安卓用的也是Linux內核。
最後,Linux設備投入小,而Linux知識更新換代較慢,學習的性價比很高。學完後還可以通吃Unix和Mac。
Ⅷ linux嵌入式開發需要學什麼
linux嵌入式開發需要宴汪運學如下:
一:C語言
嵌入式Linux工程師的學習需要具備一定的C語言基礎,C語言是嵌入式領域最重要也是最主要的編程語言,通過大量編程實例重點理解C語言的基礎編程以及高級編程知識。包括:基本數據類型、數組、指針、結構體、鏈表陵游、文件操作、隊列、棧等。
二:Linux基礎
Linux操作系統的概念、安裝方法,詳細了解Linux下的目錄結構、基本命令、編輯器VI ,編譯器GCC,調試器GDB和 Make 項目管理工具, Shell Makefile腳本編寫等知識,嵌入式開發環境的搭建。
重點學習網路編程相關API,熟練掌握TCP協議伺服器的編程方法和並發伺服器的實現,了解HTTP協議及其實現方法,熟悉UDP廣播、多播的原理及編程方法,掌握混合C/S架構網路通信系統的設計,熟悉HTML,Javascript等Web編程技術及實現方法。
五:數據結構與演算法
數據結構及演算法在嵌入式底層驅動、通信協議、及各種引擎開發中會得到大量應用,對其掌握的好壞直接影響程序的效率、簡潔及健壯性。此階段的學習要重點理解數據晌梁結構與演算法的基礎內容,包括順序表、鏈表、隊列、棧、樹、圖、哈希表、各種查找排序演算法等應用及其C語言實現過程。
Ⅸ ARM-linux boa php支持session嗎
支持。
注意: 順便說下4.8.1的64位gdb在debug編譯的32位程序會崩潰.
Ⅹ 嵌入式開發的方法步驟
嵌入式的方法步驟:
1、基礎知識或純:
目的:能看懂硬體工作原理,但重點在嵌入式軟體,
科目:數字電路、計算機組成原理、嵌入式微處理器結構。
匯編語言、C/C 、編譯原理、離散數學。
數據結構和演算法、操作系統、軟體工程、網路、資料庫。
方法:雖科目眾多,但都是較簡單的基礎,且大部分已把握。不一定全學,可根據需要選修。
主攻書籍:the c programming language(一直沒時間讀)、數據結構-C2。
2、學習linux:
目的:深入把握linux系統。
方法:使用linux—〉linxu系統編程開發—〉驅動開發和分析linux內核。先看深,那主講原理。看幾遍後,看情景分析,對照深看,兩本交叉,深是綱,情是目。剖析則是0.11版,適合學習。最後深入代碼。
主攻書籍:linux內核完全剖析、unix環境高級編程、深入理解linux內核、情景分析和源代。
3、學習嵌入式linux:
目的:把握嵌入式處理器其及系統。
方法:(1)嵌入式微處理器結構與應用:直接arm原理及匯編即可,不要重復x86。
(2)嵌入式操作系統類:ucOS/II簡單,開源,可供入門。而後深入研究uClinux。
(3)必須有塊開發板(arm9以上),有條件可參加培訓(進步快,能熟悉些朋友)。
主攻書籍:毛德操的《嵌入式系統》及其他arm9手冊與arm匯編指令等。 嵌入式系統無疑是當前最熱門最有發展前途的IT應用領域之一。嵌入式系統用在一些特定專用設備上,通常這些設備的硬體資源(如處理器、存儲器等)非常有限,並且對成本很敏感,有時對實時響應要求很高等。特別是隨著消費家電的智能化,嵌入式更顯重要。像我們平常常見到的手機、PDA、電子字典、可視電話、VCD/DVD/MP3 Player、數字相機(DC)、數字攝像機(DV)、U-Disk、機頂盒(Set Top Box)、高清電視(HDTV)、游戲機、智能玩具、交換機、路由器、數控設備或儀表、汽車電子、家電控制系統、醫療儀器、航天航空設備等等都是典型的嵌入式系統。嵌入式系統是軟硬結合的東西,搞嵌入式開發的人有兩類。一類是學電子工程、通信工程雹賣等偏硬體專業出身的人,他們衫肆咐主要是搞硬體設計,有時要開發一些與硬體關系最密切的最底層軟體,如BootLoader、Board Support Package(像PC的BIOS一樣,往下驅動硬體,往上支持操作系統),最初級的硬體驅動程序等。他們的優勢是對硬體原理非常清楚,不足是他們更擅長定義各種硬體介面,但對復雜軟體系統往往力不從心(例如嵌入式操作系統原理和復雜應用)。