《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 單片機IAP升級方法在血液分析儀中的應用
單片機IAP升級方法在血液分析儀中的應用
2014年微型機與應用第21期
李婉婉,李 宏
寧波大學 信息科學與工程學院,浙江 寧波 315020
摘要: 介紹了基于IAP技術的單片機程序升級方法在血液分析儀中的應用。首先設計了由C8051F020單片機與基于PC的上位機組成的升級系統,并以該系統為例介紹了血液分析儀中單片機應用程序升級的基本原理以及升級系統的設計,升級系統設計主要包括單片機存儲器的分區設計、bootloader程序的設計以及基于MFC的上位機軟件的設計。經過實驗驗證,該系統能夠實現單片機的程序升級功能。
Abstract:
Key words :

  摘 要: 介紹了基于IAP技術的單片機程序升級方法在血液分析儀中的應用。首先設計了由C8051F020單片機與基于PC的上位機組成的升級系統,并以該系統為例介紹了血液分析儀中單片機應用程序升級的基本原理以及升級系統的設計,升級系統設計主要包括單片機存儲器的分區設計、bootloader程序的設計以及基于MFC的上位機軟件的設計。經過實驗驗證,該系統能夠實現單片機的程序升級功能。

  關鍵詞: 血液分析儀;單片機;IAP;升級系統

0 引言

  血液分析儀[1]又稱血細胞分析儀,是目前國內外醫學檢驗最常使用的儀器之一,通常由控制系統、血細胞識別系統、液路驅動系統、電源系統以及機械系統等部分組成。其中以單片機為核心器件的控制系統是其關鍵組成部分,其性能的優劣決定著血液分析儀內部系統能否較好地協調運行,影響著血液分析儀的整體性能。為了更好地應對市場的變化以及客戶的需求,血液分析儀生產商需要不斷引入新的技術對產品進行升級,即對儀器內部核心器件的程序進行替換,最終達到提升儀器整體性能的目的。但是目前沒有專門應用于血液分析儀中單片機升級的方法,大多數采用工程師現場升級的方式,然而這種方式的升級成本較高且耗時長,尤其是對于偏遠的地區,客戶的升級需求很難及時得到滿足。本文介紹一種基于在應用編程IAP(In Application Programming)技術的程序升級方法在血液分析儀單片機中的應用。首先介紹血液分析儀中單片機應用程序升級原理,然后分三部分介紹升級系統的設計,包括Flash分區的設計、bootloader設計以及上位機軟件設計。

1 血液分析儀中單片機程序升級原理

  IAP編程技術是應用在Flash程序存儲器的一種編程模式,即在某段程序的控制下完成對Flash的讀/寫操作,可以控制對某段、某頁,甚至某個字節的讀寫操作[2]。因此通常需要首先將單片機Flash存儲器進行分區操作,進而實現利用一部分代碼對另一部分代碼進行升級的功能[3]。本文針對血液分析儀中單片機的存儲器分區設計將在2.1節中介紹。

001.jpg

  基于上述原理設計了血液分析儀中單片機的升級系統,該系統主要由PC和單片機兩部分構成,系統結構圖如圖1所示。本系統采用的血液分析儀中的單片機為Silicon Laboratories公司的C8051F020型號,具有64 KB大容量Flash存儲器并且支持IAP功能。

  系統工作原理如下:

  單片機(下位機)部分:首先編寫能對單片機中用戶原始程序更新替換的bootloader[4]程序并通過JTAG端口燒寫在單片機Flash中的bootloader存儲區,然后當單片機復位時便進入bootloader程序中并進行升級判斷,如果接收到PC發來的升級指令,則對Flash中用戶程序區進行擦除、讀寫操作,完成后運行新的用戶程序;如果在等待一段時間后仍無升級指令,則直接跳轉到用戶原有程序運行。

  PC(上位機)部分:單片機串行口連接到PC的RS232口進行通信[5]。PC首先通過網絡或者其他途徑從血液分析儀生產商處獲取升級程序(二進制文件形式)并保存在硬盤中,本文采用網絡方式從儀器生產商網站上下載升級程序,然后運行編寫好的基于微軟基礎類庫(Microsoft Foundation Classes,MFC)的上位機軟件[5],將指令和升級文件發送給單片機。有關上位機軟件的設計將在2.3節中介紹。

2 系統設計

  2.1 Flash分區設置


002.jpg

  基于上述IAP技術的原理,首先將C8051F020單片機的Flash存儲器做如圖2所示的分區。其中,0x0000 ~0x0002這3 B存儲bootloader的入口地址;0x0003~0x7803的30 KB為用戶程序存儲區;0x7804~0x7A01范圍為預留部分;0x7A02~0xF201的30 KB是用戶程序備份區;剩余的地址空間0xF202~0xFDFF則用于bootloader程序的存儲。分區中0x7804~0x7A01范圍為預留部分,其設計原理將在2.2節介紹。

003.jpg

  由于單片機在復位后總是從0x0000地址開始執行跳轉語句,所以設計將bootloader首地址存放在前3個字節中,這樣復位后可以直接進入bootloader程序。方法為在使用Keil軟件下載程序之前進行如圖3所示的設置,在Code欄加入“?C_C51STARTUP(F202H)”實現跳轉,并將Code Range改為0xF202-0xFDFF,即將該bootloader程序燒寫在0xF202~0xFDFF區域。

  另外,出于安全性考慮[2],在分區時設計了用戶程序備份區[6],在擦除用戶程序之前先將程序寫入該區域即完成備份工作。新的用戶程序在寫入的過程中可能會發生錯誤,此時系統會進入死機或死循環狀態,bootloader程序中有開啟看門狗的語句,在看門狗中設置計數變量,初值為零,每次系統死機后再次復位便進入看門狗,變量值加一,重新運行之后又由于相同的原因復位,即發生頻繁復位現象。若變量的值大于限定的復位次數則進入備份區,執行備份程序,防止因頻繁復位造成系統崩潰。

  2.2 bootloader程序設計

  bootloader程序通常由初始化程序、監測程序、升級服務程序以及跳轉指令組成,來實現bootloader程序正常的引導加載功能[4]。

  初始化程序包括時鐘和通信接口(串口)的初始化和開啟看門狗等部分。監測程序主要是檢測上位機發送的升級指令,在和上位機建立通信之后等待一段時間,若收到升級指令,則進入升級服務程序部分;若沒有,則跳轉至用戶程序。升級服務程序由數據接收、Flash擦除、讀寫和頻繁復位檢測等部分組成。當收到上位機發送的升級指令后,先備份bootloader入口地址,再備份用戶程序,然后擦除用戶程序區。擦除過程中要注意由于64 KB的Flash存儲器是以512 B的扇區為單位組織的,一次擦除操作將擦除整個扇區,所以在2.1節中設置用戶程序區結束地址0x7803時,由于其所在扇區即0x7800~0x7A00將均被擦除,故要預留出0x7804~0x7A01的空間,將用戶程序區和備份區隔離開以防將備份區程序擦除。同理,用戶程序區首地址0x0003所在扇區包含0x0000~0x0002,即bootloader入口地址也會被擦除,故擦除用戶程序完成后要將入口地址回寫。用戶程序擦除完成后先保存升級程序大小記為L,然后從0x0003開始寫入從串口接收到的L個字節的二進制程序數據。在寫入的同時進行頻繁復位檢測,如果復位次數超過設定值,則說明接收到的數據出錯,向上位機發送代表升級失敗的字符‘F’,并跳轉到備份區執行;如果升級程序寫入完成沒有發生頻繁復位現象,則說明升級成功,向上位機發送字符‘S’,并跳轉到升級后的用戶程序區執行。具體流程圖如圖4所示。

004.jpg

  2.3 上位機軟件設計

  本系統所述PC上運行的上位機軟件主要用于和單片機之間進行通信,該軟件基于MFC通過拖取相應控件并編程來完成,調用了串口控件來實現串口通信。

005.jpg

  具體工作過程為:在運行軟件之前首先將升級文件保存在MFC工程所在文件夾中。然后開啟軟件界面,點擊“發送升級指令”按鈕,發送一個升級指令字符。若成功打開串口且單片機接收到該升級指令,則上位機會接收到單片機發送的表示擦除完成的字符,并顯示于接收狀態框;若等待較長時間仍沒有收到升級指令,則再次點擊發送按鈕,直到通信成功。之后點擊按鈕“獲取文件大小并發送”,程序將調用getlength( )函數獲取到工程文件夾中二進制文件的大小(字節數),并發送給單片機。單片機接收到之后返回一個確認字符,上位機通過串口接收到后顯示在接收狀態框。若較長時間未收到確認字符,則再次發送文件大小直到接收到確認為止。成功接收到后,點擊“發送升級文件”按鈕發送二進制升級文件。如果收到單片機回復的字符‘S’,則說明寫入成功,并在升級結果狀態框顯示“升級成功”字樣;如果收到字符‘F’,則說明發生頻繁復位現象,在狀態框顯示“升級失敗”字樣。具體流程圖如圖5所示,單片機和PC之間的通信過程如圖6所示。

006.jpg

3 結論

  采用基于IAP技術的單片機程序升級方法,設計了應用于血液分析儀的C8051F020型號單片機的程序升級系統,成功地對血液分析儀中單片機的應用程序進行了更新替換,并且新的應用程序能夠正常運行。該方法具備一定的有效性和可靠性,能夠克服血液分析儀中單片機現存升級方法的不足,節約了資源和成本。并且該方法不僅適用于C8051F020單片機,對于不同血液分析儀中其他型號的單片機同樣適用,只需要對其Flash分區和bootloader中的地址稍作調整即可,具有應用價值。

  參考文獻

  [1] 游世梅. 血液分析儀的現狀與發展趨勢分析[J]. 中國高新技術企業, 2013(9):83-84.

  [2] 田日才, 王國鵬, 梁學東. ATMEGA128 單片機的軟件遠程升級[J]. 電子技術應用, 2003,29(11): 23-25.

  [3] 劉根賢, 龔雪容, 生擁宏, 等. 基于高頻 RFID 的微處理器 IAP 技術[J]. 電子技術應用, 2013,39(4):29-31.

  [4] 劉云龍, 張偉霞. 基于 C8051F34x 單片機的 USB Bootloader 設計[J]. 微型機與應用, 2012,30(23):56-59.

  [5] 韋曉茹, 蔡志堅, 居戩之. AVR 單片機 ATmega16 與計算機串行通信的實現[J]. 微型機與應用, 2012,31(14):30-33.

  [6] 生鳳中, 荊雷, 李建業. 基于 CC1110 單片機的無線升級方法研究[J]. 電子技術應用, 2012,38(11):139-142.


此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 国产欧美成人免费观看 | 2020国产成人免费视频 | 77788色淫网站免费视频 | 久久天天躁夜夜躁狠狠85台湾 | 黄色污污视频在线观看 | 国产成年人网站 | 午夜影视福利 | 免费视频日韩 | 国产精品成人在线 | 莉莉私人免费影院观看网站 | 好紧好湿好黄的视频 | 国产女人又爽又大 | 天天爽夜夜爽人人爽免费 | 亚洲sss综合天堂久久久 | 欧美午夜精品久久久久免费视 | 97免费在线观看 | 午夜视频一区二区三区 | 成人欧美在线视频 | 亚洲天堂ww | 欧美日韩色视频在线观看 | 天天爱天天干天天操 | 天天干国产 | 九九九精品视频 | 色妇网 | 99re热视频这里只有精品5 | 欧美日韩国产高清一区二区三区 | 美女视频永久黄网站免费观看韩国 | 一级爱爱片一级毛片-一毛 一级α一级α片免费观看网站 | 天天狠天天透 | 一级做a爰全过程免费视频毛片 | 在线观看国产精品麻豆 | 久草欧美视频 | 狠狠干伊人 | 欧美成人se01短视频在线看 | 欧美激情(一区二区三区) | 日韩伦理影视 | 美尻在线 | 看三级网站 | 欧美黑白配性xxxxx | 亚洲在成人网在线看 | 黄网免费在线观看 |