北京郵電大學(xué)操作系統(tǒng)綜合課程設(shè)計_第1頁
北京郵電大學(xué)操作系統(tǒng)綜合課程設(shè)計_第2頁
北京郵電大學(xué)操作系統(tǒng)綜合課程設(shè)計_第3頁
北京郵電大學(xué)操作系統(tǒng)綜合課程設(shè)計_第4頁
北京郵電大學(xué)操作系統(tǒng)綜合課程設(shè)計_第5頁
已閱讀5頁,還剩106頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 - 111 - 北京郵電大學(xué)課程設(shè)計報告目 錄 TOC o 1-3 h z u HYPERLINK l _Toc373404461 實驗一 Linux啟動優(yōu)化 PAGEREF _Toc373404461 h 4 HYPERLINK l _Toc373404462 一 實驗?zāi)康?PAGEREF _Toc373404462 h 4 HYPERLINK l _Toc373404463 二 實驗內(nèi)容與步驟 PAGEREF _Toc373404463 h 4 HYPERLINK l _Toc373404464 1內(nèi)核態(tài)啟動優(yōu)化 PAGEREF _Toc373404464 h 4 HYPERLINK l

2、 _Toc373404465 2 用戶態(tài)啟動優(yōu)化 PAGEREF _Toc373404465 h 4 HYPERLINK l _Toc373404466 3 測試系統(tǒng)總的啟動時間 PAGEREF _Toc373404466 h 4 HYPERLINK l _Toc373404467 三 實驗原理 PAGEREF _Toc373404467 h 4 HYPERLINK l _Toc373404468 四 實驗結(jié)果及分析 PAGEREF _Toc373404468 h 4 HYPERLINK l _Toc373404469 1 內(nèi)核態(tài)啟動優(yōu)化 PAGEREF _Toc373404469 h 4 H

3、YPERLINK l _Toc373404470 2開機畫面 PAGEREF _Toc373404470 h 8 HYPERLINK l _Toc373404471 1) 開機畫面字符隱藏技術(shù) PAGEREF _Toc373404471 h 8 HYPERLINK l _Toc373404472 2) 開機畫面調(diào)出 PAGEREF _Toc373404472 h 8 HYPERLINK l _Toc373404473 3)內(nèi)核態(tài)開機畫面更改 PAGEREF _Toc373404473 h 9 HYPERLINK l _Toc373404474 4)開機用戶態(tài)界面更改 PAGEREF _Toc3

4、73404474 h 11 HYPERLINK l _Toc373404475 五 實驗總結(jié) PAGEREF _Toc373404475 h 11 HYPERLINK l _Toc373404476 實驗二Linux系統(tǒng)內(nèi)核/系統(tǒng)配置小型化 PAGEREF _Toc373404476 h 12 HYPERLINK l _Toc373404477 一 實驗?zāi)康?PAGEREF _Toc373404477 h 12 HYPERLINK l _Toc373404478 二 實驗內(nèi)容 PAGEREF _Toc373404478 h 12 HYPERLINK l _Toc373404479 三 實驗設(shè)計

5、原理 PAGEREF _Toc373404479 h 12 HYPERLINK l _Toc373404480 四 實驗步驟 PAGEREF _Toc373404480 h 12 HYPERLINK l _Toc373404481 Code maturity level options(代碼成熟度選項) PAGEREF _Toc373404481 h 13 HYPERLINK l _Toc373404482 Processor type and features(處理器類型和特色) PAGEREF _Toc373404482 h 14 HYPERLINK l _Toc373404483 Loa

6、dable module support(可加載模塊支持) (1)、Enable loadable module support (CONFIG_MODULES) Y/n/? 選擇內(nèi)核是否支持加載模塊。 PAGEREF _Toc373404483 h 15 HYPERLINK l _Toc373404484 General setup(一般設(shè)置) PAGEREF _Toc373404484 h 16 HYPERLINK l _Toc373404485 Plug and Play configuration(即插即用設(shè)備支持) PAGEREF _Toc373404485 h 17 HYPERLI

7、NK l _Toc373404486 Block devices(塊設(shè)備) PAGEREF _Toc373404486 h 18 HYPERLINK l _Toc373404487 Networking options(網(wǎng)絡(luò)選項) PAGEREF _Toc373404487 h 18 HYPERLINK l _Toc373404488 SCSI support(SCSI支持) PAGEREF _Toc373404488 h 19 HYPERLINK l _Toc373404489 Network device support(網(wǎng)絡(luò)設(shè)備支持) PAGEREF _Toc373404489 h 19

8、 HYPERLINK l _Toc373404490 Character devices(字符設(shè)備) PAGEREF _Toc373404490 h 20 HYPERLINK l _Toc373404491 Filesystems(文件系統(tǒng)) PAGEREF _Toc373404491 h 21 HYPERLINK l _Toc373404492 Console drivers(控制臺驅(qū)動) PAGEREF _Toc373404492 h 22 HYPERLINK l _Toc373404493 ATA/IDE/MFM/RLL support PAGEREF _Toc373404493 h 2

9、3 HYPERLINK l _Toc373404494 Sound(聲音) PAGEREF _Toc373404494 h 23 HYPERLINK l _Toc373404495 五實驗結(jié)果及分析 PAGEREF _Toc373404495 h 23 HYPERLINK l _Toc373404496 六 實驗總結(jié) PAGEREF _Toc373404496 h 25 HYPERLINK l _Toc373404497 實驗三 ARM/ucLinux-SkyEye的安裝、配置與集成 PAGEREF _Toc373404497 h 26 HYPERLINK l _Toc373404498 一

10、實驗?zāi)康?PAGEREF _Toc373404498 h 26 HYPERLINK l _Toc373404499 二 實驗環(huán)境 PAGEREF _Toc373404499 h 26 HYPERLINK l _Toc373404500 三 實驗內(nèi)容與步驟 PAGEREF _Toc373404500 h 26 HYPERLINK l _Toc373404501 1 將下載的4個數(shù)據(jù)包安裝并進(jìn)入目錄home/buptlynn/env PAGEREF _Toc373404501 h 26 HYPERLINK l _Toc373404502 2 安裝skyeye PAGEREF _Toc3734045

11、02 h 28 HYPERLINK l _Toc373404503 3 安裝arm-elf-tools 交叉編譯器 (用于編譯ucLinuxSkyEye) PAGEREF _Toc373404503 h 32 HYPERLINK l _Toc373404504 4.安裝uclinux PAGEREF _Toc373404504 h 32 HYPERLINK l _Toc373404505 5.配置 PAGEREF _Toc373404505 h 38 HYPERLINK l _Toc373404506 6.運行 PAGEREF _Toc373404506 h 39 HYPERLINK l _T

12、oc373404507 7測試 PAGEREF _Toc373404507 h 41 HYPERLINK l _Toc373404508 8運行五條常用指令 PAGEREF _Toc373404508 h 42 HYPERLINK l _Toc373404509 四 實驗總結(jié) PAGEREF _Toc373404509 h 43 HYPERLINK l _Toc373404510 實驗四ARM/ucLinux-SkyEye下BusyBox集成Shell小型化 PAGEREF _Toc373404510 h 44 HYPERLINK l _Toc373404511 一 實驗?zāi)康?PAGEREF

13、_Toc373404511 h 44 HYPERLINK l _Toc373404512 二 實驗環(huán)境 PAGEREF _Toc373404512 h 44 HYPERLINK l _Toc373404513 三 實驗內(nèi)容與步驟 PAGEREF _Toc373404513 h 44 HYPERLINK l _Toc373404514 四 實驗總結(jié) PAGEREF _Toc373404514 h 48 HYPERLINK l _Toc373404515 實驗五 Linux 環(huán)境下的Ramdisk技術(shù)及其實驗 PAGEREF _Toc373404515 h 49 HYPERLINK l _Toc3

14、73404516 一 實驗?zāi)康?PAGEREF _Toc373404516 h 49 HYPERLINK l _Toc373404517 二 實驗環(huán)境 PAGEREF _Toc373404517 h 49 HYPERLINK l _Toc373404518 三 實驗內(nèi)容與步驟 PAGEREF _Toc373404518 h 49 HYPERLINK l _Toc373404519 四 實驗總結(jié) PAGEREF _Toc373404519 h 55 HYPERLINK l _Toc373404520 五 問題和解決方法 PAGEREF _Toc373404520 h 55 HYPERLINK l

15、 _Toc373404521 六 附錄 PAGEREF _Toc373404521 h 55 HYPERLINK l _Toc373404522 實驗六 Linux 環(huán)境下嵌入式數(shù)據(jù)庫mSQL的集成 PAGEREF _Toc373404522 h 57 HYPERLINK l _Toc373404523 一 實驗?zāi)康?PAGEREF _Toc373404523 h 57 HYPERLINK l _Toc373404524 二 實驗環(huán)境 PAGEREF _Toc373404524 h 57 HYPERLINK l _Toc373404525 三 實驗內(nèi)容與步驟 PAGEREF _Toc37340

16、4525 h 57 HYPERLINK l _Toc373404526 四 實驗總結(jié) PAGEREF _Toc373404526 h 62 HYPERLINK l _Toc373404527 五 問題和解決方法 PAGEREF _Toc373404527 h 62 HYPERLINK l _Toc373404528 六 附錄 PAGEREF _Toc373404528 h 63實驗一 Linux啟動優(yōu)化一 實驗?zāi)康腖inux 系統(tǒng)從啟動到登錄 shell 界面需要花費較長時間,在普通微機上的啟動過程需要十幾秒或更長。如果要啟動 X 界面,那花費的時間就更多了。啟動時間過長對嵌入式系統(tǒng)而言,如信

17、息家電產(chǎn)品(機頂盒),是無法接受的。Linux 系統(tǒng)的啟動由內(nèi)核態(tài)下的啟動和用戶態(tài)下的啟動組成。利用本實驗中采取的多種方法,可以簡化 Linux 系統(tǒng)啟動過程,提高 Linux 系統(tǒng)啟動速度,適應(yīng)嵌入式系統(tǒng)快速啟動和實時應(yīng)用的需要。二 實驗內(nèi)容與步驟實驗系統(tǒng):Red Hat Enterprise Linux 9(VMware 9.0 模擬/Linux 內(nèi)核為 2.4.20-8)1內(nèi)核態(tài)啟動優(yōu)化1) 測量幾個較大代碼模塊的啟動時間2) 更改 MAX_HWIFS ,減小檢測IDE過程的啟動時間2 用戶態(tài)啟動優(yōu)化1) 開機畫面字符隱藏技術(shù)2) 開機畫面隱藏/調(diào)出3) 開機畫面更換3 測試系統(tǒng)總的啟動

18、時間三 實驗原理根據(jù) Linux 源代碼,從根本上分析 Linux 啟動原理四 實驗結(jié)果及分析1 內(nèi)核態(tài)啟動優(yōu)化在 Redhat 9 中, 安裝內(nèi)核開發(fā)包, 能得到 Linux 源代碼。 位于/usr/src/linux-2.4目錄下。修改linux/init/main.c,在所有的需要檢測的代碼段添加條件編譯TIME_TEST常量。測試的代碼段包括console_init(), vfs_caches_init,和pci_init()等。改動完成之后,編譯內(nèi)核清除源碼樹:make mrproper生成現(xiàn)有.config文件:make oldconfig配置內(nèi)核:make menuconfig生

19、成依賴關(guān)系:make dep編譯內(nèi)核:make bzImage編譯模塊:make modules安裝模塊:make modules_install安裝內(nèi)核:make install9, 重起:init 6重啟系統(tǒng)之后,選擇做好的系統(tǒng),應(yīng)為上面2.4.20-8custom那個。啟動結(jié)束之后,用dmesg| grep “second”得到所有設(shè)定的打印位置的記錄5處較長代碼模塊的時間打印如下:通過時間檢測,我們發(fā)現(xiàn)了最耗時間的是_initcall_ide_init這個函數(shù),如下圖所示?;ê芏鄷r間在ide接口檢測上,代碼如下,既然知道檢測時間比較長,所以,改變后的ide數(shù)量 為3時間改變尺度對比2開

20、機畫面1) 開機畫面字符隱藏技術(shù)在/etc/grub.conf 中,在 kernel 一行后添加 console=/dev/tty2 CONSOLE=/dev/ty2 后,重啟即能隱藏內(nèi)核態(tài)的輸出信息。通過ALT+F2就可以調(diào)出內(nèi)核態(tài)的輸出信息。隱藏之后的開機界面Alt+F2(切換到tty2終端)可以調(diào)出打印信息2) 開機畫面調(diào)出默認(rèn)情況下,開機畫面是系統(tǒng)內(nèi)核態(tài)打印輸出(如上圖),調(diào)出小企鵝通過在系統(tǒng)的啟動參數(shù)后面加vga=0 x301可以吧小企鵝調(diào)出來.3)內(nèi)核態(tài)開機畫面更改改變/drivers/video/fbcon.c中宏定義的logo大小最終內(nèi)核態(tài)開機界面為4)開機用戶態(tài)界面更改五 實

21、驗總結(jié)通過學(xué)習(xí)內(nèi)核源碼,充分體驗了內(nèi)核的代碼量, 分析了內(nèi)核的代碼,很受震撼,同時也學(xué)到了不少東西.實驗二Linux系統(tǒng)內(nèi)核/系統(tǒng)配置小型化一 實驗?zāi)康?個Linux系統(tǒng)發(fā)行版本可多達(dá)上百兆,功能眾多,支持眾多硬件設(shè)施。但在一個實際Linux應(yīng)用系統(tǒng)中,并非用到Linux系統(tǒng)發(fā)行版本所提供的全部功能。所以,可以針對實際計算機系統(tǒng)的硬件配置及其應(yīng)用需求,對Linux系統(tǒng)內(nèi)核/系統(tǒng)進(jìn)行合理的選擇和裁減,得到一個更接近實際需要的、無冗余、啟動和運行更為高效的Linux系統(tǒng)。 例如,嵌入式系統(tǒng)存儲容量有限、支持的硬件外設(shè)類型也有限,因此可通過內(nèi)核/系統(tǒng)配置與裁減,選擇嵌入式應(yīng)用系統(tǒng)所必需的一些內(nèi)核/系

22、統(tǒng)功能(如設(shè)備驅(qū)動程序)進(jìn)行配置。由此得到一個滿足系統(tǒng)功能、體積更小的、可放入嵌入式系統(tǒng)的容量較小Flash中的Linux系統(tǒng)內(nèi)核。 本實驗要求學(xué)生針對PC機上的Linux系統(tǒng)發(fā)行版本,利用make menuconfig方法,在對硬件深入了解的基礎(chǔ)上,選擇相應(yīng)的設(shè)備驅(qū)動程序和與主機CPU相關(guān)的Linux部分,進(jìn)行Linux系統(tǒng)內(nèi)核/系統(tǒng)配置,掌握Linux系統(tǒng)內(nèi)核/系統(tǒng)的配置方法。二 實驗內(nèi)容利用makemenuconfig方法,將不必要的內(nèi)核功能去掉,只留下最基本的一些功能模塊,如CPU為i586、IDE 設(shè)備驅(qū)動、TCP/IP協(xié)議棧、ne2000網(wǎng)卡驅(qū)動、Minix文件系統(tǒng)等,完成內(nèi)核配置

23、工作。比較配置前后Linux內(nèi)核/系統(tǒng)的體積大小、功能差異,指明配置過程中各配置選項的作用三 實驗設(shè)計原理根據(jù)make menuconfig中的菜單項配置Linux內(nèi)核四 實驗步驟開始時使用make bzImage命令查看內(nèi)核大小使用make menuconfig配置內(nèi)核,為了最小化內(nèi)核,我們將一些不必要的功能都去掉。各功能簡介:Code maturity level options(代碼成熟度選項)Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL) N/y/? 如果用戶想要使用還處于測試階段的

24、代碼或驅(qū)動,可以選擇“y”。如果想編譯出一個穩(wěn)定的內(nèi)核,則要選擇“n”。這里我們選擇n,使用穩(wěn)定成熟的代碼。 Processor type and features(處理器類型和特色)(1)、Processor family (386, 486/Cx486, 586/K5/5x86/6x86, Pentium/K6/TSC, PPro/6x86MX) PPro/6x86MX 選擇處理器類型,缺省為Ppro/6x86MX。這里我們選擇386。(2)、Maximum Physical Memory (4GB, 16GB)內(nèi)核支持的最大內(nèi)存數(shù),缺省為4G。(3)、Math emulation (CO

25、NFIG_MATH_EMULATION) N/y/? 協(xié)處理器仿真,缺省為不仿真。不選。(4)、MTRR (Memory Type Range Register) support (CONFIG_MTRR) N/y/?選擇該選項,系統(tǒng)將生成/proc/mtrr文件對MTRR進(jìn)行管理,供X server使用。不選。(5)、Symmetric multi-processing support (CONFIG_SMP) Y/n/? 選擇內(nèi)核將支持對稱多處理器。最小化系統(tǒng)中,使用的是 的處理器,最大內(nèi)存 。只選擇(1)(2)兩廂,其他高級特性不選擇。Loadable module support(可加

26、載模塊支持)(1)、Enable loadable module support (CONFIG_MODULES) Y/n/? 選擇內(nèi)核是否支持加載模塊。(2)、Kernel module loader (CONFIG_KMOD) N/y/? 內(nèi)核將自動加載那些可加載模塊,否則需要用戶手工加載。為了簡化系統(tǒng),在這個實驗里不選擇可加載內(nèi)核模塊的支持,選擇N.General setup(一般設(shè)置)(1)、Networking support (CONFIG_NET) Y/n/? 該選項設(shè)置是否在內(nèi)核中提供網(wǎng)絡(luò)支持。(2)、PCI support (CONFIG_PCI) Y/n/? 該選項設(shè)置是否

27、在內(nèi)核中提供PCI支持。(3)、PCI access mode (BIOS, Direct, Any) Any 該選項設(shè)置Linux探測PCI設(shè)備的方式。選擇“BIOS”,Linux將使用BIOS;選擇“Direct”,Linux將不通過BIOS;選擇“Any”,Linux將直接探測PCI設(shè)備,如果失敗,再使用BIOS。(4)Parallel port support (CONFIG_PARPORT) N/y/m/?是否支持平行口。Plug and Play configuration(即插即用設(shè)備支持)(1)、Plug and Play support (CONFIG_PNP) Y/m/n/

28、?內(nèi)核將自動配置即插即用設(shè)備。(2)、ISA Plug and Play support (CONFIG_ISAPNP) Y/m/n/?內(nèi)核將自動配置基于ISA總線的即插即用設(shè)備。我們不需要配置,全不選。Block devices(塊設(shè)備)(1)、Normal PC floppy disk support (CONFIG_BLK_DEV_FD) Y/m/n/?內(nèi)核是否提供對軟盤的支持。(2)Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support (CONFIG_BLK_DEV_IDE) Y/m/n/?選擇內(nèi)核是否提供對增強IDE硬盤、CDROM和

29、磁帶機的支持。Networking options(網(wǎng)絡(luò)選項)(1)、Packet socket (CONFIG_PACKET) Y/m/n/? 選擇是否使一些應(yīng)用程序使用Packet協(xié)議直接同網(wǎng)絡(luò)設(shè)備通訊,而不通過內(nèi)核中的其它中介協(xié)議。(2)、Network firewalls (CONFIG_FIREWALL) N/y/? 選擇內(nèi)核是否將支持防火墻。(3)、TCP/IP networking (CONFIG_INET) Y/n/? 內(nèi)核是否支持TCP/IP協(xié)議。(4)The IPX protocol (CONFIG_IPX) N/y/m/? 選擇內(nèi)核是否支持IPX協(xié)議。(5)、Applet

30、alk DDP (CONFIG_ATALK) N/y/m/? 選擇內(nèi)核是否支持Appletalk DDP協(xié)議。SCSI support(SCSI支持)如果用戶要使用SCSI設(shè)備,可配置相應(yīng)選項。這里我們不需要。Network device support(網(wǎng)絡(luò)設(shè)備支持)Network device support (CONFIG_NETDEVICES) Y/n/? 選擇內(nèi)核是否提供對網(wǎng)絡(luò)驅(qū)動程序的支持。在Ethernet (10 or 100Mbit)(10M或100M以太網(wǎng))設(shè)置中,系統(tǒng)提供了許多網(wǎng)卡驅(qū)動程序,我們只要選擇自己的網(wǎng)卡驅(qū)動就可以了。Character devices(字符設(shè)備)

31、(1)、Virtual terminal (CONFIG_VT) Y/n/? 選擇內(nèi)核是否支持虛擬終端。(2)、Support for console on virtual terminal (CONFIG_VT_CONSOLE) Y/n/?選擇內(nèi)核是否將一個虛擬終端用作系統(tǒng)控制臺。(3)、Standard/generic (dumb) serial support (CONFIG_SERIAL) Y/m/n/?選擇內(nèi)核是否支持串行口。(4)、Support for console on serial port (CONFIG_SERIAL_CONSOLE) N/y/?選擇內(nèi)核是否將一個串行口

32、用作系統(tǒng)控制臺。這里我們需要選擇(1)和(2)。Filesystems(文件系統(tǒng))(1)、Quota support (CONFIG_QUOTA) N/y/? 選擇內(nèi)核是否支持磁盤限額。(2)、Kernel automounter support (CONFIG_AUTOFS_FS) Y/m/n/? 選擇內(nèi)核是否提供對automounter的支持,使系統(tǒng)在啟動時自動 mount遠(yuǎn)程文件系統(tǒng)。(3)、DOS FAT fs support (CONFIG_FAT_FS) N/y/m/? 選擇內(nèi)核是否支持DOS FAT文件系統(tǒng)。(4)、ISO 9660 CDROM filesystem suppor

33、t (CONFIG_ISO9660_FS) Y/m/n/?選擇內(nèi)核是否支持ISO 9660 CDROM文件系統(tǒng)。(5)、NTFS filesystem support (read only) (CONFIG_NTFS_FS) N/y/m/?選擇用戶是否以只讀方式訪問NTFS文件系統(tǒng)。(6)、/proc filesystem support (CONFIG_PROC_FS) Y/n/? /proc是存放Linux系統(tǒng)運行狀態(tài)的虛擬文件系統(tǒng),該項必須選擇“y”。(7)、Second extended fs support (CONFIG_EXT2_FS) Y/m/n/? EXT2是Linux的標(biāo)準(zhǔn)

34、文件系統(tǒng),該項也必須選擇“y”。Console drivers(控制臺驅(qū)動)VGA text console (CONFIG_VGA_CONSOLE) Y/n/? 選擇用戶是否在標(biāo)準(zhǔn)的VGA顯示方式下使用Linux了。ATA/IDE/MFM/RLL support 這個需要選上,IDE設(shè)備驅(qū)動還是要有的,除非你不接硬盤,把ATA/IDE/MFM/RLL support選上后,IDE,ATA and ATAP1 Block devices就可以進(jìn)入了.。Sound(聲音)Sound card support (CONFIG_SOUND) N/y/m/? 選擇內(nèi)核是否提供對聲卡的支持。我們不需要選

35、擇。還有Memory Technology Device Support,Parallel port support,Multiple device support,Telephy support,F(xiàn)usion MPT device support,IEEE 1394(FireWire) support,I2O dexice support ,Amateur Radio support業(yè)余無線電支持、IrDA(infrafed) support紅外線支持、ISDN subsystem 電話支持、Old CD-ROM drivers老的CD-ROM設(shè)備支持、Input core support,

36、USB support、Bluetooth support、kernel hacking都不必要。五實驗結(jié)果及分析查看文件中的配置參數(shù):CONFIG_M386=yCONFIG_X86_LI_CACHE_SHIFT=4CONFIG_RWSEM_GENERIC_SPINLOCK=yCONFIG_X86_PPRO_FENCE=yCONFIG_3GB=yCONFIG_NET=yCONFIG_PCI=yCONFIG_KCORE_ELF=yCONFIG_BINFMT_ELF=yCONFIG_BLK_DEV_LOOP=yCONFIG_BLK_DEV_RAM=yCONFIG_BLK_DEV_RAM_SIZE=

37、4096CONFIG_BLK_DEV_INITRD=yCONFIG_PACKET=yCONFIG_PACKET_MMAP=yCONFIG_INET=yCONFIG_IDE=yCONFIG_BLK_DEV_IDE=yCONFIG_BLK_DEV_IDECD=yCONFIG_NETDEVICES=yCONFIG_NET_ETHERNET=yCONFIG_NET_PCI=yCONFIG_NE2K_PCI=yCONFIG_VT=yCONFIG_VT_CONSOLE=yCONFIG_PROC_FS=yCONSOLE_EXT2_FS=yCONFIG_VGA_CONSOLE=y使用命令:make dep 生

38、成依賴關(guān)系;make bzImage 生成系統(tǒng)鏡像。查看內(nèi)核:發(fā)現(xiàn)內(nèi)核明顯減小了。實驗三 ARM/ucLinux-SkyEye的安裝、配置與集成一 實驗?zāi)康陌惭bSkyEye嵌入式硬件模擬器,配置嵌入式操作系統(tǒng)ucLinux,建立基于SkyEye 的ARM/ucLinux嵌入式系統(tǒng)平臺。二 實驗環(huán)境硬件:Intel i586 PC機 軟件:Red Hat Linux7.1 (Linux內(nèi)核版本為2.4.2) 或更高版本,SkyEye,ucLinux 或:Windows操作系統(tǒng),Cygwin,SkyEye,ucLinux 注: SkyEye和ucLinux可從“光盤-源碼開放的嵌入式系統(tǒng)軟件分析與

39、實踐基于SkyEye和ARM開發(fā)平臺”中獲取。 windows下的Linux模擬軟件Cygwin可以從其網(wǎng)站http:/上下載并安裝最新版本。 三 實驗內(nèi)容與步驟1 將下載的4個數(shù)據(jù)包安裝并進(jìn)入目錄home/buptlynn/env 首先,Red Hat 中如果不下軟件不能進(jìn)行主機和虛擬機之間的文件共享和拖動,所以我們就secureCRT軟件進(jìn)行文件傳輸2 安裝skyeye2.1 解壓skyeye:tar -jxvf skyeye-0.8.6.tar.bz2 解壓的過程中由于文件過多過快,所以只展現(xiàn)最終的解壓效果:2.2 進(jìn)入skyeye: cd skyeye 2.3 預(yù)處理: ./confi

40、gure -target=arm-elf -prefix=/usr/local 2.4 編譯安裝: make;make install 3 安裝arm-elf-tools 交叉編譯器 (用于編譯ucLinuxSkyEye) 3.1 如果arm-elf-tools-20030314.sh沒有執(zhí)行權(quán)限,則增加執(zhí)行權(quán)限;3.2 安裝: /arm-elf-tools-20030314.sh 4.安裝uclinux4.1 解壓: tar -zxvf uClinux-dist-20030522.tar.gz 解壓后的結(jié)果:Skyeye和uClinux-dist兩個文件就都解壓好了。4.2進(jìn)入解壓出的目錄:

41、 cd uClinux-dist 4.3 執(zhí)行:make menuconfig 4.4 選擇模擬平臺: Target Platform Selection-Vendor/Product-GDB/ARMulator,需要選擇Customize Kernel Settings; 4.5 退出,保存; 4.6 繼續(xù)配置uclinux以支持網(wǎng)絡(luò): Network device support-Ethernet (10 or 100Mbit): SkyEye ne2k ethernet support(for ARMUlator); 4.7 退出,保存; 4.8 編譯生成:make dep;make 編

42、譯成功。5.配置5.1 在工作目錄(/ivy/uClinux-dist)下建立專門用于基于AT91X40開發(fā)板的SkyEye硬件配置文件skyeye.conf: 5.2 建立文件系統(tǒng)的鏈接,需要在目錄/ivy/uClinux-dist目錄下執(zhí)行如下命令: #ln -s images/romfs.img boot.rom 6.運行 6.1 在/ivy/uClinux-dist目錄下:/usr/local/bin/skyeye linux-2.4.x/linux 6.2 在skyeye環(huán)境下: tar sim load run 經(jīng)過上面的操作,即可完成7測試在skyeye內(nèi)ping 在skyeye

43、外ping測試成功。8運行五條常用指令ls cd:pwd:date:cat :實驗四ARM/ucLinux-SkyEye下BusyBox集成Shell小型化一 實驗?zāi)康睦斫釲inux根文件系統(tǒng)組織結(jié)構(gòu),將應(yīng)用程序BusyBox放入Linux文件系統(tǒng),在嵌入式ARM/ucLinux-SkyEye環(huán)境下,集成小型化shell BusyBox。二 實驗環(huán)境硬件:Intel i586 PC機 軟件:Red Hat Linux7.1 (Linux內(nèi)核版本為2.4.2) 或更高版本,SkyEye,ucLinux 或:Windows操作系統(tǒng),Cygwin,SkyEye,ucLinux 三 實驗內(nèi)容與步驟參照

44、按照參考文獻(xiàn)2“6.3.3嵌入式應(yīng)用軟件BusyBox”、參考文獻(xiàn)1“6.4.3小型化shell”的內(nèi)容,用BusyBox替換原有的shell。1內(nèi)核歸位Make mrproper2使用make menuconfig設(shè)置內(nèi)核2.1選擇自定義Vendor的設(shè)置2.2配置shell2.3選擇其他的shell,返回上一級2.4配置busybox選擇一些常見的命令選擇要用的shell退出,make dep;make再次進(jìn)入skyeye環(huán)境在skyeye環(huán)境下進(jìn)行加載運行,就進(jìn)入了BusyBox。在新的shell下運行各類shell命令,驗證替換過程的正確性執(zhí)行一系列測試命令發(fā)現(xiàn)命令都可用,實驗成功實驗

45、五 Linux 環(huán)境下的Ramdisk技術(shù)及其實驗一 實驗?zāi)康?ramdisk技術(shù)利用內(nèi)存模擬硬盤空間,將一個內(nèi)存塊作為1個盤分區(qū)使用,可以提高訪問速度。多某些特定的訪問頻率高的文件,將其存儲于ramdisk上,可以提高訪問性能。 在嵌入式系統(tǒng)中,利用ramdisk技術(shù),可以實現(xiàn)應(yīng)用程序預(yù)加載,即初始化完成后立即加載,而不是等到需要使用時才從硬盤讀取,從而提高系統(tǒng)速度:將一些系統(tǒng)啟動后經(jīng)常使用的程序,如瀏覽器、Xwindows,利用ramdisk將整個應(yīng)用程序的可執(zhí)行文件及其庫復(fù)制到內(nèi)存,然后修改可執(zhí)行程序加載的搜索路徑,用ramdisk所在的目錄代替原來的可執(zhí)行文件的目錄路徑。 本實驗通過L

46、inux環(huán)境下ramdisk的配置使用,了解ramdisk的原理和實現(xiàn)機制,驗證其對改善系統(tǒng)運行速度的有效性。二 實驗環(huán)境 硬件:Intel PC機 軟件:Red Hat Linux 9 三 實驗內(nèi)容與步驟按照參考文獻(xiàn)1“6.3 ramdisk技術(shù)”相關(guān)內(nèi)容,1.察看內(nèi)核選項CONFIG_BLK_DEV_RAM,確認(rèn)Linux內(nèi)核支持ramdisk選項 從Red Hat 6.0開始,默認(rèn)安裝本身就有對ramdisk的支持。因此,ramdisk使用非常簡單,所要做的就是格式化一個ramdisk設(shè)備,然后安裝(mount)到相應(yīng)目錄結(jié)構(gòu)下即可。通過命令ls -al /dev/ram可以查看系統(tǒng)可利

47、用的ramdisk設(shè)備的數(shù)目。在設(shè)置以后,這些ramdisk才發(fā)揮作用。 查看可用ramdisk設(shè)備創(chuàng)建/格式化1個ramdisk 設(shè)備,并安裝到文件系統(tǒng)的相應(yīng)目錄結(jié)構(gòu)下創(chuàng)建一個ramdisk的過程為(1) 為ramdisk創(chuàng)建一個目錄/掛載點,如mkdir /mnt/ramdisk0(2) 格式化/創(chuàng)建一個文件系統(tǒng), 如mke2fs /dev/ram0(3) 將這個ramdisk安裝(mount)到/mnt/ramdisk0目錄下 然后就可以將該目錄作為一個分區(qū)使用。格式化ramdisk安裝到RamDisk0上3 運行命令“df k /dev/ram0”,查看可使用的ramdisk空間大小

48、默認(rèn)的ramdisk的大小為4MB=4096K bytes。在創(chuàng)建ramdisk文件系統(tǒng)時可以得到ramdisk大小的信息. 安裝完ramdisk分區(qū)之后, 運行命令 df k /dev/ram0 查看可以真正使用的ramdisk空間大小, 因為創(chuàng)建文件系統(tǒng)時會占用一些空間. 查看真正使用大小4 重新修改ramdisk空間大小/etc/grub.conf修改Ramdisk大小5.將Linux系統(tǒng)內(nèi)常用的目錄,如/tmp目錄安裝為ramdisk,通過打開一個大文件,并對文件進(jìn)行讀、寫操作,觀察驗證系統(tǒng)運行速度是否加快??梢岳孟到y(tǒng)自身的時間測量函數(shù)。(截圖為讀取操作 寫操作見源代碼)要求: 文件

49、100M測試文件大小:給tmp分配ramdisk將/tmp掛載ramdisk 讀文件的腳本程序:打開文件速度 快于 不掛載ramdisk (寫操作和讀操作均為掛載ramdisk要更快)掛載ramdisk不掛載ramdisk 作為ramdisk的1個應(yīng)用,可以將/temp目錄安裝為ramdisk, 若系統(tǒng)中有很多程序使用/temp目錄的話,則可以很明顯地加快系統(tǒng)速度, 但是每次系統(tǒng)重新啟動時, 這些暫時數(shù)據(jù)都會丟失。寫入ramdisk測試比較:文件大小100M寫入磁盤一個文件,測試其時間共計時間1min46s寫入ramdisk時測試時間共計時間1min16s6 編寫一個文件訪問程序,對比將此文件

50、分別存儲于外設(shè)硬盤、ramdisk分區(qū)時,程序的執(zhí)行速度。要求:程序反復(fù)多次讀、寫文件,以便對比不同方式下的訪問時間差異。(截圖為讀取操作進(jìn)行比較 寫操作見源代碼)上:在ramdisk中 下:未使用ramdisk 將文件放在指定位置進(jìn)行訪問所花時間 由圖可見在ramdisk中讀取快(寫操作也為在ramdisk中更快)源代碼讀操作#!/bin/sh Date /root/timeRecWhile read -r lineDo Echo $lineDone /root/timeRec#!/bin/sh Date /root/timeRec2While read -r lineDo Echo $li

51、neDone /root/timeRec2寫操作#!/bin/sh Date /root/timeRecWhile read -r lineDo Echo $line /tmp/file.logDone /tmp/timeRec#!/bin/sh Date /root/timeRec2While read -r lineDo Echo $line /tmp/file.logDone /tmp/timeRec2四 附錄部分代碼見上。掛載到/tmp上進(jìn)行大文件讀寫代碼。讀操作#!/bin/sh Date /root/timeRecWhile read -r lineDo Echo $lineDon

52、e /tmp/timeRec寫操作#!/bin/sh Date /root/timeRecWhile read -r lineDo Echo $line /tmp/file.logDone /tmp/timeRec實驗六 Linux 環(huán)境下嵌入式數(shù)據(jù)庫mSQL的集成一 實驗?zāi)康?實時嵌入式應(yīng)用常常需要數(shù)據(jù)庫的支持。雖然很多情況下可以用文件方式實現(xiàn)部分?jǐn)?shù)據(jù)庫功能,但是當(dāng)應(yīng)用程序需要執(zhí)行一些比較復(fù)雜的數(shù)據(jù)操作時,文件方式就無能為力了,更為合適的方式是采用適合實時嵌入式硬件和操作系統(tǒng)平臺的嵌入式數(shù)據(jù)庫系統(tǒng)。 要求學(xué)生通過本實驗了解嵌入式數(shù)據(jù)庫的基本特點。在Linux環(huán)境下安裝配置嵌入式數(shù)據(jù)庫mSQL

53、,建立簡單的數(shù)據(jù)庫,利用SQL語言和mSQL API實現(xiàn)簡單的數(shù)據(jù)庫訪問功能。二 實驗環(huán)境 硬件:Intel PC機 軟件:Red Hat Linux 9 三 實驗內(nèi)容與步驟按照參考文獻(xiàn)3“第14章嵌入式數(shù)據(jù)庫”相關(guān)內(nèi)容,從mSQL網(wǎng)站.au下載一份以源代碼方式發(fā)布的mSQL軟件包,在Linux環(huán)境下正確安裝以源代碼方式發(fā)布的mSQL的步驟如下:首先,用tar程序解開壓縮包:tar zvxf xxxxxxx.tar.gz (文件名)該命令會在當(dāng)日安目錄下建立一個名為xxxxxxx的文件夾,它用于存放所有的發(fā)布文件,包括源代碼目錄src和文檔目錄doc。接下來的步驟要使用setup程序來設(shè)置后面

54、的編譯選項。./setup該命令會將一些編譯選項保存在src/site.mm文件中,如果用戶需要改變mSQL程序的安裝路徑以及C編譯器的類型,可以修改該文件中的對應(yīng)內(nèi)容。程序的默認(rèn)安裝路徑為/usr/local/msql3.接下來,開始編譯mSQL的源程序,命令如下:make all 如果編譯完成而且正確,則可以開始安裝mSQL,命令如下:make install至此,mSQL即被正確安裝在系統(tǒng)中。src/site.mm文件如下: make all:make install:安裝msql用mSQL自帶工具檢查軟件安裝,并面向具體領(lǐng)域,建立數(shù)據(jù)庫, 如GSM/GPRS移動通信網(wǎng)絡(luò)配置數(shù)據(jù)庫在使用

55、msql之前需要進(jìn)行的操作:進(jìn)入/usr/local/msql3/bin目錄,執(zhí)行:./msql3d &這樣就以后臺方式啟動了mSQL服務(wù)器系統(tǒng),從而開始進(jìn)行具體的數(shù)據(jù)庫創(chuàng)建、查詢等操作。創(chuàng)建數(shù)據(jù)庫和表項添加記錄與查詢語句3利用SQL語句訪問數(shù)據(jù)庫系統(tǒng),驗證所安裝系統(tǒng)的正確性。插入數(shù)據(jù)查詢數(shù)據(jù)刪除數(shù)據(jù):修改數(shù)據(jù)參考示范程序,利用mSQL API,編寫實現(xiàn)數(shù)據(jù)庫訪問功能的C語言程序。查詢search.c:增加add.c:刪除delete.c更改update.c mSQL的API函數(shù)庫名稱為libsql.a,一般位于mSQL安裝路徑下的lib目錄中,庫中的函數(shù)在msql.h中定義。用戶在編寫程序時

56、,應(yīng)包含該頭文件,該文件一般位于mSQL安裝路徑下的inclube目錄,如/usr/local/msql3/include中。另外,在對C程序進(jìn)行編譯鏈接的時候,應(yīng)加上鏈接參數(shù)。附錄資料:不需要的可以自行刪除 百條C語言經(jīng)典源碼程序【百條 C語言 經(jīng)典源碼程序】【程序1】 題目:有1、2、3、4個數(shù)字,能組成多少個互不相同且無重復(fù)數(shù)字的三位數(shù)?都是多少? 1.程序分析:可填在百位、十位、個位的數(shù)字都是1、2、3、4。組成所有的排列后再去 掉不滿足條件的排列。 2.程序源代碼: main() int i,j,k; printf(n); for(i=1;i5;i+)*以下為三重循環(huán)*/ for(j

57、=1;j5;j+) for (k=1;k5;k+) if (i!=k&i!=j&j!=k) /*確保i、j、k三位互不相同*/ printf(%d,%d,%dn,i,j,k); 【程序3】 題目:一個整數(shù),它加上100后是一個完全平方數(shù),再加上168又是一個完全平方數(shù),請問該數(shù)是多少? 1.程序分析:在10萬以內(nèi)判斷,先將該數(shù)加上100后再開方,再將該數(shù)加上268后再開方,如果開方后 的結(jié)果滿足如下條件,即是結(jié)果。請看具體分析: 2.程序源代碼: #include math.h main() long int i,x,y,z; for (i=1;i2)/*如果是閏年且月份大于2,總天數(shù)應(yīng)該加一

58、天*/ sum+; printf(It is the %dth day.,sum); = 【程序5】 題目:輸入三個整數(shù)x,y,z,請把這三個數(shù)由小到大輸出。 1.程序分析:我們想辦法把最小的數(shù)放到x上,先將x與y進(jìn)行比較,如果xy則將x與y的值進(jìn)行交換,然后再用x與z進(jìn)行比較,如果xz則將x與z的值進(jìn)行交換,這樣能使x最小。 2.程序源代碼: main() int x,y,z,t; scanf(%d%d%d,&x,&y,&z); if (xy) t=x;x=y;y=t; /*交換x,y的值*/ if(xz) t=z;z=x;x=t;/*交換x,z的值*/ if(yz) t=y;y=z;z=t

59、;/*交換z,y的值*/ printf(small to big: %d %d %dn,x,y,z); = 【程序6】 題目:用*號輸出字母C的圖案。 1.程序分析:可先用*號在紙上寫出字母C,再分行輸出。 2.程序源代碼: #include stdio.h main() printf(Hello C-world!n); printf( *n); printf( *n); printf( * n); printf( *n); = 【程序8】 題目:輸出9*9口訣。 1.程序分析:分行與列考慮,共9行9列,i控制行,j控制列。 2.程序源代碼: #include stdio.h main() i

60、nt i,j,result; printf(n); for (i=1;i10;i+) for(j=1;j10;j+) result=i*j; printf(%d*%d=%-3d,i,j,result);/*-3d表示左對齊,占3位*/ printf(n);/*每一行后換行*/ =【程序11】 題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月 后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數(shù)為多少? 1.程序分析:兔子的規(guī)律為數(shù)列1,1,2,3,5,8,13,21 2.程序源代碼: main() long f1,f2; int i; f1=f2=1;

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論