新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 一種嵌入式系統(tǒng)升級的設計和實現

一種嵌入式系統(tǒng)升級的設計和實現

作者: 時間:2011-07-20 來源:網絡 收藏

本文引用地址:http://2s4d.com/article/150451.htm

SD卡中SPI模塊的讀操作包括讀單塊和讀多塊兩種。該了讀單塊功能。初始化的長度為512字節(jié)。函數的分為4個步驟:①LPC2148向SD卡發(fā)送讀單塊命令(CMD17),SD卡響應(Rl格式);②等待SD卡發(fā)送讀起始令牌;③判斷收到的令牌是否為0xFE;④從SD卡中讀取數據。

4.2 SD卡文件

SD卡完成底層驅動后,可按照FAT32文件格式對SD卡上的數據進行操作,進而在SD卡上讀寫文件等操作。FAT32文件系統(tǒng)是微軟FAT類文件系統(tǒng)中的最高版本.是現今Windows下最常用的硬盤文件系統(tǒng)。

當讀取SD卡中的文件時,首先要根據文件名查找該文件的信息結構體。根據文件信息結構體中的起始簇號即可找到數據區(qū)第1簇的內容,也可在FAT表中找到第2個簇號。根據第2個簇號又能找到第2簇的內容和FAT表中的第3個簇號,直至遇到文件結束標志。這樣,就可根據FAT表中的簇號讀取到全部文件數據。以圖5為例,說明讀取SD卡文件的具體步驟:

(1)先在目錄項表中找到與文件名匹配的,如“Mvfile”,從“Myfile”所對應的目錄項中可以讀到該文件的首簇號0004:

(2)根據首簇號0004訪問FAT表,讀出首簇號對應的FAT表項內容0005,即第2個簇號。根據第2個簇號再訪問FAT表,讀出其對應的FAT表內容,即第3個簇號0006…等。依次做下去,直到最后一個表項內容為FFFF為止;

(3)由第(2)步可知,“Myfile這個文件占用了4個簇,這4個簇號形成一個簇鏈000dH一0005H一0006H一0008H,根據這些簇號所形成的簇鏈訪問這4個簇號對應的4個數據存儲區(qū)域.文件“Myfile”就分成4個部分分別存放在這4個存儲區(qū)域中161。

4.3 IAP功能的實現

IAP:In Application Programming 是指在應用編程,即在程序運行中編程,就是片子提供一系列的機制(硬件/軟件上的)當片子在運行程序的時候可以提供一種改變flash數據的方法。通俗點講,也就是說程序自己可以往程序存儲器里寫數據或修改程序。這種方式的典型應用就是用一小段代碼來實現程序的下載,實際上單片機的ISP功能就是通過IAP技術來實現的,即片子在出廠前就已經有一段小的boot程序在里面,片子上電后,開始運行這段程序,當檢測到上位機有下載要求時,便和上位機通信,然后下載數據到存儲區(qū)。

LPC2148支持多種方式對Flash進行編程,用來寫入用戶代碼或數據。第一種方式是通過內置的串行JTAG接口進行編程:第二種方式是通過UART0進行在系統(tǒng)編程(ISP);第三種方式是通過在應用編程(IAP)。IAP程序是thumb代碼,地址為0x7FFFFFF0。在使用IAP擦除、編程操作過程中,片內Flash存儲器不可訪問。當用戶運行應用程序時,用戶Flash區(qū)域的中斷向量有效.所以在調用Flash擦除、寫IAP之前,用戶應當禁止中斷,確保用戶中斷向量在RAM中有效和中斷處理程序位于RAM中。IAP代碼不使用或禁止中斷??蓪D卡讀出的數據用C代碼燒入指定的Flash段中:

4.4 程序實現跳轉到任意行代碼段執(zhí)行

現以下例來說明這段程序,如果程序跳轉到絕對地址為0xFFFF0執(zhí)行,代碼如下:

typedef void(*run)();//定義一個無參數,無返回類型的函數指針類型

run address=(run)0xFFFFO;//定義一個函數指針,指向跳轉的位置

address()://調用函數

在上述應用程序中,根本沒有看到任何一個函數實體,但是卻執(zhí)行了函數調用;實際上它起到了軟重肩的作用,跳轉到CPU啟動后第一條要執(zhí)行的指令位置,即實現了程序的跳轉。

5、結語

方案以LPC2148為核心,通過SD卡驅動、FAT32文件系統(tǒng)、IAP功能和程序跳轉實現了系統(tǒng)的模塊,并用于實際開發(fā)中。該增強了系統(tǒng)維護,縮短了產品的開發(fā)周期。節(jié)約了大量的人力、財力,增加了與用戶的交流力度。與傳統(tǒng)設計相比。在開發(fā)時間、成本和靈活性等方面都占有優(yōu)勢性。該設計已經調試成功,并作為一個功能模塊用于某電子產品上,在產品需要增加新功能和維護系統(tǒng)穩(wěn)定方面起到了巨大的作用。要注意的是,該程序設計是在Keil下編譯通過的,生成的HEX文件不能直接放入SD卡中,因為該文件與通過ISP燒寫Flash的文件不一樣,要作一定的修改。另外,該方案不僅能用于系統(tǒng),也能用于為程序補丁和寫入數據等,也可用于ARM9.因此該設計方案具有廣泛的應用前景。

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

上一頁 1 2 下一頁

評論


相關推薦

技術專區(qū)

關閉