1. Trang chủ
  2. » Công Nghệ Thông Tin

Lập Trình Hệ Thống Nhúng

260 944 4

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 260
Dung lượng 4,8 MB

Nội dung

Giới thiệu lập trình hệ nhúng  Lập trình ứng dụng trên hệ nhúng phụ thuộc vào nền tảng platform phần cứng, phần mềm của hệ nhúng đó... Giới thiệu lập trình hệ nhúng  Các thiết bị di đ

Trang 1

LẬP TRÌNH HỆ NHÚNG

GV: Phạm Ngọc Hưng

Bộ môn Kỹ thuật Máy tính Viện CNTT&TT- ĐH BKHN email: hungpn@soict.hut.edu.vn

Trang 2

Nội dung

Chương 1 Giới thiệu lập trình hệ nhúng

Chương 2 Lập trình v{o ra cơ bản

Chương 3 Lập trình v{o ra n}ng cao

Chương 4 C|c kỹ thuật lập trình n}ng cao

Chương 5 Lập trình device driver trên Linux

Chương 6 Lập trình nền tảng QT

Chương 7 Lập trình mạng trên Linux nhúng

Chương 8 Lập trình xử lý ảnh trên nền nhúng

Trang 3

Tài liệu tham khảo

 Tài liệu tham khảo chính:

• Micro2440 User Manual

• S3C2440 MicroController User’s Manual

• Beginning Linux Programming

• Advanced Linux Programming

• Linux Device Driver

• C++ GUI programming with QT

• Website:

https://sites.google.com/site/embedded247/

Trang 4

Chương 1

Giới thiệu Lập trình hệ nhúng

Trang 5

Nội dung chương 1

Trang 6

1.1 Giới thiệu lập trình hệ nhúng

 Lập trình ứng dụng trên hệ nhúng phụ thuộc vào nền

tảng (platform) phần cứng, phần mềm của hệ nhúng đó

 Hệ nhúng không có hệ điều hành:

• Thường sử dụng c|c vi điều khiển

hiệu năng tương đối thấp

(8051, ATMega, PIC, ARM7, …)

• Lập trình bằng C, ASM

• Môi trường, công cụ lập trình tùy theo từng dòng vi điều

khiển (CodeVision, AVR Studio, Keil…)

• Phù hợp c|c ứng dụng điều khiển v{o/ra cơ bản, c|c giao

Trang 7

1.1 Giới thiệu lập trình hệ nhúng

 Hệ nhúng có hệ điều hành:

• Dựa trên c|c vi điều khiển, vi xử lý (CPU) có hiệu

năng cao (Ví dụ: AVR 32, ARM 9, ARM 11, …)

• Nhiều nền tảng hệ điều h{nh nhúng : uCLinux,

Embedded Linux, Windows CE, …

• Môi trường, công cụ lập trình tùy thuộc nền tảng hệ

điều h{nh: C/C++, QT SDK (Nokia), Net Compact

FrameWork (Microsoft), …

• Ứng dụng nhiều b{i to|n phức tạp: GPS

Tracking/Navigator, Xử lý ảnh, ứng dụng

Client/Server, …

Trang 8

1.1 Giới thiệu lập trình hệ nhúng

 Các thiết bị di động thông minh:

• Xu hướng công nghệ hiện nay

• Nhiều nền tảng: iOS, Android, Windows Phone,

Symbian OS/Memo,

• Môi trường, công cụ:

iOS: Xcode + iOS SDK (ngôn ngữ Object-C)

Android: C, Java + Android SDK, Eclipse/Netbean

Windows Phone: SDK + Visual Studio (C#)

• C|c ứng dụng phong phú: Google Play Store, Apple

Trang 9

1.1 Giới thiệu lập trình hệ nhúng

 Môn học n{y hướng tới:

• Lập trình hệ nhúng nền tảng ARM + Linux

• Minh họa trên KIT FriendlyArm micro 2440

• Lập trình C/C++, lập trình giao diện đồ họa QT

 Lý do:

• ARM ? > 90% thị phần thiết bị nhúng,

l{ dòng vi điều khiển hiệu năng cao

• Embedded Linux ? M~ nguồn mở, khả năng can thiệp, hiểu

s}u hệ thống Nhiều OS kh|c (iOS, Android) dựa trên Linux

kernel

Trang 10

1.2 Giới thiệu KIT nhúng micro2440

Trang 11

Giới thiệu KIT nhúng micro2440

Trang 12

Giới thiệu KIT nhúng micro2440

Trang 13

Giới thiệu KIT nhúng micro2440

 Thông số kỹ thuật

Trang 14

Giới thiệu KIT nhúng micro2440

Trang 15

1.3 Hệ điều hành nhúng Linux

 1.3.1 Tổng quan hệ điều h{nh nhúng Linux

 1.3.2 C{i đặt Embedded Linux trên Micro2440

 1.3.3 Biên dịch, tùy biến nh}n Linux

Trang 16

1.3.1 Tổng quan Embedded Linux

 Hệ điều h{nh nhúng (embedded os) ?

• L{ hệ điều h{nh c{i đặt cho c|c hệ thống nhúng

(embedded system)

• Được thiết kế: compact, efficient, reliable

Trang 17

Sơ đồ phân cấp hệ thống

Trang 18

Kiến trúc hệ điều hành Linux

Trang 19

Đặc trưng hệ điều hành nhúng

 Tăng tính tin cậy (reliability)

 Tăng tính khả chuyển (portability)

 Khả năng tương thích mềm: dễ d{ng n}ng cấp hay thu gọn để tương thích với nền tảng hệ thống

 Thu gọn, đòi hỏi ít bộ nhớ hơn Có thể hỗ trợ khởi động từ bộ nhớ ROM, Flash (hệ thống không có ổ

cứng)

 Cung cấp c|c cơ chế lập lịch (scheduler) hỗ trợ thời gian thực (Realtime OS – RTOS)

Trang 20

Hệ điều hành thời gian thực

 Hệ thống thời gian thực (Realtime): c|c phần mềm, phần cứng hoạt động thỏa m~n c|c r{ng buộc về

Trang 21

Hệ điều hành thời gian thực

Trang 22

Cấu trúc nhân hệ điều hành

Trang 23

Hệ thống file trong Linux

 Một số thư mục quan trọng

• /home: thư mục người dùng

• /dev: chứa c|c file thiết bị

• /bin: chứa c|c file thực thi của hệ thống

• /etc: chứa c|c file cấu hình

• /var: chứa c|c file log

• /opt: chứa c|c gói chương trình c{i đặt thêm

• /proc: chứa thông tin về c|c tiến trình, c|c th{nh phần phần cứng, phần mềm đang chạy trong hệ thống

• /usr: chứa c|c file thực thi, t{i liệu liên quan tới người dùng

Trang 24

Embedded Linux

 Hỗ trợ rất nhiều kiến trúc vi xử lý (cả 32 bit v{ 64 bit)

• Intel X86, ARM, PowerPC, MIPS, AVR32, …

 Không hỗ trợ c|c vi điều khiển hiệu năng thấp

 Hỗ trợ cả kiến trúc có v{ không có khối quản lý bộ nhớ (MMU)

 C|c hệ thống có thể dùng chung toolchains,

bootloader v{ kernel, c|c th{nh phần kh|c phải

riêng biệt v{ tương thích với từng hệ thống

Trang 25

Quá trình boot hệ thống Linux trên PC

Trang 26

Quá trình boot hệ thống Linux nhúng

Trang 27

Quá trình boot hệ thống Linux nhúng

 Boot loader: chương trình mồi, thực hiện kiểm tra

Trang 28

1.3.2 Cài đặt Embedded Linux

 Bước 1: C{i đặt bootloader (VD: U-Boot,

Supervivi)

 Bước 2: C{i đặt kernel

 Bước 3: C{i đặt hệ thống file (root file system)

Trang 29

Cài đặt từ môi trường Windows

 Công cụ

• Phần mềm HyperTerminal: kết nối với KIT

micro2440 qua cổng COM

• Phần mềm DNW: kết nối với KIT micro2440 qua

Trang 30

Cài đặt từ môi trường Linux

• Phần mềm minicom cho phép giao tiếp serial,

truyền c|c lệnh điều khiển

• Phần mềm usbpush nạp file xuống KIT

Trang 31

Cài đặt hệ điều hành nhúng Linux

Demo

<Xem hướng dẫn chi tiết trong tài liệu

hướng dẫn cài đặt và sử dụng KIT

micro2440>

Trang 32

1.3.3 Biên dịch, tùy biến nhân Linux

 Khi n{o cần biên dịch lại nh}n?

• Khi n}ng cấp hệ thống lên c|c phiên bản mới hơn

• Khi cần sửa lỗi, thay đổi, tùy chỉnh c|c module

 Qu| trình biên dịch nh}n

• Download nh}n tại địa chỉ: kernel.org (Hoặc trong

CD đi kèm KIT)

• File nén linux-2.6.32.2.tar (tùy phiên bản);

• Giải nén được thư mục to{n bộ m~ nguồn của nh}n (ví dụ thư mục linux-2.6.32.2)

Trang 33

Biên dịch nhân Linux

 Qu| trình biên dịch nh}n (tiếp):

• V{o thư mục chứa m~ nguồn nh}n (linux-2.6.32.2)

• Cấu hình trước khi biên dịch bằng lệnh:

make menuconfig

• Xuất hiện giao diện cấu hình, tùy chỉnh phù hợp với

hệ thống

• Thực hiện biên dịch bằng lệnh: make zImage

• Biên dịch th{nh công kết quả sẽ l{ file zImage (trong thư mục linux-2.6.32.2/arch/arm/mach-s3c2440) ,

sẽ được nạp (porting) xuống KIT

Trang 34

Biên dịch nhân Linux

Demo

<Xem hướng dẫn chi tiết trong tài liệu

hướng dẫn cài đặt và sử dụng KIT

Trang 35

1.4 Môi trường lập trình KIT

FriendlyARM Micro2440

1.4.1 Môi trường ph|t triển ứng dụng nhúng

1.4.2 C{i đặt môi trường ph|t triển KIT 2440

1.4.3 Chương trình HelloWorld

Trang 36

1.4.1 Môi trường phát triển ứng dụng

nhúng

 Mô hình lập trình hệ thống nhúng

 Môi trường lập trình KIT micro 2440

Trang 37

Mô hình lập trình hệ thống nhúng

• 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

Trang 38

Môi trường lập trình KIT micro 2440

• M|y host c{i hệ điều h{nh Linux (Ubuntu 10.04)

• Trình biên dịch chéo Cross toolchains (arm-linux-gcc 4.4.3): biên dịch ứng dụng (viết bằng C/C++)

• Công cụ viết m~ nguồn chương trình C (dùng gedit, eclipse)

• gFTP: truyền nhận file Host<->KIT qua giao thức FTP

• Telnet: kết nối KIT qua Ethernet (sử dụng cross cable)

Trang 39

Môi trường lập trình theo nhóm

Môi trường phát triển ứng dụng theo nhóm

Trang 40

1.4.2 Cài đặt môi trường phát triển

 Cấu hình mạng LAN (host + KIT) qua c|p chéo v{ sử

dụng IP cùng dải:

• Linux host: 192.168.1.30

• Linux target: 192.168.1.230 (default)

Trang 41

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

 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

Trang 42

Kiểm tra trình biên dịch chéo

Trang 43

Cài đặt phần mềm gFTP

 Bước 1: Cài đặt phần mềm gFTP (nếu chưa có)

• Gõ lệnh: sudo apt-get install gftp

 Bước 2: Kiểm tra kết nối giữa Host và Target

Trang 44

Kết nối sử dụng gFTP

Trang 47

Cấu trúc chương trình

 Tu}n thủ cấu trúc chương trình ANSII C

Trang 48

Chương trình Hello World

 Soạn thảo m~ nguồn chương trình C bằng gedit (file Hello.c)

#include <stdio.h>

int main (int argc, char* argv[])

{

printf(“Hello World !\n”);

printf (“Ten chuong trinh la „%s‟.\n”, argv[0]);

printf (“Chuong trinh co %d tham so \n”, argc - 1);

/* Neu co bat cu tham so dong lenh nao*/

if (argc > 1) {

/* Thi in ra*/

int i;

printf (“Cac tham so truyen vao la:\n”);

for (i = 1; i < argc; ++i)

printf (“ Tham so %d: %s\n ”, i, argv[i]);

}

Trang 49

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 (-g)

 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 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

Trang 50

[tab] system command

 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

Trang 51

VD 1: Makefile đơn giản

Biên dịch chương trình: make all

Xóa file sinh ra trước đó: make clear

Trang 52

void display (int index, char* str)

void display (int index, char* str)

Trang 54

VD 2: Makefile liên kết

CC=arm-linux-gcc

all:Hello.o display.o

$(CC) -o $(OUTPUT) Hello.o display.o

$(CC) -c Hello.c

$(CC) -c display.c

Trang 55

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ụ

Trang 56

Thảo luận

Trang 57

Chương 2

Lập trình vào ra cơ bản

Trang 58

Mục tiêu chương 2

 Sau khi kết thúc chương n{y, sinh viên có thể

• Nắm được nguyên tắc lập trình giao tiếp v{o ra cơ bản trên hệ điều h{nh Linux nhúng

• Lập trình giao tiếp thiết bị (ghép nối GPIO) với

driver đ~ có (led, button)

• Biết c|ch lập trình giao tiếp GPIO mở rộng dựa trên giao diện sysfs (gpiolib)

Trang 59

Nội dung bài học

2.1 Cơ chế lập trình giao tiếp thiết bị

2.2 Lập trình điều khiển led đơn

2.3 Lập trình giao tiếp nút bấm

2.4 Lập trình giao tiếp GPIO mở rộng

Trang 60

2.1 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

Trang 61

Mô hình giao tiếp ứng dụng – thiết bị

Trang 62

Lập trình nhúng ARM-Linux

Device files, Device number

 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

Đọ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

62

Trang 63

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ị

kh|c nhau cùng sử dụng chung một device driver

Trang 64

Kiểm tra danh sách thiết bị

 Kiểm tra danh s|ch c|c thiết bị

• Gõ lệnh ls –al /dev

Giải thích thông tin

Loại thiết bị: char device hay block device

Tài khoản người dùng

Tên thiết bị

Major và minor number

Trang 65

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

Trang 66

Cơ chế lập trình giao tiếp thiết bị

Trang 67

2.2 Lập trình điều khiển led đơn

 Sử dụng led driver đ~ có

 4 led đơn, ghép nối qua GPB5,6,7,8

 Điều khiển led on/off, tạo hiệu ứng: nhấp nh|y,

chạy đuổi, …

 Cần sử dụng h{m trễ (delay): sleep, usleep (thư

viện sys/time.h)

Trang 68

Mô hình giao tiếp điều khiển led

Trang 69

Lập trình điều khiển led đơn

• Đ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

Trang 70

Mã nguồn minh họa điều khiển led đơn

Trang 71

2.3 Lập trình giao tiếp nút bấm

 Giao tiếp qua driver đ~ có

Trang 72

Mô hình giao tiếp điều khiển nút bấm

Trang 74

Mã nguồn chương trình đọc nút bấm

Trang 75

2.4 Lập trình giao tiếp GPIO mở rộng

 2 c|ch sử dụng giao tiếp gpio (từ Linux user space)

• Cách 1: Viết gpio driver (trên không gian nh}n hệ

điều h{nh, kernel space), giao tiếp qua driver n{y

(Ví dụ với led, button đ~ l{m)

• Cách 2: giao tiếp c|c ch}n gpio trực tiếp từ không

gian người dùng (user space) dựa trên API thư viện gpiolib cung cấp Linux cung cấp giao diện GPIO

sysfs cho phép thao t|c với bất kỳ ch}n GPIO từ

userspace

Trang 76

Lập trình giao tiếp GPIO mở rộng

 Tất cả c|c giao diện điều khiển GPIO thông qua sysfs

nằm trong thư mục /sys/class/gpio

 Kiểm tra bằng lệnh: ls /sys/class/gpio

Trang 77

Lập trình giao tiếp GPIO mở rộng

 Giao diện n{y cung cấp c|c files điều khiển sau đ}y:

Trang 78

Lập trình giao tiếp GPIO mở rộng

Trang 79

Thảo luận

Trang 80

Chương 3

Lập trình vào ra nâng cao

Trang 81

• Nắm được chuẩn giao tiếp USB

• Lập trình ghép nối USB Joystick qua cổng USB

• Lập trình giao tiếp ADC

Trang 82

Nội dung bài học

3.1 Giới thiệu chuẩn RS232

3.2 Lập trình giao tiếp chuẩn RS232

3.3 Giới thiệu chuẩn USB

3.4 Lập trình giao tiếp USB Joystick

3.5 Lập trình giao tiếp ADC

Trang 83

3.1 Giới thiệu chuẩn RS232

 Mức điện |p đường truyền

 Chuẩn đầu nối trên m|y tính PC

 Khuôn dạng khung truyền

 Tốc độ truyền

 Kịch bản truyền

Trang 84

Chuẩn RS232

 Mức điện |p đường truyền (Chuẩn RS-232C)

Trang 86

Chuẩn RS232

 Chuẩn đầu nối trên PC

• Chân 1 (DCD-Data Carrier Detect):

ph|t hiện tín hiệu mang dữ liệu

• Chân 2 (RxD-Receive Data): nhận dữ

liệu

• Chân 3 (TxD-Transmit Data): truyền

dữ liệu

• Chân 4 (DTR-Data Terminal Ready):

đầu cuối dữ liệu sẵn s{ng

• Ch}n 5 (Signal Ground): đất của tín

Trang 87

Chuẩn RS232

 Khuôn dạng khung truyền

• PC truyền nhận dữ liệu qua cổng nối tiếp RS-232 thực

hiện theo kiểu không đồng bộ (Asynchronous)

• Khung truyền gồm 4 th{nh phần

1 Start bit (Mức logic 0): bắt đầu một gói tin, đồng bộ xung nhịp clock giữa DTE v{ DCE

Data (5,6,7,8 bit): dữ liệu cần truyền

1 parity bit (chẵn (even), lẻ (odd), mark, space): bit cho phép kiểm tra lỗi

Stop bit (1 hoặc 2 bit): kết thúc một gói tin

Trang 88

Chuẩn RS232

 Kịch bản truyền

• Không có bắt tay (none-handshaking): m|y thu có khả

năng đọc c|c ký tự thu trước khi m|y ph|t truyền ký tự

tiếp theo

Kết nối không cần bắt tay giữa hai thiết bị

Trang 89

Chuẩn RS232

 Kịch bản truyền

Ghép nối không bắt tay giữa hai thiết bị

(Khác nhau về mức điện áp)

Trang 90

3.2 Lập trình giao tiếp chuẩn RS232

 Khởi tạo: Khai b|o thư viện

 Bước 1: Mở cổng

 Bước 2: Thiết lập tham số

 Bước 3: Đọc, ghi cổng

 Bước 4: Đóng cổng

Trang 91

Khai báo thư viện

 #include <stdio.h>

 #include <stdlib.h>

 #include <string.h>

 #include <unistd.h> // UNIX standard function

 #include <fcntl.h> // File control definitions

 #include <errno.h> // Error number definitions

 #include <termios.h> // POSIX terminal control

 #include <time.h> // time calls

Trang 92

Bước 1: Mở cổng

 Sử dụng lệnh mở file

int fd = open ("/dev/ttySAC0", O_RDWR);

 Fd >0 nếu mở file th{nh công

 Fd<0 nếu mở file thất bại

Trang 93

port_settings.c_cflag &= ~PARENB;

port_settings.c_cflag &= ~CSTOPB;

port_settings.c_cflag &= ~CSIZE;

port_settings.c_cflag |= CS8;

tcsetattr(fd, TCSANOW, &port_settings);

93

Ngày đăng: 27/05/2014, 21:55

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w