第一篇:ARM嵌入式linux復習心得總結1
2011.10.9 Evo楊
ARM嵌入式linux復習心得總結1:
一、Linux定制安裝:
從新安裝配置了一遍Linux,我使用的是Vmware7.0安裝RHEL5.5,對于Linux的安裝主要是要選擇定制安裝也就是Vmware7.0(下面簡稱Vm)中新建虛擬機開始部分選擇”Custom(advanced)”,因為這里我所使用的FTP、sumba等服務器是需要定制加上的一開始沒有注意結果悲劇了…(以后一定要仔細的選擇!),在next后面應該選擇最后一個選項這樣自定義的選項會更加多,同樣可以選擇定制安裝的一些選項,在這里同樣有個地方要注意:
1、最好使用默認的內存分配方式
2、*(重要)選擇bridged networking 的網絡連接方式(這里要注意,第一次安裝的時候沒有注意使用的是默認值也就是NET模式,最后在設置NFS和sumba服務器的時候(也可能是其他的操作錯誤)無法與PC機ping通訊這里花費了大量的時間研究!后面就是Linux系統的安裝了,這里我使用的是圖形化界面的安裝(以前大一的時候用命令行安過一次自己英語太垃圾了,安了整整一上午…)
3、在最后配置的時候防火墻要禁用,因為這里防火墻會阻止一切自發的與本機聯網的事件,在后面使用NFS以及sumba服務器的時候是不能打開的,第一次安裝的時候吃過這方面的虧以后要注意!
4、禁用SELinux,這個也是與安全有關的,現在暫時禁用就可以了。
二、再次回顧了一下Linux的命令,這里比較熟悉,跟走路一樣這里必須專業起來!總的來說有一下幾個命令必須靈活運用:
1、useradd(添加用戶名,后面使用sumba服務器的時候需要用到,使用率較低)
2、passwd(添加用戶密碼,一般配合useradd使用,使用率較低)
3、su(切換用戶,經常用)
4、shutdown(關機命令,用法有多種,我一般不用,虛擬機直接斷電就行了)
5、cp(拷貝,不解釋)
6、mv(移動或更名,不解釋)
7、rm(刪除,不解釋)
8、mkdir(創建目錄)
9、cd(改變工作目錄,經常用)
10、pwd(顯示當前目錄)
11、ls(查看目錄)
12、tar(針對tar.gz打包和解壓,這里主要記住 tar cvzf * 和tar xvzf * 一個是壓縮,一個是解壓)
13、tar(針對tar打包和解壓,這里主要記住 tar cvf * 和tar xvf * 一個是壓縮,一個是解壓)
14、unzip(解壓zip文件)
15、chmod(更改權限)
16、df(查看磁盤使用情況)
17、ifconfig(查看網絡配置、查看ip等)
18、netstat(查看網絡狀態)
19、grep(查找字符串,這個其實很重要,但自己總是忘記可能是一般不用的原因)20、rpm(用于軟件安裝)
21、mount(掛載,很重要用語掛載CDROM、硬盤以及共享文件等)
22、find(找到*文件存在路徑)
三、vi編輯器的使用,使用比較熟練好像加“!”的都是強制執行的。
四、安裝tftp服務器:
常用命令:*netstat –a | grep tftp 這里檢測當前tftp的情況,在資料上是說檢測安裝情況,我覺得不是應該是檢測啟動情況,當然這個也是包括安裝與否的,這里要注意!有的時候他是安裝上的但是沒有打開,查看配置文件是就會發現disable 默認是 = yes 意思是默認是關閉的我們有幾種方法將他打開:
1、使用setup命令啟動tftp
2、配置 #vi /etc/xinetd.d/tftp 中把disable中的yes改為no
3、使用命令啟動 #/etc/init.d/xinetd start
五、安裝NFS服務器: 這個功能是共享Linux與Linux之間文件的,后面開發ARM的時候聯通內核與文件系統使用
六、安裝samba服務器
首先是要配置samba服務器的配置文件位置在:#vi /etc/samba/smb.conf 在Share Definitions中添加 【root】
Comment
= Root Ditectories
Browseable
= yes
Writable
= yes
Path
= /
valid users
=
smb
valid users
=
MYDOMAIN%s 其中可以在【home】前在命令模式下輸入“6yy”(復制這六行!)然后再輸入“p”(粘貼)然后再修改,這樣修改起來比較方便,也是絕大多數教程都使用的方法,其中要注意幾點:
1、要是使用復制方法然后修改的話要注意看清楚Comment這行后面Root Ditectories 這行的Root是不要忘了修改【homes】中式Home而【root】中是Root切記!(這里自己在前一次安裝的時候沒有留意導致后面Samba 服務器不能使用!!)
2、smb 這是用戶名這里引用一下教材的語言:添加用戶,注意添加用戶的用戶與修改配置文件部分valid users = smb相同,如果smb用戶存在則不需要添加!
配置完畢要重新啟動samba服務器 #/etc/init.d/smb restart
最后在windows中運行即可。
七、Samba、NFS等PC與虛擬機的網絡配置(重點)這里著重總結一下這次網絡的配置,虛擬機的網絡配置非常重要,即使Linux不需要上網可是他們之間的數據傳送也是十分必要的,例如Vmtools這個工具,smb、NFS、tftp等,我在這里的網絡配置花費了大量的時間研究,主要是samba服務器總不能配置成功,網上也有許多的方法不過講的都很細許多功能的實現都比較抽象,我之所以總是沒有成功在上面的幾個方面上已經詳細的解釋了,這里不再次做總結,其中有幾點與老師或查資料得到的幾點信息在這里要總結一下:
1、在所有的服務器等聯網活動之前一定要把網絡通信配置好!在PC中首先要ipconfig一下查詢一下PC機網絡配置情況(ip、網關等)然后再在虛擬機中使用命令setup打開網絡配置去掉自動分配IP選用靜態ip然后將ip等項目輸入進去,這里要輸入的一共三項,后兩項是相同的只有ip是需要改變的,切記要分配在同一個網段!這樣才能實現局域網功能
2、我問了問教授Linux的一位老師他曾經因為更改了本地連接的IP導致虛擬機上的網絡服務器不能用了,當更改回原來的ip才能使用,這里我并沒有出現這種情況因為我在設置ip的時候使用的是動態分配地址的ip路由器,在設置完成后并沒有出現服務器失效的情況所以我認為這里老師可能使用了某個ip綁定了吧。
八、Vmtools的安裝使用
這個工具很好用在XP中安裝比較方便,但在Linux中有點兒復雜,當然只是有點兒而已,使用Vmware自動下載就可以完成后Linux自動加載了一個cdrom里面就有一個vmtools的tar 解壓包(有時需要自己加載)他在文件中找到安裝文件安裝即可。這里引用一下網絡同仁的資源我覺得他寫的吧、簡單明了(http://www.tmdps.cntl.h> void create_file(char *filename){ If(create(filename,0666)<0)
//創建文件函數判斷創建是否成功 后面的是文件的權限:可讀可寫不可執行!
{ printf(“create file %s failure!n”,filename);
exit(EXIT_FAILURE);} Else { Printf(“create file %s success!”,filename);} }
Int main(int argc,char *argv[])// 這里的argc是程序參數個數(如ls –a 這就是兩個參數,也就是說是兩個字符串,而argv【】表示的是參數名字 argv【0】=ls argv【1】=-a 后面應該還有一個參數char *env 代表的是環境變量的字符串(各種路徑)){
If(argc<2)
//判斷文件是否符合要求,這個一般小于0就行 { Perror(“you haven’t input the filename,please try again!n”);
Exit(EXIT_FAILURE);//這個最后等于1 其實就是個return 1; } Create_file(argv[1]);Exit(EXIT_SUCCESS);
//這個最后等于0 其實就是個return 0;
}
十一、今天心得體會:錯誤與進步同在!正視錯誤,解決錯誤,取得進步!
第二篇:ARM嵌入式linux復習心得總結1
2011.10.9 Evo楊
ARM嵌入式linux復習心得總結1:
一、Linux定制安裝:
從新安裝配置了一遍Linux,我使用的是Vmware7.0安裝RHEL5.5,對于Linux的安裝主要是要選擇定制安裝也就是Vmware7.0(下面簡稱Vm)中新建虛擬機開始部分選擇”Custom(advanced)”,因為這里我所使用的FTP、sumba等服務器是需要定制加上的一開始沒有注意結果悲劇了…(以后一定要仔細的選擇!),在next后面應該選擇最后一個選項這樣自定義的選項會更加多,同樣可以選擇定制安裝的一些選項,在這里同樣有個地方要注意:
1、最好使用默認的內存分配方式
2、*(重要)選擇bridged networking 的網絡連接方式(這里要注意,第一次安裝的時候沒有注意使用的是默認值也就是NET模式,最后在設置NFS和sumba服務器的時候(也可能是其他的操作錯誤)無法與PC機ping通訊這里花費了大量的時間研究!后面就是Linux系統的安裝了,這里我使用的是圖形化界面的安裝(以前大一的時候用命令行安過一次自己英語太垃圾了,安了整整一上午…)
3、在最后配置的時候防火墻要禁用,因為這里防火墻會阻止一切自發的與本機聯網的事件,在后面使用NFS以及sumba服務器的時候是不能打開的,第一次安裝的時候吃過這方面的虧以后要注意!
4、禁用SELinux,這個也是與安全有關的,現在暫時禁用就可以了。
二、再次回顧了一下Linux的命令,這里比較熟悉,跟走路一樣這里必須專業起來!總的來
說有一下幾個命令必須靈活運用:
1、useradd(添加用戶名,后面使用sumba服務器的時候需要用到,使用率較低)
2、passwd(添加用戶密碼,一般配合useradd使用,使用率較低)
3、su(切換用戶,經常用)
4、shutdown(關機命令,用法有多種,我一般不用,虛擬機直接斷電就行了)
5、cp(拷貝,不解釋)
6、mv(移動或更名,不解釋)
7、rm(刪除,不解釋)
8、mkdir(創建目錄)
9、cd(改變工作目錄,經常用)
10、pwd(顯示當前目錄)
11、ls(查看目錄)
12、tar(針對tar.gz打包和解壓,這里主要記住 tar cvzf * 和tar xvzf * 一個是壓縮,一個是解壓)
13、tar(針對tar打包和解壓,這里主要記住 tar cvf * 和tar xvf * 一個是壓縮,一個是解壓)
14、unzip(解壓zip文件)
15、chmod(更改權限)
16、df(查看磁盤使用情況)
17、ifconfig(查看網絡配置、查看ip等)
18、netstat(查看網絡狀態)
19、grep(查找字符串,這個其實很重要,但自己總是忘記可能是一般不用的原因)
20、rpm(用于軟件安裝)
21、mount(掛載,很重要用語掛載CDROM、硬盤以及共享文件等)
22、find(找到*文件存在路徑)
三、vi編輯器的使用,使用比較熟練好像加“!”的都是強制執行的。
四、安裝tftp服務器:
常用命令:*netstat –a | greptftp這里檢測當前tftp的情況,在資料上是說檢測安裝情況,我覺得不是應該是檢測啟動情況,當然這個也是包括安裝與否的,這里要注意!有的時候他是安裝上的但是沒有打開,查看配置文件是就會發現disable 默認是 = yes 意思是默認是關閉的我們有幾種方法將他打開:
1、使用setup命令啟動tftp2、配置 #vi /etc/xinetd.d/tftp 中把disable中的yes改為no3、使用命令啟動 #/etc/init.d/xinetd start
五、安裝NFS服務器: 這個功能是共享Linux與Linux之間文件的,后面開發ARM的時候
聯通內核與文件系統使用
六、安裝samba服務器
首先是要配置samba服務器的配置文件位置在:#vi /etc/samba/smb.conf
在Share Definitions中添加
【root】
Comment=Root Ditectories
Browseable=yes
Writable=yes
Path=/
valid users=smb
valid users=MYDOMAIN%s
其中可以在【home】前在命令模式下輸入“6yy”(復制這六行?。┤缓笤佥斎搿皃”(粘貼)然后再修改,這樣修改起來比較方便,也是絕大多數教程都使用的方法,其中要注意幾點:
1、要是使用復制方法然后修改的話要注意看清楚Comment這行后面Root
Ditectories 這行的Root是不要忘了修改【homes】中式Home而【root】
中是Root切記?。ㄟ@里自己在前一次安裝的時候沒有留意導致后面Samba
服務器不能使用?。。?/p>
2、smb 這是用戶名這里引用一下教材的語言:添加用戶,注意添加用戶的用戶與修改配置文件部分valid users = smb相同,如果smb用戶存在則不
需要添加!
配置完畢要重新啟動samba服務器 #/etc/init.d/smb restart
最后在windows中運行即可。
七、Samba、NFS等PC與虛擬機的網絡配置(重點)
這里著重總結一下這次網絡的配置,虛擬機的網絡配置非常重要,即使Linux不需要上
網可是他們之間的數據傳送也是十分必要的,例如Vmtools這個工具,smb、NFS、tftp等,我在這里的網絡配置花費了大量的時間研究,主要是samba服務器總不能配置成功,網上也有許多的方法不過講的都很細許多功能的實現都比較抽象,我之所以總是沒有成功在上面的幾個方面上已經詳細的解釋了,這里不再次做總結,其中有幾點與老師或查資料得到的幾點信息在這里要總結一下:
1、在所有的服務器等聯網活動之前一定要把網絡通信配置好!在PC中首先要ipconfig
一下查詢一下PC機網絡配置情況(ip、網關等)然后再在虛擬機中使用命令setup打開網絡配置去掉自動分配IP選用靜態ip然后將ip等項目輸入進去,這里要輸入的一共三項,后兩項是相同的只有ip是需要改變的,切記要分配在同一個網段!這樣才能實現局域網功能
2、我問了問教授Linux的一位老師他曾經因為更改了本地連接的IP導致虛擬機上的網
絡服務器不能用了,當更改回原來的ip才能使用,這里我并沒有出現這種情況因為我在設置ip的時候使用的是動態分配地址的ip路由器,在設置完成后并沒有出現服務器失效的情況所以我認為這里老師可能使用了某個ip綁定了吧。
八、Vmtools的安裝使用
這個工具很好用在XP中安裝比較方便,但在Linux中有點兒復雜,當然只是有點
兒而已,使用Vmware自動下載就可以完成后Linux自動加載了一個cdrom里面就有一個vmtools的tar 解壓包(有時需要自己加載)他在文件中找到安裝文件安裝即可。這里引用一下網絡同仁的資源我覺得他寫的吧、簡單明了(http:///viewarticle.php?id=66813)
安裝linux時,一定要安裝gcc和kernel-source,VMware要對內核頭文件進行編譯。注:linux區分大小寫,例如,用戶名root和Root就是兩個用戶了。你想進入tmp目錄,而你輸入的是Tmp,嘿嘿,肯定是進不去的!
按下alt+f2,輸入konsole 新建一個終端。
注:如果你不是以root用戶登錄,你不能安裝程序。用su命令可以切換到root用戶,不會用命令的話,注銷后用root登錄。
輸入 /sbin/telinit
3用root登錄,輸入root的密碼,如果你忘了,我只能同情你了。按下alt+ctrl把鼠標切出來,點擊菜單上的“安裝VMware-tools”。
回到虛擬機中,掛載cdrom。
mount /dev/cdrom /mnt/cdrom進入cdrom目錄
cd /mnt/cdrom將光盤中的內容復制到tmp目錄下
cp VM* /tmp/
注:*號是通配符。還有,輸入單個命令時按Tab自動輸入。
進入tmp目錄
cd /tmp
解壓縮.tar.gz文件
tar zvxf VMware*.tar.gz
屏幕嘩嘩的閃呀!進入解壓后的vmware-tools-distrib目錄
cd vmware-tools-distrib
執行安裝文件
./vm*.pl
一路默認回答,皆按回車鍵。
以上都很順利,很多人都卡在了這里,這個該死的目錄怎么也找不到,why?是因為你沒安裝gcc或kernel-source,回本文開頭去看吧!
配置你的x windows 設置。輸入yes并按回車鍵。
選擇你linux的顯示屏幕大小。
Enioy!
最后顯示的是VMware開發組的注記。要讓他們知道中國有這么多用破解版的,他們就不這么寫了。呵呵。
輸入startx啟動Xwindows
OK。
我就是參考這個文章安裝完成的它使用的是紅旗的Linux不過我在紅帽的Linux5中同樣使用順利所以將此貼貼上便于以后參考!
九、Makefile
Makefile是個將多個文件鏈接編譯的工具使用方法很簡單假設有兩個文件一個是main.c 一個是fun.c以及同文件 fun.h
建立Makefile文件輸入:
main:main.o fun.ogcc main.o fun.o –o main main.o:main.c fun.hgcc –c main.c –o main.o fun.o:fun.c fun.hgcc –c fun.c –o fun.o clean:rm –f main *.o(這部分代碼在make clean時執行!)從中可以看出編譯的規律
目標:匯編文件…..gcc 匯編文件
1、匯編文件
2、…..–o 目標文件名(這里同編譯一條代碼時相同)
十、文件編程-文件創建
#include
#include
#include
#include
#include
void create_file(char *filename)
{
If(create(filename,0666)<0)//創建文件函數判斷創建是否成功 后面的是文件的權限:可讀可寫不可執行!
{printf(“create file %s failure!n”,filename);exit(EXIT_FAILURE);
}
Else
{
Printf(“create file %s success!”,filename);
}
}
Int main(int argc,char *argv[])// 這里的argc是程序參數個數(如ls –a這就是兩個參數,也就是說是兩個字符串,而argv【】表示的是參數名字 argv【0】=lsargv【1】=-a后面應該還有一個參數char *env 代表的是環境變量的字符串(各種路徑)){
If(argc<2)//判斷文件是否符合要求,這個一般小于0就行 {Perror(“you haven’t input the filename,please try again!n”);Exit(EXIT_FAILURE);//這個最后等于1其實就是個return 1;
}
Create_file(argv[1]);
Exit(EXIT_SUCCESS);//這個最后等于0其實就是個return 0;
}
十一、今天心得體會:錯誤與進步同在!正視錯誤,解決錯誤,取得進步!
第三篇:ARM嵌入式技術復習總結
第一章 1.嵌入式系統定義/概念:嵌入式系統就是嵌入到對象體中的專用計算機系統。三要素:嵌入、專用、計算機。嵌入性:嵌入到對象體系中,有對象環境要求,專用性:軟、硬件按對象要求裁減,計算機:實現對象的智能化功能。廣義的講,一個嵌入式系統就是一個具有特定功能或用途的計算機軟硬件集合體,即以應用為中心,以計算機技術為基礎,軟硬件可裁剪,適應應用對功能??煽啃浴⒊杀?、體積、功耗嚴格要求的專用計算機系統。嵌入式系統發展的最高形式——片上系統(SOC)2.嵌入式系統的特性:a.只執行特定功能;b.以微控制器、外圍器件為中心,系統構成可大可小;c.有嚴格的時序性和穩定性要求;d.自動操作循環,等待中斷控制;e.程序被燒寫在存儲芯片中。(開發時應注意的a.嵌入式系統是面向具體應用的產品b.嵌入式軟件特征:具有實時性,高質量、高可靠,程序固化c.需要軟硬件開發工具和系統軟件d.需要應用專家參與開發e.嵌入式系統分散而不可壟斷)3.嵌入式系統的分類:a.按表現形式分(硬件范疇):芯片級嵌入(含程序或算法的處理器)、模塊級嵌入(系統中的某個核心模塊)、系統級嵌入(完整系統并有嵌入軟件)b.按實時性要求分(軟件范疇):非實時系統(PDA)、實時系統(軟實時系統:消費類產品。硬實時系統:工業和軍工系統)4.嵌入式微處理器(發展趨勢:經濟性、微型化、智能化)主要分類: 微控制器(MCU)(51單片機)、微處理器(MPU)(ARM、PowerPC)、數字信號處理器(DSP)(一般用在快速執行算法,做控制比較困難)、混合處理器和片上系統(SOC)(結構簡潔,體積小、功耗低,可靠性高,設計生產效率高。Smart XA)、可編程片上系統(SOPC)5.嵌入式系統組成:粗略劃分:嵌入式處理器、外圍設備、嵌入式操作系統(可選)、嵌入式應用軟件。稍細劃分:嵌入式處理器、外圍設備、驅動程序、嵌入式操作系統、應用接口、嵌入式應用軟件。6.嵌入式操作系統簡介:a.嵌入式操作系統是支持嵌入式系統的操作系統,它是嵌入式應用軟件的基礎和開發平臺。b.功能:進程調度、內存管理、設備管理、文件管理、中斷管理、系統功能接口(API調用,如網絡功能)、設備驅動。c.特點:系統可裁減、可配置,系統具有實時性,系統穩定、可靠。d.實時系統的定義:能夠對外部事件做出及時響應的系統,響應時間要有保證。硬實時系統:對系統響應時間有嚴格的要求,如果系統響應時間不能滿足,就會引起系統崩潰或致命的錯誤。軟實時系統:對系統響應時間有要求,但是如果系統響應時間不能滿足,它并不會導致系統出現致命的錯誤或崩潰,只是降低系統的吞吐量。e.幾種主流的嵌入式操作系統:μC/OS-II:教學的免費、面向中小型嵌入式系統應用。Vxworks:具有可靠、實時、可裁減特性。WinCE:它是微軟針對個人電腦以外的電腦產品所研發的嵌入式操作系統。Linux/μCLinux:免費、源碼開放的操作系統,μclinux面向沒有MMU的硬件平臺。PalmOS :具有開放的操作系統應用程序接口(API),可讓用戶靈活方便地定制操作系統。
第二章1.ARM體系的特點:a.低功耗、低成本、高性能(3/5級流水線)。b.采用RISC體系結構。c.使用大量的寄存器(37個寄存器31個通用6個狀態)d.高效的指令系統(Thumb指令與等價的ARM代碼相比較可節省30~40%以上的存儲空間)e.在保證高性能的前提下盡量縮小芯片面積、降低功耗;所有的指令都可以根據前面的執行結果決定是否被執行。2.ARM7采用3級流水線(是把一個重復的過程分解為若干個子過程,每個子過程可以與其他子過程同時進行):取指(從程序存儲器中取指令,放入指令流水線,占用存儲器訪問操作)、譯碼(指令譯碼,占用譯碼邏輯)、執行(執行指令/讀寫reg,占用ALU及數據路徑)。一條指令有3個時鐘周期的執行時間,但吞吐量是每個周期1條指令。PC 指向處于讀取級的指令地址,而不是處于執行級的指令地址PC=當前執行指令地址+8。比較:ARM9是5級流水線(取指、譯碼、執行、存儲器、寫),哈佛架構,擁有獨立的指令和數據總線;指令和數據的讀取可以在同一周期進行。3級流水的ARM7內核是指令和數據總線復用的馮.諾依曼架構,指令和數據的讀取不能在同一周期進行;5級流水線設計把寄存器讀取、邏輯運算、結果回寫分散在不同的流水當中,每一級流水的操作簡潔,提升了處理器的主頻。3.ARM微處理器的工作狀態與模式:兩種工作狀態:ARM狀態,此時處理器執行32位的字對齊的ARM指令;Thumb狀態,此時處理器執行16位的、半字對齊的Thumb指令。狀態切換:ARM?THUMB:當操作數寄存器的狀態位(位0)為1時,可以采用執行BX指令的方法;當處理器處于Thumb狀態時發生異常,則異常處理返回時,自動切換到Thumb狀態。THUMB?ARM:當操作數寄存器的狀態位為0時,執行BX指令;在處理器進行異常處理時,把PC指針放入異常模式鏈接寄存器中,并從異常向量地址開始執行程序,也可使處理器切換到ARM狀態。模式:用戶模式:ARM處理器正常的程序執行狀態,大部分任務執行在這種模式;快速中斷模式:當一個高優先級中斷產生時將會進入這種模式,用于高速數據傳輸或通道處理;外部中斷模式:當一個低優先級中斷產生時將會進入這種模式,用于通用的中斷處理;管理模式:當復位或軟中斷指令執行時將會進入這種模式,供操作系統使用的一種保護模式;中止模式:當存取異常時將會進入這種模式,用于虛擬存儲及存儲保護;未定義模式:當執行未定義指令時會進入這種模式,軟件仿真硬件協處理器;系統模式:供需要訪問系統資源的操作系統任務使用,運行具有特權的操作系統任務。模式特點:1)用戶模式特點:應用程序不能夠訪問受操作系統保護的系統資源;應用程序不能進行處理器模式的切換。2)系統模式特點:不屬于異常模式,不是通過異常進入的。系統模式屬于特權模式,可以訪問所有的系統資源,也可以直接進行模式的切換。它主要供操作系統使用。3)特權模式:除用戶模式之外的工作模式,特點:應用程序可以訪問所有的系統資源;可以任意地進行處理器模式的切換 4)異常模式:除用戶模式、系統模式之外的五種模式,特點:以各自的中斷或異常方式進入,并且處理各自的中斷或異常。模式切換:軟件控制進行切換(在特權模式下通過改變CPSR中的運行模式位[4:0]);通過外部中斷和異常進行切換。4.數據類型: 8位、16位(半字對齊)、32位(字對齊)的有符號和無符號型。5.存儲字數據:兩種方法(大端、小端格式)。大端格式:字數據的高字節存儲在低地址中,而字數據的低字節則存放在高地址中;小端格式:與大端存儲格式相反。缺省設置為小端格式。6.ARM狀態下寄存器:程序計數器PC(R15)(ARM狀態下,位[1:0]為0,位[31:2]用于保存PC;Thumb狀態下,位[0]為0,位[31:1]用于保存PC)。R13常用作堆棧指針(SP)。R14也稱作子程序連接寄存器或連接寄存器LR。當執行BL子程序調用指令時,可以從R14中得到R15的備份。寄存器R16用作CPSR(當前程序狀態寄存器)。7.ARM/Thumb下寄存器區別:Thumb狀態下的寄存器集是ARM狀態下寄存器集的一個子集,Thumb和ARM狀態下的R0~R7、CPSR和所有的SPSR是相同的;Thumb狀態下的SP對應于ARM狀態下的R13;Thumb狀態下的LR對應于R14;Thumb狀態下的PC對應于R15。8.異常:ARM有7種異常:復位、未定義指令、軟件中斷、指令預取中止、數據中止、IRQ、FIQ。異常響應:復位異常立即中止當前指令。其他:保存返回地址(將引起異常指令的下一條指令的地址保存到新的異常模式下的R14);保存當前狀態寄存器CPSR的內容(將CPSR的內容保存到將要執行的異常中斷對應的SPSR中);設置當前狀態寄存器CPSR中的相應位(設置控制位使進入響應執行模式;禁止FIQ、IRQ);轉去執行中斷處理程序(取相應的中斷向量給程序計數器PC)。返回:將返回地址裝入PC ;恢復CPSR的值 ;清除中斷屏蔽位。9.異常向量地址:復位-0x00000000(管理模式);未定義-0x00000004(未定義);軟件中斷-08(管理);中止(預取指令)-0c(中止);中止(數據)-10(中止);保留-0x00000014;IRQ-18(IRQ);FIQ-1C(FIQ)。10.異常優先級:復位>數據中止>FIQ>IRQ>預取指令中止>未定義中止、SWI
第五章1.編寫應用程序都要用到的文件:a.INC目錄下的文件: Def.h(基本數據類型重定義頭文件U32,S16等)Option.h(是硬件系統重要設置頭文件,修改系統的工作頻率,總線寬度,一些重要地址的值)2410addr.h(是2410的寄存器的地址宏定義頭文件)2410lib.h(調試時常用函數,還有一些其它的常用函數的頭文件)b.SRC目錄下的文件: 2410init.s 是2410初始化啟動程序,由匯編語言寫成2.ARM的啟動過程—系統的初始化:包括兩個級別的操作:系統運行環境初始化、應用程序初始化。a.運行環境初始化(對于嵌入式應用系統來說,由于沒有操作系統的支持,存放在ROM的代碼必須進行所有的初始化工作):①設置初始入口點(初始入口點是映象文件運行時的入口點,每個映像文件只有一個唯一的初始入口點,它保存在ELF頭文件中。初始入口點必須位于映像文件的可執行區域;包含初始入口點的可執行域不能被覆蓋,它的加載時地址和運行時地址必須是相同的)②設置中斷向量表(如果系統運行時,地址0x00處為RAM,則系統初始化時必須重建異常中斷向量表)③初始化存儲系統④初始化數據棧指針⑤初始化關鍵的IO設備⑥設置中斷昔日需要的RAM變量⑦使能異常中斷(通過清除CPSR寄存器的中斷禁止位實現)⑧切換處理器模式(系統還處于特權模式,如果下面要運行的應用程序是在用戶模式下運行,就需要將處理器切換到用戶模式。)⑨切換程序狀態(所有的RAM內核都是從ARM狀態開始執行的)b.應用程序初始化①將已經初始化的數據搬運到可寫的數據區(這部分數據就是映像文件中的RW屬性的數據)②在可寫存儲區建立ZI屬性的可寫數據區3.ARM的啟動過程—初始化程序分析:①定義程序入口地址(由AREA偽操作定義: AREA Init,CODE,READONLYENTRY)②建立異常向量以及中斷處理:1)建立中斷向量入口2)建立中斷服務程序入口地址表3)看門狗與中斷禁止(當系統復位后,看門狗與中斷要被首先禁止與被初始化,否則,當看門狗溢出產生的系統復位,引起中斷,其它中斷源產生中斷時,CPU會進入一個未知的狀態,出現程序跑飛等現象)4)系統時鐘初始化5)電源低功耗模式6)內存控制器初始化(接口時序優化)7)模式的堆棧初始化地址(對程序中需要用到的每一種模式都要給SP定義一個堆棧地址)8)初始化用戶執行環境(應用程序執行環境的初始化,就是完成必要的從ROM到RAM的數據傳輸和內容清零)9)呼叫主應用程序(IMPORT main或B main)4.ARM映像文件:arm映像文件其實就是可執行文件,包括bin或hex兩種格式,可以直接燒到rom里執行。映像文件一般由域組成。域最多由三個輸出段組成(RO、RW、ZI)組成,輸出段又由輸入段(代碼和數據)組成。5.中斷(☆注:異常包含5種模式:管理(復位、軟件中斷SWI)、中止(指令預取中止、數據中止)、未定義、快速中斷FIQ、外部中斷IRQ。中斷分兩類:SWI、硬件(FIQ、IRQ)。異常包含中斷,中斷都屬于異常)中斷仲裁:決定中斷的優先級,當中斷控制器接收到多個中斷請求時,其內的優先級仲裁器裁決后向CPU發出優先級最高的中斷請求信號或快速中斷請求信號,中斷系統有6個分仲裁器和1個總仲裁器,每一個仲裁器可以處理6路中斷。在編寫中斷服務程序時需要滿足如下要求:(1)不能向中斷服務程序傳遞參數;(2)中斷服務程序沒有返回值;(3)中斷服務程序應要盡可能短,來減少中斷服務程序的處理時間,保證實時系統的性能。使用中斷的步驟:(1)在使用中斷前先設置好相應模式下的堆棧。如當發生快速中斷FIQ 時,CPU進入“快中斷模式”,這時使用“快中斷模式”下的堆棧。(2)對于“Request sources”中的中斷,將INTSUBMSK 寄存器中相應位設為0。(3)將INTMSK 寄存器中相應位設為O。(4)確定使用的方式:是FIQ 還是IRQ。如果是FIQ,則在INTMOD 寄存器設置相應位為1。如果是IRQ,則在PRIORITY 寄存器中設置優先
級(5)準備好中斷處理函數:①中斷向量:在中斷向量設置好當FIQ 或IRQ 被觸發時的跳轉函數。②對于IRQ,在跳轉函數中讀取INTPND 寄存器或INTOFFSET 寄存器的值來確定中斷源,然后調用具體的處理函數。③對于FIQ,因為只有一個中斷可以設為FIQ,無須判斷中斷源。④中斷處理函數進入和返回。(6)設置CPSR 寄存器中的F位對于FIQ,或I位對于IRQ,其值為0時,表示開中斷。
第六章1.Nor Flash與Nand Flash比較:Nor flash:讀速度高,而擦、寫速度低,容量小,價格高。Nand flash:讀速度不如Nor flash,但擦、寫速度高,容量大,價格低。有取代磁盤的趨勢。現在不少用戶從Nand flash啟動和引導系統(開始 4KB代碼,BANK0中,自動復制到內部SRAM中,利用這4KB的代碼把更多的代碼從Nand flash中讀到SDRAM中),而在SDRAM上執行主程序代碼。2.串口介紹:(1)UART(通用異步串行口):有三個獨立的異步串行I/O 端口,每個串口(11個專用寄存器,共39個)都可以在中斷和DMA 兩種模式下進行收發。UART支持的最高波特率達230.4kbps。每個UART 包含:波特率發生器(以PCLK或UCLK為時鐘源)、接收器、發送器和控制單元。發送器和接收器各包含1個16 字節的FIFO 寄存器和移位寄存器。工作原理:(FIFO模式)當發送數據的時候,數據先寫到FIFO 然后拷貝到發送移位寄存器,然后從數據輸出端口(TxDn)依次被移位輸出。被接收的數據也同樣從接收端口(RxDn)移位輸入到移位寄存器,然后拷貝到FIFO 中。使用FIFO與不使用FIFO的比較:前者是通過對FIFO狀態寄存器UFSTATn的查詢,確定進行收發,后者是通過對收/發狀態寄存器UTRSTATn的查詢,確定進行收發。中斷或DMA請求: 7種中斷請求事件是:溢出錯誤、奇偶校驗錯誤、幀格式錯誤、傳輸中斷信號、接收緩沖器數據就緒、發送緩沖器空、發送移位器空。分成3類:錯誤中斷請求、接收中斷請求、發送中斷請求。RS232:全雙工,采用負邏輯,單端傳送,適合短距離傳輸;RS422:單工差分,兩條線相對電壓傳送,至少需要四條線傳輸;RS485:半雙工,單工差分,差分異步傳輸,適合遠距離傳輸。(2)USB接口(通用串行總線)(49個reg):主要用于PC與外圍設備互連,數據傳輸速度為:低速1.5Mb/s,全速12Mb/s,高速480Mb/s。主要由5部分組成:USB芯片及協議程序(固件)、控制器(控制USB芯片)、控制器程序、USB設備驅動程序、USB設備。USB總線主要特點:USB端口不區分設備,即插即用、可熱插拔,傳輸速度高,易擴展、可擴展到127個USB設備,對設備提供電源,成本低等。(3)I2C串行總線接口:(4個reg)總線信號為兩線,一個能夠雙向傳輸的數據線SDA、另一個能夠雙向傳輸的時鐘線SCL。是信號線
2最少的串行總線。總線的特點:a.有一個IC總線接口。b.I2C總線的速度:可以標準速度傳輸(100kb/s),也可以高速傳輸(高達400kb/s)。c.可以查詢方式
和中斷方式工作。d.可以主設備身份傳輸,也可以從設備身份傳輸,因此共有4種操作模式(主機、從機發送、接收)。主要有5部分構成:數據收發寄存器、數據移位寄存器、地址寄存器、時鐘發生器、控制邏輯等部分。系統要求:a.各個節點設備必須具有I2C接口功能;b.各個節點設備必須共地;c.兩個信號線必須接上拉電阻。(4)I2S串行總線接口:a.1通道音頻I2S總線接口,可基于 DMA方式工作;b.串行,每通道 8/16 位數據傳輸;c.發送和接收具備 128 字節(64 字節加64 字節)FIFO;d.支持 IIS 格式和 MSB-justified數據格式。(5)網絡接口:支持8位、16位的微處理器,可以工作在I/0方式或Memory方式。片內集成了雙工SA總線接口,可以直接和有雙工SA總線的微處理器系統無縫連接。(6)JTAG接口:硬件仿真器可以通過JTAG接口對開發板進行在線仿真調試,也可以使用sjf2410等燒寫工具通過JTAG接口對其擴展的Flash存儲器進行編程。(7)SPI 接口:a.兼容 2 通道 SPI 協議 2.11版;b.發送和接收具有 2×8 位的22移位寄存器;c.可以基于 DMA或中斷模式工作3.串口總結:芯片級(IC、IS、SPI、USB),系統級(網絡接口、JTAG接口、USB、UAR T :RS232/485/422)。URAT
傳輸距離:RS232<485(差分)<光纜。4.看門狗:看門狗是一種電路,具有監視并恢復程序正常運行的功能,是一個定時器電路。基本原理:設一系統程序完整運行一周期的時間是Tp,看門狗的定時周期為Ti,要求Ti>Tp。在程序運行一周期后,修改定時器的計數值,只要程序正常運行,定時器就不會溢出。若由于干擾等原因使系統不能在Tp 時刻修改定時器的計數值,定時器將在Ti 時刻溢出,引發系統復位,使系統得以重新運行,從而起到監控作用。功能:定時器功能、復位功能。構成:時鐘、看門狗計時器、看門狗數據寄存器、復位信號發生器、控制邏輯等。5.補充:(1)I/O端口寄存器:引腳配置寄存器、數據reg、引腳上拉reg、保留reg。(2)LCD(液晶顯示器):是一種數字顯示技術,可以通過液晶和彩色過濾器過濾光源,在平面面板上產生圖象。組成:LCD顯示屏、顯示控制器、緩沖存儲器。
第七章1.Linux系統及特點:Linux是一套免費使用和自由傳播的類Unix操作系統。特點:自由軟件,開放源代碼;真正的多用戶、多任務操作系統;可靈活裁剪配置;支持多種硬件平臺;提供強大的管理功能;完全符合POSIX標準;具有豐富的圖形界面;具有強大的網絡功能。2.Linux組成:①Linux內核,功能是:進程管理(負責創建和撤銷進程以及處理他們和外部世界的連接)、內存管理(內核在有限的可用資源上為每個進程都創建了一個虛擬尋址空間)、文件系統(內核在沒有結構硬件上構造結構化的文件系統)、設備控制(內核必須為系統中的每件外設嵌入相應的驅動程序)、網絡功能(處理路由和地址解析問題)。②Linux Shell:常用的有:Bourne Shell(sh,最初始的Shell,并且在每種Unix上都可以使用),C-Shelll(csh),Korn Shell(ksh),Bourne Again Shell(bash,大多數Linux系統的默認Shell)。③Linux文件結構:文件結構是文件存放在磁盤等存儲設備上的組織方法,主要體現在對文件和目錄的組織上,目錄提供了管理文件的一個方便而有效的途徑。Linux目錄采用多級樹形結構,用戶可以瀏覽整個系統,可以進入任何一個已授權進入的目錄,訪問那里的文件,目錄樹只有一個,不管OS管理幾個磁盤分區。④Linux實用工具,分三類:編輯器:用于編輯文件;過濾器:用于接收數據并過濾數據;交互程序:允許用戶發送信息或接收來自其他用戶的信息。
第八章1.交叉編譯環境的軟件工具1)Binutils:Binutils是一組針對目標系統的二進制開發工具,包括連接器、匯編器和其他用于目標文件和檔案的工具。2)GCC:編譯器,gcc不但能夠支持C/C++語言的編譯,而且能夠支持FORTRAN JAVA ADA等編程語言。3)Glibc:Glibc庫是提供系統調用和基本函數的C庫,可以編譯生成靜態庫和動態庫。4)GDB:GDB可以調試C和C++語言程序,功能:a.啟動被調試程序。b.讓被調試的程序在指定的位置停住。c.當程序被停住時,可以檢查程序狀態(如變量值)。5)Crosstool:實際上是一個腳本,用于編譯和測試大多數體系結構的各gcc和glibc的版本組合。2.Linux開發環境組建:可分別建立以LINUX為操作系統的開發環境或者在Windows下安裝模擬Linux環境的軟件。幾種組建方案:① Windows+ Linux +目標系統(可以解決開發環境問題,但同時用兩個操作系統,來回切換,浪費時間)、②Windows+cygwin+目標系統(cygwin是運行于windows下的linux模擬運行環境,但是在使用某些特殊功能時,需要添加一些補丁)、③Windows+虛擬機(Linux)+目標系統(在不破壞原有操作系統的基礎上,虛擬一臺‘真實’計算機,在它上面安裝linux和操作真實的linux一樣)、④Windows+Linux服務器 +目標系統(只需要一臺linux服務器即可,對客戶機和服務器的硬件要求沒什么特別需求)。3.用戶、Shell、Linux之間關系:Shell作為操作系統的外殼,為用戶提供使用操作系統的接口。它是命令語言、命令解釋程序及程序設計語言的統稱。Shell是用戶和操作系統之間最主要接口。通過Shell,可以同時在后臺運行多個應用程序,并且在把需要與用戶交互的程序放在前臺運行。4.makefile文件的作用:使用make 工具,可以將大型的開發項目分解成為多個易于管理的模塊,make在執行時,需要一個命名為Makefile的文件。Makefile文件描述了整個工程的編譯,連接等規則。Makefile說明了組成程序的各模塊間的相互關系及更新模塊時必須進行的動作,make按照這些說明自動地維護這些模塊。在makefile(Makefile)中,自頂向下說明各模塊之間的依賴關系及實現方法。
第九章1.BootLoader概念:系統上電之后,需要一段程序來進行初始化,如果它能將操作系統內核(從本地Flash或通過網絡)復制到內存中運行,就稱這段程序為Bootloader。其作用是,在系統上電時開始執行,初始化硬件設備、準備好軟件環境,最后調用操作系統內核。2.兩種操作模式:①啟動加載模式,即Bootloader從目標機上的某個固態存儲設備上將操作系統加載到RAM中運行,整個過程并沒有用戶的介入;②下載模式,目標機上的Bootloader將通過串口連接或網絡連接等通信手段從主機下載文件,這種模式通常在第一次安裝內核與根文件系統時被使用,以后的系統更新也會使用Bootloader的這種工作模式。3.啟動方式:①網絡啟動方式,使用這種啟動方式之前,需要把Bootloader安裝到板上的EPROM或者Flash中。Bootloader通過以太網接口遠程下載Linux內核映像或者文件系統。②磁盤啟動方式,傳統的Linux系統運行在臺式機或者服務器上,這些計算機一般都使用BIOS引導,并且使用磁盤作為存儲介質,在硬盤的主引導區,需要一個Bootloader可以從磁盤文件系統中把操作系統引導起來。③Flash啟動方式,Bootloader的入口位于處理器上電執行第一條指令的位置,Bootloader引導Linux內核,就是要把內核映像解壓到RAM中去,然后跳轉到內核映像入口執行,從而實現自舉啟動,與磁盤啟動相似。4.種類與特點:Bootloader種類繁多,比如x86上有LILO、GRUB等;對于ARM架構的CPU,有U-Boot、Vivi等。特點:LILO是Linux磁盤引導程序,GRUB是GNU的LILO替代程序;ViVi支持串口下載功能,代碼量小;U-boot通用引導程序,支持串口、網絡下載功能,代碼量大;Redboot支持串口、網絡下載功能,代碼量最大;Blob:支持串口、網絡下載功能,代碼量小5.基本原理:①操作模式:? ②通信:目標機上的Bootloader一般可通過串口與主機之間進行文件傳輸,也可以通過以太網連接并借助TFTP協議來下載文件,這樣傳輸更快; ③Bootloader 的功能與結構:由于Bootloader的實現依賴于CPU的體系結構,大多數Bootloader都分為stage1和 stage2兩大部分。stage1通常包括以下工作:硬件設備初始化、為加載Bootloader的stage2準備RAM空間、拷貝Bootloader的stage2到RAM空間中、設置堆棧、跳轉到stage2的C入口點。stage2的代碼通常用C語言來實現,stage2 執行映像的入口點是用匯編語言寫一段trampoline小程序,用這段trampoline小程序來作為main()函數的外部包裹。
補充:1.LCD屏的主要技術參數:(1)像素:顯示屏上所能控制的最小單位(2)分辨率:分辨率指 LCD 上象素的數目3)色深:在某一分辨率下,每一個像點可以有多少種色彩來描述,單位是“bit”,色深和分辨率之積決定了顯示緩存區的大?。?)刷新頻率:圖像在屏幕上更新的速度,也即屏幕上的圖像每秒鐘出現的次數,單位是赫茲(5)物理尺寸:LCD的外觀尺寸對角線長度,單位為英寸
2.分散裝載技術:ARM的連接器提供了一種分散加載機制,在連接時可以根據分散加載文件中指定的存儲器分配方案,將可執行鏡像文件分成指定的分區并定位于指定的存儲器物理地址,當嵌入式系統在復位或重新上電時,在對CPU相應寄存器進行初始化后,首先執行ROM存儲器的Bootloader代碼,根據連接時的存儲器分配方案,將相應代碼和數據由加載地址拷貝到運行地址,定位在RAM存儲器的代碼和數據就在RAM存儲器中運行,而不再從ROM存儲器中取數據或取指令,從而大大提高了CPU的運行速率和效率。最常用的2種情況:(1)把中斷程序作為一個單獨的運行域,放在32位的RAM,(2)將啟動代碼以外的所有代碼都復制到RAM中運行。
3.PWM:只對一方波序列信號的占空比按照要求進行調制,而不改變方波信號的其它參數,即不改變幅度和周期,因此脈寬調制信號的產生和傳輸,都是數字式的。只要帶寬足夠(頻率足夠高或周期足夠短),任何模擬信號都可以使用PWM 來實現。應用:借助于微處理器,使用脈寬調制方法實現模擬信號是一種非常有效的技術,廣泛應用在從測量、通信到功率控制與變換的許多領域中。
第四篇:ARM嵌入式linux復習心得總結2
2011.10.10 Evo Yang
ARM嵌入式linux復習心得總結2:
一、文件編程綜合實驗—文件拷貝
這里的文件拷貝實驗是在昨天創建文件的基礎之上的綜合練習,由于是Linux應用編程的基礎所以要求要非常的熟練,而文件拷貝更是重點中的綜合應用,因此詳細分析一下如何使用庫函數,實現文件copy的功能。同樣使用Vmware虛擬機Linux環境使用vi編輯器創建file_cp.c文件輸入代碼:
#include
#include
#include
#include
#define BUFFER_SIZE 1024//定義buffer的空間長度
Int main(int argc,char *argv[])
{
FILE *from_file;//定義一個FILE類型的變量方便以后對文件的操作
FILE *to_file;
long file_len = 0;//記錄文件大小作為數據傳送的指標char buffer[BUFFER_SIZE]//定義一個字符數據存儲空間大小為BUFFER_SIZE
char *ptr;
if(argc!= 3)//argc表示字符串數量,這里一共應該有3個字符串(命令字符)故首先判斷用戶使用的命令是否正確(這個if語句常在Linux編程中出現,而且位置都差不多,因此最好將他記住便于后期編程使用)
{
Printf(“Usage:%s fromfile tofilen”,argv*0+);
Exit(1);//切記‘1’是出錯返回
}
If((from_file = fopen(argv*1+,”rb”))==NULL)//打開from_file文件,并將地址賦給from_file判斷是否打開成功
{
Printf(“open %s error”,argv*2+);
Exit(1);
}
If((to_file=(argv*2+,”wd”))== NULL)//同上 {Printf(“open %s error”,argv*2+);Exit(1);
}
/*測的文件大小*/
Fseek(from_file,0L,SEEK_END);
File_len = ftell(from_file);
Fseek(from_file,0L,SEEK_SET);
Printf(“from file size is %dn”,file_len);
/*文件拷貝!*/
While(!feof(from_file)){Fread(buffer,BUFFER_SIZE,1,from_file);If(BUFFER_SIZE>=file_len){Fwirte(buffer,file_len,1,to_file);
}
Else
{
Fwrite(buffer,BUFFER_SIZE,1,to_file);
File_len = file_len – BUFFER_SIZE;
}
Bzero(buffer,BUFFER_SIZE);//置字節字符串buffer的前
BUFFER_SIZE個字節為零且包括‘ 主站蜘蛛池模板: 国产午夜亚洲精品aⅴ| 亚洲中文字幕无码久久2020| 韩国无码无遮挡在线观看| 精品人妻中文av一区二区三区| 中文毛片无遮挡高潮免费| 久久五月丁香合缴情网| 亚洲精品一区三区三区在线观看| 一本久道久久综合狠狠爱| 99久久久无码国产精品动漫| 日韩亚洲国产综合αv高清| 精品av天堂毛片久久久| 日韩人妻无码免费视频一区二区三区| 天干天干天啪啪夜爽爽av| 九九热线有精品视频86| 国产自在自线午夜精品视频| 性欧美欧美巨大69| 草色噜噜噜av在线观看香蕉| 人妻护士在线波多野结衣| 亚洲区激情区无码区日韩区| 中文字幕丰满乱子伦无码专区| 久久综合狠狠综合久久| 亚洲欧美国产va在线播放| 欧美大胆老熟妇乱子伦视频| 国产又爽又黄又无遮挡的激情视频| 久久久久久成人综合网| 日韩精品射精管理在线观看| 免费久久人人爽人人爽av| 国自产偷精品不卡在线| 色噜噜亚洲男人的天堂| 午夜无码片在线观看影视| 亚洲精品99久久久久中文字幕| 精品露脸国产偷人在视频| 中文字幕无码人妻波多野结衣| 免费无遮挡无码视频在线观看| 久久中文精品无码中文字幕下载| 亚洲综合精品伊人久久| 亚洲综合久久成人a片| 国产欧美日韩a片免费软件| 久久午夜伦鲁片免费无码| 人妻无码不卡中文字幕在线视频| 人妻丰满熟妇av无码处处不卡|