企業(yè)見(jiàn)習(xí)報(bào)告 - (arm板蜂鳴器驅(qū)動(dòng)開發(fā))_第1頁(yè)
企業(yè)見(jiàn)習(xí)報(bào)告 - (arm板蜂鳴器驅(qū)動(dòng)開發(fā))_第2頁(yè)
企業(yè)見(jiàn)習(xí)報(bào)告 - (arm板蜂鳴器驅(qū)動(dòng)開發(fā))_第3頁(yè)
企業(yè)見(jiàn)習(xí)報(bào)告 - (arm板蜂鳴器驅(qū)動(dòng)開發(fā))_第4頁(yè)
企業(yè)見(jiàn)習(xí)報(bào)告 - (arm板蜂鳴器驅(qū)動(dòng)開發(fā))_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、嵌入式系統(tǒng)開發(fā)技術(shù)企業(yè)見(jiàn)習(xí)專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 班 級(jí): 2 011級(jí)計(jì)算機(jī)軟件 學(xué) 號(hào):姓 名:設(shè)計(jì)題目: 蜂鳴器驅(qū)動(dòng)程序設(shè)計(jì) 2014年06月上海凡狄信息技術(shù)有限公司目 錄1.緒論11.1概要11.2設(shè)計(jì)內(nèi)容12.開發(fā)環(huán)境的搭建22.1Redhat的安裝22.2安裝arm-linux-gcc交叉編譯器42.3安裝及編譯linux-2.6.35.7-Tiny210-20120301內(nèi)核63.字符設(shè)備驅(qū)動(dòng)相關(guān)知識(shí)83.1模塊機(jī)制83.2字符設(shè)備開發(fā)基本步驟93.3主設(shè)備號(hào)和次設(shè)備號(hào)103.4實(shí)現(xiàn)字符驅(qū)動(dòng)程序114.蜂鳴器原理134.1蜂鳴器的種類和工作原理134.2開發(fā)板上蜂鳴器原理圖分

2、析135.總體設(shè)計(jì)145.1設(shè)計(jì)思路145.2設(shè)計(jì)步驟146. 驅(qū)動(dòng)及測(cè)試程序166.1buzzer驅(qū)動(dòng)代碼166.2buzzer驅(qū)動(dòng) 測(cè)試代碼187.運(yùn)行結(jié)果及截圖208、Tiny210開發(fā)板調(diào)試22綜合設(shè)計(jì)總結(jié)與思考23 1.緒論1.1概要 Linux是一套免費(fèi)使用和自由傳播的類 Unix操作系統(tǒng),它主要用于基于 Intel x86系列 CPU的計(jì)算機(jī)上。Linux以它的高效性和靈活性著稱。它能夠在 PC計(jì)算機(jī)上實(shí)現(xiàn)全部的 Unix特性,具有多任務(wù)、多用戶的能力。 Linux是在 GNU公共許可權(quán)限下免費(fèi)獲得的,是一個(gè)符合 POSIX標(biāo)準(zhǔn)的操作系統(tǒng)。 Linux操作系統(tǒng)軟件包不僅包括完整的

3、 Linux操作系統(tǒng),而且還包括了文本編輯器、高級(jí)語(yǔ)言編譯器等應(yīng)用軟件。它還包括帶有多個(gè)窗口管理器的 X-Windows圖形用戶界面,如同我們使用 Windows NT一樣,允許我們使用窗口、圖標(biāo)和菜單對(duì)系統(tǒng)進(jìn)行操作。 而linux驅(qū)動(dòng)是直接和硬件打交道的軟件程序。層次結(jié)構(gòu)上,它處于操作系統(tǒng)和硬件之間。系統(tǒng)調(diào)用是操作系統(tǒng)內(nèi)核與應(yīng)用程序之間的接口,設(shè)備驅(qū)動(dòng)程序是操作系統(tǒng)內(nèi)核與機(jī)器硬件之間的接口。設(shè)備驅(qū)動(dòng)程序?yàn)閼?yīng)用程序屏蔽了硬件的細(xì)節(jié),這樣在應(yīng)用程序看來(lái),硬件設(shè)備只是一個(gè)設(shè)備文件,應(yīng)用程序可以像操作普通文件一樣對(duì)硬件折本進(jìn)行操作。設(shè)備驅(qū)動(dòng)程序是內(nèi)核的一部分,它主要完成這么幾個(gè)功能:對(duì)設(shè)備初始化和釋

4、放;傳送數(shù)據(jù)到硬件和從硬件讀取數(shù)據(jù);檢測(cè)和處理設(shè)備出現(xiàn)的錯(cuò)誤。 一般來(lái)說(shuō), linux 驅(qū)動(dòng)可以分為三類,就是塊設(shè)備驅(qū)動(dòng),字符設(shè)備驅(qū)動(dòng)和網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)。塊設(shè)備的讀寫都有緩存來(lái)支持,并且塊設(shè)備必須能夠隨機(jī)存取。塊設(shè)備驅(qū)動(dòng)主要用于磁盤驅(qū)動(dòng)器。 1.2設(shè)計(jì)內(nèi)容本次設(shè)計(jì)是簡(jiǎn)單的字符設(shè)備驅(qū)動(dòng)設(shè)計(jì),基于Tiny 210的蜂鳴器的驅(qū)動(dòng)設(shè)計(jì)。2.開發(fā)環(huán)境的搭建2.1Redhat的安裝使用VirtualBox創(chuàng)建一個(gè)虛擬機(jī):點(diǎn)擊菜單欄File->New->Virtual machine。填寫虛擬機(jī)名稱,選擇系統(tǒng)類型和版本,然后點(diǎn)擊下一步。配置虛擬機(jī)內(nèi)存為1024M,然后點(diǎn)擊下一步創(chuàng)建虛擬硬盤,下一步。

5、配置完成后的虛擬機(jī)配置242.2安裝arm-linux-gcc交叉編譯器1、下載文件:安裝包:arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz2、開始安裝 ,打開終端輸入cd,進(jìn)入home目錄后,輸入命令: tar xvzf arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz如圖:2.解壓完成后在終端中輸入cd ./opt/FriendlyARM/toolschain/4.5.1/bin/,然后pwd查看當(dāng)前路徑;3.修改環(huán)境變量,把交叉編譯器的路徑加入到PATH:利用tab鍵的補(bǔ)齊功能進(jìn)入該路徑。輸入pwd命令,查看當(dāng)前路徑的絕對(duì)路徑

6、/home/cf/ARM/opt/FriendlyARM/toolschain/4.5.1/bin如圖:然后輸入如下命令: vi /.bash_profile 修改下列PATHPATH=$PATH:$HOME/bin:/sbin:/opt/FriendlyARM/toolschain/4.5.1/bin然后輸入如下命令,更新環(huán)境變量source /.bash_profile4、檢查是否將路徑加入到PATH:接下來(lái)利用命令 echo $PATH 查看環(huán)境變量是否添加成功,若環(huán)境變量中出現(xiàn)了剛才添加的路徑就成功了。 5、測(cè)試是否安裝成功$ arm-linux-gcc -v 輸入命令會(huì)顯示arm-l

7、inux-gcc信息和版本.2.3安裝及編譯linux-2.6.35.7-Tiny210-20120301內(nèi)核復(fù)制內(nèi)核到root目錄下解壓內(nèi)核文件 tar zxvf linux-2.6.35.7-Tiny210-20120301.tgz使內(nèi)核文件生效:cp config_Tiny210_n35 .config使用make命令完成編譯解壓內(nèi)核文件 tar zxvf linux-2.6.35.7-20120301.tgz 使內(nèi)核文件生效:cp mini210-tvp5150_linux_defconfig .config并且使用make命令完成編譯編輯Makefile文件3.字符設(shè)備驅(qū)動(dòng)相關(guān)知識(shí)3

8、.1模塊機(jī)制Linux提供了機(jī)制被稱為模塊(Module)的機(jī)制 提供了對(duì)許多模塊支持, 包括但不限于, 設(shè)備驅(qū)動(dòng)每個(gè)模塊由目標(biāo)代碼組成( 沒(méi)有連接成一個(gè)完整可執(zhí)行程序 )insmod 將模塊動(dòng)態(tài)加載到正在運(yùn)行內(nèi)核rmmod 程序移除模塊Linux內(nèi)核模塊的程序結(jié)構(gòu)l module_init()-模塊加載函數(shù)(必須) 通過(guò)insmod或modprobe命令加載內(nèi)核模塊時(shí),模塊的加載函數(shù)會(huì)自動(dòng)被內(nèi)核執(zhí)行,完成模塊的相關(guān)初始化工作l module_exit()-模塊卸載函數(shù)(必須) 當(dāng)通過(guò)rmmod命令卸載某模塊時(shí),模塊的卸載函數(shù)會(huì)自動(dòng)被內(nèi)核執(zhí)行,完成與模塊裝載函數(shù)相反的功能l MODULE_LI

9、CENSE()-模塊許可證聲明(必須)模塊許可證(LICENSE)聲明描述內(nèi)核模塊的許可權(quán)限如果不聲明LICENSE,模塊被加載時(shí),將收到內(nèi)核被污染(kernel tainted)的警告l module_param()-模塊參數(shù)(可選)模塊參數(shù)是模塊被加載的時(shí)候可以被傳遞給它的值,它本身對(duì)應(yīng)模塊內(nèi)部的全局變量。l EXPORT_SYMBOL()-模塊導(dǎo)出符號(hào)(可選)內(nèi)核模塊可以導(dǎo)出符號(hào)(symbol,對(duì)應(yīng)于函數(shù)或變量)到內(nèi)核其他模塊可以使用本模塊中的變量或函數(shù)l 其他一些聲明MODULE_XXXXX()-模塊聲明(可選)模塊加載函數(shù)static int _init initialization

10、_function(void) /* 初始化代碼 */module_init(initialization_function); 模塊卸載函數(shù) static void _exit cleanup_function(void) /* 釋放資源 */ module_exit(cleanup_function); 3.2字符設(shè)備開發(fā)基本步驟l 確定主設(shè)備號(hào)和次設(shè)備號(hào)l 實(shí)現(xiàn)字符驅(qū)動(dòng)程序?qū)崿F(xiàn)file_operations結(jié)構(gòu)體實(shí)現(xiàn)初始化函數(shù),注冊(cè)字符設(shè)備實(shí)現(xiàn)銷毀函數(shù),釋放字符設(shè)備l 創(chuàng)建設(shè)備文件節(jié)點(diǎn)3.3主設(shè)備號(hào)和次設(shè)備號(hào)l 主設(shè)備號(hào)是內(nèi)核識(shí)別一個(gè)設(shè)備的標(biāo)識(shí)。整數(shù)(占12bits),范圍從0到4095

11、,通常使用1到255l 次設(shè)備號(hào)由內(nèi)核使用,用于正確確定設(shè)備文件所指的設(shè)備。整數(shù)(占20bits),范圍從0到1048575,一般使用0到255l 設(shè)備編號(hào)的內(nèi)部表達(dá)dev_t類型(32位):用來(lái)保存設(shè)備編號(hào)(包括主設(shè)備號(hào)(12位)和次設(shè)備號(hào)(20位)從dev_t獲得主設(shè)備號(hào)和次設(shè)備號(hào):MAJOR(dev_t);MINOR(dev_t);將主設(shè)備號(hào)和次設(shè)備號(hào)轉(zhuǎn)換成dev_t類型:MKDEV(int major,int minor); l 分配主設(shè)備號(hào)手工分配主設(shè)備號(hào):找一個(gè)內(nèi)核沒(méi)有使用的主設(shè)備號(hào)來(lái)使用。#include <linux/fs.h>int register_chrdev

12、_region( dev_t first, unsigned int count, char *name );l 動(dòng)態(tài)分配主設(shè)備號(hào):#include <linux/fs.h>int alloc_chrdev_resion(dev_t *dev,unsigned int firstminor,unsigned int count,char *name);l 釋放設(shè)備號(hào)void unregister_chrdev_region(dev_t first, unsigned int count);3.4實(shí)現(xiàn)字符驅(qū)動(dòng)程序l cdev 結(jié)構(gòu)體struct cdev struct kobject

13、 kobj; /* 內(nèi)嵌的kobject 對(duì)象 */ struct module *owner; /*所屬模塊*/ struct file_operations *ops; /*文件操作結(jié)構(gòu)體*/ struct list_head list; dev_t dev; /*設(shè)備號(hào)*/ unsigned int count; ;l file_operations 結(jié)構(gòu)體字符驅(qū)動(dòng)和內(nèi)核的接口:在include/linux/fs.h定義字符驅(qū)動(dòng)只要實(shí)現(xiàn)一個(gè)file_operations結(jié)構(gòu)體并注冊(cè)到內(nèi)核中,內(nèi)核就有了操作此設(shè)備的能力。l file_operations的主要成員:struct modul

14、e *owner: 指向模塊自身open:打開設(shè)備release:關(guān)閉設(shè)備read:從設(shè)備上讀數(shù)據(jù)write:向設(shè)備上寫數(shù)據(jù)ioctl:I/O控制函數(shù)llseek:定位讀寫指針mmap:映射設(shè)備空間到進(jìn)程的地址空間l ioctl函數(shù)為設(shè)備驅(qū)動(dòng)程序執(zhí)行“命令”提供了一個(gè)特有的入口點(diǎn)用來(lái)設(shè)置或者讀取設(shè)備的屬性信息。int ioctl (struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg);l cmd 參數(shù)的定義不推薦用0x1,0x2,0x3之類的值Linux對(duì)ioctl()的cmd參數(shù)有特殊的定義構(gòu)

15、造命令編號(hào)的宏:_IO(type,nr)用于構(gòu)造無(wú)參數(shù)的命令編號(hào);_IOR(type,nr,datatype)用于構(gòu)造從驅(qū)動(dòng)程序中讀取數(shù)據(jù)的命令編號(hào);_IOW(type,nr,datatype)用于寫入數(shù)據(jù)的命令;_IOWR(type,nr,datatype)用于雙向傳輸。type和number位字段通過(guò)參數(shù)傳入,而size位字段通過(guò)對(duì)datatype參數(shù)取sizeof獲得。 l Ioctl函數(shù)模板int xxx_ioctl( struct inode *inode, struct f ile *filp, unsigned int cmd, unsigned long arg) . swit

16、ch (cmd) case XXX_CMD1: . break; case XXX_CMD2: . break; default: /*不能支持的命令 */ return - ENOTTY; return 0; 4.蜂鳴器原理4.1蜂鳴器的種類和工作原理蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型。   壓電式蜂鳴器主要由多諧振蕩器、壓電蜂鳴片、阻抗匹配器及共鳴箱、外殼等組成。有的壓電式蜂鳴器外殼上還裝有發(fā)光二極管。多諧振蕩器由晶體管或集成電路構(gòu)成。當(dāng)接通電源后(1.515V直流工作電壓),多諧振蕩器起振,輸出1.52.5kHZ的音頻信號(hào),阻抗匹配器推動(dòng)壓電蜂鳴片發(fā)聲。

17、   電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、振動(dòng)膜片及外殼等組成。接通電源后,振蕩器產(chǎn)生的音頻信號(hào)電流通過(guò)電磁線圈,使電磁線圈產(chǎn)生磁場(chǎng)。振動(dòng)膜片在電磁線圈和磁鐵的相互作用下,周期性地振動(dòng)發(fā)聲。   有源蜂鳴器和無(wú)源蜂鳴器的區(qū)別:這個(gè)“源”字是不是指電源,而是指震蕩源,即有源蜂鳴器內(nèi)有振蕩源而無(wú)源蜂鳴器內(nèi)部沒(méi)有振蕩源。有振蕩源的通電就可以發(fā)聲,沒(méi)有振蕩源的需要脈沖信號(hào)驅(qū)動(dòng)才能發(fā)聲。4.2開發(fā)板上蜂鳴器原理圖分析由原理圖可以得知,蜂鳴器是通過(guò)GPD0 IO口使用PWM信號(hào)驅(qū)動(dòng)工作的,而GPD0口是一個(gè)復(fù)用的IO口,要使用它得先把他設(shè)置成TOUT0 PWM輸出

18、模式。5.總體設(shè)計(jì)5.1設(shè)計(jì)思路 Linux設(shè)備驅(qū)動(dòng)屬于內(nèi)核的一部分,Linux內(nèi)核的一個(gè)模塊可以以兩種方式被編譯和加載: (1)直接編譯進(jìn)Linux內(nèi)核,隨同Linux啟動(dòng)時(shí)加載; (2)編譯成一個(gè)可加載和刪除的模塊,使用insmod加載(modprobe和insmod命令類似,但依賴于相關(guān)的配置文件),rmmod刪除。這種方式控制了內(nèi)核的大小,而模塊一旦被插入內(nèi)核,它就和內(nèi)核其他部分一樣。 這次的蜂鳴器驅(qū)動(dòng)就采用動(dòng)態(tài)模塊加載的方式5.2設(shè)計(jì)步驟Ø 編寫簡(jiǎn)單的字符設(shè)別驅(qū)動(dòng)程序框架Ø 編寫控制蜂鳴器控制開關(guān)函數(shù)Ø 編譯模塊,生成beep.koØ 編寫用戶

19、層測(cè)試程序Ø 編譯用戶層測(cè)試程序,生成可執(zhí)行程序testØ 將生成的beep.ko 模塊和應(yīng)用層測(cè)試程序 test 下載到目標(biāo)板Ø 用 insmod 裝載模塊Ø 創(chuàng)建設(shè)備節(jié)點(diǎn) mknod /dev/beep c 250 0Ø 運(yùn)行用戶層測(cè)試程序 test#./test如果你的 test 的屬性不是可執(zhí)行的,可以用 chmod 777 test 將其設(shè)置成可執(zhí)行程序。6. 驅(qū)動(dòng)及測(cè)試程序6.1蜂鳴器驅(qū)動(dòng)代碼#include<linux/module.h>#include<linux/fs.h>/include file_o

20、perations#include<linux/cdev.h>#include<linux/device.h>#include<linux/types.h>#include<linux/init.h>#include<asm/io.h>/include ioread32,iowrite32;dev_t geek_num;struct cdev geek_cdev;/字符設(shè)備結(jié)構(gòu)體/struct file_operations geek_ops;/unsigned int *address;/address for GPD_CONvoi

21、d beep_start(void)unsigned int data;address = ioremap(0xE02000A0,8);data = ioread32(address+1);data |= 0x1<<0;/bit0 set 1;iowrite32(data,address+1);void beep_stop(void)unsigned int data;address = ioremap(0xE02000A0,8);data = ioread32(address+1);data &= 0x1<<0;/bit0 set 0;iowrite32(da

22、ta,address+1);static int geek_open(struct inode *node,struct file *fp)unsigned int data ;/initate address = ioremap(0xE02000A0,8);data = ioread32(address);data &=0x1<<3;/bit3 set 0;data &=0x1<<2;/bit2 set 0;data &=0x1<<1;/bit1 set 0;data |=0x1<<0;/bit0 set 1;iowri

23、te32(data,address);printk("tgeek_openn");return 0;static int geek_release(struct inode *node,struct file *fp)printk("tgeek_releasen");return 0;static int geek_read(struct file *fp,char _user *buf,size_t count,loff_t *ppos)printk("tgeek_readn");return 0;static int geek_w

24、rite(struct file *fp,const char _user *buf,size_t count,loff_t *ppos)printk("tgeek_writen");return 0;static int geek_ioctl(struct inode *node,struct file *fp,unsigned int cmd,unsigned long ll )printk("tgeek_ioctln");switch(cmd)case 0:beep_stop();printk("beep_stop");brea

25、k;case 1:beep_start();printk("beep_start");break;default:printk("command not found!n");break;return 0;struct file_operations geek_ops =/文件描述符,.owner = THIS_MODULE,/.open = geek_open,.read = geek_read,.write = geek_write,.ioctl = geek_ioctl,.release=geek_release, ;static int _init

26、 beep_init(void)/初始化int major; /主設(shè)備號(hào)alloc_chrdev_region(&geek_num,0,1,"geek_beep");/ 設(shè)備號(hào),次設(shè)備號(hào),分支數(shù),設(shè)備名稱major = MAJOR(geek_num);printk("major:%d",major);cdev_init(&geek_cdev,&geek_ops);geek_cdev.ops = &geek_ops;/指向file_operationsgeek_cdev.owner = THIS_MODULE;cdev_ad

27、d(&geek_cdev,geek_num,1);/注冊(cè)設(shè)備return 0;static void _exit beep_exit(void)unregister_chrdev_region(geek_num,1);/cdev_del(&geek_cdev);/刪除module_init(beep_init);/加載module_exit(beep_exit);/卸載6.2蜂鳴器驅(qū)動(dòng) 測(cè)試代碼#include<stdio.h>#include<fcntl.h>int main()unsigned n=1;int fp;fp = open("/

28、dev/beep",O_RDWR);if(fp < 0)printf("Cant open the Dev!");return -1; read(fp,NULL,0);write(fp,NULL,0);printf("input time you want to beep:");scanf("%d",&n);while(n-)ioctl(fp,1,0);sleep(1);ioctl(fp,0,0);sleep(1);close(fp);return 0;7.運(yùn)行結(jié)果及截圖傳輸beep.ko,test測(cè)試程序,然

29、后使用ls命令查看文件。使用insmod beep.ko加載beep驅(qū)動(dòng),mknod /dev/beep c 250 0創(chuàng)建設(shè)備結(jié)點(diǎn)。最后使用./test命令運(yùn)行測(cè)試程序8.Tiny210開發(fā)板調(diào)試(1)連接開發(fā)板電源。(2)用串口將PC和Tiny210開發(fā)板相連。(3)打開secureCRT軟件,點(diǎn)擊快速連接,配置端口協(xié)議:Serial 端口:com 6(看自己的端口號(hào)) 波特率:115200 數(shù)據(jù)位:8奇偶校驗(yàn):none停止位:1勾掉RTS/CTS選項(xiàng)(4)點(diǎn)擊連接(5)打開開發(fā)板電源(6)secureCRT軟件會(huì)出現(xiàn)一些選項(xiàng),選擇b,root system(7)輸入指令rz,將beep.

30、ko加載到根文件系統(tǒng)里,再輸入指令,將buzzer測(cè)試程序加載到根文件系統(tǒng)。(8)在secureCRT里輸入insmod beep.ko,將驅(qū)動(dòng)程序加載到內(nèi)核模塊中。(9)在secureCRT里輸入chmod 777 test,改變可執(zhí)行程序的權(quán)限。(10)在secureCRT里輸入./test。綜合設(shè)計(jì)總結(jié)與思考為期一周的企業(yè)見(jiàn)習(xí)即將結(jié)束,在大三快要結(jié)束時(shí)學(xué)校給我們安排了這次企業(yè)見(jiàn)習(xí)非常有用。一方面是對(duì)我們這學(xué)期所開設(shè)的嵌入式linux應(yīng)用開發(fā)的一次鞏固,另一方面也讓我們深入了解了嵌入式linux開發(fā),讓我們有機(jī)會(huì)動(dòng)手親自體驗(yàn)linux開發(fā),為以后的實(shí)際工作奠定了良好的基礎(chǔ)。同時(shí)也讓我們知道了,linux開發(fā)并不是一件簡(jiǎn)單的事,并不是一門單純的學(xué)科,需要綜合領(lǐng)悟并貫通知識(shí)的能力,而且想精通linux開發(fā)并不是一朝一夕的事,需要極大的耐心與不懈的努力

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論