版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第5章嵌入式系統(tǒng)實(shí)驗(yàn)5.1Cortex-A8處理器硬件電路5.2Eclipse集成開發(fā)環(huán)境5.3S5PV210驅(qū)動仿真調(diào)試實(shí)驗(yàn)5.4嵌入式Linux系統(tǒng)實(shí)驗(yàn)5.5Android系統(tǒng)實(shí)驗(yàn)習(xí)題
5.1Cortex-A8處理器硬件電路
S5PV210又名“蜂鳥”,是三星推出的一款適用于智能手機(jī)和平板電腦等多媒體設(shè)備的應(yīng)用處理器,S5PV210和S5PC110功能一樣,110小封裝適用于智能手機(jī),210封裝較大,主要用于平板電腦和上網(wǎng)本,蘋果的iPad和iPhone4上的A4處理器,就采用的是和S5PV210一樣的架構(gòu)(只是3D引擎和視頻解碼部分不同),三星的GalaxyTab平板電腦上用的也是S5PV210。
5.1.1S5PV210芯片軟硬件資源
S5PV210芯片數(shù)據(jù)及圖形圖像處理能力強(qiáng),通信接口豐富,具備以下特點(diǎn):
(1)Cortex-A8內(nèi)核,NEONTMSIMD協(xié)處理器,CPU主頻1GHz。
(2)采用45nm低功率制程,CPU典型功耗為11mW。
(3)支持1GBDDR2。
(4)0.65mm引腳間距,17mm×17mmFBGA封裝。
(5)支持USBHost2.0、USBOTG2.0。
(6)4個SDIO/HS
MMC接口。
(7)支持MPEG-4/2/1、H.264/H263、VC-1、DivX的視頻編解碼1080P@30fps(1080P是指分辨率,1920×1080像素,兩者相乘就知道約等于200萬像素,如果購買數(shù)碼攝像機(jī),動態(tài)像素達(dá)到200萬就能拍攝出1080P的高清視頻;30fps是指屏幕的播放刷新速度為1秒30幀)。
(8)支持2D圖形加速,最大支持8000×8000分辨率。
(9)支持3D圖形加速(PowerVRSGX540),OpenGL1.1&2.0、OpenVG1.0。
(10)支持SD/MMC/SDIO接口存儲卡,最高支持32GB。
(11)支持JPEG硬件編解碼,最大支持65536×65536分辨率。
(12)視頻硬件編解碼,支持1080P@30fps。
(13)HDMI、TVOUT、Camera×2。
5.1.2CVT-S5PV210教學(xué)平臺
1.CVT-S5PV210教學(xué)平臺硬件資源CVTS5PV210教學(xué)平臺硬件主要由三個部分組成:核心板、底板和邊板。
1)核心板核心板是嵌入式系統(tǒng)的最重要的組成部分,它由處理器、內(nèi)存、閃存、電源電路、時鐘電路、CPU擴(kuò)展接口組成。
(1)處理器:CVT-S5PV210教學(xué)平臺所用的CPU為三星公司的ARMCortex-A8處理器S5PV210,主頻最高可達(dá)1GHz。
(2)內(nèi)存:本平臺采用三星公司的DDR2SDRAM芯片K4T1G164QQ,容量為1GB,它由8個Bank
組成,每個Bank對應(yīng)8Mb×16。其特點(diǎn)為低功耗、1.8V低電壓工作;支持休眠功能;BGM封裝,有效降低了PCB的面積;接口設(shè)計方便。
(3)閃存:如圖5-1所示,本平臺選用三星的NANDFlash芯片K9F8G08U0M,SLC架構(gòu)系列,1GB的存儲容量,為非易失性存儲器,其特點(diǎn)為功耗低、接口方便,易于擴(kuò)充。圖5-1NANDFlash電路圖
(4)電源電路:如圖5-2所示,核心板電源電路選用高集成度的MAXIM公司的PMU芯片MAX8698C。它具有3路DC/DC(將一個固定的直流電壓變換為可變的直流電壓)和9路LDO電源,可實(shí)現(xiàn)電源管理的智能化和低功耗化。圖5-2核心板電源電路
(5)時鐘電路:如圖5-3所示,本系統(tǒng)核心板使用了四個無源晶振,連接到XXTI、XXTO上的24MHz提供給CPU內(nèi)核使用;連接到XUSBXTI、XUSBXXTO上的24MHz提供給USB使用;連接到XHDMIXTI、XHDMIXTO上的27MHz提供給顯示組件;連接到XRTCXTI、XRTCXTO上的32.768kHz
提供給實(shí)時時鐘電路使用。圖5-3時鐘電路
(6)CPU擴(kuò)展接口:用于將核心板和底板有效連接起來。采用Molex公司的0.635mm間距貼片插座,穩(wěn)定可靠,整體高度大大降低,引出CPU的所有信號線,可擴(kuò)展性高。
2)底板
底板作為CVT-S5PV210教學(xué)實(shí)驗(yàn)系統(tǒng)常用外設(shè)的擴(kuò)展板。它依托核心板,進(jìn)行相應(yīng)的功能擴(kuò)展,引申出不同的外設(shè)功能,如音頻、視頻、網(wǎng)絡(luò)、攝像頭、Wi-Fi、指示及控制、數(shù)據(jù)采集等。
(1)底板電源:如圖5-4所示,底板采用LM2596系列開關(guān)穩(wěn)壓集成電路,最高輸入電壓40V,最高輸出電流3A,工作頻率150kHz,轉(zhuǎn)換效率為75%~88%,正常工作溫度范圍為-40℃~+125℃,器件保護(hù)采用熱關(guān)斷及電流限制,控制方式為PWM。圖5-4電源模塊
(2)AV視頻輸入:通過視頻解碼芯片SAA7113H實(shí)現(xiàn),它可以輸入4路模擬視頻信號,通過內(nèi)部寄存器的不同配置可以對4路輸入進(jìn)行轉(zhuǎn)換,輸入可以為4路CVBS或2路S
視頻(Y/C)信號,輸出8位VPO總線,為標(biāo)準(zhǔn)的ITU656、YUV4∶2∶2格式。
SAA7113H兼容PAL、NTSC、SECAM多種制式,可以自動檢測場頻適用的50Hz或60Hz,可以在PAL、NTSC之間自動切換。AV視頻輸入的原理圖如圖5-5所示。kHzY/C圖5-5AV視頻輸入的原理圖
(3)SD/MMC:CPU共給出了四組SDIO。本電路中用SDIO0作為系統(tǒng)啟動。SDIO2為正常的SD/MMC卡接口,SDIO3為Wi-Fi的數(shù)據(jù)線。電路中,數(shù)據(jù)線都需上拉10kΩ的電阻。判斷SD/MMC是否插入通過CDN來判定。SDIO3作為Wi-Fi用,就不需要此信號進(jìn)行檢測。
SD/MMC電路原理圖如圖5-6所示。圖5-6SD/MMC電路原理圖
(4)音頻:音頻采用WM8580音頻CODEC芯片,WM8580是一款帶有S/PDIF收發(fā)器的多路音頻編碼解碼器,特別適用于DVD以及需要有環(huán)繞立體聲處理的家用高保真音響、汽車和其他視聽設(shè)備等應(yīng)用。
(5)串口:串行通信接口,按電氣標(biāo)準(zhǔn)及協(xié)議來分包括RS-232C、RS-422、RS-485、USB等。USB是近幾年發(fā)展起來的新型串行接口標(biāo)準(zhǔn),主要應(yīng)用于高速數(shù)據(jù)傳輸領(lǐng)域。
圖5-7為串行接口電路原理圖。在串行接口電路中,UART2作為調(diào)試通信口用,UART0作為外設(shè)通信口或ZigBee模塊接口,UART1作為GPS的通信口,UART3為GPRS通信口。圖5-7串行接口電路原理圖
(6)網(wǎng)絡(luò)接口:網(wǎng)絡(luò)接口采用DM9000AEP網(wǎng)絡(luò)接口芯片。DM9000系列是完全綜合的、低成本的單一快速以太網(wǎng)控制器芯片,具有通用的處理器接口。DM9000AEP采用CPU的16位數(shù)據(jù)總線XM0DATA,16位地址總線XM0ADDR。電路原理圖如圖5-8所示。
圖5-8網(wǎng)絡(luò)接口
(7)USBHost:USB作為串行接口標(biāo)準(zhǔn),主要應(yīng)用于高速數(shù)據(jù)傳輸領(lǐng)域,支持熱插拔、即插即用,USB1.1的最高數(shù)據(jù)傳輸率為12Mb/s,USB2.0則提高到480Mb/s。
從圖5-9可知,一個USB的D+和D-通過USBHub就可以轉(zhuǎn)換成4個USB接口。在原理圖中,每個USB接口需要一個獨(dú)立的電源供電,且在PCB布線時要布為差分線,提高USB的靈敏度。
圖5-9USBHost接口原理圖
3)邊板
邊板作為嵌入式相關(guān)接口的擴(kuò)展板,讓用戶可學(xué)習(xí)ARM+DSP雙處理器的方法,了解常用的控制單元如模擬電機(jī)及步進(jìn)電機(jī)的控制,了解常用指示單元跑馬燈、7段數(shù)碼管、點(diǎn)陣LED等的控制,常用傳感器采集等。邊板也可選配GPS/GPRS模塊、RFID模塊。
(1)邊板電源電路設(shè)計。
邊板的大部分電路需要用到3.3V
電源,GPRS模塊需要用到4V
電源,這里采用從底板傳過來的12V
電源和5V
電源,利用DC/DC轉(zhuǎn)換芯片,分別轉(zhuǎn)換為4V
和3.3V
電源。
12V轉(zhuǎn)換為4V
電源電路如圖5-10所示,5V
轉(zhuǎn)換為3.3V
電源電路如圖5-11所示。圖5-115V
轉(zhuǎn)換為3.3V
電源電路
(2)邊板矩陣LED擴(kuò)展電路設(shè)計。
①地址譯碼電路:用于產(chǎn)生控制步進(jìn)電機(jī)、矩陣LED、7段數(shù)碼管、跑馬燈的不同的片選信號。地址譯碼電路如圖5-12所示。圖5-12地址譯碼電路
②矩陣LED控制電路如圖5-13所示。圖5-13矩陣LED控制電路
CVTS5PV210教學(xué)平臺實(shí)物圖如圖5-14所示。圖5-14CVTS5PV210教學(xué)平臺
2.CVT-S5PV210教學(xué)平臺軟件資源
1)支持GoogleAndroid2.3
(1)內(nèi)核:Linux。
(2)系統(tǒng)引導(dǎo)程序:UBoot1.3.4。
(3)交叉編譯工具:ARM2009q3。
(4)文件系統(tǒng)格式:Ramdisk、YAFFS2。
(5)GUI:GoogleAndroid2.3。
(6)軟件功能支持1080P視頻播放,F(xiàn)lashPlayerV10.3網(wǎng)頁Flash播放,SD圖形顯示,HDMI1.3高清數(shù)字輸出;支持1080P,MP3、MP4、RMVB等格式的音視頻播放,騰訊QQ、Skype即時通信,常見Android游戲,GoogleAndroid2.3其他功能。
.
2)設(shè)備驅(qū)動
(1)無線Wi-Fi模塊:支持801.11b/g。
(2)無線藍(lán)牙模塊:支持藍(lán)牙通信。
(3)支持200萬像素COMS攝像頭驅(qū)動。
(4)GPS模塊:支持SIFⅢ全球定位。
(5)網(wǎng)口:10M/100M
自適應(yīng)網(wǎng)口驅(qū)動。
(6)支持HDMI輸出,同時支持圖像和聲音。.
(7)I2
S音頻接口,支持音頻播放和錄音功能。
(8)支持LTE480WVGA(800×480)。
(9)四線電阻式觸摸屏驅(qū)動。
(10)I2C驅(qū)動:Audio、Camera、HDMI等的I2C驅(qū)動。
(11)USBHost驅(qū)動:支持USB鼠標(biāo)、USB鍵盤、U
盤等。
(12)USBOTG驅(qū)動:支持Device功能,可與PC同步進(jìn)行資料拷貝。
(13)掃描鍵盤驅(qū)動,實(shí)現(xiàn)Android常見按鍵功能。
(14)高速SD/MMC卡驅(qū)動。
(15)RTC驅(qū)動:支持實(shí)時時鐘。
(16)
MFC驅(qū)動:MultiFormatVideoCodec。
(17)UART驅(qū)動:支持串口通信。
(18)JPEG驅(qū)動:JPEGCodec。
(19)2D、3D硬件加速驅(qū)動。
5.2Eclipse集成開發(fā)環(huán)境
1)MDK-ARMMDK是專為MCU的用戶開發(fā)嵌入式軟件而設(shè)計的一套開發(fā)工具,支持ARM7、ARM9、CortexM3處理器,提供工業(yè)標(biāo)準(zhǔn)的編譯工具和強(qiáng)大的調(diào)試支持。它包括根據(jù)器件定制的調(diào)試仿真支持,豐富的項(xiàng)目模板,固件示例以及為內(nèi)存優(yōu)化的RTOS庫。
2)RVDS
RVDS是ARM公司繼SDT與ADS1.2之后主推的新一代開發(fā)工具,目前有RVDS4.1標(biāo)準(zhǔn)版和專業(yè)版2種版本。RVDS是專為SoC、FPGA以及ASIC用戶開發(fā)復(fù)雜嵌入式應(yīng)用程序或者和操作系統(tǒng)平臺組件接口而設(shè)計的開發(fā)工具。RVDS支持器件設(shè)計,支持多核調(diào)試,支持基于所有ARM和Cortex系列CPU的程序開發(fā)。RVDS還可以和第三方軟件進(jìn)行很好的連接。
RVDS包含有四個模塊:
(1)IDE:RVDS中集成了EclipseIDE,用于代碼的編輯和管理;支持語句高亮和多顏色顯示,以工程的方式管理代碼,支持第三方Eclipse功能插件。
(2)RVCT:RVCT是業(yè)界最優(yōu)秀的編譯器,支持全系列的ARM和XSCALE架構(gòu),支持匯編、C和C++。
(3)RVD:RVD是RVDS中的調(diào)試軟件,功能強(qiáng)大,支持Flash燒寫和多核調(diào)試,支持多種調(diào)試手段,快速錯誤定位。
(4)RVISS:RVISS是指令集仿真器,支持外設(shè)虛擬,可以使軟件開發(fā)和硬件開發(fā)同步進(jìn)行,同時可以分析代碼性能,加快軟件開發(fā)速度。
編譯器輸出的ELF格式的目標(biāo)文件,包含調(diào)試信息。除此之外,編譯器可以輸出所生成的匯編語言列表文件。RVDS的編譯器根據(jù)最新的ARM架構(gòu)進(jìn)行特別的優(yōu)化,針對每個ARM架構(gòu)都提供最好的代碼執(zhí)行性能和最優(yōu)的代碼密度??梢愿鶕?jù)需要選擇調(diào)試信息級別以及不同的代碼優(yōu)化方向和優(yōu)化級別。
3)ARMDS-5
ARMDS-5從以下工具發(fā)展而來:DS-5—RVDS—ADS—SDT。目前RVDS、ADS和SDT都已經(jīng)停止更新,新項(xiàng)目推薦使用向后兼容的DS-5。
ARMDS-5基于Eclipse集成開發(fā)環(huán)境。ARMDS-5使用ARM編譯器,代碼優(yōu)化程度比GNU高30%以上。ARMDS-5配合DSTREAM仿真器、RVI仿真器、ULINKPRO仿真器、ULINKPROD仿真器進(jìn)行內(nèi)核和硬件調(diào)試。ARMDS-5配合gdbserver進(jìn)行Linux應(yīng)用調(diào)試。
4)Eclipse
Eclipse最初由OTI和IBM兩家公司的IDE產(chǎn)品開發(fā)組創(chuàng)建,起始于1999年4月。IBM提供了最初的Eclipse代碼基礎(chǔ),目前,由IBM發(fā)起的Eclipse項(xiàng)目已經(jīng)發(fā)展成為一個龐大的Eclipse聯(lián)盟,有150多家軟件公司參與到Eclipse項(xiàng)目中,其中包括Borland、RationalSoftware、RedHat、Sybase及Oracle等。
Eclipse是著名的開放源代碼、跨平臺的自由集成開發(fā)環(huán)境。它主要由Eclipse項(xiàng)目、Eclipse工具項(xiàng)目和Eclipse技術(shù)項(xiàng)目三個項(xiàng)目組成,具體包括四個組成部分——EclipsePlatform、JDT、CDT和PDE。
5)AndroidStudio工具
在GoogleI/O2013開發(fā)者大會上,谷歌隆重推出了全新的AndroidIDE(集成開發(fā)環(huán)境)——AndroidStudio。AndroidStudio基于Jetbrains公司的標(biāo)志性JavaIDE——IntelliJ(開發(fā)者社區(qū)開源版本)開發(fā),該產(chǎn)品在功能和設(shè)計上別具匠心,可以讓開發(fā)者更容易地處理開發(fā)和布局設(shè)計工作。
為了簡化Android的開發(fā)力度,谷歌決定將重點(diǎn)建設(shè)AndroidStudio工具。谷歌將會全力專注于AndroidStudio編譯工具的開發(fā)和技術(shù)支持,中止為Eclipse提供官方支持,包括中止對EclipseADT插件以及AndroidAnt編譯系統(tǒng)的支持。
5.2.1Eclipse開發(fā)環(huán)境的安裝
打開光盤下的目錄,Eclipse開發(fā)環(huán)境配套軟件如表5-1所示。
1.安裝gcc編譯器
打開yagarto-bu-2.21_gcc-4.6.2-c-c++_nl-1.19.0_gdb-7.3.1_eabi_20111119.exe,這個工具為交叉編譯器。這里的安裝目錄需要記住,因?yàn)樵诤竺娴木幾g過程中,需要使用對應(yīng)的交叉編譯器。安裝目錄如圖5-15所示。圖5-15交叉編譯器安裝目錄
2.安裝GNUmake工具
打開yagarto-tools-20100703-Setup.exe,并安裝。
3.安裝FS-JTAG工具
FS-JTAG工具主要是用于仿真器連接目標(biāo)A8實(shí)驗(yàn)箱。打開Setup.exe。安裝過程如圖5-16所示。圖5-16JTAG調(diào)試工具安裝過程
4.安裝Java
開發(fā)包
打開jre6u7windowsi586-p-s.exe。如果電腦上已經(jīng)安裝過Java此類的工具,則不需要再次安裝。
5.安裝Eclipse
解壓05.Eclipse-cpp-helios-SR1-win32.zip壓縮包,解壓完成后,找到當(dāng)中的Eclipse.exe發(fā)送到桌面快捷方式,改名為Eclipse_c(這里的改名主要是為區(qū)別于Android高版本的Eclipse)。
打開Eclipse_c,設(shè)置過程如圖5-17所示,確定工作安裝目錄。圖5-17Eclipse工作目錄
如圖5-18所示,點(diǎn)擊最右邊的工作區(qū)按鈕,就進(jìn)入到Eclipse_c
操作主界面。圖5-18Eclipse操作主界面
6.ARM仿真器驅(qū)動的安裝
如圖5-19所示,實(shí)驗(yàn)選用Cortex-A8ARM仿真器,該款仿真器可以仿真Cortex-M3、ARM7、ARM9、ARM11、Cortex-A8等多個ARM處理器系列。它是一款基于開源的OpenOcd接口的仿真器,外觀和JLINK相同,并且提供良好的交互界面,有著很全的調(diào)試功能,再加上Eclipse這樣強(qiáng)大的集成開發(fā)環(huán)境,使得它同樣能成為工程師的首選。它既有USB特性,USB2.0全速接口、USB電源供電;又有JTAG特性,IEEE1149.1標(biāo)準(zhǔn);支持燒寫NOR/NANDFlash。圖5-19仿真器實(shí)物
如圖5-20所示,把仿真器一端接入計算機(jī)USB口,會提示發(fā)現(xiàn)新硬件,選擇從列表或指定位置安裝,然后單擊下一步。
單擊下一步會出現(xiàn)選擇驅(qū)動安裝目錄,單擊瀏覽找到DRIVER所在的目錄。選擇好,單擊確定后,會提示沒有通過微軟認(rèn)證,選擇“仍然繼續(xù)”。圖5-20仿真器驅(qū)動安裝過程
如果電腦裝的是Windows7操作系統(tǒng),如圖5-21所示為ARM仿真器在Windows7操作系統(tǒng)下的安裝過程。
可在桌面選中“我的電腦”,點(diǎn)擊右鍵選擇屬性→硬件→設(shè)備管理器,在通用串行總線控制器目錄下選擇farsighe
JTAG、farsighe
Serial
Port的更新驅(qū)動程序選項(xiàng)。圖5-21Windows7下仿真器驅(qū)動安裝過程
5.2.2Eclipse的調(diào)試方法
1)指定一個工程存放目錄
EclipseforARM是一個標(biāo)準(zhǔn)的窗口應(yīng)用程序,可以點(diǎn)擊程序按鈕開始運(yùn)行。
2)創(chuàng)建一個工程
進(jìn)入Eclipse主界面后,單擊File→New→C
Project菜單項(xiàng),Eclipse將打開一個標(biāo)準(zhǔn)對話框,輸入希望新建工程的名字,單擊Finish即可創(chuàng)建一個新的工程,建議對每個新建工程使用獨(dú)立的文件夾。
3)新建一個MakeFile文件
在創(chuàng)建一個新的工程后,單擊File→New→Other,在彈出的對話框中的General下單擊file,然后單擊next。選擇所要指定的工程后,在文件名選框中輸入文件名MakeFile,然后單擊Finish。
4)新建一個腳本文件
單擊File→New→Other,在彈出的對話框中的General下單擊file,然后單擊Next,然后選擇所要指定的工程后,在文件名選框中輸入文件名s5pc210.init,單擊Finish。
5)新建一個匯編源文件
單擊File→New→Other,在彈出的對話框中的General下單擊file,然后單擊Next,然后選擇所要指定的工程后,在文件名選框中輸入文件名led.s,單擊Finish。
6)編譯工程
工程建立完成后,保存文檔,編譯Project→BulitAll工程如圖5-22所示。圖5-22工程編譯結(jié)果
5.2.3Eclipse調(diào)試工程過程
(1)在Eclipse
的菜單中單擊Run→DebugConfigurations,彈出如圖5-23對話框。圖5-23調(diào)試工具配置窗口
(2)單擊ZyinEmbeddeddebug選項(xiàng),然后右擊選擇“NEW”出現(xiàn)如圖5-24所示窗口。在Main選項(xiàng)卡中的Project框中,點(diǎn)擊Browse選擇led工程,在C/C++Application中單擊Browse找到工程目錄下的led.elf文件。圖5-24Main選項(xiàng)卡中選擇led.elf文件
(3)如圖5-25所示,在Debugger選項(xiàng)卡的Main中,找到GDBdebugger,單擊Browse,選擇前面安裝的C:\ProgramFiles\yagarto\bin\arm-none-eabi-gdb.exe(此處選擇自己的安裝目錄),在GDBcommandfile中選擇自己工程目錄下的s5pc210.init文件。圖5-25選擇調(diào)試工具
(4)在Commands選項(xiàng)卡中輸入如圖5-26所示的調(diào)試命令。如果源程序?yàn)镃
程序,第二行則改為breakmain,或者選中如圖5-25中的Stoponstartupat:main選項(xiàng)。最后再點(diǎn)擊Apply,確保上面四處配置都修改正確。圖5-26輸入調(diào)試命令
(5)配置FA-JTAG調(diào)試工具。
FA-JTAG仿真器兩端分別連接好電腦與CVT-A8實(shí)驗(yàn)箱,實(shí)驗(yàn)箱上電運(yùn)行。先打開FA-JTAG調(diào)試工具,在Target選項(xiàng)中選擇s5pc100或者s5pc110,在WoekDirection選項(xiàng)中選擇工程目錄或者默認(rèn)C:\android路徑,單擊Connect按鈕后,該按鈕會變?yōu)镈isconnect。最后單擊Telnet按鈕(這一步可以跳過),將會彈出Telnet窗口,顯示“OpenOn-ChipDebugger>”,即表示已經(jīng)連上目標(biāo)板。出現(xiàn)如圖5-27所示的打印地址信息,即表示仿真器已經(jīng)與目標(biāo)實(shí)驗(yàn)箱連接成功。圖5-27FA-JTAG調(diào)試工具顯示信息
(6)通過Eclipse開啟工程調(diào)試。上面已經(jīng)點(diǎn)擊Apply按鈕后,此處點(diǎn)擊Debug按鈕開始調(diào)試運(yùn)行,等待程序編譯下載完成自動彈出提示進(jìn)入調(diào)試界面,如圖5-28所示。
程序會在斷點(diǎn)處停下,然后使用單步、stepover、stepin和全速等工具進(jìn)行調(diào)試運(yùn)行程序,點(diǎn)擊全速運(yùn)行,會出現(xiàn)LED亮滅的實(shí)驗(yàn)現(xiàn)象。圖5-28Eclipse調(diào)試界面
5.3S5PV210驅(qū)動仿真調(diào)試實(shí)驗(yàn)
本節(jié)利用CVT-S5PV210教學(xué)平臺提供的實(shí)驗(yàn)作為實(shí)驗(yàn)素材,其實(shí)驗(yàn)文檔如圖5-29所示。實(shí)驗(yàn)內(nèi)容包括gcd匯編程序?qū)嶒?yàn)、asm1匯編程序?qū)嶒?yàn)、C語言程序?qū)嶒?yàn)、Led跑馬燈實(shí)驗(yàn)、Seg數(shù)碼管實(shí)驗(yàn)、Matrixled矩陣控制實(shí)驗(yàn)、MotorStepper步進(jìn)電機(jī)控制實(shí)驗(yàn)、GpioLed控制實(shí)驗(yàn)、gpioled_s實(shí)驗(yàn)、Interrupt中斷實(shí)驗(yàn)、PWM蜂鳴器實(shí)驗(yàn)、Uart串口實(shí)驗(yàn)、KeyPad鍵盤實(shí)驗(yàn)。圖5-29實(shí)驗(yàn)文檔
5.3.1GPIO控制LED實(shí)驗(yàn)
1.實(shí)驗(yàn)?zāi)康?/p>
(1)熟悉Eclipse開發(fā)環(huán)境。
(2)熟悉在ARM裸機(jī)環(huán)境下的C語言編程。
(3)熟悉CVTS5PV210下,GPIO控制LED的操作。
2.實(shí)驗(yàn)內(nèi)容
(1)編寫程序,練習(xí)C語言的使用。
(2)實(shí)現(xiàn)對開發(fā)板上GpioLed的控制。
(3)代碼分別在Eclipse的Debug環(huán)境下運(yùn)行。
3.實(shí)驗(yàn)設(shè)備
(1)硬件:CVT-S5PV210嵌入式教學(xué)實(shí)驗(yàn)箱、PC機(jī)。
(2)軟件:PC機(jī)操作系統(tǒng)WindowsXP(Win7)+Eclipse開發(fā)環(huán)境。
4.實(shí)驗(yàn)原理
GPIO,即通用I/O接口。在嵌入式系統(tǒng)中常常有數(shù)量眾多、結(jié)構(gòu)卻比較簡單的外部設(shè)備/電路,對這些設(shè)備/電路,有的需要CPU為之提供控制手段,有的則作為CPU的輸入信號。而且,許多這樣的設(shè)備/電路只要求一位,即只要有開/關(guān)兩種狀態(tài)就夠了。比如控制某個LED燈的亮與滅,或者通過獲取某個引腳的電平狀態(tài)來達(dá)到判斷外圍設(shè)備的狀態(tài)。對這些設(shè)備/電路的控制,使用傳統(tǒng)的串口或并口都不合適。所以在微控制器芯片上一般都會提供一個“通用可編程I/O接口”,即GPIO。
1)S5PV210的GPIO特性
(1)146個可中斷通用控制I/O。
(2)32個可控外部中斷。
(3)237個多功能復(fù)用I/O引腳。(4)142個內(nèi)存端口引腳。(5)休眠模式引腳狀態(tài)可控(除了GPH0、GPH1、GPH2和GPH3)。
2)GPIO分組及功能設(shè)定
3)GPIO常用寄存器
GPA0引腳有六個控制功能寄存器,前四個在正常模式下使用,后兩個是掉電模式用。
(1)GPA0控制寄存器。
在S5PV210中,大多數(shù)的引腳都可復(fù)用,所以必須對每個引腳進(jìn)行配置。接口控制寄存器(GPNCON)定義了每個引腳的功能,如表5-3所示。
(2)GPA0數(shù)據(jù)寄存器。
如果接口被配置成了輸入接口,可以從GPNDAT的相應(yīng)位讀出數(shù)據(jù);如果接口被配置成了輸出接口,可以向GPNDAT的相應(yīng)位寫數(shù)據(jù)(1:高電平,0:低電平);如果接口被配置成了其他功能引腳,則未定義的值將被讀取。表5-4所示為GPA0DAT數(shù)據(jù)寄存器。
(3)GPA0上/下拉寄存器。
表5-5所示為GPA0PUD寄存器。
圖5-30所示為上拉、下拉、高阻狀態(tài)示意圖。圖5-30上拉、下拉、高阻狀態(tài)示意圖
①上拉使能:輸出端相當(dāng)于一個推挽輸出。
輸出端上拉可以增加輸出電流的能力,當(dāng)ARM的IO端接的是OC或OD門時,如果不接上拉電阻是無法輸出高電平的,有了這個上拉寄存器,設(shè)計時該OC門就可以不接上拉電阻了。
②上拉禁止:輸出端相當(dāng)于一個OC門或OD門。
IO的輸入輸出功能與上拉功能不沖突,一般IC設(shè)計時,上拉功能是有一定電流限制的,不會造成功能異常;不需要上拉的情況較復(fù)雜,例如作為A/D輸入接口時,就不應(yīng)該上拉,以免影響實(shí)際的輸入電平;CPU低功耗睡眠狀態(tài),上拉電阻也有可能切斷,降低功耗(這取決于不同芯片)。
(4)GPA0驅(qū)動能力控制寄存器。
當(dāng)接口需要輸出外接發(fā)光二極管等器件時,可選用此功能增大接口的驅(qū)動能力,實(shí)現(xiàn)不同驅(qū)動能力(1mA、2mA、4mA、8mA)的IO驅(qū)動。表5-6所示為GPA0DRV寄存器。
(5)GPA0掉電模式配置寄存器(見表5-7)。
(6)GPA0掉電上/下拉寄存器(見表5-8)。
(7)GPIO中斷控制寄存器(見表5-9)。
GPIO中斷有22組,分別為GPA0、GPA1、GPB、GPC0、GPC1、GPD0、GPD1、GPE0、GPE1、GPE0、GPE1、GPE2、GPE3、GPG0、GPG1、GPG2、GPG3、GPJ0、GPJ1、GPJ2、GPJ3和GPJ4。
5.實(shí)驗(yàn)電路
實(shí)驗(yàn)電路如圖5-31所示。從電路圖上可以看到,發(fā)光二極管LED的一端連接到了ARM的GPIOGPH3,另一端經(jīng)過一個限流電阻接電源VDD3.3V。圖5-31GPIO控制LED實(shí)驗(yàn)電路圖
當(dāng)GPIO口為低電平時,LED兩端產(chǎn)生電壓降,這時LED有電流通過并發(fā)光。反之當(dāng)GPIO為高電平時,LED將熄滅。注意亮滅之間要有一定的延時,以便人眼能夠區(qū)分出來。
GPH3配置寄存器有四個,分別是GPH3CON控制寄存器、GPH3DAT數(shù)據(jù)寄存器、GPH3PUD上/下拉寄存器、GPH3DRV驅(qū)動能力控制寄存器。
6.實(shí)驗(yàn)程序
7.實(shí)驗(yàn)步驟
(1)首先打開Eclipse軟件,指定工作目錄。
(2)打開GpioLed工程,點(diǎn)擊工具欄的File,然后點(diǎn)擊Import;如圖5-32所示,點(diǎn)擊ExistingProjectintoWorkspace;再次點(diǎn)擊Browse按鈕,進(jìn)入目錄D:\Eclipse_projects\Gpi?oled\;點(diǎn)擊Finish按鈕。圖5-32打開GpioLed工程
(3)把Makefile的LDPATH和COMMON換成自己的路徑:
(4)選中工程點(diǎn)右鍵,點(diǎn)擊“BulidProject”按鈕對工程編譯,生成GpioLed.elf文件,如圖5-33所示。圖5-33編譯成功提示
(5)連接好仿真器,實(shí)驗(yàn)箱通電。打開FS-JTAG調(diào)試工具,連接成功。
(6)實(shí)驗(yàn)現(xiàn)象。
觀察到GpioLed亮滅,流水閃亮,可以調(diào)節(jié)延遲時間實(shí)現(xiàn)快亮、慢亮。
5.3.2步進(jìn)電機(jī)控制實(shí)驗(yàn)
1.實(shí)驗(yàn)?zāi)康?/p>
(1)熟悉Eclipse開發(fā)環(huán)境。
(2)熟悉在ARM裸機(jī)環(huán)境下的C語言編程。
(3)熟悉CVT-S5PV210下,步進(jìn)電機(jī)的操作。
2.實(shí)驗(yàn)內(nèi)容
(1)編寫程序,練習(xí)C語言的使用。
(2)實(shí)現(xiàn)對開發(fā)板上步進(jìn)電機(jī)的控制。
(3)代碼分別在Eclipse的Debug環(huán)境下運(yùn)行。
3.實(shí)驗(yàn)設(shè)備
(1)硬件:CVT-S5PV210嵌入式教學(xué)實(shí)驗(yàn)箱、PC。
(2)軟件:PC機(jī)操作系統(tǒng)WindowsXP(Win7)+Eclipse開發(fā)環(huán)境。
4.實(shí)驗(yàn)原理
步進(jìn)電機(jī)是將電脈沖信號轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元件。在非超載的情況下,電機(jī)的轉(zhuǎn)速、停止的位置只取決于脈沖信號的頻率和脈沖數(shù),而不受負(fù)載變化的影響,即給電機(jī)加一個脈沖信號,電機(jī)則轉(zhuǎn)過一個步距角。
步進(jìn)電機(jī)實(shí)際上是一種單相或多相同步電動機(jī)。單相步進(jìn)電動機(jī)由單路電脈沖驅(qū)動,輸出功率一般很小,其用途為微小功率驅(qū)動。多相步進(jìn)電動機(jī)由多相方波脈沖驅(qū)動,用途很廣。使用多相步進(jìn)電動機(jī)時,單路電脈沖信號可先通過脈沖分配器轉(zhuǎn)換為多相脈沖信號,在經(jīng)功率放大后分別送入步進(jìn)電動機(jī)各項(xiàng)繞組。每輸入一個脈沖到脈沖分配器,電動機(jī)各相的通電狀態(tài)就發(fā)生變化,轉(zhuǎn)子會轉(zhuǎn)過一定的角度(稱為步距角)。正常情況下,步進(jìn)電機(jī)轉(zhuǎn)過的總角度和輸入的脈沖數(shù)成正比;連續(xù)輸入一定頻率的脈沖時,電動機(jī)的轉(zhuǎn)速與輸入脈沖的頻率保持嚴(yán)格的對應(yīng)關(guān)系,不受電壓波動和負(fù)載變化的影響。由于步進(jìn)電動機(jī)能直接接收數(shù)字量的輸入,所以特別適合于微機(jī)控制。
目前常用的步進(jìn)電機(jī)有三類:
(1)反應(yīng)式步進(jìn)電動機(jī)。它的結(jié)構(gòu)簡單,生產(chǎn)成本低,步距角可以做得相當(dāng)小,但動態(tài)性能相對較差。
(2)永磁式步進(jìn)電動機(jī)。它的出力大,動態(tài)性能好,但步距角一般比較大。
(3)混合步進(jìn)電動機(jī)。它綜合了反應(yīng)式和永磁式兩者的優(yōu)點(diǎn),步距角小,出力大,動態(tài)性能好,是性能較好的一類步進(jìn)電動機(jī)。
1)步進(jìn)電機(jī)的工作原理
現(xiàn)以反應(yīng)式三相步進(jìn)電機(jī)為例說明其工作原理。定子鐵心上有六個形狀相同的大齒,相鄰兩個大齒之間的夾角為60°。每個大齒上都套有一個線圈,徑向相對的兩個線圈串聯(lián)起來成為一項(xiàng)繞組。各個大齒的內(nèi)表面上又有若干個均勻分布的小齒。轉(zhuǎn)子是一個圓柱形鐵心,外表面上圓周方向均勻地布滿了小齒。轉(zhuǎn)子小齒的齒距是和定子相同的。設(shè)計時應(yīng)使轉(zhuǎn)子齒數(shù)能被二整除。
2)教學(xué)實(shí)驗(yàn)系統(tǒng)中步進(jìn)電機(jī)的控制
本教學(xué)實(shí)驗(yàn)系統(tǒng)中使用的步進(jìn)電機(jī)為四相式步進(jìn)電機(jī),但工作模式為兩相四拍。系統(tǒng)中采用74HC273鎖存芯片,將步進(jìn)電機(jī)的相位信號進(jìn)行鎖存,然后通過ULN2003驅(qū)動芯片,進(jìn)入步進(jìn)電機(jī)的各相繞組。
教學(xué)實(shí)驗(yàn)系統(tǒng)中的電機(jī)有兩種工作模式:半步模式、整步模式。整步模式下的步距角為18°,半步模式則為9°,各模式下的脈沖信號及分配信號如圖5-34、圖5-35和表5-11、表5-12所示。圖5-34半步模式脈沖信號圖圖5-35整步模式脈沖信號圖
5.實(shí)驗(yàn)電路原理圖
由圖5-36可知,經(jīng)過74HC273鎖存后的信號輸出到ULN2003,由ULN2003芯片來驅(qū)動和控制電機(jī)。控制74HC273的片選地址為0x88001000,D0~D3分別對應(yīng)步進(jìn)電機(jī)的MA、MB、MC、MD信號。圖5-36步進(jìn)電機(jī)實(shí)驗(yàn)電路原理圖
6.實(shí)驗(yàn)程序
7.實(shí)驗(yàn)步驟
(1)首先打開Eclipse軟件,指定工作目錄。
(2)打開MotorStepper工程,點(diǎn)擊工具欄的File,然后點(diǎn)擊Import。然后點(diǎn)擊ExistingProjectintoWorkspace。再次點(diǎn)擊Browse按鈕。如圖5-37所示,進(jìn)入目錄D:\Eclipse_pro?jects\MotorStepper\。點(diǎn)擊Finish按鈕。成功添加工程到Eclipse中。圖5-37工程文檔目錄
(3)需要把Makefile的LDPATH和COMMON換成自己的路徑:
(4)點(diǎn)擊工程右鍵,點(diǎn)擊“BulidProject”按鈕,對工程進(jìn)行編譯,生成MotorStepper.elf文件。編譯成功提示如圖5-38所示。圖5-38編譯結(jié)果
5.3.3串口通信實(shí)驗(yàn)
1.實(shí)驗(yàn)?zāi)康?/p>
(1)熟悉Eclipse開發(fā)環(huán)境。
(2)熟悉在ARM裸機(jī)環(huán)境下的C
語言編程。
(3)熟悉CVT-S5PV210下串口UART的操作。
2.實(shí)驗(yàn)內(nèi)容
(1)編寫程序,練習(xí)C語言的使用。
(2)實(shí)現(xiàn)對開發(fā)板上串口的控制。
(3)代碼分別在Eclipse的Debug環(huán)境下運(yùn)行。
3.實(shí)驗(yàn)設(shè)備
(1)硬件:CVT-S5PV210嵌入式教學(xué)實(shí)驗(yàn)箱、PC。
(2)軟件:PC機(jī)操作系統(tǒng)WindowsXP(Win7)+Eclipse開發(fā)環(huán)境。
4.實(shí)驗(yàn)原理
串行通信接口電路一般由可編程的串行接口芯片、波特率發(fā)生器、EIA與TTL電平轉(zhuǎn)換器以及地址譯碼電路組成。采用的通信協(xié)議有兩類:異步協(xié)議和同步協(xié)議。隨著大規(guī)模集成電路技術(shù)的發(fā)展,通用的同步和異步接口芯片種類越來越多,它們的基本功能是類似的。采用這些芯片作為串行通信接口電路的核心芯片,會使電路結(jié)構(gòu)比較簡單。下面介紹異步串行通信的基本原理、串行接口的物理層標(biāo)準(zhǔn)以及串口控制器寄存器。
1)異步串行通信
異步串行通信方式是將傳輸數(shù)據(jù)的每個字符一位接一位(例如先低位、后高位)地傳送。數(shù)據(jù)的各不同位可以分時使用同一傳輸通道,因此串行I/O可以減少信號連線,最少用一對線即可進(jìn)行。接收方對于同一根線上一連串的數(shù)字信號,首先要分割成位,再按位組成字符。為了恢復(fù)發(fā)送的信息,雙方必須協(xié)調(diào)工作。在微型計算機(jī)中大量使用異步串行I/O方式,雙方使用各自的時鐘信號,而且允許時鐘頻率有一定誤差,因此實(shí)現(xiàn)較容易。但是由于每個字符都要獨(dú)立確定起始和結(jié)束(即每個字符都要重新同步),字符和字符間還可能有長度不定的空閑時間,因此效率較低。
圖5-39給出了異步串行通信中一個字符的傳送格式。開始前,線路處于空閑狀態(tài),送出連續(xù)“1”。傳送開始時首先發(fā)一個“0”作為起始位,然后出現(xiàn)在通信線上的是字符的二進(jìn)制編碼數(shù)據(jù)。每個字符的數(shù)據(jù)位長可以約定為5位、6位、7位或8位,一般采用ASCII編碼,后面是奇偶校驗(yàn)位。根據(jù)約定,用奇偶校驗(yàn)位將所傳字符中為“1”的位數(shù)湊成奇數(shù)個或偶數(shù)個。如果也約定不要奇偶校驗(yàn),可取消奇偶校驗(yàn)位。最后是表示停止位的“1”信號,這個停止位可以約定持續(xù)1位、1.5位或2位的時間寬度。一個字符傳送完畢,線路進(jìn)入空閑,持續(xù)為“1”。經(jīng)過一段隨機(jī)的時間后,下一個字符開始傳送才又發(fā)出起始位。每一個數(shù)據(jù)位的寬度等于傳送波特率的倒數(shù)。異步串行通信中,常用的波特率為4800、9600、115200b/s等。圖5-39串行通信字符格式
2)串行接口的物理層標(biāo)準(zhǔn)
通用的串行I/O接口有許多種,現(xiàn)就最常見的兩種標(biāo)準(zhǔn)作簡單介紹。
(1)RS-232C。
圖5-40分別給出了DB-25和DB-9的引腳定義,表5-13列出了引腳的名稱以及簡要說明。
圖5-41給出了兩臺微機(jī)利用RS-232C接口通信的兩種基本連接方式。圖5-41RS-232C連線圖
(2)信號電平規(guī)定。
RS-232C規(guī)定了雙極性的信號邏輯電平,采用的是負(fù)邏輯定義:
-3V到-15V之間的電平表示邏輯“1”;
+3V到+15V之間的電平表示邏輯“0”。
以上電平標(biāo)準(zhǔn)稱為EIA電平。
常用專門的RS232接口芯片,如SP3232、SP3220、MAX232、MC1488/1489等,在TTL電平和EIA電平之間實(shí)現(xiàn)相互轉(zhuǎn)換。
3)實(shí)驗(yàn)使用寄存器
S5PV210芯片進(jìn)行UART通信所涉及的寄存器有:引腳配置、線控寄存器、控制寄存器、FIFO控制寄存器等。
(1)UART線控寄存器ULCONn。
表5-14列出了ULCONn各位的含義,有ULCON0、ULCON1、ULCON2、ULCON3,地址分別為0x0E90_0000、0x0E90_0400、0x0E90_0800、0x0E90_0C00。該寄存器的位6決定是否使用紅外模式,位5~位3決定校驗(yàn)方式,位2決定停止位長度,位1和位0決定每幀的數(shù)據(jù)位數(shù)。
(2)UART控制寄存器UCONn。
表5-15列出了UCONn各位的含義,有UCON0、UCON1、UCON2、UCON3,地址分別為0x0E900004、0x0E900404、0x0E900804、0x0E900C04。該寄存器對UART的工作時鐘、中斷類型、錯誤使能、工作模式等進(jìn)行了配置表。
(3)FIFO控制寄存器UFCONn。
表5-16列出了UFCONn各位的意義,有UFCON0、UFCON1、UFCON2、UFCON3,地址分別為0x0E90_0008、0x0E90_0408、0x0E90_0808、0x0E90_0C08。該寄存器用于收發(fā)緩沖的管理,包括緩沖的觸發(fā)字節(jié)數(shù)的設(shè)置、FIFO的清除和使能。
(4)MODEM控制寄存器UMCONn。
表5-17列出了UFCONn各位的意義,有UMCON0、UMCON1、UMCON2,地址分別為0xE290_000C、0xE290_040C、0xE290_080C。該寄存器用于設(shè)置流控方式。在實(shí)驗(yàn)中沒有使用流控。
(5)發(fā)送/接收狀態(tài)寄存器UTRSTATn。
表5-18列出了UTRSTATn各位的意義,寄存器可讀。有4個發(fā)送和接收寄存器UTRSTAT0、UTRSTAT1、UTRSTAT2、UTRSTAT3,地址分別為0xE290_0010、0xE290_0410、0xE290_0810、0xE290_0C10。
(6)錯誤狀態(tài)寄存器UERSTATn。
表5-19列出了UERSTATn各位的意義,寄存器可讀,它可以反映芯片當(dāng)前的錯誤類型。有4個錯誤狀態(tài)寄存器UERSTAT0、UERSTAT1、UERSTAT2、UERSTAT3,地址分別為0xE290_0014、0xE290_0414、0xE290_0814、0xE290_0C14。
(7)FIFO狀態(tài)寄存器UFSTATn。
表5-20列出了UFSTATn各位的意義,寄存器可讀,通過它讀出目前FIFO是否滿以及其中的字節(jié)數(shù)。有三個FIFO狀態(tài)寄存器UFSTAT0、UFSTAT1、UFSTAT2,地址分別為0xE290_0018、0xE290_0418、0xE290_0818。
(8)發(fā)送緩沖寄存器UTXH和接收緩沖寄存器URXH。
表5-21和表5-22列出了UTXH和URXH各位的意義。這兩個寄存器存放著發(fā)送和接收的數(shù)據(jù),當(dāng)然只有一個字節(jié)8位數(shù)據(jù)。需要注意的是,在發(fā)生溢出錯誤時,接收的數(shù)據(jù)必須被讀出來,否則會引發(fā)下次溢出錯誤。發(fā)送緩沖寄存器有UTXH0、UTXH1、UTXH2、UTXH3,地址分別為0xE290_0020、0xE290_0420、0xE290_0820、0xE290_0C20,寄存器可寫。
(9)波特率分頻寄存器UBRDIVn。
表5-23列出了UBRDIVn各位的意義,該寄存器可讀寫。有四個波特率分頻寄存器UBRDIV0、UBRDIV1、UBRDIV2、UBRDIV3,地址分別為0xE290_0028、0xE290_0428、0xE290_0828、0xE290_0C28,可讀寫。
(10)UART通道波特率除數(shù)寄存器UDIVSLOTn。
表5-24列出了UDIVSLOTn各位的意義,該寄存器可讀寫。有四個波特率分頻寄存器UDIVSLOT0、UDIVSLOT1、UDIVSLOT2、UDIVSLOT3,地址分別為0xE290_002C、0xE290_042C、0xE290_082C、0xE290_0C2C。使用UDIVSLOT可以更精確地生產(chǎn)波特率。
(11)UART中斷等待寄存器UINTPn。
表5-25列出了UINTPn各位的意義,該寄存器可讀寫。有四個中斷等待寄存器UINTP0、UINTP1、UINTP2、UINTP3,地址分別為0xE290_0030、0xE290_0430、0xE290_0830、0xE290_0C30。如果以上4位中的某一位是邏輯1,則相應(yīng)UART通道產(chǎn)生中斷。
(12)UART中斷源等待寄存器UINTSPn。
表5-26列出了UINTSPn各位的意義,該寄存器可讀寫。有四個中斷源等待寄存器UINTSPn、UINTSP1、UINTSP2、UINTSP3,地址分別為0xE290_0034、0xE290_0434、0xE290_0834、0xE290_0C34。中斷源等待寄存器包含產(chǎn)生的中斷信息,不論中斷屏蔽寄存器的值為多少。
(13)UART中斷屏蔽寄存器UINTMn。
表5-27列出了UINTMn各位的意義,該寄存器可讀寫。有四個中斷屏蔽寄存器UINTM0、UINTM1、UINTM2、UINTM3,地址分別為0xE290_0038、0xE290_0438、0xE290_0838、0xE290_0C38。
中斷屏蔽寄存器包含那些中斷源被屏蔽的信息。如果一個特定的位被設(shè)置為1,中斷控制器將不產(chǎn)生中斷請求信號,即使相應(yīng)的中斷產(chǎn)生了。即使在這種情況下,所對應(yīng)的位UINTSPn寄存器也被設(shè)置為1。如果屏蔽位是0,則對相應(yīng)中斷源的中斷請求提供服務(wù)。如圖5-42所示為三種中斷寄存器之間的關(guān)系。圖5-42三種中斷寄存器之間的關(guān)系
5.實(shí)驗(yàn)說明
串口在嵌入式系統(tǒng)中是一個重要的資源,常用作輸入輸出設(shè)備,在后續(xù)的實(shí)驗(yàn)中將使用串口的功能。串口的基本操作有三個:串口初始化、發(fā)送數(shù)據(jù)和接收數(shù)據(jù),這些操作都是通過訪問上面所述的串口控制寄存器進(jìn)行,下面將分別說明。
端口配置寄存器設(shè)置參見表5-3,此處利用GPA0[1:0]引腳設(shè)置為UART_2_TXD、UART_2_RXD功能。實(shí)驗(yàn)相應(yīng)寄存器參照UART2的各類寄存器設(shè)置。
串行接口電路原理圖如圖5-7所示。UART2作為調(diào)試通信口用。UART0作為外設(shè)通信口或ZigBee模塊接口,UART1作為GPS的通信口,UART3為GPRS通信口。
(1)實(shí)驗(yàn)Main.c程序如下:
(2)Uart.c如下:
6.實(shí)驗(yàn)步驟
(1)首先打開Eclipse軟件,指定工作目錄。
(2)打開Uart工程,點(diǎn)擊工具欄的File,然后點(diǎn)擊Import;點(diǎn)擊ExistingProjectintoWorkspace;再點(diǎn)擊Browse按鈕,進(jìn)入目錄D:\Eclipse_projects\Uart\;點(diǎn)擊Finish按鈕,成功添加工程到Eclipse中。
(3)編寫串口操作函數(shù)實(shí)現(xiàn)如下功能:循環(huán)接收串口送來的數(shù)據(jù),并將接收到的數(shù)據(jù)發(fā)送回去。
(4)需要把Makefile的LDPATH和COMMON換成自己的路徑:
(5)編譯UART,生成uart.elf文件,如圖5-43所示。圖5-43程序工作目錄和編譯結(jié)果
(6)將計算機(jī)的串口接到開發(fā)板的UART0上。
(7)連接好仿真器,實(shí)驗(yàn)箱通電。打開FS-JTAG調(diào)試工具,連接成功。設(shè)置DebugConfigurations。執(zhí)行Debug后,Eclipse進(jìn)入Debug調(diào)試界面,可以看到程序停在main()的位置。調(diào)試模式成功,全速運(yùn)行。
(8)運(yùn)行超級終端,選擇正確的串口號,并將串口設(shè)置為:波特率(115200)、奇偶校驗(yàn)、數(shù)據(jù)位數(shù)(8)和停止位數(shù)(1),無流控,打開串口。
(9)實(shí)驗(yàn)結(jié)果。
運(yùn)行程序,在超級終端中鍵盤輸入的數(shù)據(jù),將回顯到串口超級終端上,如圖5-44所示。圖5-44超級終端上顯示結(jié)果
5.4嵌入式Linux系統(tǒng)實(shí)驗(yàn)
嵌入式Linux的應(yīng)用領(lǐng)域非常廣泛,主要的應(yīng)用領(lǐng)域有信息家電、PDA、機(jī)頂盒、智能手機(jī)、觸摸屏、數(shù)據(jù)網(wǎng)絡(luò)、以太網(wǎng)交換機(jī)、路由器、集線器、遠(yuǎn)程訪問服務(wù)器、ATM取款機(jī)、遠(yuǎn)程通信、醫(yī)療電子、交通運(yùn)輸計算機(jī)外設(shè)、工業(yè)控制、航空航天領(lǐng)域等。
嵌入式Linux的優(yōu)勢具體如下:
(1)Linux是開放源代碼的,不存在黑箱技術(shù),遍布全球的眾多Linux愛好者又是Linux開發(fā)者的強(qiáng)大技術(shù)支持;
(2)Linux的內(nèi)核小、效率高,內(nèi)核的更新速度很快,Linux是可以定制的,其系統(tǒng)內(nèi)核最小只有約134KB。
(3)Linux是免費(fèi)的OS,在價格上極具競爭力。
(4)Linux還有著嵌入式操作系統(tǒng)所需要的很多特色,突出的就是Linux適應(yīng)于多種CPU和多種硬件平臺,是一個跨平臺的系統(tǒng)。到目前為止,它可以支持二、三十種CPU。而且性能穩(wěn)定,裁剪性很好,開發(fā)和使用都很容易。很多CPU包括家電業(yè)芯片,都開始做Linux的平臺移植工作。移植的速度遠(yuǎn)遠(yuǎn)超過Java的開發(fā)環(huán)境。也就是說,如果今天用Linux環(huán)境開發(fā)產(chǎn)品,那么將來更換CPU就不會遇到困擾。
(5)Linux內(nèi)核的結(jié)構(gòu)在網(wǎng)絡(luò)方面是非常完整的,Linux對網(wǎng)絡(luò)中最常用的TCP/IP協(xié)議有最完備的支持。提供了包括十兆、百兆、千兆的以太網(wǎng)絡(luò)以及無線網(wǎng)絡(luò)、Tokerring(令牌環(huán)網(wǎng))、光纖甚至衛(wèi)星的支持。所以Linux很適于做信息家電的開發(fā)。
(6)使用Linux來開發(fā)無線連接產(chǎn)品的開發(fā)者越來越多。Linux在快速增長的無線連接應(yīng)用主場中有一個非常重要的優(yōu)勢,就是有足夠快的開發(fā)速度。這是因?yàn)長inux有很多工具,并且Linux為眾多程序員所熟悉。
5.4.1BootLoader實(shí)驗(yàn)
1.實(shí)驗(yàn)?zāi)康?/p>
(1)了解BootLoader在嵌入式系統(tǒng)中的作用。
(2)熟悉UbuntuLinux主機(jī)環(huán)境。(2)熟悉U-Boot編譯方法,掌握U-Boot的基本功能、操作。
2.實(shí)驗(yàn)內(nèi)容
(1)學(xué)習(xí)UBoot的基礎(chǔ)知識和常用命令,并按照實(shí)驗(yàn)步驟實(shí)踐UBoot的用法。
(2)編譯引導(dǎo)Linux系統(tǒng)的BootLoader。
3.實(shí)驗(yàn)設(shè)備
(1)硬件:CVT-A8系列實(shí)驗(yàn)箱,電腦(帶串口)。
(2)軟件:PC機(jī)操作系統(tǒng)、Ubuntu系統(tǒng)環(huán)境。
4.實(shí)驗(yàn)原理
1)BootLoader的概念回憶一下PC的體系結(jié)構(gòu)可知,PC機(jī)中的引導(dǎo)加載程序由BIOS(其本質(zhì)就是一段固件程序)和位于硬盤MBR中的引導(dǎo)程序一起組成。BIOS在完成硬件檢測和資源分配后,將硬盤MBR中的引導(dǎo)程序讀到系統(tǒng)的RAM中,然后將控制權(quán)交給引導(dǎo)程序。引導(dǎo)程序的主要運(yùn)行任務(wù)就是將內(nèi)核映象從硬盤上讀到RAM中,然后跳轉(zhuǎn)到內(nèi)核的入口點(diǎn)去運(yùn)行,也即開始啟動操作系統(tǒng)。
簡單地說,BootLoader就是在操作系統(tǒng)內(nèi)核或用戶應(yīng)用程序運(yùn)行之前運(yùn)行的一段小程序。通過這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核或用戶應(yīng)用程序準(zhǔn)備好正確的環(huán)境。對于一個嵌入式系統(tǒng)來說,可能有的包括操作系統(tǒng),有的小型系統(tǒng)也可能只包括應(yīng)用程序,但是在這之前都需要Boot
Loader為它準(zhǔn)備一個正確的環(huán)境。通常,BootLoader是依賴于硬件而實(shí)現(xiàn)的,特別是在嵌入式領(lǐng)域,為嵌入式系統(tǒng)建立一個通用的BootLoader是很困難的。當(dāng)然,我們可以歸納出一些通用的概念來,以便我們了解特定BootLoader的設(shè)計與實(shí)現(xiàn)。
(1)BootLoader的移植和修改。
每種不同的CPU體系結(jié)構(gòu)都有不同的BootLoader。除了依賴于CPU的體系結(jié)構(gòu)外,BootLoader實(shí)際上也依賴于具體的嵌入式板級設(shè)備的配置,比如板卡的硬件地址分配,RAM芯片的類型,其他外設(shè)的類型等。對于兩塊不同的嵌入式板而言,即使它們是基于同一種CPU而構(gòu)建的,如果他們的硬件資源和配置不一致的話,要想讓運(yùn)行在一塊板子上的BootLoader程序也能運(yùn)行在另一塊板子上,也還是需要作一些必要的修改。
(2)BootLoader的安裝。
系統(tǒng)加電或復(fù)位后,所有的CPU通常都從CPU制造商預(yù)先安排的地址上取指令。比如,S3C2410X在復(fù)位時都從地址0x00000000取它的第一條指令。而嵌入式系統(tǒng)通常都有某種類型的固態(tài)存儲設(shè)備(比如:ROM、E2PROM或Flash等)被安排在這個起始地址上,因此在系統(tǒng)加電后,CPU將首先執(zhí)行BootLoader程序。也就是說對于基于S3C2410X的這套系統(tǒng),我們的BootLoader是從0地址開始存放的,而這塊起始地址需要采用可引導(dǎo)的固態(tài)存儲設(shè)備如Flash。
(3)用來控制BootLoader的設(shè)備或機(jī)制。
串口通信是最簡單也是最廉價的一種雙機(jī)通信設(shè)備,所以往往在BootLoader中主機(jī)和目標(biāo)機(jī)之間都通過串口建立連接,BootLoader程序在執(zhí)行時通常會通過串口來進(jìn)行I/O,比如:輸出打印信息到串口,從串口讀取用戶控制字符等。當(dāng)然如果認(rèn)為串口通信速度不夠,也可以采用網(wǎng)絡(luò)或者USB通信,那么相應(yīng)的在BootLoader中就需要編寫各自的驅(qū)動。
(4)BootLoader的啟動過程。
多階段的BootLoader能提供更為復(fù)雜的功能,以及更好的可移植性。從固態(tài)存儲設(shè)備上啟動的BootLoader大多都是2階段的啟動過程,即啟動過程可以分為stage1和stage2兩部分,具體功能將在下一節(jié)介紹。
(5)BootLoader的操作模式。
大多數(shù)BootLoader都包含兩種不同的操作模式:啟動加載模式和下載模式,這種區(qū)別僅對于開發(fā)人員才有意義。但從最終用戶的角度看,BootLoader的作用就是用來加載操作系統(tǒng),而并不存在所謂的啟動加載模式與下載工作模式的區(qū)別。
啟動加載模式:這種模式也稱為"自主"模式,即BootLoader從目標(biāo)機(jī)上的某個固態(tài)存儲設(shè)備上將操作系統(tǒng)加載到RAM中運(yùn)行,整個過程并沒有用戶的介入。這種模式是BootLoader的正常工作模式,因此在嵌入式產(chǎn)品發(fā)布的時候,BootLoader顯然必須工作在這種模式下。
(6)BootLoader與主機(jī)之間進(jìn)行文件傳輸所用的通信設(shè)備及協(xié)議。
最常見的情況就是,目標(biāo)機(jī)上的BootLoader通過串口與主機(jī)之間進(jìn)行文件傳輸,傳輸可以簡單的采用直接數(shù)據(jù)收發(fā),當(dāng)然在串口上也可以采用xmodem/ymodem/zmodem協(xié)議以及在以太網(wǎng)上采用TFTP協(xié)議。
(7)通常一個嵌入式BootLoader提供以下特征:
①初始化硬件,尤其是內(nèi)存控制器。
②提供Linux內(nèi)核的啟動參數(shù)。
③啟動Linux內(nèi)核。
此外,大多數(shù)BootLoader也提供簡化開發(fā)過程的特征,具體如下:
①讀寫存儲器。
②通過串口或者以太網(wǎng)口上載新的二進(jìn)制映像文件到目標(biāo)板的RAM。
③從RAM中拷貝二進(jìn)制映像文件到FLASH存儲器中。
2)U-Boot簡介
U-Boot,全稱UniversalBootLoader,是遵循GPL條款的開放源碼項(xiàng)目。從FADSROM、8xxROM、PPCBOOT逐步發(fā)展演化而來。U-Boot是開放源碼的,支持多種嵌入式操作系統(tǒng)內(nèi)核,如Linux、NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS;支持多個處理器系列,如PowerPC、ARM、x86、MIPS、XScale;具有較高的可靠性和穩(wěn)定性,高度靈活的功能設(shè)置,適合U-Boot調(diào)試、操作系統(tǒng)不同引導(dǎo)要求、產(chǎn)品發(fā)布;具有豐富的設(shè)備驅(qū)動源碼,如串口、以太網(wǎng)、SDRAM、Flash、LCD、NVRAM、E2PROM、RTC、鍵盤等;具有較為豐富的開發(fā)調(diào)試文檔與強(qiáng)大的網(wǎng)絡(luò)技術(shù)支持。
U-Boot的源碼目錄、編譯形式與Linux內(nèi)核很相似,事實(shí)上,不少U-Boot源碼就是相應(yīng)的Linux內(nèi)核源程序的簡化,尤其是一些設(shè)備的驅(qū)動程序,U-Boot源碼的注釋中能體現(xiàn)這一點(diǎn)。U-Boot的用戶接口類似于Linux的shell界面,通過串口連接以后,用戶可以交互式輸入命令和看到結(jié)果。U-Boot的啟動界面如圖5-45所示。圖5-45UBoot的啟動界面
3)U-Boot環(huán)境變量
U-Boot環(huán)境被保存于非易失性存儲器(如Flash)的一段區(qū)域,當(dāng)U-Boot啟動的時候被拷貝到RAM。它用于保存配置系統(tǒng)的環(huán)境變量。U-boot環(huán)境采用CRC32校驗(yàn)和保護(hù)。本節(jié)列舉了大多數(shù)重要的環(huán)境變量。
用戶可以使用以下這些變量配置U-Boot:
(1)baudrate:控制臺波特率的十進(jìn)制數(shù)值。當(dāng)使用“setenvbaudrate...”命令改變波特率時,U-Boot將切換控制臺終端的波特率并在進(jìn)入新的速度設(shè)置后等待一個換行符。如果失敗,將不得不復(fù)位目標(biāo)板(由于沒有保存新的設(shè)置,因此系統(tǒng)將保持老的波特率),如果沒有“baudrate”變量被定義,缺省的波特率是115200。
(2)bootcmd:改變量定義一個命令字符串,當(dāng)初始化倒數(shù)計時沒有被中斷時,該字符串將被自動執(zhí)行。該命令僅僅在bootdelay也被定義時被執(zhí)行。
(3)bootdelay:系統(tǒng)復(fù)位后,在執(zhí)行bootcmd變量的內(nèi)容前,UBoot將等待bootdelay秒。在這段時間,將顯示倒計時,可以通過按下任意鍵中斷bootcmd的運(yùn)行。如果希望不作任何延時請設(shè)置該變量為0。
(4)ethaddr:第一個以太網(wǎng)接口的以太網(wǎng)MAC地址(Linux中的eth0)。該變量只能被
設(shè)置一次,U-Boot拒絕在設(shè)置后輸出或者覆蓋該變量。
(5)ipaddr:本機(jī)IP地址,tftp命令使用。
(6)serverip:TFTP服務(wù)器IP地址,tftp命令需要。
(7)bootlinux:從flash引導(dǎo)Linux系統(tǒng)啟動。
(8)bootandroid:從flash引導(dǎo)Android系統(tǒng)啟動。
(9)loadlinuxramdisk:從網(wǎng)絡(luò)TFTP服務(wù)器下載內(nèi)核、RamDisk文件系統(tǒng)到內(nèi)存中,并且運(yùn)行下載的Linux系統(tǒng)。
(10)burnlinuxzImage:燒寫sd卡中的zImge文件到Flash中的Kernel區(qū)。
5.實(shí)驗(yàn)步驟
(1)把PC電腦的串口連接到實(shí)驗(yàn)設(shè)備的串口2。
(2)打開超級終端(Windows系統(tǒng)自帶的超級終端也行),按照提示選擇115200波特率、8位數(shù)據(jù)位、1位停止位、無奇偶校驗(yàn)。
(3)實(shí)驗(yàn)箱通電,可以看到超級終端顯示如圖5-46所示。圖5-46超級終端顯示界面
(4)在“Hitanykeytostopautboot:1”倒數(shù)到0之前,點(diǎn)擊鍵盤的任意按鍵,進(jìn)入UBoot命令行狀態(tài)。
(5)U-Boot基本命令實(shí)驗(yàn)。如圖5-47及圖5-48所示,分別在U-Boot中輸入如下命令,并觀察實(shí)驗(yàn)結(jié)果:圖5-47打印目標(biāo)板配置信息界面圖5-48打印目標(biāo)板環(huán)境變量信息界面
(6)tftp程序下載和引導(dǎo)操作實(shí)驗(yàn)。
首先打開tftp服務(wù)器,指定下載文件的目錄。
tftp服務(wù)器準(zhǔn)備完成后,用網(wǎng)線連接PC與實(shí)驗(yàn)箱的網(wǎng)口,在超級終端中輸入命令:
(7)U-Boot
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小區(qū)小院改造飯店合同模板
- 廣東租房簡約合同范例
- 建材預(yù)購合同范例
- 臨時安全施工合同范例
- 工作合同范例 英文
- 原材料合同模板格式
- 保潔監(jiān)管協(xié)議合同范例
- 務(wù)工合同范例司機(jī)
- 商鋪電力施工合同范例
- 彩禮錢贈與合同模板
- 06竣工財務(wù)決算審計工作底稿(試行)
- 化驗(yàn)室化學(xué)試劑分類清單(參考模板)
- 三教”統(tǒng)一、和諧發(fā)展促進(jìn)學(xué)生健康成長的有效方式
- 材料成型概論 第四章 擠壓成型
- 六盤水氣候特征
- 輻射安全責(zé)任書
- 第五章水輪機(jī)特性曲線
- 職業(yè)病防治(課堂PPT)
- 建設(shè)工程項(xiàng)目施工安全評價書(共10頁)
- 機(jī)場助航燈光設(shè)計講解
- fairytale傳奇英文版歌詞
評論
0/150
提交評論