lap trinh he nhung 1 6

Upload: ken-shin

Post on 10-Jul-2015

363 views

Category:

Documents


2 download

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