ColdFire單片機(jī)在 Clinux上的應(yīng)用
ColdFire系列處理器介紹
飛思卡爾32位處理器分為PowerPC系列、ColdFire系列以及DragonBall系列等。ColdFire系列是重要的組成部分之一,它可以應(yīng)用于工業(yè)控制、儀器儀表、民用產(chǎn)品、網(wǎng)絡(luò)產(chǎn)品等領(lǐng)域。ColdFire系列具有很好的性價(jià)比,它的價(jià)格從2美金到20美金不等。ColdFire系列處理器擁有許多開(kāi)發(fā)工具并為使用者提供了一些現(xiàn)成的解決方案,這使得使用者能夠快速地開(kāi)發(fā)出自己的應(yīng)用產(chǎn)品。
ColdFire處理器有V2核和V4核之分,52系列為V2核架構(gòu),54系列為V4架構(gòu)。下面以V2核為例介紹其性能:
V2核擁有變長(zhǎng)的RISC指令集;有2個(gè)獨(dú)立的流水線;用3個(gè)長(zhǎng)字的FIFO緩沖區(qū)將流水線彼此分離;32位的內(nèi)部地址總線支持4GB的線性地址空間;32位數(shù)據(jù)總線;16個(gè)用戶可用的32位通用寄存器;它支持高級(jí)語(yǔ)言結(jié)構(gòu)的優(yōu)化等許多性能。
MCF527X系列主要有MCF5270到MCF5275處理器,它主要適用于遠(yuǎn)程監(jiān)控、數(shù)據(jù)安全加密設(shè)備、以太網(wǎng)集線器、家用路由器等產(chǎn)品。其主要特點(diǎn)是: V2 ColdFire內(nèi)核,在166MHz時(shí)鐘頻率下可具有159MIPS的處理能力;32 32位的增強(qiáng)型乘法累計(jì)單元以及硬件的除法器;具有8KB或16KB字節(jié)的可配置指令/數(shù)據(jù)高速緩存;具有豐富的外設(shè)接口;封裝形式分為196管腳的BGA和256管腳的BGA封裝。
MCF523X系列產(chǎn)品主要有MCF5232、MCF5235等,它的最大特點(diǎn)是增加了增強(qiáng)型的時(shí)序處理單元(eTPU)。該功能特別適用于網(wǎng)絡(luò)通信安全的產(chǎn)品。它也是其V2 ColdFire內(nèi)核結(jié)構(gòu)。
MCF547X系列和MCF548X系列產(chǎn)品的主要特點(diǎn)是使用第四代增強(qiáng)型ColdFire內(nèi)核(V4e)。它們特別適用于工具自動(dòng)化、流程控制、機(jī)器人、醫(yī)療儀器等。
除了上述處理器外,飛思卡爾ColdFire系列還包括最早得到使用的MCF5272處理器,集成了以太網(wǎng)媒體接入控制器(MAC)和網(wǎng)絡(luò)應(yīng)用軟件的MCF5282處理器,以及集成外設(shè)和增強(qiáng)型乘法累加器的MCF5249處理器等。
CLinux應(yīng)用程序開(kāi)發(fā)
目前所使用的ColdFire編程環(huán)境主要有兩種,下面以MCF5249開(kāi)發(fā)板為例,介紹 CLinux的運(yùn)行與運(yùn)用。
CLinux應(yīng)用程序開(kāi)發(fā)
1. 建立宿主機(jī)開(kāi)發(fā)環(huán)境
開(kāi)發(fā)時(shí)使用宿主機(jī)上的交叉編譯、匯編及鏈接工具形成可執(zhí)行的二進(jìn)制代碼,然后把可執(zhí)行文件下載到目標(biāo)機(jī)上運(yùn)行。
CLinux的硬件開(kāi)發(fā)環(huán)境主要有宿主機(jī)和目標(biāo)板。宿主機(jī)建議安裝RedHat9.0版,目標(biāo)板可選用MCF5249、5282、5272等。宿主機(jī)和目標(biāo)板之間的連接可以采用并口線、串口線或者直連的網(wǎng)線。
2. 開(kāi)發(fā)模式
首先在宿主機(jī)(PC機(jī))上調(diào)試通過(guò)后,再移植到目標(biāo)板上。這種方式下可以使用gdb調(diào)試工具。移植主要涉及到函數(shù)庫(kù)問(wèn)題以及改動(dòng)Makefile以適應(yīng)不同的目標(biāo)板。通常采用直接在目標(biāo)板上進(jìn)行開(kāi)發(fā)的模式。將宿主機(jī)和目標(biāo)板通過(guò)串口線相連,在宿主機(jī)上運(yùn)行minicom作為目標(biāo)板的顯示終端,掛載宿主機(jī)硬盤,直接在目標(biāo)板上調(diào)試應(yīng)用。
直接在目標(biāo)板上調(diào)試應(yīng)用程序的方法有以下三種:
(1)打印串口。這是嵌入式系統(tǒng)最常用的調(diào)試手段,簡(jiǎn)單而實(shí)用、有效。
(2)使用log記錄文件。
(3)gdb調(diào)試。
CLinux驅(qū)動(dòng)程序開(kāi)發(fā)
CLinux驅(qū)動(dòng)程序開(kāi)發(fā)從應(yīng)用開(kāi)發(fā)概念層次上看可分為上、中、下三層,最下層為硬件,中間層為嵌入式操作系統(tǒng)、最上層為應(yīng)用程序。硬件層和嵌入式操作系統(tǒng)之間依靠驅(qū)動(dòng)程序來(lái)連接,而嵌入式操作系統(tǒng)與應(yīng)用程序之間通過(guò)調(diào)用來(lái)實(shí)現(xiàn)。
Linux下,驅(qū)動(dòng)程序是靠設(shè)備驅(qū)動(dòng)程序來(lái)實(shí)現(xiàn)的,Linux將不同的設(shè)備分歸為三類:字符設(shè)備、塊設(shè)備和網(wǎng)絡(luò)設(shè)備。字符設(shè)備中常見(jiàn)的有串口、顯示器、打印機(jī)等;塊設(shè)備中常見(jiàn)的有硬盤、磁盤、光盤等;網(wǎng)絡(luò)設(shè)備一般為各種網(wǎng)絡(luò)接口。
CLinux應(yīng)用實(shí)例
基于 CLinux的QSPI數(shù)據(jù)采集
串行外圍接口(SPI)是飛思卡爾公司提出的同步串行外設(shè)接口,它允許CPU與各種外圍接口器件以串行方式進(jìn)行通信、交換信息。QSPI模塊提供隊(duì)列傳輸性能的串行外圍接口。
從 QSPI結(jié)構(gòu)上看,QSPI模塊有7個(gè)信號(hào)引腳,其中4個(gè)是片選信號(hào)。它有80個(gè)字節(jié)的QSPI RAM。它的控制邏輯與內(nèi)部總線相連。隊(duì)列控制區(qū)與地址寄存器相連。4個(gè)外圍設(shè)備片選信號(hào)用于選擇哪一個(gè)外部器件與QSPI通信。片選信號(hào)只作簡(jiǎn)單的片選,但可通過(guò)外部4~16譯碼器來(lái)控制多達(dá)15個(gè)端口。
對(duì)于32位ColdFire處理器可以采用三種方式控制QSPI(以MCF5249為例),它們分別是:
1、裸機(jī)方式,即不需要 CLinux的支持,直接MCF5249的QSPI寄存器進(jìn)行設(shè)置。
2、在 CLinux中直接設(shè)置QSPI寄存器,以用戶應(yīng)用程序的方式控制QSPI操作。
3、以 CLinux驅(qū)動(dòng)形式加入QSPI控制程序,同時(shí)為用戶提供QSPI接口。用戶通過(guò)所提供的接口對(duì)QSPI進(jìn)行設(shè)置控制。
本文的數(shù)據(jù)采集方案是第3種方法。
基于 CLinux的USB數(shù)據(jù)存儲(chǔ)
基于 CLinux的USB數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)如圖1所示,其中MCF5249開(kāi)發(fā)板作為USB HOST端,U盤作為存儲(chǔ)介質(zhì),可以實(shí)現(xiàn)數(shù)據(jù)靈活的存儲(chǔ)與移動(dòng)。
CLinux中的USB驅(qū)動(dòng)主要模塊為:
要實(shí)現(xiàn)對(duì)U盤的支持,需要對(duì) CLinux進(jìn)行如下設(shè)置:在 CLinux目錄下執(zhí)行make menuconfig,進(jìn)入 CLinux配置界面。
MCF5282EVB板bootloader移植
Bootloader操作模式有兩種。
啟動(dòng)加載模式:這種模式也稱為自主模式,即Bootloader從目標(biāo)機(jī)上的ROM上將操作系統(tǒng)加載到RAM中運(yùn)行,整個(gè)過(guò)程并沒(méi)有用戶的介入。
下載模式:在這種模式下,目標(biāo)機(jī)上的Bootloader將通過(guò)串口連接或網(wǎng)絡(luò)連接等通信手段從宿主機(jī)下載映像。從宿主機(jī)下載的映像通常先被保存到目標(biāo)機(jī)的RAM中,然后再寫到目標(biāo)機(jī)的ROM中。
MCF5282EVB板Bootloader移植的主要文件如圖2所示。由于MCF5282是Coldfire系列微處理器,所以它與其他型號(hào)的Coldfire微處理器有相似之處。對(duì)片內(nèi)外設(shè)的控制寄存器讀寫方式與MCF5206相似;而片內(nèi)外設(shè)與MCF5272非常相似,都有QSPI、QAD、FEC。