Bài giảng Lập trình hệ nhúng - Chương 2 Lập trình vào ra cơ bản

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.

pdf23 trang | Chia sẻ: truongthinh92 | Lượt xem: 1738 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Lập trình hệ nhúng - Chương 2 Lập trình vào ra cơ bản, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Lập trình nhúng ARM-Linux Chương 2 Lập trình vào ra cơ bản 57 Lập trình nhúng ARM-Linux 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) 58 Lập trình nhúng ARM-Linux 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 59 Lập trình nhúng ARM-Linux 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 60 Lập trình nhúng ARM-Linux Mô hình giao tiếp ứng dụng – thiết bị Phần mềm ứng dụng Device files Device Drivers Phần cứng User Space Kernel Space (Toàn quyền truy xuất trực tiếp tài nguyên phần cứng của hệ thống) Các hàm giao tiếp chuẩn: •open •close •read •write •ioctl • 61 Lập trình nhúng ARM-Linux 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 62 Lập trình nhúng ARM-Linux 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 63 Lập trình nhúng ARM-Linux 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 64 Lập trình nhúng ARM-Linux 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 65 Lập trình nhúng ARM-Linux 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 66 Lập trình nhúng ARM-Linux 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) 67 Lập trình nhúng ARM-Linux Mô hình giao tiếp điều khiển led Phần mềm ứng dụng Device files Device Drivers Phần cứng leds.c /dev/leds Mini2440_leds.c GPIO Port Hàm giao tiếp: •open •close •ioctl 68 Lập trình nhúng ARM-Linux 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 69 Lập trình nhúng ARM-Linux Mã nguồn minh họa điều khiển led đơn 70 Lập trình nhúng ARM-Linux 2.3. Lập trình giao tiếp nút bấm  Giao tiếp qua driver đ~ có 71 Lập trình nhúng ARM-Linux Mô hình giao tiếp điều khiển nút bấm Phần mềm ứng dụng Device files Device Drivers Phần cứng Buttons.c /dev/buttons Mini2440_buttons.c GPIO Port Hàm giao tiếp: •open •close •read 72 Lập trình nhúng ARM-Linux 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 73 Lập trình nhúng ARM-Linux Mã nguồn chương trình đọc nút bấm 74 Lập trình nhúng ARM-Linux 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. 75 Lập trình nhúng ARM-Linux 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 76 Lập trình nhúng ARM-Linux Lập trình giao tiếp GPIO mở rộng  Giao diện n{y cung cấp c|c files điều khiển sau đ}y: 77 Lập trình nhúng ARM-Linux Lập trình giao tiếp GPIO mở rộng  Ví dụ minh họa Chi tiết xem b{i viết: https://sites.google.com/site/embedded247/ddcour se/giao-tiep-gpio-tu-userspace-1 Cấu hình chân GPF5 (micro2440) output, và xuất giá trị 0 ra chân này echo 165 > /sys/class/gpio/export echo “out” > /sys/class/gpio/gpio165/direction echo 0 > /sys/class/gpio/gpio165/value 78 Lập trình nhúng ARM-Linux Thảo luận 79

Các file đính kèm theo tài liệu này:

  • pdflap_trinh_he_nhung_esprogramming_c2_1636.pdf
Tài liệu liên quan