加勒比一本heyzo高清视频-免费精品无码av片在线观看-无码国产精品一区二区免费模式-去干成人网-成在人线av无码免费

物聯(lián)傳媒 旗下網(wǎng)站
登錄 注冊

基于KL25的RFID構(gòu)件化工程框架研究

作者:曹國平 王宜懷 凌 云
來源:2015年電子技術(shù)應(yīng)用第8期
日期:2015-10-22 15:16:31
摘要:目前,RFID技術(shù)已在物流倉儲、交通運(yùn)輸?shù)群芏囝I(lǐng)域被廣泛使用,但在應(yīng)用系統(tǒng)的開發(fā)過程中存在大量重復(fù)工作。依據(jù)軟件工程思想,設(shè)計(jì)了通用的RFID構(gòu)件,并給出了構(gòu)件化工程框架,同時采用以飛思卡爾KL25MCU(ARM Cortex-M0+內(nèi)核)和射頻芯片RC531組成的實(shí)驗(yàn)裝置為實(shí)例,在KDS1.1.1開發(fā)環(huán)境下對該構(gòu)件框架進(jìn)行了具體的工程測試,為提高RFID應(yīng)用系統(tǒng)開發(fā)的規(guī)范性和可移植性提供了重要參考。
關(guān)鍵詞:RFIDKL25工程框架RC531

  0 引言

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

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

  構(gòu)件設(shè)計(jì)的目標(biāo)是可重用,達(dá)到此目標(biāo)的關(guān)鍵是構(gòu)件提供了契約式的接口,它的輸入接口代表了環(huán)境為它提供的服務(wù),輸出接口代表了它為環(huán)境提供的服務(wù)。一個接口提供一種服務(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)件時,必須對構(gòu)件的共性和個性進(jìn)行分析,抽取出構(gòu)件的屬性和對外接口函數(shù)。盡量做到:當(dāng)一個構(gòu)件應(yīng)用到不同系統(tǒng)中時,僅需修改構(gòu)件的頭文件,對于構(gòu)件的源程序文件則不必修改或改動很小。

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

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

基于KL25的RFID構(gòu)件化工程框架研究

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

基于KL25的RFID構(gòu)件化工程框架研究

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

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

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

基于KL25的RFID構(gòu)件化工程框架研究

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

  綜合以上分析,在RC531構(gòu)件頭文件中的內(nèi)容應(yīng)主要包含外設(shè)模塊寄存器相關(guān)信息的定義和函數(shù)原型的聲明。前者指明了本“元構(gòu)件”與具體硬件相關(guān)的信息,而后者則給出了本驅(qū)動構(gòu)件對上層構(gòu)件或應(yīng)用程序所提供的接口函數(shù)。另外從硬件的角度看,控制射頻模塊只需要確定MCU與RC531的接口一個要素即可,但由于KL25的每個引腳都需要確定端口號與引腳號兩個部分,所以在應(yīng)用中將這兩個部分組合為一個值,方便理解與調(diào)用。通過這種設(shè)定,上層構(gòu)件在使用它時,將具有極大的靈活性。構(gòu)件源程序文件實(shí)現(xiàn)對外接口函數(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ù)的封裝需要提供一個通信協(xié)議類型的參數(shù),并需要返回一個狀態(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ù)返回:錯誤碼 MI_OK:初始化成功

  // MI_NOTAGERR:失敗

  uint_8 MF_Init(uint_8 ProMode);

  …

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

  2.1 工程框架的組織原則

  按照軟件工程的思想,框架是一個能夠被開發(fā)人員實(shí)例化的系統(tǒng)構(gòu)架,規(guī)定了應(yīng)用軟件的體系結(jié)構(gòu),定義了模塊和對象的分割,確定了各部分的主要職責(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ū)動進(jìn)行分層,將不同層次的構(gòu)件文件組織在不同文件夾下,使框架可即插即用替換構(gòu)件;其次,從不同的層次中分別提煉出高層構(gòu)件和底層構(gòu)件,高層構(gòu)件與硬件無關(guān),而底層構(gòu)件與硬件密不可分,是硬件驅(qū)動程序的封裝。高層構(gòu)件實(shí)現(xiàn)一個具體應(yīng)用,而底層構(gòu)件是對硬件驅(qū)動程序的封裝;同時在硬件構(gòu)件層中,相對于核心構(gòu)件最小系統(tǒng)而言,中間構(gòu)件和終端構(gòu)件都是核心構(gòu)件的“外設(shè)”,將這些“外設(shè)”的驅(qū)動程序封裝而成的軟件構(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)容。將這類文件組織在一起,這樣針對某一款芯片進(jìn)行開發(fā)時,應(yīng)用開發(fā)者不必修改該目錄。

  2.2 工程框架的組織形式

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

基于KL25的RFID構(gòu)件化工程框架研究

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

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

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

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

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

  05_Driver、06_App_componet目錄分別存放底層硬件的驅(qū)動構(gòu)件及高層構(gòu)件文件,底層構(gòu)件是硬件系統(tǒng)各功能模塊的驅(qū)動封裝,如讀寫芯片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ū)動構(gòu)件頭文件、變量聲明等;isr.c中包含了中斷函數(shù)的實(shí)現(xiàn)代碼,isr.h是isr.c文件的頭文件,存放中斷函數(shù)聲明,因?yàn)橹袛嘞蛄勘砦募枪こ炭蚣艿闹匾獌?nèi)容之一,因此,在工程框架中,用戶應(yīng)避免直接對中斷向量表文件進(jìn)行修改,而采用“注冊”的方式為用戶提供編程接口,既方便用戶使用,同時也提高了系統(tǒng)編程的安全性。

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

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

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

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

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

  測試工程在KDS1.1.1開發(fā)環(huán)境和SD-FSL-KL25-EVB開發(fā)板上進(jìn)行,測試工程實(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)中斷注冊,然后在主函數(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");

  }

  }

  …

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

基于KL25的RFID構(gòu)件化工程框架研究

  5 結(jié)論

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