Tiêu chí và lựa chọn phương pháp cập nhật chương trình từ xa FOTA cho vi điều khiển STM32

Nội dung các phần trước đã trình bày cơ sở lý thuyết về cập nhật chương trình từ xa và nền tảng phần cứng thực nghiệm. Trong bài viết này, mình sẽ thiết lập một số tiêu chí thiết kế quan trọng cho tính năng này và lựa chọn phương pháp cập nhật chương trình từ xa phù hợp để làm thực nghiệm cho vi điều khiển STM32 lõi ARM Cortex M3/4.

Phương pháp cập nhật chương trình từ xa được xây dựng phải đảm bảo được các tiêu chí:

  • Đảm bảo tỉ lệ thực hiện thành công cao
  • Ít tốn kém tài nguyên bộ nhớ
  • Quá trình cập nhật chương trình từ xa diễn ra trong thời gian ngắn
  • Đảm bảo thiết bị vẫn sử dụng được trong các trường hợp:
    • Mất nguồn trong quá trình cập nhật chương trình từ xa
    • Phiên bản chương trình mới tồn tại lỗi
    • Lỗi trong quá trình nhận tập tin chương trình mới
    • Mất kết nối Internet trong quá trình cập nhật chương trình từ xa.

Trước khi thực hiện thiết kế chương trình thì chúng ta cần lựa chọn phương pháp phân vùng bộ nhớ Flash để lưu các chương trình và quá trình hoạt động của thiết bị, đồng thời chúng ta cũng lựa chọn phương pháp lưu trữ chương trình tạm thời tại bộ nhớ RAM. Chi tiết như sau: 

Lựa chọn phương pháp phân vùng bộ nhớ: Trong vi điều khiển tồn tại phân vùng cho bootloader tự phát triển, phân vùng chương trình OTA, các biến liên kết và hai phân vùng cho hai phiên bản chương trình ứng dụng khác nhau nhằm luân phiên cập nhật chương trình cho các vị trí A/B để thiết bị luôn duy trì hai phiên bản chương trình mới nhất.

Hình 1. Phương pháp phân vùng bộ nhớ và quá trình hoạt động được chọn

Lựa chọn phương pháp lưu trữ dữ liệu tạm thời: Lưu trữ một phần và lưu trữ toàn phần. Mỗi khi nhận một gói dữ liệu chứa một phần chương trình ứng dụng, ghi phần dữ liệu này vào vùng nhớ chương trình của bộ nhớ Flash. Một tập tin chương trình có thể sẽ được tải một lần hoặc nhiều lần tùy thuộc vào kích cỡ của tập tin so với kích cỡ bộ nhớ đệm khai báo tại RAM. Nếu bộ đệm được khai báo nhỏ hơn so với kích cỡ của tập tin thì phương pháp lưu trữ dữ liệu tạm thời là lưu trữ một phần. Nếu bộ đệm được khai báo lớn hơn hoặc bằng so với kích cỡ tập tin chương trình ứng dụng thì phương pháp lưu trữ dữ liệu tạm thời là lưu trữ toàn phần.

Xây dựng thư việnThư viện chương trình cập nhật từ xa sẽ được phát triển trên ngôn ngữ lập trình C dựa trên thư viện HAL (Hardware Abstraction Layer) của hãng STM32 để làm việc với các ngoại vi của vi điều khiển, và dựa trên một thư viện SIM tự phát triển dựa trên tập lệnh AT để làm việc với module Internet EC21. Các thư viện chuẩn của C để chuẩn hóa kiểu dữ liệu (stdint.h) và xử lý chuỗi (string.h).

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

Thư viện được thiết kế thành từng khối chức năng cụ thể, dễ dàng hiệu chỉnh, sửa chữa cho phù hợp với nhu cầu của người sử dụng. Các tập tin liên quan đến thư viện sẽ được xây dựng như bảng sau:

Mô tả thư viện

Các nội dung tiếp theo sẽ trình bày chi tiết về thuật toán kết nối thiết bị với máy chủ, thuật toán tải tập tin chương trình ghi chương trình vào bộ nhớ, thuật toán kiểm tra lỗi tập tinthuật toán khởi động lại vi điều khiển


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

Tìm hiểu thêm:
Xem thêm Tổng hợp các bài hướng dẫn Lập trình vi điều khiển STM32 tại đây.
Xem thêm Tổng hợp hướng dẫn Internet of Things với NodeMCU ESP8266 và ESP32 tại đây.