3. Thiết kế giao thức truyền nhận giữa thiết bị và server
3.4 Bản tin update firmware
Bản tin update firmware phục vụ cho quá trình nâng cấp firmware của thiết bị. Nội dung bản tin bao gồm các trường sau :
Bản tin gửi từ server :
Trường Loại Firmware PacketID Dữ liệu firmware Độ dài (Byte) 1 2 1024
Loại Firmware : Mô tả loại firmware cần update, Bootloader : 0, Firmware
chính : 1.
PacketID : Firmware gửi từ server xuống thiết bị được chia thành nhiều packet,
server gửi firmware xuống thiết bị cần chỉ định rõ packet đang gửi là packet thứ bao nhiêu, dựa vào đó, thiết bị sẽ tính tốn vị trí lưu firmware và gửi xác nhận
tới server. Khi PacketID = 0xFFFF có nghĩa là server đã gửi đầy đủ firmware
xuống thiết bị.
Dữ liệu firmware : Dữ liệu của firmware gửi xuống thiết bị.
Khi nhận được bản tin update firmware, thiết bị sẽ phản hồi lại server để thông báo đã lưu thành công packet này vào bộ nhớ hay chưa, nếu sau 30s mà không nhận được phản hồi từ thiết bị, hoặc thiết bị phản hồi không lưu packet thành công, server sẽ gửi lại packet này.
Nội dung bản tin phản hồi từ thiết bị lên server có dạng như sau :
Trường PacketID Trạng thái lưu packet
54
Độ dài
(Byte) 2 1
PacketID : ID của packet vừa nhận được.
Trạng thái lưu packet :
0 : Lưu thất bại. 1 : Lưu thành công.
Lưu dữ liệu firmware trong flash
Trong q trình update firmware, tất cả các thơng tin về trạng thái update sẽ được lưu lại trong flash, như :
- Lượng dữ liệu đã truyền từ server xuống thiết bị (integer 16 bit) - Có firmware mới cần update (boolean)
- Loại hình update : Bootloader hay firmware chính (boolean).
Q trình gửi dữ liệu firmware
Firmware gửi xuống thiết bị được chia thành nhiều packet, mỗi packet gửi xuống thiết bị đều phải được xác nhận : thiết bị đã ghi thành công hay chưa ? Nếu thiết bị phản hồi chưa ghi thành công vào flash hoặc do lỗi lớp mạng, thiết bị khơng phản hồi, server sẽ gửi lại gói firmware trước đó.
Trong trường hợp thiết bị đang được update firmware mà khơng kết nối được với server, tồn bộ trạng thái về quá trình update firmware vẫn được lưu trong bộ nhớ, khi thiết bị kết nối lại với server, thiết bị sẽ kiểm tra các trạng thái này và quá trình update firmware lại tiếp tục diễn ra, không phải update lại từ đầu.
55
CHƯƠNG IV KẾT LUẬN