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