第一篇:linux嵌入式學(xué)習(xí)流程及ARM學(xué)習(xí)大綱
課程大綱
● 第一階段 嵌入式Linux開發(fā)基礎(chǔ)
◆ 開學(xué)典禮、職業(yè)素養(yǎng):自我介紹;
◆ Linux基礎(chǔ)知識和系統(tǒng)安裝;
◆ Linux常用命令,文本編輯器vi,shell腳本編程;
◆ Linux開發(fā)環(huán)境基礎(chǔ):Gcc,Ddb,Maker和Makefile;
◆ 軟件版本管理;
◆ 嵌入式軟件開發(fā)環(huán)境搭建與使用
● 第二階段 嵌入式C語言編程
◆ 復(fù)習(xí)C語言基礎(chǔ)知識,強化指針和數(shù)組概念,學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)和一些基本算法; ◆ 全面了解C語言標準庫提供的功能;
◆ 深入介紹C程序在編譯時與運行時的基本原理;
◆ GNU C的拓展知識;
◆ 從宏觀和微觀的角度討論高質(zhì)量C語言編程;
◆ 詳細介紹嵌入式C的特性及應(yīng)用;
◆ 職業(yè)素養(yǎng):推銷自己。
● 第三階段 Linux系統(tǒng)程序設(shè)計
◆ 深入學(xué)習(xí)操作系統(tǒng)基礎(chǔ)知識;
◆ Linux系統(tǒng)程序設(shè)計:系統(tǒng)編程環(huán)境、常用調(diào)試工具,創(chuàng)建中止進程,進程間通訊;
◆ Linux網(wǎng)絡(luò)編程;
◆ 職業(yè)素養(yǎng):禮儀溝通、語言溝通;
● 第四階段 ARM原理與應(yīng)用
◆ 嵌入式系統(tǒng)基礎(chǔ):嵌入式系統(tǒng) 定義、發(fā)展,嵌入式實時操作系統(tǒng); ◆ ARM的基本概念及體系結(jié)構(gòu);
◆ ARM的編程模型;
◆ ADS集成開發(fā)環(huán)境;
◆ ARM匯編指令集;
◆ 嵌入式系統(tǒng)及接口設(shè)計;
◆ ARM協(xié)處理器。
● 第五階段 u-boot和Linux移植
◆ Linux內(nèi)核基礎(chǔ);
◆ Kernel的定制和編譯;
◆ 內(nèi)核移植;
◆ 內(nèi)核調(diào)試。
歡迎下載該文檔
● 第六階段 嵌入式Linux驅(qū)動開發(fā)
◆ 驅(qū)動程序概述;
◆ 字符設(shè)備驅(qū)動程序開發(fā); ◆ 設(shè)備驅(qū)動總的重要概念和機制;
◆ 塊設(shè)備驅(qū)動程序開發(fā); ◆ 塊設(shè)備驅(qū)動程序開發(fā)實例; ◆ 網(wǎng)絡(luò)設(shè)備驅(qū)動程序開發(fā)及實例; ◆ 音頻和顯示設(shè)備驅(qū)動程序開發(fā); ◆ 素質(zhì)培訓(xùn):如何寫簡歷。
● 第七階段 項目實踐
◆ 學(xué)習(xí)工程項目開發(fā)流程:項目需求、項目設(shè)計、程序編碼、程序調(diào)試與測試、版本發(fā)布;
◆ 以團隊方式分解項目,協(xié)作開發(fā)、各學(xué)員扮演不同角色; ◆ 項目開發(fā):個人移動終端實時通訊圖形管理系統(tǒng); ◆ 素質(zhì)培訓(xùn):面試訓(xùn)練、職業(yè)前引導(dǎo)。
Arm學(xué)習(xí)
課程大綱
◆ 幫助學(xué)員了解ARM體系結(jié)構(gòu)及工作原理,掌握
第一天
ARM指令集,學(xué)會操作ARM處理器基本方法。◆ 課程實驗:
◆為提高系統(tǒng)的綜合性能,“ARM和Thumb交互”是工程師在實際編程常用的一種方式。通過本天課程的學(xué)習(xí),學(xué)員可以了解Thumb指令的特點,掌握
第二天
ARM和Thumb指令交互方法?!爱惓!弊鳛樘幚砥鞯囊环N特殊工作方式在系統(tǒng)工作中扮演著重要的角色,本期課程也將幫助學(xué)員掌握ARM平臺異常產(chǎn)生的過程和處理方法?!?課程實驗:
◆雖然匯編指令可以完成我們所需要的所有功能,但相對C語言來說,匯編語言存在編寫復(fù)雜、可讀
第三天
性差等缺點,所以在實際的項目開發(fā)中,工程師通常會使用C或C++等高級語言來編寫主程序部分。通過第三天課程的學(xué)習(xí),學(xué)員可以掌握匯編、c、歡迎下載該文檔
c++混合編程的方法,完成對目標平臺的軟件編程,更好的熟悉嵌入式軟件的開發(fā)流程。◆ 課程實驗:
◆在學(xué)習(xí)完了理論知識后,該進入實踐環(huán)節(jié)了。嵌入式編程最終目標還是對接口設(shè)備的操作。通過第第四天
四天課程的學(xué)習(xí),學(xué)員可以掌握基于ARM的嵌入式硬件平臺接口設(shè)計以及各種常用接口的開發(fā); ◆ 課程實驗:
◆單個接口的操作最終還是要為一個綜合的軟件項目服務(wù),bootloader在嵌入式操作系統(tǒng)中占用重要地位,其編寫、移植是一項常見而復(fù)雜的工作。通過第五天課程的學(xué)習(xí),學(xué)員即能夠通過這個綜合第五天的軟件項目將前面的主要內(nèi)容融會貫通,還可以掌握 bootloader原理及開發(fā)過程,掌握和bootloader相關(guān)的接口開發(fā),了解嵌入式操作系統(tǒng)的結(jié)構(gòu)及啟動流程等。◆ 課程實驗:
三個月
◆ 企業(yè)項目實踐(自行操作,專家答疑)(三個月)
歡迎下載該文檔
第二篇:嵌入式linu學(xué)習(xí)心得
嵌入式Linux學(xué)習(xí)心得
1、Linux命令
ls:查看目錄-l以列表方式查看;ls –l 與ll的功能一樣 pwd: 查看當前的目錄
cd:改變當前操作目錄cd /直接跳到根目錄 cd..回到上一級目錄 cat: 打印顯示當前文件的內(nèi)容信息
mkdir:創(chuàng)建目錄
fdisk: 查看硬盤分區(qū)信息,-l以列表方式查看
->代表是鏈接文件,類似window下的快捷方式。
cp: 復(fù)制命令,例子cp 文件名 /home/dir/
mv: 移動或改名,如mv sonf.confsonf.txt(改名)移動:mv sonf.conf / rm:刪除命令,如rm –f test.c;如刪除目錄rm –fr d
man:查看某個命令的幫助,man 命令
2、各系統(tǒng)目錄的功能
drw—r—w--:d代表是目錄,drw代表當前用戶的權(quán)限,r代表組用戶的權(quán)限,w代表其它用戶的權(quán)限。x代表有執(zhí)行權(quán)限。
/boot/gruff.conf: 啟動引導(dǎo)程序
/dev:brw—rw--:b代表是塊設(shè)備。Linux設(shè)備有三種,塊設(shè)備(b開頭)、字符設(shè)備(c開頭)、網(wǎng)絡(luò)設(shè)備。had代表第一個硬盤,hdb代表第二個硬盤。Hdb2代表第二塊硬盤的第二個分區(qū)。3,67代表主設(shè)備為3,從設(shè)備為67./etc:存放的是系統(tǒng)的配置文件。Inittab文件存放不同啟動方式下必須啟動的進程。Inittab文件中有6個啟動level,wait中對應(yīng)著6個level的目錄,respawn代表當一個進程被意外終止了,但會自動啟動的進程,如守護進程。rc.d目錄中存放了一個rc.sysinit文件,里面存放系統(tǒng)初始化配置信息。/etc還有一個vsftpd里面存放tcp、ftp的配置。
/home : 用戶目錄,存放用戶的文件,/lib:存放庫文件,后綴為so的文件代表動態(tài)鏈接庫。
/lost+found:系統(tǒng)意外終止,存放一些可以找回的文件。
/mnt:掛載外部設(shè)備,如掛載光驅(qū):mount –t /dev/cdrom/mnt/cdrom,如
果在雙系統(tǒng)中,要查看windows中D盤的文件,首先應(yīng)該將D盤的文件映射過來,mount –t /dev/hda2/mnt/windows/d
/opt:用戶安裝的應(yīng)用程序
/proc:是系統(tǒng)運行的映射,比較重要。里面的文件數(shù)字代表進程號。每個進程號目錄下包含進程的基本信息。還有其他信息,如cpuinfo等,內(nèi)核支持的文件系統(tǒng)filesystem等。系統(tǒng)支持的中斷interrupts,iomen代表內(nèi)存分配情況。ioport存放IO端口號。還有分區(qū)信息,modole信息,狀態(tài)信息,版本信息
對于Linux的設(shè)備驅(qū)動程序,有兩種加載模式,一種是直接加載進linux內(nèi)核,一種是以模塊的方式加載到內(nèi)核。
/sbin: 系統(tǒng)管理的一些工具。如poweroff關(guān)機工具。
/usr: 安裝系統(tǒng)時很多文件放在此目錄下面,包含一些更新等,include包含的頭文件,lib 是Linux的庫文件,src包含Linux2.4的內(nèi)核源碼
/var:存放是臨時變量
3、
第三篇:實習(xí)總結(jié)-嵌入式ARM
實訓(xùn)總結(jié)
班級 卓越1301姓名***
通過這段時間的學(xué)習(xí)使我學(xué)到了很多知識,并且了解到ARM的應(yīng)用以及對開發(fā)板的應(yīng)用,為以后的學(xué)習(xí)奠定了一定的基礎(chǔ)。
嵌入式系統(tǒng)一般定義為以應(yīng)用為中心、以計算機技術(shù)為基礎(chǔ),軟硬件可裁剪,應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗和應(yīng)用環(huán)境有特殊要求的專用計算機系統(tǒng)。是將應(yīng)用程序、操作系統(tǒng)和計算機硬件集成在一起的系統(tǒng)這是從技術(shù)角度。從系統(tǒng)角度上是設(shè)計完成復(fù)雜功能的硬件和軟件,并使其緊密耦合在一起的計算機系統(tǒng)。
廣義上講,凡是帶有微處理器的專用軟硬件系統(tǒng)都可稱為嵌入式系統(tǒng)。如各類單片機和DSP系統(tǒng)。這些系統(tǒng)在完成較為單一的專業(yè)功能時具有簡潔高效的特點。但由于他們沒有操作系統(tǒng),管理系統(tǒng)硬件核軟件的能力有限,在實現(xiàn)復(fù)雜多任務(wù)功能時,往往困難重重,甚至無法實現(xiàn)。從狹義上講,我們更加強調(diào)那些使用嵌入式微處理器構(gòu)成獨立系統(tǒng),具有自己操作系統(tǒng),具有特定功能,用于特定場合的嵌入式系統(tǒng)。
嵌入式的應(yīng)用也比較廣泛涉及軍事國防、工業(yè)控制、消費電子和網(wǎng)絡(luò)。在家用方面更是數(shù)字電視、信息家電、智能玩具、手持通訊、存儲設(shè)備的核心。
在ARM指令集中了解到ARM的尋址方式以及它的的特性,具有高效、快速的特點,還有Thumb指令集具有靈活、小巧的特點。
在這次實訓(xùn)中做了兩個項目,一個是LED燈,實現(xiàn)LED燈的點亮是比較簡單的,通過查找手冊可以很快的了解到要使用的寄存器和方法,另一個項目是DS18B20這個比較復(fù)雜,除了要掌握對寄存器的使用,還要對了解對串口的初始化,讀寫字節(jié)等等。
感謝這次實訓(xùn),通過這次的實訓(xùn)項目,使我大體了解制作項目的步驟,了解了嵌入式技術(shù)的掌握是需要一個過程的。實事求是的說,嵌入式技術(shù)的全面掌握是有相當難度的,通過積累和動手總會有收獲的,從實驗中也明白了一個大的項目并不是一個人可以完成的,團隊協(xié)作很重要。
姓名:***
年級:卓越1301
2014-7-5
第四篇:嵌入式系統(tǒng)ARM實驗報告
南京郵電大學(xué)通信與信息工程學(xué)院
實驗報告
實驗名稱:實驗一基于ADS開發(fā)環(huán)境的設(shè)計
實驗二嵌入式Linux交叉開發(fā)環(huán)境的建立 實驗三嵌入式Linux環(huán)境下的程序設(shè)計
課程名稱嵌入式系統(tǒng)B
班級學(xué)號B13010711 姓名馬俊民
開課時間 2015/2016學(xué)年第1學(xué)期
實驗一基于ADS開發(fā)環(huán)境的程序設(shè)計
一、實驗?zāi)康?/p>
1、學(xué)習(xí)ADS開發(fā)環(huán)境的使用;
2、學(xué)習(xí)和掌握ADS環(huán)境下的匯編語言及C語言程序設(shè)計;
3、學(xué)習(xí)和掌握匯編語言及C語言的混合編程方法。
二、實驗內(nèi)容
1、編寫和調(diào)試匯編語言程序;
2、編寫和調(diào)試C語言程序;
3、編寫和調(diào)試匯編語言及C語言的混合程序;
4、編寫程序測試多寄存器傳送指令的用法。
三、實驗原理
ADS全稱為ARM Developer Suite,是ARM公司推出的新一代ARM集成開發(fā)工具。現(xiàn)在常用的ADS版本是ADS1.2,它取代了早期的ADS1.1和ADS1.0。
ADS用于無操作系統(tǒng)的ARM系統(tǒng)開發(fā),是對裸機(可理解成一個高級單片機)的開發(fā)。ADS具有極佳的測試環(huán)境和良好的偵錯功能,它可使硬件開發(fā)工作者更深入地從底層去理解ARM處理器的工作原理和操作方法,為日后自行設(shè)計打基礎(chǔ),為BootLoader的編寫和調(diào)試打基礎(chǔ)。
1.ADS軟件的組成
ADS由命令行開發(fā)工具、ARM運行時庫、GUI開發(fā)環(huán)境(CodeWarrior和AXD)、實用程序、支持軟件等組成。
2.GUI開發(fā)環(huán)境
ADS GUI開發(fā)環(huán)境包含CodeWarrior和AXD兩種,其中Code Warrior是集成開發(fā)工具,而AXD是調(diào)試工具。
使用匯編語言進行編程簡單、方便,適用于初始化硬件代碼、啟動代碼等。匯編語言具有一些相同的基本特征:
1.一條指令一行。
2.使用標號(label)給內(nèi)存單元提供名稱,從第一列開始書寫。3.指令必須從第二列或能區(qū)分標號的地方開始書寫。4.注釋必須跟在指定的注釋字符后面,一直書寫到行尾。
在ARM匯編程序中,每個段必須以AREA作為段的開始,以碰到下一個AREA作為該段的結(jié)束,段名必須唯一。程序的開始和結(jié)束需以ENTRY和END來標識。嵌入式C語言設(shè)計是利用基本的C語言知識,面向嵌入式工程實際應(yīng)用進行程序設(shè)計。為了使單獨編譯的C語言程序和匯編程序之間能夠相互調(diào)用,必須為子程序之間的調(diào)用規(guī)定一定的規(guī)則。ATPCS就是ARM程序和Thumb程序中子程序調(diào)用的基本規(guī)則。
四、實驗過程與關(guān)鍵代碼分析
1.創(chuàng)建項目工程
在File菜單中選擇New命令,打開一個新建工程對話框。在Project選項卡下,選擇ARM Executable Image, 然后在Project name文本框里輸入項目名稱,點擊確定。彈出工程窗口。
選擇File菜單中的New命令,選擇File標簽頁,在File name文本框中輸入要創(chuàng)建的文件名。匯編程序以.s結(jié)尾,c程序以.c結(jié)尾。在Location文本框中指定文件的存放位置,選中Add to Project,在Targets中選中DebugRel,單擊確定關(guān)閉窗口。
2.用匯編語言設(shè)計程序?qū)崿F(xiàn)10的階乘
AREA EXAMPLE, CODE, READONLY ENTRY start MOV R0, #10 MOV R1, #1 LOOP MUL R0, R0, R1 SUB R0, R0, 1 CMP R0, #1 BHI LOOP END 在這個程序中,我們首先對R0和R1賦值,將R0作為一個變量,而R1作為一個存貯階乘值的寄存器。在每進行一次乘法之后,將R0減1。同時在做完減法后進行判斷,如果此時R0大于1,則返回繼續(xù)乘法,否則結(jié)束程序,輸出結(jié)果。
3.用調(diào)用子程序的方法實現(xiàn)1!+2!+3!+?+10!,代碼如下: asmp.s
AREA JC, CODE, READONLY
EXPORT JCP
ENTRY JCP
ADD R3, R0, #1
MOV R2, #1
MOV R1, #1 LOOP MUL R0, R1, R2
MOV R1, R0
ADD R2, R2, #1
CMP R2, R3
BNE LOOP
NOP
NOP
MOV PC, LR
END
PROGC.c #include
int main(){ int res=0;int m=10;int i;for(i=1;i<=m;i++)
res=res+JCP(i);printf(“The result =%dn”,res);return 0;} 在這個程序中,主程序由c語言完成作求和,子程序由匯編語言寫成作階乘。
5.實現(xiàn)字符串的逆序復(fù)制TEXT1=“HELLO”=>TEXT2=“OLLEH”
AREA invstring, CODE, READONLY start
ADR R1,TEXT1
ADR R2,TEXT2
MOV R3, #0 LOOP
LDRB R0,[R1], #1
ADD R3,R3,#1
CMP R0,#0
BNE LOOP
SUB R1,R1,#2
LOOP1
LDRB R0,[R1], #-1
STRB R0,[R2], #1
SUB R3,R3, #1
CMP R3,#1
BNE LOOP1
MOV R5,#&55
TEXT1
TEXT2 NOP =“HELLO”,0 ALIGN =“OELLH” END
五、實驗小結(jié)
在這次實驗中,學(xué)會了如何使用匯編程序進行編程。對匯編程序編程一些基本的要求有了一定的了解,學(xué)習(xí)了C語言的語法和在其中調(diào)用匯編程序的方法。學(xué)會了利用CodeWarrior IDE開發(fā)C和ARM匯編代碼。學(xué)會了在AXD中進行代碼調(diào)試的方法和過程,對AXD的調(diào)試有初步的了解。,實驗二嵌入式Linux交叉開發(fā)環(huán)境的建立
一、實驗?zāi)康?/p>
1、掌握嵌入式Linux交叉開發(fā)環(huán)境的建立方法
2、學(xué)習(xí)和掌握Linux常用命令
3、學(xué)習(xí)和掌握vi編輯器的使用
二、實驗內(nèi)容
1、搭建嵌入式Linux交叉開發(fā)環(huán)境
2、熟悉Linux的常用命令
3、熟悉vi編輯器的常用命令
三、實驗原理
Linux系統(tǒng)是UNIX系統(tǒng)的分支,是UNIX的微機版。Linux具有異常豐富的驅(qū)動程序資源,支持各種主流的硬件設(shè)備與技術(shù)。Linux包含了現(xiàn)代的UNIX操作系統(tǒng)的所有功能特性,這些功能包括多任務(wù)、虛擬內(nèi)存、虛擬文件系統(tǒng)、進程間通信、對稱所處理器、多用戶支持等。
Vi編輯器是所有UNIX和Linux下的標準編輯器。它包含3種工作模式。嵌入式系統(tǒng)是專用的計算機系統(tǒng),它對系統(tǒng)的功能、可靠性、成本、體積、功耗等有嚴格的要求。大部分嵌入式系統(tǒng)沒有大容量存儲設(shè)備,一般不能安裝大型開發(fā)軟件,系統(tǒng)的開發(fā)需要采用交叉開發(fā)模式。
四、實驗過程與關(guān)鍵代碼分析
實驗用的是UP-NetARM2410-S試驗箱,里面配有三星的芯片S3c2410X。打開電腦上VMWare軟件,在Windows系統(tǒng)下啟動虛擬機里的Linux系統(tǒng)。接著需要
1.宿主機的環(huán)境搭建
下載并運行VMWare,根據(jù)向?qū)?chuàng)建一臺新虛擬機并選擇Linux作為客戶操作系統(tǒng),再根據(jù)向?qū)О惭bRedHat Linux 9.0。
2.虛擬機中啟動Linux操作系統(tǒng)
使用root登陸,用戶名為root,密碼為123456。之后對共享文件設(shè)置進行調(diào)整:打開settings界面,打開shared folders功能,同時將路徑設(shè)置到有課前下載的軟件的目錄下。
3.開發(fā)工具軟件的安裝(1)安裝gcc 打開Linux后,打開終端窗口,在共享的目錄下找到install.sh并運行,命令如下: ls./ install.sh 安裝程序?qū)⒆詣咏?arm2410s目錄,并將所有的開發(fā)軟件包安裝到/arm2410s 目錄下,同時自動配置編譯環(huán)境,建立合適的符號鏈接。安裝完成后在目錄/opt/host/armv4l/bin/下應(yīng)該能看到主編譯器。(2)配置PATH路徑
vi.bash.profile 將里面PATH變量改為PATH=$PATH:$HOME/bin:/opt/host/armv41/bin/;存盤后執(zhí)行
source.bash_profile 以后armv4l-unknown-linux-gcc將被自動搜索到
4.宿主機上的開發(fā)環(huán)境配置(1)配置IP地址
ifconfig eth0 192.168.0.121 命令配置了宿主機的IP地址。然后打開網(wǎng)絡(luò)配置窗口,重新探測MAC地址。重新激活。(2)關(guān)閉防火墻
單擊“Red”菜單→“系統(tǒng)設(shè)置”→“安全級別”→打開“安全級別配置”窗口,選擇“無防火墻選項。”(3)配置NFS。
單擊“Red”菜單→“系統(tǒng)設(shè)置”→“服務(wù)器設(shè)置”→“服務(wù)”,在“服務(wù)配置”窗口中勾選nfs,單擊“開始”(4)NFS設(shè)置
單擊“Red”菜單→“系統(tǒng)設(shè)置”→“服務(wù)器設(shè)置”→“NFS服務(wù)器”,打開“NFS服務(wù)器配置”窗口,設(shè)置NFS共享。
然后在NFS服務(wù)器中增加主機IP地址的鏈接許可和目錄。完成配置。
5.目標機的信息輸出
Windows系統(tǒng)下,“開始”→“所有程序”→“附件”→“通訊”→“超級終端”,新建一個通信終端。區(qū)號、電話號碼隨意輸入。設(shè)置每秒位數(shù)為“115200”,數(shù)據(jù)位為“8”,無奇偶校驗,停止位為“1”,無數(shù)據(jù)流控制。單擊“確定”。
6.程序的運行
打開超級終端,啟動Linux,屏幕顯示:
[/mnt/yaffs] 在超級終端上執(zhí)行掛載命令:
[/mnt] mount –t nfs 192.168.0.121:/arm2410s /mnt/nfs 掛載成功后可執(zhí)行程序。
五、實驗小結(jié)
在這次實驗中,學(xué)會建立Linux交叉開發(fā)環(huán)境,學(xué)會了ls和vi,cd等常用的Linux命令,并掌握了Vi編輯器的使用方法。同時知道了如何在搭建失敗時尋找錯誤進行排錯。
實驗三嵌入式Linux環(huán)境下的程序設(shè)計
一、實驗?zāi)康?/p>
1、掌握嵌入式Linux環(huán)境下的程序設(shè)計方法
2、學(xué)會編寫Makefile文件
二、實驗內(nèi)容
1、熟悉嵌入式教學(xué)實驗箱的使用
2、編寫C程序和Makefile文件
3、編譯程序產(chǎn)生可執(zhí)行程序
4、完成主機的掛載和程序的執(zhí)行
三、實驗原理
在嵌入式Linux環(huán)境下的程序設(shè)計方法有一下幾個步驟:
1.編寫源程序
2.編寫Makefile文件 3.編譯程序
4.運行和調(diào)試程序
5.將生產(chǎn)的可執(zhí)行文件加入文件系統(tǒng)。
前三個步驟在宿主機上完成,后面的步驟在目標機上完成。
四、實驗過程與關(guān)鍵代碼分析
1.建立工作目錄
mkdir hello cd hello
2.編寫源程序
用vi編輯器編輯Hello.c文件
vi Hello.c 在Vi中輸入源程序如下:
#include
printf(“hello world n”);}
3.編寫Makefile文件
vi Makefile 在vi中編輯Makefile文件如下:
CC= armv4l-unknown-linux-gcc EXEC = hello OBJS = hello.o CFLAGS += LDFLAGS+=-static all: $(EXEC)$(EXEC):(OBJS)$(CC)$(LDFLAGS)–o $@ $(OBJS)clean:
-rm –f $(EXEC)*.elf *.gdb *.o
4.編譯程序
在hello目錄下運行“make”來編譯程序。
make clean
make 編譯成功后,生成可執(zhí)行文件Hello.o。
5.下載調(diào)試
在宿主機上啟動nfs服務(wù),并將/arms2410s設(shè)置為共享目錄。接下來啟動超級終端,建立通訊,掛載。
[/mnt] mount –t nfs 192.168.0.121:/arm2410s /mnt/nfs 掛載成功后,進入/mnt/nfs,再進入/mnt/nfs/hello,直接運行剛剛編譯生成的可執(zhí)行文件Hello.o,查看運行結(jié)果
cd hello./hello 可以看見“Hello world”
只需要掛載一次便可,只要實驗箱沒有重啟,就可以一直保持連接。反復(fù)修改、編譯、調(diào)試,直至程序調(diào)試通過。
6.可執(zhí)行文件加入文件系統(tǒng)
程序調(diào)試通過后,可以把可執(zhí)行文件拖放到usr/bin目錄下,然后使用mkcramfs制作工具生成新的文件系統(tǒng)。當系統(tǒng)啟動后,就可以在相應(yīng)目錄下執(zhí)行可執(zhí)行程序hello.五、實驗小結(jié) 在這次實驗中,學(xué)會了在嵌入式Linux環(huán)境下設(shè)計程序。同時知道了如何對目標機進行掛載。以及如何在發(fā)現(xiàn)掛載不成功尋找錯誤進行修改。另外在編譯文件時需要注意的也都有所了解。
實驗四多線程程序設(shè)計
一、實驗?zāi)康?、2、二、實驗內(nèi)容1、2、3、4、三、實驗原理
四、實驗過程與關(guān)鍵代碼分析
五、實驗小結(jié)
3+
第五篇:ARM學(xué)習(xí)規(guī)劃(經(jīng)典).
ARM 學(xué)習(xí)規(guī)劃
ARM+LINUX路線,主攻嵌入式 Linux 操作系統(tǒng)及其上應(yīng)用軟件開發(fā)目標:(1 掌握主流嵌入式微處理器的結(jié)構(gòu)與原理(初步定為 arm9(2 必須掌握一個嵌入式操作系統(tǒng)(初步定為 uclinux 或 linux, 版本待定(3 必須熟悉嵌入式軟件開發(fā)流程并至少做一個嵌入式軟件項目。從事嵌入式軟件開發(fā)的好處是:(1目前國內(nèi)外這方面的人都很稀缺。這一領(lǐng)域入門門檻較高,所以非專業(yè) IT 人員很難切入這一領(lǐng)域;另一方面,是 因為這一領(lǐng)域較新,目前發(fā)展太快,大多數(shù)人無條件接觸。
(2與企業(yè)計算等應(yīng)用軟件不同,嵌入式領(lǐng)域人才的工作強度通常低一些(但收入不低。
(3哪天若想創(chuàng)業(yè),搞自已的產(chǎn)品,嵌入式不像應(yīng)用軟件那樣容易被盜版。硬件設(shè)計一般都是請其它公司給訂做(這 叫 “ 貼牌 ” :OEM ,都是通用的硬件,我們只管設(shè)計軟件就變成自己的產(chǎn)品了。
(4興趣所在,這是最主要的。從事嵌入式軟件開發(fā)的缺點是:(1 入門起點較高,所用到的技術(shù)往往都有一定難度,若軟硬件基礎(chǔ)不好,特別是操作系統(tǒng)級軟件功底不深,則可能 不適于此行。
(2這方面的企業(yè)數(shù)量要遠少于企業(yè)計算類企業(yè)。
(3有少數(shù)公司經(jīng)常要碩士以上的人搞嵌入式,主要是基于嵌入式的難度。但大多數(shù)公司也并無此要求,只要有經(jīng)驗 即可。
(4平臺依托強,換平臺比較辛苦。興趣的由來:
1、成功觀念不同,不虛度此生,就是我的成功。
2、喜歡思考,挑戰(zhàn)邏輯思維。
3、喜歡 C C 是一種能發(fā)揮思維極限的語言。關(guān)于 C 的精神的一些方面可以被概述成短句如下: 相信程序員。
不要阻止程序員做那些需要去做的。保持語言短小精干。一種方法做一個操作。
使得它運行的夠快,盡管它并不能保證將是可移植的。
4、喜歡底層開發(fā),討厭 vb 類開發(fā)工具(并不是說 vb 不好。
5、發(fā)展前景好,適合創(chuàng)業(yè),不想自己要死了的時候還是一個工程師。方法步驟:
1、基礎(chǔ)知識: 目的:能看懂硬件工作原理,但重點在嵌入式軟件, 特別是操作系統(tǒng)級軟件 ,那將是我的優(yōu)勢。
科目:數(shù)字電路、計算機組成原理、嵌入式微處理器結(jié)構(gòu)。
匯編語言、C/C++、編譯原理、離散數(shù)學(xué)。
數(shù)據(jù)結(jié)構(gòu)和算法、操作系統(tǒng)、軟件工程、網(wǎng)絡(luò)、數(shù)據(jù)庫。
方法:雖科目眾多,但都是較簡單的基礎(chǔ),且大部分已掌握。不一定全學(xué),可根據(jù)需要選修。
主攻書籍:the c++ programming language(一直沒時間讀、數(shù)據(jù)結(jié)構(gòu)-C2。
2、學(xué)習(xí)linux : 目的:深入掌握 linux 系統(tǒng)。
方法:使用 linux — 〉 linxu 系統(tǒng)編程開發(fā) — 〉驅(qū)動開發(fā)和分析 linux 內(nèi)核。先看深,那主講原理??磶妆楹?看情景分析, 對照深看,兩本交叉,深是綱,情是目。剖析則是 0.11版,適合學(xué)習(xí)。最后深入代碼。
主攻書籍:linux 內(nèi)核完全剖析、unix 環(huán)境高級編程、深入理解 linux 內(nèi)核、情景分析和源代。
3、學(xué)習(xí)嵌入式 linux : 目的:掌握嵌入式處理器其及系統(tǒng)。方法:(1嵌入式微處理器結(jié)構(gòu)與應(yīng)用:直接 arm 原理及匯編即可,不要重復(fù) x86。(2嵌入式操作系統(tǒng)類:ucOS/II簡單,開源,可供入門。而后深入研究 uClinux。(3必須有塊開發(fā)板(arm9以上 ,有條件可參加培訓(xùn)(進步快,能認識些朋友。主攻書籍:毛德操的《嵌入式系統(tǒng)》及其他 arm9手冊與 arm 匯編指令等。
4、深入學(xué)習(xí):
A、數(shù)字圖像壓縮技術(shù):主要是應(yīng)掌握 MPEG、mp3等編解碼算法和技術(shù)。B、通信協(xié)議及編程技術(shù):TCP/IP協(xié)議、802.11, Bluetooth , GPRS、GSM、CDMA 等。
C、網(wǎng)絡(luò)與信息安全技術(shù):如加密技術(shù),數(shù)字證書 CA 等。
D、DSP 技術(shù):Digital Signal Process, DSP 處理器通過硬件實現(xiàn)數(shù)字信號處理算法。
說明:太多細節(jié)未說明,可根據(jù)實際情況調(diào)整。重點在于1、3,不必完全按照順序作。對于學(xué)習(xí)c++,理由是 c++不只 是一種語言,一種工具,她還是一種藝術(shù),一種文化,一種哲學(xué)理念、但不是拿來炫耀得東西。對于 linux 內(nèi)核,學(xué)習(xí)編程,讀一些優(yōu)秀代碼也是有必要的。
注意:要學(xué)會舉一反多,有強大的基礎(chǔ),很多東西簡單看看就能會。想成為合格的程序員,前提是必須熟練至少一種 編程語言,并具有良好的邏輯思維。一定要理論結(jié)合實踐。
不要一味鉆研技術(shù),雖然擠出時間是很難做到的,但還是要留點余地去完善其他的愛好,比如宇宙,素描、機械、管理, 心理學(xué)、游戲、科幻電影。還有一些不愿意做但必須要做的!技術(shù)是通過編程編程在編程編出來的。永遠不要夢想一步登天,不要做浮躁的人,不要覺得路途漫上。而是要編程編程 在編程,完了在編程,在編程!等機會來了在創(chuàng)業(yè)(不要相信有奇跡發(fā)生,盲目創(chuàng)業(yè)很難成功,即便成功了發(fā)展空間也 不一定很大。
嵌入式書籍推薦 Linux 基礎(chǔ)
1、《 Linux 與 Unix Shell 編程指南》
C 語言基礎(chǔ)
1、《 C Primer Plus, 5th Edition》 【美】 Stephen Prata著
2、《 The C Programming Language, 2nd Edition》 【美】 Brian W.Kernighan David M.Rithie(K & R著
3、《 Advanced Programming in the UNIX Environment, 2nd Edition》(APUE
4、《嵌入式 Linux 應(yīng)用程序開發(fā)詳解》 Linux 內(nèi)核
1、《深入理解 Linux 內(nèi)核》(第三版
2、《 Linux 內(nèi)核源代碼情景分析》毛德操 胡希明著 研發(fā)方向
1、《 UNIX Network Programming》(UNP
2、《 TCP/IP詳解》
3、《 Linux 內(nèi)核編程》
4、《 Linux 設(shè)備驅(qū)動開發(fā)》(LDD 硬件基礎(chǔ)
1、《 ARM 體系結(jié)構(gòu)與編程》杜春雷著
2、S3C2410 Datasheet 英語基礎(chǔ)
1、《計算機與通信專業(yè)英語》
系統(tǒng)教程
1、《嵌入式系統(tǒng) ―― 體系結(jié)構(gòu)、編程與設(shè)計》
2、《嵌入式系統(tǒng) ―― 采用公開源代碼和 StrongARM/Xscale處理器》毛德操 胡希明著
3、《 Building Embedded Linux Systems》 理論基礎(chǔ)
1、《算法導(dǎo)論》
2、《數(shù)據(jù)結(jié)構(gòu)(C 語言版 》 阿斯事實上