Chương trình driver và application:

Một phần của tài liệu document (Trang 52 - 55)

1. Chương trình driver:Chương trình driver mang tên helloworld_dev.c(Mã lệnh và giải thích chương trình driver chứa trong CD đính kèm) (Mã lệnh và giải thích chương trình driver chứa trong CD đính kèm)

2. Chương trình application: Chương trình application mang tên helloworld_app.c helloworld_app.c

(Mã lệnh và giải thích chương trình application chứa trong CD đính kèm)

3. Thực thi chương trình:

Các bước biên dịch và kết quả thực thi dự án chứa trong CD đính kèm

IV. Tổng kết:

Như vậy chúng ta đã hồn thành cơng việc viết hồn chỉnh một driver đơn giản dựa vào các bước mẫu trong bài học trước. Các bạn cũng đã hiểu nguyên lý hoạt động của hàm maincó tham số, cách lựa chọn tham số hoạt động trong từng trường hợp cụ thể theo yêu cầu.

Với những thao tác trên, các bạn có thể tự mình viết những dirverđơn giản trong xử lý tính tốn, xuất nhập thơng báo, ... Thế nhưng, trong thực tế, driver không phải chỉ dùng trong việc truy xuất những ký tự thơng báo. Nhiệm vụ chính của nó là điều khiển các thiết bị phần cứng thông qua các hàm giao tiếp với các cổng vào ra, truy xuất thanh

ghi lệnh, dữ liệu, ...của thiết bị, thu thập thông tin lưu vào vùng nhớ đệm trong driverchờ chương trình trong user truy xuất. Để có thể giao tiếp với các thiết bị phần cứng thông qua các cổng vào ra, trong bài sau chúng ta sẽ nghiên cứu các hàm giao tiếp gpio do linux hỗ trợ sẵn.

BÀI 7

CÁC HÀM HỖ TRỢ GPIOI. Tổng quan về GPIO: I. Tổng quan về GPIO:

GPIO, viết tắt của cụm từ General Purpose Input/Output, là một thư viện phần mềm

điều khiển các cổng vào ra tích hợp trên vi điều khiển hay các ngoại vi IO liên kết với vi điều khiển đó. Hầu hết các vi điều khiển đều hỗ trợ thư viện này, giúp cho việc lập trình các cổng vào ra trở nên thuận tiện hơn. Các tập lệnh vào ra và điều khiển, cách quy định số chân, ... hầu hết tương tự nhau so với các loại vi khiển khác nhau. Điều này làm tăng tính linh hoạt, giảm thời gian xây dựng hệ thống.

Theo như quy định chuẩn, mỗi một chân IO trên vi điều khiển sẽ tương ứng với một số GPIO của thư viện này. Số GPIO được quy định như sau: Đối với vi điều khiển ARM9260, số cổng vào ra là 3x32 cổng, tương ứng với 3 ports, đó là các Port A, Port B, và Port C. Mỗi chân quy định trong GPIO theo quy luật sau:

BASEx32+PIN;

 Trong đó BASE là số cơ sở của Port. Port A có cơ sở là 1, Port B là 2, Port C là 3. PIN là số thứ tự của từng chân trong Port. Chân 0 có giá trị PIN là 32, 1 là 33, ... Ví dụ, chân thứ 2 của Port A có số GPIO là 33; Chân thứ 2 của Port B có số GPIO là 65, ... tương tự cho các chân còn lại trên vi điều khiển. Đối với các vi điều khiển khác có số Port lớn hơn ta chỉ việc tuân theo quy luật trên để tìm số GPIO phù hợp.

GPIO cho các loại vi điều khiển khác nhau điều có chung những tính chất:

 Mỗi chân trong GPIO đều có thể có hai chế độ inputvà output, tùy vào loại vi điều khiển mà GPIO đang sử dụng.

 Trong chế độ input, các chân GPIO có thể lập trình để trở thành nguồn ngắt hệ thống.

 Và nhiều chức năng khác nữa, trong quyển sách này chúng ta chỉ tìm hiểu những chức năng phổ biến nhất phục vụ giao tiếp với các chân IO trong các chương trình ứng dụng.

Một trong những thao tác đầu tiên để đưa GPIO hoạt động trong hệ thống là xác định GPIO cần dùng bằng hàm:

gpio_request();//Yêu cầu truy xuất chân GPIO

Tiếp đến, chúng ta cấu hình chân GPIO là ngõ vào hay ngõ ra bằng hai hàm:

int gpio_direction_input(unsigned gpio);

int gpio_direction_output(unsigned gpio, int value);

Công việc cuối cùng là đưa dữ liệu đến chân GPIO, nếu là ngõ ra; hoặc đọc dữ liệu từ chân GPIO, nếu là ngõ vào; ta sử dụng hai hàm sau:

int gpio_get_value(unsigned gpio); //Đọc dữ liệu;

void gpio_set_value(unsigned gpio, int value); //Xuất dữ liệu;

Ngồi ra cịn có nhiều hàm chức năng khác sẽ được trình bày trong mục sau.

**Có nhiều cách thao tác với gpio. Hoặc thao tác với giao diện thiết bị trong cấu trúc root file system (đây là những dirver đã được lập trình sẵn), việc điều khiển sẽ là thao tác với tập tin và thư mục (lập trình trong user application). Hoặc dùng trực tiếp những lệnh trong mã nguồn kernel, nghĩa là người sử dụng tạo riêng cho mình một driver sử dụng trực tiếp các hàm giao tiếp với gpio sau đó mới viết chương trình ứng dụng điều khiển IO theo những giao diện trong driver hỗ trợ. Nhằm mục đích thuận tiện cho viêc điều khiển IO, phần lập trình nhúng nâng cao chỉ trình bay cách thứ hai, điều khiển trực tiếp IO thông qua thư viện gpio.h trong kernel.

Một phần của tài liệu document (Trang 52 - 55)

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

(91 trang)