This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2652R的開發板測OTA功能.

Other Parts Discussed in Thread: CC2652R, UNIFLASH, CC2538, CC2530, Z-STACK, CC2531, SIMPLELINK-CC13X2-26X2-SDK


HI YK

最近用CC2652R的開發板在測OTA功能.

請教一下以zc_ota_server專案的話

TI的OTA_USER_GUIDE有提到要寫入以下腳本.

For IAR, the post-build actions are a bit different:
"$PROJ_DIR$\build.cmd" "$TOOLS_OAD_DIR$" "$PROJ_DIR$" "$TARGET_BPATH$" "$TOOLS_OAD_ZIGBEE_DIR$" "$TARGET_DIR$" "BEBE" "2652" "00000001"

這個腳本要怎麼加在BUILD ACESS的Post-Build command line的腳本???
因為我加進IAR後,COMPILER最後都報錯???

以下是zc_ota_server原本的腳本Post-Build command line

ielftool.exe --ihex --verbose "$TARGET_BPATH$.out" "$TARGET_BPATH$.hex"

但不管是加在後面:
Variable expansion failed for Post-Build command line.
Offending text: "ielftool.exe --ihex --verbose "$TARGET_BPATH$.out" "$TARGET_BPATH$.hex" "$PROJ_DIR$\build.cmd" "$TOOLS_OAD_DIR$" "$PROJ_DIR$" "$TARGET_BPATH$"
"$TOOLS_OAD_ZIGBEE_DIR$" "$TARGET_DIR$" "BEBE"
"2652" "00000001""

還是替代掉原本的腳本腳本Post-Build command line
Variable expansion failed for Post-Build command line.
Offending text: ""$PROJ_DIR$\build.cmd" "$TOOLS_OAD_DIR$" "$PROJ_DIR$" "$TARGET_BPATH$" "$TOOLS_OAD_ZIGBEE_DIR$" "$TARGET_DIR$" "BEBE" "2652" "00000001" "


好像都報錯:Variable expansion failed for Post-Build command line??

好像不能用,這個情況是??

  • HI VIKI

    所以這個錯誤Variable expansion failed for Post-Build command line??可以忽略掉???
    雖然它還是有產出OUT檔案跟HEX檔案,但這個網頁提到是說要燒錄BIN檔???
    這個BIN檔是要另外產生嗎??

    還是直接用FLASHPROGEMAMER 2燒HEX就可以??

    謝謝.

  • 你是按照上面操作依然出现此报错吗?请确认是否按照user guide的要求导入了 custom argvars :
    dev.ti.com/.../ble5-quick-start.html
  • 參考一下 的Zigbee Over-The-Air Firmware Upgrade章節

  • HI VIKI

    "你是按照上面操作依然出现此报错吗?请确认是否按照user guide的要求导入了 custom argvars??"


    這老早就加了......

  • HI VIKI

    這個可以了, 但是這個好像是燒錄zed_sw_ota_client的部份??
    因為zc_ota_server好像沒有預設的腳本,只有在zed_sw_ota_client的專案才有預設好的腳本 ??
    原來所謂的"$PROJ_DIR$\build.cmd" 在zed_sw_ota_client是被定義成:
    "$COM_TI_SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR$/tools/zstack/iar/OTAPostBuild.cmd"

    而"$TOOLS_OAD_DIR$" 在zed_sw_ota_client是被定義成:
    "$COM_TI_SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR$/tools/common/oad/"

    而"$PROJ_DIR$" "$TARGET_BPATH$"一樣

    而"$TOOLS_OAD_ZIGBEE_DIR$" 在zed_sw_ota_client是被定義成:
    "$COM_TI_SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR$/tools/zstack/zigbee_ota_image_converter/"

    而"$TARGET_DIR$" "BEBE" "2652" "00000001"一樣.

    然後我把zed_sw_ota_client的專案腳本抄過去zc_ota_server再重新組譯就好了.
    但是好像用UNIFLASH燒錄zc_ota_server產出的zc_ota_server... .BIN配CC26X2r1lp_bim_offchip.hex
    會燒不進去,只有zed_sw_ota_client可以燒進去.

    好像是說zc_ota_server要搭配PC上的OTA_SERVER透過串口和zc_ota_server連嘛??
    zc_ota_server這個是要????
  • 是的、zc_ota_server要搭配PC上的OTA_SERVER透過串口和zc_ota_server連

  • HI YK

    那ZC_OTA_SERVER不用照說明的改腳本??

    直接用原來的專案就可以了???

    謝謝

  • 不用、直接用原來的專案就可以

  • HI YK

    那zc_ota_server專案用原來的.用Flash Programmer 2燒錄

    zed_sw_ota_client也是用原來的(腳本己寫好) ; 用UniFlash燒錄
    cc26x2r1lp_bim_offchip.hex & zc_ota_server_CC26X2R1_LAUNCHXL_tirtos_iar_oad.bin
    (cc26x2r1lp_bim_offchip.hex 取自 C:\ti\simplelink_cc13x2_26x2_sdk_3_40_00_02\examples\nortos\CC26X2R1_LAUNCHXL\bim\bim_offchip\iar\app\Release\Exe)
    這兩個檔案.

    然後用OTA_SERVER和zc_ota_server連.

    (BEBE-2652-00000001.zigbee抓zed_sw_ota_client產出的.ZIGBEE檔案)
    再用zed_sw_ota_client, 結果出現這樣子:

    請問這樣子是算沒有OTA到嗎??

    謝謝.

  • 看起來是沒有

  • HI YK

    好,我再DEBUG一下

    用這行"No Image Was Found For Devcie"去找
    發現好像很多人弄OTA遇過這情況.

    還看到有用CC2538做OTA??

    在這篇"CC2538: Connecting OTA Dongle port to OTA server"看到的

  • 基本上TI CC2530, CC2538也都可以作OTA
  • HI YK

    就把ZED的腳本從"BEBE" "2652" "00000001"改成"BEBE" "2652" "00000002"就好了??

    然後把組譯出來的.ZIGBEE檔丟到OTA SERVER去就有了??

    跟這篇一樣??"LAUNCHXL-CC1352P: ZigBee OTA Server Tool - No Image was found for device"

    只是改image version??

    但那裡是2了? 不懂??

    然後OTA更新好慢, 大概要十分鐘.

  • 對,就是改image version.哪裡不懂?Zigbee 是low data rate的應用、OTA 10分鐘是正常的

  • Hi YK

    不懂的地方是因為您在帖子裡有提到

    “Is your image version number larger than currnt one??”

    是指image version兩邊要相同??

    那這.zigbee檔案裡面的image version=2,是和什麼的image version相同??

    謝謝。

  • HI YK

    那這樣子的話,OTA SERVER是只能更新ZED??
    那如果我是要更新成zc_genericapp或zED_genericapp
    的話...可以嗎??
  • HI YK

    其實拿zed_genericapp專案跟zed_sw_ota_client專案比較
    好像兩個專案在ZIGBEE檔案的部份其實是一模一樣的??

    只是zed_sw_ota_client專案多加了OTA相關處理的部份.
    所以我也可以拿zed_sw_ota_client當成
    zed_genericapp專案來使用嗎??

    謝謝.

  • zed_sw_ota_client除了ota差異外,就是zcl cluster的支援跟zed_genericapp專案不同,基本上是可以拿來用沒問題
  • HI YK

    那意思是我也得把zc_ota_server拿來加入我自己的的功能
    然後再想辦法和zed_sw_ota_client組網.
    才可以做到說

    一般情況下:

    "一個zc_ota_server + N個zed_sw_ota_client"
    是當成我自己的網路使用.

    要更新FW了:

    使用OTA_SERVER透過UART和zc_ota_server連線
    去OTA其他zed_sw_ota_client或是 zr_sw_ota_client

    然後zc_ota_server就無法OTA,得要自己燒錄??

    在OTA的實用性上是
    是這個意思嗎??

    謝謝.
  • zc_ota_server一般是拿來更新ota client的,如果要更新zc_ota_server自己,一般我們會透過serial boot loader.
  • HI YK

    image version找到了,在OTA的Z-Stack OTA Upgrade.

    原來是你產出的BIN檔的IMAGE的檔案最好更高一點??
    "It is recommended you increment the binary version
    of the OTA binary to a higher number (e.g. 0x00000002)"
  • 要更新的檔案版本號要增加很容易理解的吧

  • HI YK

    最近又遇到二個狀況

    1: 就是UNIFLASH好像和 FLASHPROGRMMER 2 有FW不一樣??

    用UNIFLASH 要燒BIM_OFF_CHIP.HEX加zed_sw_ota_client.BIN時要求要更新XDS110的FW
    然後UNIFLASH 更新完後用 FLASHPROGRMMER 2 燒錄zc_ota_server時也要求要更新XDS110的FW
    兩個用的FW是不同嗎??

    2: 另一個是
    用UNIFLASH 要燒BIM_OFF_CHIP.HEX加zed_sw_ota_client.BIN完時.
    要用FLASHPROGRMMER 2燒錄其他HEX都會報錯燒不進去. ??
    這個是要另外修正嗎??

    謝謝.
  • 你有試過最新的Flash Programmer 2 v1.8.2嗎?
  • HI YK
    OK了

    原來是我用的是Flash Programmer 2 v1.8.1
    剛下載新的Flash Programmer 2 v1.8.2
    就不會和UNIFLASH互相更新FW了

    也沒有UNIFLASH燒進去,

    Flash Programmer 2不能燒的問題.
    謝謝.

  • HI YK

    想再請教一下 zc_sw_ota_client 和 zr_sw_ota_client
    這兩個專案是??
    協調器和路由的 ota_client??
    但昨天試zc_sw_ota_client和zc_ota_server不能連上 ??
    所以想再請教下zc_sw_ota_client 和 zr_sw_ota_client
    這兩個專案是做什麼的??


    另外,您之前有提到:

    "zed_sw_ota_client除了ota差異外,就是zcl cluster的支援跟
    zed_genericapp專案不同,基本上是可以拿來用沒問題"

    那COORDINAOR我要用zc_ota_server嗎??
    還是 zC_genericapp??

    謝謝.
  • 1. zc_sw_ota_client 和 zr_sw_ota_client是協調器和路由的 ota_client

    2. zc_sw_ota_client和zc_ota_server都是協調器,當然不能連上

    3. zc_sw_ota_client 和 zr_sw_ota_client就是拿來當zc或是zr 的ota_client例程

    4. 如果你的ota server要放在coordinator上,就要用zc_ota_server

  • HI YK

    3. zc_sw_ota_client 和 zr_sw_ota_client就是拿來當zc或是zr 的ota_client例程

    那zr_sw_ota_client 一樣是用 zc_ota_server 做 OTA 嗎 ??
    那zc_sw_ota_client 要什麼做OTA ??

    4. 如果你的ota server要放在coordinator上,就要用zc_ota_server

    那好像也只能這樣,因為一個網路只能有一個coordinator嘛?
    這幾天用起來 zc_ota_server 好像也是個coordinator.
    不能網路有個 zc_ota_server 還有個 zc_genericapp.
  • 3. zr_sw_ota_client就是要加入一個有zc_ota_server的網路去做ota、zc_sw_ota_client 的話你要加入一個zr_ota_server的zr去對zc_sw_ota_client 作ota.
    4. 對、一個網路只能有一個coordinator,這是zigbee基本知識
  • HI YK

    想再請教一下:

    那以現在ZED做OTA的方式還要燒一個OFF_CHIP的HEX.........
    意思是如果要用自己的板子,要像CC26X2R開發板這樣子外掛EEPROM??

    謝謝.
  • 对、要外掛EEPROM

  • HI YK

    最近試一試發現很奇怪的狀況
    就是ZED_OTA_Client有增加一些硬體使用.
    I2C SPI UART這三個.
    但為了OTA方便,ZED_OTA_Client是燒回去原本的版本(就是SDK產出的原專案.)


    但是從OTA Server OTA過去後,發覺這些硬體根本沒有動作??
    還是和原本一樣.
    但直接燒動作是有的??

    這個和CODE_SIZE有關嗎??

    謝謝.

  • 應該和CODE_SIZE無關

  • HI YK

    以下是詳細的測試狀況:

    ZC_OTA_SERVER,SDK產出的原專案 -->V1

    ZED_OTA_Client,SDK產出的原專案 -->V1

    ZED_OTA_Client,加入開機在UART2丟出個XXX之類的字串
    (因為UART1被CUI佔用), -->V2

    一開始時:
    ZED燒錄的是V1
    ZC燒錄的是V1

    但是從OTA Server OTA V2產出的.ZIGBEE檔案(版本調到2)過去後,
    ZED重開機,在CUI看到有重新入網.
    OTA Server軟體上也有看到裝置重新入網.

    但是UART2沒有丟任何東西出來??
    好像ZED動作起來是和原本的ZED_OTA_Client一樣.只有入網正常.

    但直接用UNIFLASH燒錄動作是有的??那這樣是....??

    這只是在其實這個是在ZED上做測試.加入自己的動作後出現的BUG.

    ------------------------ZC_OTA_SERVE--------------------------------------

    ZC_OTA_SERVER,SDK產出的原專案 -->V1

    ZC_OTA_SERVER,加入開機在UART2丟出個XXX之類的字串
    (因為UART1被CUI佔用) -->V2

    ZED_OTA_Client,SDK產出的原專案 -->V1

    一開始時:
    ZED燒錄的是V1
    ZC燒錄的是V2

    結果開機後ZED入網了, OTA SERVER軟體也抓到了,
    接著下了OTA的動作, OTA SERVER 完全沒反應???
    動也不動.

    這是現在的狀況
    謝謝.

  • 你確定升級ZED_OTA_Client(V2加入開機在UART2丟出個XXX之類的字串
    (因為UART1被CUI佔用)),這個OTA升級有成功?有看到設備的版本改變了?
  • HI yK

    "你確定升級ZED_OTA_Client(V2加入開機在UART2丟出個XXX之類的字串
    (因為UART1被CUI佔用)),這個OTA升級有成功?有看到設備的版本改變了?"

    "這個OTA升級有成功?" --> 只有確認OTA SERVER的軟體上有看到確實有從00.00% 跑至100.00%
    "有看到設備的版本改變了? " --> 呃.....這個倒沒有.....這個設備版本要在ZED的那裡看??

    謝謝.
  • 可以用Read Attributes去讀取資訊

  • HI YK

    這張是原本抓到的Read Attributes


    是 File Version ??

    還是Stack Version ??

    以下是把BUILD ACTION改到3 , OTA完後抓到的Read Attributes


    看起來好像和OTA前一模一樣.所以這樣算是沒更新到??

    可是都有從0% 跑到100%了??

    謝謝.

  • File version 是一模一樣,看起來是沒有更新到,先去確認一下你ota檔案沒有弄錯,如果ota檔案沒錯,就要自行去調試為何下載完成了但是BIM沒有把ota檔案搬到flash取代原來的firmware
  • HI YK

    cc26x2r1lp_bim_offchip.hex一直是用
    原來專案產出的HEX沒有變,也不敢去做變動.

    因為這也是近期發生,一開始嘗試在ZC和ZED專案裡
    增加介面動作時,確實還沒有問題,
    ZED都可以更新得到.

    現在就變成OTA有跑完,啊怎麼
    ZED一重開都沒有更新到的FU.
    或是OTA SERVER要更新時不動作的BUG.

    不過這個File Version倒是從沒有確認過.
    因為一直都直接看新增的介面有沒有動作來確認
    是不是有更新到FW.

    另外剛看了下 OTA OFFCHIP 的方案是指說

    實際上OTA在傳FW時,實際上是先存到
    外部EEPROM或FLASH裡,存完之後,再用

    BIM的BOOTLOADER來把外部EEPROM或FLASH裡
    剛存好的FW RELAOD到2652R裡面的意思嗎??

    謝謝.
  • HI YK

    1:最近試ZED好像有點進展,大概知道為什麼更新不過去.
    好像是被NB鎖住.ZIGBEE檔案了.因為放在C槽,WINDOWS鎖權限.
    所以不行,換個檔案位置就可以了.

    但是更新過去後,有看到硬體動作,但是奇怪的是明明是更新過去003
    但是不管在 UART 輸出或是在OTA SERVER讀到的還是001版??
    但是真的有更新到 ?? 但版本號沒有變 ??

    2:另外還發現一個小問題,就是說因為PAN ID都是0xFFFF
    ZED , ZC重開機自己產生一個PAMID,
    就會有出現說只要 ZED或是ZC 己經入網了,
    但是只要 ZED或是ZC 重燒過
    兩邊就都會配不起來.

    都要按住BTN-2開關 , 重開機清掉之前
    的入網參數,兩邊才能重新入網.

    3:ZC_OTA又出現一個新問題,就是明明ZC開到了
    ZED也入網了(UART 畫面顯示 in the nerwork)
    但是奇怪的是在OTA SERVER的軟體
    卻看不到這顆ZED的出現??
    所以也不能OTA.

    ZC好像真的不太能亂加CODE進去,
    一加就馬上出大大小小的狀況,
    一把ZC燒回原本的初始CODE,又好了.
    真的很奇怪......

    謝謝.
  • 不確定你ZC加了什麼code會不會有什麼影響、建議你先用沒有修改過的例程先驗證OTA功能無誤再說

  • HI YK

    "不確定你ZC加了什麼code會不會有什麼影響"-->
    A : 就加入UART2和SPI2這兩組硬體. 然後開機時初始化.再丟一些訊息出來.
    然後用SPI2去點OLED.也秀一些字在OLED上.

    "建議你先用沒有修改過的例程先驗證OTA功能無誤再說"
    驗證過啦.ZC用最原始的就都沒問題.

    謝謝.
  • HI YK

    還有一個有意思的地方,就是ZED_OTA_CLIENT

    現在加了UART SPI IIC三個自用硬體
    (但後來知道說CUI佔用的UART0和
    被外部FLASH佔用的SPI0不能動.不然會出問題!!)

    跟定時回傳給COOR(ZC_OTA_SERVER)(用DATAREQUEST函式)
    在先不管能不能OTA的前提下,試傳看看ZED_OTA_CLIENT
    能不能丟給ZC_OTA_SERVER
    觸發DATAINCOME事件.

    結果是不行,雖然ZED送訊息給ZC_OTA_SERVER這邊
    DATAREQUEST函式都回傳ZOK

    用了你之前跟我說在ZCL內部改的方式好像也沒用,
    因為用UART來DEBUG後,發現根本沒有觸發到ZCL.C檔的.
    zcl_event_loop的AF_INCOMING_MSG_CMD事件.

    謝謝.
  • 所以看起來是你修改的程序影響到了正常的OTA流程了

  • HI YK

    就加了個UART2(開接收中斷)
    跟SPI2點OLED就不行啦 ??
    (現在知道UART1跟SPI1不能動.)
    根本也不敢動ZC_OTA_SERVER原本的函式.

    只是想試 ZED_OTA_CLIENT傳DATA給
    ZC_OTA_SERVER行不行觸發AF_INCOME事件.

    那這樣子亂動也不能OTA也不能收DATA.

    那這個OTA不會和DMM一樣純展示......
    想實際應用要自己想辦法的那一種??

    謝謝.
  • 我的作法是用host搭配znp去做OTA,所有的OTA都是在host上處理,ZNP也儘量不去作其他功能,以免影響到正常功能