🌱 Bootloader - File SREC và Ứng Dụng Trong Hệ Thống Nhúng
File SREC (Motorola S-record) là một định dạng tệp được sử dụng để lưu trữ dữ liệu nhị phân cho các chương trình hoặc mã máy trong hệ thống nhúng. Định dạng này rất hữu ích trong việc nạp chương trình vào bộ nhớ vi điều khiển tương tự như file Intel HEX, đặc biệt là trong môi trường phát triển phần mềm nhúng. Bài viết này sẽ cung cấp một cái nhìn tổng quan về File SREC, cấu trúc của nó và ứng dụng trong các hệ thống nhúng.
➤ Tìm hiểu thêm về hệ thống nhúng
Table of Contents
- File SREC Là Gì?
- Cấu Trúc của File SREC
- Các Loại SREC Record Type và Công Dụng
- Ứng Dụng Của File SREC Trong Hệ Thống Nhúng
- Kết Luận
1. File SREC Là Gì?
File SREC là một định dạng tệp văn bản, trong đó mỗi dòng đại diện cho một đoạn mã máy hoặc dữ liệu được nạp vào bộ nhớ. Định dạng này thường được sử dụng trong các hệ thống nhúng để lưu trữ và tải mã vào bộ nhớ vi điều khiển hoặc bộ nhớ flash.
2. Cấu Trúc của File SREC
Cấu trúc của file SREC bao gồm nhiều dòng, mỗi dòng bắt đầu bằng một ký tự đặc biệt như S0
, S1
, hoặc S9
theo sau bởi các dữ liệu mã hóa. Các dòng này chứa thông tin như địa chỉ bộ nhớ, dữ liệu mã máy và checksum.
Ví dụ về file SREC:
Ví dụ trên cho thấy ba dòng trong file SREC. Trong đó:
S1
: Loại dữ liệu (mã máy) (S1 chỉ Data với địa chỉ 16 bit).13
: Độ dài của dòng dữ liệu (Bao gồm Address + Data + Checksum) (0x13 = 19 bytes)7AF0
: Địa chỉ bộ nhớ đích (0x7AF0).61
: Checksum.
Cách tính checksum trong SREC
Checksum trong SREC là phương pháp đảm bảo tính toàn vẹn dữ liệu trên một line của SREC file, mục tiêu đơn giản là tạo ra một mã kiểm tra tổng các byte dữ liệu trên một line.
- Tính toán tổng các byte trên một line bao gồm ByteCount + các byte Address + các byte Data
0x13 + 0x7A + 0xF0 + 0x0A + 0x0A + 0x0D + 0x00 + ... + 0x00 = 0x019E - Chỉ dữ lại byte thấp của kết quả tổng trên: bỏ đi 0x01, giữ lại 0x9E
- Tính toán theo mã Bù một của giá trị tổng trên, đơn giản là lấy 0xFF trừ đi giá trị trên:
Kết quả là 0xFF - 0x9E = 0x61
3. Các Loại SREC Record Type và Công Dụng
File SREC sử dụng nhiều loại record khác nhau để mô tả các loại dữ liệu khác nhau, mỗi loại có một công dụng và ứng dụng riêng biệt trong quá trình nạp mã vào hệ thống nhúng. Dưới đây là các loại SREC record phổ biến:
S0: Header Record
Record loại S0 thường được sử dụng ở đầu file SREC và chứa thông tin về tên tệp hoặc thông tin xác định đặc điểm của file. Nó không chứa dữ liệu chương trình thực tế, nhưng có thể chứa các thông tin nhận dạng hệ thống nhúng hoặc thông báo về phần mềm nạp.
S0 18 000000 00 0000000000000000 99
S1: Data Record (Dữ liệu chương trình)
Đây là record quan trọng nhất trong file SREC, được sử dụng để lưu trữ mã máy hoặc dữ liệu cần nạp vào bộ nhớ. Địa chỉ bộ nhớ của mã máy được chỉ định trong trường này là 16-bit (tức là trường Address sẽ gồm 4 ký tự), và nó sẽ được nạp vào bộ nhớ khi chương trình khởi chạy.
S1 14 0000 00 0000000000000000 1F
S2 và S3: Extended Address Records
Khi bộ nhớ hệ thống yêu cầu địa chỉ dài hơn 16 bit (ví dụ: bộ nhớ lớn hơn 64KB), các record loại S2 và S3 được sử dụng để cung cấp thông tin về địa chỉ bộ nhớ mở rộng. S2 hỗ trợ địa chỉ 24-bit, và S3 hỗ trợ địa chỉ 32-bit.
S2 16 000000 00 0000000000000000 F3 S3 18 00000000 00 0000000000000000 72
S7 S8 S9: End of File Record
Record loại S7 S8 S9 được sử dụng để đánh dấu sự kết thúc của file SREC. Nó giúp chương trình nạp mã xác định rằng không còn dữ liệu để xử lý và có thể dừng quá trình nạp mã. Lần lượt S7-8-9 sẽ dùng để đánh dấu kết thúc cho S3-2-1.
S9 02 0000 00
Một số định dạng file SREC:
- S19-style > 16-bit address records
- S0
- S1 (one or more records)
- S5 (optional record)
- S9
- S28-style > 24-bit address records
- S0
- S2 (one or more records)
- S5 (optional record)
- S8
- S37-style > 32-bit address records
- S0
- S3 (one or more records)
- S5 (optional record)
- S7
4. Ứng Dụng Của File SREC Trong Hệ Thống Nhúng
File SREC được sử dụng rộng rãi trong các hệ thống nhúng, đặc biệt là trong việc nạp mã vào bộ nhớ vi điều khiển từ máy tính hoặc thiết bị phát triển. Các ứng dụng cụ thể bao gồm:
- Nạp chương trình vào vi điều khiển trong các hệ thống nhúng (Sử dụng trong Bootloader và FOTA).
- Sử dụng trong quá trình debug và phát triển phần mềm nhúng.
- Lưu trữ dữ liệu mã máy cho các ứng dụng tự động hóa.
5. Kết Luận
File SREC là một công cụ hữu ích trong việc lưu trữ và nạp mã máy vào bộ nhớ trong hệ thống nhúng. Việc hiểu rõ cấu trúc và ứng dụng của các loại SREC record giúp các kỹ sư phần mềm và kỹ thuật viên hệ thống nhúng tối ưu hóa quy trình phát triển và nạp chương trình, đặc biệt khi làm việc với các hệ thống có bộ nhớ lớn hoặc yêu cầu địa chỉ mở rộng.
>>>>>> Follow ngay <<<<<<<
Để nhận được những bài học miễn phí mới nhất nhé 😊
Chúc các bạn học tập tốt 😊