核數(shù)據(jù)采集系統(tǒng)中的100Mbps以太網(wǎng)控制模塊
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:介紹清華同方核數(shù)據(jù)采集系統(tǒng)中的100Mbps以太網(wǎng)控制模塊的硬件、軟件設(shè)計(jì),以及以太網(wǎng)控制模塊的發(fā)展和未來。該模塊是基于32位高性能的ColdFire5307微處理器設(shè)計(jì)的,運(yùn)行嵌入式操作系統(tǒng)uClinux,完成基于以太網(wǎng)的數(shù)據(jù)采集任務(wù)。
關(guān)鍵詞:ColdFire 以太網(wǎng)控制模塊 bootloader uClinux 嵌入式操作系統(tǒng)
清華同方公司的核數(shù)據(jù)采集系統(tǒng)中的數(shù)據(jù)收集和發(fā)送的通信控制模塊,以前是基于CAN總線設(shè)計(jì)開發(fā)的,也有效可靠地完成了以前的數(shù)據(jù)采集任務(wù),在威視集裝箱檢測(cè)系統(tǒng)中發(fā)揮了應(yīng)有的作用。但是隨著前端數(shù)據(jù)量的急劇增加,CAN總線的許多缺點(diǎn),大大限制了系統(tǒng)的通信能力,同時(shí)以往的8位處理模塊也無法勝任大量數(shù)據(jù)的緩存和發(fā)送任務(wù)。因此,我們?yōu)橥胶?strong>數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)了100Mbps以太網(wǎng)接口的32位嵌入式控制模塊,成功地完成了系統(tǒng)中高速通信控制功能。
1 100Mbps以太網(wǎng)與CAN總線的對(duì)比
100Mbps以太網(wǎng)接口相比CAN總線接口,在數(shù)據(jù)傳輸速度、傳輸距離、軟件可靠性、控制軟件開發(fā)的難度,及以后的可擴(kuò)展性等各個(gè)方面,都有很大的優(yōu)勢(shì),因此,在通信能力要求較高的系統(tǒng)中采用100Mbps以太網(wǎng)替代CAN總線的優(yōu)勢(shì)是顯然的。
2 100Mbps以太網(wǎng)控制模塊的硬件架構(gòu)
100Mbps以太網(wǎng)控制模塊的硬件設(shè)計(jì)比較復(fù)雜,包括的外設(shè)也比較多,不過主要是以ColdFire5307微處理器和以太網(wǎng)通信芯片ASIX88796L為核心的,如圖1所示。
(1)ColdFire5307
ColdFire系列微處理器是Motorola公司面向嵌入式工業(yè)控制系統(tǒng)的高性能32位微處理器。它具有很好的32位架構(gòu),是Motorola公司延續(xù)M68K產(chǎn)品線的替代產(chǎn)品,繼承了M68K系列優(yōu)秀的指令集成設(shè)計(jì)和CISC架構(gòu)的優(yōu)點(diǎn),并融入了RISC架構(gòu)的優(yōu)點(diǎn),在速度和架構(gòu)之間得到很好的平衡,非常適合于工業(yè)現(xiàn)場(chǎng)控制。ColdFire5307是ColdFire家族的第3代產(chǎn)品,除了內(nèi)部的32位微處理器以外,還帶有一個(gè)算術(shù)累加單元,用于完成數(shù)字信號(hào)處理系統(tǒng)中常用的累加和累乘等常見數(shù)字信號(hào)處理算法等。ColdFire微處理器上可以運(yùn)行流行的實(shí)時(shí)操作系統(tǒng),像VxWorks和Nucleus等。但是最為可靠和常見的,是運(yùn)行uClinux操作系統(tǒng)。
(2)100Mbps以太網(wǎng)芯片及其電路部分
ASIX公司的ASIX88796L是NE2000兼容的、16位數(shù)據(jù)總線接口的、10M/100Mbps自適應(yīng)的以太網(wǎng)通信芯片。之所以選擇ASIX88796L,主要原因是它極高的性價(jià)比和NE2000兼容的架構(gòu)。NE2000是非常好的以太網(wǎng)MAC層構(gòu)架,也是非常成熟的架構(gòu)。NE2000架構(gòu)以太網(wǎng)接口芯片的驅(qū)動(dòng)和應(yīng)用也是非常成熟的,在uClinux操作系統(tǒng)下也可以比較容易應(yīng)用。
ASIX88796L的內(nèi)部帶有8K字的SRAM作為發(fā)送和接收以太網(wǎng)數(shù)據(jù)的緩沖器。另外,ASIX88796L內(nèi)部帶有10M/100Mbps的以太網(wǎng)物理層接口(PHY),可以直接和以太網(wǎng)隔離變壓器連接以后接RJ45接口。
ASIX88796L芯片支持80186總線、M68K總線和8051總線。我們使用它的M68K總線模式來和ColdFire5307接口。這種模式的選擇可以通過ASIX88796L的模式選擇引腳CPU1:0進(jìn)行:當(dāng)CPU1:0設(shè)置為0b10時(shí),選擇Motorola的M68K總線,這個(gè)時(shí)候ASIX88796L的引腳和ColdFire5307的引腳。
這種連接就使得ASIX88796L掛在了ColdFire5307的外部總線上,可以通過片選信號(hào)5來訪問外設(shè)ASIX88796L。其中BE0和BE1是16位數(shù)據(jù)線的高低字節(jié)單獨(dú)的選擇信號(hào),它們使得ColdFire5307可以單獨(dú)讀寫ASIX88796L的8位寄存器,而不需要一次訪問16位寄存器。
(3)SDRAM電路部分
作為32位高性能嵌入式微控制器,ColdFire5307內(nèi)部自帶DRAM控制器,可以外接EDO的DRAM和同步DRAM(也就是SDRAM)。因?yàn)镋DO DRAM在嵌入式系統(tǒng)中已經(jīng)不常使用,因此在100Mbps以太網(wǎng)控制模塊中使用了價(jià)格低廉、容量巨大的SDRAM。這種SDRAM和PC上使用的SDRAM內(nèi)存條上面的SDRAM芯片是同樣的,因此價(jià)格很低,非常適合系統(tǒng)使用。
100Mbps以太網(wǎng)控制模塊中使用了2片4M×16位的SDRAM拼成4M×32位的SDRAM,這樣就有了16MB的RAM空間。使用的SDRAM是現(xiàn)代公司的HY57V641620。每片SDRAM由4個(gè)1M×16位的內(nèi)部Bank組成,這個(gè)Bank的選擇由SDRAM的外部引腳BA0和BA1來完成,在我們的模塊中BA0和BA1都連接在ColdFire5307的高端地址線上;其它信號(hào)和ColdFire都一一對(duì)應(yīng)。UDQM和LDQM是SDRAM的高低字節(jié)片選信號(hào),因?yàn)槊科琒DRAM都是16位架構(gòu),所以將兩片SDRAM拼在一起變成32位時(shí),其它信號(hào)線對(duì)兩片SDRAM來說都是共用的,唯有數(shù)據(jù)線和這兩個(gè)信號(hào)不是共用的。這兩個(gè)信號(hào)應(yīng)該分別接ClldFire的CAS0、CAS1和CAS2、CAS3。
(4)其它電路部分
100Mbps以太網(wǎng)控制模塊的硬件設(shè)計(jì)還包括:4MB16位總線寬度Flash存儲(chǔ)器、Real Time Clock、CPLD總線擴(kuò)展等。Flash存儲(chǔ)器主要用于存儲(chǔ)程序代碼和數(shù)據(jù),其中下面要提到的bootloader及uClinux就是存放在Flash存儲(chǔ)器中;Real Time Clock實(shí)時(shí)時(shí)鐘接口電路可以給模塊提供準(zhǔn)確的時(shí)間信息;CPLD主要用于總線擴(kuò)展。它們具體的電路連接比較簡(jiǎn)單,這里就不再作詳細(xì)說明。
3 100Mbps以太網(wǎng)控制模塊的軟件架構(gòu)
100Mbps以太網(wǎng)控制模塊的軟件開發(fā)是基于uClinux操作系統(tǒng)的,模塊架構(gòu)如圖2所示。
bootloader用來完成系統(tǒng)啟動(dòng)和操作系統(tǒng)加載的工作。在8位單片機(jī)中,一般沒有bootloader的概念。因?yàn)?位單片機(jī)系統(tǒng)的架構(gòu)比較簡(jiǎn)單,系統(tǒng)復(fù)位以后就會(huì)運(yùn)行ROM中的代碼;而32位單片機(jī)本身需要初始化的內(nèi)容很多。因?yàn)檐浖ぷ魅藛T只需要關(guān)心開發(fā)操作系統(tǒng)和應(yīng)用代碼,硬件和底層軟件工程師就必須提供初始化系統(tǒng)和下載操作系統(tǒng)以及應(yīng)用代碼的一個(gè)機(jī)制,就形成了bootloader,功能和PC機(jī)上常用的BIOS(Basic Input Output System)的功能是一樣的。圖3的bootloader是使用Motorola的dBUG為模板,參照其它bootloader而形成的。嵌入式操作系統(tǒng)uClinux在CodFire硬件平臺(tái)上的下載及運(yùn)行都是通過bootloader完成的。
正如前面提到的,模塊的軟件設(shè)計(jì)是基于uClinux操作系統(tǒng)的。這是因?yàn)閡Clinux操作系統(tǒng)是面向像ColdFire5307這種內(nèi)部沒有內(nèi)存管理單元(MMU)的嵌入式微處理器的。它具有很好的擴(kuò)充性和延續(xù)性,非常適合作為ColdFire系列操作處理器的操作系統(tǒng)。另外,uClinux操作系統(tǒng)源代碼公開,是面向全世界開發(fā)工程師的免費(fèi)操作系統(tǒng);它支持最新的技術(shù)和器件,非常有利于軟件的開發(fā)。
要使用uClinux操作系統(tǒng)進(jìn)行軟件開發(fā),必須先對(duì)uClinux進(jìn)行編譯,并移植到ColdFire硬件平臺(tái)上。UClinux的編譯需要三個(gè)步驟。
(1)配置內(nèi)核
命令就用make menuconfig。(在/uClinux-dist/目錄下。)
首先是選擇target,就是使用的芯片和板子。我們選用的是Cadre-III的板子,因?yàn)檫@和ColdFire5307硬件架構(gòu)最接近。然后是選擇內(nèi)核。Gerg的內(nèi)核包都同時(shí)包架構(gòu)最接近。然后是選擇內(nèi)核。Gerg的內(nèi)核包都同時(shí)包含了2.0.x和2.4.x兩個(gè)內(nèi)核。這兩個(gè)內(nèi)核各有好處,2.4.x支持的平臺(tái)可能多些,但一些應(yīng)用調(diào)試會(huì)很累(比如ppp);而2.0.x的內(nèi)核支持的平臺(tái)可能少些(比如vz328),但調(diào)試應(yīng)用問題極少。
其它的配置就要看系統(tǒng)的需要。不明白的可以參照Documentation/和linux-2.0.x/Documentation/或linux-2.4.x/Documentation/下的文檔,最重要的當(dāng)然還是Configure.help。
(2)Make dep
配置完以后需要先使用make dep命令。這個(gè)命令會(huì)按照用戶選擇的配置架構(gòu),對(duì)每一個(gè)目錄生成特定的makefile文件。
(3)Make
最后使用make命令生成目標(biāo)代碼。如果成功,在uClinux-dist下有一個(gè)images目錄。下面有四個(gè)文件:
image.elf——ELF格式含調(diào)試信息和romfs的uClinux,可以在Linux環(huán)境下用gdb裝載調(diào)試運(yùn)行;
romfs.bin——romfs的二進(jìn)制文件;
linux.bin——linux.bin和romfs.bin合并而成,并多了4字節(jié)的校驗(yàn),這個(gè)文件的內(nèi)容通過bootloader下載到RAM里后就可以直接從入口運(yùn)行了。在我們的以太網(wǎng)控制模塊中,這個(gè)文件會(huì)被下載到RAM里的0x20000地址處,這樣設(shè)置了PC從0x20000開始運(yùn)行就可以了。通過bootloader還可以將image.bin從RAM與到Flash中,避免掉電丟失。
這樣就將uClinux移植到了ColFire硬件平臺(tái)上。這時(shí),系統(tǒng)啟動(dòng)后經(jīng)過初始化,ColdFire5307的bootloader會(huì)自動(dòng)加載運(yùn)行uClinux操作系統(tǒng)。UClinux操作系統(tǒng)在初始化定義的硬件接口下,可以訪問ASIX88796L。
在uClinux操作系統(tǒng)下為新的100Mbps以太網(wǎng)添加驅(qū)動(dòng)也比較簡(jiǎn)單。關(guān)鍵的文件有兩個(gè):一個(gè)是uClinux/linux/drivers/net/目錄下的ne.c文件;另一個(gè)文件是uClinux/linux/include/asm-m68knommu/目錄下面的mcfne.h文件。其中mcfne.h文件主要定義端口的讀寫,也就是一些底層的讀寫操作;而ne.c文件是NE2000系列以太網(wǎng)接口芯片在uClinux操作系統(tǒng)下驅(qū)動(dòng)的具體實(shí)現(xiàn)。對(duì)二者略微修改,就可以完成100Mbps以太網(wǎng)驅(qū)動(dòng)的添加工作。
至此,uClinux操作系統(tǒng)就在ColdFire硬件平臺(tái)上跑起來了,并且 安裝好了100Mbps以太網(wǎng)的驅(qū)動(dòng),可以在上面進(jìn)行具體的軟件開發(fā)了。
4 100Mbps以太網(wǎng)控制系統(tǒng)的發(fā)展和未來
軟件方面:隨著uClinux內(nèi)核的不斷升級(jí),將采用更新的內(nèi)核來更好的支持多線程,提高軟件的綜合性能,并且完善應(yīng)用代碼。
硬件方面:將會(huì)采用具有更高速度和性能的V4sColdFire內(nèi)核的ColdFire系列微處理器來設(shè)計(jì)硬件模塊,比如ColdFire5470等。這些微處理器不但有更高的速度,而且內(nèi)部帶有FPU(浮點(diǎn)運(yùn)算單元)和集成的MAC(以太網(wǎng)MAC層控制器),并且?guī)в蠵CI控制器等。我們采用新的內(nèi)核的微處理器可以使得數(shù)據(jù)采集的傳輸速度達(dá)到100Mbps的高速傳輸,使用PCI也使得我們的嵌入式模塊可以和VME總線的橋芯片連接起來作為低成本的VME總線控制設(shè)備。這些都是系統(tǒng)將要發(fā)展的方向。另外可以將以太網(wǎng)控制器的速度擴(kuò)展到1Gbps,這將會(huì)使系統(tǒng)的傳輸能力大幅度提高。