lap trinh he nhung 1 6
TRANSCRIPT
Mn hc
Lp trnh h nhngGV: Phm Vn Thun B mn K thut My tnh Vin CNTT&TT- H BKHN email: [email protected] Website:http://soict.hut.edu.vn/~thuanpv1
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
2
Ni dung kha hcChng 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
3
Chng 1: Ci t, ty bin HH Linux Gii thiu cc thnh phn c bn ca h iu hnh nhng Linux Ci t h iu hnh nhng Linux trn KIT micro2440 Cu hnh, ty chnh, bin dch nhn h iu hnh nhng Linux
Lp trnh h nhng
4
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
5
Chng 3: Lp trnh vo ra nng cao Lp trnh giao tip cng COM theo chun RS232 Lp trnh giao tip cng USB Lp trnh ghp ni ADC
Lp trnh h nhng
6
Chng 4: Cc k thut lp trnh nng cao
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
7
Chng 5: Lp trnh Driver trn Linux Gii thiu c ch qun l driver trn Linux, cc thnh phn c bn ca Driver Lp trnh to Driver iu khin Led 7 thanh
Lp trnh h nhng
8
Chng 6: Lp trnh giao din QT Gii thiu v nn tng QT Lp trnh giao din vi cc iu khin c bn trn QT Lp trnh x l ha, m thanh trn QT
Lp trnh h nhng
9
Chng 7: Lp trnh mng trn nn 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
Ti liu tham kho Ti liu tham kho chnh: Micro2440 User Manual S3C2440 Datasheet Beginning Linux Programming Advanced Linux Programming Linux Device Driver C++ GUI programming with QT
Lp trnh h nhng
12
Chng 11.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
1.1. Tng quan h iu hnh nhng Linux Kin trc h iu hnh nhng Linux Kin trc nhn h iu hnh Qu trnh khi ng h iu hnh nhng Linux
Lp trnh h nhng
14
Kin trc h iu hnh Linux
Lp trnh h nhng
15
Cu trc nhn h iu hnh
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
Qu trnh boot h thng Linux trn PC
Lp trnh h nhng
18
Qu trnh boot h thng Linux nhng
Lp trnh h nhng
19
Qu trnh boot h thng Linux nhng Boot loader: chng trnh mi, thc hin kim tra phn cng h thng v np nhn (kernel) ca h iu hnh Kernel: nhn h iu hnh, cha cc thnh phn c bn nht Root file system: h thng file, cha cc modules b sung v cc phn mm ng dng
Lp trnh h nhng
20
1.2. Ci t h iu hnh nhng Linux Bc 1: Ci t bootloader (VD: U-Boot, Supervivi) Bc 2: Ci t kernel Bc 3: Ci t h thng file (root file system)
Lp trnh h nhng
21
Gii thiu KIT Micro2440
Lp trnh h nhng
22
Gii thiu KIT Micro2440
Lp trnh h nhng
23
Gii thiu KIT Micro2440
Lp trnh h nhng
24
Gii thiu KIT Micro2440 Thng s k thut
Lp trnh h nhng
25
Gii thiu KIT Micro2440
Lp trnh h nhng
26
Gii thiu KIT nhng micro2440
27
Lp trnh h nhng
Ci t trn mi trng Windows Cng c Phn mm HyperTerminal: kt ni vi KIT micro2440 qua cng COM Phn mm DNW: kt ni vi KIT micro2440 qua cng USB
Cch thc Phn mm HyperTerminal truyn cc lnh iu khin Phn mm DNW trao i file28
Lp trnh h nhng
Ci t trn mi trng Linux Cng c: Phn mm minicom: kt ni vi KIT micro2440 qua cng COM Phn mm usbpush: kt ni vi KIT micro2440 qua cng USB
Cch thc Phn mm minicom truyn cc lnh iu khin Phn mm usbpush trao i file
Lp trnh h nhng
29
1.3. Ty bin, bin dch nhn Linux Khi no cn bin dch li nhn? Khi nng cp h thng ln cc phin bn mi hn Khi v li h thng
Trnh t qu trnh bin dch nhn Download nhn ti a ch: kernel.org Bin dch nhn theo cc bc:Make menuconfig: chn cc thit lp ph hp cho thit b (C th chn cc file config sn c ca cc nh sn xut v ghi vo file .config) Make zImage: to nh cho nhn. nh ny c th np xung KIT.Lp trnh h nhng30
Tho lun
31
Lp trnh h nhng
Chng 2. Lp trnh vo ra cn bn2.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
2.1. Ci t mi trng pht trin M hnh lp trnh Mi trng pht trin ng dng Ci t mi trng
Lp trnh h nhng
33
M hnh lp trnh h thng nhng
Host: h thng cha mi trng pht trin Target: h nhng cn pht trin ng dng34
Lp trnh h nhng
Mi trng pht trin ng dng Phn mm H iu hnh Linux Cross toolchains (gcc 4.4.3): bin dch, GDB: cng c debug gFTP: truyn nhn file HostKIT qua giao thc TFTP Telnet: kt ni KIT qua Ethernet (s dng cross cable)
35
Lp trnh h nhng
3.2. Ci t mi trng pht trin Mi trng pht trin H iu hnh Linux (Ubuntu 9.04 hoc mi hn) Trnh bin dch cho: ARM Linux GCC 4.4.3
Phn mm h tr gFTP
Cu hnh mng s dng Linux host: 192.168.1.30 Linux target: 192.168.1.230
Lp trnh h nhng
36
Ci t trnh bin dch cho Bc 1: Gii nn arm-linux-gcc-4.4.3.tar.gz tar zxvf arm-linux-gcc-4.4.3.tar.gz Bc 2: Cp nht bin mi trng PATH Thm ng dn ti th mc bin ca arm-linuxgcc-4.4.3 (Cp nht bin mi trng PATH trong file .bashrc)
Bc 3: Kim tra trnh bin dch M c s console, g lnh: arm-linux-gcc -version Thng bo v phin bn ca arm-linux-gcc hin ra => qu trnh ci t thnh cng 37Lp trnh h nhng
Kim tra trnh bin dch cho
Lp trnh h nhng
38
Ci t phn mm gFTP Bc 1: Ci t phn mm gFTP G lnh: apt-get install gftp
Bc 2: Kim tra kt ni gia Host v Target M phn mm gFTP: Applications->Internet>gFTP Thit lp cc tham sa ch IP ca KIT: 192.168.1.230 Username: root Password: ktmt (c th i bng lnh passwd)
M kt niLp trnh h nhng39
Kt ni s dng gFTP
Lp trnh h nhng
40
2.2. C bn v lp trnh Linux Cu trc chng trnh n gin Cch thc bin dch chng trnh Np file thc thi xung KIT v chy ng dng
Lp trnh h nhng
41
Cu trc chng trnh Tun th cu trc chng trnh ANSII C
Lp trnh h nhng
42
Chng trnh HelloWorld
Lp trnh h nhng
43
Cch thc bin dch chng trnh Cch 1: S dng lnh ca cross compiler VD: arm-linux-gcc g o Hello Hello.c Kt qu: bin dch ra mt file thc thi c tn l Hello t mt file m ngun l Hello.c, file ny c h tr kh nng debug Cch 2: To v s dng Makefile make l mt tool cho php qun l qu trnh bin dch, lin kt ca mt d n vi nhiu file m ngun. To Makefile lu cc lnh bin dch theo nh dng ca Makefile S dng lnh make chy Makefile v bin dch chng trnh Cch 3: S dng automake v autoconf To makefile t ngLp trnh h nhng44
Cu trc Makefile Makefile cu thnh t cc target, variables v comments Target c cu trc nh sau:
target: dependencies [tab] system command target: make target Dependencies: cc thnh phn ph thuc (file m ngun, cc file object) System command: cc cu lnh (lnh bin dch, lnh linux)Lp trnh h nhng45
VD 1: Makefile n ginCC=arm-linux-gcc all: Hello.c $(CC) g o Hello Hello.c clear: rm HelloBin dch chng trnh: make all Xa file sinh ra trc : make clear
Lp trnh h nhng
46
VD 2: Makefile lin ktCC=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.c47
Lp trnh h nhng
Np file thc thi xung KIT Bc 1: s dng phn mm gFTP chuyn file Hello ( c bin dch trc ) xung KIT, v d xung th mc: /ktmt/bin Bc 2: telnet xung KIT, chuyn ti th mc /dks/bin, thc thi chng trnh G lnh: ./Hello Nu chng trnh cha c quyn thc thi, thc hin cp quyn: chmod +x Hello
Bc 3: quan st kt quLp trnh h nhng48
2.3. C ch lp trnh giao tip thit b Device files, Device number Kim tra danh sch device driver, thit b C ch giao tip
Lp trnh h nhng
49
Device files, Device number Device files: ls l /dev Device file khng phi l file thng thng, khng phi l mt vng d liu trn h thng file Qu trnh c ghi device fileGiao tip vi device driver c, ghi phn cng ca thit b
Phn loi device files Character device: thit b phn cng c, ghi mt chui cc byte d liu Block device: thit b phn cng c, ghi mt khi d liu 50Lp trnh h nhng
Device files, Device number Device number: mi thit b c xc nh bi hai gi tr Major device number: xc nh thit b ny s dng drvier no Minor device number: phn bit gia cc thit b khc nhau cng s dng chung mt device driver
Lp trnh h nhng
51
Kim tra danh sch thit b Kim tra danh sch cc nhm thit b G lnh cat /proc/devices
Lp trnh h nhng
52
Kim tra danh sch thit b Kim tra danh sch cc thit b mount vo h thngvG lnh cat /proc/mounts vG lnh mount
Lp trnh h nhng
53
C ch lp trnh giao tip thit b C ch lp trnh: giao tip qua cc device files S dng cc hm vo ra fileopen close read write
S dng hm iu khin vo ra: ioctl
Lp trnh h nhng
54
2.4. Lp trnh iu khin led
Lp trnh h nhng
55
Lp trnh iu khin led n fd=open(/dev/leds,0) fd: file id /dev/leds: device file 0: WRITE_ONLY
ioctl(fd, on, led_no) Ioctl: IO control iu khin bt/tt led n c s hiu led_no
Driver cho led n: linux-2.6.32.2/drivers/char/mini2440_leds.cLp trnh h nhng56
2.5. Lp trnh ghp ni nt bm
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
close(buttons_fd): ng file Driver cho nt nhn linux2.6.32.2/drivers/char/mini2440_buttons.cLp trnh h nhng58
Chng 3. Lp trnh vo ra nng cao3.1. Lp trnh giao tip cng COM theo chun RS232 3.2. Lp trnh giao tip cng USB 3.3. Lp trnh ghp ni ADC
Lp trnh h nhng
59
3.1. Lp trnh giao tip cng RS232 Chun u ni trn PC Chn 1 (DCD-Data Carrier Detect): pht hin tn hiu mang d liu Chn 2 (RxD-Receive Data): nhn d liu Chn 3 (TxD-Transmit Data): truyn d liu Chn 4 (DTR-Data Terminal Ready): u cui d liu sn sng Chn 5 (Signal Ground): t ca tn hiu Chn 6 (DSR-Data Set Ready): d liu sn sng Chn 7 (RTS-Request To Send): yu cu gi Chn 8 (CTS-Clear To Send): Xa gi Chn 9 (RI-Ring Indicate): bo chung
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 phn1 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 giao tip RS232 Khi to: Khai bo th vin Bc 1: M cng Bc 2: Thit lp tham s Bc 3: c, ghi cng Bc 4: ng cng
Lp trnh h nhng
62
Khai bo th vin #include #include #include #include // UNIX standard function #include // File control definitions #include // Error number definitions #include // POSIX terminal control #include // 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