Professional Documents
Culture Documents
Lp trnh h nhng
GV: Phm Vn Thun B mn K thut My tnh Vin CNTT&TT- H BKHN email: thuanpv@soict.hut.edu.vn Website:http://soict.hut.edu.vn/~thuanpv
1
Mc tiu mn hc
Sau khi kt thc mn hc ny, sinh vin c th
Lp trnh vo ra cn bn v nng cao trn Linux Trnh by c c ch lp trnh driver cho thit b trn Linux Lp trnh giao din ha s dng nn tng QT trn Linux Lp trnh truyn thng qua Ethernet,USB 3G Nm bt cc cng ngh mi: cng ngh nh v GPS, nh v qun tnh, cng ngh mng cm bin khng dy, lp trnh iPhone, Android
Lp trnh h nhng
Ni dung kha hc
Chng 1. Ci t,ty bin h iu hnh nhng Linux Chng 2. Lp trnh vo ra cn bn trn Linux Chng 3. Lp trnh vo ra nng cao trn Linux Chng 4. Cc k thut lp trnh nng cao Chng 5. Lp trnh device driver trn Linux Chng 6. Lp trnh giao din ha trn Linux s dng nn tng QT Chng 7. Lp trnh mng trn nn nhng Semimar: cng ngh nh v GPS, nh v qun tnh, mng cm bin khng dy, lp trnh iPhone, android
Lp trnh h nhng
Lp trnh h nhng
Chng 2: Lp trnh vo ra cn bn
Xy dng mi trng lp trnh Lp trnh giao tip led n, nt nhn
Lp trnh h nhng
Lp trnh h nhng
Gii thiu c ch a tin trnh, a lung v giao tip gia cc tin trnh, cc lung Lp trnh x l a tin trnh Lp trnh x l a lung X l xung t d liu
Lp trnh h nhng
Lp trnh h nhng
Lp trnh h nhng
Th vin lp trnh mng trn QT Lp trnh gi nhn d liu qua mng Ethernet Ci t, kt ni KIT micro2440 vi USB 3G Lp trnh gi, nhn tin nhn qua mng 3G Lp trnh truyn hnh nh qua mng 3G
Lp trnh h nhng
10
Semimar
Gii thiu cng ngh nh v da trn GPS Gii thiu cng ngh nh v qun tnh Gii thiu cng ngh mng cm bin khng dy Gii thiu lp trnh iPhone Gii thiu lp trnh Android
Lp trnh h nhng
11
Lp trnh h nhng
12
Chng 1
1.1. Tng quan h iu hnh nhng Linux 1.2. Ci t h iu hnh nhng Linux 1.3. Ty bin v bin dch nhn h iu hnh nhng Linux
Lp trnh h nhng
13
Lp trnh h nhng
14
Lp trnh h nhng
15
16
Lp trnh h nhng
Embedded Linux
H tr rt nhiu kin trc (c 32 bit v 64 bit)
X86, ARM, PowerPC, MIPS, SuperH, AVR32,
Khng h tr cc vi iu khin hiu nng thp H tr c kin trc c v khng c khi qun l b nh (MMU) Cc h thng c th dng chung toolchains, bootloader v kernel, cc thnh phn khc phi ring bit v tng thch vi tng h thng
17
Lp trnh h nhng
Lp trnh h nhng
18
Lp trnh h nhng
19
Lp trnh h nhng
20
Lp trnh h nhng
21
Lp trnh h nhng
22
Lp trnh h nhng
23
Lp trnh h nhng
24
Lp trnh h nhng
25
Lp trnh h nhng
26
27
Lp trnh h nhng
Cch thc
Phn mm HyperTerminal truyn cc lnh iu khin Phn mm DNW trao i file
28
Lp trnh h nhng
Cch thc
Phn mm minicom truyn cc lnh iu khin Phn mm usbpush trao i file
Lp trnh h nhng
29
Tho lun
31
Lp trnh h nhng
Chng 2. Lp trnh vo ra cn bn
2.1. Ci t mi trng pht trin 2.2. C bn v lp trnh Linux 2.3. C ch lp trnh giao tip thit b 2.4. Lp trnh iu khin led 2.5. Lp trnh ghp ni nt bm
Lp trnh h nhng
32
Lp trnh h nhng
33
Host: h thng cha mi trng pht trin Target: h nhng cn pht trin ng dng
34
Lp trnh h nhng
35
Lp trnh h nhng
Phn mm h tr
gFTP
Lp trnh h nhng
36
Lp trnh h nhng
38
Ci t phn mm gFTP
Bc 1: Ci t phn mm gFTP
G lnh: apt-get install gftp
M kt ni
Lp trnh h nhng
39
Kt ni s dng gFTP
Lp trnh h nhng
40
Lp trnh h nhng
41
Lp trnh h nhng
42
Lp trnh h nhng
43
Cu trc Makefile
Makefile cu thnh t cc target, variables v comments Target c cu trc nh sau:
VD 1: Makefile n gin
CC=arm-linux-gcc all: Hello.c $(CC) g o Hello Hello.c clear: rm Hello
Bin dch chng trnh: make all Xa file sinh ra trc : make clear
Lp trnh h nhng
46
VD 2: Makefile lin kt
CC=arm-linux-gcc OUTPUT=Hello all:Hello.o display.o $(CC) -o $(OUTPUT) Hello.o display.o Hello.o:Hello.c $(CC) -c Hello.c display.o:display.c $(CC) -c display.c
47
Lp trnh h nhng
Bc 3: quan st kt qu
Lp trnh h nhng
48
Lp trnh h nhng
49
Lp trnh h nhng
51
Lp trnh h nhng
52
Lp trnh h nhng
53
Lp trnh h nhng
54
Lp trnh h nhng
55
Lp trnh h nhng
57
Lp trnh ghp ni nt bm
buttons_fd=open(/dev/buttons,0)
buttons_fd: file id /dev/buttons: device file
read(buttons_fd,current_buttons,sizeof(curre nt_buttons)
c trng thi cc nt bm
Lp trnh h nhng
59
Lp trnh h nhng
60
Chun RS232
Khun dng khung truyn PC truyn nhn d liu qua cng ni tip RS-232 thc hin theo kiu khng ng b (Asynchronous) Khung truyn gm 4 thnh phn
1 Start bit (Mc logic 0): bt u mt gi tin, ng b xung nhp clock gia DTE v DCE Data (5,6,7,8 bit): d liu cn truyn 1 parity bit (chn (even), l (odd), mark, space): bit cho php kim tra li Stop bit (1 hoc 2 bit): kt thc mt gi tin
Lp trnh h nhng
61
Lp trnh h nhng
62
Khai bo th vin
#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
Lp trnh h nhng
63
Bc 1: M cng
S dng lnh m file int fd = open ("/dev/ttySAC0", O_RDWR); Fd >0 nu m file thnh cng Fd<0 nu m file tht bi
Lp trnh h nhng
64
Bc 2: Thit lp tham s
S dng cu trc termios
struct termios port_settings;
Bc 3: c, ghi cng
c cng: s dng lnh c file n=read(fd,&result,sizeof(result)); N: s k t c c Result: cha kt qu Ghi cng: s dng lnh ghi file n=write(fd,Hello World\r",12); N:s k t ghi Fd: file id (c c t thao tc m file thnh cng)
Lp trnh h nhng
66
Bc 4: ng cng
ng cng: s dng lnh ng file close (fd); Fd: file ID (c c t thao tc m file thnh cng)
Lp trnh h nhng
67
Lp trnh h nhng
68
Lp trnh h nhng
69
4.1. Tin trnh (process) v c ch s dng signal 4.2. Lp trnh x l a tin trnh 4.3. Gii thiu v lung 4.4. Lp trnh a lung
Lp trnh h nhng
70
Lp trnh h nhng
71
ls e o pid,ppid,command
Lp trnh h nhng
72
PID, PPID
Ly v PID: s dng hm getpid() Ly v PPID: s dng hm getppid() Hm getpid() v getppid() tr gi tr kiu pid_t (bn cht l kiu int)
Lp trnh h nhng
73
kill PID
Lp trnh h nhng
74
To tin trnh mi
Cch 1: s dng hm system
Lp trnh h nhng
75
To tin trnh mi
Cch 2: s dng hm fork v exec
Lp trnh h nhng
76
C ch s dng signal
Signal l c ch cho php giao tip gia cc tin trnh Signal l c ch khng ng b Khi tin trnh nhn c signal, tin trnh phi x l signal ngay lp tc Linux h tr 32 SIGNAL
Lp trnh h nhng
77
L do gi SIGNAL
Bo cho chng trnh khi thot khi terminal Khi ngi dng nhn Ctrl + C tt chng trnh Khi chng trnh chy lnh khng hp l Khi chng trnh nhn c lnh abort Khi chng trnh nhn c lnh kill (ng chng trnh) Ty bin theo ng dng Ty bin theo chng trnh
Lp trnh h nhng
78
Gi SIGNAL ti process
Cch 1: s dng shell command kill [-SIGNAL_TYPE] PID Cch 2: s dng hm kill trong chng trnh, cho php process ny gi signal ti process khc kill(PID, SIGNAL_TYPE)
Lp trnh h nhng
79
Lp trnh h nhng
80
Lp trnh h nhng
81
Lp trnh h nhng
82
To lung
Khai bo th vin: pthread.h Hm to lung: pthread_create
v thread: thread id v attr: cc thuc tnh ca lung, mc nh NULL v start_routine: hm thc thi trong lung v arg: cc tham s truyn cho lung
M ngun to lung
Lp trnh h nhng
84
Lp trnh h nhng
86
Tt lung
S dng hm pthread_cancel:
Lp trnh h nhng
87
M ngun tt lung
Lp trnh h nhng
88
Lp trnh h nhng
89
Lp trnh h nhng
90
Kernel Module
Cc bc thm mt kernel module vo h thng
Vit m ngun: ch s dng cc th vin c cung cp bi kernel, khng s dng c cc th vin bn ngoi Bin dch m ngun module Ci t module: dng lnh insmod Tn_Module.ko G module: dng lnh rmmod Tn_Module Xem cc thng tin log: s dng System Log Viewer
Lp trnh h nhng
91
Lp trnh h nhng
92
Lp trnh h nhng
93
Lp trnh h nhng
95
96
ng dng QT
Lp trnh h nhng
97
Lp trnh h nhng
98
Lp trnh h nhng
99
Ci t th vin tslib
Lp trnh h nhng
100
Ci t th vin tslib
Lp trnh h nhng
101
Ci t QT-Embedded
Lp trnh h nhng
102
Ci t QT-Embedded
Lp trnh h nhng
103
Copy cc fonts vo th mc /opt/qte/lib/fonts Copy ton b th mc /opt/tslib trn HOST xung th mc /opt/tslib trn KIT
Bc 3: Chnh file cu hnh /etc/init.d/rcS, tt Qtopia trnh tranh chp Bc 4: Chnh sa file cu hnh /opt/tslib/etc/ts.conf (trn KIT): b ch thch dng lnh: module_raw input
Lp trnh h nhng
104
Lp trnh h nhng
105
Lp trnh h nhng
106
Lp trnh h nhng
107
V d
Lp trnh h nhng
108
6.3. Lp trnh QT
Mi trng pht trin C ch signal v slot Chng trnh HelloWorld Cu hnh trnh dch Qmake cho KIT micro2440
Lp trnh h nhng
109
Lp trnh h nhng
110
QT Creator
Lp trnh h nhng
111
Lp trnh h nhng
112
Lp trnh h nhng
113