版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、嵌入式系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)實(shí)驗(yàn)報(bào)告書專業(yè)班級(jí)計(jì)132學(xué) 號(hào)139074059姓 名冉慶寒指導(dǎo)教師陶陶安徽工業(yè)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院實(shí)驗(yàn)一 熟悉實(shí)驗(yàn)開(kāi)發(fā)環(huán)境一、實(shí)驗(yàn)?zāi)康氖煜?ADS1.2 開(kāi)發(fā)環(huán)境,學(xué)會(huì) ARM 仿真器的使用。使用 ADS 編譯、下載、調(diào)試并跟蹤一段已有的程序,了解嵌入式開(kāi)發(fā)的基本思想和過(guò)程。二、實(shí)驗(yàn)內(nèi)容本次實(shí)驗(yàn)使用 ADS 集成開(kāi)發(fā)環(huán)境。新建一個(gè)簡(jiǎn)單的工程文件,并編譯這個(gè)工程文件。學(xué)習(xí) ARM 仿真器的使用和開(kāi)發(fā)環(huán)境的設(shè)置。 下載已經(jīng)編譯好的文件到嵌入式控制器中運(yùn)行。學(xué)會(huì)在程序中設(shè)置斷點(diǎn),觀察系統(tǒng)內(nèi)存和變量,為調(diào)試應(yīng)用程序打下基礎(chǔ)。三、預(yù)備知識(shí)C 語(yǔ)言的基礎(chǔ)知識(shí)、程序調(diào)試的基礎(chǔ)知識(shí)
2、和方法。四、實(shí)驗(yàn)設(shè)備及工具(包括軟件調(diào)試工具)硬件:ARM 嵌入式開(kāi)發(fā)平臺(tái)、用于 ARM7TDMI 的 JTAG 仿真器、PC 機(jī) Pentium100 以上、串口線。軟件:PC 機(jī)操作系統(tǒng) win98、Win2000 或 WinXP、ARM SDT 2.51 或 ADS1.2 集成開(kāi)發(fā)環(huán)境、仿真器驅(qū)動(dòng)程序、超級(jí)終端通訊程序。五、實(shí)驗(yàn)步驟1)建立工程(1)運(yùn)行 ADS1.2 集成開(kāi)發(fā)環(huán)境(CodeWarrior for ARM Developer Suite) 。選擇 FileNew菜單,在對(duì)話框中選擇 Project,如圖 1B-1 所示,新建一個(gè)工程文件。圖中示例的工程名為 Exp6.mc
3、p。點(diǎn) set按鈕可為該工程選擇路徑如圖 1B-2 所示,選中 CreatFolder 選項(xiàng)后將以圖 1B-1 中的 ProjectName 或圖 1B-2 中的文件名為名創(chuàng)建目錄,這樣可以將所有與該工程相關(guān)的文件放到該工程目錄下,便于管理工程。在圖1B-1中工程模板列表中的44B0 ARM Executable Image是專為本嵌入式開(kāi)發(fā)板設(shè)置的工程模板,后文有具體說(shuō)明。在此也可選擇 ARM Executable Image 通用模板。(2)在新建的工程中,如圖 1B-3 所示,選擇 Debug 版本,使用 Edit | Debug Settings菜單對(duì) Debug 版本進(jìn)行參數(shù)設(shè)置。(
4、3) 在 Debug Settings 對(duì)話框中選擇 Target Settings 項(xiàng), 如圖 1B-4 所示。 在 Post-linker一欄中選擇 ARM fromELF。(4)在 Debug Settings 對(duì)話框中選擇 ARM Linker 項(xiàng),如圖 1B-5。在 Output 選項(xiàng)卡的Simple image 框中設(shè)置連接的 Read-Only (只讀) 和 Read-Write (讀寫) 地址。 地址 0x0c080000是開(kāi)發(fā)板上 SDRAM 的真實(shí)地址, 是由系統(tǒng)的硬件決定的; 0x0c200000 指的是系統(tǒng)可讀寫的內(nèi)存地址。也就是說(shuō),在 0x0c0800000xC1ff
5、fff 之間是只讀區(qū)域,存放程序的代碼段,在0xC200000 開(kāi)始是程序的數(shù)據(jù)段。2) 進(jìn)行程序的在線仿真、調(diào)試(1)回到圖 1B-12 所示的工程窗口選中 Debug 版本,執(zhí)行菜單 Project | Make 對(duì)工程進(jìn)行編譯連接。在出現(xiàn)的錯(cuò)誤/警告窗口中選擇某錯(cuò)誤/警告信息,ADS 會(huì)自動(dòng)打開(kāi)相應(yīng)源文件并用箭頭指向出錯(cuò)的文本行。如果某個(gè)源文件被修改,重新編譯時(shí) ADS 會(huì)自動(dòng)同步各文件的日期信息。(2)在 ADS 中執(zhí)行菜單 Project | Debug 啟動(dòng) ADS1.2 的調(diào)試工具 AXD。(3) 在 AXD 中執(zhí)行菜單 Options | Configure Target 對(duì)
6、AXD 進(jìn)行設(shè)置。 如圖 1B-13 所示。選擇 ADP 即遠(yuǎn)程調(diào)試,點(diǎn) Configure 按鈕進(jìn)一步設(shè)置具體參數(shù),如圖 1B-14 所示。(4)在圖 1B-14 中點(diǎn) Select 按鈕選擇遠(yuǎn)程連接為 ARM ethernet driver,點(diǎn) Configure 按鈕輸入仿真器的 IP 地址。如果用戶使用的是并行口仿真器,請(qǐng)輸入 127.0.0.1 即可。(5)等待程序裝載完畢以后,通過(guò) Execute | Go 菜單以及 Execute | Stop(或者工具欄中的相應(yīng)按鈕)運(yùn)行或暫停程序。程序暫停后在窗口中將顯示出程序暫停的位置。(6)通過(guò) Execute | Step 菜單(或者工
7、具欄中的相應(yīng)按鈕)可以單步運(yùn)行程序。也可以使用 Step In、Step Out 菜單命令進(jìn)入或者跳出函數(shù)的調(diào)用。Run To Cursor 命令運(yùn)行到光標(biāo)位置。(7)程序停止后可以通過(guò) Processor Views | Sources 菜單查看源文件,并可在適當(dāng)位置按 F9 設(shè)置端點(diǎn)。(8)使用在 Processor View 菜單下的 Registers、Variables 和 Memory 命令可以查看工作寄存器或者內(nèi)存變量。讀者可以逐一地嘗試,為以后調(diào)試程序打下基礎(chǔ)。注意:在進(jìn)行調(diào)試時(shí)在 ADS 中必須選擇當(dāng)前工程的 Debug 版本, 如果選擇 Release 版本則無(wú)法正常調(diào)試程
8、序。但在調(diào)試通過(guò)后就必須選擇 Release 版本進(jìn)行編譯連接并將生產(chǎn)的system.bin 文件復(fù)制到開(kāi)發(fā)板的 Flash 中。 實(shí)驗(yàn)二 ARM串口實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康恼莆?ARM 的串行口工作原理。學(xué)習(xí)編程實(shí)現(xiàn) ARM 的 UART 通訊。掌握 CPU 利用串口通訊的方法。二、實(shí)驗(yàn)內(nèi)容學(xué)習(xí)串行通訊原理,了解串行通訊控制器,閱讀 ARM 芯片文檔,掌握 ARM 的 UART相關(guān)寄存器的功能,熟悉 ARM 系統(tǒng)硬件的 UART 相關(guān)接口。編程實(shí)現(xiàn) ARM 和計(jì)算機(jī)實(shí)現(xiàn)串行通訊:ARM 監(jiān)視串行口,將接收到的字符再發(fā)送給串口(計(jì)算機(jī)與開(kāi)發(fā)板是通過(guò)超級(jí)終端通訊的) ,即按 PC 鍵盤通過(guò)超級(jí)終端發(fā)送數(shù)
9、據(jù),開(kāi)發(fā)板將接收到的數(shù)據(jù)再返送給 PC,在超級(jí)終端上顯示。三、預(yù)備知識(shí)1、用 ARM SDT 2.5 或 ADS1.2 集成開(kāi)發(fā)環(huán)境,編寫和調(diào)試程序的基本過(guò)程。2、ARM 應(yīng)用程序的框架結(jié)構(gòu)。3、了解串行總線四、實(shí)驗(yàn)設(shè)備及工具硬件:ARM 嵌入式開(kāi)發(fā)平臺(tái)、用于 ARM7TDMI 的 JTAG 仿真器、PC 機(jī) Pentium100 以上、串口線。軟件:PC 機(jī)操作系統(tǒng) win98、Win2000 或 WinXP、ARM SDT 2.51 或 ADS1.2 集成開(kāi)發(fā)環(huán)境、仿真器驅(qū)動(dòng)程序、超級(jí)終端通訊程序。五、實(shí)驗(yàn)原理及說(shuō)明1異步串行 IO異步串行方式是將傳輸數(shù)據(jù)的每個(gè)字符一位接一位(例如先低位、
10、后高位)地傳送。數(shù)據(jù)的各不同位可以分時(shí)使用同一傳輸通道,因此串行 IO 可以減少信號(hào)連線,最少用一對(duì)線即可進(jìn)行。接收方對(duì)于同一根線上一連串的數(shù)字信號(hào),首先要分割成位,再按位組成字符。為了恢復(fù)發(fā)送的信息,雙方必須協(xié)調(diào)工作。在微型計(jì)算機(jī)中大量使用異步串行 IO 方式,雙方使用各自的時(shí)鐘信號(hào),而且允許時(shí)鐘頻率有一定誤差,因此實(shí)現(xiàn)較容易。但是由于每個(gè)字符都要獨(dú)立確定起始和結(jié)束(即每個(gè)字符都要重新同步),字符和字符間還可能有長(zhǎng)度不定的空閑時(shí)間,因此效率較低。串行接口的物理層標(biāo)準(zhǔn)通用的串行 IO 接口有許多種,現(xiàn)僅就最常見(jiàn)的兩種標(biāo)準(zhǔn)作簡(jiǎn)單介紹。1)EIA RS232C這是美國(guó)電子工業(yè)協(xié)會(huì)推薦的一種標(biāo)準(zhǔn)(E
11、lectronic industries Association Recoil-mendedStandard)。它在一種 25 針接插件(DB25)上定義了串行通信的有關(guān)信號(hào)。這個(gè)標(biāo)準(zhǔn)后來(lái)被世界各國(guó)所接受并使用到計(jì)算機(jī)的 IO 接口中。3ARM 自帶的串行口寄存器ARM 自帶兩個(gè)串行口, 各帶有 16 字節(jié)的 FIFO (先入先出寄存器) , 最大波特率 115.2K。每個(gè) UART 有 7 種狀態(tài):溢出錯(cuò)誤,校驗(yàn)錯(cuò)誤,幀錯(cuò)誤,暫停態(tài),接收緩沖區(qū)準(zhǔn)備好,發(fā)送緩沖區(qū)空,發(fā)送移位緩沖器空,這些狀態(tài)可以由相應(yīng)的 UTRSTATn/UERSTATn 表示,并且與發(fā)送接收緩沖區(qū)相對(duì)應(yīng)的有錯(cuò)誤緩沖區(qū)。波特
12、率的可以通過(guò)控制波特率寄存器(UBRDIVn)控制,與 UART 有關(guān)的寄存器主要有以下幾個(gè):UART 線性控制寄存器 ULCONn,其地址和各位的意義參見(jiàn)下表:UART 控制寄存器 UCONn,該寄存器決定 UART 的各種摸式。UART FIFO 控制寄存器 UFCONn,UART MODEM 控制寄存器,分別決定 UART FIFO 和 MODEM 的摸式。其中 UFCONn 的第 0 位決定是否啟用 FIFO, UMCONn 的第 0 位是請(qǐng)求發(fā)送位, 對(duì)我們來(lái)說(shuō)是比較重要的讀寫狀態(tài)寄存器 UTRSTAT 以及錯(cuò)誤狀態(tài)寄存 UERSTAT,可以反映芯片目前的讀寫狀態(tài)以及錯(cuò)誤類型。FIF
13、O 狀態(tài)寄存器 UFSTAT 和 MODEM 狀態(tài)寄存器 UMSTAT,通過(guò)前者可以讀出目前 FIFO 是否滿以及其中的字節(jié)數(shù);通過(guò)后者可以讀出目前 MODEM 的 CTS狀態(tài)。六、實(shí)驗(yàn)步驟1新建工程,將“Exp2 ARM 串口實(shí)驗(yàn)”中的文件添加到工程中,這些是啟動(dòng)時(shí)所需要的文件。2定義與 UART 有關(guān)的各個(gè)寄存器地址和一些特殊的位命令。3編寫串口驅(qū)動(dòng)函數(shù)(MyUart.c) 4在主函數(shù)中實(shí)現(xiàn)將從串口 0 接收到的數(shù)據(jù)發(fā)送到串口 0(Main.c)實(shí)驗(yàn)三 ARM的 A/D 接口實(shí)驗(yàn) 一、實(shí)驗(yàn)?zāi)康?1熟悉 ARM 本身自帶的八路十位 A/D 控制器及相應(yīng)寄存器。2編程實(shí)現(xiàn) ARM 系統(tǒng)的 A/
14、D 功能。 3掌握帶有 A/D 的 CPU 編程實(shí)現(xiàn) A/D 功能的主要方法。 二、實(shí)驗(yàn)內(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)采集全部前 4 路通道,并且在超級(jí)終端上顯示。 三、預(yù)備知識(shí) 1、用 ARM SDT 2.5 或 ADS1.2 集成開(kāi)發(fā)環(huán)境,編寫和調(diào)試程序的基本過(guò)程。2、ARM 應(yīng)用程序的框架結(jié)構(gòu)。3、能夠自己完成在 LCD 上顯示指定參量。 四、實(shí)驗(yàn)設(shè)備及工具 硬件:ARM 嵌入式開(kāi)發(fā)平臺(tái)、
15、用于 ARM7TDMI 的 JTAG 仿真器、PC 機(jī) Pentium100 以 上、模擬電壓信號(hào)源。 軟件:PC 機(jī)操作系統(tǒng) win98、Win2000 或 WinXP、ARM SDT 2.51 或 ADS1.2 集成開(kāi)發(fā) 環(huán)境、仿真器驅(qū)動(dòng)程序、超級(jí)終端通訊程序。五、實(shí)驗(yàn)步驟 1新建工程,將“Exp5 ARM A/D 接口實(shí)驗(yàn)”種的文件添加到工程。2編寫獲取轉(zhuǎn)換結(jié)果函數(shù)(main.c) 3主函數(shù)(main.c) 六、思考題1逐次逼近型的 A/D 轉(zhuǎn)換器原理是什么?答:逐次逼近型模數(shù)轉(zhuǎn)換器一般由順序脈沖發(fā)生器、逐次逼近寄存器、數(shù)模轉(zhuǎn)換器和電壓比較器等幾部分組成其原理框圖如圖所示:2 A/D 轉(zhuǎn)
16、換的重要指標(biāo)包括哪些?答:分辨率、轉(zhuǎn)換速率、量化誤差、偏移誤差、線性度、滿刻度誤差3 ARM 的 A/D 功能的相關(guān)寄存器有哪幾個(gè),對(duì)應(yīng)的地址是什么?答:ADC控制寄存器(ADCCON) 0X58000000 ADC觸摸屏控制寄存器(ADCTSC) 0X5800000A ADC啟動(dòng)延時(shí)寄存器(ADCDLY) 0X5800000C ADCDAT0 0X5800000C ADC轉(zhuǎn)換數(shù)據(jù)寄存器(ADCCON) ADCAT1 0X580000104如何啟動(dòng) ARM 開(kāi)始轉(zhuǎn)換 A/D,有幾種方式?轉(zhuǎn)換開(kāi)始時(shí) ARM 是如何知道轉(zhuǎn)換哪路通道的?如何判斷轉(zhuǎn)換結(jié)束?答:方式一:軟件啟動(dòng) 1. 定義與A/D轉(zhuǎn)換
17、相關(guān)的寄存器 2. 定義與A/D轉(zhuǎn)換相關(guān)的 寄存器初始化 3. RADCCON=0X1; 方式二:硬件啟動(dòng) 1. 復(fù)位A/D轉(zhuǎn)換器 2. 外接用高電平觸發(fā)ADCCON0.轉(zhuǎn)換開(kāi)始時(shí)ARM時(shí)知道轉(zhuǎn)換哪條通道的方式:通過(guò)對(duì)ADCCON5:3的未賦值來(lái)選擇通道。七、實(shí)驗(yàn)總結(jié) A/D 轉(zhuǎn)換器是模擬信號(hào)源和 CPU 之間聯(lián)系的接口,它將連續(xù)變化的模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào),以便計(jì)算機(jī)和數(shù)字系統(tǒng)進(jìn)行處理、存儲(chǔ)、控制和顯示。上面的截圖即是ARM 在循環(huán)采集全部前3路通道時(shí)候隨機(jī)截圖的。實(shí)驗(yàn)四 GUI繪圖實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?學(xué)習(xí)使用嵌入式系統(tǒng)繪圖的 API 函數(shù)。理解繪圖設(shè)備上下文( DC)在多任務(wù)操作系統(tǒng)中的作用
18、。會(huì)使用繪圖設(shè)備上下文( DC)在屏幕上繪制一個(gè)圓角矩形和一個(gè)圓。了解繪制動(dòng)畫防止閃爍的基本原理,可以實(shí)現(xiàn)無(wú)閃爍的動(dòng)畫。二、實(shí)驗(yàn)內(nèi)容 本次實(shí)驗(yàn)通過(guò)使用嵌入式系統(tǒng)的繪圖 API 函數(shù),首先,在屏幕上繪制一個(gè)圓角矩形和一個(gè)整圓。然后,再在屏幕上無(wú)閃爍的繪制一個(gè)移動(dòng)的正弦波。三、預(yù)備知識(shí)1、用 ARM SDT 2.5 或 ADS1.2 集成開(kāi)發(fā)環(huán)境,編寫和調(diào)試程序的基本過(guò)程。2、基于 uCOS-II 操作系統(tǒng)的應(yīng)用程序的框架結(jié)構(gòu)。四、實(shí)驗(yàn)設(shè)備及工具(包括軟件調(diào)試工具)硬件: ARM 嵌入式開(kāi)發(fā)平臺(tái)、用于 ARM7TDMI 的 JTAG 仿真器、 PC 機(jī) Pentium100 以上。軟件: PC 機(jī)
19、操作系統(tǒng) win98、 Win2000 或 WinXP、 ARM SDT 2.51 或 ADS1.2 集成開(kāi)發(fā)環(huán)境、仿真器驅(qū)動(dòng)程序、超級(jí)終端通訊程序五、實(shí)驗(yàn)步驟1、新建工程,將“ Exp14 繪圖的 API 函數(shù)”中的文件加入工程。2、編輯 Main.c 文件,在 Main_Task 任務(wù)中加入代碼。使用操作系統(tǒng)的繪圖 API 函數(shù),繪制出如圖所示的圖形。 提示:1)繪制整個(gè)圓可以用 Circle 函數(shù),繪制直線用 LineTo 函數(shù),繪制圓弧用 ArcTo 函數(shù)。調(diào)試的過(guò)程中可以在每次調(diào)用繪圖函數(shù)之后調(diào)用 OSTimeDly()函數(shù),使系統(tǒng)更新顯示,輸出到液晶屏上。2)為方便繪圖,可使用 S
20、etDrawOrg 函數(shù)設(shè)置繪圖的原點(diǎn)。3)因?yàn)楸敬螌?shí)驗(yàn)不用系統(tǒng)的字符顯示,所以,可以去掉 Main()函數(shù)中 LoadFont()函數(shù),以節(jié)省系統(tǒng)啟動(dòng)的時(shí)間。3、用 ARM SDT 2.5 或 ADS1.2 編譯、下載并調(diào)試上述程序,檢查運(yùn)行結(jié)果。4、在屏幕上無(wú)閃爍的繪制一個(gè)移動(dòng)的正弦波。提示:1)繪制正弦波等有數(shù)學(xué)表達(dá)式的曲線時(shí),可以根據(jù)平面幾何的知識(shí)通過(guò)數(shù)學(xué)計(jì)算得到曲線上點(diǎn)的坐標(biāo),然后用線段連起來(lái)構(gòu)成整個(gè)曲線。兩幀畫面之間可以清屏擦掉原來(lái)圖形,然后重畫新圖形。2)因?yàn)槔L圖需要使用 sin()函數(shù),所以需要在 main.c 中加入#include <math.h>。5、用 AR
21、M SDT 2.5 或 ADS1.2 編譯、下載并調(diào)試上述程序,檢查運(yùn)行結(jié)果。6、生成發(fā)行版本的.bin 文件,通過(guò) USB 下載到嵌入式開(kāi)發(fā)板中,運(yùn)行并檢查輸出結(jié)果。六、思考題1怎樣實(shí)現(xiàn)復(fù)雜的圖形繪畫?如何利用象素的邏輯運(yùn)算提高圖形重畫速度? 復(fù)雜代碼可以實(shí)現(xiàn)復(fù)雜的圖形繪畫2怎樣實(shí)現(xiàn)一個(gè)低速示波器,將 AD 采集的結(jié)果用曲線繪制出來(lái)? 用C語(yǔ)言模擬示波器實(shí)驗(yàn)五 文件操作一、實(shí)驗(yàn)?zāi)康?學(xué)習(xí)使用文件相關(guān)的 API 函數(shù),了解在 uCOS-II 操作系統(tǒng)上擴(kuò)展文件系統(tǒng)的情況。二、實(shí)驗(yàn)內(nèi)容 通過(guò)使用開(kāi)發(fā)平臺(tái)提供的 API 函數(shù),打開(kāi)一個(gè)保存在 FLASH 海量存儲(chǔ)器中的英文文本文件,將其文件內(nèi)容輸出
22、顯示在液晶屏上。三、預(yù)備知識(shí)1、用 ARM SDT 2.5 或 ADS1.2 集成開(kāi)發(fā)環(huán)境,編寫和調(diào)試程序的基本過(guò)程。2、基于 uCOS-II 操作系統(tǒng)的應(yīng)用程序的框架結(jié)構(gòu)。3、操作系統(tǒng)原理中有關(guān)文件系統(tǒng)的知識(shí),了解文本文件以及字符串的處理方法。4、使用 LCD_printf 向液晶屏輸出字符。四、實(shí)驗(yàn)設(shè)備及工具(包括軟件調(diào)試工具)硬件: ARM 嵌入式開(kāi)發(fā)平臺(tái)、用于 ARM7TDMI 的 JTAG 仿真器、 PC 機(jī) Pentium100 以上。軟件: PC 機(jī)操作系統(tǒng) win98、 Win2000 或 WinXP、 ARM SDT 2.51 或 ADS1.2 集成開(kāi)發(fā)環(huán)境、仿真器驅(qū)動(dòng)程序、
23、超級(jí)終端通訊程序五、實(shí)驗(yàn)原理 uCOS-II 操作系統(tǒng)本身并沒(méi)有文件系統(tǒng),不支持文件相關(guān)的管理功能。在將 uCOS-II 操作系統(tǒng)移植到 ARM 嵌入式開(kāi)發(fā)平臺(tái)時(shí)參考 FAT16 為該系統(tǒng)擴(kuò)展了一個(gè)簡(jiǎn)單的文件系統(tǒng),從而使該操作系統(tǒng)功能更強(qiáng)大,也符合實(shí)際嵌入式產(chǎn)品開(kāi)發(fā)的需要。開(kāi)發(fā)平臺(tái)的硬件中有一片容量至少 16M 的 NAND FLASH 存儲(chǔ)芯片作為嵌入式設(shè)備的固態(tài)數(shù)據(jù)存儲(chǔ)器, 或稱為電子硬盤。該存儲(chǔ)器由文件系統(tǒng)管理,在文件系統(tǒng)的功能函數(shù)與 FLASH 芯片之間有相關(guān)驅(qū)動(dòng)程序?qū)崿F(xiàn)高層系統(tǒng)功能和底層具體硬件的數(shù)據(jù)交換。嵌入式系統(tǒng)經(jīng)常使用的存儲(chǔ)介質(zhì) FLASH 芯片具有和磁盤完全不同的結(jié)構(gòu)特點(diǎn),開(kāi)
24、發(fā)平臺(tái)上的 K9F2808U0A 芯片具有 1024 個(gè) Block,每個(gè) Block 有 32 個(gè) Page,每個(gè) Page 有 51216528 個(gè) Byte。這種芯片的讀寫操作具有以下特點(diǎn):1)必須以 Page 為單位進(jìn)行讀寫;2)寫之前必須先擦除原有內(nèi)容;3)擦除操作必須對(duì) Block 進(jìn)行,即一次至少擦除一個(gè) Block 的內(nèi)容。針對(duì)這種情況,將一個(gè) Page 定為一個(gè)扇區(qū);將 2 個(gè) Block 即 64 個(gè)扇區(qū)定為一個(gè)簇簇的容量正好為 512×6432K,滿足 FAT16 對(duì)簇的要求。 FAT 是按簇為單位分配空間的,但其給出的地址 LBA( Logical Block
25、 Address)只是一個(gè)扇區(qū)號(hào), 比如 LBA=0x40 對(duì)于 FLASH芯片來(lái)說(shuō)實(shí)際代表簇 2 的扇區(qū) 0。因此需要將 LBA 轉(zhuǎn)換為芯片的物理地址才可以進(jìn)行數(shù)據(jù)存取操作。轉(zhuǎn)換關(guān)系如下: FLASH 的 BlockLBA/0x20; FLASH 的 Page LBA%0x20。 根據(jù)該公式就可以將 LBA 轉(zhuǎn)換為正確的 Block 和 Page,然后就可以用芯片的讀寫命令存取該 Block/Page 的數(shù)據(jù)了。FAT 文件系統(tǒng)包括 MBR 區(qū), FAT 區(qū), DIR 區(qū), DATA 區(qū)。其中 MBR(主引導(dǎo)記錄)區(qū)在磁盤文件系統(tǒng)中也稱 0 扇區(qū)。硬盤上由于存在多個(gè)分區(qū)而在每個(gè)分區(qū)中還有 D
26、BR( DOS引導(dǎo)記錄)區(qū)。 MBR 扇區(qū)必須包括 BPB( BIOS Parameter Block),其中有對(duì)文件系統(tǒng)進(jìn)行識(shí)別的關(guān)鍵信息。由于開(kāi)發(fā)平臺(tái)的電子硬盤結(jié)構(gòu)比較簡(jiǎn)單并且不要求啟動(dòng), MBR 不必含有啟動(dòng)代碼,但最后兩個(gè)字節(jié)必須是 0x55AA。關(guān)于引導(dǎo)扇區(qū)、 FAT 和 DIR 的詳細(xì)結(jié)構(gòu)請(qǐng)參考相關(guān)資料。FLASH 前兩個(gè) Block 的內(nèi)容如下:在系統(tǒng)對(duì) FLASH 芯片進(jìn)行格式化操作時(shí)將 FAT 寫入芯片,使其邏輯空間符合文件系統(tǒng)的需要。當(dāng)主機(jī)發(fā)出 READ 命令后, FLASH 讀寫操作開(kāi)始,首先讀取 MBR 得到諸如扇區(qū)大小、每簇扇區(qū)數(shù)、總扇區(qū)數(shù)等存儲(chǔ)介質(zhì)有關(guān)信息。然后讀取
27、 FAT 得到文件目錄列表,基于此就可以進(jìn)行文件的復(fù)制、刪除、創(chuàng)建等操作了。開(kāi)發(fā)平臺(tái)的電子硬盤可以和 USB 通訊構(gòu)成 U 盤,當(dāng)和 PC 機(jī)連接并激活該 U 盤后會(huì)在 PC 上出現(xiàn)可移動(dòng)磁盤。 PC 機(jī)啟動(dòng)時(shí) BIOS 會(huì)讀取 MBR 中的 Excutable Code(引導(dǎo)程序)并把控制權(quán)轉(zhuǎn)交于它,然后由該引導(dǎo)程序負(fù)責(zé)引導(dǎo)操作系統(tǒng)。而 ARM 嵌入式設(shè)備啟動(dòng)時(shí) BIOS 則直接依賴文件系統(tǒng)從 FLASH 中引導(dǎo)用戶的可執(zhí)行程序。在用戶程序中也可以使用平臺(tái)提供的文件操作函數(shù)存取 FLASH 中的文件。請(qǐng)參考附錄 API 函數(shù)文件系統(tǒng)部分,在 OSFile.h 中定義。有了這個(gè)文件系統(tǒng)函數(shù),用
28、戶就能屏蔽硬件上 FLASH 芯片物理空間和讀寫時(shí)序等復(fù)雜問(wèn)題,可以象在 PC 機(jī)上一樣使用文件系統(tǒng),存取并處理文件。在使用文件系統(tǒng)之前必須通過(guò) initOSFile()函數(shù)初始化文件系統(tǒng), 為文件緩沖區(qū)分配存儲(chǔ)空間。 FILE 是一個(gè)文件相關(guān)的結(jié)構(gòu)體,定義如下:typedef structU8 BufferBlock_Size; /文件緩沖區(qū) 32*1024U32 fileCluster; /文件當(dāng)前的簇的位置U32 filemode; /打開(kāi)文件的模式U32 filebufnum; /文件緩沖區(qū)中已經(jīng)讀取/寫入的字節(jié)數(shù)U32 fileCurpos; /讀寫的當(dāng)前位置U32 filesize
29、; /文件的大小FILE;在 FLASH 存儲(chǔ)器中數(shù)據(jù)是按整塊( Block)存儲(chǔ)的,在文件緩沖區(qū)中是以 Block 為單位開(kāi)辟空間的,每個(gè) Block 是 16KB 大小。 另外可以用 OpenOSFile()函數(shù)以指定模式打開(kāi)文件;用 ReadOSFile()函數(shù)讀取已打開(kāi)文件 數(shù) 據(jù) 到 指 定 緩 沖 區(qū) ; 用 WriteOSFile() 函 數(shù) 將 指 定 緩 沖 區(qū) 的 數(shù) 據(jù) 寫 入 到 文 件 ; 用LineReadOSFile()函數(shù)讀取文本文件的一行字符;用 CloseOSFile()函數(shù)關(guān)閉文件,釋放文件緩沖區(qū);用 SeekOSFile()函數(shù)定位文件指針;用 Dele
30、teOSFile()函數(shù)刪除指定文件。六、實(shí)驗(yàn)步驟1、進(jìn)入嵌入式開(kāi)發(fā)平臺(tái)的 BIOS,連接 USB 電纜并激活 U 盤,在 PC 機(jī)上向開(kāi)發(fā)平臺(tái)的 FLASH 存儲(chǔ)器復(fù)制一個(gè)小體積文本文件。2、新建工程,將“ Exp16 文件的使用”中的文件加入工程。3、打開(kāi) Main.c 文件,編輯 Main_Task 任務(wù)中的代碼,打開(kāi)上述的文本文件,逐行讀取文件,并顯示在液晶屏上。具體的流程如圖所示:提示:1) 使用 OpenOSFile()函數(shù)以只讀方式( FILEMODE_READ)打開(kāi)文件。2)通過(guò) LineReadOSFile()函數(shù)逐行讀取文本文件,并在液晶屏上顯示出來(lái)。LineReadOSF
31、ile()函數(shù)的返回值是讀取該行的字節(jié)數(shù)(包括:回車和換行符),可以根據(jù)LineReadOSFile()函數(shù)的返回值判斷是否讀到文件的結(jié)尾(讀到文件結(jié)尾時(shí)該函數(shù)返回值小于 2,只有換行回車的空行等于 2)。3)文件讀取完畢以后,一定要用 CloseOSFile()函數(shù)關(guān)閉文件,釋放文件緩沖區(qū)中的內(nèi)存空間。4、用 ARM SDT 2.5 或 ADS1.2 編譯、下載并調(diào)試上述程序,檢查運(yùn)行結(jié)果。5、生成發(fā)行版本的.bin 文件,通過(guò) USB 下載到嵌入式開(kāi)發(fā)板中,運(yùn)行并檢查輸出結(jié)果。七、思考題1 PC 機(jī)上的文件系統(tǒng)原理是怎樣的? PC 機(jī)的啟動(dòng)過(guò)程是怎樣的?2如何在應(yīng)用程序中把采集的數(shù)據(jù)用文件
32、形式保存到 FLASH?實(shí)驗(yàn)六 UDP通訊實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?學(xué)習(xí) UDP 通訊原理。2掌握 Socket 編程方法。二、實(shí)驗(yàn)內(nèi)容編程實(shí)現(xiàn)嵌入式開(kāi)發(fā)平臺(tái)和計(jì)算機(jī)之間的 UDP 通訊。通過(guò)觸摸屏進(jìn)行畫圖,使其在液晶屏上顯示,同時(shí)通過(guò)網(wǎng)絡(luò)傳輸數(shù)據(jù),使其在計(jì)算機(jī)屏幕上顯示;由計(jì)算機(jī)控制清除液晶屏上的圖形。三、預(yù)備知識(shí)1用 ARM SDT 2.5 或 ADS1.2 集成開(kāi)發(fā)環(huán)境,編寫和調(diào)試程序的基本過(guò)程。2基于 uCOS-II 操作系統(tǒng)的應(yīng)用程序的框架結(jié)構(gòu)。3系統(tǒng)消息循環(huán)和觸摸屏消息的處理。4繪圖 API 函數(shù)的使用4UDP 通信原理和網(wǎng)絡(luò)相關(guān)知識(shí)。四、實(shí)驗(yàn)設(shè)備及工具硬件:ARM 嵌入式開(kāi)發(fā)平臺(tái)、用于
33、ARM7TDMI 的 JTAG 仿真器、PC 機(jī) Pentium100 以上、交叉序網(wǎng)線。軟件:PC 機(jī)操作系統(tǒng) win98、Win2000 或 WinXP、ARM SDT 2.51 或 ADS1.2 集成開(kāi)發(fā)環(huán)境、仿真器驅(qū)動(dòng)程序、超級(jí)終端通訊程序。五、實(shí)驗(yàn)原理及說(shuō)明1UDP 協(xié)議簡(jiǎn)介1)UDP 協(xié)議簡(jiǎn)介UDP 協(xié)議是英文 User Datagram Protocol 的縮寫,即用戶數(shù)據(jù)報(bào)協(xié)議,主要用來(lái)支持那些需要在計(jì)算機(jī)之間傳輸數(shù)據(jù)的網(wǎng)絡(luò)應(yīng)用。包括網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)在內(nèi)的眾多客戶/ 服務(wù)器模式的網(wǎng)絡(luò)應(yīng)用都需要使用 UDP 協(xié)議。UDP 協(xié)議從問(wèn)世至今已經(jīng)被使用了很多年,雖然其最初的光彩已經(jīng)被一
34、些類似協(xié)議所掩蓋, 但即使是在今天, UDP 仍然不失為一項(xiàng)非常實(shí)用和可行的網(wǎng)絡(luò)傳輸層協(xié)議。與我們所熟知的 TCP(傳輸控制協(xié)議)協(xié)議一樣,UDP 協(xié)議直接位于 IP(網(wǎng)際協(xié)議)協(xié)議的頂層。根據(jù) OSI(開(kāi)放系統(tǒng)互連)參考模型,UDP 和 TCP 都屬于傳輸層協(xié)議。UDP 協(xié)議的主要作用是將網(wǎng)絡(luò)數(shù)據(jù)流壓縮成數(shù)據(jù)報(bào)的形式。一個(gè)典型的數(shù)據(jù)報(bào)就是一個(gè)二進(jìn)制數(shù)據(jù)的傳輸單位。每一個(gè)數(shù)據(jù)報(bào)的前 8 個(gè)字節(jié)用來(lái)包含報(bào)頭信息,剩余字節(jié)則用來(lái)包含具體的傳輸數(shù)據(jù)。 UDP 報(bào)頭由 4 個(gè)域組成,其中每個(gè)域各占用 2 個(gè)字節(jié),具體如下:2)UDP 和 TCP 協(xié)議的主要區(qū)別UDP 和 TCP 協(xié)議的主要區(qū)別是兩者在
35、如何實(shí)現(xiàn)信息的可靠傳遞方面不同。TCP 協(xié)議中包含了專門的傳遞保證機(jī)制,當(dāng)數(shù)據(jù)接收方收到發(fā)送方傳來(lái)的信息時(shí),會(huì)自動(dòng)向發(fā)送方發(fā)出確認(rèn)消息;發(fā)送方只有在接收到該確認(rèn)消息之后才繼續(xù)傳送其它信息,否則將一直等待直到收到確認(rèn)信息為止。與 TCP 不同,UDP 協(xié)議并不提供數(shù)據(jù)傳送的保證機(jī)制。如果在從發(fā)送方到接收方的傳遞過(guò)程中出現(xiàn)數(shù)據(jù)報(bào)的丟失,協(xié)議本身并不能做出任何檢測(cè)或提示。因此,通常人們把 UDP協(xié)議稱為不可靠的傳輸協(xié)議。2SOCKET 簡(jiǎn)介1)什么是 SocketSocket 接口是 TCP/IP 網(wǎng)絡(luò)的 API, Socket 接口定義了許多函數(shù)或例程, 程序員可以用它們來(lái)開(kāi)發(fā) TCP/IP 網(wǎng)絡(luò)
36、上的應(yīng)用程序。要學(xué) Internet 上的 TCP/IP 網(wǎng)絡(luò)編程,必須理解 Socket接口。Socket 接口設(shè)計(jì)者最先是將接口放在 Unix 操作系統(tǒng)里面的。如果了解 Unix 系統(tǒng)的輸入和輸出,就很容易了解 Socket 了。絡(luò)的 Socket 數(shù)據(jù)傳輸是一種特殊的 I/O,Socket 也是一種文件描述符。Socket 也具有一個(gè)類似于打開(kāi)文件的函數(shù)調(diào)用 Socket(),該函數(shù)返回一個(gè)整型的 Socket 描述符, 隨后連接建立、 數(shù)據(jù)傳輸?shù)炔僮鞫际峭ㄟ^(guò)該 Socket 實(shí)現(xiàn)的。 常用的 Socket類型有兩種:流式 Socket(SOCK_STREAM)和數(shù)據(jù)報(bào)式 Socket(
37、SOCK_DGRAM) 。流式是一種面向連接的 Socket,針對(duì)于面向連接的 TCP 服務(wù)應(yīng)用;數(shù)據(jù)報(bào)式 Socket 是一種無(wú)連接的 Socket,對(duì)應(yīng)于無(wú)連接的 UDP 服務(wù)應(yīng)用。2)Socket 建立為了建立 Socket, 程序可以調(diào)用 Socket 函數(shù), 該函數(shù)返回一個(gè)類似于文件描述符的句柄。socket 函數(shù)原型為:int socket(int domain, int type, int protocol);domain 指明所使用的協(xié)議族,通常為 PF_INET,表示互聯(lián)網(wǎng)協(xié)議族(TCP/IP 協(xié)議族) ;type 參數(shù)指定 socket 的類型:SOCK_STREAM 或
38、SOCK_DGRAM,Socket 接口還定義了原始 Socket(SOCK_RAW) ,允許程序使用低層協(xié)議;protocol 通常賦值"0"。Socket()調(diào)用返回一個(gè)整型 socket 描述符,你可以在后面的調(diào)用使用它。Socket 描述符是一個(gè)指向內(nèi)部數(shù)據(jù)結(jié)構(gòu)的指針,它指向描述符表入口。調(diào)用 Socket 函數(shù)時(shí),socket 執(zhí)行體將建立一個(gè) Socket,實(shí)際上"建立一個(gè) Socket"意味著為一個(gè) Socket 數(shù)據(jù)結(jié)構(gòu)分配存儲(chǔ)空間。Socket 執(zhí)行體為你管理描述符表。兩個(gè)網(wǎng)絡(luò)程序之間的一個(gè)網(wǎng)絡(luò)連接包括五種信息:通信協(xié)議、本地協(xié)議地址、
39、本地主機(jī)端口、遠(yuǎn)端主機(jī)地址和遠(yuǎn)端協(xié)議端口。Socket 數(shù)據(jù)結(jié)構(gòu)中包含這五種信息。3)Socket 配置通過(guò) socket 調(diào)用返回一個(gè) socket 描述符后,在使用 socket 進(jìn)行網(wǎng)絡(luò)傳輸以前,必須配置該 socket。面向連接的 socket 客戶端通過(guò)調(diào)用 Connect 函數(shù)在 socket 數(shù)據(jù)結(jié)構(gòu)中保存本地和遠(yuǎn)端信息。無(wú)連接 socket 的客戶端和服務(wù)端以及面向連接 ocket 的服務(wù)端通過(guò)調(diào)用 bind 函數(shù)來(lái)配置本地信息。4)連接建立面向連接的客戶程序使用 Connect 函數(shù)來(lái)配置 socket 并與遠(yuǎn)端服務(wù)器建立一個(gè) TCP 連接,其函數(shù)原型為:int connec
40、t(int sockfd, struct sockaddr *serv_addr,int addrlen);Sockfd 是 socket 函數(shù)返回的 socket 描述符;serv_addr 是包含遠(yuǎn)端主機(jī) IP 地址和端口號(hào)的指針;addrlen 是遠(yuǎn)端地質(zhì)結(jié)構(gòu)的長(zhǎng)度。Connect 函數(shù)在出現(xiàn)錯(cuò)誤時(shí)返回-1,并且設(shè)置 errno為相應(yīng)的錯(cuò)誤碼。進(jìn)行客戶端程序設(shè)計(jì)無(wú)須調(diào)用 bind(),因?yàn)檫@種情況下只需知道目的機(jī)器的 IP 地址,而客戶通過(guò)哪個(gè)端口與服務(wù)器建立連接并不需要關(guān)心,socket 執(zhí)行體為你的程序自動(dòng)選擇一個(gè)未被占用的端口,并通知你的程序數(shù)據(jù)什么時(shí)候到達(dá)端口。5)數(shù)據(jù)傳輸Sen
41、d()和 recv()這兩個(gè)函數(shù)用于面向連接的 socket 上進(jìn)行數(shù)據(jù)傳輸。Send()函數(shù)原型為:int send(int sockfd, const void *msg, int len, int flags);Sockfd 是你用來(lái)傳輸數(shù)據(jù)的 socket 描述符;msg 是一個(gè)指向要發(fā)送數(shù)據(jù)的指針;Len 是以字節(jié)為單位數(shù)據(jù)的長(zhǎng)度;flags 一般情況下設(shè)置為 0(關(guān)于該參數(shù)的用法可參照 man 手冊(cè)) 。Send()函數(shù)返回實(shí)際上發(fā)送出的字節(jié)數(shù),可能會(huì)少于你希望發(fā)送的數(shù)據(jù)。在程序中應(yīng)該將 send()的返回值與欲發(fā)送的字節(jié)數(shù)進(jìn)行比較。 當(dāng) send()返回值與 len 不匹配時(shí),
42、應(yīng)該對(duì)這種情況進(jìn)行處理。6)結(jié)束傳輸當(dāng)所有的數(shù)據(jù)操作結(jié)束以后,你可以調(diào)用 close()函數(shù)來(lái)釋放該 socket,從而停止在該socket 上的任何數(shù)據(jù)操作:close(sockfd);你也可以調(diào)用 shutdown()函數(shù)來(lái)關(guān)閉該 socket。該函數(shù)允許你只停止在某個(gè)方向上的數(shù)據(jù)傳輸,而一個(gè)方向上的數(shù)據(jù)傳輸繼續(xù)進(jìn)行??梢躁P(guān)閉某 socket 的寫操作而允許繼續(xù)在該socket 上接受數(shù)據(jù),直至讀入所有數(shù)據(jù)。int shutdown(int sockfd,int how);Sockfd 是需要關(guān)閉的 socket 的描述符。參數(shù) how 允許為 shutdown 操作選擇以下幾種方式:0-
43、不允許繼續(xù)接收數(shù)據(jù)1-不允許繼續(xù)發(fā)送數(shù)據(jù)2-不允許繼續(xù)發(fā)送和接收數(shù)據(jù),均為允許則調(diào)用 close ()shutdown 在操作成功時(shí)返回 0,在出現(xiàn)錯(cuò)誤時(shí)返回-1 并置相應(yīng) errno。六、實(shí)驗(yàn)步驟1新建工程,將“Exp20UDP 通訊實(shí)驗(yàn)”中的文件加入工程。2在 main.c 文件中編輯初始化網(wǎng)絡(luò)函數(shù)。3定義計(jì)算機(jī)端套接字,全局變量。struct sockaddr_in servaddr;4編寫 Main_Task 任務(wù)及消息循環(huán)主要負(fù)責(zé)響應(yīng)觸摸屏消息,在屏幕上畫圖,然后將數(shù)據(jù)傳輸?shù)接?jì)算機(jī)上。流程圖見(jiàn)圖20-2。提示:1)對(duì)觸摸屏消息的處理和鍵盤消息類似,其消息類型 pMsg->Mes
44、sage 為OSM_TOUCH_SCREEN, 消息參數(shù) pMsg->LParam 中包含了觸摸屏的動(dòng)作信息, 定義如下:#define TCHSCR_ACTION_NULL 0 #define TCHSCR_ACTION_CLICK 1 /觸摸屏單擊#define TCHSCR_ACTION_DBCLICK 2 /觸摸屏雙擊#define TCHSCR_ACTION_DOWN 3 /觸摸屏按下#define TCHSCR_ACTION_UP 4 /觸摸屏抬起#define TCHSCR_ACTION_MOVE 5 /觸摸屏移動(dòng)消息參數(shù) pMsg->WParam 中則包含了觸摸點(diǎn)的
45、坐標(biāo)信息,低 16 位是 X 坐標(biāo)值,高16 位是 Y 坐標(biāo)值。這里當(dāng)觸摸屏產(chǎn)生“按下”動(dòng)作后采用 MoveTo()函數(shù)設(shè)置繪圖起始點(diǎn)坐標(biāo),當(dāng)產(chǎn)生“移動(dòng)”動(dòng)作后采用 LineTo()函數(shù)繪制線段。5編寫 Receive_Task 任務(wù)主要負(fù)責(zé)接收計(jì)算機(jī)發(fā)出的清屏控制命令,來(lái)執(zhí)行清屏操作。同時(shí)在計(jì)算機(jī)端設(shè)置開(kāi)發(fā)平臺(tái) IP 時(shí)負(fù)責(zé)接收數(shù)據(jù)包來(lái)獲得計(jì)算機(jī)端 IP。 6用 ARM SDT 2.5 或 ADS1.2 編譯、下載并調(diào)試上述程序,檢查運(yùn)行結(jié)果。7打開(kāi) VC 目錄下的上位機(jī)控制程序,點(diǎn)菜單“控制>設(shè)置 IP”并在對(duì)話框中輸入開(kāi)發(fā)平臺(tái)的 IP (確定后控制程序只是向開(kāi)發(fā)平臺(tái)發(fā)送一個(gè)數(shù)據(jù), 使其獲得計(jì)算機(jī)的 IP 及端口) 。8用手指在觸摸屏上輕輕的畫圖,在計(jì)算機(jī)控制軟件的窗口中顯示相應(yīng)的圖形。9通過(guò)菜單“控制>清屏”命令可以清除計(jì)算機(jī)和觸摸屏上的圖形,重新繪圖。實(shí)驗(yàn)七 綜合設(shè)計(jì)實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?進(jìn)一步了解觸摸屏的工作原理。2學(xué)習(xí)在 uCOS-II 操作系統(tǒng)下對(duì)觸摸屏的編程。3進(jìn)一步熟悉繪圖 API,圖形控件,消息循環(huán)等內(nèi)容。二、實(shí)驗(yàn)內(nèi)容 在液晶屏上設(shè)置四個(gè)按鈕控件,表示四種畫板功能:畫直線、畫圓、畫任意折線以及清除圖形。在觸摸屏上單擊一個(gè)按鈕后,即可以開(kāi)始在觸摸屏上畫圖或清除原來(lái)的圖形。三、
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 研學(xué)課程設(shè)計(jì)剪紙
- 水控課程設(shè)計(jì)致謝模板
- 2024年吉林省安全員-B證考試題庫(kù)附答案
- 油品儲(chǔ)存與裝卸課程設(shè)計(jì)
- 研學(xué)課程設(shè)計(jì)措施和方法
- 電池課程設(shè)計(jì)目錄
- 2024江西省安全員《B證》考試題庫(kù)
- 2025四川省建筑安全員《B證》考試題庫(kù)
- 2025天津市安全員-C證(專職安全員)考試題庫(kù)
- 渦輪本體課程設(shè)計(jì)工序卡
- 齊魯名家 談方論藥智慧樹(shù)知到期末考試答案2024年
- 2024年華電甘肅大基地煤電分公司招聘筆試參考題庫(kù)含答案解析
- 2022年度設(shè)備部安全生產(chǎn)工作計(jì)劃5篇
- GB∕T 39757-2021 建筑施工機(jī)械與設(shè)備 混凝土泵和泵車安全使用規(guī)程
- 英國(guó)學(xué)派多元主義與社會(huì)連帶主義論爭(zhēng)
- 電梯公司安全生產(chǎn)管理制度匯編.doc
- 兒童保健檔案表.doc
- 閥門檢測(cè)報(bào)告
- 新產(chǎn)品開(kāi)發(fā)流程表
- 保命未來(lái)經(jīng)0001
- 北京市養(yǎng)老機(jī)構(gòu)公建民營(yíng)實(shí)施辦法(20210220135609)
評(píng)論
0/150
提交評(píng)論