🌱 Bootloader: Hiểu Rõ Endianness - Little Endian và Big Endian Trong Lập Trình Nhúng

🌱 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 EndianBig 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.
Little Endian vs Big Endian
Little Endian vs Big Endian

👉 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).

Big Endian
Big Endian

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.

Little Endian
Little Endian

👉 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:

Kiểm tra tính Endianness
Kiểm tra tính Endianness

    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"...

7. Video về Endianness

Nguyễn Văn Nghĩa

Mình là một người thích học hỏi và chia sẻ các kiến thức về Nhúng IOT.

Đăng nhận xét

Mới hơn Cũ hơn