新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于ARM和DSP的嵌入式智能儀器系統(tǒng)設(shè)計(jì)

基于ARM和DSP的嵌入式智能儀器系統(tǒng)設(shè)計(jì)

作者:孟菊 王金海 趙雷新 張麗麗 時(shí)間:2008-06-02 來源:微計(jì)算機(jī)信息 收藏

  3.2 與以太網(wǎng)控制器之間的通信設(shè)計(jì)

本文引用地址:http://m.butianyuan.cn/article/83483.htm

  系統(tǒng)平臺實(shí)現(xiàn)了以太網(wǎng)接口。提供了以太網(wǎng)芯片的驅(qū)動(dòng),支持網(wǎng)絡(luò)功能。以太網(wǎng)控制芯片的數(shù)據(jù)、地址和控制信號與EP7312的總線相連,如圖3所示。片選信號使用EP7312的擴(kuò)展片選信號nCS2。

 

圖3 以太網(wǎng)接口原理圖

  RTL8019默認(rèn)的I/O基地址是300H,用到的地址空間為300H~3FFH,因此使用到EP7312的低4位地址線,將RTL8019上的SA19~SA10和SA7~SA5接為地,SA9、SA8接為VCC。RTL8019AS使用的是16位數(shù)據(jù)總線方式,因此,將RTL8019上的IOCS16B引腳通過10K的上拉電阻接為VCC;通過IO模式讀寫以太網(wǎng)控制器,所以SMEMRB和SMEMWB引腳通過上拉電阻接為VCC。

  當(dāng)EP7312向網(wǎng)上發(fā)送數(shù)據(jù)時(shí),先將一幀數(shù)據(jù)通過遠(yuǎn)程DMA通道送到RTL8019AS中的發(fā)送緩存區(qū),然后發(fā)出傳送命令;當(dāng)RTL8019AS完成了上一幀的發(fā)送后,再開始此幀的發(fā)送。RTL8019AS接收到的數(shù)據(jù)通過MAC比較、CRC校驗(yàn)后,由FIFO存到接收緩沖區(qū);收滿一幀后,以中斷的方式通知EP7312。FIFO邏輯對收發(fā)數(shù)據(jù)作16字節(jié)的緩沖,以減少對本地DMA請求的頻率。

  以太網(wǎng)控制器有兩個(gè)指針寄存器來控制緩沖區(qū)的存儲(chǔ)過程,當(dāng)前頁面指針curr和邊界指針bnry。curr指向新接收到幀的起始頁面,即接收緩沖環(huán)的寫頁面指針;bnry指向讀過的最后一個(gè)頁面,即接收緩沖環(huán)讀頁面指針。自定義指針next_page,表示存儲(chǔ)分組緩沖區(qū)的邊界,初始值為next_page=bnry,讀取一頁數(shù)據(jù)后由軟件執(zhí)行bnry加1,curr自動(dòng)加1。curr不等于bnry時(shí),表示有新的數(shù)據(jù)包在緩沖區(qū)中,讀取一包的前四個(gè)字節(jié),前四個(gè)字節(jié)并不是以太網(wǎng)數(shù)據(jù)包的內(nèi)容。分別表示數(shù)據(jù)包存放的頁地址和已接收的數(shù)據(jù)的字節(jié)數(shù)。如果curr=0,表示讀取出錯(cuò),返回null。如果bnry>0x7f,則bnry=0x4c。

  4 系統(tǒng)軟件設(shè)計(jì)

  4.1 BootLoader的設(shè)計(jì)

  該系統(tǒng)引入了Linux操作系統(tǒng),可以給系統(tǒng)下的任務(wù)提供調(diào)度機(jī)制,簡化任務(wù)中的需求操作,當(dāng)需求變化時(shí)只需要改變?nèi)蝿?wù)內(nèi)容,然后重新和操作系統(tǒng)發(fā)布即可。

  本系統(tǒng)中EP7312采用的是外部啟動(dòng)方式,也就是從CS[0]片選的外部NORFLASH啟動(dòng),系統(tǒng)啟動(dòng)后,執(zhí)行啟動(dòng)代碼,即初始化CPU、內(nèi)存控制器以及片上設(shè)備,然后配置存儲(chǔ)映射。啟動(dòng)代碼隨后執(zhí)行一個(gè)引導(dǎo)裝載程序bootloader,將內(nèi)核從FLASH中解壓到SRAM中,然后跳轉(zhuǎn)到內(nèi)核的第一條指令處執(zhí)行,內(nèi)核運(yùn)行。

  bootloader完成從硬件啟動(dòng)到操作系統(tǒng)啟動(dòng)的過渡,用于初始化硬件和啟動(dòng)操作系統(tǒng)。在內(nèi)核運(yùn)行之前需要bootloader作為系統(tǒng)驅(qū)動(dòng)程序完成加載內(nèi)核和一些輔助性的工作,然后跳轉(zhuǎn)到內(nèi)核代碼的起始地址并執(zhí)行。對于該系統(tǒng)來說選擇EP7211所使用的bootloader—Shoehorn,然后做一些改動(dòng)。如調(diào)整系統(tǒng)各個(gè)寄存器的地址值;設(shè)定SDRAM控制器;調(diào)整UART1的波特率等。Shoehorn代碼分為host端和target端兩部分,一部分由eth.c、serial.c、shoehorn.c和util.c組成,由這些文件編譯生成host端的可執(zhí)行文件shoehorn;另一部分由ini.s和loader.c組成,編譯生成一個(gè)小于2KB的文件loader.bin,這個(gè)二進(jìn)制文件會(huì)被下載到target端的SRAM中用來引導(dǎo)系統(tǒng)的啟動(dòng)。通過一系列的主機(jī)與開發(fā)板之間的握手通信、下載程序的方式使得代碼相對分散,減小開發(fā)板上起始代碼的大小,以滿足目標(biāo)板上下載代碼的限制。

  4.2 內(nèi)核的配置

  該系統(tǒng)選擇了較成熟穩(wěn)定的Linux-2.4.13版本內(nèi)核。為了避免修改內(nèi)核定制代碼

  時(shí)造成代碼的不穩(wěn)定和失去代碼的靈活性,可以通過選擇合適的版本內(nèi)核,修改該配置文件,裁剪不必要的功能,再編譯出符合新配置的內(nèi)核,得到既滿足應(yīng)用功能要求同時(shí)體積又小的內(nèi)核,產(chǎn)生一個(gè)隱藏文件/usr/src/linux/.config。該文件記錄了對內(nèi)核具體功能模塊的選擇和配置。

  內(nèi)核配置時(shí),大部分的選項(xiàng)都可以使用缺省值,只有小部分需要根據(jù)需求選擇,將與內(nèi)核關(guān)系比較近且經(jīng)常用到的功能代碼直接編譯進(jìn)內(nèi)核;將不經(jīng)常用到的代碼編譯為可加載模塊,有利于減小內(nèi)核的長度,增加靈活性。

  4.3 驅(qū)動(dòng)程序的設(shè)計(jì)

  在Linux操作系統(tǒng)中驅(qū)動(dòng)程序是操作系統(tǒng)內(nèi)核與硬件設(shè)備直接的接口。驅(qū)動(dòng)程序屏蔽了硬件的細(xì)節(jié)。在應(yīng)用程序看來硬件設(shè)備只是一個(gè)設(shè)備文件,應(yīng)用程序可以像操作普通文件一樣對硬件設(shè)備進(jìn)行操作。

  設(shè)備驅(qū)動(dòng)程序可以設(shè)計(jì)模塊化方式。不必編譯進(jìn)內(nèi)核,而是被分別編譯并鏈接成一組目標(biāo)文件,這些文件可以被載入正在運(yùn)行的內(nèi)核,或從正在運(yùn)行的內(nèi)核中卸載??梢詼p少內(nèi)核的長度,具有很大的靈活性。

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


關(guān)鍵詞: 嵌入式 智能儀器 DSP ARM

評論


相關(guān)推薦

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

關(guān)閉