You are on page 1of 13

ESYS-6ULL KIT HƯỚNG DẪN PHÁT TRIỂN PHẦN MỀM GPIO

Mục Lục
QUY ƯỚC..................................................................................................................... 2
HÌNH MINH HỌA........................................................................................................3
BẢNG............................................................................................................................ 4
LỜI MỞ ĐẦU................................................................................................................ 5
THƯ VIỆN NGÔN NGỮ LẬP TRÌNH C.....................................................................6
GPIO OUTPUT.............................................................................................................9
GPIO INPUT...............................................................................................................11
Tài liệu tham khảo.......................................................................................................12

CÔNG TY CỔ PHẦN ESYSTECH


--------------Making innovation-------------
Địa chỉ: Số 17E2, Ngõ 332, Hoàng Công Chất, Phú Diễn, Bắc Từ Liêm, Hà Nội
Hotline: +84 2439010666
Website: http://esystechs.vn/
Email: esys@esystechs.vn
ESYS-6ULL KIT HƯỚNG DẪN PHÁT TRIỂN PHẦN MỀM GPIO

QUY ƯỚC

Link tới internet http://www.esystech.vn/


source code #include <studio.h>
Shell command dd if=/bin/abc of=/dev/sdb
Tên file, đường dẫn trên /usr/bin/gnome-terminal
máy tính
Thao tác bằng chuột Right-click> Properties
Nghĩa là: kích chuột phải, chọn Properties
Ghi nội dung Lưu ý, Ghi chú
Lưu ý:
Ghi chú:

Tên gói phần mềm Screen

CÔNG TY CỔ PHẦN ESYSTECH


--------------Making innovation-------------
Địa chỉ: Số 17E2, Ngõ 332, Hoàng Công Chất, Phú Diễn, Bắc Từ Liêm, Hà Nội
Hotline: +84 2439010666
Website: http://esystechs.vn/
Email: esys@esystechs.vn
ESYS-6ULL KIT HƯỚNG DẪN PHÁT TRIỂN PHẦN MỀM GPIO

HÌNH MINH HỌA


Hình 1: Thư viện gpio của esystech..............................................................................7

CÔNG TY CỔ PHẦN ESYSTECH


--------------Making innovation-------------
Địa chỉ: Số 17E2, Ngõ 332, Hoàng Công Chất, Phú Diễn, Bắc Từ Liêm, Hà Nội
Hotline: +84 2439010666
Website: http://esystechs.vn/
Email: esys@esystechs.vn
ESYS-6ULL KIT HƯỚNG DẪN PHÁT TRIỂN PHẦN MỀM GPIO

BẢNG
Bảng 1: Chức năng sysfs cho gpio.................................................................................6
Bảng 2: Thư mục gpio của ESYS-6ULL.......................................................................6

CÔNG TY CỔ PHẦN ESYSTECH


--------------Making innovation-------------
Địa chỉ: Số 17E2, Ngõ 332, Hoàng Công Chất, Phú Diễn, Bắc Từ Liêm, Hà Nội
Hotline: +84 2439010666
Website: http://esystechs.vn/
Email: esys@esystechs.vn
ESYS-6ULL KIT HƯỚNG DẪN PHÁT TRIỂN PHẦN MỀM GPIO

LỜI MỞ ĐẦU
GPIO là viết tắt của General Purpose Input Output, là chân có thể được sử dụng tùy
vào mục đích của người dùng. Nó có thể thiết lập là chân đọc dữ liệu (chân vào), chân
xuất dữ liệu (chân ra). Giống với chân vào/ra của vi điều khiển.
Đặc trưng của GPIO:
- Có thể cấu hình vào/ra
- Có thể cho phép sử dụng hoặc vô hiệu hóa cho sử dụng mục đích khác
- Giá trị vào có thể đọc
- Giá trị xuất ra có thể đọc hoặc ghi
- Giá trị vào thường được sử dụng như là yêu cầu ngắt IRQ
GPIO thường được nhóm thành các cổng, mỗi cổng có 8 chân hoặc 32 chân. ESYS-
6ULL có 05 cổng (GPIO1 ÷ GPIO5), mỗi cổng có 32 chân.
ESYS-6ULL được trang bị sẵn phần cứng mô phỏng chức năng gpio cho phép người
dùng không cần kết nối thêm với phần cứng bên ngoài mà vẫn mô phỏng được chức
năng:
+ 02 chân gpio điều khiển hiển thị led, mô phỏng chức năng gpio output;
+ 01 phím ấn, mô phỏng chức năng gpio input.
Trong Linux, mỗi chân gpio có tương ứng một thư mục trong root filesystem, cho
phép cấu hình chức năng, xuất dữ liệu,... Ví dụ: thư mục /sys/class/gpio/gpio128/ dùng
để cấu hình cho GPIO5_00 (chân 0 của cổng 5), bên trong thư mục này có các file
direction, value, edge với chức năng được nêu trong Bảng 1: Chức năng sysfs cho gpio

CÔNG TY CỔ PHẦN ESYSTECH


--------------Making innovation-------------
Địa chỉ: Số 17E2, Ngõ 332, Hoàng Công Chất, Phú Diễn, Bắc Từ Liêm, Hà Nội
Hotline: +84 2439010666
Website: http://esystechs.vn/
Email: esys@esystechs.vn
ESYS-6ULL KIT HƯỚNG DẪN PHÁT TRIỂN PHẦN MỀM GPIO

Tham số Giá trị Ý nghĩa


direction in hoặc out Cấu hình chân là vào/ra, in là chân vào, out là chân ra
value 0 hoặc 1 Xuất giá trị ra/Đọc giá trị ở chân trong trường hợp chân
được cấu hình Ra/Vào tương ứng
edge none, rising, falling, both Cấu hình cạnh ngắt cho chân:
- none: chân không tạo ngắt
- rising: chân tạo ngắt khi có cạnh lên
- falling: chân tạo ngắt khi có cạnh xuống
- both: chân tạo ngắt khi có bất kì một cạnh lên hoặc
xuống
Bảng 1: Chức năng sysfs cho gpio
Vị trí gpio của ESYS-6ULL tương ứng trong Bảng 2: Thư mục gpio của ESYS-6ULL
Vị trí Cổng _ Chân GPIO Vị trí trên root filesystem Chức năng
GPIO5_00 /sys/class/gpio/gpio128/ Đọc giá trị từ phím ấn
GPIO5_01 /sys/class/gpio/gpio129/ Điều khiển hiển thị LED
GPIO5_02 /sys/class/gpio/gpio130/ Điều khiển hiển thị LED
Bảng 2: Thư mục gpio của ESYS-6ULL

Tài liệu này sẽ hướng dẫn người dùng viết ứng dụng gpio input và gpio output chạy
trên ESYS-6ULL.

Toàn bộ source code ví dụ trong tài liệu này người dùng tải tại địa chỉ
http://esystechs.vn/download/download.php?id=16

THƯ VIỆN NGÔN NGỮ LẬP TRÌNH C


ESYSTECH đã phát triển thư viện hỗ trợ lập trình gpio bằng ngôn ngữ lập trình C.
Người dùng có thể tải thư viện tại địa chỉ http://esystechs.vn/download/download.php?
id=12

CÔNG TY CỔ PHẦN ESYSTECH


--------------Making innovation-------------
Địa chỉ: Số 17E2, Ngõ 332, Hoàng Công Chất, Phú Diễn, Bắc Từ Liêm, Hà Nội
Hotline: +84 2439010666
Website: http://esystechs.vn/
Email: esys@esystechs.vn
ESYS-6ULL KIT HƯỚNG DẪN PHÁT TRIỂN PHẦN MỀM GPIO

Hình 1: Thư viện gpio của esystech

- Thư viện sau khi người dùng tải về gồm:


+ tệp thư viện esys­6ull_gpio.o

CÔNG TY CỔ PHẦN ESYSTECH


--------------Making innovation-------------
Địa chỉ: Số 17E2, Ngõ 332, Hoàng Công Chất, Phú Diễn, Bắc Từ Liêm, Hà Nội
Hotline: +84 2439010666
Website: http://esystechs.vn/
Email: esys@esystechs.vn
ESYS-6ULL KIT HƯỚNG DẪN PHÁT TRIỂN PHẦN MỀM GPIO

+ tài liệu dưới dạng html: trong thư mục html

+ tệp readme: giới thiệu ngắn gọn và cách sử dụng thư viện

- Giao diện lập trình ứng dụng của thư viện: xem trong tài liệu html
- Sử dụng thư viện: các bước biên dịch thành executive file khi sử dụng các hàm trong
thư viện:
+ Sau khi tải thư viện về, giải nén
+ Tạo môi trường biên dịch (Xem phần “Chuẩn bị toolchain để biên dịch ứng
dụng” trong phần 1.1.3 của tài liệu http://esystechs.vn/download/download.php?
id=15)
+ Biên dịch: $CC ­o <tên file chạy> ./esys­6ull_gpio.o <file *.c ví dụ>

CÔNG TY CỔ PHẦN ESYSTECH


--------------Making innovation-------------
Địa chỉ: Số 17E2, Ngõ 332, Hoàng Công Chất, Phú Diễn, Bắc Từ Liêm, Hà Nội
Hotline: +84 2439010666
Website: http://esystechs.vn/
Email: esys@esystechs.vn
ESYS-6ULL KIT HƯỚNG DẪN PHÁT TRIỂN PHẦN MỀM GPIO

GPIO OUTPUT
ESYS-6ULL bố trí 02 chân gpio điều khiển hiển thị LED để cho mục đích sử dụng
gpio là chân output.
Chân GPIO LED Định nghĩa trong thư viện
GPIO5_01 (/sys/class/gpio/gpio129/) D1 PIN_D1
GPIO5_02 (/sys/class/gpio/gpio130/) D2 PIN_D2
Vị trí của D1 và D2 trên board vui lòng xem tài liệu [1]
Nguyên lí điều khiển LED trên ESYS-6ULL:

Vậy, nếu gpio xuất giá trị 0 thì led sẽ sáng, 1 thì led sẽ tắt.
Workflow điều khiển LED tắt/sáng:

CÔNG TY CỔ PHẦN ESYSTECH


--------------Making innovation-------------
Địa chỉ: Số 17E2, Ngõ 332, Hoàng Công Chất, Phú Diễn, Bắc Từ Liêm, Hà Nội
Hotline: +84 2439010666
Website: http://esystechs.vn/
Email: esys@esystechs.vn
ESYS-6ULL KIT HƯỚNG DẪN PHÁT TRIỂN PHẦN MỀM GPIO

START

Thiết lập là chân


ra

Bật LED sáng value=0

value=1
Tắt LED

END

02 LED trên ESYS-6ULL tương tự nhau, cách thức điều khiển LED này cũng sẽ tương
tự đối với LED kia.
Thực hiện sơ đồ điều khiển LED trên bằng lệnh ngôn ngữ c:
Chức năng Lệnh bằng ngôn ngữ C
Thiết lập là chân output GPIODirection(PIN_D1, OUT)
Vào vòng lặp 05 lần
Bật LED sáng GPIOWrite(PIN_D1, LOW)
Delay 0,5 giây usleep (500000)
Tắt LED GPIOWrite(PIN_D1, HIGH)
Delay 0,5 giây usleep (500000)
Từ source code, người dùng có thể tự biên dịch ra executive file như sau:
$CC ­o demo_blink_led1 ./lib/esys­6ull_gpio.o ./esys­6ull_gpio_demo_blinkled.c

Chạy ứng dụng demo:


- Download executive file xuống board
- Chạy qua Termnal: ./demo_blink_led1

- Kết quả: LED1 sẽ nhấp nháy 05 lần.

CÔNG TY CỔ PHẦN ESYSTECH


--------------Making innovation-------------
Địa chỉ: Số 17E2, Ngõ 332, Hoàng Công Chất, Phú Diễn, Bắc Từ Liêm, Hà Nội
Hotline: +84 2439010666
Website: http://esystechs.vn/
Email: esys@esystechs.vn
ESYS-6ULL KIT HƯỚNG DẪN PHÁT TRIỂN PHẦN MỀM GPIO

GPIO INPUT
ESYS-6ULL bố trí 01 chân gpio nhận biết trạng thái của phím ấn SW1, giúp người
dùng chạy chương trình mô phỏng gpio input mà không cần kết nối thêm phần cứng:
Chân GPIO Input Phím ấn Định nghĩa trong thư viện
GPIO5_00 (/sys/class/gpio/gpio128/) SW1 PIN_BUTTON0
Vị trí của SW1 trên board vui lòng xem tài liệu [1]. Ban đầu, phím ấn chưa ấn, chân
GPIO5_00 ở trạng thái mức tích cực cao, khi có phím ấn xuống mức tích cực thấp.
Vậy khi có phím ấn sẽ có sườn xuống tác động.
Workflow đọc trạng thái phím ấn:

START

Thiết lập là chân


vào

Thiết lập cạnh ngắt


(falling, rising, both)

Chờ khi có phím ấn


Poll(...)

Đọc dữ liệu để xóa


bỏ sự kiện phím ấn
Read(...)
Thực hiện sơ đồ đọc trạng thái phím ấn trên bằng lệnh ngôn ngữ c:
Chức năng Lệnh bằng ngôn ngữ C
Thiết lập là chân input GPIODirection(PIN_BUTTON0, IN)
Thiết lập cạnh ngắt xuống GPIOSetInterruptEdge(PIN_BUTTON0, FALLING)
Vòng lặp vô hạn For(;;)
Chờ có phím ấn res = poll(&gpio_poll_fd,1,-1);
Đọc dữ liệu để xóa bỏ sự size_t num = read(fd, &buf[0], 10*sizeof(char));

CÔNG TY CỔ PHẦN ESYSTECH


--------------Making innovation-------------
Địa chỉ: Số 17E2, Ngõ 332, Hoàng Công Chất, Phú Diễn, Bắc Từ Liêm, Hà Nội
Hotline: +84 2439010666
Website: http://esystechs.vn/
Email: esys@esystechs.vn
ESYS-6ULL KIT HƯỚNG DẪN PHÁT TRIỂN PHẦN MỀM GPIO

kiến phím ấn
Từ source code, người dùng có thể tự biên dịch ra executive file như sau:
$CC ­o demo_button ./lib/esys­6ull_gpio.o ./esys­6ull_gpio_demo_key.c

Chạy ứng dụng demo:


- Download executive file xuống board
- Chạy qua Termnal: ./demo_button
- Kết quả: mỗi khi phím được ấn sẽ có thông báo có phím ấn và số lần phím đã được
ấn.

CÔNG TY CỔ PHẦN ESYSTECH


--------------Making innovation-------------
Địa chỉ: Số 17E2, Ngõ 332, Hoàng Công Chất, Phú Diễn, Bắc Từ Liêm, Hà Nội
Hotline: +84 2439010666
Website: http://esystechs.vn/
Email: esys@esystechs.vn
ESYS-6ULL KIT HƯỚNG DẪN PHÁT TRIỂN PHẦN MỀM GPIO

Tài liệu tham khảo


1: ESYSTECH, Tra cứu phần cứng, 2018
2: Mendel Cooper, Advanced Bash-Scripting Guide, ,

CÔNG TY CỔ PHẦN ESYSTECH


--------------Making innovation-------------
Địa chỉ: Số 17E2, Ngõ 332, Hoàng Công Chất, Phú Diễn, Bắc Từ Liêm, Hà Nội
Hotline: +84 2439010666
Website: http://esystechs.vn/
Email: esys@esystechs.vn

You might also like