Site icon TAPIT

Cập nhật chương trình từ xa trên vi điều khiển STM32 – Firmware Over The Air (FOTA) – P1

Có bao giờ bạn thắc mắc làm thế nào mà có thể tự động cập nhật chương trình cho một thiết bị nhúng, thiết bị IoT mà không cần tốn công cắm dây để nạp chương trình như thông thường chưa? Bài viết này trong chuỗi hướng dẫn cập nhật chương trình từ xa trên vi điều khiển STM32 sẽ giới thiệu tổng quan về tính năng Firmware Over The Air (hay còn gọi là FOTA), đồng thời sẽ hướng dẫn cách tổ chức lưu trữ chương trình trên vi điều khiển STM32F103RCT6 lõi ARM Cortex M3 để có thể áp dụng FOTA. Nếu bạn sử dụng một vi điều khiển lõi ARM khác thì cũng có thể tham khảo được chuỗi bài viết này để áp dụng FOTA. 

[HỌC ONLINE: LẬP TRÌNH VI ĐIỀU KHIỂN STM32, VI XỬ LÝ ARM CORTEX – M]

  1. Giới thiệu về FOTA

Firmware Over The Air (FOTA) là một tính năng đặc biệt cho phép nhà sản xuất có thể cập nhật các chương trình từ xa cho các thiết bị nhúng, IoTs thông qua mạng (có thể là wifi, ethernet hoặc cũng có thể là trong các network LoRa, Bluetooth, Sub 1Ghz…). Họ có thể nâng cấp, sửa chữa chương trình các thiết bị mà không cần phải nối dây trực tiếp từ thiết bị với máy tính để nạp chương trình. Nhờ đó có thể tiết kiệm được nhiều thời gian, công sức và tiền bạc. Có thể nói, FOTA là một tính năng rất cần thiết phải có với các nhà sản xuất thiết bị nhúng, thiết bị IoT hiện nay.

Những ứng dụng của Firmware Over the Air

Khi đã tung một sản phẩm thiết bị ra thị trường, quá trình thực hiện nâng cấp phần mềm cho các thiết bị được mô tả một cách khái quát cụ thể sẽ có 4 bước sau đây:

Quy trình thực hiện nâng cấp chương trình của một thiết bị

  1. Những điều kiện để sử dụng FOTA

Để ứng dụng FOTA thì thiết bị cần phải có:

Ở trong bài hướng dẫn này mình sẽ sử dụng:

File chương trình sẽ được lưu dưới dạng hexadecimal (đuôi file .hex). (Cấu trúc của fille này mình sẽ giải thích ở phần sau)

  1. Phân chia bộ nhớ chương trinh trong vi điều khiển

Để sử dụng tính năng FOTA, bộ nhớ chương trình trong STM32F103RCT6 sẽ chia làm 4 chương trình chính là: Bootloader Firmware, FOTA FirmwareFactory Firmware và Current Firmware. Mỗi chương trình sẽ được lưu vị trí khác nhau trong bộ nhớ Flash.

Trong đó:

Lưu ý: Chương trình Bootloader Firmware, Factory FirmwareFOTA Firmware phải được nạp thủ công trước cho thiết bị.

Dưới đây là một cách phân chia bộ nhớ cho các chương trình trên thiết bị của mình sử dụng MCU STM32F103RCT6 có tính năng FOTA (Có thể thay đổi vị trí lưu tùy thuộc vào project của các bạn)

Tên chương trình

Địa chỉ bắt đầu – kết thúc

Kích thước

Bootloader Firmware

0x08000000 –  0x08001FFF

8 kByte

Factory Firmware

0x08002000 – 0x0800E7FF

50 kByte

FOTA Firmware

0x0800E800 – 0x080137FF

20 kByte

Current Firmware

0x08013800 – 0x0801FFFF

50 kByte

Tham khảo bài viết “Các thao tác đọc, ghi và xóa bộ nhớ Flash trên MCU STM32F103C8T6” để hiểu và sử dụng bộ nhớ FLASH của vi điều khiển STM32F103 tại https://tapit.vn/cac-thao-tac-doc-ghi-va-xoa-bo-nho-flash-tren-mcu-stm32f103c8t6/.

  1. Cách đổi địa chỉ thủ công khi nạp chương trình bằng KeilC IDE

Cách thay đổi địa chỉ bắt đầu chương trình khi nạp thủ công vào bộ nhớ chương trình của vi điều khiển STM32F103 bằng KeilC IDE như hình dưới:

Tại ô Start ở IROM1 sẽ là địa chỉ bắt đầu mà bạn muốn lưu chương trình trong bộ nhớ chương trình STM32.

Size là kích thước lớn nhất của chương trình của bạn.

Sau khi chỉnh sửa xong, bạn nhấn OK để lưu vào bấm vào Download thì chương trình của bạn đã được nạp vào vi điều khiển tại địa chỉ tương ứng.

=================================================

Như vậy, mình đã giới thiệu tổng quan về FOTA và các chương trình cần thiết để thực hiện tính năng FOTA. Trong phần tiếp theo, mình sẽ trình bày cách hoạt động của các chương trình đó, Đồng thời sẽ hướng dẫn tạo và giải thích cấu tạo của một file chương trình. Cùng theo dõi và đón xem nhé!

Chúc các bạn thành công!

Xem tiếp phần 2: Chương trình Bootloader và các chương trình ứng dụng khi sử dụng tính năng FOTA

Theo dõi thêm:
– Cơ bản về cấu trúc và tính năng Vi xử lý ARM Cortex – Mx. 
– Phân biệt các khái niệm Processor Core, Processor và Microcontroller trong Hệ thống nhúng
– Tổng hợp các bài hướng dẫn Lập trình vi điều khiển STM32F1
– Tổng hợp hướng dẫn Lập trình vi điều khiển STM32F4

Nhóm TAPIT ARM R&D