🌱 Bootloader: Hiểu Rõ Endianness - Little Endian và Big Endian Trong Lập Trình Nhúng
Trong quá trình làm việc với bootloader và nạp firmware vào vi điều khiển, một thuật ngữ quan trọng mà bạn cần hiểu là Endianness. Vậy Endianness là gì và tại sao lại quan trọng khi làm việc với bootloader? Hãy cùng tìm hiểu trong bài viết dưới đây!
👉 1. Endianness là gì?
Endianness liên quan đến cách các byte dữ liệu được sắp xếp trong bộ nhớ. Việc hiểu Endianness rất quan trọng khi bạn nạp dữ liệu vào vi điều khiển hoặc bootloader, vì nó quyết định cách mà các byte được đọc và ghi trong bộ nhớ. Trong bài viết này, chúng ta sẽ đi sâu vào hai kiểu Endianness phổ biến: Little Endian và Big Endian.
👉 2. Sự khác biệt giữa Big Endian và Little Endian
- Big Endian: Các byte có trọng số cao nhất (MSB) được lưu trữ trước trong bộ nhớ, nghĩa là byte đầu tiên sẽ là byte có giá trị lớn nhất.
- Little Endian: Ngược lại, Little Endian lưu trữ byte có trọng số thấp nhất (LSB) trước. Điều này có nghĩa là byte đầu tiên trong bộ nhớ là byte có giá trị nhỏ nhất.
👉 3. Tại sao Endianness lại quan trọng trong Bootloader?
Khi bạn nạp firmware vào bộ nhớ của vi điều khiển thông qua bootloader, việc sắp xếp các byte dữ liệu chính xác là vô cùng quan trọng. Nếu bộ nhớ không được sắp xếp đúng theo tiêu chuẩn Endianness, vi điều khiển có thể không thể đọc hoặc thực thi chính xác mã lệnh từ firmware.
👉 4. Cách sắp xếp byte trong Big Endian và Little Endian
Big Endian:
Được sử dụng trong các bộ vi xử lý như Motorola 68K, PowerPC và SPARK. Cách sắp xếp này thuận tiện khi bạn cần chuyển đổi giữa hệ thập phân và nhị phân, vì Big Endian sắp xếp các byte theo thứ tự giống như cách con người đọc chữ (từ trái sang phải).
Little Endian:
Thường được sử dụng trong các dòng chip của Intel và nhiều vi điều khiển như STM32. Little Endian có lợi thế khi thực hiện các phép toán, vì các phép toán thường được thực hiện từ byte LSB trước.
👉 5. Lợi ích của việc sử dụng Little Endian và Big Endian
Lợi ích của Big Endian:
- Dễ dàng chuyển đổi giữa các dạng số thập phân và nhị phân.
- Sử dụng trong các giao thức mạng, nơi sự rõ ràng và chính xác trong sắp xếp byte là rất quan trọng.
- Với đặc điểm trên, Big-Endian thường được sử dụng trong các bài toán về giao thức mạng.
Lợi ích của Little Endian:
- Dễ dàng thực hiện phép toán với các byte LSB.
- Phù hợp với các hệ thống máy tính hiện đại như Intel và các Vi điều khiển STM32.
- Little Endian thường được sử dụng rộng rãi hơn trong các hệ thống hiện nay.
👉 6. Kiểm tra Endianness trên Vi Điều Khiển và Máy Tính
Bạn có thể kiểm tra hệ thống của mình sử dụng Big Endian hay Little Endian bằng cách sử dụng đoạn mã sau:
Việc chuyển đổi giữa 2 kiểu sắp xếp này cũng khá đơn giản, bạn có thể tham khảo trên Internet với từ khóa "Convert Little Endian to Big Endian"...