intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Lập trình hệ nhúng: Chương 2 - Phạm Ngọc Hưng

Chia sẻ: ảnh ảo | Ngày: | Loại File: PDF | Số trang:23

106
lượt xem
10
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng "Lập trình hệ nhúng - Chương 2: Lập trình vào ra cơ bản" cung cấp các kiến thức giúp sinh viên có thể nắm được nguyên tắc lập trình giao tiếp vào ra cơ bản trên hệ điều hành Linux nhúng, lập trình giao tiếp thiết bị (ghép nối GPIO) với driver đã có (led, button), biết cách lập trình giao tiếp GPIO mở rộng dựa trên giao diện sysfs (gpiolib). Mời các bạn cùng tham khảo nội dung chi tiết.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình hệ nhúng: Chương 2 - Phạm Ngọc Hưng

  1. Chương 2 Lập trình vào ra cơ bản Lập trình nhúng ARM-Linux 57
  2. Mục tiêu chương 2  Sau khi kết thúc chương n{y, sinh viên có thể • Nắm được nguyên tắc lập trình giao tiếp v{o ra cơ bản trên hệ điều h{nh Linux nhúng • Lập trình giao tiếp thiết bị (ghép nối GPIO) với driver đ~ có (led, button) • Biết c|ch lập trình giao tiếp GPIO mở rộng dựa trên giao diện sysfs (gpiolib) Lập trình nhúng ARM-Linux 58
  3. Nội dung bài học 2.1. Cơ chế lập trình giao tiếp thiết bị 2.2. Lập trình điều khiển led đơn 2.3. Lập trình giao tiếp nút bấm 2.4. Lập trình giao tiếp GPIO mở rộng Lập trình nhúng ARM-Linux 59
  4. 2.1. Cơ chế lập trình giao tiếp thiết bị  Device files, Device number  Kiểm tra danh s|ch device driver, thiết bị  Cơ chế giao tiếp Lập trình nhúng ARM-Linux 60
  5. Mô hình giao tiếp ứng dụng – thiết bị Phần mềm ứng dụng User Space Các hàm giao tiếp chuẩn: •open Device files •close •read •write •ioctl Device Drivers •… Kernel Space (Toàn quyền truy xuất trực tiếp tài Phần cứng nguyên phần cứng của hệ thống) Lập trình nhúng ARM-Linux 61
  6. Device files, Device number  Device files: ls –l /dev • Device file không phải l{ file thông thường, không phải l{ một vùng dữ liệu trên hệ thống file • Qu| trình đọc ghi device file Giao tiếp với device driver Đọc, ghi phần cứng của thiết bị  Ph}n loại device files • Character device: thiết bị phần cứng đọc, ghi một chuỗi c|c byte dữ liệu • Block device: thiết bị phần cứng đọc, ghi một khối dữ liệu Lập trình nhúng ARM-Linux 62
  7. Device files, Device number  Device number: mỗi thiết bị được x|c định bởi hai gi| trị • Major device number: x|c định thiết bị n{y sử dụng drvier nào • Minor device number: ph}n biệt giữa c|c thiết bị kh|c nhau cùng sử dụng chung một device driver Lập trình nhúng ARM-Linux 63
  8. Kiểm tra danh sách thiết bị  Kiểm tra danh s|ch c|c thiết bị • Gõ lệnh ls –al /dev  Giải thích thông tin Loại thiết bị: char device hay block device Tài khoản người dùng Tên thiết bị Major và minor number Mount ponint Lập trình nhúng ARM-Linux 64
  9. Kiểm tra danh sách thiết bị  Kiểm tra danh s|ch c|c nhóm thiết bị • Gõ lệnh cat /proc/devices Lập trình nhúng ARM-Linux 65
  10. Cơ chế lập trình giao tiếp thiết bị  Cơ chế lập trình • Sử dụng c|c h{m v{o ra file open close read write • Sử dụng h{m điều khiển v{o ra: ioctl Lập trình nhúng ARM-Linux 66
  11. 2.2. Lập trình điều khiển led đơn  Sử dụng led driver đ~ có  4 led đơn, ghép nối qua GPB5,6,7,8  Điều khiển led on/off, tạo hiệu ứng: nhấp nh|y, chạy đuổi, …  Cần sử dụng h{m trễ (delay): sleep, usleep (thư viện sys/time.h) Lập trình nhúng ARM-Linux 67
  12. Mô hình giao tiếp điều khiển led Phần mềm ứng dụng leds.c Hàm giao tiếp: •open •close •ioctl Device files /dev/leds Device Drivers Mini2440_leds.c Phần cứng GPIO Port Lập trình nhúng ARM-Linux 68
  13. Lập trình điều khiển led đơn  fd=open(“/dev/leds”,0) • fd: file id • /dev/leds: device file • 0: WRITE_ONLY  ioctl(fd, on, led_no) • Ioctl: IO control • Điều khiển bật/tắt led đơn có số hiệu led_no  Driver cho led đơn: linux-2.6.32.2/drivers/char/mini2440_leds.c Lập trình nhúng ARM-Linux 69
  14. Mã nguồn minh họa điều khiển led đơn Lập trình nhúng ARM-Linux 70
  15. 2.3. Lập trình giao tiếp nút bấm  Giao tiếp qua driver đ~ có Lập trình nhúng ARM-Linux 71
  16. Mô hình giao tiếp điều khiển nút bấm Phần mềm ứng dụng Buttons.c Hàm giao tiếp: •open •close •read Device files /dev/buttons Device Drivers Mini2440_buttons.c Phần cứng GPIO Port Lập trình nhúng ARM-Linux 72
  17. Lập trình ghép nối nút bấm  buttons_fd=open(“/dev/buttons”,0) • buttons_fd: file id • /dev/buttons: device file  read(buttons_fd,current_buttons,sizeof(curren t_buttons) • Đọc trạng th|i c|c nút bấm  close(buttons_fd): đóng file  M~ nguồn driver cho nút bấm linux- 2.6.32.2/drivers/char/mini2440_buttons.c Lập trình nhúng ARM-Linux 73
  18. Mã nguồn chương trình đọc nút bấm Lập trình nhúng ARM-Linux 74
  19. 2.4. Lập trình giao tiếp GPIO mở rộng  2 c|ch sử dụng giao tiếp gpio (từ Linux user space) • Cách 1: Viết gpio driver (trên không gian nh}n hệ điều h{nh, kernel space), giao tiếp qua driver n{y. (Ví dụ với led, button đ~ l{m) • Cách 2: giao tiếp c|c ch}n gpio trực tiếp từ không gian người dùng (user space) dựa trên API thư viện gpiolib cung cấp. Linux cung cấp giao diện GPIO sysfs cho phép thao t|c với bất kỳ ch}n GPIO từ userspace. Lập trình nhúng ARM-Linux 75
  20. Lập trình giao tiếp GPIO mở rộng  Tất cả c|c giao diện điều khiển GPIO thông qua sysfs nằm trong thư mục /sys/class/gpio  Kiểm tra bằng lệnh: ls /sys/class/gpio Lập trình nhúng ARM-Linux 76
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
5=>2