<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于嵌入式硬件平臺的劃片機(jī)視覺系統(tǒng)設(shè)計

          基于嵌入式硬件平臺的劃片機(jī)視覺系統(tǒng)設(shè)計

          作者: 時間:2016-12-02 來源:網(wǎng)絡(luò) 收藏

          S3C2510 ARM處理器,內(nèi)部PCI(MINI-PCI)&PC Card控制器符合PCI總線規(guī)范2.2版本,將S3C2510的PCI(MINI-PCI)&PC Card控制器設(shè)置為PCI Host工作模式(見表1),具有32bit地址/數(shù)據(jù)復(fù)用總線,支持非線性傳輸和突發(fā)傳輸,最高數(shù)據(jù)傳輸速度可以達(dá)到264 MB/s及66 MHz(132 MB/s及33 MHz)。而且?guī)в械刂纷儞Q機(jī)制,可以將內(nèi)部的PCI總線地址映射到內(nèi)存或者外圍設(shè)備。在設(shè)計中設(shè)定PCI總線的時鐘頻率為66 MHz,因此主板上PCI總線的最高傳輸速度可以達(dá)到264 MB/s,能夠滿足數(shù)據(jù)的快速傳輸。系統(tǒng)利用時鐘反饋來彌補(bǔ)PCI的時鐘延遲。

          當(dāng)PCI控制器工作在PCI HOST、模式下時,其時鐘源是由系統(tǒng)內(nèi)部提供的,S3C2510有3個PCI時鐘輸出信號PCICLK1,PCICLK2和PCILK3,將PCI設(shè)備診斷寄存器PCIDIAG0的DC3位設(shè)置為l,即將PCICLK3設(shè)置為輸出無效,此時PCICLK1與PCICLK3相連,通過PCICLK3將時鐘信號反饋給處理器內(nèi)核,這樣可以使外部PCI設(shè)備與PCI時鐘保持一致,從而彌補(bǔ)時鐘延遲。

          系統(tǒng)以及PCI控制器的啟動順序如圖4所示。其中在對PCI控制器的特殊功能寄存器進(jìn)行配置時需要首先關(guān)閉中斷,即設(shè)置PCIINTEN=0。然后設(shè)置PCI控制和狀態(tài)寄存器PCICON[ARB,ATS,SPL,IOP,MMP],某些需要的情況下還要設(shè)置PCI診斷寄存器,這個寄存器是針對測試功能的,在PCMCIA Host工作模式下不需要進(jìn)行設(shè)置。然后要對與基地址有關(guān)的寄存器PCIBAM0~l和PCI-BATPA0~2進(jìn)行設(shè)計,設(shè)置完之后要配置有關(guān)PCI重啟和時鐘的寄存器,其中關(guān)鍵的一步是設(shè)置PCI重啟和時鐘寄存器PCIRCC[MSK]=0,這是為了防止重啟信號和時鐘信號的沖突。

          在PCI控制器偵測外圍設(shè)備并初始化外圍設(shè)備的寄存器時,需要完成以下工作:

          (1)讀取所有的配置寄存器值,包括PCIHID,PCIHSC,PCIHSSID等;

          (2)檢查BAR(Backup Address Register)的范圍并一一分配空間;

          (3)使能外部設(shè)備并激活總線。

          以上配置都是在PCI圖像采集模塊的驅(qū)動中完成的,因為已經(jīng)把驅(qū)動程序加載到了ARM Linux的內(nèi)核中,所以系統(tǒng)啟動之后,操作系統(tǒng)會自動配置PCI外部設(shè)備。

          3 ARM Linux移植和設(shè)備驅(qū)動實現(xiàn)

          3.1 Boot Loader的移植

          Boot Loader是和硬件緊密連接的,系統(tǒng)是通過Boot Loader。來調(diào)用操作系統(tǒng)內(nèi)核并最終運(yùn)行操作系統(tǒng)。本系統(tǒng)采用了U-Boot(Universal Boot Loader)作為。Boot Loader,U-Boot相當(dāng)于一個小型的Linux系統(tǒng),其工作涉及到硬件系統(tǒng)的初始化、存儲空間分配等,在設(shè)計過程中主要完成了以下工作,相關(guān)的程序編寫根據(jù)U-Boot提供的例程來完成:

          (1)修改Makefile配置文件,添加針對目標(biāo)板的編譯命令行;

          (2)在CPU目錄下建立arm940t目錄,主要包括中斷設(shè)置函數(shù)代碼interrupts9c,系統(tǒng)入口函數(shù)start.S,CPU相關(guān)代碼文件cpu.c以及串口初始化代碼相關(guān)文件serial.c等;

          (3)在Board目錄下建立S3C2510目錄,主要包括FLASH初始化代碼flash.c,連接器文件u-boot.1ds,內(nèi)存分配代碼MEMSetup.S等;

          (4)編寫配置文件,即:include/configs/s3c25 l0.h,對寄存器的定義等系統(tǒng)配置,大部分工作是參考S3C25l0的數(shù)據(jù)手冊來進(jìn)行的;

          (5)編寫flash.c文件,根據(jù)使用的AMD的NOR Flash來編寫Flash的驅(qū)動,包括flash芯片的型號,打印信息,容量大小,flash擦除函數(shù)等;

          (6)修改SDRAM的大小,修改配置文件in-clude/configs/s3c25 10.h 中 的 #define PHYS _SDRAM_ SIZE值。其大小是根據(jù)實際應(yīng)用中SDRAM的大小來確定;

          (7)修改串口參數(shù)文件serial.C。主要是設(shè)置串口波特率,波特率計算公式為:RUBRDIVO=((int)(MCLK/16./(gd_>baudrate)+0.5)-1);

          (8)修改start.S文件,一個可執(zhí)行的Image必須有一個入口點并且只能有一個唯一的全局入口,修改start.S中的.globl _start _start:使其放在Rom(flash)的0×0地址。編譯U-Boot,通過Jtag口下載到目標(biāo)板進(jìn)行調(diào)試。



          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();