Professional Documents
Culture Documents
LI NI U.2 LI CM N..3
TOPIC 1: Phn cng kit nhng KM9260 I. Vi iu khin AT91SAM9260 1. c im chnh..4 2. S chn5 3. Ngun cp6 II. 4. Bng vng nh.7 Cc thnh phn khc trn kit 1. B nh.11 2. Kt ni ngoi vi14 3. Nt nhn18 TOPIC 2: Phn cng KIT nhng KM 9261 I. Gii thiu Board AT91SAM926 1. S khi22 2. T chc phn cng..24 TOPIC 3: Phng php bin dch trn KIT KM 9260 I. Gii thiu s lc29 II. III. IV. Cch thc ci cng c trn PC29 Cch thc chp file, truyn file, th vin vo kit30 Thc thi chng trnh trn kit32
TOPIC 4: Gii thiu QT I. Tng quan s lc......35 II. III. IV. Ci t th vin Tslib...36 Ci t th vin Opensource everywhere38 Vit chng trnh n gin trn QT40
TOPIC 5: Phng php bin dch QT sang KIT, thit b nhng hoc in thoi47 TOPIC 6: Gii thiu Gonme/GTK+ I. Gii thiu GNOME/GTK+ .58 II. III. IV. Gii thiu tng quan GTK.58 Ci t GTK+..61 Cch bin dch trn Linux.62
BI TP...63
Trang | 1
LI NI U Trn th gii, h thng nhng xut hin v c mt trn th trng vo nhng nm 1960, cho n nay hn na th k hnh thnh v pht trin. Vi nhng u im m h thng khc khng c nh tnh gn nh, p ng nhanh, tin cy cao, v quan trng l kh nng linh hot trong nhiu ng dng, to iu kin thun li cho sn xut hng lot dn n gi thnh gim. H thng nhng c s dng a dng trong nhiu lnh vc nh: dn dng, qun s, y t, Doanh thu m h thng nhng mang li l rt ln. Ti Vit Nam, vic bt tay vo nghin cu v pht trin phn mm cng nh phn cng h thng nhng ch mi pht trin vi nm tr li y, v c xem l c hi cho cc cng ty in t nghin cu v pht trin ng dng vo cc sn phm cng ngh cao. Tuy nhin i ng nhn lc ca nc ta trong lnh vc thit k h thng nhng cn hn ch. Vit Nam cn y mnh hn na vn nh hng nghin cu v pht trin h thng nhng t trong cc trng i hc v trung tm nghin cu. V vy, bi bo co ny nhm tng kt, cng c li nhng g c hc, ni dung bao gm 6 topic v bi tp. Tp. HCM, thng 11/2013 Nhm 13
Nhm 13
Trang | 2
LI CM N Chng em xin cm n thy u Trng Hin, ph trch mn Chuyn Cng ngh mi, hng dn tn tnh, to iu kin thun li chng em hon thnh bo co ny. Tp. HCM, thng 11/2013 Nhm 13
Nhm 13
Trang | 3
TOPIC 1
PHN CNG KIT NHNG KM9260
Hnh 1.1
I.
AT91SAM9260 c li l b vi x l ARM926EJS thuc h ARM9E h tr tp lnh Thumb (tp lnh nn t 32 bit xung 16 bit) v ARM v c th hot ng vi tc 180Mhz. - B nh: o Giao din bus 32 bit h tr 4 bank SDRAM, b nh tnh, CompactFlash, NandFlash. o C 2 SRAM c tch hp bn trong chp hot ng tc cao. Mi SRAM c dung lng 4 Kbyte. o C 1 ROM bn trong chp c dung lng 32 Kbyte cha chng trnh
Nhm 13 Trang | 4
h thng phc v cho vic khi ng h thng nhng do nh sn np sn. - Ngoi vi: o Bn trong chip tch hp 4 knh ADC 10 bit. o C 2 b truyn d liu khng ng b UART (Universal Asynchronous Receive/Transmitter)
o C 4 b truyn d liu khng ng b/ng b USART (Universal
Synchronous Asynchronous Receive/Transmitter). o Mt giao din truyn nhn d liu theo chun I2C (chun hai dy).
o Mt b iu khin ni tip ng b.
o Hai giao tip SPI h tr hai ch Master/Slaver. o Mt giao din SD/MMC (dng c th nh). o Mt b iu khin 10/100 Mbps Ethernet MAC. o Mt b iu khin truyn nhn USB v mt b truyn nhn USB Device. o Ba b Timer/Counter. - H thng: o C 22 knh DMA (Direction Memory Access). o Khi ng t NAND Flash, SDCard, DataFlash hoc Serial DataFlash. o C b iu khin Reset. o Ma trn bus AHB 6 lp 32 bit hot ng tn s90Mhz. o Mt PLL (b nhn tn s) cho h thng v mt cho USB. o Hai tn hiu xung ng b ngoi c th lp trnh c. o C b iu khin ngt cao cp v sa li. o Tch hp b dao ng ni RC. o Cho php chn tn s tit kim nng lng 32,768 Khz v b dao ng chnh 3 n 20 Mhz. o Cho php ci t ch timer, watchdog timer, realtime timer. o Khi xut nhp: Ba b iu khin Input/Output song song 32 bit. C 96 ng Input/Output a mc ch. 2. S chn ca AT91SAM9260:
Nhm 13 Trang | 5
- AT91SAM9260 c b ngoi hnh vung, c hai dng s chn: mt dng 208 chn v mt dng 217 chn. - Dng 208 chn: Cc chn c a ra xung quanh ca gi nha bc li v c t tn theo s t 1 n 208. Hnh dng c minh ha nh sau:
Hnh 1.2: S chn ca AT91SAM9260 208 chn - Dng 217 chn: cc chn c a ra pha di ca gi nha bc li. Hnh dng c minh ha nh sau:
Hnh 1.3: Schn ca A91SAM9260 217 chn V tr ca cc chn ny c xc nh bng cch ghp cc ch ci ca hng vi cc s ca ct v chn gn vi chm en lm du trn thn ca chp l chn A1. 3. Ngun cp cho AT91SAM9260: c tnh tit kim nng lng l mt trong nhng th mnh ca h vi x l ARM. tit kim c nng lng, bn cnh mt kin trc li tit kim nng lng th vi iu khin cn c thit kc nhiu ngun cp vi cc mc in p khc nhau. AT91SAM9260 cn c hai ngun cp vi cc mc in p 1,8V v 3,3V. Hai ngun cp ny c cung cp ti cc chn ngun ca chp c th cp ngun cho tng modun tch hp trong chip. C th nh sau: - Chn VDDCORE: chn ny cp ngun nui li vi x l vi in p l 1,8V.
Nhm 13 Trang | 6
- Chn VDDIOM: cung cp ngun cho b giao tip Input/Output m rng. in p cp n chn ny l 1,8 V hoc 3,3 V c chn bi phn mm. - Chn VDDIOP0: cung cp cho b giao tip Input/Output ngoi vi (USB, Micro SD) vi in p 3,3V. - Chn VDDBU: cung cp in p cho b dao ng chm (dao ng ni RC v thch anh 32,768 Khz) vi in p 1,8V. - Chn VDDPLL: cung cp in p cho b dao ng chnh v b nhn tn s vi in p l 1,8V. - Chn VDDANA: cung cp in p cho b ADC vi in p 3,3V. 4. Bng vng nh ca AT91SAM9260: AT91SAM9260 c th qun l mt vng nh ln n 4 Gbyte a ch,vng nh ny c phn thnh 16 bank vi mi bank l 256Mbyte a ch.Mi bank ny s qun l b nh ca mt thi t b nh nht nh hoc mt vng nh nht nh. Mc d thit b nh hoc vng nh khng cha d liu hoc khng ng dng trong h thng, nhng AT91SAM9260 vn dnh vng nh cho thit b nh hoc vng nh ca n. C th s c trnh by trong hnh sau:
Nhm 13
Trang | 7
Hnh 1.4: Bng qun l vng nhca AT91SAM9260 Theo hnh trn th chng ta c th thy bng vng nh ca AT91SAM9260 c chia ra thnh nhiu bank qun l. Bank trn cng l bank 0, tip theo l bank 1, cho n cui cng l bank 15. Cc a ch nm bn tri cc ct chnh l cc a ch vt l. Bn phi cc ct l dung lng ca vng nh tng ng.
Nhm 13 Trang | 8
Chng ta c th thy rng mi thit b nh hoc vng nh u c vi x l qun l trong mt khong a ch nht nh. Nu thit b nh c qun l bi bank 1 th nh u tin ca thit b nh (c a chl 0x0000000) s c vi x l c vi a ch l 0x10000000 , nh th hai (c a ch 0x00000001) s c c vi a ch l 0x10000001. Tng t th nh cui cng ca thit b nh (c a ch 0x0FFFFFFF) c vi x l cvi a chl 0x1FFFFFFF. Nh vy, chng ta c th thy a ch thc t ca nh c vi x l cvi mt a ch hon ton khc. a ch vt l: l a ch m vi x l gn cho vng nh cn c qun l. Theo hnh trn th a ch vt l chnh l cc a ch nm bn tri cc ct. a ch on: l a ch vt l ti nh u tin ca vng nh. Theo hnh trn th a ch on ca bank 1 l 0x10000000. a ch offset: l khong cch tnh t nh ang xt n a ch on. Nh vy a ch offset c th hiu l a ch thc t ca thit b nh. a ch offset ca nh th nht ca thit b nh l 0x00000000, ca nh th hai l 0x00000001 v ca nh cui cng l 0x0FFFFFFF. Bank 0 dng qun l b nh ni ca ca vi x l. ROM cqun l vi a ch vt l t 0x00100000 n 0x00108000 vi dung lng l 32Kbyte. Tng t vng nh SRAM0 cng c qun l t 0x00200000 n 0x00201000 , cc vng nh reserved l cc vng nh d tr. T Bank 1 n bank 8 dng qun l cc thit b nh bn ngoi. C th,bank 2 qun l SDRAMC vi chn chn chip l NCS1. Bank 4 qun l NandFlash vi chn chn chip l NCS3/NANDCS. Khi vi x l truy cp cc thit b nh ny th vi x l s a tn hiu chn vng nh ra cc chn NCS0 n NCS7 chn chip tng ng. Bank 15 qun l qun l vng nh ca cc thit b ngoi vi. Cc vng nh c mu m l cc vng nh d tr hoc l cha s dng n.
Nhm 13
Trang | 9
II.
Hnh 1.5: Kit KM9260 STT 1 2 3 K HIU J3 J7 U2 Cng USB (loi A) Cng USB Devices (loi B) MT48LC16M16A2, SDRAM 256Mb (32MB) 133Mhz 4 5 6 7 8 9
Nhm 13
TN
J17 J10 U8 J5 U9 U1
Kt ni m rng SCI Cng truyn d liu ni tip BD9 K9F2G08UOM, NAND Flash (256MB) Giao tip JTAG ICE Serial dataflash (512kB) AT91SAM9260, 16/32 bit ARM926EJ-S 180Mhz
Trang | 10
10 11 12 13 S4 14 15 16 17 18
Jack ngun 5VDC DM9161EA, Ethernet 10/100 Full-Duplex Cng Giao tip Ethernet (RJ45) Cc nt nhn
Khe th nh MicroSD I2C EEPROM Cng tt ngun Kt ni m rng Uart, Adc, Twi Kt ni m rng SPI
1. B nh 1.1 B nh SDRAM
thng.
Thng s ca SDRAM
M s linh kin l s c in trn chn ca chip, m ny do nh sn xut Chn chn chip NCS1 c ngha l chn CS ca chip c ni vi chn a ch on l a ch m vi x l gn cho chip tng ng vi NCS1. Dung lng ca SDRAM l 32 MB
S kt ni Serial DataFlash Board s dng chip nh serial dataflash kt ni qua ng SPI0 ( slot
CS1 ).
Nhm 13
Trang | 12
U-Boot c lu tr trong serial data flash. Cc phn vng cha cc bootloader c th hin bi bng sau:
M s linh kin Chn chn chip a ch on Dung lng Offset 0x00000000 0x00004200 0x00008400 AT45DB041D-SU NCS2 0xD0000000 0x80000 (512kB) Phn Vng 0 1 2 Phn mm lu Bootstrap Environment U-Boot
S kt ni NAND FLASH Nand flash 256 MB dng cha nhn Linux v root file system. 3 MB vng nh u tin dnh cho vic cha kernel Linux, phn vng cn li cha root file system ca h thng bng sau th thin thng s memory map ca Nand flash.
Nhm 13 Trang | 13
M s linh kin Chn chn chip a ch on Dung lng Offset 0x00000000 0x00300000
K9F2G08UOM NCS3 0x40000000 0x10000000 (256MB) Phn Vng 0 1 Thng s ca NAND FLASH Phn mm lu Kernel Rootfs (JFFS2)
1.4 Th nh MicroSD :
Khe cm th nh MicroSD
- Do c h tr microSD, c th thay th vai tr ca NAND Flash cho vic lu tr kernel Linux vi rootfs. Phn vng u tin (first partition) c format theo nh dng FAT, phn vng th 2 c nh dng theo ext2 hoc ext3 dng cha rootfs. load kernel Linux t MicroSD vo SDRAM i hi U-Boot phi h tr mmc sub system command set. MicroSD thng c dng boot Linux c roofs dung lng ln, v d nh Debian distribution.
Cng USB
Cng USB tc truy xut 2.0, tng t MicroSD, h thng c th boot Linux
Nhm 13 Trang | 14
Cng USB Device Vi USB device connector, ta c th bin board nhng thnh cc thit b USB. MCU AT91SAM9260 cho php ta truy xut n tt c cc vng nh trong h thng thng qua chng trnh ng dng trn my tnh SAMBA, khi dy cable USB ny c dng n.
Cng truyn d liu ni tip DB9 AT91SAM9260 c tch hp cng RS232. KM9260 dng cng RS232 ny cho vic hin th, xut nhp vi console chnh ca Linux.
Cng kt ni Ethernet AT91SAM9260 c th kt hp vi chp Fast Ethernet PHY DM9161AEP mang li cho h thng tnh nng mnh m v cc ng dng mng. KM9260 c th s dng
Nhm 13 Trang | 15
nh h thng webserver nhng, s dng trong h thng thu thp o lng, iu khin t xa.
Connector cho php ta c th m rng kt ni vi cc thit b I2S audio codec, truyn nhn d liu 32bit stream ( High-speed Continuous Data Stream )...
S CHN
TN HIU
CHN VXL
S CHN
TN HIU
CHN VXL
1 3 5 7 9
2 4 6 8 10
S chn ca khe cm kt ni m rng SPI Connector m rng cho SPI, bao gm 3 ng chip select tng ng cho 3 slot CS0, CS1, S2.
Nhm 13
Trang | 17
S chn ca khe cm kt ni m rng Uart, Adc, Twi Connector m rng cho cc cng giao tip serial bao gm UART, TWI, b chuyn i ADC, GPIO, ngt ngoi IRQ1.
Bng S chn ca khe cm giao tip JTAG ICE Cng JTAG ICE theo chun 20 pin cho php np chng trnh v debug h thng.
Nt ng dng 1 User button, kt ni vi PC15 (chn 127) ca AT91SAM9260 MCU. Tch cc mc thp.
Nt ng dng 2 User button, kt ni vi PC8 (pin 61) ca AT91SAM9260 MCU. Tch cc mc thp.
Nhm 13
Trang | 19
TOPIC 2 GII THIU BOARD AT91SAM9261 I. Gii thiu Board AT91SAM9261 AT91SAM9261 l board nhng trn nn vi iu khin ARM9. Board c kch thc nh gn v c tnh nng mnh, s dng dng vi iu khin AT91SAM9 ca ATMEL cho php h thng chy vi cc h iu hnh nhng Linux, WinCE v C/OS-II RTOS. Bao gm: CPU Phn m rng giao tip s. Cng ngh ARM Jazelle cho php gia tng tim lc ca java. 16 Kbytes b nh d liu, 16 Kbytes b nh lnh, write buffer Thc thi 120 lnh (MIPS) khi hot ng tn s 190MHZ. n v qun l b nh. 32 Kbytes SPI Serial EEPROM AT25256A 4 Mbyte 16-bit Flash 64 Mbyte 32-bit SDRAM 2 Gbit NAND Flash, 16-bit 16 Mbits SPI Serial DataFlash AT45DB161B 32 Kbytes SPI Serial EEPROM AT25256A Serial Number Chip DS2401 Kt ni SODIMM 200-chn Kch thc 67.6 mm x 47.0 mm Ngun cung cp AT91SAM9261 c 6 nhm thc hin in p: VDDCORE: Ngun cho li gm b x l, b nh v ngoi vi. Mc in p l 1.08V,1.32V v 1.2V nh mc. VDDIOM: Ngun cho External Bus Interface I/O; mc in p t 1.65V n 1.95V v 3.0V n 3.6V, 1.8V and 3.3V nh mc. VDDIOP: Ngun cho ngoi vi I/O and b khi phc p USB; mc in p 2.7V v 3.6V, 3.3V nh mc.
Nhm 13 Trang | 20
VDDBU: Ngun cho b dao ng Slow Clock v phn h thng iu. Mc in p 1.08V v 1.32V, 1.2V nh mc. VDDPLL: Ngun cho PLL cells; 3.0V v 3.6V, 3.3V nh mc. VDDOSC: Ngun cho b dao ng mc in p 3.0V, 3.6V v 3.3V nh mc. Bng 2.1: c t v giao din chnh CLASS Processor Memory FUNCTION CPU SDRAM NandFlash DataFlash SD Card PARAMETER Atmel AT91SAM9261, ARM9, 200MHz 64MB 128MB Optional Support 4G SDIO mode Support hotswappable Power Input Output Ext bus Aysbus interface
Voltage : 7 35 V. default 12 V power input
5V and Vin (+-5%) A1-A22. D0-D15 with buffer COM0: RS232/TTL 3-wire COM1: RS232/TTL 5-wire COM2: RS232/TTL/RS485 5-wire
1-chanel USB 2.0 device TFT LCD interface. RGB mode default 320*240 max 2048*2048
Input / output
4-line touch screen 4*4 matrix keyboard interface 1 Buzzer 16 (10 from CPU + 6 from sxtern IC)
Panel
Nhm 13
Nhm 13
Trang | 22
Hnh nh thc t
Hnh 2.2: Hnh nh thc t ca board AT91SAM9261 Bao gm SODIMM 200 pin for reception of PM9261 1 cng USB 1 chun Ethernet RJ45 10/100M JTAG, 20-chn 1 mn hnh cm ng 3.5" 1/4 VGA TFT LCD + Touch Screen - 40 chn 2 cng RS232 4 kt ni m thanh : Line In, Line Out, Headphone, Microphone 1 card MMC/SD 1 Compact Flash expansion connectors 1 reset push-button 1 wakeup push-button 2 user input push-buttons
Nhm 13 Trang | 23
3 LEDs 2 ngun LEDs: 5V v 3.3V 1 pin Lithium Coin Kt ni DC 2.1 mm by 5.5 mm. kch thc 145 mm x 145 mm. 2. T chc phn cng trong s khi ca boardAT91SAM9261 16 bit SDRAM
Nhm 13
Trang | 24
Nhm 13
Trang | 26
Compact Flash
Nhm 13
Trang | 27
Nhm 13
Trang | 28
TOPIC 3 PHNG PHP BIN DCH TRN KIT KM 9260 I. Gii thiu s lt
Trnh bin dch cho cho php bin dch ng dng vit bng ngn ng C bin dch cho AT91SAM chy trn mi trng Linux. Thc hnh bin dch chng trnh v np chng trnh xung KIT thc thi.
II.
* Gm 3 bc: Bc 1 : Ci t trnh bin dch cho Cross GCC trn my tnh Linux Trc tin ta download arm-linux-gcc ti link sau: http://www.friendlyarm.net/dl.php?file=arm-linux-gcc-4.4.3.tgz Chuyn n th mc cha file nn arm-linux-gcc-4.4.3.tar.gz v tin hnh gii nn : $ cd Downloads/ $ sudo tar xvzf arm-linux-gcc-4.4.3.tgz C/ Sau nhp password gii nn Kt qu gii nn c th mc cha trnh bin dch c ng dn nh sau: opt/FriendlyARM/toolschain/4.4.3/bin Bc 2 : Cp nht bin mi trng PATH cho trnh bin dch cho Mc ch: Cp nht bin mi trng ca Linux OS cho trnh bin dch cho c th s dng trc tip mi ni (Gi lnh trn cc ca s lnh m khng cn chuyn n th mc cha)
Thc hin: M file ~/.bashrc bng trnh son tho thch hp (gedit, vi, vim, ): gedit .bashrc . (Ch : file nm trong th mc tng ng, Mc nh b n). Thm 1 dng vo cui file .bashrc
Nhm 13 Trang | 29
PATH=$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin Lu v ng file .bashrc. Sau khi thit lp bin mi trng cn tt ca s terminal, m ca s mi thit lp c hiu lc. Bc 3 : kim tra thit lp
III.
np file chng trnh ( bin dch trn my tnh bng trnh bin dch cho) ln KIT, chng ta s dng kt ni Ethernet ( cable LAN ) gia my tnh v KIT ( target ) bng phn mm gFTP ( phn mm giao tip truyn file trn Linux/Ubuntu ).
Nhm 13
Trang | 30
Gm cc bc: Bc 1 : Ci t gFTP Thng thng gFTP c ci t sn trn Ubuntu (M Application/Internet/gFTP ) Nu cha c, c th ci t t internet dng lnh: sudo apt-get install gftp
Bc 2: Cu hnh cng LAN trn my tnh Linux KIT KM9260 c a ch IP mc nh l 192.168.3.29, netmask: 255.255.255.0
Nhm 13 Trang | 31
Do vy kt ni cable LAN gia my tnh PC v KIT ( target ) cn cu hnh my tnh c cng gii a ch ny. Thc hin lnh ifconfig cu hnh cho ethernet interface ( eth0 ) $sudo ifconfig eth0 192.168.3.20 netmask 255.255.255.0 up S dng lnh ifconfig eth0 kim tra li xem eth0 c a ch IP cng gii. Bc 3: Thc hin kt ni my tnh v KIT M phn mm gFTP: Applications->Internet->gFTP Thit lp cc tham s a ch IP ca KIT: 192.168.3.29 Username: Password: M kt ni (Click nt Open connection) Ca s bn tri l cy th mc trn my pht trin Ca s bn phi l cy th mc trn kit (Target) gFTP cung cp chc nng duyt/chuyn th mc ( h thng file trn KIT ), v truyn/nhn file gia Host v KIT. (my HOST)
IV.
Bc 1: Vit m ngun chng trnh Hello Dng trnh son tho m ngun thch hp (v d: gedit). Son tho file m ngun C nh sau (Chng trnh c tnh cht minh ha)
#include <stdio.h> int main (int argc, char *argv[]) { printf (Hello World!\n); return 0; }
Nhm 13 Trang | 32
Lu file m ngun Hello.c Bc 2: Bin dch file m ngun s dng trnh bin dch cho Chuyn n th mc cha file m ngun Hello.c c. Bin dch bng lnh: $ gcc o hello hello.c
Nhm 13
Trang | 33
Bc 3: Np chng trnh v thc thi chng bin dch xung KIT Username: root Password: km9260 Gn thuc tnh thc thi: chmod 777 hello - Trn KIT, di chuyn n th mc cha chng trnh chy (/ktmt/bin), thc hin chng trnh: V d ./Hello
Nhm 13
Trang | 34
TOPIC 4
GII THIU QT
I. T NG QUAN S L C V QT Qt l nn tng xy dng cc ng dng chy c trn nhiu h iu hnh. Phn ln cc ng dng xy dng bng Qt u c giao din ha, do vy Qt cn c coi nh l mt b cng c (widget toolkit). Ban u Qt ra i nh mt sn phm thng mi v cng c dng vit mi trng KDE, nhng v sau c b sung giy php LGPL, theo c th c s dng t do pht trin cc phn mm ngun m hay ng hn l c th s dng trong cc phn mm thng mi nu mun. Bn quyn thng mi ca Qt hin nay c chuyn qua hnh thc thu ph h tr. Bn c th dng Qt nh mt th vin vit phn mm thng mi, nu c sa i no trong b ngun chnh ca Qt th bn phi cung cp m ngun sa ra ch khng yu cu phi m ton b m ngun hay phi mua giy php thng mi nh trc kia. C th ni, vic s dng Qt trn Linux gn ging vi vic chng ta s dng Visual Studio trn Windows, tuy nhin nu bn mun s dng Qt trn Windows th vn c phin bn dnh cho h iu hnh ny. Giao din lm vic vi Qt Creator:
Nhm 13
Trang | 35
Applications
Install
Sau khi ci t xong, khi ng Qt chng ta cng lm cc bc sau: Applications
Programming
Qt Creator
II. ci t th vin Tslib. Tslib l mt th vin cung cp cc stack, cc chc nng cho vic giao tip vi touchscreen trong h thng Linux. Trc ht chng cn ci t gi git-core nhm gip vic ly source ca tslib t server cung cp. Cc bc tin hnh ci t v build tslib nh sau: Bc 1: M terminal $ apt-get install git-core
Nhm 13 Trang | 36
d qun l th th mc QtTut c to lu tr cc file c lin quan. to th muc QtTut ta thc hin bng 2 dng lnh sau: $ cd / $ mkdir QtTut V bt u ti th vin bng 2 dng lnh tip theo nh sau: $ cd /QtTut/ $ git clone http://github.com/kergoth/tslib.git Sau khi ti thnh cng th mn hnh Terminal c giao din nh hnh di y:
Sau config cho gi tslib bng lnh sau: $ cd /QtTut/tslib $ ./autogen.sh $ ./configure --host=arm-angstrom-linux-gnueabi --prefix=/usr/local/tslib -enable-static enable-shared y c hiu nm na l chng ta s chy th vin ny trn nn phn cng ARM, prefix vi ng dn s cha th mc tslib sau khi c build,tin hnh build th vin tslib nh sau: $ make $ make install V th vin s c to nh hnh di y:
Nhm 13
Trang | 37
III. Ci t th vin Opensource everywhere. Th vin ny s gip chng ta bin dch ng dng ca Qt chy trn nn phn cng ARM. Chng ta ti mt trong 2 gi ny v ng vi mi phin bn Ubuntu: http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.6.2.tar.gz (Ubuntu 10.04 LTS) http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.7.0.tar.gz (Ubuntu 10.10) Copy file v a ti v v o th mc tTut b ng lnh sau: $ cp /qt-everywhere-opensource-src-4.6.2.tar.gz /QtTut/ Sau gii nn: $ tar -zvxf qt-everywhere-opensource-src-4.6.2.tar.gz Truy cp vo th mc va gii nn: $ cd qt-everywhere-opensource-src-4.6.2 Chnh sa cc file sau bng gedit c sn trong Qt: $ gedit mkspecs/common/g++.conf
Nhm 13 Trang | 38
Thay i dng sau: QMAKE_CFLAGS_RELEASE += -O2 Thnh QMAKE_CFLAGS_RELEASE += -O0 ng ca s gedit, g tip dng sau: $ gedit /mkspecs/qws/linux-arm-g++/qmake.conf Sa ton b ni dung ca file thnh nh sau: # # qmake configuration for building with arm-linux-g++ # include(../../common/g++.conf) include(../../common/linux.conf) include(../../common/qws.conf)
# modifications to g++.conf QMAKE_CC = /usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-gcc QMAKE_CXX = /usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-g++ QMAKE_LINK = /usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-g++ QMAKE_LINK_SHLIB = /usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-g++ # modifications to qmake.conf QMAKE_AR = /usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-ar cqs QMAKE_OBJCOPY = /usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-objcopy QMAKE_STRIP = /usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-strip QMAKE_INCDIR += /usr/local/tslib/include QMAKE_LIBDIR += /usr/local/tslib/lib load(qt_config) Sau khi thc hin th nh cng 2 b c trn, chng ta s config cho th vin vi lnh sau:
Nhm 13
Trang | 39
$ mkdir /usr/local/Qt $ cd /QtTut/qt-everywhere-opensource-src-4.6.2/ $ ./configure -embedded arm -xplatform qws/linux-arm-g++ -prefix /usr/local/Qt -qt-mouse-tslib -little-endian -no-webkit -no-qt3support -no-cups -no-largefile optimized-qmake -no-openssl -nomake tools Configure thnh cng chng ta s tin hnh build: $ make $ make install Sau mt khong thi gian, khi build thnh cng, chng ta s c th mc Qt nh ng dn trn, trong c cha cc file cn thit h tr cho Qt. IV. Vit chng trnh n gin s dng Qt * vit mt chng trnh v m phng trn Qt th ta lm theo trnh t cc bc nh sau:
1.To Project 2.To Giao din vi Qt Gui 3.Add code 4.Build + Run
Trn y l cc bc vit mt chng trnh tnh tng ca 2 s dng Qt Creator: To mt project mi vi tn tinhtong2so : y l giao din khi khi ng Qt Creator.
Nhm 13
Trang | 40
Chn Qt C++ Project/Qt GUI Application, thc hin tip cc bc theo hng dn Wizard ca Qt Creator. Lu chn cu hnh nn tng bin dch thit lp bin dch ng dng chy trn KIT FriendlyArm (hoc bin dch chy trn desktop).
Nhm 13
Trang | 41
t tn xong ri chn Next tip tc: - Tip theo chn phin bn Qt cho project (ng dng cho nn tng Desktop, FriendlyArm , )
Xong nhn Next - in thng tin tn lp s to ra trong khung chng trnh mu, chn lp c s (base class) cho form chnh l Qwidget. Cc file m ngun tng ng s c t ng t tn v cp nht.
Nhm 13
Trang | 42
Nhm 13
Trang | 43
- Vo Input Widgets Ko 3 cng c c tn Line Edit ri ko chnh to thnh 2 nhp gi tr v 1 hin th kt qu. - Vo Display Widgets ri Ko 1 cng c c tn Label hin th du + - Vo Buttons tm v ko 1 cng c c tn Push Button v b tr khi nhn du = s hin th kt qu. Sau khi ko cc cng c v b tr cn chnh th giao din tnh tng c kt qu trn mn hnh nh sau:
* Bc tip theo ta vit code cho tng nt nhn bng thao tc Click phi chut vo tng nt chn Go to slot - chn Click s xut hin vng vit code nh sau:
Nhm 13 Trang | 44
ui->c->setText(QString::number((ui->a->text().toInt())+(ui->b->text().toInt())));
RUN
REBUID
Nhm 13
Trang | 45
Nhm 13
Trang | 46
TOPIC 5
PHNG PH P BIN D CH Qt SANG KIT HO C THI T B NH NG HO C IN THO I. chy c ng dng trn board FriendlyARM, chng ta s cn ti qmake ca th vin Qt c build pha trn ca bi vit. Nhp vo th Project , chng ta s setting cho project, y bn s thy cc vng thit lp cho vic build project. Ti General Nhn dng Qt Version, bn nhn vo Manage. Trong hp thoi hin ra, th Qt version, trong danh sch chng ta nhn thy c Auto-dectected v Manual. Nhp chut chn Manual, nhn du cng bn phi hp thoi, ti Version name g FriendlyARM, ti qmake location, bn tm n ng dn cha file qmake ca Qt lc trc build, c th n ng dn nh sau: /usr/local/Qt/bin/qmake Apply ->> OK. Tr v th Project, vi Build Setting, trong General, b chn Shadown build. trong Qt version chn FriendlyARM. Bn di Build Setting c ln, ti Edit build Configuration chn FriendlyARM Realease. Cui cng chng ta c nh sau:
Nhm 13
Trang | 47
Save li v build ng dng. Vo menu Build ->> Rebuild All. Build thnh cng chng ta s c file thc thi nh trong hnh, file c mu tm:
Bc tip theo chng ta s lm cho file ny chy c trn board FriendlyARM. Khi ng board FriendlyARM, sau khi khi ng chng ta s iu khin lnh thng
Nhm 13 Trang | 48
qua telnet: kt ni board FriendlyARM vi PC thng qua cng mng, hoc kt ni chung vo mt switch. kim tra kt ni : $ ping 192.168.1.230 $ telnet 192.168.1.230 G ti khon ng nhp v password.
to th mc cha file chng trnh: [root@FriendlyARM /]# mkdir myApp tip theo chng ta s tin hnh truyn file apphello ti board thng qua ng mng vi giao thc ftp.
Nhm 13
Trang | 49
M mt terminal mi trn ubuntu g lnh sau: $ cd /apphello/ $ ftp 192.168.1.230 ng nhp vi ti khon v mt khu ging trong telnet
G lnh sau gi truyn file chng trnh xung board: ftp> put apphello apphello l tn file chng trnh c build pha trn. trong th mc apphello cha file thc thi apphello, bn to file c ni dung: #!/bin/sh if [ -e /etc/friendlyarm-ts-input.conf ] ; then . /etc/friendlyarm-ts-input.conf fi true ${TSLIB_TSDEVICE:=/dev/touchscreen}
TSLIB_CONFFILE=/etc/ts.conf export TSLIB_TSDEVICE export TSLIB_CONFFILE export TSLIB_PLUGINDIR=/usr/lib/ts export TSLIB_CALIBFILE=/etc/pointercal export QWS_DISPLAY=:1 export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
Nhm 13 Trang | 50
export PATH=/bin:/sbin:/usr/bin/:/usr/sbin:/usr/local/bin if [ -c /dev/touchscreen ]; then export QWS_MOUSE_PROTO="Tslib MouseMan:/dev/input/mice" if [ ! -s /etc/pointercal ] ; then rm /etc/pointercal /usr/bin/ts_calibrate fi else export QWS_MOUSE_PROTO="MouseMan:/dev/input/mice" fi export QWS_KEYBOARD=TTY:/dev/tty1 export HOME=/root cd /myApp ./apphello -qws hotplug t tn file l appscript, save li v ng ca s edit li. Ti khung terminal ftp g lnh sau: ftp> put appscript ti ca s terminal telnet chng ta s kim tra file ti th mc root di board [root@FriendlyARM /]# ls
g cc lnh sau cho php cc file thc thi trong mi trng s hu. [root@FriendlyARM /]# chmod +x apphello [root@FriendlyARM /]# chmod +x appscript
Nhm 13 Trang | 51
Kim tra li vi lnh ls ta thy mu hin th ca file chuyn sang mu xanh l cy l ok. tip theo di chuyn chng vo th mc myApp c to trn [root@FriendlyARM /]# mv apphello /myApp [root@FriendlyARM /]# mv appscript /myApp Ti ca s terminal telnet, g lnh sau chnh sa file rS trong th mc /etc/init.d/rcS [root@FriendlyARM /]# vi /etc/init.d/rcS Di chuyn con tr ti v tr cn sa sau nhn phm i nhp d liu, sau khi sa xong nhn phm ESC - > :w ->> Enter lu li. sa ni dung ca file rcS thnh nh sau:
#! /bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin: runlevel=S prevlevel=N umask 022 export PATH runlevel prevlevel # # Trap CTRL-C &c only in this shell so we can interrupt
subprocesses.
# trap ":" INT QUIT TSTP /bin/hostname FriendlyARM [ -e /proc/1 ] || /bin/mount -n -t proc none /proc
-t ramfs none
Trang | 52
/proc/bus/usb echo /sbin/mdev > /proc/sys/kernel/hotplug /sbin/mdev s /bin/hotplug # mounting file system specified in /etc/fstab mkdir -p /dev/pts mkdir -p /dev/shm /bin/mount -n -t devpts none /dev/pts -o mode=0622 /bin/mount -n -t tmpfs tmpfs /dev/shm /bin/mount -n -t ramfs none /tmp /bin/mount -n -t ramfs none /var mkdir -p /var/empty mkdir -p /var/log mkdir -p /var/lock mkdir -p
Nhm 13
Trang | 53
/sbin/hwclock s syslogd /etc/rc.d/init.d/netd start echo " /dev/tty1 echo "Starting networking..." > /dev/tty1 sleep 1 /etc/rc.d/init.d/httpd start echo " /dev/tty1 echo "Starting web server..." > /dev/tty1 sleep 1 /etc/rc.d/init.d/leds start echo " /dev/tty1 echo "Starting leds service..." > /dev/tty1 echo " " "> "> ">
Nhm 13
Trang | 54
sleep 1 echo " /dev/tty1 /etc/rc.d/init.d/alsaconf start echo "Loading sound card config..." > /dev/tty1 echo " /sbin/ifconfig lo 127.0.0.1 " ">
/etc/init.d/ifconfigeth0 #/bin/qtopia & /myApp/appscript & echo " /dev/tty1 echo "Starting myApp, please waiting..." > /dev/tty1 ">
Nhm 13
Trang | 55
Ctrl+Z thot edit, tr li dng input lnh. Copy Qt lib c sn di board, th vin cn thit c th chy ng dng Qt di board FriendlyARM [root@FriendlyARM /]# mkdir /usr/local/Qt [root@FriendlyARM /]# cp -r /usr/local/Trolltech/QtEmbedded-4.7.0arm/lib/ /usr/local/Qt/ G lnh sau restart li board: [root@FriendlyARM /]# shutdown -r now Quan st di board:
Nhm 13
Trang | 56
TOPIC 6
GII THIU GNOME/GTK+ I. GII THIU GNOME/GTK+
GNOME (GNU Network Object Model Environment) l b phn mm cung cp mi trng mn hnh nn dng cho h iu hnh Linux cng nh cho cc h iu hnh khc. GNOME l mt d n tin hc c hai mc ch: xy dng mi trng lm vic GNOME trc gic, hp dn i vi ngi dng v mi trng pht trin ng dng GNOME. GNOME c lp trnh bng ngn ng C. Trong phin bn GNOME ra mt GNOME bluetooth gip ngi dng qun l cc thit b khng dy. Ngoi ra cn ci tin nhiu trnh ng dng: time tracker(theo gii thi gian hot ng ca cc trnh ng dng trn my), Empathy(chat), media player, cheese(ghi hnh qua Webcam). GTK l b cng c dng to giao din ngi dng ha. Cc ng dng:
"Web" browser
Video chat trn Empathy GTK hoc b cng c GIMP: l mt b cng c a nn tng cho vic to ra cc giao din ngi dng ha. Cung cp mt b y cc vt dng, GTK l ph hp cho cc d n khc nhau, t cc cng c mt ln nh hon thnh b ng dng. GTK c vit bng C nhng c thit k ln h tr mt lot cc ngn ng. S dng GTK t cc ngn ng nh Perl v Python (c bit l khi kt hp vi Glade GUI builder) cung cp mt phng php hiu qu ca pht trin ng dng nhanh chng. II.
Nhm 13
1. Cc th vin quan trng ca Gtk+: Glib GObject GDK GdkPixbuf Pango ATK 2. Cc lp ca GTKwindow
GOject: l lp c bn nht cung cp thuc tnh cho tt c th vin nn cho GTK+ v Pango.(G_OBJECT() ) GInitiallyUnowned: y l lp m ngi lp trnh khng c truy cp cho n khi cc lp khc c bo mt. GtkObject: l lp nn cho tt c GTK+ object. N c thay th gn nh hon ton lp nn cho tt c cc object Gtk+ 2.0.(GTK_OBJECT() ) GtkWidget: l lp nn tru tng cho tt c cc Gtk+ Widget. N gii thiu cc loi t tnh v chc nng chun cn thit cho tt c widget. (GTK_WIDGET() ) GtkContainer: l lp nn tru tng cha mt hoc nhiu widget. N l cu trc cc k quan trng, do bn khng th them bt c widget no m khng c n.(GTK_CONTAINER() ) GtkBin: l mt lp nn khc cho php widget cha ch mt lp con. N cho php c nhiu widget c cu trc khng cn s dng li d liu.(GTK_BIN() )
Trang | 58
Nhm 13
4. Cc GtkWidget im hnh trong GTK a. GtkWindow Lnh khi to: Gtk_window_new(GtkWindowType type);
c. GtkButton
Nhm 13 Trang | 59
5. Chng trnh v d: #include <gtk/gtk.h> int main(int argc , char ** argv ) { GtkWidget * window; //khai bo bin cho widget gtk_init(&argc,&argv); //ci t b cng c window = gtk_window_new(GTK_WINDOW_TOPLEVEL); //khi to ca s gtk_container_set_border_width(GTK_CONTAINER(window), 10 ); gtk_window_set_title(GTK_WINDOW(window), "Linux GUI-Hello World!!!" ); gtk_window_resize(GTK_WINDOW(window), 500 , 500); gtk_widget_show(window); //hin tt c cc widget gtk_main(); // chy vng lp chnh cho n khi gtk_main_quit () c gi return 0 ; }; III. CI T GTK+ 1. C i t offline: Ti bn Glib, Pango, ATK v Gtk+2.0. Gii nn: Ci ln lc cc gi trn bng Terminal: ./configure Make su make install 2. Ci online:
Nhm 13 Trang | 60
M terminal: sudo apt-get install libgtk2.0-dev sudo apt-get install pkg-config sudo apt-get install devhelp sudo apt-get install libglib2.0-doc libgtk2.0-doc IV. CCH BIN D CH TRN LINUX Gkt+ cho php ngi dng bin dch trn linux bng cch s dng gcc v pkgconfig. M ca s Terminal: gcc -Wall -g helloworld.c -o helloworld `pkg-config --cflags gtk+-2.0` \`pkg-config --libs gtk+-2.0` M terminal
a ng dn n file .c va to
Nhm 13
Trang | 61
BI TP QT: CALCULATOR
nhom13.cpp
#include "nhom13.h" #include "ui_nhom13.h" #include "math.h" nhom13::nhom13(QWidget *parent) : QMainWindow(parent), ui(new Ui::nhom13) { ui->setupUi(this); } double a,b,c; int pheptoan; nhom13::~nhom13() {
Nhm 13 Trang | 63
delete ui; } void nhom13::on_pushButton_0_clicked() { ui->lineEdit->setText(ui->lineEdit->text()+ui->pushButton_0->text()); } void nhom13::on_pushButton_1_clicked() { ui->lineEdit->setText(ui->lineEdit->text()+ui->pushButton_1->text()); } void nhom13::on_pushButton_2_clicked() { ui->lineEdit->setText(ui->lineEdit->text()+ui->pushButton_2->text()); } void nhom13::on_pushButton_3_clicked() { ui->lineEdit->setText(ui->lineEdit->text()+ui->pushButton_3->text()); } void nhom13::on_pushButton_4_clicked() { ui->lineEdit->setText(ui->lineEdit->text()+ui->pushButton_4->text()); } void nhom13::on_pushButton_5_clicked() { ui->lineEdit->setText(ui->lineEdit->text()+ui->pushButton_5->text()); } void nhom13::on_pushButton_6_clicked() { ui->lineEdit->setText(ui->lineEdit->text()+ui->pushButton_6->text()); } void nhom13::on_pushButton_7_clicked() { ui->lineEdit->setText(ui->lineEdit->text()+ui->pushButton_7->text()); } void nhom13::on_pushButton_8_clicked() { ui->lineEdit->setText(ui->lineEdit->text()+ui->pushButton_8->text());
Nhm 13 Trang | 64
} void nhom13::on_pushButton_9_clicked() { ui->lineEdit->setText(ui->lineEdit->text()+ui->pushButton_9->text()); } void nhom13::on_pushButton_Dot_clicked() { ui->lineEdit->setText(ui->lineEdit->text()+ui->pushButton_Dot->text()); } void nhom13::on_pushButton_AC_clicked() { ui->lineEdit->clear(); } void nhom13::on_pushButton_C_clicked() { ui->lineEdit->setText(""); } void nhom13::on_pushButton_Cong_clicked() { a=ui->lineEdit->text().toDouble(); ui->lineEdit->setText(""); pheptoan=1; } void nhom13::on_pushButton_Tru_clicked() { a=ui->lineEdit->text().toDouble(); ui->lineEdit->setText(""); pheptoan=2; } void nhom13::on_pushButton_Nhan_clicked() { a=ui->lineEdit->text().toDouble(); ui->lineEdit->setText(""); pheptoan=3; } void nhom13::on_pushButton_Chia_clicked() { a=ui->lineEdit->text().toDouble();
Nhm 13 Trang | 65
ui->lineEdit->setText(""); pheptoan=4; } void nhom13::on_pushButton_sqr_clicked() { a=ui->lineEdit->text().toDouble(); b=a*a; ui->lineEdit->setText(QString::number(b)); } void nhom13::on_pushButton_Bang_clicked() { b=ui->lineEdit->text().toDouble(); switch (pheptoan) { case 1: { c=a+b; ui->lineEdit->setText(QString::number(c)); break; } case 2: { c=a-b; ui->lineEdit->setText(QString::number(c)); break; } case 3: { c=a*b; ui->lineEdit->setText(QString::number(c)); break; } case 4: { c=a/b; ui->lineEdit->setText(QString::number(c));break; } } } void nhom13::on_lineEdit_cursorPositionChanged(int , int ) { }
Nhm 13
Trang | 66
nhom13.h
#ifndef NHOM13_H #define NHOM13_H #include <QMainWindow> namespace Ui { class nhom13; } class nhom13 : public QMainWindow { Q_OBJECT public: explicit nhom13(QWidget *parent = 0); ~nhom13(); private: Ui::nhom13 *ui; private slots: void on_lineEdit_cursorPositionChanged(int , int ); void on_pushButton_Bang_clicked(); void on_pushButton_sqr_clicked(); void on_pushButton_Chia_clicked(); void on_pushButton_Nhan_clicked(); void on_pushButton_Tru_clicked(); void on_pushButton_Cong_clicked(); void on_pushButton_C_clicked(); void on_pushButton_AC_clicked(); void on_pushButton_Dot_clicked(); void on_pushButton_9_clicked(); void on_pushButton_8_clicked(); void on_pushButton_7_clicked(); void on_pushButton_6_clicked(); void on_pushButton_5_clicked(); void on_pushButton_4_clicked(); void on_pushButton_3_clicked(); void on_pushButton_2_clicked(); void on_pushButton_1_clicked(); void on_pushButton_0_clicked(); }; #endif // NHOM13_H
Nhm 13 Trang | 67
nhom13.pro
#------------------------------------------------# # Project created by QtCreator 2013-10-09T22:04:56 # #------------------------------------------------QT += core gui
OTHER_FILES += \ android/src/org/kde/necessitas/ministro/IMinistro.aidl \ android/src/org/kde/necessitas/ministro/IMinistroCallback.aidl \ android/src/org/kde/necessitas/origo/QtApplication.java \ android/src/org/kde/necessitas/origo/QtActivity.java \ android/AndroidManifest.xml \ android/res/values-fr/strings.xml \ android/res/drawable/icon.png \ android/res/drawable/logo.png \ android/res/values-zh-rCN/strings.xml \ android/res/values-nb/strings.xml \ android/res/values-fa/strings.xml \ android/res/values-ja/strings.xml \ android/res/values-el/strings.xml \ android/res/values-pt-rBR/strings.xml \ android/res/drawable-ldpi/icon.png \ android/res/layout/splash.xml \ android/res/values-it/strings.xml \ android/res/values-et/strings.xml \ android/res/values-ms/strings.xml \ android/res/values-pl/strings.xml \ android/res/values/libs.xml \ android/res/values/strings.xml \ android/res/values-id/strings.xml \ android/res/values-ro/strings.xml \
Nhm 13 Trang | 68
main.cpp
#include <QtGui/QApplication> #include "nhom13.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); nhom13 w; w.show(); return a.exec(); }
Nhm 13
Trang | 69