版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、基于ARM的音頻控制自動化系的工程訓(xùn)練5是學(xué)生在4年學(xué)習(xí)中的最后一次軟硬件開發(fā)的工程訓(xùn)練,利用2周時間完成。本次工程訓(xùn)練以深圳芯控科技有限公司生產(chǎn)的一款基于ARM9的嵌入式開發(fā)平臺EM-SBC2410為硬件開發(fā)平臺,通過搭建嵌入式Linux的軟件開發(fā)平臺,完成基于ARM的音頻控制的軟硬件設(shè)計。通過此設(shè)計,使學(xué)生掌握以ARM為控制核心的嵌入式開發(fā)板的運用、領(lǐng)略到基于ARM9-Linux軟硬件平臺開發(fā)的主要過程、方法和步驟,最終完成一個基于ARM9的小型嵌入式作品。學(xué)生要完成這一工程訓(xùn)練項目,必須學(xué)完“單片機原理及其應(yīng)用”和“嵌入式系統(tǒng)原理及其應(yīng)用”二門課程及其完成“基于單片機的直流電動機控制”或
2、“基于單片機的數(shù)字鐘設(shè)計”的實訓(xùn)項目,并綜合應(yīng)用這三門課程的軟硬件知識,解決實踐中的實際軟硬件開發(fā)問題。 目的要求:3.1.1 基本目的本次工程訓(xùn)練通過“嵌入式系統(tǒng)原理及其應(yīng)用”課程的學(xué)習(xí),掌握嵌入式系統(tǒng)開發(fā)的基礎(chǔ)知識;通過對EM-SBC2410的學(xué)習(xí),了解嵌入式開發(fā)板的使用及其嵌入式系統(tǒng)的主要開發(fā)要點;綜合應(yīng)用嵌入式Linux的C語言編程技巧,結(jié)合音頻控制原理,實現(xiàn)基于ARM的音頻控制。3.1.2 基本要求為了使學(xué)生深入理解嵌入式系統(tǒng)的整個開發(fā)過程,本設(shè)計采用5個過程實現(xiàn)基于ARM的音頻控制,此5個過程分別為:EM-SBC2410開發(fā)板的硬件資源及其附帶的軟件資源的使用階段、嵌入式Linux
3、的開發(fā)環(huán)境的搭建階段、基于ARM的音頻控制的需求分析及其制定設(shè)計思路階段、硬件設(shè)計及其制作階段、軟件設(shè)計及其調(diào)試階段、作品聯(lián)調(diào)運行及其維護階段。要求學(xué)生按照5個階段開發(fā)過程展開,以求給學(xué)生一個整個嵌入式開發(fā)的全過程。本工程訓(xùn)練除了要求學(xué)生掌握運用ARM控制音頻的全過程,還要求學(xué)生能夠掌握以ARM為控制核心的嵌入式開發(fā)板的運用及其嵌入式Linux的C語言的編程技巧。3.2 基本知識介紹運用EM-SBC2410的硬件開發(fā)平臺進行基于ARM的音頻控制的軟硬件設(shè)計,用到了“嵌入式系統(tǒng)原理及其應(yīng)用”這門課程、嵌入式Linux開發(fā)的相關(guān)知識、EM-SBC2410用戶手冊及其音頻控制原理等知識。嵌入式系統(tǒng)原
4、理及其應(yīng)用中主要掌握ARM的體系結(jié)構(gòu)及其編程,以及嵌入式系統(tǒng)開發(fā)的流程。嵌入式Linux開發(fā)的相關(guān)知識主要掌握嵌入式Linux開發(fā)環(huán)境的搭建及其嵌入式Linux的交叉開發(fā)流程。EM-SBC2410用戶手冊主要掌握如何利用基于ARM9的開發(fā)板的硬件資源進行設(shè)計的過程。下面簡單介紹除“嵌入式系統(tǒng)原理及其應(yīng)用”這門課程外,此設(shè)計中要使用的一些重要知識。3.2.1 EM-SBC2410開發(fā)板簡介圖1 EM-SBC2410開發(fā)板深圳芯控科技有限公司生產(chǎn)的EM-SBC2410開發(fā)板在盡可能小的板面上(120mm*90mm),如圖1所示,它集成了64M SDRAM、64M Nand Flash、2M Boo
5、t Flash、RJ-45網(wǎng)卡(100M)、USB Host、USB slave、標準串口、SD卡插槽、用戶按鍵和一些用戶燈等設(shè)備接口,并且使用2.0mm插針槽引出CPU的大部分信號引腳,不僅可以作為嵌入式電腦系統(tǒng)的一個主板模塊,而且適合于項目或產(chǎn)品的原型設(shè)計。此設(shè)計在基于EM-SBC2410為硬件開發(fā)平臺,實現(xiàn)基于ARM的音頻控制,最終實現(xiàn)mp3格式音頻文件的播放和控制。3.2.2嵌入式Linux開發(fā)的相關(guān)知識嵌入式Linux簡介 linux是一個日益成熟的操作系統(tǒng),現(xiàn)在已經(jīng)擁有大量的用戶,它是由芬蘭的大學(xué)生linus torvalds開發(fā)的,任何人都可以復(fù)制,修改,套裝發(fā)行,銷售,但不許發(fā)
6、行時加入限制,而且必須公布源代碼,以保障任何人都可以無償取得所有可執(zhí)行文件及其源代碼。比較著名的linux發(fā)行版本有redhat Linux ,SUSE Linux ,Turbo Linux ,Ubuntu Linux等。國內(nèi)的有北京中科紅旗軟件技術(shù)有限公司發(fā)布的紅旗linux,深圳藍點軟件有限公司發(fā)布的藍點linux,北京沖浪公司制作的xterm linux 等。嵌入式 Linux是以Linux為基礎(chǔ)的嵌入式操作系統(tǒng),它是將日益流行的Linux操作系統(tǒng)進行裁剪修改,使之能在嵌入式計算機系統(tǒng)上運行的一種操作系統(tǒng),具有開放源代碼、內(nèi)核小、效率高、性能穩(wěn)定,裁剪性好和對網(wǎng)絡(luò)中最常用的TCP/IP協(xié)
7、議有最完備的支持等優(yōu)點,被廣泛應(yīng)用在移動電話、個人數(shù)字助理(PDA)、媒體播放器、消費性電子產(chǎn)品以及航空航天等領(lǐng)域中。 2、嵌入式Linux 的交叉開發(fā)模式Linux 交叉開發(fā)采用宿主機和目標機的模式進行。宿主機是一臺運行 Linux(如:RedHat)的 PC 機,目標機即 EM-SBC2410開發(fā)板。開發(fā)時使用宿主機上的交叉編譯、匯編及連接工具形成可執(zhí)行的二進制代碼,這種代碼并不能在宿主機上執(zhí)行,而只能在目標機上執(zhí)行。然后把可執(zhí)行文件下載到目標機上運行。調(diào)試時的方法很多,可以使用串口,以太網(wǎng)口等,具體使用哪種調(diào)試方法可以根據(jù)目標機處理器所提供的支持作出選擇。宿主機和目標板的處理器一般都不相
8、同,宿主機為 Intel 處理器, 而目標板如 EM-SBC2410為 SAMSUNG S3C2410。Linux 交叉開發(fā)包括 Linux 內(nèi)核的開發(fā)和 Linux 應(yīng)用程序的開發(fā)應(yīng)用程序的開發(fā)。有兩種方式: = 1 * GB3 Linux 內(nèi)核的開發(fā):圖2所示為本設(shè)計的開發(fā)環(huán)境以及開發(fā)流程。在主機的 RedHat Linux 操作系統(tǒng)下安裝 Linux 發(fā)行包以及交叉編譯器 arm-linux-gcc。然后對 Linux 進行配置(make menuconfig)并選擇適合本開發(fā)板的相關(guān)配置,配置完成后進行編譯生成 Linux 映像文件zImage。然后將該文件下載到目標板并執(zhí)行。圖2 L
9、inux的開發(fā)流程 = 2 * GB3 Linux 應(yīng)用程序的開發(fā)Linux 應(yīng)用程序的開發(fā)在宿主機一端的操作與內(nèi)核開發(fā)類似,都使用 arm-linux-gcc 編譯器應(yīng)用程序,不同的是,編譯生成 elf 格式的文件而不是 Linux 映像文件。編譯生成的應(yīng)用程序可以通過多種方式進行調(diào)試,下面介紹幾種我們的系統(tǒng)中可以使用的方式: Linux 應(yīng)用程序以文件的方式直接將 elf 格式的文件加入到 Linux 文件系統(tǒng)中,然后更新整個文件系統(tǒng),然后運行目標機 Linux 系統(tǒng)并運行應(yīng)用程序。 運行目標機 Linux 系統(tǒng),然后在目標機 Linux 系統(tǒng)中通過一些工具軟件將宿主機中的應(yīng)用程序通過以太
10、網(wǎng)下載到目標機 Linux 系統(tǒng),如 NFS、FTP、TFTP 等。 在宿主機端將 Linux 應(yīng)用程序拷貝到 U 盤,然后運行目標機 Linux 系統(tǒng),然后在目標機 Linux 系統(tǒng)中通過掛載 U 盤,然后在 U 盤運行應(yīng)用程序。3、嵌入式Linux 的開發(fā)流程嵌入式 linux 開發(fā),根據(jù)應(yīng)用需求的不同有不同的配置開發(fā)方法,但是一般都要經(jīng)過以下過程: 建立開發(fā)環(huán)境。操作系統(tǒng)一般使用 REDHATLINUX,版本7到9都可以,選擇定制安裝或全部安裝,通過網(wǎng)絡(luò)下載相應(yīng)的 GCC 交叉編譯器進行安裝(比如 arm-linux-gcc、arm-uclibc-gcc),或者安裝產(chǎn)品廠家提供的交叉編譯
11、器。 配置開發(fā)主機。配置 MINICOM,一般參數(shù)為波特率 115200,數(shù)據(jù)位 8 位,停止位 1,無奇偶校驗,軟硬件控制流設(shè)為無。在 WINDOWS 下的超級終端的配置也是這樣。(本設(shè)計使用dnw.exe超級終端軟件)MINICOM 軟件的作用是作為調(diào)試嵌入式開發(fā)板信息輸出的監(jiān)視器和鍵盤輸入的工具; 配置網(wǎng)絡(luò),主要是配置 NFS 網(wǎng)絡(luò)文件系統(tǒng),需要關(guān)閉防火墻,簡化嵌入式網(wǎng)絡(luò)調(diào)試環(huán)境設(shè)置過程。 建立引導(dǎo)裝載程序 BOOTLOADER,從網(wǎng)絡(luò)上下載一些公開源代碼的 BOOTLOADER,如 U-BOOT、BLOB、VIVI、LILO、ARM-BOOT、RED-BOOT 等,根據(jù)自己具體芯片進行
12、移植修改。有些芯片沒有內(nèi)置引導(dǎo)裝載程序,比如三星的 ARM7、ARM9 系列芯片,這樣就需要編寫燒寫開發(fā)板上flash 的燒寫程序,網(wǎng)絡(luò)上有免費下載的 WINDOWS 下通過 JTAG 并口簡易仿真器燒寫 ARM 外圍 flash 芯片的程序,也有 LINUX 下公開源代碼的 J-FLASH 程序。如果不能燒寫自己的開發(fā)板,就需要根據(jù)自己的具體電路進行源代碼修改。這是讓系統(tǒng)可以正常運行的第一步。如果你購買了廠家的仿真器當(dāng)然比較容易燒寫 flash 了,但是其中的核心技術(shù)是無法了解的。這對于需要迅速開發(fā)應(yīng)用的人來說可以極大地提高開發(fā)速度。 下載別人已經(jīng)移植好的 LINUX 操作系統(tǒng),如 UCLI
13、NUX、ARM-LINUX、PPC-LINUX 等,如果有專門針對你所使用的 CPU 移植好的 LINUX 操作系統(tǒng)那是再好不過,下載后再添加自己的特定硬件的驅(qū)動程序,進行調(diào)試修改,對于帶 MMU 的 CPU 可以使用模塊方式調(diào)試驅(qū)動,對于UCLINUX 這樣的系統(tǒng)只能編譯進內(nèi)核進行調(diào)試。 建立根文件系統(tǒng),從 下載使用 BUSYBOX 軟件進行功能裁減,產(chǎn)生一個最基本的根文件系統(tǒng),再根據(jù)自己的應(yīng)用需要添加其他的程序。默認的啟動腳本一般都不會符合應(yīng)用的需要,所以就要修改根文件系統(tǒng)中的啟動腳本,它的存放位置位于/etc 目錄下,包括:/etc/init.d/rc.S、/etc/profile、/e
14、tc/.profile 等,自動掛裝文件系統(tǒng)的配置文件/etc/fstab,具體情況會隨系統(tǒng)不同而不同。根文件系統(tǒng)在嵌入式系統(tǒng)中一般設(shè)為只讀,需要使用 mkcramfs 、genromfs 等工具產(chǎn)生燒寫映象文件。 建立應(yīng)用程序的 flash 磁盤分區(qū),一般使用 JFFS2 或 YAFFS 文件系統(tǒng),這需要在內(nèi)核中提供這些文件系統(tǒng)的驅(qū)動,有的系統(tǒng)使用一個線性 flash(NOR 型)512K32M,有的系統(tǒng)使用非線性 flash(NAND 型)8512M,有的兩個同時使用,需要根據(jù)應(yīng)用規(guī)劃 flash 的分區(qū)方案。 開發(fā)應(yīng)用程序,可以下載到根文件系統(tǒng)中,也可以放入 YAFFS、JFFS2 文件
15、系統(tǒng)中,有的應(yīng)用程序不使用根文件系統(tǒng),而是直接將應(yīng)用程序和內(nèi)核設(shè)計在一起。3.2.3 EM-SBC2410音頻接口及其控制原理Samsung S3C2410X帶有I2S音頻總線,因此EM-SBC2410使用一片I2S接口的PHILIPS解碼芯片UDA1341,通過該芯片和相應(yīng)的軟件,用戶可以播放mp3以及wav格式的音頻文件,雙聲道的聲音可以從背面的耳塞插孔直接接至耳塞或音箱,音頻輸入接口可以錄音。此設(shè)計通過音頻放大電路的設(shè)計,結(jié)合相應(yīng)的控制程序,實現(xiàn)mp3歌曲的播放。IIS(Integrate Interface of Sound)即集成音頻接口,在上個世紀80年代首先被Philips公司用
16、于消費產(chǎn)品的音頻設(shè)備,是一種面向多媒體計算機的串行數(shù)字音頻總線協(xié)議。S3C2410X內(nèi)置了一個IIS總線控制器,該控制器實現(xiàn)到一個外部8/16位立體聲音頻編解碼接口。支持IIS總線數(shù)據(jù)格式和MSB-justified數(shù)據(jù)格式,能夠和其他廠商提供的多媒體編解碼芯片配合使用。S3C2410X中有兩條串行數(shù)據(jù)線,一條是輸入信號數(shù)據(jù)線,一條是輸出信號數(shù)據(jù)線,以同時發(fā)送和接收數(shù)據(jù)。該IIS接口能夠讀取IIS總線上的數(shù)據(jù),同時也為FIFO數(shù)據(jù)提供DMA的傳輸模式,這樣能夠同時傳送和接收數(shù)據(jù)。IIS接口有3種工作方式: 正常傳輸模式,正常模式下使用IISCON寄存器對FIFO進行控制。如果傳輸FIFO緩存為
17、空,IISCON的第7位被設(shè)置為“0”,表示不能繼續(xù)傳輸數(shù)據(jù),需要CPU對緩存進行處理。如果傳輸FIFO緩存非空,IISCON的第7位被設(shè)置成“1”,表示可以繼續(xù)傳輸數(shù)據(jù)。同樣,數(shù)據(jù)接收時,如果FIFO滿,標識位是“0”,此時,需要CPU對FIFO進行處理,如果FIFO沒有滿,那么標志位是“1”,這個時候可以繼續(xù)接收數(shù)據(jù)。 DMA模式,通過設(shè)置IISFCON寄存器可以使IIS接口工作于這種模式下。在這種模式中,F(xiàn)IFO寄存器組的控制權(quán)掌握在DMA控制器上,當(dāng)FIFO滿了,由DMA控制器對FIFO中的數(shù)據(jù)進行處理。DMA模式的選擇由IISCON寄存器的第4位和第5位控制。 傳輸/接收模式,這種模
18、式下,IIS數(shù)據(jù)可以同時接收和發(fā)送音頻數(shù)據(jù)。IIS總線控制器結(jié)構(gòu)如圖8.2所示,各功能說明如下: 兩個5比特預(yù)除器IPSR,IPSA_A用于產(chǎn)生IIS總線接口的主時鐘,IPSA_B用做外部CODEC時鐘產(chǎn)生器。 16字節(jié)FIFO,在發(fā)送數(shù)據(jù)時數(shù)據(jù)被寫進TxFIFO,在接收數(shù)據(jù)時數(shù)據(jù)從RxFIFO中讀取。 主IISCLK產(chǎn)生器SCLKG,在主模式下,有主時鐘產(chǎn)生串行位時鐘。 通道產(chǎn)生器和狀態(tài)機CHNC,IISCLK和IISLRCK有通道狀態(tài)機產(chǎn)生并控制。 16比特移位寄存器(SFTR),在發(fā)送數(shù)據(jù)時,并行數(shù)據(jù)經(jīng)由SFTR變成串行數(shù)據(jù)輸出;在數(shù)據(jù)接收時,串行數(shù)據(jù)由SFTR轉(zhuǎn)變成并行數(shù)據(jù)。 IIS相
19、關(guān)寄存器如表1所示。表1 IIS相關(guān)寄存器UDA1341是PHILIPS公司的一款經(jīng)濟型音頻CODEC,用于實現(xiàn)模擬音頻信號的采集和數(shù)字音頻信號的模擬輸出,并通過IIS數(shù)字音頻接口,實現(xiàn)音頻信號的數(shù)字化處理。圖3 IIS總線控制器結(jié)構(gòu)圖如圖3所示,S3C2410X的IIS總線時鐘信號SCK與UDA1341TS的BCK連接,字段選擇連接在WS引腳上。UDA1341TS提供兩個音頻通道,分別用于輸入和輸出,對應(yīng)的引腳連接為:IIS總線的音頻輸出I2SSDO對應(yīng)于UDA1341TS的音頻輸入;IIS總線的音頻輸入I2SSDI對應(yīng)于UDA1341TS的音頻輸出。UDA1341TS的L3接口相當(dāng)于一個混
20、音器控制接口,可以用來控制輸入/輸出音頻信號的音量大小、低音等。L3接口的引腳L3MODE、L3DATA、L3CLOCK分別連接到S3C2410的GPB2、GPB3、GPB4三個通用數(shù)據(jù)輸出引腳上,實現(xiàn)混音控制。3.2.4基于ARM的音頻控制的放大部分的硬件電路設(shè)計 圖4 音頻放大電路此音頻放大電路采用LM386集成芯片,LM386是低電壓應(yīng)用的音頻功率放大集成電路,可使用電池為供電電源,輸入電壓范圍可由4V-12V,具有靜態(tài)電流小、輸出端直流電壓自動跟蹤、電壓增益可調(diào)、外圍元件少等優(yōu)點。為了能產(chǎn)生立體聲,本設(shè)計采用雙通道音頻放大電路,如圖4是其中的一個通道,輸入由音頻線引出,輸出接揚聲器。3
21、.3完成工程訓(xùn)練的主要儀器、設(shè)備、工作環(huán)境硬件:EM-SBC2410 嵌入式開發(fā)板、PC 機 Pentium 500 以上, 硬盤 40G 以上。軟件:PC 機操作系統(tǒng) REDHAT LINUX 9.0MINICOMARM-LINUX 開發(fā)環(huán)境(注意:建議使用Intel芯片組的主板,否則Jtag連接會出現(xiàn)不穩(wěn)定問題。)3.4工程訓(xùn)練的主要內(nèi)容 結(jié)合給學(xué)生布置的基于ARM的音頻控制系統(tǒng)設(shè)計與開發(fā)題目,提出要求,可以包括以下內(nèi)容:(1) 對基于ARM的音頻控制的需求進行分析掌握音頻控制原理。(2) 了解EM-SBC2410開發(fā)板的資源,學(xué)會EM-SBC2410開發(fā)板的硬件資源及其附帶的軟件資源的使
22、用。(3) 結(jié)合音頻控制原理,制定設(shè)計思路。(4) 了解嵌入式開發(fā)的整個設(shè)計流程并搭建嵌入式Linux的開發(fā)環(huán)境(5) 結(jié)合作品的要求,對硬件電路進行設(shè)計并制作(6) 在搭建的嵌入式Linux的開發(fā)環(huán)境中進行軟件設(shè)計并調(diào)試通過(7) 軟硬件聯(lián)調(diào),使作品正常運行(8) 對基于ARM的音頻控制提出新的其他要求。3.5工程訓(xùn)練的實際步驟或操作方法工程訓(xùn)練的實際步驟或操作方法要根據(jù)具體的設(shè)計課題來制定,本設(shè)計的具體操作步驟及方法如下:在進行嵌入式開發(fā)前第一步的工作就是要安裝一臺裝有指定操作系統(tǒng)的 PC 機作宿主開發(fā)機,對于嵌入式 Linux,宿主機上的操作系統(tǒng)一般使用 Redhat Linux。本設(shè)計
23、使用Redhat 9.0,選擇定制安裝或全部安裝,然后安裝相應(yīng)的 GCC 交叉編譯器(比如 arm-linux-gcc、arm-uclibc-gcc),或者安裝產(chǎn)品廠家提供的交叉編譯器。1、REDHAT LINUX 9.0 的安裝首先在一臺 PC 上安裝Vmware 6.5虛擬機環(huán)境,然后在虛擬機上安裝 RedHat LINUX9.0,選擇 Custom 定制安裝,在選擇軟件 Package 時最好將所有包都安裝,需要空間約 2.7G,如果選擇最后一項:everything,即完全安裝,將安裝 3 張光盤的全部軟件,需要磁盤空間大約 5G。因此建議提前為 REDHAT LINUX 的安裝預(yù)留大
24、約 515G 的空間,具體視用戶的硬盤空間大小來確定,在安裝完 Redhat 后還要安裝Linux 的編譯器和開發(fā)庫以及 ARM-Linux 的所有源代碼,這些包安裝后的總共需要空間大約為 800M。2、VMware Tools的安裝在虛擬機中安裝完RedHat LINUX9.0操作系統(tǒng)之后,接下來需要安裝VMware Tools。VMware Tools相當(dāng)于VMware虛擬機的主板芯片組驅(qū)動和顯卡驅(qū)動、鼠標驅(qū)動,在安裝VMware Tools后,可以極大提高虛擬機的性能,并且可以讓虛擬機分辨率以任意大小進行設(shè)置,還可以使用鼠標直接從虛擬機窗口中切換到主機中為。其安裝過程如下: = 1 *
25、GB3 從VM菜單下選擇安裝VMware Tools,此時就會有VMware-tools文件映像到CDROM中; = 2 * GB3 把“VMwareTools-6.5.0-118166.i386.rpm和VMwareTools-6.5.0-118166.tar.gz”文件復(fù)制 /tmp 目錄中,然后選擇一種安裝方式。在此我選VMwareTools-6.0.2-59824.tar.gz。 = 3 * GB3 進入/tmp目錄,解壓# tar -zxvf VMwareTools-6.5.0-118166.tar.gz = 4 * GB3 進入/tmp vmware-tools-distrib目錄
26、中,輸入 ./vmware-install.pl進行安裝,在安裝過程中根據(jù)提示進行選擇,在此我一路選擇回車即可。3、交叉編譯器的安裝在安裝交叉編譯器前,首先要實現(xiàn)在Linux中能夠共享Windows中的文檔,即能夠把開發(fā)板所需的交叉編譯器拷貝到Linux中,然后才能進行安裝。點擊VMsettingsoptionsShared Folders,通過add進行F: SBC共享目錄的添加。添加的共享目錄會在/mnt/hgfs目錄中。交叉編譯器和內(nèi)核就放在SBC中。其安裝的過程如下: = 1 * GB3 在根目錄下新建SBC-linux的文件名,把共享目錄SBC中的內(nèi)容復(fù)制到該目錄下,然后在該目錄下執(zhí)
27、行命令tar -zxvf arm-linux-toolchains.tgz,并把2.95.3這個目錄復(fù)制到/usr/local/arm目錄中。 = 2 * GB3 為了可以方便的使用arm-linux-gcc編譯器系統(tǒng),把交叉編譯器設(shè)置為全局變量,進入/etc,執(zhí)行vi /etc/profile ,在pathmunge /usr/local/sbin后添加pathmunge /usr/local/arm/2.95.3/bin,保存退出。 = 3 * GB3 測試交叉編譯器是否安裝成功,首先在SBC-linux目錄下執(zhí)行命令tar zxvf SBC2410II.tgz,并把SBC2410II目錄
28、復(fù)制到/SBC-linux目錄中,然后進入目錄/SBC-linux/ SBC2410II/examples/hello后執(zhí)行arm-linux-gcc o hello hello.c ,在hello目錄下會生成hello.o的目標文件。4、以“hello,world”程序為例熟悉整個開發(fā)過程 = 1 * GB3 在 PC 上編輯以下源代碼,并保存為 hello.c#include int main(void) printf(hello, Nanchang University College of Science and Technology!n); return 0; = 2 * GB3 編
29、譯 hello 使用以下命令編譯:arm-linux-gcc o hello hello.c將生成 hello 可執(zhí)行文件。 = 3 * GB3 下載并運行把U盤插入 PC 的 USB,把/SBC-linux/ SBC2410II/examples/hello目錄中的Hello.o目標文件復(fù)制到U盤中。然后把優(yōu)盤拔下來插入到 SBC-2410X 的 USB HOST 端口,打開dnw.exe終端,連接好超級終端(其中波特率設(shè)置為115200bps,com設(shè)置為PC機上相對應(yīng)的端口),啟動EM-SBC2410開發(fā)板,按照以下命令操作:#mount /dev/sda1 /mnt; 掛接優(yōu)盤#cp
30、/mnt/hello /bin; 把 hello 復(fù)制到 bin 目錄 #hello; 執(zhí)行 hello在終端上將出現(xiàn)“hello, Nanchang University College of Science and Technology!”字樣。然后輸入#umount /mnt命令退出U盤。(千萬記住不要直接拔下U盤,否則有可能會對U盤造成損壞。)5、基于ARM的音頻控制的放大部分的硬件電路設(shè)計及制作按要求進行音頻控制的放大部分的電路設(shè)計,利用protel軟件畫出原理圖并生成PCB圖,利用自己的PCB圖,根據(jù)印制電路制版的整個工藝過程(在工程訓(xùn)練3及其工程訓(xùn)練4中已經(jīng)過嚴格的訓(xùn)練),制作出
31、最后的PCB板。PCB板制作完畢后,在自己的的PCB板上進行電路的焊接并調(diào)試成功。6、音頻設(shè)備驅(qū)動程序的實現(xiàn)在Linux下,音頻設(shè)備驅(qū)動程序的實現(xiàn)與文件系統(tǒng)的操作密切相關(guān)。Linux將各種設(shè)備以文件的形式給出統(tǒng)一的接口,如何對各種音頻設(shè)備進行操作是在Linux上進行音頻編程的關(guān)鍵,通過內(nèi)核提供的一組系統(tǒng)調(diào)用,應(yīng)用程序能夠訪問聲卡驅(qū)動程序提供的各種音頻設(shè)備接口,這是在Linux下進行音頻編程的最簡單也是最直接的方法。UDA1341驅(qū)動程序位于:/SBC-linux/SBC2410II/kernel/drivers/sound/s3c2410-uda1341.c,該設(shè)備驅(qū)動程序比較多,其主要模塊包
32、括:UDA1341驅(qū)動的初始化、打開音頻設(shè)備、緩存區(qū)設(shè)計、ioctl系統(tǒng)調(diào)用和音頻數(shù)據(jù)的播放和錄制。7、媒體播放器的移植Mplayer是Linux下強大的媒體播放器,對媒體格式廣泛支持,最新的版本可以支持Divx、H.264、MPEG4等最新的媒體格式,可以實時在線播放視頻流,是目前嵌入式媒體播放器的首選。其媒體播放器的移植過程如下: = 1 * GB3 安裝和編譯Mplayer的源代碼可以從其主頁 HYPERLINK http:/www.mplayerhq.hu http:/www.mplayerhq.hu下載。打開Mplayer官方網(wǎng)站的主頁,可以看到“download”鏈接,單擊即進入下
33、載頁面。在該頁面里可以看到“daily CVS snapshot source”的下載部分,這部分鏈接指向了每天提交到CVS服務(wù)器里最新的Mplayer源代碼包,鼠標單擊一下開始下載。對下載的文件Mplayer-current.tar.bz2解壓縮:#tar zvvf Mplayer-current.tar.bz2在解壓縮得到的Mplayer-0.93目錄下有一個腳本文件mkall,這個文件是一個編譯腳本,在該目錄下直接執(zhí)行:#./mkall該腳本將配置并編譯mplay, 下面是該腳本所進行的配置和編譯命令:./configure cc=usr/local/arm/2.95.3/bin/arm
34、-linux-gcc-target=arm-linuxwith-extralibdir=/usr/local/2.95.3/bin/arm-linux-gcc/lib with-extraincdir=usr/local/2.95.3/bin/arm-linux/include/-disable-sd1 enable-static -disable- dvdnav disable-tv disable-gui disable-mpdvdkit enable-linux-devfsmake編譯成功后,將在Mplayer-0.93目錄下生成mplayer文件,該文件為mplayer媒體播放程序。
35、= 2 * GB3 下載運行播放mp3歌曲(shanghaitan.mp3),在終端上輸入#madplay /root/Documents shanghaitan.mp3在終端上將出現(xiàn):MPEG Audio Decoder 0.15.0 (beta) - Copyright (C) 2000-2003 Robert Leslie et al. Title: 上海灘 Artist: 葉麗儀 Year: 2000 Genre: Goa按Ctrl+C退出。8、掛U盤播放mp3格式的歌曲往U盤中拷入keai.mp3和quan.mp3兩首歌曲,輸入命令:#mount /dev/sda1 /mnt; 掛接
36、優(yōu)盤#madplay /mnt keai.mp3在終端上將出現(xiàn):MPEG Audio Decoder 0.15.0 (beta) - Copyright (C) 2000-2003 Robert Leslie et al. /mntinput: read: Is a directory keai.mp3按Ctrl+C退出。輸入命令:#madplay /mnt quan.mp3在終端上將出現(xiàn):MPEG Audio Decoder 0.15.0 (beta) - Copyright (C) 2000-2003 Robert Leslie et al. /mntinput: read: Is a d
37、irectory quan.mp3 Title: 全是愛 Copyright (C) QQ音樂 Artist: 鳳凰傳奇 Album: 最炫民族風(fēng) Year: 2009 Genre: Other9、軟硬件的聯(lián)調(diào)把自己制作的音頻放大電路接入EM-SBC2410開發(fā)板的音頻接口,在終端上重復(fù)執(zhí)行步驟7和步驟8,將聽到所播放的歌曲。3.6 工程訓(xùn)練總結(jié)工程訓(xùn)練按上述要求完成基于ARM的音頻控制,最終能正常播放U盤中的mp3歌曲,要根據(jù)各專業(yè)的要求和格式,做出工程訓(xùn)練報告。學(xué)生完成的工程訓(xùn)練報告,由帶教老師批改,給出成績,如成績合格者可獲2個學(xué)分。3.7 參考文獻1、深圳芯控科技有限公司編,EM-SB
38、C2410用戶手冊,2008年6月2、黃麗娜、管佩森、陳彩可著,Red Hat Linux 9.0基礎(chǔ)教程,清華大學(xué)出版社,20043、馬忠梅、李善平、康慨,葉楠著,ARM&Linux嵌入式教程,北京航天航空出版社,20044、于明、范書瑞、曾祥燁編著,ARM9嵌入式系統(tǒng)設(shè)計與開發(fā)教程,電子工業(yè)出版社,2006年9月附錄資料:不需要的可以自行刪除ARM經(jīng)典40問答第1問:Q:請問在初始化CPU堆棧的時候一開始在執(zhí)行mov r0, LR這句指令時處理器是什么模式A:復(fù)位后的模式,即管理模式。第2問: Q:請教:MOV中的8位圖立即數(shù),是怎么一回事 0 xF0000001是怎么來的 A:是循環(huán)右移
39、,就是一個0255 之間的數(shù)左移或右移偶數(shù)位的來的,也就是這個數(shù)除以4一直除, 直到在0-255的范圍內(nèi)它是整數(shù)就說明是可以的! A:8位數(shù)(0-255)循環(huán)左移或循環(huán)右移偶數(shù)位得到的,F(xiàn)0000001既是0 x1F循環(huán)右移4位,符合規(guī)范,所以是正確的。這樣做是因為指令長度的限制,不可能把32位立即數(shù)放在32位的指令中。移位偶數(shù)也是這個原因??梢钥匆豢?HYPERLINK t _blank arm體系結(jié)構(gòu)(ADS自帶的英文文檔)的相關(guān)部分。第3問: Q:請教: HYPERLINK t _blank arm微控制器基礎(chǔ)與實戰(zhàn)2.2.1節(jié)關(guān)于第2個操作數(shù)的描述中有這么一段:#inmed_8r常數(shù)表
40、達式。該常數(shù)必須對應(yīng)8位位圖,即常熟是由一個8位的常數(shù)循環(huán)移位偶數(shù)位得到。 合法常量:0 x3FC,0,0 xF0000000,200,0 xF0000001. 非法常量:0 x1FE,511,0 xFFFF,0 x1010,0 xF0000010. 常數(shù)表達式應(yīng)用舉例: LDR R0,R1,#-4 ;讀取 R1 地址上的 HYPERLINK / t _blank 存儲器單元內(nèi)容,且 R1 = R1-4 針對這一段,我的疑問: 1. 即常數(shù)是由一個8位的常數(shù)循環(huán)移位偶數(shù)位得到,這句話如何理解 2. 該常數(shù)必須對應(yīng)8位位圖,既然是8位位圖,那么取值為0-255,怎么0 x3FC這種超出255的數(shù)
41、是合法常量呢 3. 所舉例子中,合法常量和非法常量是怎么區(qū)分的 如0 x3FC合法,而0 x1FE卻非法0 xF0000000,0 xF0000001都合法,而0 xF0000010又變成了非法 4. 對于匯編語句 LDR R0,R1,#-4,是先將R1的值減4結(jié)果存入R1,然后讀取R1所指單元的 值到R0,還是先讀取R1到R0,然后再將R1減4結(jié)果存入R1 A:提示,任何常數(shù)都可用底數(shù)*2的n次冪 來表示。 1. HYPERLINK t _blank arm結(jié)構(gòu)中,只有8bits用來表示底數(shù),因此底數(shù)必須是8位位圖。 2. 8位位圖循環(huán)之后得到常數(shù),并非只能是8位。 3. 0 xF00000
42、10底數(shù)是9位,不能表示。 4. LDR R0, R1, #-4 是后索引,即先讀,再減。 可以看一看 HYPERLINK t _blank arm體系結(jié)構(gòu)對相關(guān)尋址方式的說明。第4問: Q:在程序移植的過程中,什么代碼段處于什么樣的模式,這可真是一個困擾人的大難題,有沒有一種標志或辦法能夠識別代碼段處于什么樣的模式 A:讀取 CPSR ,任何時候都是可以讀。第5問: Q:為什么保護現(xiàn)場時,總是保護 R0-R3,R12,為什么不保護R4-R11A:請看一看 HYPERLINK t _blank arm-thumb過程調(diào)用標準這個文檔。第6問: Q:請問 mov R1,#0 x00003DD0
43、錯誤: out of the range of operation是怎么回事情 我就是想IODIR=0 x00003dd0,匯編就是 LDR R0,=IODIR MOV R1,#0 x00003dd0 STR R1,R0 編譯時候說是超出操作范圍 A:使用ldr,mov的操作數(shù)為8位位圖數(shù)。第7問: Q:在 HYPERLINK t _blank arm7TDMI(-S)處理器內(nèi)部有37個用戶可見的寄存器: 問題:用戶可見應(yīng)該怎樣理解 這37個寄存器是否是37個不同的物理寄存器, 例如R8與R8_fiq應(yīng)該是兩個不同的物理寄存器吧 A:用戶可見是指用戶可以通過程序操作的。R8與R8_fiq是兩個
44、不同的寄存器。第8問: Q: USR模式,SVC模式,IRQ模式分別有哪些限制 A:對于外設(shè)操作限制與芯片設(shè)計有關(guān)。USR模式不能設(shè)置CPSR寄存器。 用戶模式下無SPSR寄存器,代碼可以為 HYPERLINK t _blank arm,Thumb.第9問: Q:請問在初始化堆棧時就決定了工作模式是什么意思 如何決定工作模式的 A:設(shè)置CPSR寄存器。第10問: Q:請問: HYPERLINK t _blank arm匯編程序設(shè)計中所謂的文字池作何理解 A:可以理解為常量數(shù)組,文字池中保存的是常量,這些常量可以是正常的常量,也可以是地址。第11問: Q:為什么在中斷向量表中不直接LDR PC,
45、異常地址.而是使用一個標號,然有再在后面使用DCD定義這個標號 A:因為LDR指令只能跳到當(dāng)前PC 4kB范圍內(nèi),而B指令能跳轉(zhuǎn)到32MB范圍,而現(xiàn)在這樣在LDR PC, xxxx這條指令不遠處用xxxxDCD定義一個字,而這個字里面存放最終異常服務(wù)程序的地址,這樣可以實現(xiàn)4GB全范圍跳轉(zhuǎn)。 Q: LDR 不是可以全空間跳轉(zhuǎn)的嗎 HYPERLINK t _blank arm微控制器基礎(chǔ)與實戰(zhàn)程序清單5.3. A: LDR偽指令通過設(shè)置指令緩沖池才能實現(xiàn)全范圍跳轉(zhuǎn),而LDR指令則只能實現(xiàn)4KB范圍跳轉(zhuǎn)。第12問: Q: ARM7TDMI-S和 HYPERLINK t _blank arm7TDM
46、I有何區(qū)別 A: ARM7TDMI-S是ARM7TDMI的可綜合(synthesizable)版本(軟核)。 對應(yīng)用工程師來說,除非芯片生產(chǎn)廠商對ARM7TDMI-S進行了裁減,否則ARM7TDMI-S與ARM7TDMI沒有太大的區(qū)別,其編程模型與 HYPERLINK t _blank arm7TDMI一致。第13問: Q: DCD偽指令的疑惑。 StackUsr DCD UsrStackSpace + (USR_STACK_LEGTH - 1) * 4 這句話是什么意思 DCD后面的程序標號或數(shù)字表達式是何意 A:它的內(nèi)容是初始化遞減堆棧的最高地址,看 HYPERLINK t _blank
47、arm微控制器基礎(chǔ)與實戰(zhàn)2.3.2節(jié)。 第2章 編譯器與語言第14問: Q:00254: Unimplemented RDI message是什么錯誤提示 我的設(shè)置連接都正常,是不是芯片燒了 A:是JTAG的問題??梢韵仁褂肐SP操作試試就知道了,如果能ISP,說明LPC2104沒有損壞,還能正常運行程序。第15問: Q:請教:我在調(diào)試程序的時候在AXD中出現(xiàn)這樣的提示信息: RDI Warning 00159:could not open specified device port. 我是根據(jù)配套教程的步驟設(shè)置的。 A:請按照光盤easy HYPERLINK t _blank arm_dri
48、vereadme.txt安裝驅(qū)動程序。第16問: Q:我用實驗程序運行經(jīng)常出現(xiàn)下列信息! 程序不能 HYPERLINK / t _blank 下載到目標板。 Warnning! interrupt vectors data is not correct! Program you downloaded can not run freely! A:1.仿真器配置一定要正確,即Easy HYPERLINK t _blank arm Configuration設(shè)置窗口中的FLASH項中選擇Erase Flash when need; 2.向量表累加和要為0; 3.可以先在RAM調(diào)試一個程序(運行),然
49、后STOP,再使用File-Load Image加載要 HYPERLINK / t _blank 下載到FLASH的調(diào)試文件。第17問: Q:在ADS中是否可以進行軟件調(diào)試基于UCOS-II的程序 A:ADS軟件調(diào)試只能調(diào)試 HYPERLINK t _blank arm的內(nèi)核,不能調(diào)試外設(shè)。但是取消 PLL 鎖定檢測后,可以調(diào)試任務(wù)切換,最終到空閑任務(wù)上。開始移植時軟件仿真是最好的工具。第18問: Q: HYPERLINK t _blank armulate軟件是干什么的 2104不是用EasyJTAG.dll來仿真嗎 A:軟件仿真只能仿真 HYPERLINK t _blank arm 核。第
50、19問: Q:有關(guān)LPC2106.INC的問題。我無法在project引用lpc2106.inc文件,只能引用lpc2106.h文件, 這是什么原因 且當(dāng)我的主程序用匯編編寫時,不能引用lpc2106.h,用lpc2106.inc則無法加入project,請問匯編器應(yīng)如何設(shè)置 A:不用加2106.inc只要該文件在你的工程文件夾中,就可以直接在匯編程序的開始處加 include 2106.inc. 注意:該文件是匯編文件定義的頭文件,定義內(nèi)部寄存器。第20問: Q:入口點是什么意思 我在使用LPC2106上移植UCOS-II,每次MAKE時總是提示我 Image does not have a
51、n entry point,可是我是把光盤的vetctors.s 復(fù)制過來的,而且仔細看了看,已經(jīng)聲明了ENTERY,這是怎么回事A:需要在ADS中設(shè)置入口。第21問: Q:請教:如何定義不被初始化變量 A:讓編譯器不知道有這個內(nèi)存地址即可。 A:如用分散加載文件分配RAM故意預(yù)留一部分RAM不分配,用它來存您不需要初始化的東西?;蛘卟徽{(diào)用編譯器提供的啟動代碼,不過這樣可能編程會麻煩一些。第22問: Q:我直接通過JTAG口 HYPERLINK / t _blank 下載EasyArm板帶的Ext1_test程序到 HYPERLINK t _blank arm中,出現(xiàn)中斷向量的告警: inte
52、rrupt vector is not correct HYPERLINK t _blank arm is not running freely. 果然復(fù)位后芯片不能運行。但是我用串口 HYPERLINK / t _blank 下載后芯片能正常工作,中斷也行的。 并且我用JTAG仿真的話,芯片能正常工作,中斷也行的,唯獨JTAG口 HYPERLINK / t _blank 下載不行。 不知道是什么原因 A:仿真器配置中要設(shè)置Erase Flash when need.也可以這樣試試: 1.可以先打開一個工程在RAM中調(diào)試運行; 2.stop程序; 3.使用File-Load Image重新加載
53、Ext1_test生成的*.axf文件。 Q:仿真器配置中我是設(shè)置了Erase Flash when need,但照你說的話,那不是在RAM下調(diào)試嗎 在RAM下調(diào)試我是可以的,但是下載后出現(xiàn)interrupt vector data is not correct. 我又看了幾篇文章,是不是跟中斷向量表的累加和不為零有關(guān)系啊 A:是的,是向量表的累加和不為零。 因為如果用ISP下載能運行,說明向量表的累加和已為零,而用JTAG下載不能運行的情況可能是 沒有正常下載代碼。先在RAM中調(diào)試,目的是為了后面正確下載程序到FLASH.第23問: Q:用Scatter怎樣將某個函數(shù)或文件定位在Flash的
54、某個位置 第24問: Q:我在仿真時遇到這樣的提示: Error, Flash is protected by user configation! 怎么寫到flash里面呢 A:看配套 HYPERLINK t _blank arm微控制器基礎(chǔ)與實戰(zhàn)附錄一。第25問: Q:我在移植實驗中想到了兩個問題,如下: 1.Debug和Release以及DebugRel有什么不同,為什么在作2104移植實驗時,要用Release 2.在Release中為什么要將RW Base設(shè)置為0 x40000040 我將其設(shè)置為0 x40003000, 為什么不能工作 A:都只是一個問題,內(nèi)存空間的使用,因為跑OS要
55、比較大的內(nèi)存空間,所以要騰出點地方。第26問: Q:請問沒有MMU的 HYPERLINK t _blank arm芯片是否支持使用malloc()函數(shù)動態(tài)分配內(nèi)存 A:是否支持malloc()函數(shù)與芯片沒有多大關(guān)系,主要與編譯器有關(guān)。 Q:再問:如果沒有操作系統(tǒng)支持呢 A:也支持。第27問: Q:在I2C實驗程序中,我想查看數(shù)據(jù)緩沖區(qū)DataBuf的值,怎么查看 A:watch窗口或鼠標停留在要查看的變量名上。 Q:我查詢的是寫入DataBuf緩沖區(qū)的值,鼠標在上面根本就不會出現(xiàn)他的值,即使在watch中加入, 結(jié)果也是name not found. A:變量被優(yōu)化,調(diào)試時可以把該變量定義為全
56、局變量查看。第28問: Q:仿真軟件和2104開發(fā)板連接不上 DBE Warning 00041: !An unspecified Debug Toolbox call failed 電源和開發(fā)板都連好,錯誤和沒接開發(fā)板一樣,驅(qū)動也安裝了,安裝時按確定鍵時,軟件很長時間才有如上反應(yīng),請幫忙 A:1.并口是否正常 2.在其它操作系統(tǒng)(如98)下或其它臺式PC下試試。第29問: Q:如何生成32位hex文件 我在Release Setting- HYPERLINK t _blank arm fromELF-Output Format中設(shè)置為Intel 32bit HEX,可是好像沒有生成hex文件
57、 A:試試這種方法: Target-Target Setting- ost Link中選擇 HYPERLINK t _blank arm fromELF加上你上面設(shè)的應(yīng)該不成問題。第30問: Q:請問關(guān)于settings中r0 base rw base的意思 A:ro:read only,rw:read and write.第31問: Q:編譯成功后的信息第一行,code,R0 data,RW data,ZI data,debug分別代表什么 A:R0 只讀段,即程序代碼空間; RW 可讀/寫段,即數(shù)據(jù)變量空間; ZI 清零變量段,即需要清零初始化的數(shù)據(jù)變量空間。第32問: Q:如何在ADS里面看任務(wù)執(zhí)行的一些情況 比如堆棧。 A:多任務(wù)環(huán)境下的堆棧,內(nèi)存等信息需要調(diào)試軟件的支持才可以實現(xiàn)。 ucos下有一個統(tǒng)計功能的模塊可以間接實現(xiàn)部分功能。第33問: Q:請問向fl
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024智慧城市交通信號控制系統(tǒng)優(yōu)化合同
- 2025年度橙子包裝設(shè)計與定制生產(chǎn)合同2篇
- 2025年度環(huán)保設(shè)備銷售與服務(wù)合同4篇
- 2024版人身損害賠償協(xié)議
- 二零二四年外墻清洗專業(yè)團隊服務(wù)合同樣本3篇
- 2024-2025學(xué)年高中地理第一章環(huán)境與環(huán)境問題第一節(jié)我們周圍的環(huán)境課時分層作業(yè)含解析新人教版選修6
- 二零二五版城市綜合體土方運輸與臨時堆場租賃合同3篇
- 二零二五年度餐飲業(yè)人力資源派遣合同范本3篇
- 2025年特色小鎮(zhèn)物業(yè)經(jīng)營權(quán)及配套設(shè)施合作合同3篇
- 二零二五版科技公司股份交易與稅收籌劃合同3篇
- 上海紐約大學(xué)自主招生面試試題綜合素質(zhì)答案技巧
- 辦公家具項目實施方案、供貨方案
- 2022年物流服務(wù)師職業(yè)技能競賽理論題庫(含答案)
- ?;钒踩僮饕?guī)程
- 連鎖遺傳和遺傳作圖
- DB63∕T 1885-2020 青海省城鎮(zhèn)老舊小區(qū)綜合改造技術(shù)規(guī)程
- 高邊坡施工危險源辨識及分析
- 中海地產(chǎn)設(shè)計管理程序
- 簡譜視唱15942
- 《城鎮(zhèn)燃氣設(shè)施運行、維護和搶修安全技術(shù)規(guī)程》(CJJ51-2006)
- 項目付款審核流程(visio流程圖)
評論
0/150
提交評論