Tích hợp gói driver điều khiển ngoại vi

Một phần của tài liệu Thiết kế hệ thống hiển thị video trên bảng LED đa sắc – hỗ trợ Flash USB, thẻ nhớ SD và giao tiếp Ethernet (Trang 57 - 60)

1. Nội dung thiết kế tốt nghiệp:

3.4.4 Tích hợp gói driver điều khiển ngoại vi

Chúng ta sử dụng gói driver cho các thiết bị ngoại vi đơn giản như LED, button, switch, LCD của tác giả Philipp Lutzz.

Quá trình tích hợp gói driver điều khiển ngoại vi gồm các bước sau:

 Sau khi chúng ta viết driver cho các thiết bị ngoại vi xong thì đặt tất cả vào một thư mục, chẳng hạn /linux-2.6/driver/de2_pio.

 Chúng ta tạo file Kconfig (để cung cấp tùy chọn cho người thiết kế khi config hệ thống) như trong gói driver. [6]

 Để hướng dẫn trình biên dịch tích hợp các module vào kernel, chúng ta tạo Makefile trong thư mục de2_pio.

58

obj- := misc.o # Dummy rule to force built-in.o to be made obj-$(CONFIG_DE2_LEDS) += de2_leds.o

obj-$(CONFIG_DE2_SWITCHES) += de2_switches.o obj-$(CONFIG_DE2_SEG7) += de2_seg7.o obj-$(CONFIG_DE2_BUTTONS) += de2_buttons.o obj-$(CONFIG_DE2_LCD16207) += de2_lcd_16207.o

 Để hướng dẫn trình biên dịch thêm thư mục de2_pio vừa tạo vào danh sách cần biên dịch, ta phải thêm dòng sau vào file Kconfig của thư mục cha (parent folder) /linux-2.6/driver

source "drivers/de2_pio/Kconfig"

 Tương tự chúng ta cần thêm dòng sau vào Makefile của thư mục driver

obj-y += de2_pio/

Như vậy qua 5 bước trên, ta có thể xây dựng và tích hợp vào kernel các driver cần thiết để điều khiển ngoại vi. Ngoài ra, ta còn phải tạo các node để mount device vào hệ thống bằng cách thêm vào file uClinux-dist/vendors/Altera/nios2/romfs_list dòng: nod /dev/leds_red 666 0 0 c 240 0 nod /dev/leds_green 666 0 0 c 241 0 nod /dev/switch 666 0 0 c 242 0 nod /dev/seg7 666 0 0 c 243 0 nod /dev/buttons 666 0 0 c 244 0 nod /dev/lcd16207 666 0 0 c 250 0

Các dòng trên sẽ tạo ra các mount point tương ứng với các driver (c là character device, 240 là major number, 0 là minor number).Gói driver vừa thêm vào sẽ hiển thị trong menuconfig như mô tả trên Hình 3.12.

59

Hình 3.12 Cách lựa chọn biên dịch gói các ngoại vi

Sau khi đã biên dịch, nạp và khởi động thành công, chúng ta có thể kiểm tra hoạt động của các driver bằng lệnh echo và cat trong uClinux:

echo 255 > /dev/leds_red echo 255 > /dev/leds_green

Giá trị 255 =11111111 (8 led được kích hoạt sáng). Để đọc giá trị switch và button, ta sử dụng lệnh:

cat /dev/switch cat /dev/buttons

Trong gói driver của tác giả Philipp Lutzz cũng như trong hệ điều hành uClinux, driver cho LCD bị lỗi, chúng ta sử dụng file lcd_16207.c và lcd_16207.h từ tài liệu tham khảo [21]. Ta đưa 2 file trên vào thư mục nios2-linux/linux-2.6/drivers/char Để tích hợp LCD vào hệ thống, ta lựa chọn trong menuconfig

Device Drivers ---> Character devices, check Nios LCD 16207 device support.

Sau đó make lại kernel, nạp file zImage xuống KIT và khởi động. LCD hiển thị chuỗi khởi tạo “Hello !”

Để hiển thị một chuổi lên LCD, ta thực thi lệnh:

60

Một phần của tài liệu Thiết kế hệ thống hiển thị video trên bảng LED đa sắc – hỗ trợ Flash USB, thẻ nhớ SD và giao tiếp Ethernet (Trang 57 - 60)

Tải bản đầy đủ (PDF)

(118 trang)