Tải bản đầy đủ (.pdf) (26 trang)

Nghiên cứu và đề xuất thư viện cập nhật chương trình từ xa cho các thiết bị nhúng kết nối internet (tt)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (511.7 KB, 26 trang )

ĐẠI HỌC ĐÀ NẴNG
TRƢỜNG ĐẠI HỌC BÁCH KHOA


NGUYỄN HUỲNH NHẬT THƢƠNG

NGHIÊN CỨU VÀ ĐỀ XUẤT
THƢ VIỆN CẬP NHẬT CHƢƠNG TRÌNH TỪ XA

C
C
R
UT.L

CHO CÁC THIẾT BỊ NHÚNG KẾT NỐI INTERNET

D

Chuyên ngành: Kỹ thuật điện tử
Mã số: 8520203

TÓM TẮT LUẬN VĂN THẠC SĨ
CHUYÊN NGÀNH KỸ THUẬT ĐIỆN TỬ

Đà Nẵng – Năm 2020


Cơng trình được hồn thành tại
TRƯỜNG ĐẠI HỌC BÁCH KHOA
Người hướng dẫn khoa học: TS. Võ Tuấn Minh
Người hướng dẫn khoa học 2: TS. Nguyễn Duy Nhật Viễn


Phản biện 1: TS. Hoàng Lê Uyên Thục
Phản biện 2: TS. Trần Thế Sơn
Luận văn sẽ được bảo vệ trước Hội đồng chấm Luận văn tốt nghiệp
thạc sĩ ngành Kỹ thuật điện tử họp tại Trường Đại học Bách khoa vào
ngày 25 tháng 10 năm 2020

C
C
R
UT.L

Có thể tìm hiểu luận văn tại:

D

 Trung tâm học liệu và truyền thông Trường Đại học Bách khoa
 Thư viện Khoa Điện tử - Viễn thông, Trường Đại học Bách khoa –
ĐHĐN


1

MỞ ĐẦU
1.

Tính cấp thiết của đề tài
Cùng với sự phát triển không ngừng của công nghệ, các thiết bị

nhúng được sử dụng ở khắp mọi nơi trên thế giới trong rất nhiều lĩnh
vực khác nhau với số lượng ngày càng gia tăng nhanh chóng. Trong

đó, nhiều thiết bị được lắp đặt sử dụng tại những nơi mà con người
hay đội ngũ kỹ thuật khó có thể tiếp cận được, nhiều thiết bị sau khi
đưa đến tay người dùng và trong quá trình sử dụng thì phát hiện được
các lỗi hay cần nâng cấp bổ sung, tối ưu các tính năng.
Từ xu thế vạn vật kết nối Internet và những nhu cầu cần thiết
trên, ngày càng nhiều các thiết bị nhúng được thiết kế hỗ trợ kết nối

C
C
R
UT.L

vào Internet. Điều này sẽ đặt ra nhiều cơ hội cũng như các bài toán
mới cho những nhà nghiên cứu và phát triển, đặc biệt là vấn đề cập

D

nhật chương trình từ xa đang được quan tâm phát triển như một tính
năng quan trọng cho các thiết bị để có thể thay đổi chương trình chỉ
trong thời gian ngắn mà khơng cần thao tác trực tiếp lên thiết bị.
Có rất nhiều hãng thiết kế vi điều khiển dựa trên những kiến trúc
vi xử lý, số lượng ngoại vi, kích cỡ và tổ chức bộ nhớ khác nhau.
Đồng thời, tuỳ vào ứng dụng thực tế mà thiết bị nhúng có thiết kế
ngoại vi kết nối Internet và phương thức truyền nhận dữ liệu khác
nhau. Để người phát triển có thể tiếp cận và tích hợp được tính năng
cập nhật chương trình từ xa vào thiết bị nhúng một cách đơn giản và
hiệu quả, đề tài sẽ cung cấp các nền tảng cơ sở khoa học kỹ thuật về
các yếu tố liên quan đến tính năng trên.
Theo thống kê năm 2019, trong lĩnh vực hệ thống nhúng, số
lượng thiết bị IoTs sử dụng lõi ARM chiếm 90% thị phần và số



2
lượng vi điều khiển trên thế giới được thiết kế trên kiến trúc lõi ARM
chiếm 25% thị phần, trong đó dịng Cortex-M chiếm tỉ lệ cao nhất.
Vì vậy, thư viện cập nhật chương trình từ xa được đề xuất trong đề
này sẽ được thử nghiệm trên mơ hình thiết bị là một bảng mạch vi
điều khiển 32 bit của hãng STMicroelectronics sử dụng CPU lõi
ARM Cortex – M và bộ nhớ chương trình Flash, mơ hình này có khả
năng kết nối vào Internet thông qua module truyền nhận dữ liệu
không dây 4G.
2.

Mục đích nghiên cứu
-

Cung cấp nền tảng cơ sở khoa học kỹ thuật về cập nhật
chương trình từ xa cho các thiết bị nhúng có kết nối Internet
với các yếu tố: Cấu trúc tập tin chương trình, tổ chức bộ nhớ,

C
C
R
UT.L

giao thức truyền nhận dữ liệu, tính tồn vẹn dữ liệu và quy
trình khởi động thiết bị nhúng.
-

D


Đề xuất phương pháp cập chương trình từ xa, xây dựng thử
nghiệm và đánh giá thư viện chương trình cập nhật từ xa trên
mơ hình cụ thể.

3.

Đối tƣợng và phạm vi nghiên cứu
3.1. Đối tƣợng nghiên cứu
-

Vi xử lý ARM Cortex - M

-

Vi điều khiển STM32

-

Mạng thơng tin máy tính với các giao thức Internet HTTP,
FTP

-

Kỹ thuật phát hiện lỗi trong truyền nhận dữ liệu.

3.2. Phạm vi nghiên cứu
-

Kiến trúc lõi ARM Cortex - M, tổ chức bộ nhớ và quy trình

khởi động của dòng vi điều khiển STM32


3
-

Giao thức truyền nhận dữ liệu giữa server và thiết bị, kỹ
thuật kiểm tra lỗi

-

Thuật toán và thư viện cập nhật chương trình từ xa cho mơ
hình thiết bị.

4.

Phƣơng pháp nghiên cứu
Phương pháp luận của luận văn là kết hợp nghiên cứu lý thuyết

kết hợp với thực tiễn để làm rõ nội dung đề tài. Cụ thể như sau:
-

Nghiên cứu các yếu tố kỹ thuật liên quan đến quá trình cập
nhật chương trình từ xa cho các thiết bị nhúng

-

Xem xét các đề tài nghiên cứu liên quan, so sánh và đánh giá
các ưu điểm, khuyết điểm của các phương pháp cập nhật
chương trình từ xa


-

C
C
R
UT.L

Đề xuất phương pháp và thiết kế thư viện cập nhật chương
trình từ xa dựa trên các ngơn ngữ lập trình và giao thức

D

truyền thơng
-

Thiết kế, thi cơng mơ hình phần cứng phù hợp để thử nghiệm
thư viện

5.

Đánh giá kết quả thực hiện.

Ý nghĩa khoa học và thực tiễn của đề tài
Ý nghĩa khoa học: Từ các yếu tố liên quan đến quá trình cập

nhật chương trình từ xa của các thiết bị nhúng có kết nối Internet, đề
tài này đề xuất phương pháp, xây dựng thư viện và thử nghiệm trực
tiếp trên mơ hình phần cứng. Từ các kết quả thử nghiệm, đề tài sẽ
đưa ra những đánh giá kết luận có ý nghĩa khoa học trong lĩnh vực hệ

thống nhúng.
Ý nghĩa thực tiễn: Kết quả của đề tài có khả năng áp dụng cho
các hệ thống nhúng có kết nối Internet để thực hiện việc cập nhật


4
chương trình nhằm vá lỗi, nâng cấp, tối ưu các tính năng của một hệ
thống từ xa, trong một thời gian ngắn mà không cần can thiệp vào
thiết bị.
6.

Cấu trúc của luận văn
Ngoài phần mở đầu, kết luận và tài liệu tham khảo, luận văn gồm
có 4 chương
Chƣơng 1: TỔNG QUAN VỀ CẬP NHẬT CHƢƠNG
TRÌNH TỪ XA
Trong chương này sẽ trình bày về ứng dụng của cập nhật
chương trình từ xa, mơ hình cập nhật chương trình từ xa gồm
thiết bị nhúng, chương trình chạy trên thiết bị nhúng, máy chủ
quản lý tập tin chương trình và quá trình cập nhật chương trình

C
C
R
UT.L

từ xa.

Chƣơng 2: NỀN TẢNG PHẦN CỨNG CẬP NHẬT


D

CHƢƠNG TRÌNH TỪ XA

Chương này sẽ trình bày về tổng quan về phần cứng, tổ chức
bộ nhớ của vi điều khiển và cấu trúc chương trình, bộ xử lý trung
tâm ARM Cortex – M, quá trình khởi động của vi điều khiển và
module truyền nhận dữ liệu 3G/4G.
Chƣơng 3: ĐỀ XUẤT PHƢƠNG PHÁP VÀ XÂY DỰNG
THƢ VIỆN CẬP NHẬT CHƢƠNG TRÌNH TỪ XA
Chương này đề xuất phương pháp cập nhật chương trình từ
xa, xây dựng thư viện cập nhật chương trình từ xa với các thuật
tốn nhận, kiểm tra lỗi tập tin chương trình, thuật tốn ghi tập tin
vào bộ nhớ và thuật toán khởi động lại vi điều khiển
Chƣơng 4: KẾT QUẢ THỰC HIỆN VÀ ĐÁNH GIÁ HIỆU
QUẢ


5
Chương này nêu lên các kết quả thực hiện được của đề tài và
đánh giá hiệu quả dựa trên các tiêu chí về chiếm tài nguyên bộ
nhớ khi triển khai tính năng OTA, tỉ lệ thành cơng khi thực hiện
OTA, độ tin cậy khi thự hiện OTA và thời gian thời gian thực
hiện quá trình OTA.

D

C
C
R

UT.L


6
Chƣơng 1: Tổng quan về cập nhật chƣơng trình từ xa
1.1. Giới thiệu chƣơng
Chương một sẽ trình bày về ứng dụng của cập nhật chương
trình từ xa, mơ hình cập nhật chương trình từ xa với các thành phần
thiết bị nhúng, chương trình ứng dụng chạy trên thiết bị và máy chủ
quản lý tập tin chương trình. Đồng thời, quá trình cập nhật chương
trình từ xa cũng sẽ được trình bày tại chương này.
1.2. Ứng dụng của cập nhật chƣơng trình từ xa
Vấn đề cập nhật chương trình từ xa đang được quan tâm phát
triển như một tính năng quan trọng cho các thiết bị có kết nối vào
Internet. Tính năng này cho phép nhà phát triển có thể thay thế

C
C
R
UT.L

chương trình hiện tại đang chạy trên vi điều khiển của một hệ thống
nhúng bằng một chương trình mới với những thay đổi, bổ sung các

D

tính năng của thiết bị, hay cập nhật những thiếu sót về bảo mật chỉ
trong thời gian ngắn mà không cần thao tác trực tiếp lên thiết bị.
1.3. Mơ hình cập nhật chƣơng trình từ xa
1.3.1.


Thiết bị nhúng
Thiết bị nhúng là những thiết bị có khả năng tự hoạt động, tích

hợp cả phần cứng và phần mềm, được thiết kế để thực hiện một chức
năng chun dụng nào đó.
1.3.2.

Chương trình chạy trên thiết bị nhúng
Chương trình ứng dụng sau khi biên dịch xong sẽ được nạp

trực tiếp vào bộ nhớ chương trình của vi điều khiển thơng qua các
thiết bị nạp chương trình (programmer) hoặc nội dung của chương
trình sẽ được chuyển thành tập tin ở định dạng hex hoặc bin để có thể


7
đưa lên máy chủ quản lý tập tin phục vụ cho quá trình cập nhật
chương trình từ xa.
1.3.3.

Máy chủ quản lý tập tin chương trình
Máy chủ quản lý tập tin này có thể đặt tại cơng ty của đơn vị

nghiên cứu và sản xuất thiết bị nhúng hoặc có thể thuê các dịch vụ
máy chủ đám mây từ các nhà cung cấp trong nước hoặc các nhà cung
cấp quốc tế. Nhưng đặc điểm chung là máy chủ phải được định danh
trên mơi trường Internet thơng qua IP hoặc có thể sử dụng tên miền
và dịch vụ phân giải tên miền (DNS).
Giao thức thường được sử dụng để làm việc với tập tin là giao thức

truyền tải tập tin FTP (File Transfer Protocol).
1.3.4.

Quá trình cập nhật chương trình từ xa

C
C
R
UT.L

D

Hình 1.3 Quá trình cập nhật chương trình từ xa


8
 Bước 1: Người phát triển tạo ra chương trình ứng dụng mới
cho thiết bị nhúng.


Bước 2: Đưa tập tin chứa chương trình ứng dụng mới lên
máy chủ quản lý tập tin chương trình (FTP Server)



Bước 3: Trong thiết bị nhúng, định kỳ vi điều khiển gửi
các lệnh AT để Module Internet thực thi, kiểm tra phiên
bản mới của chương trình ứng dụng trên máy chủ.




Bước 4: Module Internet tải tập tin chương trình mới từ
FTP server về cho vi điều khiển



Bước 5: Vi điều khiển thay thế chương trình ứng dụng
đang chạy bằng chương trình ứng dụng mới

C
C
R
UT.L

1.4. Kết luận chƣơng

Cập nhật chương trình từ xa là một tính năng quan trọng cho các

D

thiết bị nhúng có kết nối vào Internet giúp giải quyết được nhiều vấn
đề và gia tăng thêm giá trị của thiết bị. Chính vì vậy, việc nghiên cứu
và đề xuất một thư viện cập nhật chương trình từ xa sẽ mang lại
nhiều đóng góp cho các nhà nghiên cứu và phát triển thiết bị.


9
Chƣơng 2: Nền tảng phần cứng cập nhật chƣơng trình từ xa
2.1. Giới thiệu chƣơng
Chương này sẽ trình bày về nền tảng phần cứng cập nhật

chương trình từ xa bao gồm các nội dung về tổng quan phần cứng
thử nghiệm, tổ chức bộ nhớ của vi điều khiển, cấu trúc chương trình
trong bộ nhớ, vi xử lý, quá trình khởi động của vi điều khiển, và
module kết nối Internet sử dụng cơng nghệ 4G.
2.2. Tổng quan về phần cứng
Mơ hình thiết bị là một bảng mạch bao gồm một vi điều khiển
32 bit của hãng STMicroelectronics sử dụng CPU lõi ARM Cortex –
M, được thiết kế với 512 Kbytes bộ nhớ chương trình (Flash) và 128

C
C
R
UT.L

Kbytes bộ nhớ dữ liệu (SRAM), được tích hợp sẵn ngoại vi thời gian
thực (RTC), và khối ngoại vi tính tốn mã Cyclic Redundancy Check

D

(CRC) để kiểm tra tính tồn vẹn dữ liệu [3]. Sơ đồ khối của vi điều
khiển STM32F411 được trình bày ở hình 2.1. Vi điều khiển giao tiếp
với module truyền nhận dữ liệu không dây EC21 của hãng Quectel
hỗ trợ công nghệ 3G/4G để có thể kết nối vào Internet [4]. Một nút
nhấn cũng được thiết kế kết nối với vi điều khiển để có thể gửi yêu
cầu thực hiện cập nhật chương trình từ xa ngay lập tức mỗi khi nút
được nhấn. Để hiển thị các thông báo, trạng thái làm việc của thiết bị
được thể hiện thông qua một màn hình LCD và các đèn LED trên
bảng mạch. Bên cạnh đó, bảng mạch cũng được thiết kế hỗ trợ kết
nối với máy tính để nạp các chương trình thử nghiệm và thực hiện gỡ
lỗi thông qua cổng Debugger/Programmer. Khối USB-UART được

thiết kế để thiết bị có thể gửi nhật ký hoạt động, trạng thái lên máy
tính để lưu trữ, phục vụ cho việc đánh giá khi thực hiện thử nghiệm
quá trình cập nhật chương trình nhiều lần.


10

Hình 2.1 Sơ đồ khối phần cứng thử nghiệm
2.3. Tổ chức bộ nhớ của vi điều khiển và cấu trúc chƣơng trình
2.3.1.

Tổ chức bộ nhớ chương trình

C
C
R
UT.L

Theo thiết kế của các vi xử lý lõi ARM Cortex M, vùng bộ
nhớ chương trình có độ rộng 32 bit và bắt đầu từ địa chỉ

D

0x0000_0000, tối đa đến địa chỉ 0x1FFF_FFFF, tại địa chỉ
0x0000_0000 sẽ chứa giá trị khởi tạo stack pointer, bảng vector chứa
địa chỉ của các exception handler và phần lớn còn lại của vùng này sẽ
chứa mã máy của chương trình . Tổng cộng, vùng code có kích thước
512 MB.
Các hoạt động với bộ nhớ chương trình: Hoạt động đọc, hoạt
động ghi và hoạt động xoá

2.3.2.

Tổ chức bộ nhớ dữ liệu
Vùng bộ nhớ dữ liệu SRAM hay có thể gọi đơn giản là vùng

RAM, thường nằm ngay sau vùng bộ nhớ chương trình. Tùy thuộc
vào tài nguyên phần cứng và thuật toán thiết kế, việc lưu trữ tạm thời
chương trình mới vào bộ nhớ RAM có thể được phân làm ba loại
sau:


11
- Lƣu trữ một 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.
- Lƣu trữ nhiều phần: Chừa một vùng nhớ RAM để lưu trữ
dữ liệu mỗi khi có gói tin đến. Khi vùng này đầy thì ghi
phần dữ liệu này vào vùng nhớ chương trình của bộ nhớ
Flash và làm trống vùng nhớ RAM để tiếp tục nhận các gói
tin khác.
- Lƣu trữ tồn phần: Lưu trữ tồn bộ chương trình ứng
dụng mới trong RAM và chỉ ghi nó vào bộ nhớ flash khi nó
đã được tải xuống đầy đủ từ máy chủ
2.3.3.

Cấu trúc tập tin chương trình

C
C
R

UT.L

Chương trình ứng dụng sẽ được truyền thành từng chuỗi byte
sau khi nó được chuyển thành định dạng tập tin *.hex hoặc *.bin từ

D

các ngơn ngữ lập trình C/C++. Chuỗi byte này có liên quan tới địa
chỉ bộ nhớ của vi điều khiển.
Tập tin chƣơng ở định dạng Intel HEX: là một tập tin chứa
nội dung chương trình cùng các thơng tin chỉ dẫn với 6 loại HEX
record khác nhau theo định dạng Intel HEX. Mỗi record sẽ bao gồm
nhiều ký tự ASCII biểu diễn các giá trị theo mã hexadecimal. Mỗi
hàng (record) hàng sẽ thường sẽ có 6 trường (field), mỗi trường sẽ có
nhiệm vụ riêng. Mỗi hàng có thể kết thúc bằng kí tự
CR(0x13)/LF(0x0A)/NULL(0x00).
Tập tin chƣơng trình ở định dạng Intel BIN: Tập tin
chương trình ở định dạng BIN là một tập tin chứa nội dung chương
trình có đi .bin. Đây là một dạng tệp tin phi văn bản, được lưu trữ
dưới định dạng mã nhị phân gồm các giá trị 0 và 1, dữ liệu trong tập


12
tin chính là chương trình ứng dụng được lưu một cách liên tục theo
địa chỉ bộ nhớ, không chia thành từng dịng, khơng chứa các ký tự
kết thúc câu, kí tự xuống dịng, khơng chứa địa chỉ, các trường chỉ
dẫn và khơng có giá trị Checksum.
2.3.4.

Cấu trúc chương trình trong bộ nhớ

Để có thêm thêm tính năng OTA cho thiết bị thì khối bộ nhớ

chính của vi điều khiển sẽ được chia thành nhiều vùng khác nhau để
lưu trữ các chương trình như Bootloader tự phát triển; Chương trình
OTA, Chương trình ứng dụng và Các biến liên kết.
2.4. Bộ xử lý trung tâm ARM Cortex – M
Dòng vi xử lý ARM Cortex M là một dòng vi xử lý được thiết
kế tối ưu cho giá thành và năng lượng tiêu thụ của vi điều khiển,

C
C
R
UT.L

được sử dụng trong rất nhiều ứng dụng nhúng khác nhau. Vi xử lý
ARM Cortex-M bao gồm một lõi vi xử lý, và nhiều ngoại vi chuyên

D

dụng xung quanh như NVIC, System Control Block, Flash Patch
Breakpoint, Memory protection, Data watchpoint and trace, Bus
Matrix,…
2.5. Quá trình khởi động của vi điều khiển
Mỗi khi thiết bị được cấp nguồn, hoặc khi người dùng nhấn
nút khởi động lại trên thiết bị hoặc khi chương trình ứng dụng phát
hiện có phiên bản cập nhật mới thì vi điều khiển sẽ thực hiện khởi
động lại. Việc đầu tiên khi vi điều khiển khởi động đó là thanh ghi
Program Counter (PC) sẽ được nạp giá trị 0x0000_0000. Tiếp theo vi
xử lý sẽ khởi tạo Stack Pointer bằng cách đọc giá trị bộ nhớ tại địa
chỉ bộ nhớ chương trình 0x0000_0000 và nạp cho thanh ghi Main

Stack Pointer. Sau đó vi xử lý sẽ đọc giá trị bộ nhớ tại địa chỉ
0x0000_0004 để nạp cho thanh ghi PC. Giá trị đọc được chính là địa


13
chỉ của Reset_Handler. Lúc này PC nhảy tới Reset_Handler.
Reset_Handler có chức năng thực hiện một số khởi tạo và từ
Reset_Handler sẽ gọi hàm main() của chương trình.
2.6. Module truyền nhận dữ liệu 4G
Ngày nay, các thiết bị 4G có mặt ở hầu hết mọi nơi và chi phí
giá thành cũng khơng cao, tính khả dụng rộng rãi như vậy làm cho nó
trở thành lựa chọn ưu tiên trong vai trị kết nối vào Internet của các
thiết bị nhúng. Quectel EC21 là một loại module 4G LTE Cat1 có tốc
độ dữ liệu tối đa là 10Mbps download và upload là 5Mbps, tiết kiệm
năng lượng, phù hợp sử dụng cho các ứng dụng nhúng không yêu
cầu kết nối tốc độ cao. Module này hỗ trợ tương thích ngược với các
mạng UMTS/HSPA+ và GSM/GPRS/EDGE. Vi điều khiển giao tiếp

C
C
R
UT.L

với module này sử dụng giao thức UART thông qua tập lệnh AT
2.7. Kết luận chƣơng

D

Vi xử lý ARM Cortex – M, vi điều khiển STM32 là một trong
những vi xử lý, vi điều khiển được sử dụng phổ biến trong các ứng

dụng nhúng hiện nay. Nền tảng phần cứng phục vụ cho việc nghiên
cứu và thử nghiệm cập nhật chương trình từ xa trong luận văn này
được thiết kế dựa trên Vi điều khiển STM32F411 sử dụng lõi ARM
Cortex –M4.


14
Chƣơng 3: Đề xuất phƣơng pháp và xây dựng thƣ viện cập nhật
chƣơng trình từ xa
3.1. Giới thiệu chƣơng
Chương 3 sẽ đề xuất một phương pháp cập nhật chương trình từ
xa đảm bảo được các tiêu chí quan trọng. Từ đó một thư viện cập
nhật chương trình từ xa sẽ được xây dựng dựa trên các thuật toán nối
thiết bị với máy chủ, tải tập tin, kiểm tra lỗi tập tin, ghi tập tin vào bộ
nhớ, khởi động thiết bị.
3.2. Phƣơng pháp cập nhật chƣơng trình từ xa
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í:

C
C
R
UT.L



Đảm bảo tỉ lệ thực hiện thành cơng cao




Ít tốn kém tài ngun bộ nhớ



Q trình cập nhật chương trình từ xa diễn ra trong thời

D

gian ngắn


Đảm bảo thiết bị vẫn sử dụng được trong các trường
hợp:
o

Mất nguồn trong quá trình cập nhật chương trình từ
xa

o

Phiên bản chương trình mới tồn tại lỗi

o

Lỗi trong quá trình nhận tập tin chương trình mới

o

Mất kết nối Internet trong quá trình cập nhật chương
trình từ xa


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


15
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ị ln duy trì hai phiên bản
chương trình mới nhất.
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

C
C
R
UT.L

pháp lưu trữ dữ liệu tạm thời là lưu trữ tồn phần.

Thư viện chương trình cập nhật từ xa sẽ được phát triển trên

D


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).
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:
Tập tin thư viện
fota_stm32.h

Mô tả
Header của fota_stm32.c, tập tin này cho
phép người dùng hiệu chỉnh các thông số
của tính năng cập nhật chương trình từ xa


16
cho phù hợp với ứng dụng của họ bao gồm
các thông số định danh thiết bị, thông số để
làm việc với FTP Server, cấu hình của thiết
bị và phân vùng bộ nhớ.
Tập tin này chứa các hàm sử dụng trong quá

fota_stm32.c

trình cập nhật chương trình từ xa được sử
dụng cho cả chương trình Bootloader,

chương trình OTA và chương trình ứng
dụng gồm các hàm chức năng để thực hiện
việc nối thiết bị với máy chủ, tải tập tin,
kiểm tra lỗi tập tin, ghi tập tin vào bộ nhớ

C
C
R
UT.L

Flash, Khởi động thiết bị và hàm kiểm tra
phiên bản cập nhật mới.

D

3.3. Thuật tốn nhận, kiểm tra lỗi tập tin chƣơng trình
3.3.1.

Thuật tốn kết nối thiết bị với máy chủ
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ị.
3.3.2.

Thuật toán tải tập tin

Phương án cập nhật chương trình từ xa được lựa chọn là sử

dụng hai phân vùng A và B chứa hai chương trình với phiên bản gần


17
nhất và cập nhật xen kẽ nhau. Trong trường hợp cập nhật thất bại thì
thiết bị sẽ quay về phiên bản gần nhất.
3.3.3.

Thuật toán kiểm tra lỗi tập tin
Đối với tập tin định dạng HEX: Sau khi tải một phần hoặc

tồn bộ tập tin chương trình về lưu trữ tạm thời tại SRAM, từng dòng
dữ liệu sẽ được kiểm tra độ toàn vẹn trước khi được lưu vào bộ nhớ
Flash. Kiểm tra lỗi tập tin về bản chất là kiểm tra trường checksum
của mỗi dòng trong tập tin
Đối với tập tin định dạng BIN: Giá trị CRC được tính tốn
và thêm vào ở cuối tập tin định dạng BIN. Sau khi tập tin được tải về
và ghi vào bộ nhớ chương trình, sử dụng phần cứng tính tốn CRC
được tích hợp sẵn của STM32 để kiểm tra lỗi. Khối phần cứng CRC
được

thiết

kế

C
C
R

UT.L

dựa

trên

CRC-32/MPEG-2,



giá

trị

POLY=0x04c11db7 và Initial_Crc=0xFFFFFFFF
3.3.4.

D

Thuật tốn ghi tập tin vào bộ nhớ

Trước khi ghi chương trình mới vào bộ nhớ Flash cần thực
hiện xóa nội dung chương trình cũ đang có tại tại đây.
3.3.5.

Thuật toán khởi động lại vi điều khiển
ARM cung cấp hàm NVIC_SystemReset() để thực hiện khởi

động lại vi xử lý. Hàm này sẽ được sử dụng tại tại chương trình ứng
dụng khi phát hiện một phiên bản chương trình mới và tại chương

trình OTA khi thực hiện xong quá trình OTA.
3.4. Kết luận chƣơng
Chương 3 đã trình bày các thuật tốn và thư viện cập nhật
chương trình từ xa được xây dựng trên phương pháp đã đề xuất. 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.


18
Chƣơng 4: Kết quả thực hiện và đánh giá
4.1. Giới thiệu chƣơng
Tiêu chí thứ nhất là việc chiếm tài nguyên bộ nhớ khi triển
khai tính năng OTA, tiêu chí thứ hai là tỉ lệ thành công khi thực hiện
OTA, độ tin cậy khi thực hiện OTA, tiêu chí thứ ba là thời gian thực
hiện quá trình OTA.
4.2. Kết quả thực hiện
Kết quả thực hiện đề tài đã tạo ra các sản phẩm sau:
 Thiết kế phần cứng thử nghiệm với Vi điều khiển sử
dụng Vi xử lý ARM Cortex M3 và ARM Cortex M4
 Thiết kế và thử nghiệm thành cơng chương trình
Bootloader, chương trình OTA cho cả tập tin định dạng

C
C
R
UT.L

HEX và tập tin định dạng BIN

 Thư viện các hàm hỗ quá trình cập nhật chương trình từ

xa.

D

Bên cạnh đó một số sản phẩm phụ cũng được tạo ra để phục
vụ cho đề tài như:
 Phần

mềm

hiệu

chỉnh

TAPIT_FTOA_Supporting_Tool_v1.0.exe

Firmware
chạy

trên

máy tính Windows
 Webserver giúp triển khai và quản lý tính năng cập nhật từ
xa cho các thiết bị
4.3. Đánh giá hiệu quả
4.3.1. Về chiếm dụng tài nguyên bộ nhớ
Từ các kết quả thơng báo của trình biên dịch, kết hợp với tập
tin Linker Map (*.map) của từng chương trình gồm chương trình



19
Bootloader, chương trình OTA ta có các thơng tin về chiếm bộ nhớ
của các chương trình như sau:


Đối với bộ nhớ Flash:
o

Chương trình Bootloader tự xây dựng chiếm 10,48
KByte.

o

Chương trình OTA cho tập tin định dạng HEX
chiếm 22.05 KByte.

o

Chương trình OTA cho tập tin định dạng BIN chiếm
22.16KByte



Đối với bộ nhớ RAM
o

Chương trình Bootloader chiếm 1.71 KByte

o


Chương trình OTA chiếm 2.4 KByte và kích cỡ

C
C
R
UT.L

Buffer Download do người dùng tự khai báo tùy tài
nguyên của phần cứng vi điều khiển.

D

Vậy có thể thấy chương trình Bootloader và Chương trình
OTA chiếm dung lượng bộ nhớ tổng cộng một lượng 32.53 KByte
trong bộ nhớ Flash của vi điều khiển cho trường hợp cập nhật
chương trình từ xa sử dụng tập tin định dạng HEX hoặc 32.64 KByte
cho trường hợp cập nhật chương trình từ xa sử dụng tập tin định dạng
BIN
4.3.2

Về độ tin cậy, tỉ lệ cập nhật thành cơng
Sau khi hồn thành thiết kế phần cứng và hồn thành chương

trình thực nghiệm sử dụng thư viện cập nhật chương trình từ xa thì tỉ
lệ cập nhật chương trình đã được kiểm thử với 03 chương trình ứng
dụng với 03 kích cỡ khác nhau là 15KByte, 30KByte và 60KByte.
Mỗi chương trình được biên dịch và tạo thành 1 tập tin dạng Hex và


20

1 tập tin dạng Bin. Mỗi tập tin được thử nghiệm 100 lần và cho kết
quả tỉ lệ cập nhật thành công là 100%.
Hai định dạng phổ biến thường được sử dụng để cập nhật
chương trình từ xa là tập tin định dạng HEX và tập tin định dạng BIN
đều được quan tâm đến vấn đề toàn vẹn dữ liệu.
4.3.3.

Thời gian cập nhật chương trình
Từ các kết quả thử nghiệm với từng tập tin, có thể thấy được

thời gian thực hiện FOTA phụ thuộc nhiều vào thời gian tải tập tin
chương trình. Với cùng một chương trình thì tập tin định dạng BIN
chỉ chứa nội dung chương trình nên kích thước nhỏ thời gian tải
nhanh, tập tin định dạng HEX có chứa thêm các chỉ dẫn nên kích
thước lớn thời gian tải lâu.
Bảng 4.4 Kết quả thời gian thực hiện OTA với tập tin định dạng HEX
và định dạng BIN

C
C
R
UT.L

D

Kích cỡ chương Thời gian FOTA Thời gian FOTA
trình ứng dụng

với tập tin HEX


với tập tin BIN

15KByte

158237974 cycles

85840094 cycles

9.9 giây

5.4 giây

264065064 cycles

119395522 cycles

16.5 giây

7.5 giây

499840662 cycles

184158711 cycles

31.2 giây

11.5 giây

30KByte


60KByte

4.4. Kết luận chƣơng
Đề tài đã được những kết quả cụ thể về phần cứng và phần
mềm, các thử nghiệm đã được thực hiện để đánh giá, kết quả cho


21
thấy được chương trình bootloader và chương trình OTA chiếm ít tài
nguyên bộ nhớ, tỉ lệ thành công là 100% trong 600 lần thử nghiệm,
thời gian thực hiện quá trình cập nhật được đánh giá dựa trên đơn vị
số cycles thực hiện của vi xử lý cũng chỉ ra được tỉ lệ chiếm thời gian
của các hoạt động thành phần trong quá trình OTA.

D

C
C
R
UT.L


22
KẾT LUẬN
Yêu cầu sản phẩm trên thị trường các thiết bị Nhúng có kết nối
Internet đang thay đổi nhanh hơn yêu cầu đối với các sản phẩm
truyền thống. Ngoài ra, mạng 3G/4G được áp dụng rộng rãi vẫn đang
phát triển. Các áp lực về thời gian để tiếp cận thị trường nhanh hơn,
có khả năng ảnh hưởng đến thời gian thử nghiệm của sản phẩm. Vì
những lý do này, việc nâng cấp firmware có thể tăng thêm giá trị

đáng kể cho các sản phẩm bằng cách cho phép các nhà phát triển
nâng cao chức năng sản phẩm theo thời gian và triển khai sửa lỗi sau
khi sản phẩm được triển khai.Với mục tiêu nghiên cứu và đề xuất thư
viện cập nhật chương trình từ xa cho các thiết bị nhúng kết nối

C
C
R
UT.L

Internet, đề tài đã được thực hiện hoàn thiện và có thể rút ra những
kết luận sau:


D

Đề tài đã trình bày được cập nhật chương trình từ xa là một
tính năng quan trọng đang được quan tâm phát triển, mang
lại khả năng thay thế chương trình hiện tại đang chạy trên vi
điều khiển của một hệ thống nhúng bằng một chương trình
mới với những thay đổi, bổ sung các tính năng của thiết bị,
hay cập nhật những thiếu sót về bảo mật chỉ trong thời gian
ngắn mà không cần thao tác trực tiếp lên thiết bị.



Đề tài đã cung cấp được nền tảng cơ sở khoa học kỹ thuật về
cập nhật chương trình từ xa cho các thiết bị nhúng có kết nối
Internet với các yếu tố: Cấu trúc tập tin chương trình, tổ chức
bộ nhớ, giao thức truyền nhận dữ liệu, tính tồn vẹn dữ liệu

và quy trình khởi động thiết bị nhúng.


23


Đề tài đã trình bày về thiết kế của một phần cứng thử
nghiệm, sử dụng dòng vi điều khiển STM32, vi xử lý ARM
Cortex – M được sử dụng phổ biến trên thị trường. Thiết bị
có khả năng kết nối vào Internet sử dụng công nghệ mạng
4G thông qua module EC21 của hãng Quectel.



Đề tài đã đề xuất được phương pháp cập nhật chương trình
từ xa hỗ trợ được nhiều thiết bị nhúng với các lựa chọn khác
nhau về biện pháp tổ chức và bố trí các chương trình trong
bộ nhớ Flash, biện pháp lưu trữ nội dung tập tin chương trình
tạm thời trong bộ nhớ SRAM trước khi ghi vào bộ nhớ
Flash. Đề tài đã có những phân tích đối với từng biện pháp
giúp người phát triển có thể lựa chọn được biện pháp phù

C
C
R
UT.L

hợp tùy theo thiết bị và nhu cầu thực tế của họ.



Đề tài đã trình bày về thiết kế của thư viện cập nhật chương

D

trình từ xa, các thuật toán được áp dụng trong thư viện và
chương trình thực nghiệm dựa trên thư viện xây dựng được.
Các kết quả thực nghiệm trên mơ hình cụ thể đã cho thấy
được thư viện được xây dựng có tỉ lệ cập nhật thành cơng
100%, ít tốn tài ngun bộ nhớ, thời gian thực hiện một quá
trình OTA nhanh và có thể áp dụng vào các dự án thực tế.
Định hướng phát triển tiếp theo của đề tài là tiếp tục nghiên cứu
và bổ sung thêm các tính năng như bảo mật khi truyền tập tin chương
trình qua mơi trường Internet bằng cách tích hợp xác thực server/ xác
thực client TLS/SSL và mã hóa dữ liệu tập tin chương trình
[14][15][16]; nghiên cứu bổ sung các hàm chức năng của thư viện hỗ
trợ cho các hệ thống tiết kiệm năng lượng.


×