




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1 實(shí)驗(yàn)一實(shí)驗(yàn)一 armarm 開發(fā)環(huán)境開發(fā)環(huán)境 ads1.2ads1.2 的認(rèn)識(shí)及使用的認(rèn)識(shí)及使用.1 實(shí)驗(yàn)二實(shí)驗(yàn)二 c c 和和 armarm 匯編混合編程實(shí)驗(yàn)匯編混合編程實(shí)驗(yàn).15 實(shí)驗(yàn)三實(shí)驗(yàn)三 uartuart 通訊實(shí)驗(yàn)通訊實(shí)驗(yàn).22 實(shí)驗(yàn)四實(shí)驗(yàn)四 a/da/d 轉(zhuǎn)換接口實(shí)驗(yàn)轉(zhuǎn)換接口實(shí)驗(yàn).32 實(shí)驗(yàn)五實(shí)驗(yàn)五 d/ad/a 轉(zhuǎn)換接口實(shí)驗(yàn)轉(zhuǎn)換接口實(shí)驗(yàn).40 實(shí)驗(yàn)六實(shí)驗(yàn)六 pwmpwm 定時(shí)器驅(qū)動(dòng)電機(jī)實(shí)驗(yàn)定時(shí)器驅(qū)動(dòng)電機(jī)實(shí)驗(yàn).45 實(shí)驗(yàn)七實(shí)驗(yàn)七 lcdlcd 的驅(qū)動(dòng)控制實(shí)驗(yàn)的驅(qū)動(dòng)控制實(shí)驗(yàn).57 實(shí)驗(yàn)八實(shí)驗(yàn)八 觸摸屏驅(qū)動(dòng)實(shí)驗(yàn)觸摸屏驅(qū)動(dòng)實(shí)驗(yàn).75 實(shí)驗(yàn)九實(shí)驗(yàn)九 linuxlinux 操作系統(tǒng)安裝實(shí)
2、驗(yàn)操作系統(tǒng)安裝實(shí)驗(yàn).83 實(shí)驗(yàn)十實(shí)驗(yàn)十 gccgcc 編譯器及編譯器及 gdbgdb 調(diào)試器實(shí)驗(yàn)調(diào)試器實(shí)驗(yàn).105 實(shí)驗(yàn)十一實(shí)驗(yàn)十一 交叉編譯工具鏈的安裝及使用交叉編譯工具鏈的安裝及使用.108 實(shí)驗(yàn)十二實(shí)驗(yàn)十二 linuxlinux 內(nèi)核的編譯、移植內(nèi)核的編譯、移植.113 實(shí)驗(yàn)十三實(shí)驗(yàn)十三 qtqt hellohello worldworld.124 實(shí)驗(yàn)十四實(shí)驗(yàn)十四 觸摸屏、觸摸屏、pwmpwm 定時(shí)器、電機(jī)綜合實(shí)驗(yàn)定時(shí)器、電機(jī)綜合實(shí)驗(yàn).129 1 實(shí)驗(yàn)一實(shí)驗(yàn)一 armarm 開發(fā)環(huán)境開發(fā)環(huán)境 ads1.2ads1.2 的認(rèn)識(shí)及使用的認(rèn)識(shí)及使用 一、實(shí)驗(yàn)?zāi)康囊?、?shí)驗(yàn)?zāi)康?熟悉 ads1.
3、2 開發(fā)環(huán)境,學(xué)會(huì) arm 仿真器的使用。使用 ads 編譯、下載、調(diào)試并跟蹤一 段已有的程序,了解嵌入式開發(fā)的基本思想和過(guò)程。 二、實(shí)驗(yàn)內(nèi)容二、實(shí)驗(yàn)內(nèi)容 本次實(shí)驗(yàn)使用 ads 集成開發(fā)環(huán)境。新建一個(gè)簡(jiǎn)單的工程文件,并編譯這個(gè)工程文件。 學(xué)習(xí) arm 仿真器的使用和開發(fā)環(huán)境的設(shè)置。下載已經(jīng)編譯好的文件到嵌入式控制器中運(yùn)行。 學(xué)會(huì)在程序中設(shè)置斷點(diǎn),觀察系統(tǒng)內(nèi)存和變量,為調(diào)試應(yīng)用程序打下基礎(chǔ)。 三、預(yù)備知識(shí)三、預(yù)備知識(shí) c 語(yǔ)言的基礎(chǔ)知識(shí)、程序調(diào)試的基礎(chǔ)知識(shí)和方法。 四、實(shí)驗(yàn)設(shè)備及工具(包括軟件調(diào)試工具)四、實(shí)驗(yàn)設(shè)備及工具(包括軟件調(diào)試工具) 硬件:arm 嵌入式開發(fā)平臺(tái)、pc 機(jī) pentium
4、100 以上、用于 arm920t 的 jtag 仿真器、 串口線。 軟件:pc 機(jī)操作系統(tǒng) win2000 或 winxp、arm ads1.2 集成開發(fā)環(huán)境、仿真器驅(qū)動(dòng)程序、 超級(jí)終端通訊程序。 五、實(shí)驗(yàn)步驟五、實(shí)驗(yàn)步驟 1、建立工程 (1)運(yùn)行 ads1.2 集成開發(fā)環(huán)境(codewarrior for arm developer suite) 。選擇 filenew菜單,在對(duì)話框中選擇 project,如圖 1-1 所示,新建一個(gè)工程文件。圖中示 例的工程名為 exp6.mcp。點(diǎn) set按鈕可為該工程選擇路徑如圖 1-1 所示,選中 creatfolder 選項(xiàng)后將以圖 1-1 中的
5、 projectname 或圖 1-2 中的文件名為名創(chuàng)建目錄,這樣 可以將所有與該工程相關(guān)的文件放到該工程目錄下,便于管理工程。 在圖 1-1 中工程模板列表中的 2410 arm executable image 是專為本嵌入式開發(fā)板設(shè) 置的工程模板,后文有具體說(shuō)明。在此也可選擇 arm executable image 通用模板。 圖 1-1 新建工程 2 圖 1-2 保存工程 (2)在新建的工程中,如圖 1-3 所示,選擇 debug 版本,使用 edit | debug settings 菜 單對(duì) debug 版本進(jìn)行參數(shù)設(shè)置。 圖 1-3 選擇版本 (3)在 debug setti
6、ngs 對(duì)話框中選擇 target settings 項(xiàng),如圖 1-4 所示。在 post- linker 一欄中選擇 arm fromelf。 3 圖 1-4 target settings (4)在 debug settings 對(duì)話框中選擇 arm linker 項(xiàng),如圖 1-5。在 output 選項(xiàng)卡的 simple image 框中設(shè)置連接的 read-only(只讀)和 read-write(讀寫)地址。地址 0 x30008000 是開發(fā)板上 sdram 的真實(shí)地址,是由系統(tǒng)的硬件決定的;0 x30200000 指的是系 統(tǒng)可讀寫的內(nèi)存地址。也就是說(shuō),在 0 x30008000
7、0 x30200000 之間是只讀區(qū)域,存放程序的 代碼段,在0 x30200000 開始是程序的數(shù)據(jù)段。 圖 1-5 設(shè)置連接地址范圍 圖 1-5 所示的設(shè)置只是一種簡(jiǎn)單設(shè)置,如果程序需要用到標(biāo)準(zhǔn) c 庫(kù)函數(shù)的話需要按圖 1-6 進(jìn)行連接地址的設(shè)置。 4 標(biāo)準(zhǔn) c 中如果使用 malloc 及其相關(guān)的函數(shù),需要使用系統(tǒng)的堆(heap)空間,可以通 過(guò) scatter 文件來(lái)描述系統(tǒng) heap 段的位置。針對(duì) 2410-s 開發(fā)板,把程序的入口定位在 0 x30008000,并定義 scatter 文件為 scat_ram.scf。在圖 2-6 中選擇 linktype 為 scattered
8、, 輸入 scatter 文件名 scat_ram.scf;然后切換到 options 選項(xiàng)卡在 image entry point 框中輸入 0 x30008000。也可以在圖 1-6 的 command line 框中直接輸入-entry 0 x30008000 -scatter scat_ram.scf 進(jìn)行上述設(shè)置。 圖 1-6 通過(guò) scatter 文件設(shè)置連接地址 提示: 1)程序移植到 ads 后,程序最開始首先執(zhí)行用匯編寫的初始化代碼包括中斷向量和 堆棧的初始化。在該段代碼中使用 import _main;注意 main 前面是兩個(gè)下劃線 b _main 進(jìn)行系統(tǒng)內(nèi)部的標(biāo)準(zhǔn) c
9、 函數(shù)初始化,然后調(diào)用用戶在 c 中定義的 main()函數(shù)(注意:兩個(gè) main 都是小寫) ,并且在嵌入式應(yīng)用中用戶 c 的 main 函數(shù)中不能有參數(shù)(int main(void)) 。 2)不能有系統(tǒng)定義的軟中斷,在匯編中可以使用 import _use_no_semihosting_swi 來(lái)檢測(cè),在 c 中使用 #pragma import(_use_no_semihosting_swi) / ensure no functions that use semihosting 3)scatter 文件內(nèi)容如下,創(chuàng)建了一個(gè) ram_load 的程序和數(shù)據(jù)的裝載區(qū)域,起始地址 0 x30
10、008000。 ram_load 0 x30008000 5 ram_exec 0 startup.o (init, +first) * (+ro) l0pagetable 0 x30200000 uninit;about 2mbyte offset sdram pagetable.o (+zi) stacks +0 x100000 uninit;64kbyte under l0 pagetable stack.o (+zi) ram +0 * (+rw,+zi) heap +0 uninit heap.o (+zi) exception_exec 0 overlay ;exception r
11、egion exception.o (+ro) 4)定義 retarget.c 函數(shù),重新定位標(biāo)準(zhǔn) c 庫(kù)中 stdio 的一些相關(guān)函數(shù)。主要有: struct _file int handle; /* add whatever you need here */; file _stdout;/文件的定義 int fputc(int ch, file *f)/fputc 函數(shù) int ferror(file *f)/ferror 函數(shù) void _sys_exit(int return_code)/系統(tǒng)退出函數(shù) 6 int _raise(int signal, int argument) _va
12、lue_in_regs struct _initial_stackheap _user_initial_stackheap(unsigned r0, unsigned sp, unsigned r2, unsigned sl)/用戶的堆空間和??臻g函數(shù) 具體定義,可以參考 init/retarget.c (5)在第(4)步中如果不選擇簡(jiǎn)單的連接地址設(shè)置,則需按圖 1-7 所示設(shè)置 c 編譯器。 在 debug settings 對(duì)話框中選擇 arm c compiler 項(xiàng),在 atpcs 選項(xiàng)卡中選擇 arm/thump interwork,或者在命令行中添加-apcs /interwork
13、。 圖 1-7 設(shè)置 arm c compiler (6)在第四步中如果選擇簡(jiǎn)單的地址連接設(shè)置,在 debug settings 對(duì)話框中選擇 arm linker 項(xiàng),如圖 1-8。在 layout 選項(xiàng)卡的 place at beginning of image 框中設(shè)置程序的 入口模塊。指定在生成的代碼中,程序是從 startup.s 開始運(yùn)行的。object 設(shè)為 startup.o,section 設(shè)為 init。 圖 1-8 設(shè)置入口模塊 7 (7)在 debug settings 對(duì)話框中選擇 arm fromelf 項(xiàng),如圖 1-9。在 output file name 框中設(shè)
14、置輸出文件名為 system.bin,這就是要下載到開發(fā)板的嵌入式應(yīng)用程序文件。 圖 1-9 設(shè)置輸出文件名 (8)回到如圖 1-10 所示的工程窗口中,選擇 release 版本,使用 edit | release settings 菜單對(duì) release 版本進(jìn)行參數(shù)設(shè)置。 (9)參照第(3) 、 (4) 、 (5) 、 (6) 、 (7)步在 release settings 對(duì)話框中設(shè)置 release 版 本的 post-linker、連接地址范圍、入口模塊和輸出文件。 (10)回到如圖 1-3 所示的工程窗口中,選擇 targets 選項(xiàng)卡,如圖 1-10 所示。選中 debugr
15、el 版本,按 del 鍵將其刪除。debugrel 子樹是一個(gè)折衷版本,通常用不到,所以在 這里刪除。 圖 1-10 刪除 debugrel 版本 (11)設(shè)置完成后,可以將該新建的空工程文件作為模板保存以便以后使用。將工程文件 名改為 2410 arm executable.mcp。然后在 ads1.2 軟件安裝目錄下的 stationery 目錄下新 8 建名為 2410 arm executable image 的模板目錄,再將剛設(shè)置完的 2410 arm executable.mcp 工程模板文件存放到該目錄下即可。這樣以后新建工程的時(shí)候如圖 2-1 所 示就能看到以 2410 ar
16、m executable image 為名字的模板了。 (12)新建工程后,可以執(zhí)行菜單 project | add files 把和工程相關(guān)的所有文件即除 inti 的所有文件加入到工程中。ads1.2 不能自動(dòng)按文件類別對(duì)這些文件進(jìn)行分類,需要的 話用戶可以執(zhí)行菜單 project | create group 創(chuàng)建文件組,然后分別將不同類的文件加入 到不同的組,以方便管理。如圖 2-11 所示。更為簡(jiǎn)單的辦法是,在新建工程時(shí) ads 創(chuàng)建了 和工程同名的目錄,在該目錄下按類別創(chuàng)建子目錄并存放工程文件。選中所有目錄拖動(dòng)到 任務(wù)欄上的 ads 任務(wù)條上,不要松開鼠標(biāo)當(dāng) ads 窗口恢復(fù)后再拖
17、動(dòng)到工程文件窗口,松開 鼠標(biāo)。這樣 ads 將以子目錄名建立同名文件組并以此對(duì)文件分類。 圖 1-11 加入工程文件 (13)編譯并雙擊圖 1-11 中的 main.c 打開該文件,可以查看 main()函數(shù)的內(nèi)容,這時(shí)也可 運(yùn)行程序。圖 1-11 的例程是 arm 的串口實(shí)驗(yàn)。 9 附錄 超級(jí)終端設(shè)置及映象文件下載方法 一、超級(jí)終端設(shè)置一、超級(jí)終端設(shè)置 1、運(yùn)行 windows 系統(tǒng)下的超級(jí)終端(hyperterminal)應(yīng)用程序,新建一個(gè)通信終端。 如果要求輸入?yún)^(qū)號(hào)、電話號(hào)碼等信息請(qǐng)隨意輸入,出現(xiàn)如圖 1-12 所示對(duì)話框時(shí),為所建超 級(jí)終端取名為 arm,可以為其選一個(gè)圖標(biāo)。單擊“確定
18、”按鈕。 圖 1-12 創(chuàng)建超級(jí)終端 2、在接下來(lái)的對(duì)話框中選擇 arm 開發(fā)平臺(tái)實(shí)際連接的 pc 機(jī)串口(如 com1) ,按確定后出現(xiàn) 如圖 1-13 所示的屬性對(duì)話框,設(shè)置通信的格式和協(xié)議。這里波特率為 115200,數(shù)據(jù)位 8, 無(wú)奇偶校驗(yàn),停止位 1,無(wú)數(shù)據(jù)流控制。按確定完成設(shè)置。 圖 1-13 設(shè)置串行口 3、完成新建超級(jí)終端的設(shè)置以后,可以選擇超級(jí)終端文件菜單中的保存,將當(dāng)前設(shè)置保存 為一個(gè)特定超級(jí)終端到桌面上,以備后用。用串口線將 pc 機(jī)串口和平臺(tái) uart0 正確連接后, 就可以在超級(jí)終端上看到程序輸出的信息了,比如本實(shí)驗(yàn)的“hello world!” 。 二、映象文件下載
19、 將開發(fā)板重新啟動(dòng)同時(shí)按下鍵盤中任意鍵,這時(shí)在超級(jí)終端將會(huì)看到下面圖 1-14 的提 示,在 vivi后鍵入 load flash ucos x 然后回車。 10 圖 1-14 超級(jí)終端 這時(shí)將會(huì)進(jìn)入圖 1-15 的界面,然后打開超級(jí)終端上方的“傳送”菜單并選擇發(fā)送文件, 如圖 1-16 所示,點(diǎn)擊瀏覽按鍵,查找并進(jìn)入到編譯生成的映象文件夾下,打開 system.bin.然 后在發(fā)送文件對(duì)話框中的協(xié)議欄選擇 xmodem,最后選擇發(fā)送。發(fā)送結(jié)束后,映象文件即下 載到 flash 中,然后,如圖 1-17 鍵入 bootucos 命令再回車即可運(yùn)行 ucos 程序。 圖 1-15 超級(jí)終端 圖
20、1-16 發(fā)送文件 11 圖 1-17 啟動(dòng) ucos 系統(tǒng) 提示: system.bin 文件是系統(tǒng)通過(guò) bios 引導(dǎo)以后,裝入內(nèi)存中運(yùn)行的默認(rèn)文件。所以上文中 對(duì)工程的設(shè)置都使用該文件名作為編譯最終文件。ads 環(huán)境中,該文件產(chǎn)生在工程路徑下的 projectname_datadebug 和 release 目錄下。建議將 release 下的 system.bin 文件下載到 flash。 三、數(shù)據(jù)文件下載 ucos 系統(tǒng)中用到的文件(圖片、文本文件等)都是通過(guò)啟動(dòng)一個(gè) ucos 系統(tǒng)的應(yīng)用程序 來(lái)下載文件到指定目錄的,具體方法如下,以列表框的控件的使用實(shí)驗(yàn)為例: 1、先打開超級(jí)終端,
21、超級(jí)終端的設(shè)置如前所述。 2、運(yùn)行列表框的控件的使用實(shí)驗(yàn),運(yùn)行方法 a:將列表框的控件的使用實(shí)驗(yàn)的映象文件下 載到 flash 中。方法 b:用仿真器調(diào)試的方式運(yùn)行列表框的控件的使用實(shí)驗(yàn)。 3、當(dāng)列表框的控件的使用實(shí)驗(yàn)運(yùn)行起來(lái)以后,在超級(jí)終端鍵入回車鍵,此時(shí)如圖 118 圖 118 12 4、新建 ucos 目錄,命令是 mkdir ucos 回車,然后在 sys提示符下鍵入 ls,若新建目錄 成功可看見(jiàn)此文件名,然后進(jìn)入 ucos 目錄下,在 sys提示符下鍵入 cd ucos 回車,進(jìn)入 ucos 后如圖 119 圖 119 5、將字庫(kù) u12x12 和 u16x16 下載到 ucos 目
22、錄下,下載命令 dl u12x12.fnt -d 回車,然后 選擇超級(jí)終端中的傳送菜單下的發(fā)送文件,如圖 120。 圖 120 13 在圖 120 中點(diǎn)擊瀏覽,選擇要下載的字庫(kù),協(xié)議選擇 xmodem 然后點(diǎn)擊發(fā)送。重復(fù)同 樣的操作再將字庫(kù) u16x16 下載到 ucos 目錄下。注意命令形式 dl u16x16.fnt -d 回車。 6、在 ucos 目錄下鍵入命令 mkdir fj 新建 fj 目錄,然后在此目錄下下載圖片、文本文件 test 和 sys.dat 文件。下載方法和下載字庫(kù)相同,下載圖片的命令形式如:dl *.bmp -d 下載文本文件的命令形式如:dl test.txt -
23、t,下載 sys 文件的命令形式如:dl sys.dat - d 注意:其他還有刪除命令 rm 或 rmdir,改名命令 mv 舊文件名 新文件名。下載文本文件用 參數(shù)-t,下載其他數(shù)據(jù)文件用參數(shù)-d。 14 實(shí)驗(yàn)二實(shí)驗(yàn)二 c c 和和 armarm 匯編混合編程實(shí)驗(yàn)匯編混合編程實(shí)驗(yàn) 一、實(shí)驗(yàn)?zāi)康?1. 熟悉 ads 開發(fā)環(huán)境、axd 及 multi_ice 調(diào)試環(huán)境。 2. 掌握簡(jiǎn)單的 arm 匯編指令的使用方法。 3. 掌握 s3c2440a 的 i/o 控制寄存器的配置。 4. 掌握 arm 匯編指令和 c 語(yǔ)言相互調(diào)用的方法 二、實(shí)驗(yàn)設(shè)備 pc 機(jī)、arm 仿真器、2440 開發(fā)板、串
24、口線。 三、實(shí)驗(yàn)內(nèi)容 1. 熟悉 arm 開發(fā)環(huán)境的建立。 2. 使用 arm 匯編和 c 語(yǔ)言設(shè)置 gpio 口的相應(yīng)寄存器。 3. 編寫跑馬燈程序。 四、實(shí)驗(yàn)原理 c 程序與匯編程序相互調(diào)用規(guī)則 為了使單獨(dú)編譯的 c 語(yǔ)言程序和匯編程序之間能夠相互調(diào)用,必須為子程序間的 調(diào)用規(guī) 定一定的規(guī)則。atpcs ,即 arm , thumb過(guò)程調(diào)用標(biāo)準(zhǔn)(arm/thumb procedure call standard),是 arm 程序和thumb 程序中子程序調(diào)用的基本規(guī)則,它規(guī) 定了一些子程序間調(diào)用 的基本規(guī)則,如子程序調(diào)用過(guò)程中的寄存器的使用規(guī)則,堆棧 的使用規(guī)則,參數(shù)的傳遞規(guī)則等。 1基
25、本 atpcs 基本 atpcs 規(guī)定了在子程序調(diào)用時(shí)的一些基本規(guī)則,包括下面 3 方面的內(nèi)容: (1) 各寄存器的使用規(guī)則及其相應(yīng)的名稱。 (2) 數(shù)據(jù)棧的使用規(guī)則。 (3) 參數(shù)傳遞的規(guī)則。 相對(duì)于其它類型的 atpcs,滿足基本 atpcs 的程序的執(zhí)行速度更快,所占用的 內(nèi)存更少。但是它不能提供以下的支持:arm 程序和 thumb 程序相互調(diào)用,數(shù)據(jù)以 及代碼的位置無(wú)關(guān)的支持,子程序的可重入性,數(shù)據(jù)棧檢查的支持。而派生的其他幾種 特定的 atpcs 就是在基本 atpcs 的基礎(chǔ)上再添加其他的規(guī)則而形成的。其目的就 是提供上述的功能。 2寄存器的使用規(guī)則 寄存器的使用必須滿足下面的規(guī)
26、則: (1) 子程序間通過(guò)寄存器 r0r3 來(lái)傳遞參數(shù)。這時(shí),寄存器 r0r3 可以記作 a0a3。 被調(diào)用的子程序在返回前無(wú)需恢復(fù)寄存器 r0r3 的內(nèi)容。 15 (2) 在子程序中,使用寄存器 r4rll 來(lái)保存局部變量。這時(shí),寄存器 r4r11 可以 記作 v1v8。如果在子程序中使用到了寄存器 v1v8 中的某些寄存器,子程序進(jìn) 入時(shí)必須 保存這些寄存器的值,在返回前必須恢復(fù)這些寄存器的值;對(duì)于子程序中沒(méi) 有用到的寄存器 則不必進(jìn)行這些操作。在 thumb 程序中,通常只能使用寄存器 r4r7 來(lái)保存局部變量。 (3) 寄存器 r12 用作子程序間 scratch 寄存器,記作 ip。
27、在子程序間的連接代碼段中 常有這種使用規(guī)則。 (4) 寄存器 r13 用作數(shù)據(jù)棧指針,記作 sp。在子程序中寄存器 r13 不能用作其他用 途。 寄存器 sp 在進(jìn)入子程序時(shí)的值和退出子程序時(shí)的值必須相等。 (5) 寄存器 r14 稱為連接寄存器,記作 lr。它用于保存子程序的返回地址。如果在 子程序中保存了返回地址,寄存器 r14 則可以用作其他用途。 (6) 寄存器 r15 是程序計(jì)數(shù)器,記作 pc。它不能用作其他用途。 3. 參數(shù)傳遞規(guī)則 根據(jù)參數(shù)個(gè)數(shù)是否固定可以將子程序分為參數(shù)個(gè)數(shù)固定的(nonvariadic)子程序和參 數(shù)個(gè)數(shù)可變的(variadic)子程序。這兩種子程序的參數(shù)傳遞
28、規(guī)則是不同的。 (1)參數(shù)個(gè)數(shù)可變的子程序參數(shù)傳遞規(guī)則 對(duì)于參數(shù)個(gè)數(shù)可變的子程序,當(dāng)參數(shù)不超過(guò) 4 個(gè)時(shí),可以使用寄存器 r0r3 來(lái) 傳遞參 數(shù);當(dāng)參數(shù)超過(guò) 4 個(gè)時(shí),還可以使用數(shù)據(jù)棧來(lái)傳遞參數(shù)。在參數(shù)傳遞時(shí),將所 有參數(shù)看作是存放在連續(xù)的內(nèi)存字單元中的字?jǐn)?shù)據(jù)。然后,依次將 各字?jǐn)?shù)據(jù)傳送到寄 存器 r0、r1、r2、r3 中,如果參數(shù)多于 4 個(gè),將剩余的字?jǐn)?shù)據(jù)傳送到數(shù) 據(jù)棧中, 入棧的順序與參數(shù)順序相反,即最后一個(gè)字?jǐn)?shù)據(jù)先入棧。按照上面的規(guī)則,一個(gè)浮點(diǎn)數(shù) 參數(shù)可以通過(guò)寄存器傳遞,也可以通過(guò)數(shù)據(jù)棧傳遞,也可能一半通過(guò)寄存器傳遞,另一 半通過(guò)數(shù)據(jù)棧傳遞。 (2) 參數(shù)個(gè)數(shù)固定的子程序參數(shù)傳遞規(guī)
29、則對(duì)于參數(shù)個(gè)數(shù)固定的子程序,參數(shù)傳遞與參數(shù) 個(gè)數(shù)可變的子程序參數(shù)傳遞規(guī)則不同。 如果系統(tǒng)包含浮點(diǎn)運(yùn)算的硬件部件,浮點(diǎn)參數(shù)將按照下面的規(guī)則傳遞: 各個(gè)浮點(diǎn)參數(shù)按順序處理。 為每個(gè)浮點(diǎn)參數(shù)分配 fp 寄存器。 分配的方法是,滿足該浮點(diǎn)參數(shù)需要的且編號(hào)最小的一組連續(xù)的 fp 寄存器。 第一個(gè)整數(shù)參數(shù),通過(guò)寄存器 r0r3 來(lái)傳遞。其他參數(shù)通過(guò)數(shù)據(jù)棧傳遞。 (3) 子程序結(jié)果返回規(guī)則 子程序中結(jié)果返回的規(guī)則如下: 結(jié)果為一個(gè) 32 位的整數(shù)時(shí),可以通過(guò)寄存器 r0 返回。 結(jié)果為一個(gè) 64 位整數(shù)時(shí),可以通過(guò)寄存器 r0 和 rl 返回,依次類推。 結(jié)果為一個(gè)浮點(diǎn)數(shù)時(shí),可以通過(guò)浮點(diǎn)運(yùn)算部件的寄存器 f
30、0、d0 或者 s0 來(lái)返回。 結(jié)果為復(fù)合型的浮點(diǎn)數(shù)(如復(fù)數(shù))時(shí),可以通過(guò)寄存器 f0fn 或者 d0dn 來(lái)返回。 16 對(duì)于位數(shù)更多的結(jié)果,需要通過(guò)內(nèi)存來(lái)傳遞。 4. c 語(yǔ)言函數(shù)和 arm 匯編語(yǔ)言函數(shù)間相互調(diào)用 高級(jí)語(yǔ)言函數(shù)與匯編語(yǔ)言函數(shù)的混合調(diào)用也要遵循 atpcs 規(guī)則,保證程序調(diào) 用時(shí)參數(shù)的正確傳遞。在匯編程序中使用 export 偽指令聲明本子程序,使其它程 序可以調(diào)用此子程 序,而在 c 語(yǔ)言程序中使用 extern 關(guān)鍵字聲明外部函數(shù)(聲 明要調(diào)用的匯編子程序),即可調(diào) 用此匯編子程序。下面給出兩個(gè)例子來(lái)介紹函數(shù) 相互調(diào)用。 例1 c 函數(shù)中調(diào)用匯編 示例中匯編子程序 st
31、rcopy 使用兩個(gè)參數(shù),一個(gè)表示目標(biāo)字符串地址,一個(gè)表示源字 符 串的地址,參數(shù)分別存放 r0,r1 寄存器中。 #include extern void strcopy(char*d, const char*s) /聲明外部函數(shù)。即要調(diào)用的匯編子程序 int mian (void) const char *srcstr= first string-source; /定義字符串常量 char dstsrt = second string-destination;/定義字符串變量 printf( before copying:/n ); printf ( %s n %s/n, srcstr,
32、dststr); /顯示源字符串和目標(biāo)字符串的內(nèi)容 strcopy(dststr, srcstr); / 調(diào)用匯編子程序, r0=dststr ,r1=srcstr printf( after copying: n ); printf ( %s n%sn, srcstr, dststr) ; /顯示 strcopy 復(fù)制字符串結(jié)果 return(0); 被調(diào)用匯編子程序: area scopy, code, readonly export strcopy ;聲明 strcopy,以便外部程序引用 strcopy ;r0 為目標(biāo)字符串的地址 ;r1 為源字符串的地址 17 ldrb r2, r1
33、, #1 ;讀取字節(jié)數(shù)據(jù),源地址加 l strb r2, r0, #1 ;保存讀取的 1 字節(jié)數(shù)據(jù),目標(biāo)地址加 1 cmp r2, #0 ;判斷字符串是否復(fù)制完畢 bnestrcopy;沒(méi)有復(fù)制完畢,繼續(xù)循環(huán) mov pc, 1r ;返回 end 例2 匯編程序調(diào)用 c 程序 匯編程序的設(shè)置要遵循 atpcs 規(guī)則,保證程序調(diào)用時(shí)參數(shù)的正確傳遞。在匯編程序 中 使用 import 偽指令聲明將要調(diào)用的 c 程序函數(shù)。在調(diào)用 c 程序時(shí),要正確設(shè)置入 口參數(shù), 然后使用 bl 調(diào)用。示例程序中使用了 5 個(gè)參數(shù),分別使用寄存器 r0 存儲(chǔ)第 1 個(gè)參數(shù),r1 存儲(chǔ)第 2 個(gè)數(shù),r2 存儲(chǔ)第 3
34、個(gè)參數(shù),r3 存儲(chǔ)第 4 個(gè)參數(shù),第 5 個(gè)參 數(shù)利用堆棧傳送。由于 利用了堆棧傳遞參數(shù),在程序調(diào)用結(jié)果后要調(diào)整堆棧指針。 匯編調(diào)用 c 程序的匯編程序 /*函數(shù) sum ()返回 5 個(gè)整數(shù)的和*/ int sum (inta,lit b,int c,int d,int e) return(a+b+c+d+e);/返回 5 個(gè)變量的和 export callsum area example,code,readonly import sum ;聲明外部標(biāo)號(hào) sum5,即 c 函數(shù) sum5() callsum stmfdsp!lr ;lr 寄存器堆棧 add r1, r0, r0 ;設(shè)置 su
35、m 函數(shù)入口參數(shù),r0 為參數(shù) a add r2, r1, r0 ;r1 為參數(shù) b,r2 為參數(shù) c add r3, r1, r2, str r3,sp,#-4! ;參數(shù) e 要通過(guò)堆棧傳遞 add r3,r1,r1 ;r3 為參數(shù) d bl sum ;調(diào)用 sum(),結(jié)果保存在 r0 add sp,sp#4;修正 sp 指針 ldmfd sp, pc ;子程序返回 end 五、實(shí)驗(yàn)相關(guān)寄存器 18 六、實(shí)驗(yàn)電路圖 七、實(shí)驗(yàn)程序?qū)崿F(xiàn) 19 7.1 利用 c 語(yǔ)言實(shí)現(xiàn)跑馬燈程序 /*led_asm_c.c*/ /*c 語(yǔ)言函數(shù)*/ /*定義端口寄存器*/ #define rgpbcon (*
36、(volatile unsigned *)0 x56000010) /port b control #define rgpbdat (*(volatile unsigned *)0 x56000014) /port b data #define rgpbup (*(volatile unsigned *)0 x56000018) /pull-up control b /*延遲程序*/ extern void delay(int times); /*主程序*/ void xmain(void) rgpbcon= (rgpbcon /gpb5-8 set output rgpbup = (rgpb
37、up /disable gpb pull up while(1) rgpbdat=(rgpbdat|(0 xf5) /gpb7 output 0 delay(0 x50000); /調(diào)用匯編語(yǔ)言編寫的延時(shí)程序 rgpbdat=(rgpbdat|(0 xf5) /gpb8 output 0 delay(0 x5000000); /調(diào)用匯編語(yǔ)言編寫的延時(shí)程序 rgpbdat= rgpbdat /gpb7-8 output 0 delay(0 x50000); /調(diào)用匯編語(yǔ)言編寫的延時(shí)程序 rgpbdat= rgpbdat|(0 x30 uart 包括三個(gè)波特率因子寄存器 ubrdiv0, ubrd
38、iv1 and ubrdiv2,存儲(chǔ)在波特率因子寄存 器(ubrdivn)中的值決定串口發(fā)送和接收的時(shí)鐘數(shù)率(波特率),計(jì)算公式如下: ubrdivn = (int)(pclk / (bps x 16) ) 1 或 ubrdivn = (int)(uclk / (bps x 16) ) 1 例如:如果波特率是 115200,pclk or 或 uclk is 是 40 mhz,那么 ubrdivn : ubrdivn = (int)(40000000 / (115200 x 16) ) -1 = (int)(21.7) -1 = 21 -1 = 20 六、實(shí)驗(yàn)步驟六、實(shí)驗(yàn)步驟 1編寫串口驅(qū)動(dòng)函
39、數(shù) 30 圖 3-4 發(fā)送數(shù)據(jù) 圖 3-5 接收數(shù)據(jù) 2在主函數(shù)中實(shí)現(xiàn)將從串口 0 接收到的數(shù)據(jù)發(fā)送到串口 0(main.c): 圖 3-6 主函數(shù) 3. 新建工程,將“exp1 arm 串口實(shí)驗(yàn)”中的文件添加到工程中并運(yùn)行。 七、思考題七、思考題 1232 串行通訊的數(shù)據(jù)格式是什么? 2串行通訊最少需要幾根線,分別如何連接? 3arm 的串行口有幾個(gè),相應(yīng)的寄存器是什么? 4用中斷方式實(shí)現(xiàn)串口驅(qū)動(dòng)。 31 實(shí)驗(yàn)四 a/d 轉(zhuǎn)換接口實(shí)驗(yàn) 一、實(shí)驗(yàn)?zāi)康囊?、?shí)驗(yàn)?zāi)康?1熟悉 arm 本身自帶的八路十位 a/d 控制器及相應(yīng)寄存器。 2編程實(shí)現(xiàn) arm 系統(tǒng)的 a/d 功能。 3掌握帶有 a/d 的
40、 cpu 編程實(shí)現(xiàn) a/d 功能的主要方法。 二、實(shí)驗(yàn)二、實(shí)驗(yàn)內(nèi)容內(nèi)容 學(xué)習(xí) a/d 接口原理,了解實(shí)現(xiàn) a/d 系統(tǒng)對(duì)于系統(tǒng)的軟件和硬件要求。閱讀 arm 芯片文 檔,掌握 arm 的 a/d 相關(guān)寄存器的功能,熟悉 arm 系統(tǒng)硬件的 a/d 相關(guān)接口。利用外部模 擬信號(hào)編程實(shí)現(xiàn) arm 循環(huán)采集全部前 3 路通道,并且在超級(jí)終端上顯示。 三、預(yù)備知識(shí)三、預(yù)備知識(shí) 1、用 arm ads1.2 集成開發(fā)環(huán)境,編寫和調(diào)試程序的基本過(guò)程。 2、arm 應(yīng)用程序的框架結(jié)構(gòu)。 3、能夠自己完成在 lcd 上顯示指定參量。 四、實(shí)驗(yàn)設(shè)備及工具四、實(shí)驗(yàn)設(shè)備及工具 硬件:arm 嵌入式開發(fā)平臺(tái)、pc 機(jī)
41、 pentium100 以上、用于 arm920t 的 jtag 仿真器、 模擬電壓信號(hào)源。 軟件:pc 機(jī)操作系統(tǒng) win2000 或 winxp、arm ads1.2 集成開發(fā)環(huán)境、仿真器驅(qū)動(dòng)程序、 超級(jí)終端通訊程序。 五、實(shí)驗(yàn)原理及說(shuō)明五、實(shí)驗(yàn)原理及說(shuō)明 1a/d 轉(zhuǎn)換器 a/d 轉(zhuǎn)換器是模擬信號(hào)源和 cpu 之間聯(lián)系的接口,它的任務(wù)是將連續(xù)變化的模擬信號(hào)轉(zhuǎn) 換為數(shù)字信號(hào),以便計(jì)算機(jī)和數(shù)字系統(tǒng)進(jìn)行處理、存儲(chǔ)、控制和顯示。在工業(yè)控制和數(shù)據(jù) 采集及許多其他領(lǐng)域中,a/d 轉(zhuǎn)換是不可缺少的。 圖 4-1 a/d 轉(zhuǎn)換原理圖 32 a/d 轉(zhuǎn)換器有以下類型:逐位比較型、積分型、計(jì)數(shù)型、并行比較型
42、、電壓頻率型, 主要應(yīng)根據(jù)使用場(chǎng)合的具體要求,按照轉(zhuǎn)換速度、精度、價(jià)格、功能以及接口條件等因素 來(lái)決定選擇何種類型。常用的有以下兩種: 1)雙積分型的 a/d 轉(zhuǎn)換器 雙積分式也稱二重積分式,其實(shí)質(zhì)是測(cè)量和比較兩個(gè)積分的時(shí)間,一個(gè)是對(duì)模擬輸入 電壓積分的時(shí)間 t0,此時(shí)間往往是固定的;另一個(gè)是以充電后的電壓為初值,對(duì)參考電源 vref 反向積分,積分電容被放電至零所需的時(shí)間 t1。模擬輸入電壓 vi 與參考電壓 vref之比, 等于上述兩個(gè)時(shí)間之比。由于 vref 、t0固定,而放電時(shí)間 t1可以測(cè)出,因而可計(jì)算出模擬 輸入電壓的大小(vref與 vi 符號(hào)相反)。 由于 t0、vref為已知
43、的固定常數(shù),因此反向積分時(shí)間 t1與輸入模擬電壓 vi 在 t0時(shí)間內(nèi) 的平均值成正比。輸入電壓 vi愈高,va愈大,t1就愈長(zhǎng)。在 t1開始時(shí)刻,控制邏輯同時(shí)打 開計(jì)數(shù)器的控制門開始計(jì)數(shù),直到積分器恢復(fù)到零電平時(shí),計(jì)數(shù)停止。則計(jì)數(shù)器所計(jì)出的 數(shù)字即正比于輸入電壓 vi 在 t0時(shí)間內(nèi)的平均值,于是完成了一次 a/d 轉(zhuǎn)換。 2)逐次逼近型的 a/d 轉(zhuǎn)換器 逐次逼近型(也稱逐位比較式)的 a/d 轉(zhuǎn)換器,應(yīng)用比積分型更為廣泛,其原理框圖如 圖 3-10 所示,主要由逐次逼近寄存器 sar、d/a 轉(zhuǎn)換器、比較器以及時(shí)序和控制邏輯等部 分組成。它的實(shí)質(zhì)是逐次把設(shè)定的 sar 寄存器中的數(shù)字量經(jīng)
44、 d/a 轉(zhuǎn)換后得到電壓 vc 與待轉(zhuǎn) 換模擬電壓 v。進(jìn)行比較。比較時(shí),先從 sar 的最高位開始,逐次確定各位的數(shù)碼應(yīng)是 “1”還是“0” ,其工作過(guò)程如下: 轉(zhuǎn)換前,先將 sar 寄存器各位清零。轉(zhuǎn)換開始時(shí),控制邏輯電路先設(shè)定 sar 寄存器的 最高位為“1” ,其余位為“0” ,此試探值經(jīng) d/a 轉(zhuǎn)換成電壓 vc,然后將 vc 與模擬輸入電壓 vx 比較。如果 vxvc,說(shuō)明 sar 最高位的“1”應(yīng)予保留;如果 vx 0 與 ub4 0,v1與 v4導(dǎo)通,v2與 v3截止,電樞電流沿回路 l 流 通。 在 t2 t+ t1期間,ub1 0 與 ub4 0 與 u b 3 0 但此時(shí)
45、由于電 樞電感儲(chǔ)藏著能量,將維持電流在原來(lái)的方向上流動(dòng),此時(shí)電流沿回路 2 流通;經(jīng)過(guò)跨接 于 v2與 v3上的續(xù)流二極管 vd4、vd5。受二極管正向壓降的限制,v2與 v3不能導(dǎo)通。 t+ t1之后,重復(fù)前面的過(guò)程。 47 反向運(yùn)轉(zhuǎn)時(shí),具有相似的過(guò)程。 圖 6-4 pwm 電路中各點(diǎn)波形 4)開發(fā)平臺(tái)中直流電機(jī)驅(qū)動(dòng)的實(shí)現(xiàn) 開發(fā)板中的直流電機(jī)的驅(qū)動(dòng)部分如圖 6-3 所示;由于 s3c2410x 芯片自帶 pwm 定時(shí)器, 所以控制部分省去了三角波產(chǎn)生電路、脈沖調(diào)制電路和 pwm 信號(hào)延遲及信號(hào)分配電路, 取而代之的是 s3c2410x 芯片的定時(shí)器 0、1 組成的雙極性 pwm 發(fā)生器。 p
46、wm 發(fā)生器用到的寄存器主要有以下幾個(gè): (1)tcfg0 表 6-1 tcfg0 寄存器 register address r/w description reset value tcfg0 0 x51000000 r/w configures the two 8-bit prescalers 0 x00000000 tcfg0 bit description initial state reserved 31:24 0 x00 dead zone length 23:16 these 8 bits determine the dead zone length. the 1 unit tim
47、e of the dead zone length is equal to that of timer 0. 0 x00 prescaler 1 15:8 these 8 bits determine prescaler value for timer 2, 3 and 4. 0 x00 prescaler 0 7:0 these 8 bits determine prescaler value for timer 0 and 1. 0 x00 48 參考:dead zone length0;prescaler value2。 (2)tcfg1 表 6-2 tcfg1 寄存器 register
48、 address r/w description reset value tcfg1 0 x51000004 r/w 5-mux /觸摸屏返回電壓值范圍 3定義驅(qū)動(dòng)函數(shù)(tchscr.c) 圖 8-4 讀取觸摸點(diǎn) x 軸電壓值 圖 8-5 讀取觸摸點(diǎn)坐標(biāo) 82 圖 8-6 判斷觸摸動(dòng)作 4編寫測(cè)試函數(shù)(tchscr.c) 將觸摸動(dòng)作及觸摸點(diǎn)坐標(biāo)在超級(jí)終端上顯示出來(lái)。 5校準(zhǔn)觸摸屏坐標(biāo)輸出,轉(zhuǎn)換坐標(biāo),與 lcd 緊密配合 可以使用 tchscr_getscrxy()函數(shù)來(lái)獲得液晶屏的 x、y 方向的電壓范圍,分別點(diǎn)觸摸屏有 效面積的左上角和右下角,得到下列參數(shù): tchscr_xmax=1840
49、; tchscr_xmin=176; tchscr_ymax=195; tchscr_ymin=1910;/此數(shù)值僅供參考,請(qǐng)以實(shí)際校對(duì)為準(zhǔn) 七、思考題七、思考題 1)電阻型觸摸屏檢測(cè)坐標(biāo)值的原理 2)如果 lcd 坐標(biāo)原點(diǎn)在右下角,分辨率為 240x180,觸摸屏坐標(biāo)原點(diǎn)在右上角,請(qǐng)給出觸 摸屏輸出坐標(biāo)的轉(zhuǎn)換公式,對(duì)觸摸屏的分辨率有什么影響。 83 實(shí)驗(yàn)九 linux 操作系統(tǒng)安裝實(shí)驗(yàn) 一、實(shí)驗(yàn)?zāi)康囊?、?shí)驗(yàn)?zāi)康?1了解虛擬機(jī)安裝及配置。 2掌握虛擬機(jī)下安裝 linux 操作系統(tǒng)。 二、實(shí)驗(yàn)內(nèi)容二、實(shí)驗(yàn)內(nèi)容 學(xué)習(xí)觸虛擬機(jī)的安裝、配置,虛擬機(jī)下安裝 linux 操作系統(tǒng)。 三、預(yù)備知識(shí)三、預(yù)備知
50、識(shí) 1、虛擬機(jī)的安裝。 2、虛擬機(jī)的使用及工作環(huán)境配置。 3、虛擬機(jī)下 linux 操作系統(tǒng)安裝及其設(shè)置。 四、實(shí)驗(yàn)設(shè)備及工具四、實(shí)驗(yàn)設(shè)備及工具 硬件: pc 機(jī) pentium100 以上。 軟件:pc 機(jī)操作系統(tǒng) win2000 或 winxp、vmware workstation6.0.2、redhat linux 操作系統(tǒng)(鏡像/安裝盤) 五、實(shí)驗(yàn)步驟五、實(shí)驗(yàn)步驟 1) 、vmware 的安裝 a、找到安裝文件,雙擊運(yùn)行。這時(shí)候,vmware 安裝程序會(huì)解壓到臨時(shí)文件夾里面。 圖 9-1 解壓完成之后會(huì)出現(xiàn)安裝界面。點(diǎn)擊“next”繼續(xù)。 84 圖 9-2 要求選擇安裝類型。我們想省事
51、就一路 next 吧。但是我們通常不需要調(diào)試組件,所以 選 custom。 “integrated virtual debuggers”我們不需要,所以請(qǐng)按照下圖選擇。 85 現(xiàn)在應(yīng)該是這樣的。 想更改安裝目錄可以點(diǎn)擊“change”。 這里沒(méi)什么好選的。next。 86 點(diǎn)擊 install 開始安裝。 正在安裝。 87 開始安裝驅(qū)動(dòng)程序。 安裝完成之后要求輸入序列號(hào)。請(qǐng)支持正版。 88 點(diǎn)擊 “finish”結(jié)束安裝。此時(shí)提示重啟,但是不重啟事實(shí)上也沒(méi)有問(wèn)題。 現(xiàn)在 vmware 的安裝就完成了。 b)、安裝 linux 操作系統(tǒng) 第一次運(yùn)行-安裝設(shè)置一臺(tái) linux 虛擬機(jī) 在桌面或開始
52、菜單里面找到 vmware 的圖標(biāo),雙擊運(yùn)行即可。 89 第一次運(yùn)行會(huì)要求同意,當(dāng)然同意了。 這樣就進(jìn)入了 vmware 的主界面。 首先出現(xiàn) tips,去掉勾選再“close”就是。 以下即為主界面。 90 1. 建立虛擬機(jī)。 2. vmware 6.5 建立虛擬機(jī)的界面與以前版本相比,改動(dòng)較大。 3. 首先點(diǎn)擊“new virtual machine”按鈕,進(jìn)入新建虛擬機(jī)界面。 4. vmware 提供了 2 種新建虛擬機(jī)的方式:typical 和 custom。 先介紹簡(jiǎn)單的 typical 方式。點(diǎn)擊 next,會(huì)直接來(lái)到這樣一個(gè)界面,要求你插入操作 系統(tǒng)安裝盤(虛擬光驅(qū)亦可)或加載系
53、統(tǒng)安裝 iso。 91 這就是 vmware 6.5 引入的 easy install 特性,這個(gè)功能可以通過(guò)檢測(cè)安裝盤自動(dòng)確 定您要安裝的操作系統(tǒng),然后進(jìn)行從安裝系統(tǒng)到安裝 vmware tools 一條龍的全自動(dòng)無(wú)人值 守安裝,只需要在新建虛擬機(jī)向?qū)Ю锩孑斎胍恍┌惭b選項(xiàng)就可以了。這樣可以省去很多輸 入安裝選項(xiàng)的功夫,對(duì)于系統(tǒng)管理員尤其有用。 例如,我們使用加載 iso 功能,瀏覽到 deepin 6.1 的 iso 并打開,發(fā)現(xiàn) vm 判斷出系 統(tǒng)為 xp。 點(diǎn)擊下一步,要求輸入序列號(hào)等等信息。 輸入之后就點(diǎn)擊“下一步”。 92 要求給虛擬機(jī)起名,并且選擇虛擬機(jī)在主機(jī)硬盤上面保存的位置。建
54、議不要放在系統(tǒng) 盤。 再次下一步,會(huì)要求你決定虛擬機(jī)磁盤的大小,15g 足夠操作系統(tǒng)加開發(fā)安裝空間了。 點(diǎn)擊下一步,來(lái)到了最后一個(gè)界面。點(diǎn)擊完成就可以了。 93 此時(shí)虛擬機(jī)會(huì)自動(dòng)啟動(dòng),自動(dòng)為您完成一切工作,您可以半小時(shí)之后再回來(lái)看看,系 統(tǒng)已安裝完畢,可以使用了。 如果你不想自動(dòng)安裝系統(tǒng),或者你使用的是如“電腦公司特別版”一類的 ghost 安裝 盤以致于 easy install 不能用,那么在剛才要求你插入安裝盤的界面上,選擇第三項(xiàng): “i will install the system later”。 下一步之后會(huì)要求你選擇想安裝的操作系統(tǒng)。 94 很顯然,選擇 linux。點(diǎn)擊下一步。
55、 這時(shí)候會(huì)要求給虛擬機(jī)起名,并且選擇虛擬機(jī)在主機(jī)硬盤上面保存的位置。 下一步之后要求選擇虛擬機(jī)占用的磁盤空間大小。 95 再下一步就到了完成界面。 這些步驟和上文的一模一樣。但是,點(diǎn)擊完成之后,虛擬機(jī)不會(huì)自動(dòng)啟動(dòng),需要你手 工啟動(dòng),安裝操作系統(tǒng)和 vmware tools。這樣就完成了虛擬機(jī)的創(chuàng)建。 為虛擬機(jī)安裝操作系統(tǒng) 沒(méi)有操作系統(tǒng)的機(jī)器什么都干不成。首先要對(duì)虛擬機(jī)進(jìn)一些設(shè)置。 1. 點(diǎn)擊“virtual machine settings”。對(duì)話框里面選擇“floppy”然后 remove,再 選擇 cd/dvd,這里可以選擇使用主機(jī)的光驅(qū)還是 iso。 96 設(shè)置完成之后就點(diǎn)擊工具欄的 p
56、ower on 按鈕打開虛擬機(jī)吧!安裝系統(tǒng)的過(guò)程和實(shí)機(jī)安 裝一模一樣! 97 2. 進(jìn)入提示檢查光盤是否齊全的頁(yè)面,時(shí)間比較長(zhǎng).一般確實(shí)認(rèn)為自己的光盤沒(méi)問(wèn)題就可以 跳過(guò). 進(jìn)入歡迎頁(yè)面,直接下一步. 98 設(shè)置系統(tǒng)使用的語(yǔ)言,我選擇中文簡(jiǎn)體版然后下一步。 使用的鍵盤模式,一般不用理下一步就好了。 99 這時(shí)會(huì)彈出信息窗口叫你輸入安裝序列號(hào).你可以輸入,也可以跳過(guò).如果跳過(guò)則日后得不到 官方升級(jí). 彈出一個(gè)對(duì)話提示,由于硬盤是新的。沒(méi)有任何的分區(qū)表,所以系統(tǒng)提示我要初始化。確定. . 100 這里選擇的是分區(qū)結(jié)構(gòu)方案,系統(tǒng)默認(rèn) 3 種分區(qū)方案,一般都是選自己設(shè)置。 大家如果是選擇自定義的話就根據(jù)
57、需要來(lái)設(shè)置。但至少要設(shè)置一個(gè)根掛載點(diǎn)和一個(gè) swap 緩 101 存(這個(gè)通常為內(nèi)存的 2 倍)。 這一頁(yè)會(huì)設(shè)置引導(dǎo)的方式。高亮部分是需要注意的,在用引導(dǎo)的時(shí)候有利也有弊。利就是 在你忘記系統(tǒng)管理員帳號(hào)可以通過(guò)引導(dǎo)去重新設(shè)置系統(tǒng)管理員密碼,但弊就是如果不加密 任何人都可以輕易的修改管理員密碼并進(jìn)入系統(tǒng)。所以在應(yīng)用于實(shí)際環(huán)境中時(shí)千萬(wàn)要設(shè)置 密碼! 102 網(wǎng)絡(luò)部分可以先不設(shè)置,下一步 時(shí)區(qū),默認(rèn)下一步 103 設(shè)置 root 管理員帳號(hào)! 定制軟件的安裝包.新手可以選擇全部一次性安裝,熟悉的一般自己定制安裝 104 進(jìn)入到自定義的話要注意的地方是開發(fā)里面的兩個(gè)開發(fā)集。高亮部分,這兩個(gè)集成安裝上
58、去,免去你以后很多編譯上的麻煩。 然后剩下的都是下一步就可以的了! 105 106 至此,redhat 企業(yè)版 5 系統(tǒng)已將安裝完畢! 107 實(shí)驗(yàn)十 gcc 編譯器及 gdb 調(diào)試器實(shí)驗(yàn) 一、實(shí)驗(yàn)?zāi)康囊?、?shí)驗(yàn)?zāi)康?1熟悉 gcc 編譯器的使用。 2熟悉 gdb 調(diào)試器的使用。 二、實(shí)驗(yàn)內(nèi)容二、實(shí)驗(yàn)內(nèi)容 1. 學(xué)習(xí) gcc 編譯器編譯過(guò)程。 2. 學(xué)習(xí)用 gdb 調(diào)試器調(diào)試一段代碼。 三、實(shí)驗(yàn)設(shè)備及工具三、實(shí)驗(yàn)設(shè)備及工具 硬件: pc 機(jī) pentium100 以上。 軟件:pc 機(jī)操作系統(tǒng) win2000 或 winxp、vmware workstation6.0.2、redhat linu
59、x。 四、實(shí)驗(yàn)原理 1. gcc 編譯器的編譯過(guò)程: gcc 的編譯流程分為四個(gè)步驟: 1)預(yù)處理(pre-processing) 2)編譯(compiling) 3)匯編(assembling) 4)鏈接(linking) pre- processor (cpp / gcc -e) compiler (cc1 / gcc -s) assembler (as / gcc -c) linker (ld) hello.c (text) hello.i (text) hello.s (text) hello.o (binary) hello (binary) printf.o (binary) 2.
60、 gdb 調(diào)試器原理 gdb 調(diào)試器調(diào)試器是一款 gnu 開發(fā)組織并發(fā)布的 unix/linux 下的程序調(diào)試工具。gdb 讓 使用者能夠看到一個(gè)程序的內(nèi)部結(jié)構(gòu),指出變量的值,設(shè)置斷點(diǎn)并在源碼中進(jìn)行單步執(zhí)行。 要使用 gdb 進(jìn)行調(diào)試,一定要在編譯時(shí)加上調(diào)試選項(xiàng)“-g”。 # gcc -g test.c -o test # gdb test 108 調(diào)試的程序必須先進(jìn)行編譯,并把調(diào)試信息編譯進(jìn)去。這樣 gdb 才能找到變量、代碼行和 函數(shù)。要做到這一點(diǎn),只要在使用 gcc(或 g+)編譯的時(shí)候額外加一個(gè)“-g”的屬性即可, 如: gcc -g eg.c -o eg 運(yùn)行 gdb gdb 從 s
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 生態(tài)文明建設(shè)教育課程體系構(gòu)建與教學(xué)設(shè)計(jì)研究
- 數(shù)字仿真:產(chǎn)品創(chuàng)新加速器技術(shù)探索
- 煤系巷道頂板疊加理論與有效錨固層厚度應(yīng)用研究
- 醫(yī)療集團(tuán)資產(chǎn)管理辦法
- 熱紅外遙感勘探-洞察及研究
- 音樂(lè)傳播視角下高職學(xué)生合唱藝術(shù)審美能力培養(yǎng)策略研究
- 全員安全生產(chǎn)責(zé)任制清單模板
- 關(guān)于安全生產(chǎn)會(huì)議的法律規(guī)定
- 安全生產(chǎn)管理制度匯編格式
- 不同基屬混合加氫重油的催化裂化與裂解性能研究
- 開展退伍老兵活動(dòng)方案
- 年產(chǎn) 35 萬(wàn)噸金屬結(jié)構(gòu)件項(xiàng)目(一期年產(chǎn) 6 萬(wàn)噸金屬結(jié)構(gòu)件)環(huán)評(píng)報(bào)告書
- 【基于中國(guó)醫(yī)療行業(yè)上市公司數(shù)據(jù)的CAPM模型實(shí)證檢驗(yàn)分析7800字】
- 地產(chǎn) 設(shè)計(jì)培訓(xùn)課件
- 中國(guó)古建筑行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及投資前景展望報(bào)告
- 浙江杭州市2024-2025學(xué)年高一下學(xué)期6月期末考試物理試題及答案
- 員工勸退方案文案(3篇)
- 2025年高考全國(guó)一卷數(shù)學(xué)真題-答案
- 企業(yè)異地作業(yè)管理制度
- 陜西省專業(yè)技術(shù)人員繼續(xù)教育2025公需課《專業(yè)技術(shù)人員綜合素質(zhì)拓展》4學(xué)時(shí)題庫(kù)及答案
- 2025至2030年中國(guó)間規(guī)聚苯乙烯(SPS)行業(yè)市場(chǎng)全景調(diào)查及競(jìng)爭(zhēng)戰(zhàn)略分析報(bào)告
評(píng)論
0/150
提交評(píng)論