《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于KL25的RFID構(gòu)件化工程框架研究
基于KL25的RFID構(gòu)件化工程框架研究
2015年電子技術(shù)應(yīng)用第8期
曹國(guó)平1,2,王宜懷1,2,凌 云1,2
1.蘇州大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,江蘇 蘇州215006;2.軟件新技術(shù)與產(chǎn)業(yè)化協(xié)同創(chuàng)新中心,江蘇 南京210093
摘要: 目前,RFID技術(shù)已在物流倉儲(chǔ)、交通運(yùn)輸?shù)群芏囝I(lǐng)域被廣泛使用,但在應(yīng)用系統(tǒng)的開發(fā)過程中存在大量重復(fù)工作。依據(jù)軟件工程思想,設(shè)計(jì)了通用的RFID構(gòu)件,并給出了構(gòu)件化工程框架,同時(shí)采用以飛思卡爾KL25MCU(ARM Cortex-M0+內(nèi)核)和射頻芯片RC531組成的實(shí)驗(yàn)裝置為實(shí)例,在KDS1.1.1開發(fā)環(huán)境下對(duì)該構(gòu)件框架進(jìn)行了具體的工程測(cè)試,為提高RFID應(yīng)用系統(tǒng)開發(fā)的規(guī)范性和可移植性提供了重要參考。
關(guān)鍵詞: RFID 工程框架 KL25 RC531
中圖分類號(hào): TP311
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2015.08.005

中文引用格式: 曹國(guó)平,王宜懷,凌云. 基于KL25的RFID構(gòu)件化工程框架研究[J].電子技術(shù)應(yīng)用,2015,41(8):20-23.
英文引用格式: Cao Guoping,Wang Yihuai,Ling Yun. The research of RFID component engineering framework based on KL25 processor[J].Application of Electronic Technique,2015,41(8):20-23.
The research of RFID component engineering framework based on KL25 processor
Cao Guoping1,2,Wang Yihuai1,2,Ling Yun1,2
1.Department of Computer Science and Technology,Soochow University,Suzhou 215006,China; 2.Collaborative Innovation Center of Novel Software Technology and Industrialization,Nanjing 210093,China
Abstract: Now RFID technology has been widely used in many fields such as logistics warehouse, transportation,etc. But there are a lot of redundant work in the development of the application system. According to software engineering idea, this paper introduces a RFID component engineering framework and universal RFID component to achieve more efficient software design, and tests the engineering framework under the KDS1.1.1 development environment on an experiment board composd of KL25 MCU(ARM Cortex-M0+ Kernel )and RF chip RC531. This work provides important references for improving the standardization and portability of RFID application system development.
Key words : RFID;engineering framework;KL25;RC531

   

0 引言

    目前,射頻識(shí)別技術(shù)(RFID)已在多個(gè)領(lǐng)域中被廣泛使用,但RFID應(yīng)用系統(tǒng)是典型的硬件平臺(tái)相關(guān)性系統(tǒng),通常具有難以維護(hù)、更新、移植等特點(diǎn)[1],其中存在大量重復(fù)工作。軟件構(gòu)件技術(shù)是指通過組裝一系列可復(fù)用的軟件構(gòu)件形成軟件系統(tǒng)的軟件技術(shù),以軟件構(gòu)件為基礎(chǔ),設(shè)計(jì)一個(gè)合理的構(gòu)件化工程框架是降低工程開發(fā)的難度,提升軟件的可重用性、可移植性和可維護(hù)性的有效途徑[2]。本文針對(duì)RFID應(yīng)用系統(tǒng)的特點(diǎn),通過對(duì)RFID一般應(yīng)用模型的分析,封裝了構(gòu)件相關(guān)函數(shù),并給出了結(jié)構(gòu)清晰合理的RFID構(gòu)件化工程框架,有效提高了RFID應(yīng)用系統(tǒng)的開發(fā)效率。同時(shí)以思卡爾KL25 MCU和射頻芯片RC531構(gòu)成的實(shí)驗(yàn)裝置為基礎(chǔ),在Kinetis Design Studio集成開發(fā)環(huán)境中對(duì)該構(gòu)件框架的使用進(jìn)行了具體測(cè)試,并分析了該構(gòu)件框架在其他嵌入式系統(tǒng)上的移植應(yīng)用,對(duì)提高系統(tǒng)開發(fā)的規(guī)范性和可移植性具有重要參考意義。

1 RFID驅(qū)動(dòng)構(gòu)件的設(shè)計(jì)及解析

    構(gòu)件設(shè)計(jì)的目標(biāo)是可重用,達(dá)到此目標(biāo)的關(guān)鍵是構(gòu)件提供了契約式的接口,它的輸入接口代表了環(huán)境為它提供的服務(wù),輸出接口代表了它為環(huán)境提供的服務(wù)。一個(gè)接口提供一種服務(wù),完成某種邏輯行為[3]。構(gòu)件接口由兩部分組成:一是署名部分,即構(gòu)件本身提供服務(wù)的描述,由構(gòu)件頭文件(.h)實(shí)現(xiàn);二是行為部分,即構(gòu)件行為的描述,由源文件(.c)實(shí)現(xiàn)。因此,為提高構(gòu)件可重用性,在設(shè)計(jì)軟件構(gòu)件時(shí),必須對(duì)構(gòu)件的共性和個(gè)性進(jìn)行分析,抽取出構(gòu)件的屬性和對(duì)外接口函數(shù)。盡量做到:當(dāng)一個(gè)構(gòu)件應(yīng)用到不同系統(tǒng)中時(shí),僅需修改構(gòu)件的頭文件,對(duì)于構(gòu)件的源程序文件則不必修改或改動(dòng)很小。

1.1 RFID應(yīng)用系統(tǒng)的一般模型

    通過分析RFID應(yīng)用系統(tǒng)的共性,可以建立一個(gè)由3部分組成的一般系統(tǒng)模型[4],如圖1所示??刂芃CU主要提供對(duì)射頻讀寫芯片的控制操作;射頻讀寫芯片及輔助電路用于實(shí)現(xiàn)與控制MCU的數(shù)據(jù)通信并控制與標(biāo)簽的通信操作;天線部分則實(shí)現(xiàn)電磁波的收發(fā)。

qrs3-t1.gif

    以蘇州大學(xué)飛思卡爾嵌入式中心開發(fā)的 RFID實(shí)驗(yàn)裝置為例,KL25作為控制MCU,是整個(gè)硬件系統(tǒng)的核心;射頻讀寫芯片RC531與KL25通信實(shí)現(xiàn)各種功能。RC531支持并行接口或SPI接口兩種方式實(shí)現(xiàn)與控制MCU的通信。任意一款MCU只需按表1所示提供對(duì)應(yīng)的GPIO引腳即可以模擬SPI的方式控制RC531芯片。

qrs3-b1.gif

1.2 構(gòu)件函數(shù)封裝

    在RFID系統(tǒng)中,射頻讀寫芯片RC531作為KL25的外設(shè)[5-6],是驅(qū)動(dòng)構(gòu)件的對(duì)象。

    RC531對(duì)A類卡的通信處理流程如圖2所示。首先,發(fā)送Request詢卡命令給天線工作范圍內(nèi)的所有卡片,卡片在上電復(fù)位后響應(yīng)該命令;隨后通過防沖突循環(huán),根據(jù)卡的序列號(hào)選中一張卡;接著對(duì)準(zhǔn)備訪問的卡片的存儲(chǔ)區(qū)的密碼進(jìn)行鑒別;在通過了密碼驗(yàn)證后,讀寫模塊可以對(duì)該存儲(chǔ)區(qū)的數(shù)據(jù)進(jìn)行讀、寫、增值、減值以及掛起等操作[7]。

qrs3-t2.gif

    根據(jù)該處理流程,從上層應(yīng)用的角度出發(fā),可不必關(guān)注防沖突、密碼驗(yàn)證等過程,只需要關(guān)注對(duì)存儲(chǔ)區(qū)的具體應(yīng)用。因此RC531構(gòu)件只需要對(duì)A類卡提供初始化、讀寫數(shù)據(jù)等功能函數(shù),而防沖突等操作可作為內(nèi)部函數(shù)處理。同理根據(jù)B類卡的處理流程,構(gòu)件需要提供初始化、讀取卡號(hào)等函數(shù)。

    綜合以上分析,在RC531構(gòu)件頭文件中的內(nèi)容應(yīng)主要包含外設(shè)模塊寄存器相關(guān)信息的定義和函數(shù)原型的聲明。前者指明了本“元構(gòu)件”與具體硬件相關(guān)的信息,而后者則給出了本驅(qū)動(dòng)構(gòu)件對(duì)上層構(gòu)件或應(yīng)用程序所提供的接口函數(shù)。另外從硬件的角度看,控制射頻模塊只需要確定MCU與RC531的接口一個(gè)要素即可,但由于KL25的每個(gè)引腳都需要確定端口號(hào)與引腳號(hào)兩個(gè)部分,所以在應(yīng)用中將這兩個(gè)部分組合為一個(gè)值,方便理解與調(diào)用。通過這種設(shè)定,上層構(gòu)件在使用它時(shí),將具有極大的靈活性。構(gòu)件源程序文件實(shí)現(xiàn)對(duì)外接口函數(shù)功能,構(gòu)件內(nèi)部使用的函數(shù)也在構(gòu)件源程序文件中定義。最終在頭文件中應(yīng)給出MF_Init(初始化)、MF_ReadCardA(讀A卡)、MF_WriteCardA(寫A卡)、MF_Deduct(電子錢包充值)、MF_Recharge(電子錢包扣款)、MF_Halt(掛起)、MF_ ReadCardB(讀B卡)等功能函數(shù)。以初始化函數(shù)為例,其需要完成的功能為:將KL25的GPIO接口初始化為SPI形式,將RC531復(fù)位并將天線接口初始化為A類或B類通信狀態(tài)。因此初始化函數(shù)的封裝需要提供一個(gè)通信協(xié)議類型的參數(shù),并需要返回一個(gè)狀態(tài)值反映初始化是否成功。

//將KL25部分GPIO口定義為模擬SPI功能

//MFRC531的MOSI引腳

#define MF_MOSI_PIN

        (GPIO_PORT_D << 8) | 3

//MFRC531的MISO引腳

#define MF_MISO_PIN

        (GPIO_PORT_D << 8) | 5 

/函數(shù)名稱:MF_Init

//功能概要:復(fù)位芯片并根據(jù)標(biāo)簽類型初始化

//參數(shù)說明:ProMode: A類協(xié)議 Pro_A

//                    B類協(xié)議 Pro_B

//函數(shù)返回:錯(cuò)誤碼 MI_OK:初始化成功

//                 MI_NOTAGERR:失敗

uint_8 MF_Init(uint_8 ProMode);

2 工程框架設(shè)計(jì)

2.1 工程框架的組織原則

    按照軟件工程的思想,框架是一個(gè)能夠被開發(fā)人員實(shí)例化的系統(tǒng)構(gòu)架,規(guī)定了應(yīng)用軟件的體系結(jié)構(gòu),定義了模塊和對(duì)象的分割,確定了各部分的主要職責(zé)、協(xié)作關(guān)系及控制流程[8]。工程框架的設(shè)計(jì)和組織必須是可復(fù)用、可移植和可理解的,以利于提高嵌入式軟件的開發(fā)效率。因此,本文在設(shè)計(jì)中遵循以下的原則[9-10]

    (1)系統(tǒng)結(jié)構(gòu)分層,軟件與硬件分離。

    首先,應(yīng)用系統(tǒng)按照用戶、業(yè)務(wù)邏輯、驅(qū)動(dòng)進(jìn)行分層,將不同層次的構(gòu)件文件組織在不同文件夾下,使框架可即插即用替換構(gòu)件;其次,從不同的層次中分別提煉出高層構(gòu)件和底層構(gòu)件,高層構(gòu)件與硬件無關(guān),而底層構(gòu)件與硬件密不可分,是硬件驅(qū)動(dòng)程序的封裝。高層構(gòu)件實(shí)現(xiàn)一個(gè)具體應(yīng)用,而底層構(gòu)件是對(duì)硬件驅(qū)動(dòng)程序的封裝;同時(shí)在硬件構(gòu)件層中,相對(duì)于核心構(gòu)件最小系統(tǒng)而言,中間構(gòu)件和終端構(gòu)件都是核心構(gòu)件的“外設(shè)”,將這些“外設(shè)”的驅(qū)動(dòng)程序封裝而成的軟件構(gòu)件作為底層外設(shè)構(gòu)件。底層外設(shè)構(gòu)件可以調(diào)用底層內(nèi)部構(gòu)件,而高層構(gòu)件可以調(diào)用底層外設(shè)構(gòu)件和底層內(nèi)部構(gòu)件中的功能構(gòu)件。

    (2)將芯片特性分離

    每款芯片都擁有自己的內(nèi)核及芯片初始化文件,這些文件由芯片設(shè)計(jì)人員提供,具有特定的內(nèi)容。將這類文件組織在一起,這樣針對(duì)某一款芯片進(jìn)行開發(fā)時(shí),應(yīng)用開發(fā)者不必修改該目錄。

2.2 工程框架的組織形式

    通過RFID應(yīng)用系統(tǒng)模型,可將射頻讀寫芯片作為外設(shè)構(gòu)件處理?;诳蚣艿慕M織原則,通過對(duì)工程框架的目錄名和共性的文件歸納分類組織,得到符合要求的構(gòu)件化工程框架。以基于KL25的RFID工程為例,其在KDS1.1.1開發(fā)環(huán)境下的目錄結(jié)構(gòu)組織如圖3所示。

qrs3-t3.gif

    整個(gè)框架中的目錄按照開發(fā)系統(tǒng)所應(yīng)用到的文件順序排列,各目錄中存放文件的原則如下:

    Includes目錄存放開發(fā)環(huán)境相關(guān)的文件,由工程自動(dòng)生成。

    01_DOC中存放工程說明文檔,工程有變化時(shí),即時(shí)更新。

    02_CPU、03_MCU目錄分別存放與內(nèi)核及芯片相關(guān)的公共文件,其中包含了幾乎所有底層構(gòu)件都涉及的MCU寄存器的宏定義、啟動(dòng)代碼等文件。

    04_Linker_File中存放鏈接腳本文件,描述程序文件在芯片存儲(chǔ)區(qū)中的存放順序,該文件與編譯器相關(guān)。

    05_Driver、06_App_componet目錄分別存放底層硬件的驅(qū)動(dòng)構(gòu)件及高層構(gòu)件文件,底層構(gòu)件是硬件系統(tǒng)各功能模塊的驅(qū)動(dòng)封裝,如讀寫芯片RC531的構(gòu)件文件等;高層構(gòu)件用于實(shí)現(xiàn)具體的應(yīng)用功能。

    07_Soft_component目錄存放穩(wěn)定、移植性良好、與硬件無關(guān)的抽象構(gòu)件文件,如數(shù)值類型轉(zhuǎn)換算法等,如此則實(shí)現(xiàn)了業(yè)務(wù)、邏輯、數(shù)據(jù)的完全分離。

    08_Sources目錄包括總頭文件includes.h、主函數(shù)文件main.c以及中斷函數(shù)文件isr.h、isr.c。main.c文件是工程任務(wù)的核心文件,用戶的應(yīng)用都添加在該文件中。總頭文件中包含主程序文件中需要的驅(qū)動(dòng)構(gòu)件頭文件、變量聲明等;isr.c中包含了中斷函數(shù)的實(shí)現(xiàn)代碼,isr.h是isr.c文件的頭文件,存放中斷函數(shù)聲明,因?yàn)橹袛嘞蛄勘砦募枪こ炭蚣艿闹匾獌?nèi)容之一,因此,在工程框架中,用戶應(yīng)避免直接對(duì)中斷向量表文件進(jìn)行修改,而采用“注冊(cè)”的方式為用戶提供編程接口,既方便用戶使用,同時(shí)也提高了系統(tǒng)編程的安全性。

3 工程在框架下的移植分析

    在實(shí)際應(yīng)用中,工程的移植有多種情況。以KL25下的RFID應(yīng)用工程為例,當(dāng)需要在相同的硬件環(huán)境下設(shè)計(jì)不同的工程時(shí),只需以該工程為模板,在05_Driver目錄下添加需要的底層構(gòu)件,并在08_Sources目錄下修改主函數(shù)中的任務(wù),即可在其余文件保持不變的情況下,快速開發(fā)出新的應(yīng)用工程。這種情況下應(yīng)用工程之間的可移植性最大。

    當(dāng)將工程移植到相同或相兼容內(nèi)核的芯片時(shí),僅需修改03_MCU目錄下的芯片文件,以及根據(jù)硬件連接方式在05_Driver目錄下修改RC531構(gòu)件頭文件中的引腳定義,已有的工程即可在新的目標(biāo)芯片下運(yùn)行。如將KL25上的工程移植到Cortex-M4內(nèi)核的K60芯片時(shí),只需將頭文件中的引腳定義修改即可。

//將K60部分GPIO口定義為模擬SPI功能

//MFRC531的MOSI引腳

#define MF_MOSI_PIN

        (GPIO_PORT_E << 8) | 19

//MFRC531的MISO引腳

#define MF_MISO_PIN

        (GPIO_PORT_E << 8) | 1

    當(dāng)工程移植到不同內(nèi)核的芯片時(shí),由于硬件結(jié)構(gòu)一般變化較大,通常需要修改02_CPU、03_MCU、08_Sources目錄下的中斷注冊(cè)文件等與芯片直接相關(guān)的系統(tǒng)文件,同時(shí)還須修改GPIO的驅(qū)動(dòng),但設(shè)備構(gòu)件文件的結(jié)構(gòu)及工程框架依然可以保持不變??梢娫谠摽蚣芟?,工程組織非常清晰,移植也很方便。

4 工程框架應(yīng)用與測(cè)試

    測(cè)試工程在KDS1.1.1開發(fā)環(huán)境和SD-FSL-KL25-EVB開發(fā)板上進(jìn)行,測(cè)試工程實(shí)現(xiàn)的功能為:KL25的串口1與PC通信,接收讀取M1卡中數(shù)據(jù)塊5中數(shù)據(jù)的控制命令,實(shí)現(xiàn)框架的中斷服務(wù)功能;查找并讀取標(biāo)簽中的數(shù)據(jù),通過串口1將數(shù)據(jù)顯示在PC上。要實(shí)現(xiàn)以上功能,需在框架isr.c文件中添加串口1的中斷服務(wù)例程,并在isr.h文件中實(shí)現(xiàn)中斷注冊(cè),然后在主函數(shù)文件中分別調(diào)用RFID初始化、讀數(shù)據(jù)構(gòu)件與串口發(fā)送數(shù)據(jù)構(gòu)件即可。主函數(shù)部分代碼如下:

    MF_Init(Pro_A);

    for(;;)

    {

     If(1==read_flag)

     {

    if(MI_OK == MF_ReadCardA

    (ReadDataBuff, Key,BlockNo))

    {

      uart_send_string(UART_1, "Read Success!\r\n"); 

    //將讀取的數(shù)據(jù)轉(zhuǎn)換為16進(jìn)制字符形式

       …

    //將數(shù)據(jù)輸出

       uart_sendN(UART_1,16,DataBuff);

    }

    else

    {

           uart_send_string(UART_1, "Read failed!\r\n");

        }

    }

    …

    將測(cè)試工程編譯后下載到目標(biāo)板,將開發(fā)板上的串口1與PC連接運(yùn)行,從串口測(cè)試工具中發(fā)送控制命令“R11”,可以觀察到接收窗口中穩(wěn)定地回送數(shù)據(jù),如圖4所示。測(cè)試結(jié)果表明在該工程框架下,工程任務(wù)建立簡(jiǎn)便,運(yùn)行穩(wěn)定,控制邏輯清晰可靠,能夠滿足工程運(yùn)行的需求。

qrs3-t4.gif

5 結(jié)論

    RFID應(yīng)用系統(tǒng)在市場(chǎng)中被廣泛使用,但RFID開發(fā)原理較為復(fù)雜,同時(shí)在開發(fā)中存在大量重復(fù)工作。設(shè)計(jì)一個(gè)合理的開發(fā)框架有助于封裝底層構(gòu)件,幫助開發(fā)者高效地開發(fā)出穩(wěn)定的嵌入式RFID產(chǎn)品。本文根據(jù)軟件工程思想,對(duì)RFID構(gòu)件分析并封裝了MF_Init、MF_ReadCardA、MF_WriteCardA、MF_Deduct、MF_Recharge、MF_Halt、MF_ ReadCardB等功能函數(shù),并給出了結(jié)構(gòu)清晰合理的構(gòu)件化工程框架,對(duì)提高RFID應(yīng)用系統(tǒng)開發(fā)的規(guī)范性和可移植性具有重要參考意義。同時(shí)以飛思卡爾KL25 MCU和射頻芯片RC531構(gòu)成的實(shí)驗(yàn)裝置為基礎(chǔ),給出了測(cè)試工程的創(chuàng)建及測(cè)試過程,為RFID應(yīng)用系統(tǒng)開發(fā)提供了一個(gè)結(jié)構(gòu)清晰、層次分明、可移植性強(qiáng)的開發(fā)模板。

參考文獻(xiàn)

[1] 譚民,劉禹,曾雋芳.RFID技術(shù)系統(tǒng)工程及應(yīng)用指南[M].北京:機(jī)械工業(yè)出版社,2007.

[2] 楊芙清,梅宏,黃罡.構(gòu)件化軟件設(shè)計(jì)與實(shí)現(xiàn)[M].北京:清華大學(xué)出版社,2008.

[3] MOREIRA F A,SOLIVEIRA M F.A model-driven engineering framework for embedded systems design[J].Innovations in Systems and Software Engineering,2012,8(1):19-23.

[4] 王慧明.RFID開發(fā)平臺(tái)的設(shè)計(jì)及其應(yīng)用[D].蘇州:蘇州大學(xué),2009.

[5] ARM.Cortex-M0+ technical reference manual[EB/OL].(2012-03-01)[2015-04-20].http://www.Freescale.com.cn.

[6] 王宜懷,朱仕浪,郭蕓.嵌入式技術(shù)基礎(chǔ)與實(shí)踐-ARM Cortex-M0+ Kinetis L系列微控制器[M].北京:清華大學(xué)出版社,2013.

[7] Philips Semiconductors.Mifare MF RC531 ISO 14443 readerIC data sheet[EB/OL].(2005-12-01)[2015-04-20].http://www.nxp.com.

[8] 凌藝春,黃飛.匯編程序移植性的研究與實(shí)踐[J].制造業(yè)自動(dòng)化,2011,33(3):174-175.

[9] SZYPERSKI C,GRUNTZ D,MURER S.Component software:beyond object-oriented programming[M].Addison-Wesley,2002.

[10] 張倩,楊玉宇.《系統(tǒng)與軟件可移植性》標(biāo)準(zhǔn)中可移植性定義的研究[J].信息技術(shù)與標(biāo)準(zhǔn)化,2009,35(10):51-54.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。