Lập trình hệ nhúng - Chương 5: Lập trình device driver

pdf 12 trang vanle 2620
Bạn đang xem tài liệu "Lập trình hệ nhúng - Chương 5: Lập trình device driver", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdflap_trinh_he_nhung_chuong_5_lap_trinh_device_driver.pdf

Nội dung text: Lập trình hệ nhúng - Chương 5: Lập trình device driver

  1. Chương 5 Lập trình device driver Lập trình nhúng ARM-Linux 150
  2. Nội dung 5.1. Giới thiệu về Kernel Module 5.2. Cơ chế x}y dựng Device Driver 5.3. Tìm hiểu, tùy chỉnh một số driver đ~ có 5.4. X}y dựng usb device driver Lập trình nhúng ARM-Linux 151
  3. 5.1. Kernel Module . Hoạt động trên Kernel Space, có thể truy xuất tới c|c t{i nguyên của hệ thống . Kernel Module cho phép thêm mới c|c module một c|ch linh hoạt, tr|nh việc phải biên dịch lại nh}n hệ điều h{nh . Kernel Module l{ cơ chế hữu hiệu để ph|t triển c|c device driver . Xem danh s|ch c|c module đang chạy: lsmod Lập trình nhúng ARM-Linux 152
  4. Kernel Module . C|c bước để thêm một kernel module v{o hệ thống • Viết m~ nguồn: chỉ sử dụng c|c thư viện được cung cấp bởi kernel, không sử dụng được c|c thư viện bên ngoài • Biên dịch m~ nguồn module • C{i đặt module: dùng lệnh insmod Tên_Module.ko • Gỡ module: dùng lệnh rmmod Tên_Module • Xem c|c thông tin log: sử dụng System Log Viewer Lập trình nhúng ARM-Linux 153
  5. Mã nguồn kernel Module Lập trình nhúng ARM-Linux 154
  6. Kernel Module Makefile obj-m += hello.o all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules clean: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean Lập trình nhúng ARM-Linux 155
  7. Liên kết Kernel Module Lập trình nhúng ARM-Linux 156
  8. 5.2. Device Driver . Thêm c|c device driver theo cơ chế sử dụng Kernel Module . C|c thao t|c thêm driver v{o hệ thống • Viết m~ nguồn (cấu trúc tương tự kernel Module). Đăng ký Major ID • Biên dịch m~ nguồn • C{i đặt sử dụng lệnh insmod • Sử dụng lệnh mknod để tạo device file trong /dev mknod [options] NAME Type [Major Minor] Lập trình nhúng ARM-Linux 157
  9. Ví dụ: Hello Driver Lập trình nhúng ARM-Linux 158
  10. Demo Lập trình nhúng ARM-Linux 159
  11. Ví dụ . Ví dụ 1: Chỉnh sửa driver sẵn có • Chỉnh sửa driver điều khiển led, bổ sung thêm hàm write để điều khiển trực tiếp tất cả c|c led đơn trên KIT . Ví dụ 2: Tạo driver mới theo cơ chế kernel module Lập trình nhúng ARM-Linux 160
  12. Thảo luận Lập trình nhúng ARM-Linux 161