使開發者能夠快速的使用ti ble 協議棧在cc2541 的soc上進行ti oad profile 功能的開發。
ble 協議棧有乙個可拓展的特性 oad,它提供了一種增值服務通過訪問程式設計頭的方式並且無需訪問物理記憶體來更新部署裝置的**。oad是一種客戶端-伺服器端機制,乙個裝置作為oad映象伺服器端(oad manager),另乙個裝置作為oad映象的客戶端(oad client)。
ble 的 bim 從不需要更新。
termdefinition
apibim
boot image manager 通過復位中斷向量表並且判斷哪乙個有效image執行
bemboot encrypted manager 編碼bim的版本號
dldown-loaded
install_dir
the installation directory path of the protocol stack
isrinterrupt service routine 中斷服務程式
ivec
interrupt vectors中斷向量表
lprf
low power rf低功耗射頻
nvnon-volatile storage 非易失儲存
osal
operating system abstraction layer作業系統抽象層
oaover-the-air
obload boot loader
oadover-the-air download
pmpower-mode
socsystem on a chip
snv****** non-volatile memory manager
titexas instruments incorporated
略,見原文。
略,見原文
如果應用程式的映象不滿足小於等於一半的內部記憶體的大小,則必須要給rc-image提供外部的nv記憶體;本文件暫時不提供該方式的描述。
oad 映象必須是乙個有著完整的ble 協議棧的應用程式。
oad系統,如表1,由兩個部分組成:oad target 和 oad manager。
oad target 包含三個部分:啟動**(boot image manager)和兩個不同的應用程式區域。啟動程式必須在page0因為需要截獲8051可復位的復位中斷向量。其他的應用程式在接下來的page上,被鎖的page,不可以進行寫操作或者擦操作。imagea和imageb是兩個應用程式,也需要占用bank0上的部分 non-banked code區域。這將會在一下描述。
oad manger包含了空中公升級的映象檔案和執行oad過程的應用程式。
下面是oad target使用了bim功能的環境圖表。bim允許乙個imagea只是具有基本的ble協議棧和oad公升級功能,用來作為公升級程式,這樣的話imageb就可以盡可能的大了。
【注意】上面說了那麼多,反正就是說了有兩種公升級的方式:
1.imagea 公升級 imageb,然後imageb 再公升級image a。條件就是兩個程式都要比較小。oad方式是要求永久啟動**在page0提供一種safe-fail檢查的機制決定具體的哪乙個image執行。2.imagea 只具有ble基本的協議棧和oad功能,每次都是破壞以前的imageb然後用imagea來反覆的公升級imageb。
為了驗證image的有效性,乙個指定的4-byte的區域作為crc和crc-shadow需要被詢問。如果2-byte的crc與2-byte的crc shadow匹配,該映象就可以被允許執行。如果crc是非0值或者非0xffff(擦寫完的flash值)並且crc-shadow是0xffff(擦寫完的flash的值),那麼crc值可以被計算通過整個image大小(該4-byte除外),並且結果和有效的crc比較然後決定是否image可以被執行。
1.bim負責選擇要執行的image,是image-a,還是image-b.2.bim首先判斷image-b是否存在,如果存在則直接執行image-b;如果不存在,檢測imagea是否存在,如果存在,則直接執行image-a;
3.如果都不存在,則進入pm3模式,也即休眠模式。
偽**實現如下:
unsigned char image = boot_get_image_type();
if(image == 'b')else
if(image == 'a')else
8.3.3.1啟動顯像管理 isr 潛在因素bim的ivec-relay邏輯可以被執行是因為通過優化的集合**和快速訪問idata記憶體區域。每次中斷消耗20個cycles在32m-hz或者是625nano-seconds(納秒)。(20/(32*10^6) = 0.625*10^-6)。
為了能夠乙個image(i.e.a)通過oad公升級另外的image(i.e.b),首先image(a)必須包含oadtargetprofile。略略
每乙個image,crc被iar編譯器計算在指定的記憶體區域。一下是imagea:
-d_code_beg=0x0830
… -z(code)checksum=0x0800-0x0801
image header結構體
typedef struct img_hdr_t;
映象的header以crc struct結構體的方式相鄰的放置在一起,因此crc和crc-shadow在記憶體中相鄰的靠在一起。如果相應的位置發生改變,所有定義的#define和相關的linker 檔案也必須發生改變。映象的標頭檔案被傳送通過oad manager與oad target 裝置建立連線。 BLE CC2541之指令週期
一 簡介 本文介紹cc2541的指令週期,以及如何利用指令週期來計算乙個延時函式的時長。二 實驗平台 協議棧版本 ble cc254x 1.4.0 編譯軟體 iar 8.20.2 硬體平台 smart rf 主晶元cc2541 博主 甜甜的大香瓜 897503845 qq.com 香瓜ble之cc2...
BLE CC2541低功耗測試實驗 晶元驗證篇
通過檢視晶元手冊cc2541的電氣特性表,cc2541低功耗 lowpower 有三種狀態 powermode1 簡稱 pm1 powermode2 簡稱 pm2 powermode3 簡稱 pm3 描述 它們分別對應功耗的典型值 單位 a 如下表 lowpowerstate typical val...
BLE CC2541之通過廣播傳送自定義資料
一 簡介 本文以 bleperipheral為例,將自定義的資料寫入廣播資料中,通過乙個週期事件定時重新整理廣播資料。二 實驗平台 協議棧版本 ble cc254x 1.4.0 編譯軟體 iar 8.20.2 硬體平台 smart rf 主晶元cc2541 usb dongle 博主 甜甜的大香瓜 ...