VMware下uClinux移植以及Skyeye仿真調(diào)試詳解_第1頁
VMware下uClinux移植以及Skyeye仿真調(diào)試詳解_第2頁
VMware下uClinux移植以及Skyeye仿真調(diào)試詳解_第3頁
VMware下uClinux移植以及Skyeye仿真調(diào)試詳解_第4頁
VMware下uClinux移植以及Skyeye仿真調(diào)試詳解_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、VMware下uClinux移植以及Skyeve仿真調(diào)試詳解姚明君2009年02月04日TOC o 1-5 h zVMware卜uClinux移植以及Skyeye仿真調(diào)試詳解-1 HYPERLINK l bookmark0姚明君1 HYPERLINK l bookmark2一、安裝VMware虛擬機(jī)3 HYPERLINK l bookmark4二、安裝Daemon虛擬光驅(qū)3 HYPERLINK l bookmark6三、安裝Linux開發(fā)壞境3 HYPERLINK l bookmark8四、安裝uclinux編譯工具4 HYPERLINK l bookmark10五、安裝skyeye硬件仿真工

2、具4 HYPERLINK l bookmark12六、編譯uclinux內(nèi)核4 HYPERLINK l bookmark14七、啟動(dòng)uclinux內(nèi)核5 HYPERLINK l bookmark16八、加載用戶應(yīng)用程序5九、總述6十、附錄6安VMware虛擬機(jī)在windovzs卜雙擊VMwarework:station5.5229772,安裝虛擬機(jī)二、安裝Daemon虛擬光驅(qū)在windows卜解壓并安裝DaemonToolsLitev.rar三、安裝Linux開發(fā)環(huán)境運(yùn)彳亍DaemonToolsLitev,并選擇打開RedhatLinux90DiskISO文件運(yùn)行VMware虛擬機(jī)創(chuàng)建一個(gè)li

3、nux的虛擬系統(tǒng)選擇linux運(yùn)彳丁環(huán)境為windowsXPprofessional輸入新創(chuàng)建的虛擬機(jī)活稱為RedHat90虛擬機(jī)設(shè)置:Memory256M,CDROM選擇ISO映像文件:網(wǎng)絡(luò)選擇網(wǎng)橋USB選擇H動(dòng)聲卡選擇h動(dòng)處理器選擇2Options設(shè)置:添加SharedFolders,選擇windows下可供linux訪問的目錄安裝linux,選擇手動(dòng)分區(qū):/hdal50M掛載/root目錄/swap100M掛載交換分區(qū)/hda2所有剩余空間掛載/根目錄選擇完全安裝linux更換下一張光盤肖到安裝完成安裝VMwareTools:運(yùn)彳亍Linux運(yùn)行虛擬光驅(qū)(若安裝)菜單/VM/settin

4、gs/CDROM選擇物理盤G:(或選擇虛擬光驅(qū))菜單/VM/InstallVMTools以root用戶登陸linux$mount/dev/cdrom/mnt(掛載cdrom到mnt下)從/mnt/hgfsF拷貝VMware-tools-xxxx.rpm到/usr/bin運(yùn)行終端$cd/usr/bin$rpm-ivhVMware-tools-xxxx.rpm$/VMware一config一toolspl至此linux開發(fā)環(huán)境安裝完成。四、安裝uclinux編譯工具以root登陸linux將arm-eIf-tools-20040427.sh拷貝到/usr/src$cdusr/src$./arm-e

5、lf-tools-20040427.sh$exportPATH=$PATH:/usr/1ocal/arme1f/bin建立交義編譯環(huán)境路徑。五、安裝skyeye硬件仿真工具從/mnt/hgfs卜拷貝skyeyeT.24-.reltar.gzS/usr/local$cd/usr/local$tarzxvfskyeyel.2.4_rel.tar.gz/bin/skyeye解壓縮用g已dit修改/usr/local/skyeye/ppc/common/vppc_ramu.c,查找并注釋掉prom_quiesce()。$cdbin/skyeye$make7$makeinstall8.見到出現(xiàn)Thebi

6、naryfilelocatedatbinary/skyeye,enjoyit.安裝成功。六、編譯uclinux內(nèi)核以root登陸linux從/mnt/hgfs下拷貝uClinux-dist-20030909.tar.gz到/usr/src$cdusr/src$tarzxvfuClinuxdist-20030909.tar.gz解壓縮$cdusr/src/uClinux-dist彳修改uClinux-dist/vendor/config/armnommu/configarch以及uClinux-dist/Iinux2.4.x/MakeFile下的$CR0SS_C0MPILE變量arm-1inux

7、-改為arm-elf-$makemenuconfig$makedep$make11等待編譯完成12.編譯完成生成uClinux-dist/|_romfs/_images/romfsimgimagebin|_linux-24.x/linuxIn-simages/romfsimgboot,rom(鏈接匸丿j戈bootrom文彳牛)七、啟動(dòng)uc1inux內(nèi)核$cdusr/src/uClinux-dist新建skyeye仿真配置文件skyeye.confcpu:arm7tdmimach:at91mem_bank:map=Mztype=RW,addr=0 x00000000,size=0 x000040

8、00mem_bank:map=Mztype=RW,addr=0 x01000000,size=0 x00400000mem_bank:map=M,type=Rzaddr=0 x01400000,size=0 x00400000zfile=images/romfs.imgmem_bank:map=Mztype=RW,addr=0 x02000000,size=0 x00400000mem_bank:map=Mztype=RW,addr=0 x02400000,size=0 x00008000mem_bank:map=Mztype=RW,addr=0 x04000000,size=0 x00400

9、000mem_bank:map=I,type=RW,addr=OxfOOOOOOOzsize=0 x10000000$skyeye一e1inux24.x/linux見到出現(xiàn)welcomtouClinux”圖標(biāo),uClinux己經(jīng)啟動(dòng)$Ctrl+c可以退出uClinux回到linux虛擬系統(tǒng)八、添加用戶應(yīng)用程序重啟linux虛擬系統(tǒng),并以root登陸$cdusr/src/uClinux-dist$mkdirhello$cdhello創(chuàng)建一個(gè)C文件hello,ctiincludestdio.hintmain(void)inti;for(i=0;i/./hello執(zhí)行hello,o文件顯不:i=0H

10、ello,embeddedlinux!i=1Hello,embeddedlinux!i=2Hello,embeddedlinux!i=3Hello,embeddedlinux!i=4Hello,embeddedlinux!i=5Hello,embeddedlinux!用戶應(yīng)用程序添加成功。九、總述uClinux的移植簡單來說就是在linux環(huán)境下“復(fù)制”一個(gè)微型的包含有用戶應(yīng)用程序的linux,以供在單片機(jī)下運(yùn)行。方法是復(fù)制一個(gè)uClinux源碼作為基礎(chǔ)配置和編譯一個(gè)符合卜|己硬件系統(tǒng)的uClinux內(nèi)核,生成的boot,rom與linux有同樣的目錄結(jié)構(gòu)編制和編譯自己的應(yīng)用程序,生成文件將*

11、.o文件復(fù)制到uClinux/romfs/bin下,重新編譯生成boot,rom,這個(gè)boot,rom就是包含有用戶應(yīng)用程序的uClinux十、附錄VMware版本:VMware-wodcstation-552-29772虛擬光驅(qū)版本:DaemonToolsLitev.rarlinux版本:RedhatLinux9ODisklSOuClinux版本:uClinux-dist-20030909.tararm編譯工具:arm-eIf-tools-20040427.shskyeye版本:skyeye-1.2.4_rel.tar.gz7、一個(gè)應(yīng)用程序的開發(fā)實(shí)例下而介紹的程序主耍是完成一個(gè)網(wǎng)絡(luò)應(yīng)用,網(wǎng)絡(luò)

12、應(yīng)用的標(biāo)準(zhǔn)模型是客戶機(jī)-服務(wù)器模型,它的主要執(zhí)行過程如下:系統(tǒng)啟動(dòng)服務(wù)器執(zhí)行。服務(wù)器完成一些初始化操作,然后進(jìn)入睡眠狀態(tài),等待客戸機(jī)請(qǐng)求;在網(wǎng)絡(luò)的某臺(tái)機(jī)器上,用戶執(zhí)彳亍客戶機(jī)程序;客戶機(jī)進(jìn)程與服務(wù)器進(jìn)程建立一條連接;連接建立之后,客戶機(jī)通過網(wǎng)絡(luò)向服務(wù)器發(fā)出請(qǐng)求,請(qǐng)求某種服務(wù);服務(wù)器接收到客戶機(jī)請(qǐng)求后,根據(jù)客戶機(jī)請(qǐng)求的內(nèi)容進(jìn)彳亍相應(yīng)的處理,然后將處理結(jié)果返冋;服務(wù)器斷開與客戶機(jī)的連接,繼續(xù)睡眠,等待其他客戶機(jī)的請(qǐng)求;Linux系統(tǒng)中的很多服務(wù)器是在系統(tǒng)初啟時(shí)啟動(dòng)的,如時(shí)間服務(wù)器、打印服務(wù)器、文件傳輸服務(wù)器和電子郵件服務(wù)器等。大多數(shù)時(shí)間這些服務(wù)器進(jìn)程處丁睡眠狀態(tài),等待客戶機(jī)的請(qǐng)求。下面這兩個(gè)客戶機(jī)

13、-服務(wù)器程序比較簡單,主要是對(duì)網(wǎng)絡(luò)客戸機(jī)-服務(wù)器模型的實(shí)際運(yùn)行有大致印象。這個(gè)客戶機(jī)-服務(wù)器的操作過程非常簡單:客戸機(jī)與服務(wù)器建立連接之后,服務(wù)器向客戸機(jī)返回一條消息。服務(wù)器程序的源代碼如下:/*tcpserver.c*/#inelude#inelude#ineludevermo.h#incltidevstring.h#incltidevnetdb.h#indude#incltidevnetinet/in.h#indude#defineWAITBUF10intmain(intargczchar*argv)intsockfd;new_fd;structsockaddrserver.addr;st

14、ructsockaddrclient_addr;unsignedintsin_sizefportnurrber;charheHo=nHello!Socketcommunicationworld!VV;if(argc!=2)fprintf(stderr,”Usage:%sportnumberaViH/argv0);exit(l);if(portnumber=atoi(argvl)0)fprintf(stderr,Usage:%sportnumbererrorap;argv0);if(sockfd=socket(AF_INETrSOCK.SIREAM,0)=-1)fprintf(stderr,So

15、cketerror:%syiaH/strerror(errno);exit;bzero(&server_addrsizeof(structsocl;addrn);server_addr.sin_famly=AFJNET;server.addr.sin_addrs_addr=htonl(INADDR_ANY);server.addr.sireport=portnumber;if(bind(sockfd;(structsodcaddr*)(&server_addr)/sizeof(structsockaddr)=-1)fprintf(stderr,Binderror:%sga;strerror(e

16、rrno);exit;if(listen(sockfd;WAITBUF)=-1)fprintf(stderr,Listenerror:%sna;strerror(ermo);exit;while(l)sin_size=sizeof(structsockaddrn);if(new_fd=accept(sockfd/(structsockaddr*)(&client_addr),&sin_size)=-1)fprintf(stderr#Accepterror:%sn8;strerror(errno);exit(l);fprintf(stderr,Servergetconnectionfrom%sn

17、/inet_ntoa(client_addr.sin_addr);訐(send(new_fdzhello,strlen(hello),0)=-1)fprintf(stderr,WriteError:%sn;strerror(ermo);exit(l);close(new_fd);close(sockfd);ex)t(0);給服務(wù)器程序?qū)懸粋€(gè)Makefile文件,如下:#startCC=arm-elf-gccCFLAGS=-D_PIC_-fpic-msingle-pic-base-02pipeWall-gLDFLAGS=Wlrdf2fltLIBS=OBJS=tcpserver.oail:tqDs

18、ervertcpser:$(OBJS)$(CC)$(CFLAGS)$(LDFLAGS)-otcpserver$(OBJS)$(LIBS)dean:rm-rf*.o*.elf*.gdbhello#end客戶機(jī)程序的源代碼如下:/*tcpclient.c*/#inelude#indude#ineludevermo.h#indudevstring.h#incltidevnetdb.h#indude#incltidevnetinet/in.h#indude#defineRECVBUFSIZE1024intmain(intargczchar*argv)intsockfd;charbufferRECVBU

19、FSIZE;structsockaddrserver.addr;intportnumberznbytes;if(argc!=3)fprintf(stderr,HUsage:%shostnameportnumberanHzargv0);exit(l);if(portnumber=atoi(argv2)0)fprintf(stderr/Usage:%shostnameportnumberaVijargv0);exit(l);if(sockfd=socket(AF_INETfSOCK.STREAM,0)=-1)fprintf(stderr,SocketError:%san:strerror(errn

20、o);exit(l);bzero(&server_addrfsizeof(server_addr);server.addr.sin_famly=AFJNET;server.addr.sireport=portnumber;server.addr.sin_addrs_addr=inet_addr(argvl);if(connect(sodcfdr(structsockaddr*)(&server_addr)zsizeof(structsockaddr)=-1)fprintf(stderr,”ConnectError:%san/strerror(errno);exit(l);if(nbytes=r

21、ecv(sockfd,buffer,RECVBLFSIZE,0)=-1)fprintf(stderr,ReadError:%snzstrerror(errno);exit(l);buffernbytes=*0;printf(Ihavereceived:%sr;buffer);close(sockfd);ex)t(0);最后,sliyeye-binary-testutils-1.1.0.tar.bz2/at9lx40/uclinuxl包!I!提取boot.rom,用步驟6中的方法,把tepserver程序放在boot.rom的bin目錄中.在II標(biāo)板上運(yùn)行tepserver2000,在主機(jī)上運(yùn)I

22、j./tcpclient10.0.0.22000,看看結(jié)果!9、加入網(wǎng)絡(luò)功能a.fflroot用戶進(jìn)行操作。b你要看你的/lib/modules/uname-rkernel/drivers/net/1錄里有沒仃tun.o如果沒有的話你就需要編譯你的linux內(nèi)核來獲得tun.o了。c.運(yùn)行tun設(shè)備模塊:#insmod/lib/modules/uname-rkernel/drivers/net/tun.o如果你沒有該設(shè)備,那你就要用下面的命令來創(chuàng)建它:#mkdir/dev/net#mknod/dev/net/tunc10200(2)運(yùn)vnet(虛擬集線器)設(shè)備模塊(這一步不是必需的):獲取vn

23、et的源碼,然后創(chuàng)建設(shè)備:#mknod/dev/net/vnetc10201#chmod666/dev/net/vnet創(chuàng)建vnet.o#makevnet.o插入模塊vnet.o#insmodvnet.o進(jìn)入test目錄,用test來測度vnet.o#cdtestmake#./testvnetld配直skyeye.conf文件cpu:arm7tdmimach:at91mem_bank:map=Mztype=RWzaddr=0 x00000000.size=0 x00004000mem_bank:map=Mztype=RWzaddr=0 x01000000.size=0 x00400000mem_bank:map=Mztype=Rzaddr=0 x01400000.size=0 x00400000ffile=images/romfs.imgmem_bank:map=Mztype=RWzaddr=OxO2OOOOOOzsize=0 x00400000mem_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論