第一篇:學(xué)習(xí)嵌入式Linux系統(tǒng)的筆記和體會(huì)
學(xué)習(xí)嵌入式Linux系統(tǒng)的筆記和體會(huì)
一個(gè)典型的桌面Linux系統(tǒng)包括3個(gè)主要的軟件層---linux內(nèi)核、C庫(kù)和應(yīng)用程序代碼。
內(nèi)核是唯一可以完全控制硬件的層,內(nèi)核驅(qū)動(dòng)程序代表應(yīng)用程序與硬件之間進(jìn)行會(huì)話。內(nèi)核之上是C庫(kù),負(fù)責(zé)把POSIX API轉(zhuǎn)換為內(nèi)核可以識(shí)別的形式,然后調(diào)用內(nèi)核,從應(yīng)用程序向內(nèi)核傳遞參數(shù)。應(yīng)用程序依靠驅(qū)動(dòng)內(nèi)核來(lái)完成特定的任務(wù)。
在設(shè)計(jì)嵌入式應(yīng)用的時(shí)候,可以不按照這種層次,應(yīng)用程序越過(guò)C庫(kù)直接和內(nèi)核會(huì)話,或者把應(yīng)用和內(nèi)核捆綁在一起,甚至可以把應(yīng)用寫(xiě)為內(nèi)核的一個(gè)線程,在內(nèi)核中運(yùn)行,雖然這樣在移植上帶來(lái)了困難,但考慮嵌入式系統(tǒng)對(duì)尺寸要求小的特點(diǎn),是完全可行的。不過(guò)我們使用三層軟件結(jié)構(gòu)的模式來(lái)學(xué)習(xí)嵌入式linux將會(huì)是我們認(rèn)識(shí)更清晰,簡(jiǎn)單可行并使應(yīng)用具有彈性。
快速入門(mén)
最簡(jiǎn)單的建立嵌入式Linux應(yīng)用的方法就是從我們使用的桌面Linux入手,安裝一個(gè)喜愛(ài)的版本,把我們的某個(gè)應(yīng)用作為初始化的一部分,框架就算完成了。
當(dāng)然,嵌入式linux應(yīng)用遠(yuǎn)比我們的桌面版本功能簡(jiǎn)單專(zhuān)一,它也許就是一個(gè)用于足彩的終端機(jī),或是一個(gè)數(shù)碼音頻播放器,這些系統(tǒng)除了使用嵌入式CPU外,僅僅再需要一個(gè)串口,網(wǎng)口等少量的輸入輸出接口就可以完成它們特定的應(yīng)用了。
在軟件上,它可以按照三層的概念由內(nèi)核裝載器,定制的內(nèi)核和較少的為特定任務(wù)設(shè)計(jì)的靜態(tài)連接的應(yīng)用程序組成。之所以使用靜態(tài)連接的應(yīng)用程序,是因?yàn)樯倭康撵o態(tài)連接程序所要的存儲(chǔ)空間,比同樣數(shù)量的動(dòng)態(tài)連接的程序所占的空間小,這個(gè)平衡點(diǎn)需要我們?cè)趯?shí)際開(kāi)發(fā)中去獲取。也許你正在設(shè)計(jì)的是個(gè)PDA,它的應(yīng)用程序較多,那么你很可能就要使用動(dòng)態(tài)連接程序來(lái)減少存儲(chǔ)空間。在你的/bin或者/sbin目錄下,用廠列表看看bash,ifconfig,vi...,也許只用幾十K,當(dāng)你運(yùn)行 ldd /bin/bash 時(shí),你會(huì)看到它們都和好幾個(gè)庫(kù)文件相連。好了,這樣看來(lái),我們得把PC想像成一個(gè)嵌入式硬件平臺(tái),再重新制作一個(gè)特定功能的嵌入式linux。
基礎(chǔ)知識(shí)
再進(jìn)行實(shí)際操作之前,先來(lái)搞清楚幾個(gè)基礎(chǔ)知識(shí)。
內(nèi)核裝載器Loader,它的作用是把內(nèi)核從外部存儲(chǔ)器,移動(dòng)到內(nèi)存中。它只作這個(gè)事情,一旦完成了調(diào)入內(nèi)核的工作,Loader就跳轉(zhuǎn)到內(nèi)核位置開(kāi)始執(zhí)行。不同架構(gòu)有不同的 Loader,在x86結(jié)構(gòu)的PC上,通常使用的loader有LILO,GRUB,syslinux,syslinux在嵌入式linux中也同樣工作。其他非x86架構(gòu)的應(yīng)用中,你必須使用專(zhuān)門(mén)的loader,或者自己編寫(xiě)loader來(lái)裝入內(nèi)核。也有不使用loader的情況,系統(tǒng)加電以后,內(nèi)核直接從燒錄有映象的Flash上開(kāi)始執(zhí)行。
內(nèi)核,一旦內(nèi)核開(kāi)始執(zhí)行,它將通過(guò)驅(qū)動(dòng)程序初始化所有硬件,這可以從我們的pc機(jī)監(jiān)視器的輸出看出來(lái),每個(gè)驅(qū)動(dòng)程序都打印一些有關(guān)它的信息。初始化完成后,計(jì)算機(jī)就準(zhǔn)備運(yùn)行嵌入式應(yīng)用。也許一個(gè),也許是多個(gè)應(yīng)用程序組成了嵌入式應(yīng)用,但通常首先調(diào)用的是init(通過(guò)loader 向核心傳入init=/program 可以定制首先運(yùn)行的程序)。桌面linux中,init會(huì)讀取/etc/inittab文件,來(lái)決定執(zhí)行級(jí)別和哪些腳本和命令。嵌入式應(yīng)用中,可以根據(jù)實(shí)際的情況決定是否使用標(biāo)準(zhǔn)的init執(zhí)行方式,也許這個(gè)init是個(gè)靜態(tài)程序,它能夠完成我們的嵌入應(yīng)用的特定任務(wù),那完全不用考慮inittab了。
initrd文件系統(tǒng),initrd以一種把內(nèi)核從存儲(chǔ)介質(zhì)裝入到內(nèi)存的相同的機(jī)制來(lái)裝入一個(gè)小型文件系統(tǒng)。這個(gè)文件系統(tǒng)最好是以壓縮的方式存儲(chǔ)在介質(zhì)上的,解壓縮到RAM盤(pán)上。通過(guò)使用initrd,包含有核心驅(qū)動(dòng)和啟動(dòng)腳本的小文件系統(tǒng),就可以直接從介質(zhì)上和內(nèi)核一起啟動(dòng)起來(lái),內(nèi)核屆壓縮這個(gè)文件系統(tǒng),并執(zhí)行這個(gè)文件系統(tǒng)上叫做/linuxrc的腳本文件,這個(gè)腳本通常會(huì)把啟動(dòng)過(guò)程中所需要的驅(qū)動(dòng)程序裝入。腳本退出以后,initrd文件系統(tǒng)也卸下了,啟動(dòng)過(guò)程進(jìn)入真正初始化過(guò)程。對(duì)于嵌入式來(lái)講,可以將需要的應(yīng)用軟件都運(yùn)行在這個(gè)initrd文件系統(tǒng)上,只要/linxrc文件不結(jié)束,內(nèi)核啟動(dòng)過(guò)程的其他部分就不會(huì)繼續(xù)。
做個(gè)試驗(yàn):
cp /boot/initrd-2.4.20.img /tmp
cd /tmp
mv initrd-2.4.2-.img initrd.img.gz
gunzip initrd.img.gz
mount-o loop initrd.img /mnt
cd /mnt
ls
cat linuxrc 可以看到里面執(zhí)行了加載了兩個(gè)模塊的操作,你在啟動(dòng)linxu的時(shí)候會(huì)看見(jiàn)屏幕打印信息。
入門(mén)試驗(yàn),制作一個(gè)簡(jiǎn)單的應(yīng)用
我們使用一張軟盤(pán)啟動(dòng)一臺(tái)假象的只有一個(gè)串口,鍵盤(pán)輸入,顯示輸出的x86架構(gòu)的linux系統(tǒng),執(zhí)行的特定應(yīng)用就是運(yùn)行minicom,通過(guò)串口撥號(hào)。需要軟件: minicom-xx.src.tar.gz 和 syslinux-xx.tar.gz,xx代表版本號(hào),開(kāi)始之前,在主目錄建立一個(gè)目錄,來(lái)釋放這兩個(gè)軟件包:
cd
mkdir-p project/minilinux
cd project/minilinux
tar zxvf minicom-xx.src.tar.gz
tar zxvf syslinux-xx.tar.gz1、裁減linux內(nèi)核(需要系統(tǒng)安裝內(nèi)核文件包)
配置內(nèi)核的時(shí)候,我們需要選擇這些:摸塊編入內(nèi)核,386處理器、物理內(nèi)存off、支持ELF、標(biāo)準(zhǔn)PC軟盤(pán)、支持RAM盤(pán)(4096)、支持 initial RAM disk(initrd)、虛你終端、虛擬終端控制臺(tái)、標(biāo)準(zhǔn)串口、ext2文件系統(tǒng)、控制臺(tái)驅(qū)動(dòng),VGA text console、DOS FAT、MSDOS文件系統(tǒng),其他的都可以不要,這樣內(nèi)核編出來(lái)較小。
步驟:
cd /usr/src/linux
make mrproper
make xconfig
make dep && make bzImage
得到 /usr/src/linux/arch/i386/boot/目錄的內(nèi)核文件bzIamge。
2、編譯一個(gè)靜態(tài)的minicom,把它作為將來(lái)的linuxrc
cd minicom-xx/src
vi Makefile
修改下面這行
minicom: $(minicom_OBJECTS)$(minicom_DEPENDENCIES)
rm-f minicom 下面的行加上-static,連接為靜態(tài)程序
(LINK)-static $(minicom_LDFLAGS)$(minicom_OBJECTS)$(minicom_LDADD)$(LIBS)
vi minicom.c
找到 if(real_uid==0 && dosetup==0)刪除這個(gè)判斷條件語(yǔ)句,主要是用于權(quán)限判斷的,因?yàn)檫@個(gè)嵌入應(yīng)用不關(guān)注權(quán)限問(wèn)題,否則會(huì)出錯(cuò)。
make
得到可執(zhí)行程序,用ldd 檢查一下是不是靜態(tài)程序。
3、準(zhǔn)備initrd壓縮文件image.gz
dd if=/dev/zero of=image bs=1k count=4096
losetup /dev/loop0 image
mke2fs-m 0 /dev/loop0
mounmt-t ext2 /dev/loop0 /mnt/
mkdir-p /mnt/dev
mkdir-p /mnt/usr/share/terminfo/l/
cd /dev
cp-a consle null tty tty0 zero mem /mnt/dev
cp-P /usr/share/terminfo/l/linux /mnt/usr/share/terminfo/l/linux
cp ~/project/minilinux/mincom/src/minicom /mnt/linuxrc
umount /mnt
losetup-d /dev/loop0
sync
gzip-9 image4、制作軟盤(pán)引導(dǎo),并拷貝文件 bzimage image.gz 到軟盤(pán)
A.使用grub
fdformat /dev/fd0
mke2fs /dev/fd0
mount /mnt/fd0 /mnt/floppy
mkdir-p /mnt/floppy/boot/grub
cp /boot/grub/stage1 /boot/grub/stage2 /mnt/floppy/boot/grub
執(zhí)行 grub,在軟盤(pán)上創(chuàng)建引導(dǎo)
grub > root(fd0)
grub > setup(fd0)
grub > quit
cp /usr/src/linux/arch/i386/boot/bzImge /mnt/floppy
cp ~/porject/minilinux/image.gz /mnt/floppy
編輯 /mnt/floppy/boot/grub/grub.conf
default =0
timeout-=10
title minilinux
root(fd0)
kernel /bzImage
initrd /image.gz
卸下軟盤(pán)
umount /mnt/floppy
B.使用syslinux
fdformat /dev/fd0
mkfs.msdos /dev/fd0
mount-t msdos /dev/fd0 /mnt/floppy
cp /usr/src/linux/arch/i386/boot/bzImge /mnt/floppy
cp ~/porject/minilinux/image.gz /mnt/floppy
cp syslinux-xx/ldlinxu.sys /mnt/floppy
cat > /mnt/floppy/syslinux.cfg
LABEL linux
KERNEL bzimage
APPEND initrd=image.gz
umont /mnt/floppy
syslinux-xx/syslinux /dev/fd0
sync5、用軟盤(pán)啟動(dòng)計(jì)算機(jī),如果幸運(yùn),minicom的運(yùn)行畫(huà)面出現(xiàn)在屏幕上。
到此,我們的單應(yīng)用嵌入式linux做好了,但它還很簡(jiǎn)陋,沒(méi)有什么實(shí)際用途,但通過(guò)這個(gè)實(shí)驗(yàn),可以了解嵌入式系統(tǒng)的大致結(jié)構(gòu)和開(kāi)發(fā)過(guò)程。在進(jìn)行實(shí)際的嵌入式開(kāi)發(fā)時(shí),通常要在PC機(jī)上借助嵌入式linux開(kāi)發(fā)工具包,如:uclinux,bluecat等,對(duì)相應(yīng)的硬件平臺(tái)(目標(biāo)機(jī))進(jìn)行軟件編寫(xiě)編譯,調(diào)試成功后,將內(nèi)核及應(yīng)用程序?qū)懭氲侥繕?biāo)機(jī)的存儲(chǔ)器中,從而完成整個(gè)應(yīng)用。
第二篇:嵌入式linu學(xué)習(xí)心得
嵌入式Linux學(xué)習(xí)心得
1、Linux命令
ls:查看目錄-l以列表方式查看;ls –l 與ll的功能一樣 pwd: 查看當(dāng)前的目錄
cd:改變當(dāng)前操作目錄cd /直接跳到根目錄 cd..回到上一級(jí)目錄 cat: 打印顯示當(dāng)前文件的內(nèi)容信息
mkdir:創(chuàng)建目錄
fdisk: 查看硬盤(pán)分區(qū)信息,-l以列表方式查看
->代表是鏈接文件,類(lèi)似window下的快捷方式。
cp: 復(fù)制命令,例子cp 文件名 /home/dir/
mv: 移動(dòng)或改名,如mv sonf.confsonf.txt(改名)移動(dòng):mv sonf.conf / rm:刪除命令,如rm –f test.c;如刪除目錄rm –fr d
man:查看某個(gè)命令的幫助,man 命令
2、各系統(tǒng)目錄的功能
drw—r—w--:d代表是目錄,drw代表當(dāng)前用戶(hù)的權(quán)限,r代表組用戶(hù)的權(quán)限,w代表其它用戶(hù)的權(quán)限。x代表有執(zhí)行權(quán)限。
/boot/gruff.conf: 啟動(dòng)引導(dǎo)程序
/dev:brw—rw--:b代表是塊設(shè)備。Linux設(shè)備有三種,塊設(shè)備(b開(kāi)頭)、字符設(shè)備(c開(kāi)頭)、網(wǎng)絡(luò)設(shè)備。had代表第一個(gè)硬盤(pán),hdb代表第二個(gè)硬盤(pán)。Hdb2代表第二塊硬盤(pán)的第二個(gè)分區(qū)。3,67代表主設(shè)備為3,從設(shè)備為67./etc:存放的是系統(tǒng)的配置文件。Inittab文件存放不同啟動(dòng)方式下必須啟動(dòng)的進(jìn)程。Inittab文件中有6個(gè)啟動(dòng)level,wait中對(duì)應(yīng)著6個(gè)level的目錄,respawn代表當(dāng)一個(gè)進(jìn)程被意外終止了,但會(huì)自動(dòng)啟動(dòng)的進(jìn)程,如守護(hù)進(jìn)程。rc.d目錄中存放了一個(gè)rc.sysinit文件,里面存放系統(tǒng)初始化配置信息。/etc還有一個(gè)vsftpd里面存放tcp、ftp的配置。
/home : 用戶(hù)目錄,存放用戶(hù)的文件,/lib:存放庫(kù)文件,后綴為so的文件代表動(dòng)態(tài)鏈接庫(kù)。
/lost+found:系統(tǒng)意外終止,存放一些可以找回的文件。
/mnt:掛載外部設(shè)備,如掛載光驅(qū):mount –t /dev/cdrom/mnt/cdrom,如
果在雙系統(tǒng)中,要查看windows中D盤(pán)的文件,首先應(yīng)該將D盤(pán)的文件映射過(guò)來(lái),mount –t /dev/hda2/mnt/windows/d
/opt:用戶(hù)安裝的應(yīng)用程序
/proc:是系統(tǒng)運(yùn)行的映射,比較重要。里面的文件數(shù)字代表進(jìn)程號(hào)。每個(gè)進(jìn)程號(hào)目錄下包含進(jìn)程的基本信息。還有其他信息,如cpuinfo等,內(nèi)核支持的文件系統(tǒng)filesystem等。系統(tǒng)支持的中斷interrupts,iomen代表內(nèi)存分配情況。ioport存放IO端口號(hào)。還有分區(qū)信息,modole信息,狀態(tài)信息,版本信息
對(duì)于Linux的設(shè)備驅(qū)動(dòng)程序,有兩種加載模式,一種是直接加載進(jìn)linux內(nèi)核,一種是以模塊的方式加載到內(nèi)核。
/sbin: 系統(tǒng)管理的一些工具。如poweroff關(guān)機(jī)工具。
/usr: 安裝系統(tǒng)時(shí)很多文件放在此目錄下面,包含一些更新等,include包含的頭文件,lib 是Linux的庫(kù)文件,src包含Linux2.4的內(nèi)核源碼
/var:存放是臨時(shí)變量
3、
第三篇:學(xué)習(xí)嵌入式系統(tǒng)感言
個(gè)人覺(jué)得培訓(xùn)學(xué)校都是差不多,所學(xué)的內(nèi)容都是一樣的。您不妨自己找?guī)讉€(gè)學(xué)校的課程對(duì)比下,你就知道大同小異了,培訓(xùn)主要就是C、Linux和ARM課程。
我原來(lái)也想去培訓(xùn),可是家里條件不允許,我沒(méi)有那么多錢(qián),后來(lái)我只好自學(xué)了,不懂的就上論壇問(wèn),我自己學(xué)了四個(gè)月,差不多也入門(mén)了,現(xiàn)在也是在做嵌入式開(kāi)發(fā)。想想我自己走過(guò)的路,其實(shí)我發(fā)現(xiàn),其實(shí)嵌入式并沒(méi)有想象的難,關(guān)鍵是要花時(shí)間去學(xué),要堅(jiān)持幾個(gè)月就可以了。
如果樓主還有時(shí)間,不妨自己學(xué)下。實(shí)在覺(jué)得困難的話再去培訓(xùn)吧。當(dāng)然,樓主如果家里經(jīng)濟(jì)不錯(cuò)的話,也可以去培訓(xùn)吧。但是如果真的下決心要學(xué)的話,其實(shí)可以去找找自學(xué)的方法。
我把我前階段看到的一篇一個(gè)專(zhuān)科生如何自學(xué)嵌入式,里面有介紹了他的學(xué)習(xí)方法和學(xué)習(xí)過(guò)程的文章,給樓主看看,希望對(duì)你有幫助。
專(zhuān)科生學(xué)嵌入式到找到工作的前前后后--學(xué)習(xí)的榜樣
先做個(gè)自我介紹,我07年考上一所很爛專(zhuān)科民辦的學(xué)校,學(xué)的是生物專(zhuān)業(yè),具體的學(xué)校名稱(chēng)我就不說(shuō)出來(lái)獻(xiàn)丑了。09年我就輟學(xué)了,我在那樣的學(xué)校,一年學(xué)費(fèi)要1萬(wàn)多,但是根本沒(méi)有人學(xué)習(xí),我實(shí)在看不到希望,我就退學(xué)了。
退學(xué)后我也迷茫,大專(zhuān)都沒(méi)有畢業(yè),我真的不知道我能干什么,我在糾結(jié)著我能做什么。所以輟學(xué)后我一段時(shí)間,我想去找工作,因?yàn)槲冶容^沉默寡言,不是很會(huì)說(shuō)話,我不適合去應(yīng)聘做業(yè)務(wù)。我想應(yīng)聘做技術(shù)的,可是處處碰壁。
一次偶然的機(jī)會(huì),我才聽(tīng)到嵌入式這個(gè)行業(yè)。那天我去新華書(shū)店,在計(jì)算機(jī)分類(lèi)那邊想找本書(shū)學(xué)習(xí)。后來(lái)有個(gè)女孩子走過(guò)來(lái),問(wèn)我是不是讀計(jì)算機(jī)的,有沒(méi)有興趣學(xué)習(xí)嵌入式,然后給我介紹了一下嵌入式現(xiàn)在的火熱情況,告訴我學(xué)嵌入式多么的有前景,給我了一份傳單,嵌入式培訓(xùn)的廣告。聽(tīng)了她的介紹,我心里癢癢的,確實(shí)我很想去學(xué)會(huì)一門(mén)自己的技術(shù),靠自己的雙手吃飯。
回家后,我就上網(wǎng)查了下嵌入式,確實(shí)是當(dāng)今比較熱門(mén)的行業(yè),也是比較好找工作的,工資也是相對(duì)比較高。我就下決心想學(xué)嵌入式了。于是我去找嵌入式培訓(xùn)的相關(guān)信息,說(shuō)真的,我也很迷茫,我不知道培訓(xùn)是否真的能像他們宣傳的那樣好,所以我就想了解一段時(shí)間再做打算。
后來(lái),我在百度知道看到一篇讓我很鼓舞的文章《如何學(xué)習(xí)嵌入式》,是一個(gè)嵌入式高手介紹沒(méi)有基礎(chǔ)的朋友怎么自學(xué)入門(mén)學(xué)嵌入式,文章寫(xiě)的很好,包含了如何學(xué)習(xí),該怎么學(xué)習(xí)。他提到一個(gè)方法就是看視頻,因?yàn)榭磿?shū)實(shí)在太枯燥和費(fèi)解的,很多我們也看不懂。這點(diǎn)我真的很認(rèn)同,我自己看書(shū)往往看不了幾頁(yè)。
我在想,為什么別人都能自學(xué)成才,我也可以的!我要相信自己,所以我就想自學(xué),如果實(shí)在學(xué)不會(huì)我再去培訓(xùn)。
主意一定,我就去搜索嵌入式的視頻,雖然零星找到一些嵌入式的視頻,但是都不系統(tǒng),我是想找一個(gè)能夠告訴我該怎么學(xué)的視頻,一套從入門(mén)到精通的視頻,一個(gè)比較完整的資料,最好能有老師教,不懂可以請(qǐng)教的。
后來(lái)我又找到一份很好的視頻,是在嵌入式學(xué)習(xí)網(wǎng)推出的一份視頻《從零基礎(chǔ)開(kāi)始學(xué)嵌入式》,網(wǎng)址:http://www.FASHIONWEEKDAILY.info/evem.htm里面的教程還不錯(cuò),很完整,可以讓我從基礎(chǔ)的開(kāi)始學(xué)起。視頻不便宜啊,但是我也忍了,畢竟買(mǎi)幾本書(shū)都要幾百了,何況他們還有半年的技術(shù)咨詢(xún)和服務(wù),算值了。
下面介紹下我的學(xué)習(xí)流程,希望對(duì)和我一樣完全沒(méi)有基礎(chǔ)的朋友有所幫助。
收到他們寄過(guò)來(lái)的光盤(pán)后,我就開(kāi)始學(xué)習(xí)了,由于我沒(méi)有什么基礎(chǔ),我就從最簡(jiǎn)單的C語(yǔ)言視頻教程學(xué)起,話說(shuō)簡(jiǎn)單,其實(shí)我還是很多不懂的,我只好請(qǐng)教他們,他們還是很熱心的,都幫我解決了。C語(yǔ)言我差不多學(xué)了一個(gè)禮拜,接下來(lái)我就學(xué)了linux的基本命令,我在他們提供linux虛擬機(jī)上都有做練習(xí),敲linux的基本命令,寫(xiě)簡(jiǎn)單的C語(yǔ)言代碼,差不多也就三個(gè)禮拜。我每天都在不停的寫(xiě)一些簡(jiǎn)單的代碼,這樣一月后我基本掌握了C和linux的基本操作。
接下來(lái)我就去學(xué)習(xí)了人家的視頻的培訓(xùn)教程,是整套的,和去參加培訓(xùn)沒(méi)有多大的區(qū)別,這一看就是兩個(gè)月,學(xué)習(xí)了ARM的基本原理,學(xué)習(xí)嵌入式系統(tǒng)的概念,也掌握了嵌入式的環(huán)境的一些搭建,對(duì)linux也有更深層次的理解了,明白了嵌入式應(yīng)用到底是怎么做的,但是驅(qū)動(dòng)我只是有一點(diǎn)點(diǎn)的了解,這個(gè)相對(duì)難一點(diǎn),我想以后再慢慢啃。
這兩個(gè)月,除了吃飯睡覺(jué),我?guī)缀醵荚趯W(xué)習(xí)。因?yàn)槲抑缼缀鯖](méi)有基礎(chǔ),比別人差勁,我只能堅(jiān)持努力著,我不能放棄,我必要要靠自己來(lái)養(yǎng)活自己,必須學(xué)好這門(mén)技術(shù),同時(shí)我不懂的就問(wèn),這里真的很感謝他們的技術(shù)客服對(duì)我的任何問(wèn)題都是耐心的解答,每天都我?guī)缀醵加泻脦讉€(gè)問(wèn)題問(wèn)他們,然后我就把不懂的問(wèn)題總結(jié)記下來(lái),這樣慢慢積累了一段時(shí)間,我發(fā)現(xiàn)自己真的有點(diǎn)入門(mén)了。
最后的一個(gè)月,我就去看關(guān)于實(shí)踐部分的內(nèi)容,了解嵌入式項(xiàng)目具體的開(kāi)發(fā)流程,需要什么樣的知識(shí),我就開(kāi)始準(zhǔn)備這方面的知識(shí),也就是學(xué)習(xí)這方面的視頻,同時(shí)他們建議我去找了找一些嵌入式面試的題目,為自己以后找工作做準(zhǔn)備。我就到網(wǎng)上找了很多嵌入式的題目,把他們理解的記下來(lái),這樣差不多準(zhǔn)備了20天左右
我覺(jué)得自己差不多入門(mén)了,會(huì)做一些簡(jiǎn)單的東西了。我就想去找工作看看,于是我就到51job瘋狂的投簡(jiǎn)歷,因?yàn)槲覍W(xué)歷的問(wèn)題,專(zhuān)科沒(méi)有畢業(yè),說(shuō)真的,大公司沒(méi)有人會(huì)要我,所以我投的都是民營(yíng)的小公司,我希望自己的努力有所回報(bào)。沒(méi)有想過(guò)幾天過(guò)后,就有面試了,但是第一次面試我失敗了,雖然我自認(rèn)為筆試很好,因?yàn)槲抑白隽藴?zhǔn)備,但是他們的要求比較嚴(yán)格,需要有一年的項(xiàng)目經(jīng)驗(yàn),所以我沒(méi)有被選中。
后來(lái)陸續(xù)面試了幾家公司,終于功夫不負(fù)有心人。我終于面試上的,是在閔行的一家民營(yíng)的企業(yè),公司規(guī)模比較小,我的職務(wù)是嵌入式linux應(yīng)用開(kāi)發(fā),做安防產(chǎn)品的應(yīng)用的。我想我也比較幸運(yùn),經(jīng)理很看重我的努力,就決定錄用我,開(kāi)的工資是3500一個(gè)月,雖然我知道在上海3500只能過(guò)溫飽的生活,但是我想我足夠了。我至少不用每天都要靠父母養(yǎng),我自己也能養(yǎng)活自己的。我想只要我繼續(xù)努力,我工資一定會(huì)翻倍的。
把本文寫(xiě)出來(lái),希望能讓和我一樣的沒(méi)有基礎(chǔ)的朋友有信心,其實(shí)我們沒(méi)有必要自卑,我們不比別人笨,只要我們肯努力,我們一樣會(huì)成功。
在大學(xué)生如則的身上,我們看到了一種精神,就是對(duì)認(rèn)準(zhǔn)的事情,不管多困難,多曲折,都不放棄,而且要堅(jiān)定地、執(zhí)著地做下去。這是在許多成功者身上我們看到的共同的東西。搞發(fā)明創(chuàng)造是寂寞的、艱苦的,但當(dāng)一個(gè)人將它視作自己的事業(yè)和理想,它就是快樂(lè)的、充實(shí)的,堅(jiān)持下去,必將看到成功的果實(shí),世界上的許多事情亦是同理。(完)
第四篇:學(xué)習(xí)嵌入式系統(tǒng)心得
學(xué)習(xí)嵌入式系統(tǒng)心得
說(shuō)實(shí)在話在沒(méi)有學(xué)習(xí)之前,以及在學(xué)之前通過(guò)一些口中得知這是一門(mén)很不錯(cuò),很有意思的一門(mén)課。而且目前是十分吃香的一門(mén)課程,如果學(xué)好了工作很好找并且待遇也很好。聽(tīng)到這些,我內(nèi)心非常期待上這門(mén)含金量如此之高的一門(mén)技術(shù)課。據(jù)我了解,嵌入式系統(tǒng)是一個(gè)很有前景的行業(yè)。學(xué)會(huì)嵌入式技術(shù),就相當(dāng)于給自己創(chuàng)造了更多的機(jī)會(huì)。那么,在可以預(yù)計(jì)的將來(lái),嵌入式技術(shù)的應(yīng)用會(huì)越來(lái)越廣泛。(大量的人才需求,未來(lái)五年內(nèi),國(guó)內(nèi)LINUX嵌入式軟件開(kāi)發(fā)的人才缺口達(dá)到120萬(wàn))
說(shuō)實(shí)在的,第一天,我滿(mǎn)懷期望的去上這門(mén)課??墒且簧险n聽(tīng)到老師的介紹,我就頭昏腦脹了。這是什么課啊,誰(shuí)會(huì)聽(tīng)得懂。猶如天書(shū)一般。
實(shí)事求是的說(shuō),嵌入式技術(shù)的全面掌握是有相當(dāng)難度的??梢暂p輕松松學(xué)會(huì)嵌入式技術(shù)的說(shuō)法是夸大其詞了。這個(gè)就像學(xué)英語(yǔ)一樣,學(xué)英語(yǔ)無(wú)論怎樣學(xué),不管是“瘋狂學(xué)”還是用新理念來(lái)學(xué),真正掌握的話還是需要一步步積累才能熟練掌握。在此,我們通過(guò)短短的幾個(gè)星期簡(jiǎn)單的了解和學(xué)習(xí)一下嵌入式,想成為這方面的高手。這些想法本身是不太現(xiàn)實(shí)的。我心里清楚我們需要做的是:
第一:把心踏實(shí)下來(lái),做好打硬仗的準(zhǔn)備。
第二:注意學(xué)習(xí)方法。盡量不要走彎路,爭(zhēng)取一鼓作氣入門(mén)。一旦入門(mén)了以后呢就好辦了。嵌入式技術(shù)的掌握,本身呢就比較難,要是再走些彎路,時(shí)間上會(huì)浪費(fèi),甚至?xí)绊憣W(xué)習(xí)的信心。
這就是我這段時(shí)間的學(xué)習(xí)心得。
魯增慶 110402110 A11電氣
第五篇:軟考嵌入式系統(tǒng)設(shè)計(jì)師筆記歸納總結(jié)
軟考嵌入式系統(tǒng)設(shè)計(jì)師筆記
1.嵌入式系統(tǒng)的組成:硬件層、中間層、系統(tǒng)軟件層和應(yīng)用軟件層
(1)硬件層:嵌入式微處理器、存儲(chǔ)器、通用設(shè)備接口和I/O 接口。
嵌入式核心模塊=微處理器+電源電路+時(shí)鐘電路+存儲(chǔ)器
Cache:位于主存和嵌入式微處理器內(nèi)核之間,存放的是最近一段時(shí)間微處理器使用最多的程序代碼和數(shù)據(jù)。它的主要目標(biāo)是減小存儲(chǔ)器給微處理器內(nèi)核造成的存儲(chǔ)器訪問(wèn)瓶頸,使處理速度更快。
(2)中間層(也稱(chēng)為硬件抽象層HAL 或者板級(jí)支持包BSP):它將系統(tǒng)上層軟件和底層硬件分離開(kāi)來(lái),使系統(tǒng)上層軟件開(kāi)發(fā)人員無(wú)需關(guān)系底層硬件的具體情況,根據(jù)BSP 層提供的接口開(kāi)發(fā)即可。
BSP 有兩個(gè)特點(diǎn):硬件相關(guān)性和操作系統(tǒng)相關(guān)性。
設(shè)計(jì)一個(gè)完整的BSP 需要完成兩部分工作:
A、嵌入式系統(tǒng)的硬件初始化和BSP 功能。
片級(jí)初始化:純硬件的初始化過(guò)程,把嵌入式微處理器從上電的默認(rèn)狀態(tài)逐步設(shè)置成系統(tǒng)所要求的工作狀態(tài)。
板級(jí)初始化:包含軟硬件兩部分在內(nèi)的初始化過(guò)程,為隨后的系統(tǒng)初始化和應(yīng)用程序建立硬件和軟件的運(yùn)行環(huán)境。
系統(tǒng)級(jí)初始化:以軟件為主的初始化過(guò)程,進(jìn)行操作系統(tǒng)的初始化。
B、設(shè)計(jì)硬件相關(guān)的設(shè)備驅(qū)動(dòng)。
(3)系統(tǒng)軟件層:由RTOS、文件系統(tǒng)、GUI、網(wǎng)絡(luò)系統(tǒng)及通用組件模塊組成。
RTOS 是嵌入式應(yīng)用軟件的基礎(chǔ)和開(kāi)發(fā)平臺(tái)。
(4)應(yīng)用軟件:由基于實(shí)時(shí)系統(tǒng)開(kāi)發(fā)的應(yīng)用程序組成。2.嵌入式系統(tǒng)的定義
(1)定義:以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專(zhuān)用計(jì)算機(jī)系統(tǒng)。
(2)嵌入式系統(tǒng)發(fā)展的4 個(gè)階段:無(wú)操作系統(tǒng)階段、簡(jiǎn)單操作系統(tǒng)階段、實(shí)時(shí)操作系統(tǒng)階段、面向Internet 階段。
(3)知識(shí)產(chǎn)權(quán)核(IP 核):具有知識(shí)產(chǎn)權(quán)的、功能具體、接口規(guī)范、可在多個(gè)集成電路設(shè)計(jì)中重復(fù)使用的功能模塊,是實(shí)現(xiàn)系統(tǒng)芯片(SOC)的基本構(gòu)件。
(4)IP 核模塊有行為、結(jié)構(gòu)和物理3 級(jí)不同程度的設(shè)計(jì),對(duì)應(yīng)描述功能行為的不同可以分為三類(lèi):軟核、固核、硬核。3.實(shí)時(shí)系統(tǒng)的調(diào)度
(1)調(diào)度:給定一組實(shí)時(shí)任務(wù)和系統(tǒng)資源,確定每個(gè)任務(wù)何時(shí)何地執(zhí)行的整個(gè)過(guò)程。
(2)搶占式調(diào)度:通常是優(yōu)先級(jí)驅(qū)動(dòng)的調(diào)度,如uCOS。優(yōu)點(diǎn)是實(shí)時(shí)性好、反應(yīng)快,調(diào)度算法相對(duì)簡(jiǎn)單,可以保證高優(yōu)先級(jí)任務(wù)的時(shí)間約束;缺點(diǎn)是上下文切換多。
(3)非搶占式調(diào)度:通常是按時(shí)間片分配的調(diào)度,不允許任務(wù)在執(zhí)行期間被中斷,任務(wù)一旦占用處理器就必須執(zhí)行完畢或自愿放棄,如WinCE。優(yōu)點(diǎn)是上下文切換少;缺點(diǎn)是處理器有效資源利用率低,可調(diào)度性不好。
(4)靜態(tài)表驅(qū)動(dòng)策略:系統(tǒng)在運(yùn)行前根據(jù)各任務(wù)的時(shí)間約束及關(guān)聯(lián)關(guān)系,采用某種搜索策略生成一張運(yùn)行時(shí)刻表,指明各任務(wù)的起始運(yùn)行時(shí)刻及運(yùn)行時(shí)間。
(5)優(yōu)先級(jí)驅(qū)動(dòng)策略:按照任務(wù)優(yōu)先級(jí)的高低確定任務(wù)的執(zhí)行順序。
(6)實(shí)時(shí)任務(wù)分類(lèi):周期任務(wù)、偶發(fā)任務(wù)、非周期任務(wù)。
(7)實(shí)時(shí)系統(tǒng)的通用結(jié)構(gòu)模型:數(shù)據(jù)采集任務(wù)實(shí)現(xiàn)傳感器數(shù)據(jù)的采集,數(shù)據(jù)處理任務(wù)處理采集的數(shù)據(jù)、并將加工后的數(shù)據(jù)送到執(zhí)行機(jī)構(gòu)管理任務(wù)控制機(jī)構(gòu)執(zhí)行。4.實(shí)時(shí)系統(tǒng)
(1)定義:能在指定或確定的時(shí)間內(nèi)完成系統(tǒng)功能和對(duì)外部或內(nèi)部、同步或異步時(shí)間做出響應(yīng)的系統(tǒng)。
(2)區(qū)別:通用系統(tǒng)一般追求的是系統(tǒng)的平均響應(yīng)時(shí)間和用戶(hù)的使用方便;而實(shí)時(shí)系統(tǒng)主要考慮的是在最壞情況下的系統(tǒng)行為。
(3)特點(diǎn):時(shí)間約束性、可預(yù)測(cè)性、可靠性、與外部環(huán)境的交互性。
(4)硬實(shí)時(shí)(強(qiáng)實(shí)時(shí)):指應(yīng)用的時(shí)間需求應(yīng)能夠得到完全滿(mǎn)足,否則就造成重大安全事故,甚至造成重大的生命財(cái)產(chǎn)損失和生態(tài)破壞,如:航天、軍事。
(5)軟實(shí)時(shí)(弱實(shí)時(shí)):指某些應(yīng)用雖然提出了時(shí)間的要求,但實(shí)時(shí)任務(wù)偶爾違反這種需求對(duì)系統(tǒng)運(yùn)行及環(huán)境不會(huì)造成嚴(yán)重影響,如:監(jiān)控系統(tǒng)、實(shí)時(shí)信息采集系統(tǒng)。
(6)任務(wù)的約束包括:時(shí)間約束、資源約束、執(zhí)行順序約束和性能約束。5.嵌入式微處理器體系結(jié)構(gòu)
(1)馮諾依曼結(jié)構(gòu):程序和數(shù)據(jù)共用一個(gè)存儲(chǔ)空間,程序指令存儲(chǔ)地址和數(shù)據(jù)存儲(chǔ)地址指向同一個(gè)存儲(chǔ)器的不同物理位置,采用單一的地址及數(shù)據(jù)總線,程序和數(shù)據(jù)的寬度相同。例如:8086、ARM7、MIPS?
(2)哈佛結(jié)構(gòu):程序和數(shù)據(jù)是兩個(gè)相互獨(dú)立的存儲(chǔ)器,每個(gè)存儲(chǔ)器獨(dú)立編址、獨(dú)立訪問(wèn),是一種將程序存儲(chǔ)和數(shù)據(jù)存儲(chǔ)分開(kāi)的存儲(chǔ)器結(jié)構(gòu)。例如:AVR、ARM9、ARM10?
(3)CISC 與RISC 的特點(diǎn)比較(參照教程22 頁(yè))。
計(jì)算機(jī)執(zhí)行程序所需要的時(shí)間P 可以用下面公式計(jì)算:
P=I×CPI×T
I:高級(jí)語(yǔ)言程序編譯后在機(jī)器上運(yùn)行的指令數(shù)。
CPI:為執(zhí)行每條指令所需要的平均周期數(shù)。
T:每個(gè)機(jī)器周期的時(shí)間。
(4)流水線的思想:在CPU 中把一條指令的串行執(zhí)行過(guò)程變?yōu)槿舾芍噶畹淖舆^(guò)程在CPU 中重疊執(zhí)行。
(5)流水線的指標(biāo):
吞吐率:?jiǎn)挝粫r(shí)間里流水線處理機(jī)流出的結(jié)果數(shù)。如果流水線的子過(guò)程所用時(shí)間不一樣長(zhǎng),則吞吐率應(yīng)為最長(zhǎng)子過(guò)程的倒數(shù)。
建立時(shí)間:流水線開(kāi)始工作到達(dá)最大吞吐率的時(shí)間。若m 個(gè)子過(guò)程所用時(shí)間一樣,均為t,則建立時(shí)間T=mt。
(6)信息存儲(chǔ)的字節(jié)順序
A、存儲(chǔ)器單位:字節(jié)(8 位)
B、字長(zhǎng)決定了微處理器的尋址能力,即虛擬地址空間的大小。
C、32 位微處理器的虛擬地址空間位2^32,即4GB。
D、小端字節(jié)順序:低字節(jié)在內(nèi)存低地址處,高字節(jié)在內(nèi)存高地址處。
E、大端字節(jié)順序:高字節(jié)在內(nèi)存低地址處,低字節(jié)在內(nèi)存高地址處。
F、網(wǎng)絡(luò)設(shè)備的存儲(chǔ)順序問(wèn)題取決于OSI 模型底層中的數(shù)據(jù)鏈路層。6.邏輯電路基礎(chǔ)
(1)根據(jù)電路是否具有存儲(chǔ)功能,將邏輯電路劃分為:組合邏輯電路和時(shí)序邏輯電路。
(2)組合邏輯電路:電路在任一時(shí)刻的輸出,僅取決于該時(shí)刻的輸入信號(hào),而與輸入信號(hào)作用前電路的狀態(tài)無(wú)關(guān)。常用的邏輯電路有譯碼器和多路選擇器等。
(3)時(shí)序邏輯電路:電路任一時(shí)刻的輸出不僅與該時(shí)刻的輸入有關(guān),而且還與該時(shí)刻電路的狀態(tài)有關(guān)。因此,時(shí)序電路中必須包含記憶元件。觸發(fā)器是構(gòu)成時(shí)序邏輯電路的基礎(chǔ)。常用的時(shí)序邏輯電路有寄存器計(jì)數(shù)器等。
(4)真值表、布爾代數(shù)、摩根定律、門(mén)電路的概念。(教程28、29 頁(yè))
(5)NOR(或非)和NAND(與非)的門(mén)電路稱(chēng)為全能門(mén)電路,可以實(shí)現(xiàn)任何一種邏輯函數(shù)。
(6)譯碼器:多輸入多輸出的組合邏輯網(wǎng)絡(luò)。
每輸入一個(gè)n 位的二進(jìn)制代碼,在m 個(gè)輸出端中最多有一個(gè)有效。
當(dāng)m=2n 是,為全譯碼;當(dāng)m<2n 時(shí),為部分譯碼。
(7)由于集成電路的高電平輸出電流小,而低電平輸出電流相對(duì)比較大,采用集成門(mén)電路直接驅(qū)動(dòng)LED時(shí),較多采用低電平驅(qū)動(dòng)方式。液晶七段字符顯示器LCD 利用液晶有外加電場(chǎng)和無(wú)外加電場(chǎng)時(shí)不同的光學(xué)特性來(lái)顯示字符。
(8)時(shí)鐘信號(hào)是時(shí)序邏輯的基礎(chǔ),它用于決定邏輯單元中的狀態(tài)合適更新。同步是時(shí)鐘控制系統(tǒng)中的主要制約條件。
(9)在選用觸發(fā)器的時(shí)候,觸發(fā)方式是必須考慮的因素。觸發(fā)方式有兩種:
電平觸發(fā)方式:具有結(jié)構(gòu)簡(jiǎn)單的特點(diǎn),常用來(lái)組成暫存器。
邊沿觸發(fā)方式:具有很強(qiáng)的抗數(shù)據(jù)端干擾能力,常用來(lái)組成寄存器、計(jì)數(shù)器等。7.總線電路及信號(hào)驅(qū)動(dòng)
(1)總線是各種信號(hào)線的集合,是嵌入式系統(tǒng)中各部件之間傳送數(shù)據(jù)、地址和控制信息的公共通路。在同一時(shí)刻,每條通路線路上能夠傳輸一位二進(jìn)制信號(hào)。按照總線所傳送的信息類(lèi)型,可以分為:數(shù)據(jù)總線(DB)、地址總線(AB)和控制總線(CB)。
(2)總線的主要參數(shù):
總線帶寬:一定時(shí)間內(nèi)總線上可以傳送的數(shù)據(jù)量,一般用MByte/s 表示。
總線寬度:總線能同時(shí)傳送的數(shù)據(jù)位數(shù)(bit),即人們常說(shuō)的32 位、64 位等總線寬度的概念,也叫總線位寬??偩€的位寬越寬,總線每秒數(shù)據(jù)傳輸率越大,也就是總線帶寬越寬。
總線頻率:工作時(shí)鐘頻率以MHz 為單位,工作頻率越高,則總線工作速度越快,也即總線帶寬越寬。
總線帶寬= 總線位寬×總線頻率/8,單位是MBps。
常用總線:ISA 總線、PCI 總線、IIC 總線、SPI 總線、PC104 總線和CAN 總線等。
(3)只有具有三態(tài)輸出的設(shè)備才能夠連接到數(shù)據(jù)總線上,常用的三態(tài)門(mén)為輸出緩沖器。
(4)當(dāng)總線上所接的負(fù)載超過(guò)總線的負(fù)載能力時(shí),必須在總線和負(fù)載之間加接緩沖器或驅(qū)動(dòng)器,最常用的是三態(tài)緩沖器,其作用是驅(qū)動(dòng)和隔離。
(5)采用總線復(fù)用技術(shù)可以實(shí)現(xiàn)數(shù)據(jù)總線和地址總線的共用。但會(huì)帶來(lái)兩個(gè)問(wèn)題:
A、需要增加外部電路對(duì)總線信號(hào)進(jìn)行復(fù)用解耦,例如:地址鎖存器。
B、總線速度相對(duì)非復(fù)用總線系統(tǒng)低。
(6)兩類(lèi)總線通信協(xié)議:同步方式、異步方式。
(7)對(duì)總線仲裁問(wèn)題的解決是以?xún)?yōu)先級(jí)(優(yōu)先權(quán))的概念為基礎(chǔ)。8.電平轉(zhuǎn)換電路
(1)數(shù)字集成電路可以分為兩大類(lèi):雙極型集成電路(TTL)、金屬氧化物半導(dǎo)體(MOS)。
(2)CMOS 電路由于其靜態(tài)功耗極低,工作速度較高,抗干擾能力較強(qiáng),被廣泛使用。
(3)解決TTL 與CMOS 電路接口困難的辦法是在TTL 電路輸出端與電源之間接一上拉電阻R,上拉電阻R 的取值由TTL 的高電平輸出漏電流IOH 來(lái)決定,不同系列的TTL 應(yīng)選用不同的R 值。9.差錯(cuò)控制編碼
(1)根據(jù)碼組的功能,可以分為檢錯(cuò)碼和糾錯(cuò)碼兩類(lèi)。檢錯(cuò)碼是指能自動(dòng)發(fā)現(xiàn)差錯(cuò)的碼,例如奇偶檢驗(yàn)碼;糾錯(cuò)碼是指不僅能發(fā)現(xiàn)差錯(cuò)而且能自動(dòng)糾正差錯(cuò)的碼,例如循環(huán)冗余校驗(yàn)碼。
(2)奇偶檢驗(yàn)碼、海明碼、循環(huán)冗余校驗(yàn)碼(CRC)。(教程70 到77 頁(yè))10.嵌入式系統(tǒng)的度量項(xiàng)目
(1)性能指標(biāo):分為部件性能指標(biāo)和綜合性能指標(biāo),主要包括:吞吐率、實(shí)時(shí)性和各種利用率。
(2)可靠性與安全性
可靠性是嵌入式系統(tǒng)最重要、最突出的基本要求,是一個(gè)嵌入式系統(tǒng)能正常工作的保證,一般用平均故障間隔時(shí)間MTBF 來(lái)度量。
(3)可維護(hù)性:一般用平均修復(fù)時(shí)間MTTR 表示。
(4)可用性
(5)功耗
(6)環(huán)境適應(yīng)性
(7)通用性
(8)安全性
(9)保密性
(10)可擴(kuò)展性
性?xún)r(jià)比中的價(jià)格,除了直接購(gòu)買(mǎi)嵌入式系統(tǒng)的價(jià)格外,還應(yīng)包含安裝費(fèi)用、若干年的運(yùn)行維修費(fèi)用和軟件租用費(fèi)。
11.嵌入式系統(tǒng)中信息表示與運(yùn)算基礎(chǔ)
(1)進(jìn)位計(jì)數(shù)制與轉(zhuǎn)換:這樣比較簡(jiǎn)單,也應(yīng)該掌握怎么樣進(jìn)行換算,有出題的可能。
(2)計(jì)算機(jī)中數(shù)的表示:源碼、反碼與補(bǔ)碼。
正數(shù)的反碼與源碼相同,負(fù)數(shù)的反碼為該數(shù)的源碼除符號(hào)位外按位取反。
正數(shù)的補(bǔ)碼與源碼相同,負(fù)數(shù)的補(bǔ)碼為該數(shù)的反碼加一。
例如-98 的源碼:11100010B
反碼:10011101B
補(bǔ)碼:10011110B
(3)定點(diǎn)表示法:數(shù)的小數(shù)點(diǎn)的位置人為約定固定不變。
浮點(diǎn)表示法:數(shù)的小數(shù)點(diǎn)位置是浮動(dòng)的,它由尾數(shù)部分和階數(shù)部分組成。
任意一個(gè)二進(jìn)制N 總可以寫(xiě)成:N=2P×S。S 為尾數(shù),P 為階數(shù)。(4)漢字表示法(教程67、68 頁(yè)),搞清楚GB2318-80 中國(guó)標(biāo)碼和機(jī)內(nèi)碼的變換。
(5)語(yǔ)音編碼中波形量化參數(shù)(可能會(huì)出簡(jiǎn)單的計(jì)算題目哦)
采樣頻率:一秒內(nèi)采樣的次數(shù),反映了采樣點(diǎn)之間的間隔大小。
人耳的聽(tīng)覺(jué)上限是20kHz,因此40kHz 以上的采樣頻率足以使人滿(mǎn)意。
CD 唱片采用的采樣頻率是44.1kHz。
測(cè)量精度:樣本的量化等級(jí),目前標(biāo)準(zhǔn)采樣量級(jí)有8 位和16 位兩種。
聲道數(shù):?jiǎn)温暤篮土Ⅲw聲雙道。立體聲需要兩倍的存儲(chǔ)空間。12.嵌入式系統(tǒng)的評(píng)價(jià)方法:測(cè)量法和模型法
(1)測(cè)量法是最直接最基本的方法,需要解決兩個(gè)問(wèn)題:
A、根據(jù)研究的目的,確定要測(cè)量的系統(tǒng)參數(shù)。
B、選擇測(cè)量的工具和方式。
(2)測(cè)量的方式有兩種:采樣方式和事件跟蹤方式。
(3)模型法分為分析模型法和模擬模型法。分析模型法是用一些數(shù)學(xué)方程去刻畫(huà)系統(tǒng)的模型,而模擬模型法是用模擬程序的運(yùn)行去動(dòng)態(tài)表達(dá)嵌入式系統(tǒng)的狀態(tài),而進(jìn)行系統(tǒng)統(tǒng)計(jì)分析,得出性能指標(biāo)。
(4)分析模型法中使用最多的是排隊(duì)模型,它包括三個(gè)部分:輸入流、排隊(duì)規(guī)則和服務(wù)機(jī)構(gòu)。
(5)使用模型對(duì)系統(tǒng)進(jìn)行評(píng)價(jià)需要解決3 個(gè)問(wèn)題:設(shè)計(jì)模型、解模型、校準(zhǔn)和證實(shí)模型。13.1.嵌入式微處理器的基本結(jié)構(gòu)
(1)嵌入式硬件系統(tǒng)一般由嵌入式微處理器、存儲(chǔ)器和輸入/輸出部分組成。
(2)嵌入式微處理器是嵌入式硬件系統(tǒng)的核心,通常由控制單元、算術(shù)邏輯單元和寄存器3大部分組成:
A、控制單元:主要負(fù)責(zé)取指、譯碼和取數(shù)等基本操作并發(fā)送主要的控制指令。
B、算術(shù)邏輯單元:主要處理數(shù)值型數(shù)據(jù)和進(jìn)行邏輯運(yùn)算工作。
C、寄存器:用于暫存臨時(shí)性的數(shù)據(jù)。
2.嵌入式微處理器的分類(lèi)(根據(jù)用途)
(1)嵌入式微控制器(MCU):又稱(chēng)為單片機(jī),片上外設(shè)資源一般比較豐富,適合于控制。最大的特點(diǎn)是單片化,體積小,功耗和成本低,可靠性高。目前約占70%的市場(chǎng)份額。
(2)嵌入式微處理器(EMPU):又稱(chēng)為單板機(jī),由通用計(jì)算機(jī)中的CPU 發(fā)展而來(lái),它的特征是具有32位以上的處理器,具有較高的性能。通常嵌入式微處理器把CPU、ROM、RAM 及I/O 等模塊做到同一個(gè)芯片上。
(3)嵌入式DSP 處理器(DSP):專(zhuān)門(mén)用于信號(hào)處理方面的處理器,其在系統(tǒng)結(jié)構(gòu)和指令算法方面進(jìn)行了特殊設(shè)計(jì),使其處理速度比最快的CPU 還快10~50倍,在數(shù)字濾波、FFT、頻譜分析等方面獲得了大量的應(yīng)用。
(4)嵌入式片上系統(tǒng)(SOC):追求產(chǎn)品系統(tǒng)最大包容的集成器件,其最大的特點(diǎn)是成功實(shí)現(xiàn)了軟硬件的無(wú)縫結(jié)合,直接在微處理器片內(nèi)嵌入操作系統(tǒng)的代碼模塊。
3.典型8位微處理器(具有8位數(shù)據(jù)總線)的結(jié)構(gòu)和特點(diǎn)
該部分參考《教程》86~94頁(yè),以8051為重點(diǎn),徹底搞清楚8位單片機(jī)的工作原理,外設(shè)控制、存儲(chǔ)分布、尋址方式以及典型應(yīng)用。2007年11月下午的第一道題目就考查了8051的定時(shí)器使用、外部時(shí)鐘連接、實(shí)際應(yīng)用的流程設(shè)計(jì)以及典型的尋址方式。這些考點(diǎn)幾乎可以在《教程》上找到,例如外部時(shí)鐘連接那個(gè)問(wèn)題的答案就是《教程》89頁(yè)上面的原圖。4.典型16位微處理器的結(jié)構(gòu)和特點(diǎn)
該部分參考《教程》94~97頁(yè)。典型的微處理器可以參考MSP430,找一本這方面的書(shū)看看關(guān)于MSP430的結(jié)構(gòu)原理以及典型應(yīng)用。
5.典型32位微處理器的結(jié)構(gòu)和特點(diǎn)
該部分參考《教程》97~112頁(yè)。32位處理器采用32位的地址和數(shù)據(jù)總線,其地址空間達(dá)到了2^32=4GB。
目前主流的32位嵌入式處理器系統(tǒng)主要有ARM 系列、MIPS 系列、PoewrPC 系列等。ARM 微處理器體系結(jié)構(gòu)目前被公認(rèn)為是嵌入式應(yīng)用領(lǐng)域領(lǐng)先的32位嵌入式RISC 處理器結(jié)構(gòu)。按照目前的發(fā)展形式,ARM 幾乎成了嵌入式應(yīng)用的代名詞。按照我個(gè)人的意見(jiàn),作為嵌入式系統(tǒng)設(shè)計(jì)師考試,逐漸增加考查ARM 體系結(jié)構(gòu)與編程方面的題目是大勢(shì)所趨。2006年沒(méi)有一道關(guān)于ARM 的題目,2007年出了少量題目,可能在2008年會(huì)繼續(xù)增加。在下午題方面,2006年考查了X86方面的應(yīng)用、2007年考查了8051方面的應(yīng)用,這個(gè)可能是一個(gè)過(guò)度過(guò)程,以目前ARM 在嵌入式領(lǐng)域的廣泛應(yīng)用和普及程度,下午題目考查ARM 應(yīng)用方面或者32位其他的微處理器方面的應(yīng)用題目可能在不就將來(lái)的考試中就會(huì)出現(xiàn)。14.單片機(jī)系統(tǒng)的基本概念
(1)單片機(jī)組成:中央處理器、存儲(chǔ)器、I/O 設(shè)備。
(2)存儲(chǔ)器:物理實(shí)質(zhì)是一組或多組具備數(shù)據(jù)輸入/輸出和數(shù)據(jù)存儲(chǔ)功能的集成電路,用于充當(dāng)設(shè)備緩存或保存固定的程序及數(shù)據(jù)。
A、ROM(只讀存儲(chǔ)器):一般用于存放固定的程序或數(shù)據(jù)表格等,數(shù)據(jù)在掉電后仍然會(huì)保留下來(lái)。
B、RAM(隨機(jī)存儲(chǔ)器):用于暫存程序和數(shù)據(jù)、中間計(jì)算結(jié)果,或用作堆棧用等,數(shù)據(jù)在掉電后就會(huì)丟失。
(3)I/O端口:?jiǎn)纹瑱C(jī)與外界聯(lián)系的通道,它可以對(duì)各類(lèi)外部信號(hào)(開(kāi)關(guān)量、模擬量、頻率信號(hào))進(jìn)行檢測(cè)、判斷、處理,并可控制各類(lèi)外部設(shè)備?,F(xiàn)在的單片機(jī)I/O 口已經(jīng)集成了更多的特性和功能,對(duì)I/O端口的功能進(jìn)行了拓展和復(fù)用,例如外部中斷、ADC 檢測(cè)以及PWM 輸出等等。
(4)輸出電平:高電平電壓(輸出“1”時(shí))和低電平電壓(輸出“0”時(shí))
A、TTL 電平:正邏輯,5V 為邏輯正,0V 為邏輯負(fù),例如單片機(jī)的輸出。
B、RS232電平:負(fù)邏輯,-12V 為邏輯正,+12V 為邏輯負(fù),例如PC 的輸出。
注:因此在單片機(jī)和PC 進(jìn)行通訊的時(shí)候需要一個(gè)MAX232芯片進(jìn)行電平轉(zhuǎn)換。
(5)堆棧:它是一種線性的數(shù)據(jù)結(jié)構(gòu),是一個(gè)只有一個(gè)進(jìn)出口的一維空間。
A、堆棧特性:后進(jìn)先出(LIFO)
B、堆棧指針:用于指示棧頂?shù)奈恢?地址),當(dāng)發(fā)生壓?;蛘叱鰲2僮鲿r(shí),導(dǎo)致棧頂位置變化時(shí),堆棧指針會(huì)隨之變化。
C、堆棧操作:壓棧操作(PUSH)和出棧操作(POP)。
D、堆棧類(lèi)型:“向上生長(zhǎng)”型堆棧,每次壓棧時(shí)堆棧指針加1;“向下生長(zhǎng)”型堆棧,每次壓棧堆棧時(shí)指針減1。
E、堆棧應(yīng)用:調(diào)用子程序、響應(yīng)中斷時(shí),堆棧用于保護(hù)現(xiàn)場(chǎng);還可以用作臨時(shí)數(shù)據(jù)緩沖區(qū)來(lái)使用。
F、使用注意:堆棧溢出問(wèn)題,壓棧和出棧的匹配問(wèn)題。
(6)定時(shí)/計(jì)數(shù)器:實(shí)質(zhì)都是計(jì)數(shù)器。用作定時(shí)器時(shí)是對(duì)單片機(jī)內(nèi)部的時(shí)鐘脈沖進(jìn)行計(jì)數(shù),而在用作計(jì)數(shù)器時(shí)是對(duì)單片機(jī)外部的輸入脈沖進(jìn)行計(jì)數(shù),其作用如下:
A、計(jì)時(shí)、定時(shí)或延時(shí)控制;
B、脈沖技術(shù);
C、測(cè)量脈沖寬度或頻率(捕獲功能)
(7)中斷:優(yōu)先級(jí)更高的事件發(fā)生,打斷優(yōu)先級(jí)低的時(shí)間進(jìn)程。引起中斷的事件稱(chēng)為中斷源。一個(gè)單片機(jī)可能支持多個(gè)中斷源,這些中斷源可以分為可屏蔽中斷和非可屏蔽中斷,而這些中斷源并不都是系統(tǒng)工作所需的,我們可以根據(jù)系統(tǒng)需求屏蔽那些不需要的中斷源。
A、中斷嵌套:當(dāng)一個(gè)低級(jí)中斷尚未執(zhí)行完畢,又發(fā)生了一個(gè)高級(jí)優(yōu)先級(jí)的中斷,系統(tǒng)轉(zhuǎn)而執(zhí)行高級(jí)中斷服務(wù)程序,待處理完高級(jí)中斷后再回過(guò)頭來(lái)執(zhí)行低級(jí)中斷服務(wù)程序。
B、中斷響應(yīng)時(shí)間是指從發(fā)出中斷請(qǐng)求到進(jìn)入中斷處理所用的時(shí)間;中斷處理時(shí)間是指中斷處理開(kāi)始到中斷處理結(jié)束的時(shí)間。
C、中斷響應(yīng)過(guò)程:
a、保護(hù)現(xiàn)場(chǎng):將當(dāng)前地址、累加器ACC、狀態(tài)寄存器保存到堆棧中。
b、切換PC 指針:根據(jù)不同的中斷源所產(chǎn)生的中斷,切換到相應(yīng)的入口地址。
c、執(zhí)行中斷服務(wù)處理程序。
d、恢復(fù)現(xiàn)場(chǎng):將保存在堆棧中的主程序地址、累加器ACC、狀態(tài)寄存器恢復(fù)。
e、中斷返回:從中斷處返回到主程序,繼續(xù)執(zhí)行。
D、中斷入口地址:?jiǎn)纹瑱C(jī)為每個(gè)中斷源分配了不同的中斷入口地址,也稱(chēng)為中斷向量。
(8)復(fù)位:通過(guò)外部電路給單片機(jī)的復(fù)位引進(jìn)一個(gè)復(fù)位信號(hào),讓系統(tǒng)重新開(kāi)始運(yùn)行。
A、復(fù)位發(fā)生時(shí)的動(dòng)作:
a、PC 指針從起始位置開(kāi)始執(zhí)行(大多數(shù)單片機(jī)都時(shí)從0x0000處開(kāi)始執(zhí)行)。
b、I/O 端口設(shè)置成缺省狀態(tài)(高阻態(tài)、或者輸出低電平)。
c、部分專(zhuān)用控制寄存器SFR 恢復(fù)到缺省狀態(tài)。
d、普通RAM 不變(如果時(shí)上電復(fù)位,則是隨即數(shù))。
B、兩種不同的復(fù)位啟動(dòng)方式:
a、冷啟動(dòng):也叫上電復(fù)位,指在斷電狀態(tài)下給系統(tǒng)加電,讓系統(tǒng)開(kāi)始正常運(yùn)行。
b、熱啟動(dòng):在不斷電的狀態(tài)下,給單片機(jī)復(fù)位引進(jìn)一個(gè)復(fù)位信號(hào),讓系統(tǒng)重新開(kāi)始。
C、兩種類(lèi)型的復(fù)位電路:高電平復(fù)位和低電平復(fù)位。
D 注意事項(xiàng):
a、注意復(fù)位信號(hào)的電平狀態(tài)及持續(xù)時(shí)間必須滿(mǎn)足系統(tǒng)要求。
b、注意避免復(fù)位信號(hào)抖動(dòng)。
(9)時(shí)鐘電路:?jiǎn)纹瑱C(jī)是一種時(shí)序電路,必須提供脈沖電路才能正常工作。時(shí)鐘電路相當(dāng)于單片機(jī)的心臟,它的每一次跳動(dòng)(振動(dòng)節(jié)拍)都控制著單片機(jī)的工作節(jié)奏。振蕩得慢時(shí),系統(tǒng)工作速度就慢,振蕩得快時(shí),系統(tǒng)工作速度就快(功耗也增大)。
A、振蕩周期:振蕩源的振蕩節(jié)拍。
B、機(jī)器周期:?jiǎn)纹瑱C(jī)完成一個(gè)基本操作需要的振蕩周期(節(jié)拍)。
C、指令周期:執(zhí)行一條指令需要幾個(gè)機(jī)器周期。不同的指令需要的機(jī)器周期數(shù)不同。15.地址映射
地址映射也叫地址重定位。
邏輯地址和物理地址是完全不同的,不能用邏輯地址來(lái)直接訪問(wèn)內(nèi)存單元。
為了保證CPU 在執(zhí)行指令的時(shí)候,可以正確地訪問(wèn)內(nèi)存單元,需要將用戶(hù)程序中的邏輯地址轉(zhuǎn)換為運(yùn)行時(shí)由機(jī)器直接尋址的物理地址。這個(gè)過(guò)程稱(chēng)為:地址映射。
地址映射由存儲(chǔ)管理單元MMU 來(lái)完成。
地址映射主要有兩種方式:靜態(tài)地址映射和動(dòng)態(tài)地址映射。
靜態(tài)地址映射:當(dāng)用戶(hù)程序被裝入內(nèi)存時(shí),直接對(duì)指令代碼進(jìn)行修改,一次性地實(shí)現(xiàn)邏輯地址到物理地址的轉(zhuǎn)換。
動(dòng)態(tài)地址映射:當(dāng)用戶(hù)程序被裝入內(nèi)存時(shí),不對(duì)指令代碼做任何修改,而是在程序的運(yùn)行過(guò)程中,當(dāng)它需要訪問(wèn)內(nèi)存單元的時(shí)候,再來(lái)進(jìn)行地址轉(zhuǎn)換。
在具體實(shí)現(xiàn)時(shí),這項(xiàng)轉(zhuǎn)換工作一般是由硬件的地址映射機(jī)制來(lái)完成的。通常設(shè)置一個(gè)基地址寄存器,或者叫重定位寄存器。當(dāng)一個(gè)任務(wù)被調(diào)度運(yùn)行時(shí),就把它所在分區(qū)的起始地址裝入到整個(gè)寄存器中。然后,在程序運(yùn)行的過(guò)程中,當(dāng)需要訪問(wèn)某個(gè)內(nèi)存單元時(shí),硬件就會(huì)自動(dòng)地將其中的邏輯地址加上基地址寄存器中的內(nèi)容,從而得到實(shí)際的物理地址,并且按照這個(gè)物理地址區(qū)執(zhí)行。
這個(gè)基地址寄存器位于MMU 的內(nèi)部,整個(gè)地址映射過(guò)程是自動(dòng)運(yùn)行的。從理論上說(shuō),每訪問(wèn)一次內(nèi)存都要進(jìn)行一次地址映射。16.ARM體系結(jié)構(gòu)的基本概念
(1)ARM:Advanced RISC Machine。
(2)ARM體系結(jié)構(gòu)中支持兩種指令集:ARM 指令集和Thumb 指令集。
(3)ARM內(nèi)核有T、D、M、I四個(gè)功能模塊:
A、T 模塊:表示16位Thumb,可以在兼顧性能的同時(shí)減少代碼尺寸。
B、D 模塊:表示Debug,內(nèi)核中放置了用于調(diào)試的結(jié)構(gòu),通常為一個(gè)邊界掃描鏈JTAG。
C、M 模塊:表示8位乘法器。
D、I 模塊:表示EmbeddedICE Logic,用于實(shí)時(shí)斷點(diǎn)觀測(cè)及變量觀測(cè)的邏輯電路部分。
(4)ARM處理器有7種運(yùn)行模式:
A、用戶(hù)模式(User):正常程序執(zhí)行模式,用于應(yīng)用程序。
D、快速中斷模式(FIQ):快速中斷處理,用于高速數(shù)據(jù)傳輸和通道處理。
C、外部中斷模式(IRQ):用于通用的中斷處理。
D、管理模式(SVE):供操作系統(tǒng)使用的一種保護(hù)模式。
E、數(shù)據(jù)訪問(wèn)中止模式(Abort):用于虛擬存儲(chǔ)及存儲(chǔ)保護(hù)。
F、未定義指令中止模式(Undefined):當(dāng)未定義指令執(zhí)行時(shí)進(jìn)入該模式。
G、系統(tǒng)模式(System):用于運(yùn)行特權(quán)級(jí)的操作系統(tǒng)任務(wù)。
除了用戶(hù)模式之外的其他6種處理器模式稱(chēng)為特權(quán)模式,在這些模式下,程序可以訪問(wèn)所有的系統(tǒng)資源,也可以任意地進(jìn)行處理器模式切換,其中,除了系統(tǒng)模式外,其他的5種特權(quán)模式又稱(chēng)為異常模式。
處理器模式可以通過(guò)軟件控制進(jìn)行切換,也可以通過(guò)外部中斷或異常處理過(guò)程進(jìn)行切換。大多數(shù)的用戶(hù)程序運(yùn)行在用戶(hù)模式下,這時(shí),應(yīng)用程序不能訪問(wèn)一些受操作系統(tǒng)保護(hù)的系統(tǒng)資源,應(yīng)用程序也不能直接進(jìn)行處理器模式切換。當(dāng)需要進(jìn)行處理器模式切換時(shí),應(yīng)用程序可以產(chǎn)生異常處理,在異常處理中進(jìn)行處理器模式的切換。這種體系結(jié)構(gòu)可以使操作系統(tǒng)控制整個(gè)系統(tǒng)的資源。
當(dāng)應(yīng)用程序發(fā)生異常中斷時(shí),處理器進(jìn)入相應(yīng)的異常模式。在每一種異常模式種都有一組寄存器,供相應(yīng)的異常處理程序使用,這樣就可以保證進(jìn)入異常模式時(shí),用戶(hù)模式下的寄存器不被破壞。系統(tǒng)模式并不是通過(guò)異常過(guò)程進(jìn)入的,它和用戶(hù)模式具有完全一樣的寄存器,但是系統(tǒng)模式屬于特權(quán)模式,可以訪問(wèn)所有的系統(tǒng)資源,也可以直接進(jìn)行處理器模式切換,它主要供操作系統(tǒng)任務(wù)使用。17.嵌入式操作系統(tǒng)概述
(1)內(nèi)核
內(nèi)核是指操作系統(tǒng)中的一個(gè)組件,它包含了OS 的主要功能,即OS 的各種特性及其相
互之間的依賴(lài)關(guān)系,這些功能主要包括:
A、任務(wù)管理:對(duì)系統(tǒng)中運(yùn)行的軟件進(jìn)行描述和管理,并完成處理器資源分配和調(diào)度。
B、存儲(chǔ)管理:提高內(nèi)存的利用率,方便用戶(hù)使用,提供足夠的存儲(chǔ)空間。
C、設(shè)備管理:方便設(shè)備的使用,提高CPU 和I/O 設(shè)備的利用率。
D、文件管理:解決文件資源存儲(chǔ)、共享、保密和保護(hù)等問(wèn)題。
注:不同嵌入式操作系統(tǒng)的內(nèi)核設(shè)計(jì)各不相同,取決于系統(tǒng)設(shè)計(jì)和實(shí)際需求。
(2)嵌入式操作系統(tǒng)分類(lèi):
A、按系統(tǒng)類(lèi)型:商業(yè)系統(tǒng)、專(zhuān)用系統(tǒng)、開(kāi)源系統(tǒng)。
B、按響應(yīng)時(shí)間:硬實(shí)時(shí)系統(tǒng)、軟實(shí)時(shí)系統(tǒng)。
C、按軟件結(jié)構(gòu):?jiǎn)误w結(jié)構(gòu)(uCOS)、分層結(jié)構(gòu)(MS-DOS)、微內(nèi)核結(jié)構(gòu)(Vxworks)。18.嵌入式軟件基礎(chǔ)
(1)嵌入式軟件的特點(diǎn):
A、規(guī)模較小。
B、開(kāi)發(fā)難度大。
C、實(shí)時(shí)性和可靠性要求高。
D、要求固化存儲(chǔ)。
(2)嵌入式軟件分類(lèi):
A、系統(tǒng)軟件:控制和管理嵌入式系統(tǒng)資源,如嵌入式操作系統(tǒng)、驅(qū)動(dòng)程序、中間件等。
B、應(yīng)用軟件:定義嵌入式設(shè)備的主要功能和用途,負(fù)載與用戶(hù)進(jìn)行交互。
C、支撐軟件:輔助軟件開(kāi)發(fā)的工具軟件。
(3)無(wú)操作系統(tǒng)的嵌入式軟件的兩種實(shí)現(xiàn)方式:
A、循環(huán)輪轉(zhuǎn)
優(yōu)點(diǎn):簡(jiǎn)單、直觀、開(kāi)銷(xiāo)小、可預(yù)測(cè)。
缺點(diǎn):過(guò)于簡(jiǎn)單,所有代碼順序執(zhí)行,無(wú)法處理異步事件,缺乏并行處理能力。
B、前后臺(tái)系統(tǒng)(在循環(huán)輪轉(zhuǎn)的基礎(chǔ)上增加了中斷處理功能)
前臺(tái)(事件處理級(jí)):中斷服務(wù)程序,負(fù)載處理異步事件。
后臺(tái)(任務(wù)級(jí)):一個(gè)無(wú)限循環(huán),負(fù)載資源分配、任務(wù)管理和系統(tǒng)調(diào)度。
(4)有操作系統(tǒng)的三大優(yōu)點(diǎn):
A、提高系統(tǒng)的可靠性。
B、提高了系統(tǒng)的開(kāi)發(fā)效率,降低了開(kāi)發(fā)成本,縮短了開(kāi)發(fā)周期。
C、有利于系統(tǒng)的擴(kuò)展與移植。
(5)設(shè)備驅(qū)動(dòng)層(也叫板級(jí)支持包BSP:包含了嵌入式系統(tǒng)中所有與硬件相關(guān)的代碼)
大多數(shù)的嵌入式硬件設(shè)備都需要某種類(lèi)型軟件的初始化和管理。這部分工作由設(shè)備驅(qū)動(dòng)層來(lái)完成的,它負(fù)責(zé)直接與硬件大交道,對(duì)硬件進(jìn)行管理和控制,為上層軟件提供所需的驅(qū)動(dòng)支持,類(lèi)似PC 系統(tǒng)中的BIOS 和驅(qū)動(dòng)程序。19.設(shè)備管理
(1)設(shè)備管理基礎(chǔ)
一個(gè)I/O 單元通常由兩個(gè)部分組成:
A、機(jī)械部分:I/O 設(shè)備本身。
B、電子部分:設(shè)備控制器或設(shè)備適配器。
硬件寄存器的編址方式有三種:
A、I/O獨(dú)立編址:對(duì)于各種設(shè)備控制器中的每一個(gè)寄存器,分配一個(gè)唯一的I/O端口編號(hào),也叫I/O 端口地址,然后用專(zhuān)門(mén)的I/O 指令對(duì)這些端口進(jìn)行操作。這些端口地址構(gòu)成的地址空間是完全獨(dú)立的,與內(nèi)存地址空間沒(méi)有任何關(guān)系。
B、內(nèi)存映象編址:把各種設(shè)備控制器當(dāng)中的每一個(gè)寄存器都映射為一個(gè)內(nèi)存單元,這內(nèi)存單元專(zhuān)門(mén)用于I/O 操作。端口地址空間與內(nèi)存地址空間是統(tǒng)一編址的,端口地址空間是內(nèi)存地址空間的一部分。
C、混合編址:對(duì)于設(shè)備控制器當(dāng)中的寄存器采用獨(dú)立編址的方法,每個(gè)寄存器有一個(gè)獨(dú)立的I/O 端口地址;而對(duì)于設(shè)備的數(shù)據(jù)緩沖區(qū),則采用內(nèi)存映象編址的方法,把他們統(tǒng)一到內(nèi)存地址空間當(dāng)中。
(2)I/O控制方式:
A、程序循環(huán)檢測(cè):要一直占用CPU,浪費(fèi)CPU 的時(shí)間。
B、中斷驅(qū)動(dòng)方式:前后臺(tái)系統(tǒng)。
C、直接內(nèi)存訪問(wèn):DMA 控制,減少了中斷的次數(shù)。20.任務(wù)管理
(1)嵌入式操作系統(tǒng)的任務(wù)管理可以分為:
A、單道程序技術(shù):操作系統(tǒng)中,任何時(shí)候只能有一個(gè)程序在運(yùn)行。
B、多道程序技術(shù):操作系統(tǒng)中,允許多個(gè)程序同時(shí)存在并運(yùn)行。
(2)進(jìn)程
進(jìn)程,簡(jiǎn)單的說(shuō),是一個(gè)正在運(yùn)行的程序。
進(jìn)程與程序既有聯(lián)系又有區(qū)別,主要表現(xiàn)為下面結(jié)構(gòu)方面:
A、程序由數(shù)據(jù)和代碼兩部分內(nèi)容組成,它是一個(gè)靜態(tài)的概念。而進(jìn)程是正在執(zhí)行的程序,它也由兩部分組成:程序和該程序的運(yùn)行上下文。它是一個(gè)動(dòng)態(tài)的概念。
B、程序和進(jìn)程之間并不是一一對(duì)應(yīng)的。一個(gè)進(jìn)程在運(yùn)行的時(shí)候可以啟動(dòng)一個(gè)或多個(gè)程序。反之,同一個(gè)程序也可能由多進(jìn)程同時(shí)執(zhí)行。
C、程序可以作為一種軟件資源長(zhǎng)期保存,以文件的形式存放在光盤(pán)或硬盤(pán)上,而進(jìn)程則是一次執(zhí)行的過(guò)程,它是暫時(shí)的,是動(dòng)態(tài)的產(chǎn)生和終止。
一個(gè)進(jìn)程至少應(yīng)包括三個(gè)方面:相應(yīng)的程序、CPU上下文、一組系統(tǒng)資源。
進(jìn)程有三個(gè)特性:
A、動(dòng)態(tài)性:進(jìn)程是正在運(yùn)行的程序,而程序的運(yùn)行狀態(tài)是不斷變化的。
B、獨(dú)立性:進(jìn)程是系統(tǒng)資源的使用單位,每個(gè)進(jìn)行有自己的運(yùn)行上下文和內(nèi)部狀態(tài)。
C、并發(fā)性:宏觀來(lái)看,系統(tǒng)中同時(shí)有多個(gè)進(jìn)程存在,它們相互獨(dú)立地運(yùn)行。
注:對(duì)于并發(fā)的理解。
在單CPU 的情況下,所謂的并發(fā)性指的是宏觀上的并發(fā)運(yùn)行,而微觀上還是順序進(jìn)行,各個(gè)進(jìn)程輪流去使用CPU 資源。在單核CPU 中,真正的、物理上的PC 寄存器只有一個(gè),進(jìn)程在輪流執(zhí)行的時(shí)候,物理PC 的取值也在不斷變化。而邏輯PC 其實(shí)就是一個(gè)內(nèi)存變量。每個(gè)進(jìn)程都有一個(gè)邏輯PC,當(dāng)一個(gè)進(jìn)程要運(yùn)行的時(shí)候,就把它的邏輯PC 裝載到物理PC 中去;反之,當(dāng)一個(gè)進(jìn)程暫不運(yùn)行的時(shí)候,就把物理PC中的值保存在它的邏輯PC 當(dāng)中。
(3)線程
線程就是進(jìn)程當(dāng)中的一條執(zhí)行流程。
進(jìn)程其實(shí)包含兩個(gè)部分:資源平臺(tái)和執(zhí)行流程(線程)。
在一個(gè)進(jìn)程當(dāng)中,或者說(shuō)在一個(gè)資源平臺(tái)上,可以同時(shí)存在多個(gè)線程;可以用線程作為CPU 的基本調(diào)度單位,使得各個(gè)線程之間可以并發(fā)執(zhí)行;對(duì)于同一個(gè)進(jìn)程當(dāng)中的各個(gè)線程來(lái)說(shuō),他們可以共享該進(jìn)程的大部分資源。每個(gè)線程都有自己獨(dú)立的CPU運(yùn)行上下文和棧,這是不能共享的。21.文件系統(tǒng)
(1)嵌入式文件系統(tǒng)概述
文件系統(tǒng)就是操作系統(tǒng)中用以組織、存儲(chǔ)、命名、使用和保護(hù)文件的一套管理機(jī)制。
常見(jiàn)的嵌入式文件系統(tǒng)有:
A、FAT:VxWorks、QNX、WindowsCE 等
B、NFS:網(wǎng)絡(luò)文件系統(tǒng),基于遠(yuǎn)程調(diào)用和擴(kuò)展數(shù)據(jù)表示。
C、FFS:用于Flash 存儲(chǔ)器的文件系統(tǒng)。
(2)文件和目錄
A、當(dāng)一個(gè)文件被創(chuàng)建時(shí),必須給它指定一個(gè)名字,用戶(hù)就是通過(guò)文件名來(lái)訪問(wèn)這個(gè)文件的。
B、文件命是一個(gè)有限長(zhǎng)度的字符串,由兩部分組成:文件名和擴(kuò)展名。
C、文件的邏輯結(jié)構(gòu)主要有三種:無(wú)結(jié)構(gòu)、簡(jiǎn)單的記錄結(jié)構(gòu)和復(fù)雜結(jié)構(gòu)。現(xiàn)代文件系統(tǒng)通常采用的是無(wú)結(jié)構(gòu)的形式。
D、除了文件名之外,操作系統(tǒng)會(huì)給每個(gè)文件附加一些其他信息,稱(chēng)為文件的屬性。
E、文件的存取方法有兩種:順序存取和隨機(jī)存取。
F、目錄也稱(chēng)為文件夾,它是一張表格,記錄了在該目錄下每個(gè)文件名和其他的一些管理信息。
G、在多級(jí)目錄結(jié)構(gòu)中,訪問(wèn)文件或目錄主要有兩種方法:絕對(duì)路徑名和相對(duì)路徑名。22.存儲(chǔ)器系統(tǒng)的層次架構(gòu)
計(jì)算機(jī)系統(tǒng)的存儲(chǔ)器被組織城一個(gè)金字塔的層次結(jié)構(gòu)。
自上而下為:CPU 內(nèi)部寄存器、芯片內(nèi)部高速緩存(cache)、芯片外部高速緩存(SRAM、SDRAM、DRAM)、主存儲(chǔ)器(FLASH、EEPROM)、外部存儲(chǔ)器(磁盤(pán)、光盤(pán)、CF 卡、SD 卡)和遠(yuǎn)程二級(jí)存儲(chǔ)器(分布式文件系統(tǒng)、WEB 服務(wù)器),6個(gè)層次的結(jié)構(gòu)。
上述設(shè)備從上而下,依次速度更慢、容量更大、訪問(wèn)頻率更小,造價(jià)更便宜。22.高速緩存(cache)
工作原理(參照教程126頁(yè),博客畫(huà)不了圖):主要利用了程序的局部性特點(diǎn)。
地址映象是指把主存地址空間映象到cache 的地址空間。
地址變換是指當(dāng)程序或數(shù)據(jù)已經(jīng)裝入到cache 后,在實(shí)際運(yùn)行過(guò)程中,把主存地址如何編程cache 空間的地址。
常用的地址映象和地址變換的方式有:(教程127頁(yè))
直接映象和變換:速度快,造價(jià)低,但有局限性,不能充分利用cache 的好處。
組相聯(lián)地址映象和變換:速度稍慢但是命中率高。
全相聯(lián)地址映象和變換:可以任意映射。
常用的cache 替換算法:輪轉(zhuǎn)法和隨機(jī)替換算法。
高速緩存的分類(lèi):
統(tǒng)一cache 和獨(dú)立的數(shù)據(jù)/指令cache
寫(xiě)通cache 和寫(xiě)回cache
讀操作分配cache 和寫(xiě)操作分配cache 23.存儲(chǔ)管理單元(MMU)
MMU 在CPU 和物理內(nèi)存之間進(jìn)行地址轉(zhuǎn)換,將地址從邏輯空間映射到物理空間,這個(gè)過(guò)程稱(chēng)為內(nèi)存映射。
MMU 主要完成下面的工作:
A.虛擬存儲(chǔ)空間到物理空間的映射。
B.存儲(chǔ)器訪問(wèn)權(quán)限的控制。
C.設(shè)置虛擬存儲(chǔ)空間的緩沖特性。
嵌入式系統(tǒng)中常常采用頁(yè)式存儲(chǔ)管理。為了管理這些頁(yè)引入了頁(yè)表的概念。
頁(yè)表是位于內(nèi)存中的表,它的每一行對(duì)應(yīng)虛擬存儲(chǔ)空間的一個(gè)頁(yè),該行包含了該虛擬內(nèi)存頁(yè)對(duì)應(yīng)的物理內(nèi)存頁(yè)的地址、該頁(yè)的訪問(wèn)權(quán)限和該頁(yè)的緩沖特性等。
從虛擬地址到物理地址的變換過(guò)程就是查詢(xún)頁(yè)表的過(guò)程。
由于頁(yè)表存儲(chǔ)在內(nèi)存中的,整個(gè)查詢(xún)過(guò)程需要付出很大的代價(jià)。根據(jù)程序局部性的特點(diǎn),增加了一個(gè)小容量、高速度的存儲(chǔ)部件來(lái)存放當(dāng)前訪問(wèn)需要的地址變換條目,這個(gè)存儲(chǔ)部件稱(chēng)為:地址轉(zhuǎn)換后備緩沖器(TLB)。
當(dāng)CPU 訪問(wèn)內(nèi)存時(shí),首先在TLB 中查找需要的地址變換條目,如果該條目不存在,CPU 再?gòu)膬?nèi)存中的頁(yè)表中查詢(xún),并把相應(yīng)的結(jié)果添加到TLB 中,更新它的內(nèi)容。
嵌入式系統(tǒng)中虛擬存儲(chǔ)空間到物理空間的映射以?xún)?nèi)存塊為單位進(jìn)行。即虛擬存儲(chǔ)空間中一塊連續(xù)的存儲(chǔ)空間被映射到物理存儲(chǔ)空間中同樣大小的一塊連續(xù)存儲(chǔ)空間。
在頁(yè)表和TLB 中,每一個(gè)地址變換條目實(shí)際上記錄了一個(gè)虛擬存儲(chǔ)空間的內(nèi)存塊的基地址與物理存儲(chǔ)空間相對(duì)應(yīng)的一個(gè)內(nèi)存塊的基地址之間的對(duì)應(yīng)關(guān)系。
在MMU 中實(shí)現(xiàn)虛擬地址到物理地址的映射是通過(guò)兩級(jí)頁(yè)表來(lái)實(shí)現(xiàn)的。
禁止MMU 時(shí),所有物理地址和虛擬地址相等,即使用平板存儲(chǔ)模式。24.內(nèi)存保護(hù)
操作系統(tǒng)通常利用MMU 來(lái)實(shí)現(xiàn)操作系統(tǒng)內(nèi)核與應(yīng)用程序之間的隔離,以及應(yīng)用程序與應(yīng)用程序之間的隔離。
內(nèi)存保護(hù)包含兩個(gè)方面的內(nèi)容:
A.防止地址越界,每個(gè)應(yīng)用程序都有自己獨(dú)立的地址空間。
B.防止越權(quán)操作,每個(gè)應(yīng)用程序都有自己的訪問(wèn)權(quán)限。25.實(shí)模式與保護(hù)模式
在嵌入式系統(tǒng)中,常見(jiàn)的存儲(chǔ)管理方案可以分為兩大類(lèi):實(shí)模式和保護(hù)模式。
實(shí)模式:內(nèi)存的平面使用模式。特點(diǎn)有:
A.不劃分“系統(tǒng)空間”與“用戶(hù)空間”,無(wú)須進(jìn)行地址映射。
B.操作系統(tǒng)與應(yīng)用程序之間不再有物理的邊界。
C.系統(tǒng)中的“任務(wù)”或“進(jìn)程”,實(shí)際上全是內(nèi)核線程。
在實(shí)模式下,內(nèi)存布局可以分為5個(gè)段:
A.代碼段:包含操作系統(tǒng)和應(yīng)用程序的所有代碼。
B.數(shù)據(jù)段:所有帶有初始值的全局變量。
C.BSS 段:所有未帶初始值的全局變量。
D.堆空間:動(dòng)態(tài)分配的內(nèi)存空間。
E.棧空間:保存上下文以及函數(shù)調(diào)用時(shí)的局部變量和形參。
在實(shí)模式存儲(chǔ)管理方案下,主要的工作在于堆空間的管理,即如何來(lái)管理空閑的堆空間、如何來(lái)分配內(nèi)存、如何來(lái)回收內(nèi)存等等。
保護(hù)模式:處理器中必須有MMU 硬件并啟用。特點(diǎn)有:
A.系統(tǒng)內(nèi)核和用戶(hù)程序都有各自獨(dú)立的地址空間。
B.每個(gè)應(yīng)用程序只能訪問(wèn)自己的地址空間,不能去破壞操作系統(tǒng)和其他應(yīng)用程序的代碼和數(shù)據(jù)。26.分區(qū)存儲(chǔ)管理
為了實(shí)現(xiàn)多道程序系統(tǒng)而采用的最簡(jiǎn)單的內(nèi)存管理。
基本思路:把整個(gè)內(nèi)存劃分為兩大區(qū)域,即系統(tǒng)區(qū)和用戶(hù)區(qū),然后再把用戶(hù)區(qū)劃分為若干個(gè)分區(qū),每個(gè)任務(wù)占有其中的一個(gè)分區(qū)。這樣,在內(nèi)存當(dāng)中就同時(shí)保留多個(gè)任務(wù),讓他們共享整個(gè)用戶(hù)區(qū),從而實(shí)現(xiàn)多個(gè)任務(wù)的并發(fā)運(yùn)行。
分區(qū)存儲(chǔ)管理又可以分為兩類(lèi):固定分區(qū)和可變分區(qū)。
固定分區(qū):各個(gè)用戶(hù)分區(qū)的個(gè)數(shù)、位置和大小一旦確定后,就固定不變,不能再修改。
優(yōu)點(diǎn):易于實(shí)現(xiàn),系統(tǒng)開(kāi)銷(xiāo)較小。
缺點(diǎn):內(nèi)存利用率不高,分區(qū)總數(shù)固定。
可變分區(qū):動(dòng)態(tài)創(chuàng)建,在裝入一個(gè)程序時(shí),系統(tǒng)將根據(jù)它的需求和內(nèi)存空間的使用情況來(lái)決定是否分配。
優(yōu)點(diǎn):動(dòng)態(tài)變化,非常靈活。
缺點(diǎn):可能存在外碎片。
在實(shí)現(xiàn)可變存儲(chǔ)管理技術(shù)的時(shí)候,需要考慮三個(gè)方面的問(wèn)題:
A.內(nèi)存管理的數(shù)據(jù)結(jié)構(gòu)
B.內(nèi)存的分配算法
C.內(nèi)存的回收算法
27.嵌入式系統(tǒng)的特點(diǎn)、分類(lèi)、發(fā)展與應(yīng)用,熟悉嵌入式系統(tǒng)的邏輯組成。
(1)特點(diǎn):
專(zhuān)用性
隱蔽性(嵌入式系統(tǒng)是被包裝在內(nèi)部)
資源受限(要求小型化、輕型化、低功耗及低成本,因此軟硬件資源受到限制)
高可靠性(任何誤動(dòng)作都可能會(huì)產(chǎn)生致命的后果)
軟件固化(軟件都固化在只讀存儲(chǔ)器ROM中,用戶(hù)不能隨意更改其程序功能)
實(shí)時(shí)性
(2)邏輯組成
硬件:1)處理器(運(yùn)算器、控制器、存儲(chǔ)器)
目前所有的處理器都是微處理器 中央處理器(CPU)和協(xié)助處理器(數(shù)字信號(hào)處理器DSP、圖像處理器、通信處理器)
2)存儲(chǔ)器(隨機(jī)存儲(chǔ)器RAM和只讀存儲(chǔ)器ROM)
RAM分為動(dòng)態(tài)DRAM和靜態(tài)SRAM兩種。DRAM電路簡(jiǎn)單、集成度高、功耗小、成本低,但速度稍慢慢;SRAM電路較復(fù)雜、集成度低、功耗較大、成本高,但工作速度很快,適合用作指令和數(shù)據(jù)的高速緩沖存儲(chǔ)器
RAM當(dāng)關(guān)機(jī)或斷電時(shí),其中的信息都會(huì)消失,屬于易失性存儲(chǔ)器
ROM屬于不易失性存儲(chǔ)器。分為電可擦可編程只讀存儲(chǔ)器(存放
固件)和閃速存儲(chǔ)器(Flash ROM簡(jiǎn)稱(chēng)內(nèi)存)。內(nèi)存的工作原理:在低
壓下,存儲(chǔ)的信息可讀但不可寫(xiě),這類(lèi)似于ROM;在較高的電壓下,所存儲(chǔ)的信息可以更改和刪除,這有類(lèi)似于RAM。
3)I/O設(shè)備與I/O接口
4)數(shù)據(jù)總線
軟件
(3)分類(lèi)
按嵌入式系統(tǒng)的軟硬件技術(shù)復(fù)雜程度進(jìn)行分類(lèi):
1)低端系統(tǒng) 采用4位或8位單片機(jī),在工控領(lǐng)域和白色家電領(lǐng)域占主導(dǎo)地位,如計(jì)算器、遙控器、充電器、空調(diào)、傳真機(jī)、BP機(jī)等。
2)中端系統(tǒng) 采用8位/16位/32位單片機(jī),主要用于普通手機(jī)、攝像機(jī)、錄像機(jī)、電子游戲機(jī)等。
3)高端系統(tǒng)采用32位/64位單片機(jī),主要用于智能手機(jī)、調(diào)制解調(diào)器、掌上計(jì)算機(jī)、路由器、數(shù)碼相機(jī)等。
(4)發(fā)展
20世紀(jì)60年代初,第一個(gè)工人的現(xiàn)代嵌入式系統(tǒng)(阿波羅導(dǎo)航計(jì)算機(jī))
20世紀(jì)60年代中期,嵌入式計(jì)算機(jī)批量生產(chǎn)
20世紀(jì)70年代,微處理器出現(xiàn)
20世紀(jì)80年代中期,外圍電路的元器件被集成到處理器芯片中,昂貴的模擬電路元件能被數(shù)字電路替代
20世紀(jì)90年代中期SOC出現(xiàn),集成電路進(jìn)入超深亞微米乃至納米加工時(shí)代。28.嵌入式系統(tǒng)的組成與微電子技術(shù)(集成電路、EDA、SoC、IP核等技術(shù)的作用和發(fā)展)
(1)集成電路IC 集成電路的制造大約需要幾百道工序,工藝復(fù)雜。集成電路是在硅襯底上制作而成的。硅襯底是將單晶硅錠經(jīng)切割、研磨和拋光后制成的像鏡面一樣光滑的圓形薄片,它的厚度不足1mm,其直徑可以是6、8、12英寸甚至更大這種硅片稱(chēng)為硅拋光片,用于集成電路的制造。制造集成電路的工藝技術(shù)稱(chēng)為硅平面工藝,包括氧化、光刻、摻雜等多項(xiàng)工序。把這些工序反復(fù)交叉使用,最終在硅片上制成包含多層電路及電子元件的集成電路。集成電路的特點(diǎn):體積小、重量輕、可靠性高。其工作速度主要取決于邏輯門(mén)電路的晶體管的尺寸。尺寸越小,工作頻率就越高,門(mén)電路的開(kāi)關(guān)速度就越快。(2)EDA(電子信號(hào)自動(dòng)化)(3)SoC芯片(片上系統(tǒng))
既包含數(shù)字電路,也可以包含模擬電路,還可以包含數(shù)?;旌想娐泛蜕漕l電路。SoC芯片可以是一個(gè)CPU,單核SoC,也可以由多個(gè)CPU和/或DSP,即多核SoC。開(kāi)發(fā)流程:
(1)總體設(shè)計(jì)
可以采用系統(tǒng)設(shè)計(jì)語(yǔ)言System C(或稱(chēng)IEEE 1666,它是C++的擴(kuò)充)或System Vetilog語(yǔ)言對(duì)SoC芯片的軟硬件作統(tǒng)一的描述,按照系統(tǒng)需求說(shuō)明書(shū)確定SoC的性能能參數(shù),并據(jù)此進(jìn)行系統(tǒng)全局的設(shè)計(jì)。
(2)邏輯設(shè)計(jì)
將總體設(shè)計(jì)的結(jié)果用RTL(寄存器傳輸級(jí)描述語(yǔ)言)語(yǔ)言進(jìn)行描述(源文件)后,在使用邏輯綜合將源文件進(jìn)行綜合生成,生成最簡(jiǎn)的布爾表達(dá)式核心好的連接關(guān)系(以類(lèi)型為EDF的EDA工業(yè)標(biāo)準(zhǔn)文件表示)(3)綜合和仿真
(4)芯片制造
借助EDA中的布局布線工具(4)IP核
IC設(shè)計(jì)文件:邏輯門(mén)級(jí),包括各種基本的門(mén)電路;寄存器傳輸級(jí),如寄存器、譯碼器、數(shù)據(jù)轉(zhuǎn)換器;行為級(jí),如CPU、DSP、存儲(chǔ)器、總線與接口電路等。核庫(kù)中的設(shè)計(jì)文件均屬于知識(shí)產(chǎn)權(quán)IP保護(hù)的范疇,所以稱(chēng)為“知識(shí)產(chǎn)權(quán)核”或“IP核”。IP核是開(kāi)發(fā)SoC的重要保證。按IC設(shè)計(jì)文件的類(lèi)型,IP通常分為:軟核、固核、硬核。IP核的復(fù)用可以減少研發(fā)成本,縮短研發(fā)時(shí)間,是實(shí)現(xiàn)SoC的快速設(shè)計(jì),盡早投放市場(chǎng)的有效途徑。
目前主要的CPU內(nèi)核有ARM、MIPS、PowerPC、Coldfile、x86、8051等。ARM內(nèi)核占所有32位嵌入式RISC處理器的90%以上。
29.嵌入式系統(tǒng)與數(shù)字媒體(文本、圖像和音頻/視頻等數(shù)字媒體的表示與處理)(1)文本
含義:在計(jì)算機(jī)中的文字信息,最常用的一種數(shù)字媒體。字符集及其編碼
1)西方字符的編碼
ASCII字符集和ASCII編碼,基本的ASCII字符集共128個(gè)字符,每個(gè)字符使用7個(gè)二進(jìn)位(最高位為奇偶校驗(yàn)位,預(yù)留位)制進(jìn)行編碼。2)漢字的編碼
漢子國(guó)家編碼標(biāo)準(zhǔn)有GB2312和GB18030。每個(gè)漢字用2個(gè)字節(jié)表示。GB2312只有6763個(gè)漢字,經(jīng)常不夠用。GB18030字符集與UCS/Unicode字符集基本兼容,采用不等長(zhǎng)的編碼方法,單字節(jié)編碼表示ASCII字符,與ASCII碼兼容;雙字節(jié)表示漢字,與GB2312保持向下兼容(即GB2312中有的GB18030字符集都有)3)UCS/Unicode編碼 文本類(lèi)型 1)簡(jiǎn)單文本
只能順序閱讀。2)豐富格式文本
有插圖、對(duì)文字顏色等定義,調(diào)整頁(yè)面,文本布局,插入聲音視頻等。3)超文本
通過(guò)超鏈接實(shí)現(xiàn)跳轉(zhuǎn)、導(dǎo)航、回溯等操作(2)圖像
圖像獲取過(guò)程的核心是模擬信號(hào)的數(shù)字化,處理步驟為:
1)掃描
將畫(huà)面網(wǎng)格化,每個(gè)網(wǎng)格為一個(gè)取樣點(diǎn) 2)分色
將每個(gè)取樣點(diǎn)的顏色分解成三原色
3)取樣
測(cè)量每個(gè)取樣點(diǎn)的每個(gè)分量(基色)亮度值
4)量化
把模擬量使用數(shù)字量來(lái)表示,A/D轉(zhuǎn)換
數(shù)字圖像的主要參數(shù):圖像大小(水平分辨率*豎直分辨率)、位平面數(shù)目、像素深 度、顏色模型
一幅圖像的數(shù)據(jù)量計(jì)算公式:
圖像數(shù)據(jù)量=圖像大小*像素深度/8(3)音頻/視頻
音頻/視頻信息的數(shù)字化,處理步驟為: 1)取樣
2)量化
3)編碼
數(shù)字音頻的主要參數(shù):取樣頻率、量化位數(shù)、聲道數(shù)目、使用的壓縮編碼方法、比特率(每秒鐘的數(shù)據(jù)量)
壓縮前
波形聲音的碼率(比特率)= 取樣頻率 * 量化為數(shù) * 聲道數(shù)(單位b/s)壓縮后
碼率 = 壓縮前碼率 / 壓縮倍數(shù)(壓縮比)
30.嵌入式系統(tǒng)與網(wǎng)絡(luò)通信技術(shù)(數(shù)字通信與計(jì)算機(jī)網(wǎng)絡(luò),TCP/IP協(xié)議,互聯(lián)網(wǎng)接入技術(shù)等)(1)數(shù)字通信(2)計(jì)算機(jī)網(wǎng)絡(luò)(3)音頻/ TCP/IP協(xié)議(4)互聯(lián)網(wǎng)接入技術(shù)
31.ARM處理器內(nèi)核的體系結(jié)構(gòu)(工作狀態(tài),工作模式,寄存器組織,異常,數(shù)據(jù)類(lèi)型與存儲(chǔ)格式等)(1)工作狀態(tài)
一是ARM狀態(tài),二是Thumb指令狀態(tài)及Thumb-2狀態(tài),三是調(diào)試狀態(tài)。ARM處理器復(fù)位后開(kāi)始執(zhí)行代碼時(shí)總是只處于ARM狀態(tài),如果需要,可通過(guò)下面的方法切換到Thumb狀態(tài)或Thumb-2狀態(tài)
ARM狀態(tài)切換到Thumb指令狀態(tài):通過(guò)BX指令,將操作數(shù)寄存器的最低位設(shè)置為1即可。如果R0[0]=1,則執(zhí)行BX R0指令將進(jìn)入Thumb狀態(tài)
Thumb狀態(tài)切換到ARM狀態(tài):通過(guò)BX指令,將操作數(shù)寄存器的最低位設(shè)置為0即可。如果R0[0]=0,則執(zhí)行BX R0指令將進(jìn)入ARM狀態(tài)。(2)七種工作模式
(3)寄存器組織
ARM處理器共有37種寄存器,包括31個(gè)通用寄存器(含PC)和6個(gè)狀態(tài)寄存器。無(wú)論何種模式,R15均作為PC使用;CPSR為當(dāng)前程序狀態(tài)寄存器;R7-R0為公用的通用寄存器。所有通用寄存器均為32位結(jié)構(gòu)。程序狀態(tài)寄存器的格式: 31 30 29 28 27
26??8
0
條件碼標(biāo)志含義如下:
N為符號(hào)標(biāo)志位,N=1為負(fù)數(shù),N=0為正數(shù)。Z為全0標(biāo)志位,運(yùn)算結(jié)果為0,則Z=1,否則Z=0; C為進(jìn)借位標(biāo)志,有進(jìn)/借位時(shí)C=1,否則C=0.V為溢出標(biāo)志,加減法運(yùn)算結(jié)果溢出時(shí)V=1,否則V=0.Q為增強(qiáng)的DSP運(yùn)算指令溢出標(biāo)志,溢出時(shí)Q=1,否則Q=0.控制位含義如下:
I為中斷禁止控制位,I=1禁止IRQ中斷,I=0,允許中斷。
F為禁止快速中斷FIQ的控制位,F(xiàn)=1禁止FIQ中斷,F(xiàn)=0允許。
T為ARM和Thumb指令切換,T=1時(shí)執(zhí)行Thumb指令,否則執(zhí)行ARM指令。
M4-M0為模式選擇位(4)存儲(chǔ)格式
大端模式:32位數(shù)據(jù)字的高字節(jié)存儲(chǔ)在低地址,而數(shù)據(jù)字的低字節(jié)則存放在高地址中。
小端模式:32位數(shù)據(jù)字的高字節(jié)存儲(chǔ)在高地址,而數(shù)據(jù)字的低字節(jié)則存放在低地址中。系統(tǒng)復(fù)位時(shí),自動(dòng)默認(rèn)為小端模式。
例如:一個(gè)32位數(shù)據(jù)字0x12345678,存放在起始地址為0x30001000,則大端模式下0x30001000單元存放0x12,0x30001001單元存放0x34,0x30001002單元存放0x56,0x30001003單元存放0x78;而小端模式下0x30001000單元存放0x78,0x30001001單元存放0x56,0x30001002單元存放0x34,0x30001003單元存放0x12。(5)數(shù)據(jù)類(lèi)型
8位、16位、32位三種數(shù)據(jù)類(lèi)型(6)ARM處理器中MMU和MPU
MMU存儲(chǔ)器管理單元(memory management unit)功能:
1)虛擬地址到物理地址映射
2)存儲(chǔ)器訪問(wèn)權(quán)限受限
3)虛擬存儲(chǔ)空間的緩沖特性設(shè)置
MPU存儲(chǔ)器保護(hù)單元(memory protect unit)(7)異常(7種)
32.嵌入式處理器的結(jié)構(gòu)、特點(diǎn)與分類(lèi)(不同類(lèi)型的典型嵌入式處理器及其特點(diǎn),嵌入式處理器分類(lèi)等)
(1)不同內(nèi)核嵌入式微控制器性能比較
(2)馮–諾依曼結(jié)構(gòu)和哈佛結(jié)構(gòu)的區(qū)別
兩者連接CPU程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器的方式不同 馮–諾依曼結(jié)構(gòu)
CPU 程序/數(shù)據(jù)存儲(chǔ)器
哈佛結(jié)構(gòu)
程序存儲(chǔ)器 CPU 數(shù)據(jù)存儲(chǔ)器程序總線
數(shù)據(jù)總線(3)分類(lèi)
按指令集分為:復(fù)雜指令集結(jié)構(gòu)CISC和精簡(jiǎn)指令集結(jié)構(gòu)RISC 按存儲(chǔ)機(jī)制分為:馮–諾依曼結(jié)構(gòu)和哈佛結(jié)構(gòu) 按字長(zhǎng)分為:8位、16位、32位、64位結(jié)構(gòu)
按不同內(nèi)核系列可以分為:
51、AVR、PIC、MSP430、PowerPC、Coldfile、ARM(4)不同典型內(nèi)核簡(jiǎn)介
32.ARM處理器指令系統(tǒng)及匯編語(yǔ)言程序設(shè)計(jì)(指令格式,尋址方式,指令集,偽指令,語(yǔ)句格式與程序結(jié)構(gòu),ARM匯編語(yǔ)言與C的混合編程等)(1)指令格式
指令一般格:
{}{S} ,{,}
其中<>不可省
指令格式說(shuō)明:
關(guān)于#imm8m的說(shuō)明:#表示立即數(shù),其后可以是十進(jìn)制或十六進(jìn)制數(shù)。
對(duì)于ARM指令集,#imm8m表示一個(gè)由8位立即數(shù)經(jīng)循環(huán)右移任意偶數(shù)位次形成的32位操作數(shù)。
對(duì)于Thumb指令集,#imm8m表示一個(gè)由8位立即數(shù)經(jīng)左移任意位次形成的32位操作數(shù)。尋址方式:
33.典型ARM處理器內(nèi)核(ARM9,Cortex-A,Cortex-M,Cortex-R等的技術(shù)特點(diǎn)與應(yīng)用領(lǐng)域)(1)Cortex-A系列是面向高端嵌入式應(yīng)用的處理器核:具有MMU、Cache、最快頻率、最高性能、合理功耗。
(2)Cortex-R系列是面向?qū)崟r(shí)控制的處理器:具有MPU、Cache、實(shí)時(shí)響應(yīng)、合理性能、較低功耗。(3)Cortex-M系列是面向低端微控制器的處理器,沒(méi)有MMU但有MPU,極高性?xún)r(jià)比、最低成本,極低功耗。
34.嵌入式硬件組成與嵌入式處理芯片(組成,特點(diǎn),類(lèi)型,ARM的AMBA總線,嵌入式處理芯片的選型)
基于ARM內(nèi)核的典型嵌入式應(yīng)用系統(tǒng)硬件組成
典型嵌入式系統(tǒng)硬件由嵌入式最小硬件系統(tǒng)(電源電路、時(shí)鐘(晶振)電路、復(fù)位電路、JTAG測(cè)試接口)、前向通道(輸入接口)、后向通道(輸出接口)、人機(jī)交互通道(鍵盤(pán),觸摸屏以及LED或LCD顯示輸出接口)以及相互互聯(lián)通信通道(CAN通信接口、以太網(wǎng)通信接口、USB通信接口)等組成。
電源電路為整個(gè)嵌入式系統(tǒng)提供能量,是整個(gè)系統(tǒng)工作的基礎(chǔ),具有極其重要的位置。一般來(lái)說(shuō),如果電源電路處理得好,整個(gè)系統(tǒng)的故障往往能顯著減少。選擇設(shè)計(jì)電源電路是主要考慮以下因素:輸出電壓電流、輸入電壓電流(交流還是直流)、安全因素、體積限制、功耗限制、成本限制。
常用的電源模塊是交流變直流(AC-DC)模塊、直流變直流模塊(DC-DC)、低壓穩(wěn)壓器(LDO)。穩(wěn)壓器包括普通穩(wěn)壓器和低壓差穩(wěn)壓器LDO。78XX系列屬于普通穩(wěn)壓器,LM2576/2596為開(kāi)關(guān)穩(wěn)壓芯片,CAT6219/AS2815/1117/2908等屬于低壓穩(wěn)壓器。穩(wěn)壓器的最大特點(diǎn)就是低噪聲、低成本、紋波小、精度高、電路簡(jiǎn)單。35.基于ARM內(nèi)核的典型嵌入式芯片的硬件組成1)存儲(chǔ)器及控制器
片內(nèi)程序存儲(chǔ)器通常是用Flash ROM,一般配有幾KB到幾MB不等。片內(nèi)數(shù)據(jù)存儲(chǔ)器通常使用SRAM,一般幾KB到幾百KB。2)中斷控制器
一般采用向量中斷(VIC)或嵌套向量中斷(NVIC)。Cortex-M支持嵌套的向量中斷。3)DMA控制器(直接存儲(chǔ)器訪問(wèn)控制器)
使用DMA控制器,可將數(shù)據(jù)塊從外設(shè)傳輸至內(nèi)存、從內(nèi)存?zhèn)鬏斨镣庠O(shè)或從內(nèi)存?zhèn)鬏斨羶?nèi)存。
4)電源管理與時(shí)鐘控制器
5)GPIO接端口(General Purpose Input Output通用輸入/輸出端口)
作為輸入時(shí)具有緩沖功能,而作為輸出是具有鎖存功能,GPIO也可以作為雙向I/O使用。在ARM處理芯片中,GPIO引腳通常是多功能的,以減少引腳數(shù),減少功耗。6)定時(shí)計(jì)數(shù)組件
主要包括看門(mén)狗定時(shí)器(WDT)監(jiān)視著程序的運(yùn)行狀態(tài) Timer通用定時(shí)器
用于一般的定時(shí)
RTC可直接提供年月日時(shí)分秒,使應(yīng)用系統(tǒng)具有獨(dú)立的日期和時(shí)間
脈沖寬度調(diào)制解調(diào)器(PWM)用于脈沖寬度的調(diào)制,比如電機(jī)控制、用于變頻調(diào)整等。7)模擬通道組件
8)互聯(lián)通信組件
36.嵌入式處理芯片的選型 1)性?xún)r(jià)比原則
性能高,價(jià)格低 2)參數(shù)選擇原則
ARM內(nèi)核(指令流水線、支持Thumb/Thumb-2指令集、最高時(shí)鐘頻率的限制、最低功耗要求以及低成本要求)系統(tǒng)時(shí)鐘頻率(頻率越高,處理速度越快;通常ARM芯片的速度主要取決于ARM內(nèi)核)芯片內(nèi)部存儲(chǔ)器的容量
片內(nèi)外圍電路(GPIO外部引腳條數(shù)、定時(shí)計(jì)數(shù)器、LCD液晶顯示控制器、多核處理器、ADC、通信接口)
37.常用ARM嵌入式處理芯片
1)NXP的典型ARM芯片
2)TI的典型ARM芯片
3)Samsung的典型ARM芯片
4)Atmel的典型ARM芯片
5)ST的典型ARM芯片
6)Freescale的典型ARM芯片
7)Nuvoton的典型ARM芯片
8)Intel的典型ARM芯片
9)其他ARM芯片廠家 38.頁(yè)式存儲(chǔ)管理(重點(diǎn))
基本思路:把物理內(nèi)存劃分為許多固定大小的內(nèi)存塊,稱(chēng)為物理頁(yè)面;把邏輯地址空間也劃分為大小相同的塊,稱(chēng)為邏輯頁(yè)面。當(dāng)一個(gè)用戶(hù)程序被裝入內(nèi)存時(shí),不是以整個(gè)程序?yàn)閱挝唬阉娣旁谝徽麎K連續(xù)的區(qū)域,而是以頁(yè)面為單位來(lái)進(jìn)行分配的。對(duì)于一個(gè)大小為N 的頁(yè)面程序,需要有N 個(gè)空閑的物理頁(yè)面來(lái)把它裝載。這些物理頁(yè)面不一定是要連續(xù)的。
在頁(yè)式存儲(chǔ)管理中需要解決三個(gè)問(wèn)題:數(shù)據(jù)結(jié)構(gòu)、內(nèi)存分配與回收、地址映射。
數(shù)據(jù)結(jié)構(gòu)有兩個(gè):頁(yè)表和物理頁(yè)面表。
A.頁(yè)表:給出了任務(wù)邏輯頁(yè)面號(hào)和內(nèi)存中物理頁(yè)面號(hào)之間的對(duì)應(yīng)關(guān)系。
B.物理頁(yè)面表:描述內(nèi)存空間中,各個(gè)物理頁(yè)面的使用情況。
具體的例子請(qǐng)參考《教程》317頁(yè)(博客中畫(huà)不了圖,有興趣自己看)。
內(nèi)存的分配過(guò)程:
A.對(duì)于一個(gè)新來(lái)的任務(wù),計(jì)算它所需要的頁(yè)面數(shù)N,然后查看位示圖,看是否還有N 個(gè)空閑的物理頁(yè)面。
B.如果有足夠的空閑物理頁(yè)面,就去申請(qǐng)一個(gè)頁(yè)表,其長(zhǎng)度為N,并把頁(yè)表的起始地址填入到該任務(wù)的控制塊中。
C.分配N(xiāo) 個(gè)空閑的物理頁(yè)面,把他們的變換填到頁(yè)表中,建立邏輯頁(yè)面與物理頁(yè)面直接的對(duì)應(yīng)關(guān)系。
D.修改位示圖,對(duì)剛剛被占用的那些物理頁(yè)面進(jìn)行標(biāo)記。地址映射的基本思路:
A.邏輯地址分析:對(duì)邏輯地址,找到它所在的邏輯頁(yè)面,以及它在頁(yè)面內(nèi)的偏移地址。
B.頁(yè)表查找:根據(jù)邏輯頁(yè)面號(hào),從頁(yè)表中找出它對(duì)應(yīng)的物理頁(yè)面號(hào)。
C.物理地址合成:根據(jù)物理頁(yè)面號(hào)和頁(yè)內(nèi)偏移地址,最終確定物理地址。
邏輯地址分析:
頁(yè)面的大小都是2的整數(shù)次冪。對(duì)于給定的一個(gè)邏輯地址,可以直接把它的高位部分作為邏輯頁(yè)面號(hào),把它的低位部分作為頁(yè)內(nèi)偏移地址。例如,假設(shè)頁(yè)面的大小是4KB,即2的12次冪,邏輯地址為32為,那么在一個(gè)邏輯地址當(dāng)中,最低12位為頁(yè)內(nèi)偏移地址,而剩下的20位就是邏輯頁(yè)面號(hào)。
計(jì)算方法:
邏輯頁(yè)面號(hào)=邏輯地址/頁(yè)面大小
頁(yè)內(nèi)偏移量=邏輯地址%頁(yè)面大小
頁(yè)表查找:
頁(yè)表作為操作系統(tǒng)的一個(gè)數(shù)據(jù)結(jié)構(gòu),通常保存在內(nèi)核的地址空間中。
頁(yè)表基地址寄存器用來(lái)指向頁(yè)表的起始地址;頁(yè)表長(zhǎng)度寄存器用來(lái)指示頁(yè)表的大小,即對(duì)于當(dāng)前任務(wù),它總共包含有多少個(gè)頁(yè)面。
物理地址合成:
假設(shè)物理頁(yè)面號(hào)為f,頁(yè)內(nèi)偏移地址為offset,每個(gè)頁(yè)面大小為2n,那么相應(yīng)的物理地址為:f×2n+offset。39.虛擬存儲(chǔ)管理
程序局部性原理:時(shí)間局限性和空間局限性。
虛擬頁(yè)式存儲(chǔ)管理:在頁(yè)式管理的基礎(chǔ)上,增加了請(qǐng)求調(diào)頁(yè)和頁(yè)面置換的功能。
基本思路:當(dāng)一個(gè)用戶(hù)程序需要調(diào)入內(nèi)存去運(yùn)行時(shí),不是將這個(gè)程序的所有頁(yè)面都裝入內(nèi)存,而是只裝載部分的頁(yè)面,就可以啟動(dòng)這個(gè)程序運(yùn)行。在運(yùn)行過(guò)程中,如果發(fā)現(xiàn)要執(zhí)行的指令或者訪問(wèn)的數(shù)據(jù)不在內(nèi)存當(dāng)中,就向系統(tǒng)發(fā)出缺頁(yè)中斷請(qǐng)求,然后系統(tǒng)在處理這個(gè)中斷請(qǐng)求時(shí),就會(huì)將保存在外存中的相應(yīng)頁(yè)面調(diào)入內(nèi)存,從而使該程序能繼續(xù)運(yùn)行。
在虛擬頁(yè)式存儲(chǔ)管理中,頁(yè)表包含:邏輯頁(yè)面號(hào)、物理頁(yè)面號(hào)、駐留位、保護(hù)位、修改位和訪問(wèn)位。
常用的頁(yè)面置換算法:
A.最優(yōu)頁(yè)面置換算法:理想化算法。
B.最近最久未使用算法:鏈表法和棧方法。尋找長(zhǎng)時(shí)間沒(méi)有被訪問(wèn)的頁(yè)面。
C.最不常用算法:每個(gè)頁(yè)面設(shè)置一個(gè)訪問(wèn)計(jì)數(shù)器。
D.先進(jìn)先出算法:性能比較差。
E.時(shí)鐘頁(yè)面置換算法:把頁(yè)面組成環(huán)形鏈表,類(lèi)似時(shí)鐘面。
一般來(lái)說(shuō),當(dāng)一個(gè)任務(wù)剛剛啟動(dòng)的時(shí)候,它會(huì)不斷去訪問(wèn)一些新的頁(yè)面,然后逐步建立一個(gè)比較穩(wěn)定的工作集。工作集是指當(dāng)前任務(wù)正在使用的邏輯頁(yè)面的集合。如果分配給一個(gè)任務(wù)的物理頁(yè)面數(shù)太少,不能包含整個(gè)的工作集,任務(wù)將會(huì)造成很多缺頁(yè)中斷,需要頻繁地進(jìn)行頁(yè)面置換,這種現(xiàn)象稱(chēng)為“抖動(dòng)”。40.Flash存儲(chǔ)器
(1)Flash 存儲(chǔ)器是一種非易失性存儲(chǔ)器,根據(jù)結(jié)構(gòu)的不同可以將其分為NOR Flash 和NAND Flash 兩種。
(2)Flash存儲(chǔ)器的特點(diǎn):
A、區(qū)塊結(jié)構(gòu):在物理上分成若干個(gè)區(qū)塊,區(qū)塊之間相互獨(dú)立。
B、先擦后寫(xiě):Flash 的寫(xiě)操作只能將數(shù)據(jù)位從1寫(xiě)成0,不能從0寫(xiě)成1,所以在對(duì)存儲(chǔ)器進(jìn)行寫(xiě)入之前必須先執(zhí)行擦除操作,將預(yù)寫(xiě)入的數(shù)據(jù)位初始化為1。擦除操作的最小單位是一個(gè)區(qū)塊,而不是單個(gè)字節(jié)。
C、操作指令:執(zhí)行寫(xiě)操作,它必須輸入一串特殊指令(NOR Flash)或者完成一段時(shí)序(NAND Flash)才能將數(shù)據(jù)寫(xiě)入。
D、位反轉(zhuǎn):由于Flash 的固有特性,在讀寫(xiě)過(guò)程中偶爾會(huì)產(chǎn)生一位或幾位的數(shù)據(jù)錯(cuò)誤。位反轉(zhuǎn)無(wú)法避免,只能通過(guò)其他手段對(duì)結(jié)果進(jìn)行事后處理。
E、壞塊:區(qū)塊一旦損壞,將無(wú)法進(jìn)行修復(fù)。對(duì)已損壞的區(qū)塊操作其結(jié)果不可預(yù)測(cè)。
(3)NOR Flash的特點(diǎn):
應(yīng)用程序可以直接在閃存內(nèi)運(yùn)行,不需要再把代碼讀到系統(tǒng)RAM 中運(yùn)行。NOR Flash 的傳輸效率很高,在1MB~4MB 的小容量時(shí)具有很高的成本效益,但是很低的寫(xiě)入和擦除速度大大影響了它的性能。
(4)NAND Flash的特點(diǎn)
能夠提高極高的密度單元,可以達(dá)到高存儲(chǔ)密度,并且寫(xiě)入和擦除的速度也很快,這也是為何所有的U盤(pán)都使用NAND Flash 作為存儲(chǔ)介質(zhì)的原因。應(yīng)用NAND Flash 的困難在于閃存需要特殊的系統(tǒng)接口。41.RAM存儲(chǔ)器
(1)SRAM 的特點(diǎn):
SRAM 表示靜態(tài)隨機(jī)存取存儲(chǔ)器,只要供電它就會(huì)保持一個(gè)值,它沒(méi)有刷新周期,由觸發(fā)器構(gòu)成基本單元,集成度低,每個(gè)SRAM 存儲(chǔ)單元由6個(gè)晶體管組成,因此其成本較高。它具有較高速率,常用于高速緩沖存儲(chǔ)器。
通常SRAM 有4種引腳:
CE:片選信號(hào),低電平有效。
R/W:讀寫(xiě)控制信號(hào)。
ADDRESS:一組地址線。
DATA:用于數(shù)據(jù)傳輸?shù)囊唤M雙向信號(hào)線。
(2)DRAM 的特點(diǎn):
DRAM 表示動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器。這是一種以電荷形式進(jìn)行存儲(chǔ)的半導(dǎo)體存儲(chǔ)器。它的每個(gè)存儲(chǔ)單元由一個(gè)晶體管和一個(gè)電容器組成,數(shù)據(jù)存儲(chǔ)在電容器中。電容器會(huì)由于漏電而導(dǎo)致電荷丟失,因而DRAM器件是不穩(wěn)定的。它必須有規(guī)律地進(jìn)行刷新,從而將數(shù)據(jù)保存在存儲(chǔ)器中。
DRAM 的接口比較復(fù)雜,通常有一下引腳:
CE:片選信號(hào),低電平有效。
R/W:讀寫(xiě)控制信號(hào)。
RAS:行地址選通信號(hào),通常接地址的高位部分。
CAS:列地址選通信號(hào),通常接地址的低位部分。
ADDRESS:一組地址線。
DATA:用于數(shù)據(jù)傳輸?shù)囊唤M雙向信號(hào)線。
(3)SDRAM 的特點(diǎn):
SDRAM 表示同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器。同步是指內(nèi)存工作需要同步時(shí)鐘,內(nèi)部的命令發(fā)送與數(shù)據(jù)的傳輸都以它為基準(zhǔn);動(dòng)態(tài)是指存儲(chǔ)器陣列需要不斷的刷新來(lái)保證數(shù)據(jù)不丟失。它通常只能工作在133MHz的主頻。
(4)DDRAM 的特點(diǎn)
DDRAM 表示雙倍速率同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器,也稱(chēng)DDR。DDRAM 是基于SDRAM 技術(shù)的,SDRAM 在一個(gè)時(shí)鐘周期內(nèi)只傳輸一次數(shù)據(jù),它是在時(shí)鐘的上升期進(jìn)行數(shù)據(jù)傳輸;而DDR 內(nèi)存則是一個(gè)時(shí)鐘周期內(nèi)傳輸兩次次數(shù)據(jù),它能夠在時(shí)鐘的上升期和下降期各傳輸一次數(shù)據(jù)。在133MHz 的主頻下,DDR內(nèi)存帶寬可以達(dá)到133×64b/8×2=2.1GB/s。42.存儲(chǔ)器系統(tǒng)的層次架構(gòu)
計(jì)算機(jī)系統(tǒng)的存儲(chǔ)器被組織成一個(gè)金字塔的層次結(jié)構(gòu)。
自上而下為:CPU內(nèi)部寄存器、芯片內(nèi)部高速緩存(cache)、芯片外部高速緩存(SRAM、SDRAM、DRAM)、主存儲(chǔ)器(FLASH、EEPROM)、外部存儲(chǔ)器(磁盤(pán)、光盤(pán)、CF卡、SD卡)和遠(yuǎn)程二級(jí)存儲(chǔ)器(分布式文件系統(tǒng)、WEB服務(wù)器),6個(gè)層次的結(jié)構(gòu)。
上述設(shè)備從上而下,依次速度更慢、容量更大、訪問(wèn)頻率更小,造價(jià)更便宜。
2、高速緩存(cache)
工作原理(參照教程126頁(yè),博客畫(huà)不了圖):主要利用了程序的局部性特點(diǎn)。
地址映象是指把主存地址空間映象到cache的地址空間。
地址變換是指當(dāng)程序或數(shù)據(jù)已經(jīng)裝入到cache后,在實(shí)際運(yùn)行過(guò)程中,把主存地址如何編程cache空間的地址。
常用的地址映象和地址變換的方式有:(教程127頁(yè))
直接映象和變換:速度快,造價(jià)低,但有局限性,不能充分利用cache的好處。
組相聯(lián)地址映象和變換:速度稍慢但是命中率高。
全相聯(lián)地址映象和變換:可以任意映射。
常用的cache替換算法:輪轉(zhuǎn)法和隨機(jī)替換算法。
高速緩存的分類(lèi):
統(tǒng)一cache和獨(dú)立的數(shù)據(jù)/指令cache
寫(xiě)通cache和寫(xiě)回cache
讀操作分配cache和寫(xiě)操作分配cache 43.I/O接口、I/O設(shè)備以及外部通信接口(GPIO、IC、SPI、UART、USB、HDMI等;鍵盤(pán)、LED、LCD、觸摸屏、傳感器等;RS-232/RS-485、CAN、以太網(wǎng)和常用無(wú)線通信接口)(1)GPIO(通用輸入輸出接口)
在嵌入式處理器內(nèi)部,輸入具備緩沖功能,輸出具有鎖存功能。GPIO一般有三態(tài):0態(tài)、1態(tài)、高阻狀態(tài)。
(2)集成電路互連總線接口IIC 集成電路互連總線用于連接嵌入式處理器及外圍器件,采用串行半雙工傳輸?shù)目偩€標(biāo)準(zhǔn)。IIC總線具有的接口線少,控制方式簡(jiǎn)單,器件封裝緊湊,通信速率較高(100kb/s,400kb/s,高速模式可達(dá)3.4Mb/s)等優(yōu)點(diǎn)。IIC總線的操作時(shí)序
IIC總線只有兩條信號(hào)線,一條是數(shù)據(jù)線SDA,另一條是時(shí)鐘線SCL,所有的操作均通過(guò)這兩條信號(hào)線完成。數(shù)據(jù)線SDA上的數(shù)據(jù)必須在時(shí)鐘的高電平周期保持穩(wěn)定,它的高/低電平狀態(tài)只有在SCL時(shí)鐘信號(hào)線是低電平時(shí)才能改變。1)啟動(dòng)和停止條件
總線上的所有器件都不使用總線時(shí),SCL線和SDA線各自的上拉電阻把電平拉高,使它們均處于高電平。主控制器啟動(dòng)總線操作的條件是當(dāng)SCL線保持高電平時(shí)SDA線有高電平轉(zhuǎn)為低電平,此時(shí)主控制器在SCL產(chǎn)生時(shí)鐘信號(hào),SDA線開(kāi)始傳輸數(shù)據(jù)。若SCL線為高電平時(shí)SDA由低轉(zhuǎn)為高,則總線工作停止,恢復(fù)空閑狀態(tài) 2)數(shù)據(jù)傳送格式 3)應(yīng)答(ACK)信號(hào)傳送 4)讀/寫(xiě)操作 5)總線仲裁 6)異常中斷條件(3)串行外設(shè)接口SPI
(4)串行異步通信接口UART(5)高清多媒體接口HDMI
(6)常用簡(jiǎn)單輸入設(shè)備(鍵盤(pán)、觸摸屏、傳感器)(7)常用簡(jiǎn)單輸出設(shè)備(LED、數(shù)碼管、LCD、)
(8)基于UART的RS—232/RS—485 CAN總線接口
以太網(wǎng)通信接口常用無(wú)線通信接口(GPS模塊、GPRS模塊、WiFi模塊、藍(lán)牙模塊、射頻無(wú)線收發(fā)模塊)43.存儲(chǔ)管理單元(MMU)memory management unit MMU在CPU和物理內(nèi)存之間進(jìn)行地址轉(zhuǎn)換,將地址從邏輯空間映射到物理空間,這個(gè)過(guò)程稱(chēng)為內(nèi)存映射。
MMU主要完成下面的工作:
A.虛擬存儲(chǔ)空間到物理空間的映射。
B.存儲(chǔ)器訪問(wèn)權(quán)限的控制。
C.設(shè)置虛擬存儲(chǔ)空間的緩沖特性。
嵌入式系統(tǒng)中常常采用頁(yè)式存儲(chǔ)管理。為了管理這些頁(yè)引入了頁(yè)表的概念。
頁(yè)表是位于內(nèi)存中的表,它的每一行對(duì)應(yīng)虛擬存儲(chǔ)空間的一個(gè)頁(yè),該行包含了該虛擬內(nèi)存頁(yè)對(duì)應(yīng)的物理內(nèi)存頁(yè)的地址、該頁(yè)的訪問(wèn)權(quán)限和該頁(yè)的緩沖特性等。
從虛擬地址到物理地址的變換過(guò)程就是查詢(xún)頁(yè)表的過(guò)程。
由于頁(yè)表存儲(chǔ)在內(nèi)存中的,整個(gè)查詢(xún)過(guò)程需要付出很大的代價(jià)。根據(jù)程序局部性的特點(diǎn),增加了一個(gè)小容量、高速度的存儲(chǔ)部件來(lái)存放當(dāng)前訪問(wèn)需要的地址變換條目,這個(gè)存儲(chǔ)部件稱(chēng)為:地址轉(zhuǎn)換后備緩沖器(TLB)。
當(dāng)CPU訪問(wèn)內(nèi)存時(shí),首先在TLB中查找需要的地址變換條目,如果該條目不存在,CPU再?gòu)膬?nèi)存中的頁(yè)表中查詢(xún),并把相應(yīng)的結(jié)果添加到TLB中,更新它的內(nèi)容。
嵌入式系統(tǒng)中虛擬存儲(chǔ)空間到物理空間的映射以?xún)?nèi)存塊為單位進(jìn)行。即虛擬存儲(chǔ)空間中一塊連續(xù)的存儲(chǔ)空間被映射到物理存儲(chǔ)空間中同樣大小的一塊連續(xù)存儲(chǔ)空間。
在頁(yè)表和TLB中,每一個(gè)地址變換條目實(shí)際上記錄了一個(gè)虛擬存儲(chǔ)空間的內(nèi)存塊的基地址與物理存儲(chǔ)空間相對(duì)應(yīng)的一個(gè)內(nèi)存塊的基地址之間的對(duì)應(yīng)關(guān)系。
在MMU中實(shí)現(xiàn)虛擬地址到物理地址的映射是通過(guò)兩級(jí)頁(yè)表來(lái)實(shí)現(xiàn)的。
禁止MMU時(shí),所有物理地址和虛擬地址相等,即使用平板存儲(chǔ)模式。內(nèi)存保護(hù)
操作系統(tǒng)通常利用MMU來(lái)實(shí)現(xiàn)操作系統(tǒng)內(nèi)核與應(yīng)用程序之間的隔離,以及應(yīng)用程序與應(yīng)用程序之間的隔離。
內(nèi)存保護(hù)包含兩個(gè)方面的內(nèi)容:
A.防止地址越界,每個(gè)應(yīng)用程序都有自己獨(dú)立的地址空間。
B.防止越權(quán)操作,每個(gè)應(yīng)用程序都有自己的訪問(wèn)權(quán)限。44.實(shí)模式與保護(hù)模式
在嵌入式系統(tǒng)中,常見(jiàn)的存儲(chǔ)管理方案可以分為兩大類(lèi):實(shí)模式和保護(hù)模式。
實(shí)模式:內(nèi)存的平面使用模式。特點(diǎn)有:
A.不劃分“系統(tǒng)空間”與“用戶(hù)空間”,無(wú)須進(jìn)行地址映射。
B.操作系統(tǒng)與應(yīng)用程序之間不再有物理的邊界。
C.系統(tǒng)中的“任務(wù)”或“進(jìn)程”,實(shí)際上全是內(nèi)核線程。
在實(shí)模式下,內(nèi)存布局可以分為5個(gè)段:
A.代碼段:包含操作系統(tǒng)和應(yīng)用程序的所有代碼。
B.數(shù)據(jù)段:所有帶有初始值的全局變量。
C.BSS段:所有未帶初始值的全局變量。
D.堆空間:動(dòng)態(tài)分配的內(nèi)存空間。
E.棧空間:保存上下文以及函數(shù)調(diào)用時(shí)的局部變量和形參。
在實(shí)模式存儲(chǔ)管理方案下,主要的工作在于堆空間的管理,即如何來(lái)管理空閑的堆空間、如何來(lái)分配內(nèi)存、如何來(lái)回收內(nèi)存等等。
保護(hù)模式:處理器中必須有MMU硬件并啟用。特點(diǎn)有:
A.系統(tǒng)內(nèi)核和用戶(hù)程序都有各自獨(dú)立的地址空間。
B.每個(gè)應(yīng)用程序只能訪問(wèn)自己的地址空間,不能去破壞操作系統(tǒng)和其他應(yīng)用程序的代碼和數(shù)據(jù)。45.分區(qū)存儲(chǔ)管理
為了實(shí)現(xiàn)多道程序系統(tǒng)而采用的內(nèi)存管理。
基本思路:把整個(gè)內(nèi)存劃分為兩大區(qū)域,即系統(tǒng)區(qū)和用戶(hù)區(qū),然后再把用戶(hù)區(qū)劃分為若干個(gè)分區(qū),每個(gè)任務(wù)占有其中的一個(gè)分區(qū)。這樣,在內(nèi)存當(dāng)中就同時(shí)保留多個(gè)任務(wù),讓他們共享整個(gè)用戶(hù)區(qū),從而實(shí)現(xiàn)多個(gè)任務(wù)的并發(fā)運(yùn)行。
分區(qū)存儲(chǔ)管理又可以分為兩類(lèi):固定分區(qū)和可變分區(qū)。
固定分區(qū):各個(gè)用戶(hù)分區(qū)的個(gè)數(shù)、位置和大小一旦確定后,就固定不變,不能再修改。
優(yōu)點(diǎn):易于實(shí)現(xiàn),系統(tǒng)開(kāi)銷(xiāo)較小。
缺點(diǎn):內(nèi)存利用率不高,分區(qū)總數(shù)固定。
可變分區(qū):動(dòng)態(tài)創(chuàng)建,在裝入一個(gè)程序時(shí),系統(tǒng)將根據(jù)它的需求和內(nèi)存空間的使用情況來(lái)決定是否分配。
優(yōu)點(diǎn):動(dòng)態(tài)變化,非常靈活。
缺點(diǎn):可能存在外碎片。
在實(shí)現(xiàn)可變存儲(chǔ)管理技術(shù)的時(shí)候,需要考慮三個(gè)方面的問(wèn)題:
A.內(nèi)存管理的數(shù)據(jù)結(jié)構(gòu)
B.內(nèi)存的分配算法
C.內(nèi)存的回收算法 46.地址映射
地址映射也叫地址重定位。
邏輯地址和物理地址是完全不同的,不能用邏輯地址來(lái)直接訪問(wèn)內(nèi)存單元。
為了保證CPU在執(zhí)行指令的時(shí)候,可以正確地訪問(wèn)內(nèi)存單元,需要將用戶(hù)程序中的邏輯地址轉(zhuǎn)換為運(yùn)行時(shí)由機(jī)器直接尋址的物理地址。這個(gè)過(guò)程稱(chēng)為:地址映射。
地址映射由存儲(chǔ)管理單元MMU來(lái)完成。
地址映射主要有兩種方式:靜態(tài)地址映射和動(dòng)態(tài)地址映射。
靜態(tài)地址映射:當(dāng)用戶(hù)程序被裝入內(nèi)存時(shí),直接對(duì)指令代碼進(jìn)行修改,一次性地實(shí)現(xiàn)邏輯地址到物理地址的轉(zhuǎn)換。
動(dòng)態(tài)地址映射:當(dāng)用戶(hù)程序被裝入內(nèi)存時(shí),不對(duì)指令代碼做任何修改,而是在程序的運(yùn)行過(guò)程中,當(dāng)它需要訪問(wèn)內(nèi)存單元的時(shí)候,再來(lái)進(jìn)行地址轉(zhuǎn)換。
在具體實(shí)現(xiàn)時(shí),這項(xiàng)轉(zhuǎn)換工作一般是由硬件的地址映射機(jī)制來(lái)完成的。通常設(shè)置一個(gè)基地址寄存器,或者叫重定位寄存器。當(dāng)一個(gè)任務(wù)被調(diào)度運(yùn)行時(shí),就把它所在分區(qū)的起始地址裝入到整個(gè)寄存器中。然后,在程序運(yùn)行的過(guò)程中,當(dāng)需要訪問(wèn)某個(gè)內(nèi)存單元時(shí),硬件就會(huì)自動(dòng)地將其中的邏輯地址加上基地址寄存器中的內(nèi)容,從而得到實(shí)際的物理地址,并且按照這個(gè)物理地址區(qū)執(zhí)行。
這個(gè)基地址寄存器位于MMU的內(nèi)部,整個(gè)地址映射過(guò)程是自動(dòng)運(yùn)行的。從理論上說(shuō),每訪問(wèn)一次內(nèi)存都要進(jìn)行一次地址映射。47.頁(yè)式存儲(chǔ)管理(重點(diǎn))
基本思路:把物理內(nèi)存劃分為許多固定大小的內(nèi)存塊,稱(chēng)為物理頁(yè)面;把邏輯地址空間也劃分為大小相同的塊,稱(chēng)為邏輯頁(yè)面。當(dāng)一個(gè)用戶(hù)程序被裝入內(nèi)存時(shí),不是以整個(gè)程序?yàn)閱挝?,把它存放在一整塊連續(xù)的區(qū)域,而是以頁(yè)面為單位來(lái)進(jìn)行分配的。對(duì)于一個(gè)大小為N的頁(yè)面程序,需要有N個(gè)空閑的物理頁(yè)面來(lái)把它裝載。這些物理頁(yè)面不一定是要連續(xù)的。
在頁(yè)式存儲(chǔ)管理中需要解決三個(gè)問(wèn)題:數(shù)據(jù)結(jié)構(gòu)、內(nèi)存分配與回收、地址映射。
數(shù)據(jù)結(jié)構(gòu)有兩個(gè):頁(yè)表和物理頁(yè)面表。
A.頁(yè)表:給出了任務(wù)邏輯頁(yè)面號(hào)和內(nèi)存中物理頁(yè)面號(hào)之間的對(duì)應(yīng)關(guān)系。
B.物理頁(yè)面表:描述內(nèi)存空間中,各個(gè)物理頁(yè)面的使用情況。
具體的例子請(qǐng)參考《教程》317頁(yè)(博客中畫(huà)不了圖,有興趣自己看)。
內(nèi)存的分配過(guò)程:
A.對(duì)于一個(gè)新來(lái)的任務(wù),計(jì)算它所需要的頁(yè)面數(shù)N,然后查看位示圖,看是否還有N個(gè)空閑的物理頁(yè)面。
B.如果有足夠的空閑物理頁(yè)面,就去申請(qǐng)一個(gè)頁(yè)表,其長(zhǎng)度為N,并把頁(yè)表的起始地址填入到該任務(wù)的控制塊中。
C.分配N(xiāo)個(gè)空閑的物理頁(yè)面,把他們的變換填到頁(yè)表中,建立邏輯頁(yè)面與物理頁(yè)面直接的對(duì)應(yīng)關(guān)系。
D.修改位示圖,對(duì)剛剛被占用的那些物理頁(yè)面進(jìn)行標(biāo)記。
地址映射的基本思路:
A.邏輯地址分析:對(duì)邏輯地址,找到它所在的邏輯頁(yè)面,以及它在頁(yè)面內(nèi)的偏移地址。
B.頁(yè)表查找:根據(jù)邏輯頁(yè)面號(hào),從頁(yè)表中找出它對(duì)應(yīng)的物理頁(yè)面號(hào)。
C.物理地址合成:根據(jù)物理頁(yè)面號(hào)和頁(yè)內(nèi)偏移地址,最終確定物理地址。
邏輯地址分析:
頁(yè)面的大小都是2的整數(shù)次冪。對(duì)于給定的一個(gè)邏輯地址,可以直接把它的高位部分作為邏輯頁(yè)面號(hào),把它的低位部分作為頁(yè)內(nèi)偏移地址。例如,假設(shè)頁(yè)面的大小是4KB,即2的12次冪,邏輯地址為32為,那么在一個(gè)邏輯地址當(dāng)中,最低12位為頁(yè)內(nèi)偏移地址,而剩下的20位就是邏輯頁(yè)面號(hào)。
計(jì)算方法:
邏輯頁(yè)面號(hào)=邏輯地址/頁(yè)面大小
頁(yè)內(nèi)偏移量=邏輯地址%頁(yè)面大小
頁(yè)表查找:
頁(yè)表作為操作系統(tǒng)的一個(gè)數(shù)據(jù)結(jié)構(gòu),通常保存在內(nèi)核的地址空間中。
頁(yè)表基地址寄存器用來(lái)指向頁(yè)表的起始地址;頁(yè)表長(zhǎng)度寄存器用來(lái)指示頁(yè)表的大小,即對(duì)于當(dāng)前任務(wù),它總共包含有多少個(gè)頁(yè)面。
物理地址合成:
假設(shè)物理頁(yè)面號(hào)為f,頁(yè)內(nèi)偏移地址為offset,每個(gè)頁(yè)面大小為2n,那么相應(yīng)的物理地址為:f×2n+offset。48.虛擬存儲(chǔ)管理
程序局部性原理:時(shí)間局限性和空間局限性。
虛擬頁(yè)式存儲(chǔ)管理:在頁(yè)式管理的基礎(chǔ)上,增加了請(qǐng)求調(diào)頁(yè)和頁(yè)面置換的功能。
基本思路:當(dāng)一個(gè)用戶(hù)程序需要調(diào)入內(nèi)存去運(yùn)行時(shí),不是將這個(gè)程序的所有頁(yè)面都裝入內(nèi)存,而是只裝載部分的頁(yè)面,就可以啟動(dòng)這個(gè)程序運(yùn)行。在運(yùn)行過(guò)程中,如果發(fā)現(xiàn)要執(zhí)行的指令或者訪問(wèn)的數(shù)據(jù)不在內(nèi)存當(dāng)中,就向系統(tǒng)發(fā)出缺頁(yè)中斷請(qǐng)求,然后系統(tǒng)在處理這個(gè)中斷請(qǐng)求時(shí),就會(huì)將保存在外存中的相應(yīng)頁(yè)面調(diào)入內(nèi)存,從而使該程序能繼續(xù)運(yùn)行。
在虛擬頁(yè)式存儲(chǔ)管理中,頁(yè)表包含:邏輯頁(yè)面號(hào)、物理頁(yè)面號(hào)、駐留位、保護(hù)位、修改位和訪問(wèn)位。
常用的頁(yè)面置換算法:
A.最優(yōu)頁(yè)面置換算法:理想化算法。
B.最近最久未使用算法:鏈表法和棧方法。尋找長(zhǎng)時(shí)間沒(méi)有被訪問(wèn)的頁(yè)面。
C.最不常用算法:每個(gè)頁(yè)面設(shè)置一個(gè)訪問(wèn)計(jì)數(shù)器。
D.先進(jìn)先出算法:性能比較差。
E.時(shí)鐘頁(yè)面置換算法:把頁(yè)面組成環(huán)形鏈表,類(lèi)似時(shí)鐘面。
一般來(lái)說(shuō),當(dāng)一個(gè)任務(wù)剛剛啟動(dòng)的時(shí)候,它會(huì)不斷去訪問(wèn)一些新的頁(yè)面,然后逐步建立一個(gè)比較穩(wěn)定的工作集。工作集是指當(dāng)前任務(wù)正在使用的邏輯頁(yè)面的集合。如果分配給一個(gè)任務(wù)的物理頁(yè)面數(shù)太少,不能包含整個(gè)的工作集,任務(wù)將會(huì)造成很多缺頁(yè)中斷,需要頻繁地進(jìn)行頁(yè)面置換,這種現(xiàn)象稱(chēng)為“抖動(dòng)”。49.嵌入式系統(tǒng)軟件 .嵌入式系統(tǒng)的軟件組成與實(shí)時(shí)操作系統(tǒng)(嵌入式系統(tǒng)軟件組成,嵌入式操作系統(tǒng)的發(fā)展,實(shí)時(shí)系統(tǒng)與實(shí)時(shí)操作系統(tǒng),微內(nèi)核與宏內(nèi)核,嵌入式操作系統(tǒng)的仿真平臺(tái)等).板級(jí)支持軟件包(BSP)和引導(dǎo)加載程序Bootloader(硬件抽象層HAL,BSP 的功能和移植,Bootloader 的執(zhí)行過(guò)程,U-boot 及其移植等).嵌入式Linux 操作系統(tǒng)(嵌入式Linux 的發(fā)展和自由軟件,嵌入式Linux 內(nèi)核的結(jié)構(gòu)、系統(tǒng)調(diào)用接口,常見(jiàn)嵌入式Linux 等).嵌入式操作系統(tǒng)μC/OS-II(基本特點(diǎn)、代碼結(jié)構(gòu)、任務(wù)管理與調(diào)度、任務(wù)通信、中斷處理、移植等)50.嵌入式系統(tǒng)的開(kāi)發(fā)
1.嵌入式系統(tǒng)的開(kāi)發(fā)過(guò)程和工具(開(kāi)發(fā)步驟,交叉開(kāi)發(fā)平臺(tái)和工具,系統(tǒng)的調(diào)試工具等)
2.系統(tǒng)開(kāi)發(fā)工具軟件(ADS、RVDS的特點(diǎn)與使用,GCC的常用命令與參數(shù))
3.以S3C2410/S3C2440為背景的應(yīng)用系統(tǒng)開(kāi)發(fā)(硬件接口及部件的綜合使用;無(wú)操作系統(tǒng)環(huán)境下的系統(tǒng)開(kāi)發(fā);μC/OS-II環(huán)境下的系統(tǒng)開(kāi)發(fā))51.嵌入式系統(tǒng)的定義
(1)定義:以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專(zhuān)用計(jì)算機(jī)系統(tǒng)。
(2)嵌入式系統(tǒng)發(fā)展的4 個(gè)階段:無(wú)操作系統(tǒng)階段、簡(jiǎn)單操作系統(tǒng)階段、實(shí)時(shí)操作系統(tǒng)階段、面向Internet 階段。
(3)知識(shí)產(chǎn)權(quán)核(IP 核):具有知識(shí)產(chǎn)權(quán)的、功能具體、接口規(guī)范、可在多個(gè)集成電路設(shè)計(jì)中重復(fù)使用的功能模塊,是實(shí)現(xiàn)系統(tǒng)芯片(SOC)的基本構(gòu)件。
(4)IP 核模塊有行為、結(jié)構(gòu)和物理3 級(jí)不同程度的設(shè)計(jì),對(duì)應(yīng)描述功能行為的不同可以分為三類(lèi):軟核、固核、硬核。
52.嵌入式系統(tǒng)的組成:硬件層、中間層、系統(tǒng)軟件層和應(yīng)用軟件層
(1)硬件層:嵌入式微處理器、存儲(chǔ)器、通用設(shè)備接口和I/O 接口。
嵌入式核心模塊=微處理器+電源電路+時(shí)鐘電路+存儲(chǔ)器
Cache:位于主存和嵌入式微處理器內(nèi)核之間,存放的是最近一段時(shí)間微處理器使用最多的程序代碼和數(shù)據(jù)。它的主要目標(biāo)是減小存儲(chǔ)器給微處理器內(nèi)核造成的存儲(chǔ)器訪問(wèn)瓶頸,使處理速度更快。
(2)中間層(也稱(chēng)為硬件抽象層HAL 或者板級(jí)支持包BSP):它將系統(tǒng)上層軟件和底層硬件分離開(kāi)來(lái),使系統(tǒng)上層軟件開(kāi)發(fā)人員無(wú)需關(guān)系底層硬件的具體情況,根據(jù)BSP 層提供的接口開(kāi)發(fā)即可。
BSP 有兩個(gè)特點(diǎn):硬件相關(guān)性和操作系統(tǒng)相關(guān)性。
設(shè)計(jì)一個(gè)完整的BSP 需要完成兩部分工作:
A、嵌入式系統(tǒng)的硬件初始化和BSP 功能。
片級(jí)初始化:純硬件的初始化過(guò)程,把嵌入式微處理器從上電的默認(rèn)狀態(tài)逐步設(shè)置成系統(tǒng)所要求的工作狀態(tài)。
板級(jí)初始化:包含軟硬件兩部分在內(nèi)的初始化過(guò)程,為隨后的系統(tǒng)初始化和應(yīng)用程序建立硬件和軟件的運(yùn)行環(huán)境。
系統(tǒng)級(jí)初始化:以軟件為主的初始化過(guò)程,進(jìn)行操作系統(tǒng)的初始化。
B、設(shè)計(jì)硬件相關(guān)的設(shè)備驅(qū)動(dòng)。
(3)系統(tǒng)軟件層:由RTOS、文件系統(tǒng)、GUI、網(wǎng)絡(luò)系統(tǒng)及通用組件模塊組成。
RTOS 是嵌入式應(yīng)用軟件的基礎(chǔ)和開(kāi)發(fā)平臺(tái)。
(4)應(yīng)用軟件:由基于實(shí)時(shí)系統(tǒng)開(kāi)發(fā)的應(yīng)用程序組成。53.實(shí)時(shí)系統(tǒng)
(1)定義:能在指定或確定的時(shí)間內(nèi)完成系統(tǒng)功能和對(duì)外部或內(nèi)部、同步或異步時(shí)間做出響應(yīng)的系統(tǒng)。
(2)區(qū)別:通用系統(tǒng)一般追求的是系統(tǒng)的平均響應(yīng)時(shí)間和用戶(hù)的使用方便;而實(shí)時(shí)系統(tǒng)主要考慮的是在最壞情況下的系統(tǒng)行為。
(3)特點(diǎn):時(shí)間約束性、可預(yù)測(cè)性、可靠性、與外部環(huán)境的交互性。
(4)硬實(shí)時(shí)(強(qiáng)實(shí)時(shí)):指應(yīng)用的時(shí)間需求應(yīng)能夠得到完全滿(mǎn)足,否則就造成重大安全事故,甚至造成重大的生命財(cái)產(chǎn)損失和生態(tài)破壞,如:航天、軍事。
(5)軟實(shí)時(shí)(弱實(shí)時(shí)):指某些應(yīng)用雖然提出了時(shí)間的要求,但實(shí)時(shí)任務(wù)偶爾違反這種需求對(duì)系統(tǒng)運(yùn)行及環(huán)境不會(huì)造成嚴(yán)重影響,如:監(jiān)控系統(tǒng)、實(shí)時(shí)信息采集系統(tǒng)。