Xem thêm

Lập trình C cho hệ thống nhúng (P1- Các kiến thức cơ bản)

Huy Erick
Hệ thống nhúng (Embedded system) đã trở thành thuật ngữ quen thuộc để chỉ những hệ thống tự trị được tích hợp vào một môi trường hoặc hệ thống chính. Chúng là sự kết hợp...

Hệ thống nhúng (Embedded system) đã trở thành thuật ngữ quen thuộc để chỉ những hệ thống tự trị được tích hợp vào một môi trường hoặc hệ thống chính. Chúng là sự kết hợp giữa phần cứng và phần mềm, phục vụ cho những bài toán đặc thù trong nhiều lĩnh vực công nghiệp, tự động hoá điều khiển, quan trắc và truyền tin. Một điểm đặc trưng của hệ thống nhúng là sự ổn định và tính tự động hoá cao.

Lập trình C cho hệ thống nhúng (P1- Các kiến thức cơ bản) Hình ảnh minh hoạ

Các thành phần cơ bản trong hệ thống nhúng bao gồm:

  • ROM: Lưu trữ chương trình và dữ liệu không thay đổi, các hằng số. Trong thời đại hiện nay, EEPROM và FLASH đã thay thế ROM vì khả năng ghi xóa và cập nhật chương trình mới.
  • RAM: Lưu trữ chương trình thực thi và các biến tạm.
  • MCU: Bộ xử lý trung tâm.
  • Các ngoại vi bổ sung như ADC, DAC, các giao tiếp UART, I2C, v.v.

Thông thường, nhà sản xuất sẽ cung cấp các công cụ phát triển phần mềm cho dòng vi điều khiển của họ. Đối với kiến trúc ARM, hai phần mềm nổi tiếng nhất là IAR và KEIL. Các bộ công cụ này bao gồm trình soạn thảo, assembler, compiler và trình giả lập. Ngoài ra, chúng còn hỗ trợ chức năng tải xuống và gỡ lỗi. Quá trình phát triển phần mềm cho hệ thống nhúng sử dụng KEIL như hình dưới.

Lập trình C cho hệ thống nhúng (P1- Các kiến thức cơ bản) Hình ảnh minh hoạ

Ban đầu, người phát triển sử dụng trình soạn thảo để viết mã nguồn (có thể là Assembly, C, c+ +..). Sau đó, assembler hoặc compiler được sử dụng để chuyển đổi mã nguồn thành mã đối tượng mà máy tính có thể hiểu được. Compiler cũng tạo ra các tệp listing thể hiện địa chỉ và mã đối tượng tương ứng với mỗi lệnh máy.

Ngôn ngữ C được sử dụng để phát triển hệ điều hành UNIX bởi Dennis Ritchie vào năm 1971.

3.1 Ưu điểm của ngôn ngữ C

Một trong những ưu điểm lớn nhất của ngôn ngữ C là nó không bị ràng buộc bởi phần cứng hoặc hệ thống cụ thể. Điều này cho phép người phát triển viết chương trình và chạy mà không cần sửa đổi cho từng hệ thống riêng biệt. Việc biên dịch và chạy trên các hệ thống khác nhau phụ thuộc vào trình biên dịch. Ví dụ, chúng ta có thể viết chương trình C và sử dụng trình biên dịch để chạy trên cả Windows và Linux. Cũng có thể gọi C là một ngôn ngữ trung gian (middle-level) vì nó kết hợp giữa ngôn ngữ cao cấp và có khả năng truy cập sâu vào hệ thống như ngôn ngữ thấp cấp (như thông qua con trỏ hoặc các hàm Assembly nhúng vào chương trình). Để tạo ra mã máy hiệu quả, cần thiết kế chương trình tốt và chú ý đến các chi tiết cài đặt nhỏ, đặc biệt là trong hệ thống nhúng.

3.2 Nhược điểm của ngôn ngữ C

  • Code dài và không hiệu quả so với Assembly.
  • Không hỗ trợ trực tiếp kiểu ngăn xếp (stack).
  • Khó viết các hàm xử lý ngắt.

3.3 Một số lưu ý khi phát triển phần mềm nhúng

Đặc điểm của hệ thống nhúng:

  • Hạn chế về ROM và RAM.
  • lập trình phụ thuộc vào phần cứng.
  • Đáp ứng chính xác về thời gian (hàm xử lý ngắt, tác vụ...).
  • Nhiều kiểu con trỏ (far/rom/ui/paged/...).
  • Một số từ khóa và mã thông báo đặc biệt (@, interrupt, tiny, v.v.)

Để phát triển tốt phần mềm nhúng bằng ngôn ngữ C, cần nắm vững:

  • Thiết kế kiến trúc phần mềm hợp lý.
  • Sử dụng thành thạo các công cụ và gỡ lỗi.
  • Hỗ trợ các kiểu dữ liệu cơ bản.
  • Sử dụng thư viện chuẩn.
  • Phân biệt rõ giữa mã nguồn đơn giản và mã nguồn hiệu quả.

Thông tin tham khảo: Wikipedia và các trang web khác.

1