🤖
LinkIt 7697 BlocklyDuino 使用指南
  • LinkIt 7697 BlocklyDuino 使用指南
    • 認識 LinkIt 7697
    • 認識 BlocklyDuino
    • BlocklyDuino v2 & v3 比較
    • 安裝開發環境 (v2)
      • 安裝 Arduino 編輯器
      • 安裝驅動並連接開發板
      • 安裝 BlocklyDuino 編輯器
      • 連結兩個編輯器並上傳程式
    • 安裝開發環境 (v3)
    • BlocklyDuino 基礎操作
    • 實作範例教學
      • A01. 內建 LED 閃爍
      • A02. 外接 LED 閃爍
      • A03. 外接 LED 呼吸燈
      • A04. RGB LED 顏色變化
      • A05. 外部按鈕控制開關
      • A06. 蜂鳴器播放聲音
      • A07 .可變電阻控制電壓輸出
      • A08. 伺服馬達控制
      • A21. DHT: 溫濕度感應器
      • A22. HTU21D: 溫溼度感應器
      • A23. PMSX003: PM2.5 感測器
      • A24. HC-SR04P: 超音波測距
      • A25. ADXL345: 加速規(動態)
      • A26. ADXL345: 加速規(手勢)
      • A27. 1602/2004: 液晶顯示模組
      • A28. WS2812: RGB 彩色燈條
      • A29. MFRC522: RFID
      • B00. Grove 相關基礎知識
      • B01. Grove 光感應器
      • B02. Grove 超音波測距感應器
      • B03. Grove 溫溼度感應器
      • B04. Grove 繼電器
      • B05. Grove LED 燈條
      • B06. Grove OLED 顯示器
      • C01. 雲端控制 LED 開關
      • C02. 上傳溫溼度到雲端
      • D01. 手機透過 BLE 讀寫裝置資料
      • E01. 遙控器: 按鈕控制 LED
    • 資源鏈結
  • LinkIt 7697 - Arduino IDE 開發指南
    • 環境設定
      • 設定 Arduino IDE
      • 將 LinkIt 7697 連接到電腦
        • 在 Windows 上安裝 CP2102N 驅動程式
        • 在 macOS 上安裝 CP2102N 驅動程式
      • 執行第一個程式
    • 開發指南
      • GPIO
      • UART
      • ADC
      • EINT (外部中斷 / External Interrupt)
      • I2C
      • SPI
      • EEPROM
      • Timer
      • Flash (索引式儲存空間)
      • RTC (Real-Time Clock)
      • Software Serial
      • 使用 Wi-Fi 函式庫
      • 使用 MCS 函式庫
        • 連接到 MCS
        • 連接到 MCSLite
          • 建立可透過 MCS Lite 控制的 Beacon
        • MCS 函式庫 API 使用手冊
          • MCSDevice
          • MCSLiteDeviceMCSLiteDevice
          • MCSDataChannel 相關類別
      • 使用 BLE 低功耗藍牙
        • 藍牙信標
        • 主控裝置
        • 周邊裝置
        • 已知限制
        • LBLE API 指南
          • LBLE
          • LBLECentral
          • LBLEPeripheral
          • LBLEAdvertisementData
          • LBLEService
          • LBLECharacteristic
          • LBLEAddress
          • LBLEUuid
          • LBLEClient
      • 使用 LinkIt Remote
        • LRemote API
        • LRemote 控制元件 API
      • LinkIt 7697 腳位的初始狀態
      • LinkIt 7697 供電說明
      • 更新 Bootloader 與韌體
      • Flash 燒錄工具
      • FOTA 更新
      • LinkIt 7697 的功能限制
      • 自行編譯 Arduino Package
      • 回報問題
    • 週邊元件連接教學
      • SMD 按鈕
      • RGB 三色 LED
      • 可變電阻
      • 九軸感應器 (MPU-9250)
      • 溫度與濕度感應器 (AM2302)
      • 超音波距離感應器
      • 光感應器 (LM358)
      • 0.96 吋 OLED 顯示模組 (SSD1308Z)
      • 長條型 LED 顯示模組 (MY9221)
      • 繼電器
      • 伺服馬達 (EMAX 9g ES08A Servo)
      • 使用 74HC595 驅動七段顯示器
      • 使用 MAX7219 驅動七段顯示器
      • 使用 MAX7219 驅動 8x8 矩陣式顯示器
      • 使用 OLED 模組 (如 SH1106 / SSD1306... 等模組)
      • 使用 PCF8574 / PCF8574A 驅動 1602 LCD
    • 開發套件與擴充板
      • Grove Starter Kit
      • Robot Shield
        • OTTO97
    • 下載
    • 資源連結
    • BSP 版本更新資訊
  • LinkIt 7697 - Development Guide for Arduino IDE
    • Environment Setup
      • Setup Arduino IDE
      • Connecting LinkIt 7697 to Computer
        • Install CP2102N Driver on Windows
        • Install CP2102N Driver on macOS
      • Run Your First Sketch
    • Developer Guide
      • GPIO
      • UART
      • ADC
      • External Interrupt
      • I2C
      • SPI
      • EEPROM
      • Timer
      • Flash (Key-Pair Storage)
      • RTC (Real-Time Clock)
      • Software Serial
      • Using the Wi-Fi Library
      • Using MCS Library
        • Connecting to MCS
        • Connecting to MCSLite
          • Build a Beacon controlled by MCS Lite
        • MCS Library API Reference
          • MCSDevice
          • MCSLiteDevice
          • MCSDataChannel Classes
      • Using Bluetooth
        • Beacons
        • Central Devices
        • Peripheral Devices
        • Limitations of LBLE library
        • LBLE Library API Guide
          • LBLE
          • LBLECentral
          • LBLEPeripheral
          • LBLEAdvertisementData
          • LBLEService
          • LBLECharacteristic
          • LBLEAddress
          • LBLEUuid
          • LBLEClient
      • Using LinkIt Remote
        • LRemote
        • LRemote Control Classes
      • Initial Pin State of LinkIt 7697
      • Powering the LinkIt 7697
      • Update Bootloader and Firmware
      • Flash Uploading Tool
      • FOTA Update
      • Limitations of LinkIt 7697
      • Source Code of Arduino Package
      • Issue Report
    • Tutorial
      • SMD Buttons
      • RGB LED
      • Potentiometer
      • IMU 9DOF v2.0 (MPU-9250)
      • Temperature and Humidity Sensor Pro (AM2302)
      • Grove Ultrasonic Ranger
      • Light Sensor (LM358)
      • Grove OLED Display 0.96" (SSD1308Z)
      • LED Bar v2.0 (MY9221)
      • Relay
      • Mini Servo (EMAX 9g ES08A Servo)
      • Driving 7-segment Displays with 74HC595
      • Driving 7-segment Displays with MAX7219
      • Driving 8x8 Dot Matrices with MAX7219
      • Using OLED module (SH1106 / SSD1306... etc.)
      • Driving 1602 LCD with PCF8574 / PCF8574A
    • Kits and Shields
      • Grove Starter Kit
      • Robot Shield
        • OTTO97
    • Download
    • Resources
    • BSP Release Notes
Powered by GitBook
On this page
  • 範例
  • 運作機制
  • 如何生成 FOTA Binary
  1. LinkIt 7697 - Arduino IDE 開發指南
  2. 開發指南

FOTA 更新

PreviousFlash 燒錄工具NextLinkIt 7697 的功能限制

Last updated 3 years ago

FOTA 是 Firmware Over the Air 的縮寫,意指可用 Wi-Fi 透過無線方式更新開發板上的韌體。

LinkIt 7697 提供了 LHTTPUpdate 函式庫,讓開發者可從給定的 HTTP URL 下載並燒錄更新 LinkIt 7697 的 sketch 應用程式,達成 FOTA 無線更新應用程式的功能。

範例

  • 將 LinkIt 7697 Arduino BSP 更新至 v0.10.5 或更新的版本。

  • 在 Tools > Board 選單中選擇 LinkIt 7697。

  • 開啟 Examples > LHTTPUpdate > LHTTPUpdate 範例。

  • 依照使用的 Wi-Fi AP 組態,更新程式碼中的 ssid 與 pass 資訊:

    char ssid[] = "yourapssid";      // your WPA2 network SSID (AP name)
    char pass[] = "yourpassword";    // your WPA2 network password
  • 點選 Upload 按鈕將 sketch 上傳至 LinkIt 7697。

  • 上傳完成後,開啟 Serial Monitor (baudrate 為 9600)。

  • 會看到下列的系統訊息:

    HTTPUpdate example begins.
    Attempting to connect to SSID: yourssid
    Connected to wifi
    Begin downloading new firmware
    Press RST key to reboot to updated firmware version.
    After reboot, it may take a while to update the firmware.
    The USR LED lights up during the update process.

    這表示系統已從 將範例 FOTA binary 的 bin 檔下載至 LinkIt 7697。

  • 此時按下 RST 按鈕,系統即會重新開機,並將剛剛下載的 FOTA binary 程式 (fota_example.bin) 燒錄至 LinkIt 7697 以取代原本的 sketch。

  • 約經過三秒鐘燒錄時間後,會看見開發板橘色 LED 閃爍,表示板上的 sketch 已完成替換為新的 "blinking" sketch。

運作機制

fotaUpdater.update(fotaBinaryURL);

FOTA binary 是經過前處理的 sketch bin 檔,為一種經過壓縮並帶有 checksum 資訊的檔案格式,以確保韌體更新過程中發生的錯誤可被即時偵測。

執行 update() 函式時,FOTA binary 會先被寫入至 flash 的 FOTA 區間。整個 flash 的區間劃分如下:

完成寫入 FOTA binary 至 FOTA 區間後,update() 函式會將 FOTA 區間標示為等待被更新的狀態。

接著系統重新開機,bootloader 偵測到 FOTA 區間有新韌體等待被更新時,即會將之解壓縮並檢查 checksum,一切無誤的話便把新韌體燒錄至 CM4 firmware 的區間:

CM4 firmware 區間燒錄完成後即完成 sketch 應用程式更新,結束整個 FOTA 處理程序。

如何生成 FOTA Binary

前文提到 FOTA binary 是經過前處理的 sketch bin 檔,以下將說明如何將正常的 sketch binary 檔轉換為 FOTA binary:

  • 針對要轉換的 Arduino sketch,在 Arduino IDE 選單中選取 Sketch > Export Compiled Binary 產生該 sketch 的 binary 檔案。

  • 依照 FOTA ROM Package 的說明進行相關設定與轉換。以下將示範在 Windows 下的轉換方法:

Windows 版的 FOTA ROM Package 工具

假設 FOTA ROM Package 的根目錄在 $FOTA_ROOT:

  • 將 $FOTA_ROOT\_ini\template\mt7697\FOTARomPacker.ini 檔案拷貝至 $FOTA_ROOT\_ini 目錄。

  • 開啟 $FOTA_ROOT\_ini\FOTARomPacker.ini 如下:

    [General Setting]
    Base_Directory=.\_Load\mt7697
    
    [CM4 bin]
    File=fota_example.bin
    Start_Address=0x79000
    Partition_Size=0x1ED000
    Is_Compressed=true

    修改 File 欄位的內容,填入之前從 Arduino IDE 輸出的 sketch binary 檔的路徑。

請勿修改 Start_Address、Partiion_Size、和 Is_Compressed 欄位,這幾個值需固定與 LinkIt 7697 flash 分區資訊一致。

  • 將 sketch binary 拷貝至 $FOTA_ROOT\_Load\mt7697。

  • 執行 gen_image.bat 批次檔。

  • 產生的 FOTA binary 會放在 _Output 目錄。

取得 FOTA binary 後,開發者即可將之放在 HTTP 伺服器上,透過在 sketch 中使用 LHTTPUpdate.update() 函式呼叫,下載並燒錄該 FOTA binary 至開發板。

範例程式碼透過呼叫下列 API,從 下載 FOTA binary 的 bin 檔,並將之燒錄至 flash:

從 下載 FOTA ROM Package 工具。

http://download.labs.mediatek.com/resource/fota_example.bin
http://download.labs.mediatek.com/resource/fota_example.bin
https://docs.labs.mediatek.com/resource/mt7687-mt7697/zh_tw/downloads