Thuật toán kết nối thiết bị với máy chủ FTP trong ứng dụng FOTA sử dụng module SIM 3G/4G

Để thiết lập kết nối thiết bị với máy chủ FTP chứa tập tin firmware, người thiết kế cần kiểm tra hoạt động của module SIM 3G/4G, mở kết nối TCP/IP cho module SIM để module có thể truy cập Internet, từ đó thông qua các thông tin của máy chủ để thiết lập kết nối FTP và tải tập tin. Bài viết này sẽ hướng dẫn các bước cơ bản cho quá trình kết nối thiết bị với máy chủ để phụ vụ cho quá trình tải và kiểm tra tính toàn vẹn của tập tin trước khi thay thế chương trình ứng dụng sẽ thực thi tại thiết bị. 

Một số tham số có liên quan đến quá trình kết nối và tải tập tin:

  • IP (Domain) : Địa chỉ máy chủ quản lý tập tin
  • Port: Cổng dịch vụ FTP của máy chủ
  • User : Tên đăng nhập
  • Pass : Mật khẩu đăng nhập
  • DeviceID : Định danh thiết bị
  • Path : Đường dẫn chứa tập tin
  • File : Tên tập tin và phiên bản của chương trình ứng dụng
  • Size : Kích cỡ tập tin

Trong ứng dụng cập nhật chương trình từ xa, chương trình ứng dụng A/B sẽ định kỳ kết nối đến máy chủ và kiểm tra phiên bản cập nhật mới dành cho thiết bị. Nếu có phiên bản cập nhật mới thì sẽ cấu hình lại các biến liên kiết để lựa chọn chương trình OTA sẽ là chương trình sẽ được thực thi để thực hiện quá trình cập nhật phiên bản mới, sau khi cấu hình xong các biến liên kết, chương trình ứng dụng sẽ thực thi hàm NVIC_SystemReset để khởi động lại thiết bị.

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

Thuật toán kết nối với máy chủ được áp dụng trong chương trình OTA được thiết kế như sau:

Bước 1: Kiểm tra hoạt động của module Internet thông qua hàm Sim_checkOK, nếu module không hoạt động thì có thêm tối đa 2 lần kiểm tra nữa. Nếu module vẫn không hoạt động thì bỏ qua quá trình OTA.  Nếu module hoạt động bình thường thì kiểm tra tín cường độ tín hiệu sóng RSSI thông qua hàm Sim_getSignalQuality. Nếu cường độ tín hiệu sóng không đảm bảo thì bỏ qua quá trình OTA. Nếu cường độ tín hiệu sóng đảm bảo thì chuyển qua Bước 2.

Hình 1. Giản đồ quy trình kiểm tra hoạt động module Internet

Bước 2: Cấu hình các thông số Internet gồm contextID, protocol type, APN cho một TCP/IP Context thông qua hàm Sim_configInternet. Nếu việc cài đặt các thông số thất bại thì bỏ qua quá trình OTA. Nếu cài đặt thành công thì sẽ kết nối vào Internet thông qua hàm Sim_connectInternet. Nếu kết nối Internert thất bại thì bỏ qua quá trình OTA. Nếu kết nối Internet thành công thì chuyển qua Bước 3.

Hình 2. Giản đồ quy trình cấu hình thông số và kết nối Internet

Bước 3: Cấu hình các thông số FTP contexID, response timeout cho FTP Server thông qua hàm FTP_configParams. Nếu thành công, cấu hình tên đăng nhập và mật khẩu đăng nhập FTP Server qua hàm FTP_setUserAndPass. Nếu thành công, cấu hình định dạng dữ liệu truyền nhận giữa thiết bị và server (binary/ascii) qua hàm FTP_setFileType. Nếu thành công, cấu hình chế độ nhận dữ liệu của giao thức FTP (passive/active) thông qua hàm FTP_setTransmode. Nếu thành công, cấu hình thời gian tối đa cho FTP Server (20s – 180s) thông qua hàm FTP_setRspTimeout. Nếu một trong các cấu hình trên thất bại thì bỏ qua quá trình OTA. Nếu tất cả các bước thành công thì chuyển qua Bước 4.

Hình 3. Giản đồ quy trình cấu hình thông số của giao thức FTP

Bước 4: Kết nối đến FTP Server dựa trên các thông số đã được cấu hình ở bước 3 và đường dẫn, port được thực hiện thông qua hàm FTP_loginServer. Nếu kết nối thất bại, bỏ qua quá trình OTA. Nếu thành công chuyển qua phần thuật toán tải tập tin.

Hình 4. Giản đồ quy trình kết nối FTP server

Nếu quá trình kết nối đến máy chủ thất bại ở bất kì bước nào thì đều bỏ qua quá trình này để thực hiện lại từ đầu, tối đa thêm 2 lần. Nếu không thành công thì thiết bị sẽ tiếp tục chạy chương trình ứng dụng đang có.

Phần tiếp theo: Tải tập tin Firmware chương trình và ghi chương trình vào bộ nhớ Flash trong ứng dụng FOTA STM32 

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.