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

pdf27 trang | Chia sẻ: huongthu9 | Lượt xem: 481 | Lượt tải: 0download
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:

  • pdfbai_giang_mon_hoc_lap_trinh_he_nhung_chuong_2_lap_trinh_vao.pdf