版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
/學號:課課程論文題目移植關鍵技術(shù)分析學院信息工程學院專業(yè)電子信息工程班級姓名指導教師2017年6月6日
移植關鍵技術(shù)分析1簡介(1)在嵌入式操作系統(tǒng)中,是在操作系統(tǒng)內(nèi)核運行之前運行??梢猿跏蓟布O備、建立內(nèi)存空間映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準備好正確的環(huán)境。在嵌入式系統(tǒng)中,通常并沒有像那樣的固件程序(注,有的嵌入式也會內(nèi)嵌一段短小的啟動程序),因此整個系統(tǒng)的加載啟動任務就完全由來完成。是嵌入式系統(tǒng)在加電后執(zhí)行的第一段代碼,在它完成和相關硬件的初始化之后,再將操作系統(tǒng)映像或固化的嵌入式應用程序裝在到內(nèi)存中然后跳轉(zhuǎn)到操作系統(tǒng)所在的空間,啟動操作系統(tǒng)運行。[1]
對于嵌入式系統(tǒng),是基于特定硬件平臺來實現(xiàn)的。因此,幾乎不可能為所有的嵌入式系統(tǒng)建立一個通用的,不同的處理器架構(gòu)都有不同的。不但依賴于的體系結(jié)構(gòu),而且依賴于嵌入式系統(tǒng)板級設備的配置。對于2塊不同的嵌入式板而言,即使它們使用同一種處理器,要想讓運行在一塊板子上的程序也能運行在另一塊板子上,一般也都需要修改的源程序。反過來,大部分仍然具有很多共性,某些也能夠支持多種體系結(jié)構(gòu)的嵌入式系統(tǒng)。例如,就同時支持、、和X86等體系結(jié)構(gòu),支持的板子有上百種。通常,它們都能夠自動從存儲介質(zhì)上啟動,都能夠引導操作系統(tǒng)啟動,并且大部分都可以支持串口和以太網(wǎng)接口。在專用的嵌入式板子運行系統(tǒng)已經(jīng)變得越來越流行。一個嵌入式系統(tǒng)從軟件的角度看通常可以分為四個層次:1、引導加載程序。包括固化在固件()中的代碼(可選),和兩大部分。2、內(nèi)核。特定于嵌入式板子的定制內(nèi)核以及內(nèi)核的啟動參數(shù)。3、文件系統(tǒng)。包括根文件系統(tǒng)和建立于內(nèi)存設備之上文件系統(tǒng)。通常用來作為。4、用戶應用程序。特定于用戶的應用程序。有時在用戶應用程序和內(nèi)核層之間可能還會包括一個嵌入式圖形用戶界面。常用的嵌入式有:和等。通常,是嚴重地依賴于硬件而實現(xiàn)的,特別是在嵌入式世界。因此,在嵌入式世界里建立一個通用的幾乎是不可能的。盡管如此,我們?nèi)匀豢梢詫w納出一些通用的概念來,以指導用戶特定的設計與實現(xiàn)。(2)啟動方式上電后會從某個地址開始執(zhí)行。比如結(jié)構(gòu)的會從000000取第一條指令,而結(jié)構(gòu)的則從地址0x0000000開始。嵌入式開發(fā)系統(tǒng)中,需要把存儲器件或等映射到這個地址,就存放在這個地址的開始處,這樣一上電就可以執(zhí)行。在開發(fā)時,通常需要使用各種命令操作,一般通過串口來連接和開發(fā)板,可以在串口上輸入各種命令,觀察運行結(jié)果等。這也只是對開發(fā)人員才有意義,用戶使用產(chǎn)品時是不用接口接串口來控制的。從這個觀點來看,可以分為以下兩種操作模式1)啟動加載模式(模式)上電后,從板子上的某個固態(tài)存儲設備上將操作系統(tǒng)加載到上運行,整個過程并沒有用戶的介入。產(chǎn)品發(fā)布時,工作在這種模式下。2)下載模式(模式)在這種模式下,開發(fā)人員可以使用各種命令通過,通過串口連接或網(wǎng)絡設備等通信手段從主機下載文件,將他們直接放在內(nèi)存運行或是燒入類固態(tài)存儲設備中。像或等這樣功能強大的通常支持這兩種工作模式,而且允許用戶在這兩種工作模式之間進行切換。比如在啟動時處于正常的啟動加載模式,但是,他會延時若干秒,等待終端用戶按下任意鍵,而將切換到下載模式下。如果在指定時間內(nèi)沒有用戶按鍵,則繼續(xù)啟動內(nèi)核。(3)啟動過程的啟動過程可以分為單階段、多階段兩種。通常多階段的能提供更為復雜的功能及更好的可移植性,從固態(tài)存儲設備上啟動的大多都是兩階段的啟動過程,第一階段使用匯編來實現(xiàn),它完成一些依賴于體系結(jié)構(gòu)的初始化,并調(diào)用第二階段的代碼;第二階段則通常使用C語言來實現(xiàn),這樣可以實現(xiàn)更復雜的功能,而且代碼會有更好的可讀性和可移植性。一般而言,這兩個階段完成的功能可以如下分類。第一階段的功能硬件設備初始化為加載第二階段代碼準備空間復制第二階段代碼到空間中設置好棧跳轉(zhuǎn)到第二階段的C入口點在第一階段進行的硬件初始化一般包括:關閉、關中斷、設置速度和時鐘頻率、初始化等。這些都不是必須的,甚至將第二階段的代碼復制到空間中也不是必須的,對于等存儲設備,完全可以直接在上面執(zhí)行代碼。只不過執(zhí)行效率會相比中大大降低。第二階段的功能初始化本階段要使用到的硬件設備檢測系統(tǒng)內(nèi)存映射將系統(tǒng)內(nèi)核映像和根文件系統(tǒng)映像從讀到空間中。為內(nèi)核設置啟動參數(shù)調(diào)用內(nèi)核為了方便開發(fā),至少要初始化一個串口以便程序員與進行交互。所謂檢測內(nèi)存映射,就是確定板子上使用了多少內(nèi)存、他們的地址空間是什么。由于嵌入式開發(fā)中多是針對某類板子進行編寫,所以可以根據(jù)板子的情況直接設置,不需要考慮可以適用于各類情況的復雜算法。上的內(nèi)核映像有可能是經(jīng)過壓縮的,在讀到之后,還需要進行解壓。對于有自解壓功能的內(nèi)核,不需要來進行解壓。將根文件系統(tǒng)復制到中,這不是必須的。這取決于是什么類型的根文件系統(tǒng)以及內(nèi)核訪問它的方法。將內(nèi)核放到適當?shù)奈恢煤?,直接跳入到它的入口點即可調(diào)用內(nèi)核。
2常用命令(1)的常用命令方法進入控制界面后,可以運行各種命令,比如下載文件到內(nèi)存,擦除、讀寫,運行內(nèi)存、、中的程序,查看、修改、比較內(nèi)存中的數(shù)據(jù)等。使用各種命令時,可以使用其開頭的若干字母代替他。比如命令,可以使用t、、、等字母代替,只要其它命令不以這些字母開頭即可。當運行一個命令后,如果他是可重復執(zhí)行的(代碼中使用定義這個命令時,第三個參數(shù)是1)若想再次運行可以直接輸入回車。接收的數(shù)據(jù)都是16進制的,輸入時可省略前綴0x。1)幫助命令運行命令可以看到命令中所有命令的作用,如果要查看某個命令的使用方法,可以運行“命令名”來查看。2)下載命令支持串口下載、網(wǎng)絡下載,相關命令有:、、、和、。前幾個串口命令使用的方法類似,以命令為例,他的使用方法為[][]?!癧]”表示里面的參數(shù)可以省略,表示文件下載后存放的內(nèi)存地址,則表示使用的波特率。如果參數(shù)省略,則表示使用當前的波特率。如果參數(shù)省略,存放的地址為配置文件中定義的宏。命令使用協(xié)議從服務器下載文件,服務器的地址為環(huán)境變量,他的使用方法為[][]。表示文件下載后存放的內(nèi)存地址,表示要下載的文件的名稱。若省略,存放的地址為配置文件中定義的宏;若省略,則使用開發(fā)板的地址構(gòu)造一個文件名,比如開發(fā)板為192.168.1.17,則默認的文件名為C0A800711。命令使用協(xié)議下載命令,用法為[][]。其中表示服務器地址。3)內(nèi)存操作命令常用的命令有:查看內(nèi)存命令、修改內(nèi)存命令、填充內(nèi)存命令、復制命令。這些命令都可以帶上后綴“”“”“”表示以字節(jié)、字、雙字為單位進行操作。其中,命令用法為[][]。表示以字節(jié)、字、雙字為單位,顯示從地址開始的個內(nèi)存數(shù)據(jù)。命令的用法為[]。表示以字節(jié)、字、雙字為單位,從地址處開始修改內(nèi)存數(shù)據(jù),執(zhí)行命令后,輸入新數(shù)據(jù)并回車后,地址會自動增加,按退出。命令用法為[]。表示以字節(jié)、字、雙字為單位,從源地址開始的內(nèi)存復制個數(shù)據(jù)到目的地的內(nèi)存。4)操作命令常用的命令有查看命令的命令、加/解寫保護命令、擦除命令。由于的接口與一般內(nèi)存相似,所以一些內(nèi)存命令可以在上使用,比如讀時可以使用、命令,寫時則可以使用命令。直接運行即可看到的信息,有的型號、容量、各扇區(qū)的開始地址、是否只讀等信息。對于只讀的扇區(qū),在擦除、燒寫他之前,要先解除寫保護。命令的常用格式為,擦除的地址為。,表示擦除所有。操作命令操作命令只有一個:。根據(jù)不同參數(shù)進行不同的操作,比如擦除、讀取、燒寫等。,查看的信息。[][],擦除。表示要擦除的開始偏移地址的長度,若省略,則表示要擦除整個。[2],表示從開始的內(nèi)存中,讀或?qū)憘€字節(jié)數(shù)據(jù),是否加后綴2的區(qū)別是操作時的校驗方法不同。,將偏移地址的一個扇區(qū)的數(shù)據(jù)打印出來,包括數(shù)據(jù)。
3移植開發(fā)板2410的配置適用于大多數(shù)S3C2440開發(fā)板,或者只需要極少數(shù)的修改即可使用。但是目前中沒有S3C2440的支持,需要進行移植。2410開發(fā)板已經(jīng)支持芯片29800,本身也已經(jīng)支持2文件系統(tǒng)映像的燒寫。下面一步一步移植。(1)同時支持S3C2410和S3C24401)新建一個開發(fā)板的相應目錄和文件為了不破壞原來的代碼,在目錄下將2410復制為10024x0目錄,并將10024x02410改名為10024x0。在目錄下建立一個配置文件10024x0。還要修改兩個,首先在頂層中增加如下兩行:10024x0:@$()$()320t10024x0s3c24x0然后在10024x0中進行如下修改(因為前面將2410文件改名為10024x0了):改為10024x02)修改的配置的初始化在的第一階段完成,就是在10024x0文件中設置存儲控制器。檢查一下6的設置:位寬為32,宏B6剛好為32,無需改變;另外還要根據(jù)設置的刷新參數(shù),主要是寄存器。由于開發(fā)板的設為100,需要根據(jù)芯片的具體參數(shù)重新計算寄存器的值。代碼修改如下:1261113/*15.660,(2048+1-15.6*60)*/改為1260x4f4/*7.8125100*/對于其它,比如網(wǎng)卡芯片8900所在的2,原來的配置剛好匹配,無需更改;而對于1、2、4、5、7,在中并沒有使用到他們外接的設備,無需理會。3)增加對S3C2440的支持S3C2440是S4C2410的改進版,他們的操作基本相似。不過在系統(tǒng)時鐘設置??刂破鞯牟僮鞯确矫嬗幸恍┬〔顒e,他們的、計算公式不一樣,、和的分頻化設置也不一樣,這在下面的代碼中可以看到控制器的差別在增加對支持時講述。對于S3C2410開發(fā)板,將設為200,分頻比為1:2:4;對于S3C2440開發(fā)板,將設為400,分頻比為1:4:8。還將設為48,即為48,以在內(nèi)核中支持控制器。首先修改10024x02410中的函數(shù),下面是修改后的代碼。(見附錄代碼1)上面的代碼針對S3C2410、S3C2440分別定義了、寄存器的值。開發(fā)板輸入時鐘為12。針對S3C2410、S3C2440分別使用不同的宏設置系統(tǒng)時鐘。(見附錄代碼2)最后一步:獲取系統(tǒng)時鐘的函數(shù)針對S3C2410、S3C2440的不同進行修改。在后面設置串口波特率時需要初始化串口時,會調(diào)用函數(shù)。前面的函數(shù)在識別出S3C2410或S3C2440后,設置了機器類型:→→,后面的函數(shù)可以通過它來分辨是S3C2410還是S3C2440.首先要在程序的開頭增加如下一行,這樣才可以使用變量。;S3C2410和S3C2440的、計算公式不一樣,所以函數(shù)也需要修改。由于分頻系數(shù)的設置方法不一樣,、也需要被修改。對于S3C2410,沿用原來的計算方法,分支中是S3C2440的代碼。(見附錄代碼3)現(xiàn)在重新執(zhí)行”10024x0”和””生成的文件既可以運行于2410開發(fā)板也可以運行于2440開發(fā)板。將他燒入后啟動,就可以在串口工具中看到提示信息,可以輸入各種命令操作了。4)選擇型號所使用的開發(fā)板中型號為29800,而在下載的配置文件10024x0中的默認型號為29400。需要進行修改。0400 1 /*a400*/800 1 /*a800*/修改好對的支持后,重新編譯:、,運行后可以在串口中看到如下字樣::1現(xiàn)在可以使用、等命令通過串口下載文件,然后使用、命令擦除、燒寫了,其效率高于好幾倍。(2)支持串口協(xié)議命令需要配合下的工具使用,命令通過串口協(xié)議來傳輸文件。下的超級終端雖然支持,但他的使用界面不好用。為了方便在下的開發(fā),現(xiàn)在增加對的支持,即增加一個命令。依照的實現(xiàn)來編寫代碼,首先要使用宏來增加命令。(見代碼4)其次,在函數(shù)增加對命令的處理分支。也是依照來實現(xiàn)。(見代碼5)在第288行調(diào)用函數(shù),他是依照實現(xiàn)的一個新函數(shù)。①首先在文件開頭增加函數(shù)聲明,然后復制函數(shù)為函數(shù),稍作修改。②將局部函數(shù)組命名為,并在后面使用到的地方統(tǒng)一做修改,這只是為了與函數(shù)名稱一致。③的值從改為重新編譯燒寫后,就可以使用命令下載文件了。(3)支持網(wǎng)卡芯片8900使用串口來傳輸文件的速率太低,現(xiàn)在增加對網(wǎng)卡芯片8900的支持。由于網(wǎng)卡芯片8900的連接方式與2410完全一樣,所以現(xiàn)在的中已經(jīng)支持8900了,他的驅(qū)動程序為8900。只要在控制界面中稍加配置就可以使用網(wǎng)絡功能。使用網(wǎng)絡之前,先配置開發(fā)板地址、地址、服務器地址,比如可以在中執(zhí)行以下命令:192.168.1.1708:00:3e:26:0a:5b192.168.1.11然后就可以使用或命令下載文件了,注意服務器上要開啟或服務。比如可以使用如下命令將文件下載到內(nèi)存0x30000000中:0x30000000或0x30000000192.168.1.57可以修改配置文件,讓網(wǎng)卡各個默認的值就是上面的值。首先,8900接在S3C2410、S3C2440的3,位寬為16,使用、信號,在設置存儲控制器時要先設置好3。代碼在10024x0中。B3 0x0 /*0*/B3 0x3 /*4*/B3 0x7 /*14*/B3 0x1 /*1*/B3 0x0 /*0*/B3 0x3/*6*/B3 0x0 /**/接下來還要確定8900的基地址。這在配置文件10024x0中定義:8900 1 /*a8900*/8900 0x19000300890016 1/**/網(wǎng)卡8900的訪問基址為0x19000000,之所以再便宜0x300是由他的特性決定的。最后,還是在配置文件10024x0中定義8900的各個默認地址。 08:00:3e:26:0a:5b255.255.255.0 192.168.7.17 192.168.7.11如果要增加命令,還可以在配置文件10024x0的宏中增加。(見代碼6)(4)支持1.16中對的支持有新舊兩套代碼,新代碼在目錄下,舊代碼在目錄下。文檔對這兩套代碼有所說明:使用舊代碼代碼需要定義更多的宏,而新代碼移植自內(nèi)核2.6.12更加智能,可以自動識別更多型號的。目前之所以還保留舊的技能,是因為兩個目標板、使用系統(tǒng),他們還依賴于舊代碼。當相關功能移植到新代碼中后,舊的代碼將從中除去。要讓支持,首先在配置文件10024x0的宏中增加。然后選擇使用哪套代碼:在配置文件中定義宏則使用舊代碼,否則使用新代碼。使用舊代碼時,需要實現(xiàn)中使用到的各種宏新代碼的移植沒有現(xiàn)成的文檔,可以在配置文件宏10024x0的中增加后就編譯代碼,然后一個一個解決出現(xiàn)的錯誤。或者增加如下3個宏。在的驅(qū)動程序中,設備是邏輯上的概念,表示一組相同結(jié)構(gòu)、訪問函數(shù)相同的芯片。若開發(fā)板中只有一個芯片,故設備數(shù)為1,芯片數(shù)為1。011修改配置后再次編譯,現(xiàn)在只有一個錯誤,函數(shù)未定義,調(diào)用函數(shù)的過程為的初始化入口函數(shù)函數(shù)在的中被調(diào)用;函數(shù)在中實現(xiàn),它調(diào)用相同文件中的函數(shù);函數(shù)先調(diào)用函數(shù)來初始化設備,最后才是統(tǒng)一的識別過程。從函數(shù)的名稱就可以知道他是平臺/開發(fā)板相關的函數(shù),需要自己編寫。本書在9203c24x0目錄下新建一個文件,在里面針對S3C2410、S3C2440實現(xiàn)了統(tǒng)一的函數(shù)。在編寫函數(shù)的之前,需要針對S3C2410、S3C2440控制器的不同來定義一些數(shù)據(jù)結(jié)構(gòu)和函數(shù)。在3c24x0文件中增加2440數(shù)據(jù)結(jié)構(gòu)。在3c2410文件中仿照S3C2410函數(shù)S3C2440函數(shù)。文件中分別針對S3C2410、S3C2440實現(xiàn)了最底層訪問函數(shù),并進行了一些硬件的設置(比如時序、使能控制器等)。新的代碼對的封裝做得很好,只要向上提供底層初始化函數(shù)來設置好平臺/開發(fā)板相關的初始化、提供底層接口即可。最后,只要將新建的文件編入中就可以擦除、讀寫了。如下修改9203c24x0文件即可。修改前:=i2\修改后:=i2\現(xiàn)在可以使用新編譯的燒寫內(nèi)核映像到去了。(5)修改默認配置參數(shù)以方便使用前面移植網(wǎng)卡芯片8900時,已經(jīng)設置過默認地址等。為了使用時減少一些,現(xiàn)在修改配置文件10024x0,增加默認配置參數(shù),其中一些在移植過程中已經(jīng)增加的項也再次說明。1)啟動參數(shù)增加如下三個宏:11 "30"2)自啟動命令增加如下兩個宏: 2 "20x300070;0x300070"3)默認網(wǎng)絡設置根據(jù)具體網(wǎng)絡環(huán)境增加、修改下面四個宏 08:00:3e:26:0a:5b255.255.255.0 192.168.7.17 192.168.7.11
4心得體會作為嵌入式操作系統(tǒng)內(nèi)核運行前運行的第一段代碼,其重要性不言而喻。但由于搭載嵌入式操作系統(tǒng)的板子各有其硬件配置,所以不能使用同一套代碼去啟動嵌入式操作系統(tǒng),需要對其進行相應的修改即移植后才能用來啟動對應的板子。在移植中首先要明確的是已有的代碼中的配置文件同你手上的板子的配置有什么不同。通過修改、修改系統(tǒng)時鐘、選擇型號等步驟完成移植的第一步(可以進行修改系統(tǒng)默認配置參數(shù)以備方便的使用)。然后根據(jù)需要選擇相應的配置進行修改移植,如對串口協(xié)議支持,網(wǎng)卡8900支持,燒寫文件系統(tǒng)映像的支持,的支持等等。通過本次論文,我查閱了大量資料,學到了很多課堂上沒有的知識,特別是由于對嵌入式操作系統(tǒng)的不熟悉,我在學習中碰到了很多困難,所幸在與同學的探討之后終于順利完成本次論文,理解了移植其方法和意義,可以說受益匪淺。
5參考文獻[1]王志英.嵌入式系統(tǒng)原理與設計.北京:高等教育出版社,2007.11[2]徐端全.嵌入式系統(tǒng)原理與設計.北京:北京航空航天大學出版社,2009.9[3]陳文智,王總輝.嵌入式系統(tǒng)原理與設計.北京:清華大學出版社,2011.5[4]胡爾佳.深入理解.機械工業(yè)出版社,2016.7[5]李建祥.嵌入式系統(tǒng)開發(fā)入門寶典.北京:清華大學出版社,2016.4
6附錄代碼1:增加對S3C2410、S3C2440系統(tǒng)時鐘的宏定義/*S3C2440:=(2*m*)/(p*2^s),=(m*)/(p*2^s)*m=M(M)+8,p=P(P)+2*/S3C2440400((0x5c<<12)|(0x01<<4)|(0x01))S3C2440200((0x5c<<12)|(0x01<<4)|(0x02))S3C2440100((0x5c<<12)|(0x01<<4)|(0x03))S3C244096((0x38<<12)|(0x02<<4)|(0x01))S3C244048((0x38<<12)|(0x02<<4)|(0x02))S3C2440(0x05)|(1<<3))/*=1:4:8,=2*/S3C24401880x04/*=1:8:8*/S3C2440188((0<<8)|(1<<9))/*=1:8:8*//*=16.9344*/S3C244039916 ((0x6e<<12)|(0x03<<4)|(0x01))S3C24404816((60<<12)|(4<<4)|(2))/*S3C2410:=(m*)/(p*2^s)*m=M(M)+8,p=P(P)+2*/S3C2410200((0x5c<<12)|(0x04<<4)|(0x00))S3C241048((0x28<<12)|(0x01<<4)|(0x02))S3C24100x03/*=1:2:4*/代碼2:系統(tǒng)時鐘設置函數(shù)(){S3C24X0*=S3C24X0();S3C24X0*=S3C24X0();/**/>=0x007;>=0x00044555;>=0x000007;>=0;>=0x0000;>=0;>=0x0000;>=0;>=0x0000;>=0x000055;>=0x000000;>=095;>=0x0000;>=0x002;>=0x000007;/*S3C2410S3C2440,.100*/(3C2410){/*2410*/>>=2410;}{/*2440*/>>=3C2440;}/**/>>=0x30000100;0();();0;}代碼3:由于分頻系數(shù)的設置方法不一樣,、也需要被修改。增加對S3C2440的、函數(shù)。S3C2440(1<<0)S3C2440(3<<1)S3C24401(0<<1)S3C24402(1<<1)S3C24404_8(2<<1)S3C24403_6(3<<1)S3C2440(1<<3)S3C2440(0<<0)S3C2440(1<<4)S3C24403(1<<8)S3C24404(1<<9)S3C2440(1<<12)/**/(){S3C24X0*=S3C24X0();;;=1;/*S3C2410S3C2440,.100*/(3C2410)((>&0x2)?()/2:());{=>;=>;/**/(&S3C2440){S3C24401:=1;;S3C24402:=2;;S3C24404_8:=(&S3C24404)?8:4;;S3C24403_6:=(&S3C24403)?6:3;;}-((>&0x2)?()/2:());()/;}}/**/(){S3C24X0*=S3C24X0();;;=1;/*S3C2410S3C2440,.100*/(3C2410)((>&0x1)?()/2:());{=>;=>;/**/(&S3C2440){
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度產(chǎn)學研合作項目研發(fā)成果轉(zhuǎn)化與知識產(chǎn)權(quán)保護協(xié)議4篇
- 2024版軟件源碼授權(quán)保密協(xié)議范本
- 二手房私人交易協(xié)議模板2024版B版
- 2025年度新能源電池研發(fā)與采購安裝合同范本3篇
- 2025年度廠房修建與綠色建筑節(jié)能檢測服務合同4篇
- 2025年度智慧城市建設規(guī)劃與實施合同4篇
- 2025年度地理信息數(shù)據(jù)庫建設測繪合同4篇
- 2025年度企業(yè)培訓中心場地租賃及課程開發(fā)服務合同3篇
- 二零二五年度傳統(tǒng)煙酒品牌傳承保護協(xié)議
- 二零二五年度研學旅行安全保障及責任劃分合同
- 銀行2025年紀檢工作計劃
- 2024-2024年上海市高考英語試題及答案
- 注射泵管理規(guī)范及工作原理
- 山東省濟南市2023-2024學年高二上學期期末考試化學試題 附答案
- 大唐電廠采購合同范例
- 國潮風中國風2025蛇年大吉蛇年模板
- GB/T 18724-2024印刷技術(shù)印刷品與印刷油墨耐各種試劑性的測定
- IEC 62368-1標準解讀-中文
- 15J403-1-樓梯欄桿欄板(一)
- 2024年中考語文名句名篇默寫分類匯編(解析版全國)
- 新煤礦防治水細則解讀
評論
0/150
提交評論