国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于NFS的CortexA8開發(fā)板自開發(fā)程序應(yīng)用研究

2015-04-30 06:37于博
軟件導(dǎo)刊 2015年4期
關(guān)鍵詞:架構(gòu)

于博

摘要摘要:CortexA8處理器是第一款基于ARMv7 架構(gòu)的應(yīng)用處理器,是有史以來ARM 開發(fā)的性能最高、最具功率效率的處理器。ARM Cortex-A8處理器是一款適用于復(fù)雜操作系統(tǒng)的應(yīng)用處理器?;贜FS文件系統(tǒng),對(duì)CortexA8開發(fā)板遠(yuǎn)程添加自開發(fā)程序應(yīng)用進(jìn)行了研究。

關(guān)鍵詞關(guān)鍵詞:NFS; CortexA8處理器; ARMv7 架構(gòu); 自開發(fā)程序

DOIDOI:10.11907/rjdk.1431004

中圖分類號(hào):TP319

文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào)文章編號(hào):16727800(2015)004011802

0引言

NFS是Network File System的簡(jiǎn)寫,即網(wǎng)絡(luò)文件系統(tǒng)[1]。網(wǎng)絡(luò)文件系統(tǒng)是FreeBSD支持的文件系統(tǒng)中的一種。 NFS允許一個(gè)系統(tǒng)在網(wǎng)絡(luò)上與他人共享目錄和文件。通過使用NFS,不同的操作系統(tǒng)彼此共享文件(share files)——可以通過NFS掛載遠(yuǎn)程主機(jī)目錄,訪問該目錄就像訪問本地目錄一樣,所以也可以簡(jiǎn)單地將它看作一個(gè)文件服務(wù)器(Fileserver)[2]。

1學(xué)習(xí)和使用NFS文件系統(tǒng)

NFS工作原理可以理解為:CortexA8開發(fā)板上需要安裝一個(gè)NFS客戶端軟件,Linux宿主機(jī)上安裝NFS服務(wù)器端軟件。Linux宿主機(jī)配置NFS文件,告訴本機(jī)哪塊硬盤區(qū)域可以被NFS Client設(shè)備掛載,Linux宿主機(jī)啟動(dòng)NFS服務(wù)器程序并等待Client掛載。CortexA8和Linux宿主機(jī)通過網(wǎng)線相連,運(yùn)行NFS Client程序通過網(wǎng)線掛載Linux宿主機(jī)上的那塊硬盤,這樣在CortexA8開發(fā)板(NFS Client)一端就可以看到Linux宿主機(jī)上這塊硬盤區(qū)域里所有的文件了。

1.1CortexA8開發(fā)板和Linux宿主機(jī)兩端安裝NFS組件

CortexA8開發(fā)板的Linux內(nèi)核和文件系統(tǒng)支持NFS組件,所以CortexA8這端不需作任何修改就可以支持NFS。Linux內(nèi)核的配置:在Linux宿主機(jī)下進(jìn)入/opt/Friendly ARM/mini210/linux3.0.8,運(yùn)行命令:#make menuconfig (進(jìn)入Linux內(nèi)核配置界面),進(jìn)入NFS組件的選擇安裝,如圖1所示。

1.2主機(jī)端安裝NFS服務(wù)器

在Linux宿主機(jī)端安裝NFS服務(wù)器,不同的Linux發(fā)行版會(huì)略有不同,筆者使用的是Fedora 17發(fā)行版,過程如下:運(yùn)行命令:#yum install port map nfsutils(安裝NFS所需要的組件) ,在/opt/Friendly ARM/mini210/目錄下建立一個(gè)共享目錄,取名為Source Code

運(yùn)行命令:#chimed 777 /opt/Friendly ARM/mini210/Source Code (將文件夾Source Code的權(quán)限設(shè)置為所有人可讀寫和操作),#vim /etc/exports(修改exports配置文件)。在exports配置文件添加一行/opt/Friendly ARM/mini210/Source Code *(sync,rw,no_root_squash)解析。/opt/Friendly ARM/mini210/Source Code 就是NFS服務(wù)器允許NFS客戶端掛載的文件。*:代表任意IP地址都可以掛載該NFS服務(wù)器的指定文件,Rw:代表擁有可讀寫權(quán)限。

No_root_squash:表示當(dāng)?shù)顷慛FS服務(wù)器使用共享目錄的使用者是root時(shí),其權(quán)限將被轉(zhuǎn)換為匿名使用者(nobody)。接下來Linux宿主機(jī)端還要禁用防火墻,在Fedora17下禁用防火墻的命令為#systemctl stop iptables.service。將NFS服務(wù)器配置成開機(jī)啟動(dòng)并啟動(dòng)NFS服務(wù)器,命令為#systemctl enable nfsserver.service。

2為CortexA8開發(fā)板添加自開發(fā)程序

2.1CortexA8處理器編譯

CortexA8采用了復(fù)雜的流水線構(gòu)架,針對(duì)強(qiáng)功耗應(yīng)用,CortexA8采用了一個(gè)優(yōu)化的裝載/存儲(chǔ)流水線,順序執(zhí)行,同步執(zhí)行超標(biāo)量處理器內(nèi)核,其擁有13級(jí)主流水線,10級(jí)NEON多媒體流水線,可以提供2 DMIPS/MHZ的性能;它有優(yōu)化的L1緩存,可以提高訪問存儲(chǔ)速度并降低功耗;它有專用的L2緩存,在編譯時(shí),可以把緩存當(dāng)作標(biāo)準(zhǔn)的RAM進(jìn)行處理,而緩存大小可以靈活配置,緩存的訪問延遲也可以編程控制;它有基于執(zhí)行記錄的動(dòng)態(tài)跳轉(zhuǎn)預(yù)盼,準(zhǔn)確性高達(dá)95%,而且提供重放機(jī)制以有效降低預(yù)判錯(cuò)誤帶來的性能損失;在技術(shù)方面,使用了更高性能及功耗效率和高代碼密度的Thumb-2技術(shù)[3]。它首次采用了強(qiáng)大的NEONTM信號(hào)處理擴(kuò)展集,對(duì)H.264和MP3等媒體編解碼提供加速。CortexA8解決方案還包括JazelleRCT Java加速技術(shù),提供最優(yōu)化的實(shí)時(shí)(JIT)和動(dòng)態(tài)調(diào)適編譯(DAC),同時(shí)減少3/4的內(nèi)存占用空間。此外,新處理器還配置了用于安全交易和數(shù)字版權(quán)管理的TrustZone技術(shù)和AMBA 3 AXITM互連協(xié)議,實(shí)現(xiàn)低功耗管理IEM的功能[4]。

在Linux宿主機(jī)下,進(jìn)入/opt/Friendly ARM/mini210目錄,用C語言編寫helloworld.c程序,運(yùn)行命令#armLinuxgcc helloworld.c hello world(使用交叉編譯器armlinuxgcc,編譯helloworld.c,源碼為helloworld的可執(zhí)行程序) 。

2.2CortexA8開發(fā)板燒錄

在同目錄下運(yùn)行命令#./hello world(執(zhí)行本目錄下的helloworld程序,應(yīng)該會(huì)報(bào)錯(cuò),因?yàn)檫@個(gè)程序是一個(gè)ARM體系程序而不是X86體系程序,X86主機(jī)無法識(shí)別里面的機(jī)器碼),將hello world可執(zhí)行程序復(fù)制到rootfs_qtopia_qt4目錄下,重新制作rootfs_qtopia_qt4.img文件系統(tǒng),并將文件系統(tǒng)燒錄至CortexA8開發(fā)板。

利用超級(jí)終端或者Telnet登陸開發(fā)板控制臺(tái),找到添加的helloworld程序,在控制臺(tái)下運(yùn)行命令$./hello world(執(zhí)行hello world程序),觀察是否有正確的輸出返回。

至此,已經(jīng)至少向開發(fā)板燒錄過兩次文件系統(tǒng)了。這里的問題是在之后的開發(fā)過程中是不是每次添加或者修改程序時(shí)都要進(jìn)行燒錄呢?那效率也實(shí)在太低了[5]。下面采用嵌入式軟件開發(fā)中最常用的開發(fā)方法,使用NFS文件系統(tǒng)進(jìn)行遠(yuǎn)程掛載來進(jìn)行程序開發(fā)。

3使用NFS進(jìn)行CortexA8開發(fā)

將Linux宿主機(jī)和CortexA8開發(fā)板通過網(wǎng)線相連,并將Linux宿主機(jī)的有線IP地址和CortexA8開發(fā)板的有線IP地址設(shè)置為同一網(wǎng)段(此次實(shí)驗(yàn)室筆者的Linux宿主機(jī)IP地址為192.168.1.22,CortexA8開發(fā)板的IP地址為192.168.1.230)。

在Linux宿主機(jī)上,將之前寫好的helloworld.c源程序和helloworld可執(zhí)行程序復(fù)制到/opt/Friendly ARM/mini210/Source Code目錄下。我們?cè)趯?shí)驗(yàn)中曾經(jīng)使用Windows下的putty.exe程序telnet登陸過開發(fā)板,其實(shí)絕大多數(shù)Linux操作系統(tǒng)也帶有該功能,在Linux宿主機(jī)下運(yùn)行命令#telnet 192.168.1.230(使用telnet工具登陸IP地址為192.168.1.230的CortexA8開發(fā)板命令行控制臺(tái)),輸入用戶名為root,即可在Linux宿主機(jī)上完成命令行登陸,如圖2所示。

在控制臺(tái)下運(yùn)行命令:

$mount –t nfs 192.168.1.22:/opt/Friendly ARM/mini210/Source Code /mnt –o no lock(注意這個(gè)命令是“$”符號(hào)打頭,是在控制臺(tái)進(jìn)行的,意思是將IP地址為192.168.1.22的NFS服務(wù)器/opt/Friendly ARM/mini210/Source Code文件夾掛載到開發(fā)板Linux文件系統(tǒng)的/mnt目錄下)。完成掛載后,運(yùn)行$ls /mnt命令,看一下是否是Linux宿主機(jī)/opt/Friendly ARM/mini210/Source Code目錄下的內(nèi)容,如圖3所示。筆者此時(shí)的/opt/Friendly ARM/mini210/Source Code目錄下的內(nèi)容稍有不同,讀者此時(shí)應(yīng)該只有helloworld.c和helloworld。嘗試運(yùn)行hello world程序,看是否有正確的返回。返回結(jié)果為正確,由此推出,NFS進(jìn)行CortexA8開發(fā)效率較高。

綜上所述,使用NFS進(jìn)行開發(fā),可以通過建立NFS,把Linux 服務(wù)器上的特定分區(qū)共享到待調(diào)試的嵌入式目標(biāo)系統(tǒng)上,這樣就可以直接在嵌入式目標(biāo)系統(tǒng)上操作Linux 服務(wù)器,同時(shí)可以在線對(duì)程序進(jìn)行調(diào)試和修改,大大簡(jiǎn)化了軟件開發(fā)工作。

參考文獻(xiàn)參考文獻(xiàn):

[1]程海粟,李慶武,俞楷,等.基于CortexA8 處理器的車牌識(shí)別系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)與現(xiàn)代化,2014(5):123125.

[2]百度百科.CortexA8開發(fā)平臺(tái)[EB/OL].http://baike.baidu.com/view/6631918.htm?fr=aladdin.

[3]楊亮.基于CortexA8嵌入式實(shí)驗(yàn)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 電子設(shè)計(jì)工程,2014(4) : 153154.

[4]任亮.基于ARM CortexA8的嵌入式Linux開發(fā)的平臺(tái)構(gòu)建[J]. 山西煤炭管理干部學(xué)院學(xué)報(bào),2012(4) : 134135.

[5]李寧.ARM CortexA8處理器原理與應(yīng)用[M].北京: 北京航空航天大學(xué)出版社,2012.

責(zé)任編輯(責(zé)任編輯:杜能鋼)

猜你喜歡
架構(gòu)
基于FPGA的RNN硬件加速架構(gòu)
功能架構(gòu)在電子電氣架構(gòu)開發(fā)中的應(yīng)用和實(shí)踐
基于云服務(wù)的圖書館IT架構(gòu)
WebGIS架構(gòu)下的地理信息系統(tǒng)構(gòu)建研究
LSN DCI EVPN VxLAN組網(wǎng)架構(gòu)研究及實(shí)現(xiàn)
架構(gòu)——李延洲寫生作品展
基于SDN與NFV的網(wǎng)絡(luò)切片架構(gòu)
一種基于FPGA+ARM架構(gòu)的μPMU實(shí)現(xiàn)
具身學(xué)習(xí)環(huán)境SMALLab的架構(gòu)分析及啟示
基于在線雙冗余CANopen架構(gòu)的管軌列控系統(tǒng)
宕昌县| 黑龙江省| 镇远县| 纳雍县| 简阳市| 安国市| 吉安市| 通渭县| 静乐县| 湘潭县| 镇安县| 云林县| 乌拉特后旗| 南投县| 伊通| 霍城县| 平定县| 平安县| 五峰| 英德市| 武陟县| 阜平县| 雷山县| 仙游县| 延川县| 乌兰浩特市| 武清区| 垦利县| 古浪县| 淮滨县| 射阳县| 黑水县| 洛川县| 大同县| 开封市| 当阳市| 保康县| 永定县| 额敏县| 营山县| 郯城县|