0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CC1310片內(nèi)固件升級的工程編譯詳解

小劉 ? 作者:工程師陳翠 ? 2018-06-17 04:56 ? 次閱讀

OAD( ), 即Over the Air Download,是通過無線的方式遠(yuǎn)程更新固件的一種方法。On chip,就是片上, 升級的對象不需要外掛Flash, 通過芯片片內(nèi)Flash完成新固件存儲及老固件向新固件的切換。On chip OAD方案因?yàn)椴恍枰獠?a target="_blank">接口就能夠?qū)崿F(xiàn)固件的更新,在傳感器,智能門鎖,電力監(jiān)控等無線應(yīng)用廣受歡迎。

TI新發(fā)布的CC1310 片內(nèi)OAD工程里, 由于很多細(xì)節(jié)沒有說明, 用戶使用過程可能出錯(cuò). 這里將結(jié)合TI CC1310 SDK 1.60.00.21 版本(), 講解在工程編譯和OAD測試過程中的注意事項(xiàng).

試驗(yàn)提前準(zhǔn)備:

兩個(gè)CC1310的Launchpad評估板( )

CC1310 軟件開發(fā)包:simplelink_cc13x0_sdk_1_60_00_21( )

工具:Uniflash燒寫工具( )

串口工具:HTerm

PYTHON環(huán)境及工具:PYTHON 2.7

CC1310片內(nèi)OAD例程編譯

CC1310 片內(nèi)OAD的例程在上述SDK的文件夾examples\rtos\CC1310_LAUNCHXL\easylink中, 對應(yīng)有采集器(rfWsnConcentratorOadServer)和節(jié)點(diǎn)(rfWsnNodeIntFlashOadClient)兩個(gè)例程; 我們將其導(dǎo)入到CCS(7.0 以上版本)中.

這里需要注意的第一個(gè)點(diǎn),在SDK的文文件夾\examples\rtos\CC1310_LAUNCHXL\easylink\hexfiles\onChipOad中已經(jīng)有已經(jīng)編譯好的固件, 這個(gè)固件目前不能夠和工程編譯的固件混合使用. 你可以只使用已經(jīng)編譯好的進(jìn)行測試,或者只使用工程編譯好的.

我們首先編譯好采集器工程(無需任何修改),并將工程下載到CC1310 Launchpad 1 中;

接著, 按照工程內(nèi)的README.md指導(dǎo)(第136~145行)設(shè)置,我們編譯節(jié)點(diǎn)工程, 發(fā)現(xiàn)報(bào)錯(cuò),如下圖, 錯(cuò)誤原因可使用存儲不足;

CC1310片內(nèi)固件升級的工程編譯詳解

針對這個(gè),我們可以從工程編譯生成的.map文件察看具體的存儲的細(xì)節(jié),可以看出是.const太大導(dǎo)致。

CC1310片內(nèi)固件升級的工程編譯詳解

我們?nèi)绻麑⒅肮こ淘O(shè)置的FEATURE_OAD_ONCHIP取消,重新編譯,察看正常的.map文件, 可以發(fā)現(xiàn)主要占用.const空間的主要被smartrf_settings_predefined.obj占用,經(jīng)過檢查后,發(fā)現(xiàn)主要是無線RF的補(bǔ)丁導(dǎo)致,而這部分補(bǔ)丁針對我們對OAD的驗(yàn)證沒有關(guān)系。

CC1310片內(nèi)固件升級的工程編譯詳解

恢復(fù)到README.MD的工程設(shè)置后,打開工程目錄文件夾smartrf_settings中的smartrf_settings_predefined.c,將下面四個(gè)RF_Mode變量修改如下, 接著重新編譯工程。

RF_Mode RF_prop_lrm =

{

.rfMode = RF_MODE_PROPRIETARY_SUB_1,

.cpePatchFxn = 0,

.mcePatchFxn = 0,

.rfePatchFxn = 0,

};

RF_Mode RF_prop_ook =

{

.rfMode = RF_MODE_PROPRIETARY_SUB_1,

.cpePatchFxn = 0,

.mcePatchFxn = 0,

.rfePatchFxn = 0,

};

RF_Mode RF_prop_hsm =

{

.rfMode = RF_MODE_PROPRIETARY_SUB_1,

.cpePatchFxn = 0,

.mcePatchFxn = 0,

.rfePatchFxn = 0,

};

RF_Mode RF_prop_sl_lr =

{

.rfMode = RF_MODE_PROPRIETARY_SUB_1,

.cpePatchFxn = 0,

.mcePatchFxn = 0,

.rfePatchFxn = 0,

};

成功編譯,從下圖可以看到編譯后的程序大小為57K,滿足不能大于60K的限制。

CC1310片內(nèi)固件升級的工程編譯詳解

這里需要說明的一點(diǎn)是,README.MD里面說的另外一點(diǎn)nodeFwVersion修改應(yīng)該是在oad_client.c而不是NodeTask.c中;

CC1310片內(nèi)OAD例程BIN固件生成及加載測試

因?yàn)檫@個(gè)工程的設(shè)置是針對IMAGE文件,如果直接下載到芯片是沒辦法正常運(yùn)行的(因?yàn)樾酒膹?fù)位向量沒有可執(zhí)行程序,需要借助BIM來跳到IMAGE程序入口),需要將編譯好的固件和Boot管理的BIM固件結(jié)合在一起,步驟如下

先mergy BIM和節(jié)點(diǎn)固件(請將兩個(gè)固件拷貝至python的目錄后執(zhí)行)

python /usr/bin/hexmerge.py -o rfWsnNodeIntFlashOadClient_CC1310_LAUNCHXL_all_v1.hex "--overlap=error" rfWsnNodeIntFlashOadClient_CC1310_LAUNCHXL_tirtos_ccs.hex bim_intflash_cc1350lp.hex

接著,因?yàn)锽IM需要檢驗(yàn)IMAGE的CRC文件,需要通過下面的命令將生成的hex轉(zhuǎn)換成bin。(需要下載安裝一個(gè)crc計(jì)算組件crcmod )

python oad_image_tool_13x0.py -t onchip -i production -v 0x0100 -m 0x1000 -ob rfWsnNodeIntFlashOadClient_CC1310_LAUNCHXL_all_v1.bin rfWsnNodeIntFlashOadClient_CC1310_LAUNCHXL_all_v1.hex

我們通過Uniflash, 把bin文件下載到節(jié)點(diǎn)Launchpad 2后,節(jié)點(diǎn)固件就可以正常工作了。你可以看到Launchpad的指示燈閃爍,從Launchpad 2串口可以看到SCE的ADC信息。我們開啟采集器launchpad 1,可以看到節(jié)點(diǎn)已經(jīng)和采集器建立通訊,可以正常工作了。

這里還需要注意的是通過oad_image_tool_13x0.py -v生成的版本號只是采集器端Available FW顯示的版本號,不是實(shí)際的固件版本號。

下一步是將升級需要的程序加載到采集器端。首先,我們需要根據(jù)README.MD的說明設(shè)置成IMAGE B。 接著,通過上述的python工具,將編譯生成的.hex 文件轉(zhuǎn)換成.bin文件。注意oad_image_tool_13x0.py 的-m參數(shù)需要設(shè)置成0x10000。之后,我們在采集器評估板右鍵選擇Update available FW, 再同時(shí)按下左鍵和右鍵,采集器進(jìn)入加載固件界面,如下:

CC1310片內(nèi)固件升級的工程編譯詳解

接著斷開采集器的串口,我們將結(jié)合PYTHON把需要更新的節(jié)點(diǎn)固件傳遞到采集器的外部Flash。 這里,因?yàn)镻YTHON的腳本是針對LINUX寫的,為了在WINDOWS能夠工作,請先安裝模塊pyserial并修改腳本oad_write_bin.py (目錄C:\ti\simplelink_cc13x0_sdk_1_60_00_21\tools\easylink\oad)。PYTHON的安裝不在文檔討論范圍。Pyserial的下載安裝可參考

修改后的腳本參考如下(已經(jīng)用黃色MARK)

#!/usr/bin/python

import serial, sys, io, os

import serial.tools.list_ports

plist =list(serial.tools.list_ports.comports())

if len(plist) <= 0:

print "The Serial port can't find!"

else:

plist_0 =list(plist[0])

port0 = plist_0[0]

file = sys.argv[1]

斷開原串口助手(采集器所連接)打開命令行,執(zhí)行oad_write_bin.py腳本,將新生成的節(jié)點(diǎn)固件bin文件傳遞給采集器??梢钥吹絺鬏斕崾?。等待傳輸完成。

C:\Python27>python C:\ti\simplelink_cc13x0_sdk_1_60_00_21\tools\easylink\oad\oad

_write_bin.py C:\ti\simplelink_cc13x0_sdk_1_60_00_21\examples\rtos\CC1310_LAUNCHXL\easylink\hexfiles\onChipOad\ccs\rfWsnNodeIntFlashOadClient_CC1310_LAUNCHXL_app_v2.bin

傳輸完成后,重新打開串口連接采集器串口,按Launchpad右鍵出現(xiàn)Update Available Firmware后,再同按左鍵同時(shí)按下右鍵,然后可看到V02的固件已經(jīng)可供使用。

接下來通過采集器Launchpad右邊按鍵選擇Update Node Firmware,再按左鍵同時(shí)按下右鍵執(zhí)行選擇。可以看到升級開始和完成。

CC1310片內(nèi)固件升級的工程編譯詳解

CC1310片內(nèi)固件升級的工程編譯詳解

升級完成后,通過Send Fw Ver Req可以看到固件已經(jīng)從V01更新到V02了。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • CC1310
    +關(guān)注

    關(guān)注

    4

    文章

    30

    瀏覽量

    11734
收藏 人收藏

    評論

    相關(guān)推薦

    CC1310內(nèi)DC/DC轉(zhuǎn)換器可以關(guān)閉嗎?

    請問,CC1310內(nèi)DC-DC轉(zhuǎn)換器輸出的電壓電流參數(shù)在哪可以查到,內(nèi)DC/DC轉(zhuǎn)換器可以關(guān)閉嗎?芯片進(jìn)入休眠或SHUTDOWN后,DC
    發(fā)表于 12-08 12:17

    請問CC1310內(nèi)DC/DC轉(zhuǎn)換器可以關(guān)閉嗎?

    請問,CC1310內(nèi)DC-DC轉(zhuǎn)換器輸出的電壓電流參數(shù)在哪可以查到,內(nèi)DC/DC轉(zhuǎn)換器可以關(guān)閉嗎?芯片進(jìn)入休眠或SHUTDOWN后,DC
    發(fā)表于 08-08 07:09

    請問CC1310支持OTA升級嗎?

    請教各位,CC1310支持OTA升級嗎或者支持類似的固件升級功能嗎?謝謝
    發(fā)表于 03-26 10:18

    CC1310內(nèi)固件升級工程編譯教程

    向新固件的切換。On chip OAD方案因?yàn)椴恍枰獠拷涌诰湍軌驅(qū)崿F(xiàn)固件的更新,在傳感器,智能門鎖,電力監(jiān)控等無線應(yīng)用廣受歡迎。在TI新發(fā)布的CC1310
    發(fā)表于 11-11 07:56

    CC1310技術(shù)手冊.pdf下載

    CC1310技術(shù)手冊
    發(fā)表于 04-18 15:42 ?29次下載

    CC1310硬件射頻:CC1310產(chǎn)品展示介紹

    CC1310硬件射頻從設(shè)計(jì)到成型之一-CC1310產(chǎn)品一覽
    的頭像 發(fā)表于 08-16 01:05 ?5206次閱讀

    關(guān)于CC1310的組成及工作原理的介紹

    CC1310軟件速成之一 – CC1310架構(gòu)及工作原理
    的頭像 發(fā)表于 08-06 00:15 ?1.3w次閱讀

    CC1310軟件速成:開始CC1310工程

    CC1310軟件速成之三 – 現(xiàn)在開始你的第一個(gè)CC1310工程
    的頭像 發(fā)表于 08-02 00:12 ?1.1w次閱讀

    關(guān)于CC1310布板及測試介紹

    CC1310硬件射頻從設(shè)計(jì)到成型之三-CC1310布板及測試簡介
    的頭像 發(fā)表于 08-06 00:03 ?5630次閱讀

    關(guān)于CC1310的特點(diǎn)及應(yīng)用介紹

    CC1310詳細(xì)介紹以及軟件開發(fā)教程
    的頭像 發(fā)表于 08-02 00:07 ?8732次閱讀
    關(guān)于<b class='flag-5'>CC1310</b>的特點(diǎn)及應(yīng)用介紹

    CC1310的新功能、特性與設(shè)計(jì)開發(fā)

    本課程詳細(xì)介紹CC1310的新功能與特性,以及軟硬件開發(fā)和資源。對TI的sub-1G 產(chǎn)品做了概括性介紹;對CC1310的硬件開發(fā)做了剖析:原理圖、eBom、layout、調(diào)試、天線等;并對中國頻段
    的頭像 發(fā)表于 05-29 08:59 ?2278次閱讀
    <b class='flag-5'>CC1310</b>的新功能、特性與設(shè)計(jì)開發(fā)

    基于CC1310的無線MCU產(chǎn)品原理圖設(shè)計(jì)及器件選型

    CC1310硬件射頻從設(shè)計(jì)到成型之二-CC1310原理圖設(shè)計(jì)及器件選型
    的頭像 發(fā)表于 04-23 06:26 ?4092次閱讀
    基于<b class='flag-5'>CC1310</b>的無線MCU產(chǎn)品原理圖設(shè)計(jì)及器件選型

    DreamLNK CC1310模塊新技術(shù)全面升級內(nèi)容

    CC1310是TI在SimpleLink超低功耗平臺系列最后發(fā)布的一個(gè)產(chǎn)品。駿曄科技根據(jù)芯片方案自主研發(fā)了DL-CC1310-B串口透傳模塊,與行業(yè)其他品牌CC1310產(chǎn)品不同,駿曄本次技術(shù)革新迭代
    發(fā)表于 06-10 16:02 ?756次閱讀

    CC1310內(nèi)固件升級工程編譯

    CC1310內(nèi)固件升級工程編譯
    發(fā)表于 11-01 08:26 ?1次下載
    <b class='flag-5'>CC1310</b><b class='flag-5'>片</b><b class='flag-5'>內(nèi)</b><b class='flag-5'>固件</b><b class='flag-5'>升級</b>的<b class='flag-5'>工程</b><b class='flag-5'>編譯</b>

    CC1310內(nèi)固件升級工程編譯

    OAD即Over the Air Download,是通過無線的方式遠(yuǎn)程更新固件的一種方法。On chip,就是上, 升級的對象不需要外掛Flash, 通過芯片片內(nèi)Flash完成新
    的頭像 發(fā)表于 04-06 09:23 ?1177次閱讀
    <b class='flag-5'>CC1310</b><b class='flag-5'>片</b><b class='flag-5'>內(nèi)</b><b class='flag-5'>固件</b><b class='flag-5'>升級</b>的<b class='flag-5'>工程</b><b class='flag-5'>編譯</b>