Bài giảng môn học Lập trình hệ nhúng - Chương 2: Lập trình vào ra căn bản - Phạm Văn Thuậ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
27 trang |
Chia sẻ: huongthu9 | Lượt xem: 571 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Bài giảng môn học Lập trình hệ nhúng - Chương 2: Lập trình vào ra căn bản - Phạm Văn Thuận, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương 2. Lập trình vào ra căn bản
2.1. Cài đặt môi trường phát triển
2.2. Cơ bản về lập trình Linux
2.3. Cơ chế lập trình giao tiếp thiết bị
2.4. Lập trình điều khiển led
Lập trình hệ nhúng
2.5. Lập trình ghép nối nút bấm
32
2.1. Cài đặt môi trường phát triển
§ Mô hình lập trình
§ Môi trường phát triển ứng dụng
§ Cài đặt môi trường
Lập trình hệ nhúng 33
Mô hình lập trình hệ thống nhúng
Lập trình hệ nhúng34
•Host: hệ thống chứa môi trường phát triển
•Target: hệ nhúng cần phát triển ứng dụng
Môi trường phát triển ứng dụng
§ Phần mềm
• Hệ điều hành Linux
• Cross toolchains (gcc 4.4.3): biên dịch, GDB: công cụ
debug
• gFTP: truyền nhận file HostKIT qua giao thức TFTP
• Telnet: kết nối KIT qua Ethernet (sử dụng cross cable)
Lập trình hệ nhúng35
3.2. Cài đặt môi trường phát triển
§ Môi trường phát triển
• Hệ điều hành Linux (Ubuntu 9.04 hoặc mới hơn)
• Trình biên dịch chéo: ARM Linux GCC 4.4.3
§ Phần mềm hỗ trợ
• gFTP
Lập trình hệ nhúng
§ Cấu hình mạng sử dụng
• Linux host: 192.168.1.30
• Linux target: 192.168.1.230
36
Cài đặt trình biên dịch chéo
§ Bước 1: Giải nén arm-linux-gcc-4.4.3.tar.gz
tar –zxvf arm-linux-gcc-4.4.3.tar.gz
§ Bước 2: Cập nhật biến môi trường PATH
• Thêm đường dẫn tới thư mục bin của arm-linux-
gcc-4.4.3 (Cập nhật biến môi trường PATH trong file
Lập trình hệ nhúng
.bashrc)
§ Bước 3: Kiểm tra trình biên dịch
• Mở cử sổ console, gõ lệnh: arm-linux-gcc --
version
• Thông báo về phiên bản của arm-linux-gcc hiện ra
=> quá trình cài đặt thành công 37
Kiểm tra trình biên dịch chéo
Lập trình hệ nhúng 38
Cài đặt phần mềm gFTP
§ Bước 1: Cài đặt phần mềm gFTP
• Gõ lệnh: apt-get install gftp
§ Bước 2: Kiểm tra kết nối giữa Host và Target
• Mở phần mềm gFTP: Applications->Internet-
>gFTP
Lập trình hệ nhúng
• Thiết lập các tham số
üĐịa chỉ IP của KIT: 192.168.1.230
üUsername: root
üPassword: ktmt (có thể đổi bằng lệnh passwd)
• Mở kết nối
39
Kết nối sử dụng gFTP
Lập trình hệ nhúng 40
2.2. Cơ bản về lập trình Linux
§ Cấu trúc chương trình đơn giản
§ Cách thức biên dịch chương trình
§ Nạp file thực thi xuống KIT và chạy ứng dụng
Lập trình hệ nhúng 41
Cấu trúc chương trình
§ Tuân thủ cấu trúc chương trình ANSII C
Lập trình hệ nhúng 42
Chương trình HelloWorld
Lập trình hệ nhúng 43
Cách thức biên dịch chương trình
§ Cách 1: Sử dụng lệnh của cross compiler
• VD: arm-linux-gcc –g –o Hello Hello.c
• Kết quả: biên dịch ra một file thực thi có tên là Hello từ một
file mã nguồn là Hello.c, file này có hỗ trợ khả năng debug
§ Cách 2: Tạo và sử dụng Makefile
• make là một tool cho phép quản lý quá trình biên dịch, liên
Lập trình hệ nhúng
kết của một dự án với nhiều file mã nguồn.
• Tạo Makefile lưu các lệnh biên dịch theo định dạng của
Makefile
• Sử dụng lệnh make để chạy Makefile và biên dịch chương
trình
§ Cách 3: Sử dụng automake và autoconf
• Tạo makefile tự động
44
Cấu trúc Makefile
§ Makefile cấu thành từ các target, variables và
comments
§ Target có cấu trúc như sau:
target: dependencies
[tab] system command
Lập trình hệ nhúng
§ target: make target
§ Dependencies: các thành phần phụ thuộc (file mã
nguồn, các file object)
§ System command: các câu lệnh (lệnh biên dịch,
lệnh linux)
45
VD 1: Makefile đơn giản
CC=arm-linux-gcc
all: Hello.c
$(CC) –g –o Hello Hello.c
clear:
Lập trình hệ nhúng
rm Hello
46
§Biên dịch chương trình: make all
§Xóa file sinh ra trước đó: make clear
VD 2: Makefile liên kết
CC=arm-linux-gcc
OUTPUT=Hello
all:Hello.o display.o
$(CC) -o $(OUTPUT) Hello.o display.o
Lập trình hệ nhúng
Hello.o:Hello.c
$(CC) -c Hello.c
display.o:display.c
$(CC) -c display.c
47
Nạp file thực thi xuống KIT
§ Bước 1: sử dụng phần mềm gFTP chuyển file
Hello (đã được biên dịch trước đó) xuống KIT, ví
dụ xuống thư mục: /ktmt/bin
§ Bước 2: telnet xuống KIT, chuyển tới thư mục
/dks/bin, thực thi chương trình
Lập trình hệ nhúng
• Gõ lệnh: ./Hello
• Nếu chương trình chưa có quyền thực thi, thực
hiện cấp quyền: chmod +x Hello
§ Bước 3: quan sát kết quả
48
2.3. 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 hệ nhúng 49
§ 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
Device files, Device number
Lập trình hệ nhúng
üĐọ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
50
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ị
Lập trình hệ nhúng
khác nhau cùng sử dụng chung một device driver
51
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 hệ nhúng 52
Kiểm tra danh sách thiết bị
§ Kiểm tra danh sách các thiết bị mount vào
hệ thống
vGõ lệnh cat /proc/mounts
vGõ lệnh mount
Lập trình hệ nhúng 53
Cơ chế lập trình giao tiếp thiết bị
§ Cơ chế lập trình: giao tiếp qua các device files
• Sử dụng các hàm vào ra file
üopen
üclose
üread
Lập trình hệ nhúng
üwrite
• Sử dụng hàm điều khiển vào ra: ioctl
54
2.4. Lập trình điều khiển led
Lập trình hệ nhúng 55
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)
Lập trình hệ nhúng
• 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
56
2.5. Lập trình ghép nối nút bấm
Lập trình hệ nhúng 57
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(curre
nt_buttons)
Lập trình hệ nhúng
• Đọc trạng thái các nút bấm
§ close(buttons_fd): đóng file
§ Driver cho nút nhấn
linux-
2.6.32.2/drivers/char/mini2440_buttons.c
58
Các file đính kèm theo tài liệu này:
- bai_giang_mon_hoc_lap_trinh_he_nhung_chuong_2_lap_trinh_vao.pdf