I. CÁC KẾT QUẢ ĐẠT ĐƯỢC:
Và nhiều tài liệu khác
PHỤ LỤC
I. KIẾN TRÚC AVR:
Hình 5.1.0: Các pin của Atmega32
AVR có cấu trúc Harvard, trong đó đường truyền cho bộ nhớ dữ liệu (data memory bus) và đường truyền cho bộ nhớ chương trình (program memory bus) được tách riêng. Data memory bus chỉ có 8 bit và được kết nối với hầu hết các thiết bị ngoại vi, với register file. Trong khi đó program memory bus có độ rộng 16 bits và chỉ phục vụ cho instruction registers.
• ALU làm việc trực tiếp với các thanh ghi chức năng chung. Các phép toán được thực hiện trong một chu kỳ xung clock. Hoạt động của ALU được chia làm 3 loại: đại số, logic và theo bit.
• Thanh ghi trạng thái: Đây là thanh ghi 8 bit lưu trữ trạng thái của ALU sau các phép tính số học và logic.
Hình 5.1.2: Thanh ghi trạng thái của Atmega32
-C: Carry Flag cờ nhớ . -Z: Zero Flag Cờ zero.
-N: Negative Flag kết quả phép toán âm. -V: Two’s complement overflow cờ bù 2.
-S For signed tests (S=N XOR V) kiểm tra 2 cờ N và V.
-H: Half Carry Flag được sử dụng trong BCD cho một số toán hạng. -T: Transfer bit used by BLD and BST instructionsđược sử dụng làm
nơi trung gian trong các lệnh BLD,BST.
- I: Global Interrupt Enable/Disable Flag ây là bit cho phép toàn cục ngắt. Nếu bit này ở trạng thái logic 0 thì khơng có một ngắt nào được phục vụ.
• Thanh ghi chức năng chung: Atmega 16 có 32 thanh ghi chức năng chung thực thi nhiều tác vụ trong đó
Hình 5.1.3: Thanh ghi chức năng chung Atmega32
- Một 8 bit output toán hạng và một 8 bit cho input kết quả. - Hai 8 bit output toán hạng và một 8 bit cho input kết quả. - Hai 8 bit cho output kết quả và một 16 bit cho input kết quả. - Một 16 bit cho output toán hạng và một 16 bit cho input kết quả.
- Là một thanh ghi 16 bit nhưng cũng có thể được xem như hai thanh ghi chức năng đặc biệt 8 bit dùng để lưu trữ biến trong q trình tính tốn. Stack được hiểu như là 1 “tháp” dữ liệu, dữ liệu được chứa vào stack ở đỉnh “tháp” và dữ liệu cũng được lấy ra từ đỉnh. Kiểu truy cập dữ liệu của stack gọi là LIFO.
Hình 5.1.4: Stack của Atmega32
- Khai báo SP tại một vùng nhớ trong SRAM với địa chỉ của SP thiết lập >$60. Con trỏ giảm địa chỉ xuống 1 khi dữ liệu được đưa vào Stack với lệnh PUSH và hai khi có Subroutine hoặc Interrupt được gọi. Con trỏ tăng địa chỉ lên 1 khi có lệnh POP dữ liệu thực hiện và lên hai khi trả dữ liệu về cho chương trình con.
• Bộ nhớ chương trình Flash:
Hình 5.1.5: Bộ nhớ của Atmega32
- Bộ nhớ Flash 16KB của ATmega16 dùng để lưu trữ chương trình với độ rộng 16 bit. Do các lệnh của AVR có độ dài 16 hoặc 32 bit nên bộ nhớ Flash được sắp xếp theo kiểu 8KX16.
- Bộ nhớ chương trình chỉ gồm 1 phần là Application Flash Section nhưng trong các chip AVR mới chúng ta có thêm phần Boot Flash section. Boot Section. Thực chất, application section bao gồm 2 phần: phần chứa các instruction và phần chứa interrupt vectors. Các vector ngắt nằm ở phần đầu của application section từ địa chỉ 0x0000 và dài đến bao nhiêu tùy thuộc vào
loại chip và phần chứa instruction nằm liền sau đó. Các chương trình được viết sau địa chỉ đó.
• Bộ nhớ dữ liệu SRAM: Đây là phần chứa các thanh ghi quan trọng nhất của chip, việc lập trình cho chip phần lớn là truy cập bộ nhớ này và bộ nhớ này gồm các phần sau:
o Phần 1: là phần đầu tiên trong bộ nhớ dữ liệu bao gồm 32 thanh General Purpose Rgegister – GPR. Tất cả các thanh ghi này đều là các thanh ghi 8 bits. Tất cả các chip trong họ AVR đều bao gồm 32 thanh ghi Register File có địa chỉ tuyệt đối từ 0x0000 đến 0x001F. Mỗi thanh ghi có thể chứa giá trị dương từ 0 đến 255 hoặc các giá trị có dấu từ -128 đến 127 hoặc mã ASCII của một ký tự nào đó…Các thanh ghi này được đặt tên theo thứ tự là R0 đến R31. Chúng được chia thành 2 phần, phần 1 bao gồm các thanh ghi từ R0 đến R15 và phần 2 là các thanh ghi R16 đến R31.
o Phần 2: là phần nằm ngay sau SFR bao gồm 64 thanh ghi IO hay còn gọi là vùng nhớ IO. Vùng nhớ I/O là cửa ngõ giao tiếp giữa CPU và thiết bị ngoại vi. Vùng nhớ I/O có thể được truy cập như SRAM hay
như các thanh ghi I/O. Nếu sử dụng instruction truy xuất SRAM để truy xuất vùng nhớ này thì địa chỉ của chúng được tính từ 0x0020 đến 0x005F. Nhưng nếu truy xuất như các thanh ghi I/O thì địa chỉ của chúng đựơc tính từ 0x0000 đến 0x003F.
o Phần 3: internal SRAM là vùng không gian cho chứa các biến trong lúc thực thi chương trình.
• Bộ nhớ dữ liệu EEPROM: ATmega16 chứa bộ nhớ dữ liệu EEPROM dung lượng 512 byte, và được sắp xếp theo từng byte, cho phép các thao tác đọc/ghi từng byte một. EEPROM được tách riêng và có địa chỉ tính từ 0x0000H.
• Q trình thực thi lệnh:
Hình 5.1.6: Q trình thực thi lệnh của Atmega32
− Các instruction được chứa trong bộ nhớ chương trình Flash memory dưới dạng các thanh ghi 16 bit. Bộ nhớ chương trình được truy cập trong mỗi chu kỳ xung clock và 1 instruction chứa trong program memory sẽ được load vào trong instruction
thực thi. Trong lúc thực thi chương trình, địa chỉ của dịng lệnh đang thực thi được quyết định bởi một bộ đếm chương trình – PC (Program counter). Hầu hết các instruction đều được thực thi trong 1 chu kỳ xung clock.
II. TỔNG QUAN VỀ BOARD TINY6410
II.1.Giới thiệu board Tiny6410 tổng quan: a. Tiny6410 Board:
Board Mini6410 thì được phát triển từ board ARM11, cung cấp một giải pháp tồn diện tích hợp cả phần cứng và phần mềm. Nó được thiết kế, phát triển và phân phối bởi FriendlyARM tại Quảng Châu, Trung Quốc. Nó ứng dụng các bộ xử lý Samsung S3C6410 và thừa hưởng các tính năng tiện ích nhất của board Mini2440, sản phẩm có nhiều ưu điểm về chất lượng và dễ sử dụng với chi phí thấp. So với sản phẩm trước đó của FriendlyARM Tiny6410 được thiết kế đáng tin cậy hơn và hỗ trợ một số giao tiếp. Nó được ứng dụng các thiết bị điện tử tự động, ứng dụng trong công nghiệp, hệ thống GPS và hệ thống đa phương tiện cũng như các ứng dụng giáo dục đào tạo, phát triển hệ thống nhúng.
Nhìn chung board Mini6410 có các giao tiếp sau đây: • 2 giao tiếp với LCD
• 1 giao tiếp 4-wire resistor màn hình cảm ứng • 1 giao tiếp 100M Ethernet
• 1 giao tiếp DB9 5-wire serial port • 1 giao tiếp Mini USB 2.0-OTG • giao tiếp USB Host 1.1
• 1 giao tiếp audio output 3.5mm • 1 giao tiếp microphone on board, • 1 TV-OUT
• 1 SD card socket, • 1 đầu nhận hồng ngoại
• 4 * TTL serial port,
• 1 giao tiếp CMOS camera, • 1 giao tiếp 40 pin bus
• 1giao tiếp 30 pin GPIO (nó có thể được ghép với SPI, I2C và interrupts. Nó bao gồm 3
• ADC và 1 DAC.),
• 1 giao tiếp SDIO2 (có thể kết nối với module SD WiFi) • 1 giao tiếp 10 pin JTAG
• PWM buzzer, • I2C-EEPROM,
• backup battery for RTC, • ADC adjustable resistor • 8 * User button
• 4 * LED
Hình vẽ các khối của Tiny6410:
Hình 5.2.1: Giao diện board Tiny6410 với Android
b. Sơ đồ khối:
Kích thước Board Tiny6410:
Board Tyni6410 được phát triển với kích thước 110x110 (mm). Trên board được trang bị nhiều kết nối, giao tiếp và cổng. Layout của board Tyni6410 như hình vẽ trên.
PCB layer: 6 110 x 110 mm
Sơ đồ các khối chức năng của Board như hình vẽ bên dưới:
• CPU Samsung S3C6410A, ARM1176JZF-S, 533Mhz, maximum 667Mhz
• DDR RAM On board 256M DDR RAM (128M Optional)
• 32bit Data Bus
• FLASH Memory On board 128M/256M/1GB SLC Nand Flash or 2GB MLC
Nand Flash
• Và một số giao tiếp ngoại vi như trên
• Hiện nay board Mini6410 có thể setup các hệ điều hành sau: o Linux2.6.38(hoặc mới hơn) + Qtopia-2.2.0 + QtE-4.7.0 o WindowsCE.NET 6.0(R3)
o Android 2.3.2 (hoặc mới hơn) o Ubuntu-0910
• Hỗ trợ cài đặt hệ điều hành từ thẻ nhớ SD Card và hỗ trợ Debug qua J-Tag Link Board. Với hệ điều hành Linux có một số đặc trưng như sau:
o Boot Loader: sử dụng U-boot-1.6.1: open source, có thể cấu hình như Nand booting hoặc SD booting, Superboot: phát triển bởi FriendlyARM, hỗ trợ boot từ thẻ nhớ SD Card.
o File Systems: hỗ trợ setup trên YAFFS2, UBIFS, CRAMFS, EXT2/3, FAT32, NFS…
o Driver (all open source): board hỗ trợ hầu hết các driver giao tiếp cơ bản như serial ports, DM9000, Audio driver (WM9714), RTC, LEDs, USB host, LCD, USB camera, mouse, keyboard, flash drive, SD card, I2C, ADC, Watchdog, Multimedia bao gồm JPEG, FIMC, MFC, 2D/3D Accelerator, TVENC và TVSCALER), CMOS camera, SPI driver...
o Hỗ trợ Busybox1.17 (Linux tool kit bao gồm basic Linux commands), Telnet, FTP and inetd (remote login tool), boa (web server), Madplay (command line mp3 player), Snapshot (command line screenshot tool), ifconfig, ping, route …(basic network commands)…
o Graphic User Interface bao gồm Qtopia-2.2.0: open source 2 version: x86 và ARM QtE-4.7.0: open source, chỉ cho ARM Qt-extended -4.4.3: open source…
d. Không gian địa chỉ:
Address Size Description
0x0000_0000 0x07FF_FFFF 128MB BOOT
0x0C00_0000 0x0FFF_FFFF 128MB Stepping Stone(8KB) 0x1000_0000 0x17FF_FFFF 128MB 0x1800_0000 0x1FFF_FFFF 128MB DM9000AEP 0x2000_0000 0x27FF_FFFF 128MB 0x2800_0000 0x2FFF_FFFF 128MB 0x3000_0000 0x37FF_FFFF 128MB 0x3800_0000 0x3FFF_FFFF 128MB 0x4000_0000 0x47FF_FFFF 128MB 0x4800_0000 0x4FFF_FFFF 128MB 0x5000_0000 0x5FFF_FFFF 256MB 128M DDR RAM 0x6000_0000 0x6FFF_FFFF 256MB II.2.Các khối chính: a. Nguồn:
Board Mini6410 được cung cấp nguồn với hiệu điện thế là 5V. Hiệu điện thế là 5V và dòng điện là 800mA từ các connect sau.
CON8 PIN Spec
1 VDD5V
2 GND
3 GND
4 VDDIN
b. Serial Port:
• Board S3C6410 có 4 cổng nối tiếp là: UAST0, 1, 2, 3. Trong đó UAST0 và UAST1 là 2 cổng nối tiếp có 5 đường tín hiệu. Cịn 3 cổng nối tiếp tiếp cịn lại là các cổng nối tiếp có 3 đường tín hiệu.
• Trên board Mini6410, UAST0 thì được chuyển đổi qua RS232 (COM0) và có truyền dữ liệu với PC thơng qua cáp nối tiếp.
Hình 5.2.4: Cổng RS232 của board
c. USB Interface:
Board Mini6410 có 2 USB interface. Một là USB host, nó giống như USB interface trong PC và có thể kết nối với USB camera, bàn phím, chuột, USB flash driver và thiết bị USB khác. Giao thức USB còn lại là OTG mini USB 2.0 nó được sử dụng để download chương trình xuống board. Khi board chạy hệ điều hành WinCE nó có thể đồng bộ với Windows thơng qua ActiveSync. Nhưng khi board chạy hệ điều hành Linux thì hiện nay khơng có chương trình nào đồng bộ hóa với Windows.
Mini USB interface:
Mini USB Pin Spec
5 GND
4 OTGID
3 D+
2 D-
1 Vbus
Hình 5.2.5: Mini USB OTG của board
USB host:
Mini USB Pin Spec
1 5v
2 D-
3 D+
4 GND
d. Network Interface:
Network interface của board Mini6410 được tích hợp trong chip DM9000 và có băng thơng mạng có thể lên 10/100M. Với cáp mạng thơng thường có thể kết nối với một Router hay Switch tới board Mini6410.
e. Audio Interface:
Board S3C6410 hổ trợ I2S/PCM/AC97.Board Mini6410 có một AC97 interface sử dụng WM9714 làm chip giải mã âm thanh. Output của Audio là một jack cắm màu xanh lục và Input là microphone trên board như trên máy tính PC.
Hình 5.2.7: Cổng Audio của board
f. TV Output:
Board S3C6410 có 2 TV output. Board Tinyni6410 khuếch đại tín hiệu output của DACOUT0, người dùng có thể kết nối board với TV qua một cáp AV. Output TV còn lại là phần mở rộng tử pin thứ 30 của CON6 trong CPU. Lưu ý: khi kết nối DACOUT0 với TV người sử dụng cần chuyển đổi TV qua chế độ CVBS.
Hình 5.2.8: Cổng Video của board
g. JTAG Interface:
Một JTAG cơ bản có 4 đường tín hiệu :TDI (Test Data In ) kiểm tra dữ liệu đầu vào, TDO (Test Data Out) kiểm tra dữ liệu đầu ra, TCK (Test ClocK) , TMS (Test Mode Select) chọn chế độ kiểm tra đầu vào, TRST (Test Reset) optional. Bốn đường tín hiệu đó cộng với một đường power và một đường
những đường tín hiệu đó và nó khơng nhất thiết là phải 20 pin hay 10 pin. Board Mini6410 có một giao tiếp chuẩn JTAG 10 pin.
Hình 5.2.9: Jack JTAG của board
JTAG Spec 2 4 6 8 10 3.3V nRESET TDO GND GND 1 3 5 7 9 3.3V nTRST TDI TMS TCK h. LED:
Led thường được sử dụng để báo trạng thái. Board Tyni6410 có 4 đèn Led để lập trình. Các đèn Led được kết nối trực tiếp với GPIO. Các đèn Led hoạt động ở mức điện thế thấp.
LED4 LED3 LED2 LED1
GPIO GPK7 GPK6 GPK5 GPK4
Hình 5.2.10: Led hiển thị GPIO của board
i. User Key:
Board Tyni6410 có 8 KEY. Tất cả đều là tín hiệu ngắt CPU và sẽ được kích hoạt ở mức thấp. Chúng cũng có thế thể kết hợp với GPIO và nhiều chức năng giao tiếp khác. Kết hợp chúng lại với nhau người sử dụng có thể mở rộng chúng qua CON12. 8 KEY và CON12 được định nghĩa như sau:
CON12 1 2 3 4 5 6 7 8
Key K1 K2 K4 K4 K5 K6 K7 K8 Interrupt EINT0 EINT1 EINT2 EINT3 EINT4 EINT5 EINT1
9
EINT2 0 Multiplexed GPN0 GPN1 GPN2 GPN3 GPN4 GPN5 GPL11 GPL12
GPIO
Note: CON12.9 kết nối với nguồn (3.3V), CON12.10 kết nối với ground (GND) j. LCD Interface:
Để thuận tiện cho người sử dụng, FriendlyARM kết hợp 2 kết nối LCD : LCD2 và LCD3. LCD2 gồm 41 pin kết nối và tương thích với Mini2440 LCD, LCD3 gồm 40 pin. LCD sử dụng các tín hiệu điều khiển thường được sử dụng như dòng quét, xung clock... và hiển thị tín hiệu RGB lên đến 1,6 triệu điểm ảnh.
Hình 5.2.11: Giao tiếp LCD của board
LCD2 & LCD3 PIN Spec LCD2 & LCD3 PIN Spec
1 5V 2 5V 3 VD0 4 VD1 5 VD2 6 VD3 7 VD4 8 VD5 9 VD6 10 VD7 11 GND 12 VD8 13 VD9 14 VD10 15 VD11 16 VD12 17 VD13 18 VD14 19 VD15 20 GND 21 VD16 22 VD17 23 VD18 24 VD19 25 VD20 26 VD21 27 VD22 28 VD23 29 GND 30 GPE0/LCD_PWR 31 PWM1/GPF15 32 nRESET 33 VDEN/VM 34 VSYNC 35 HSYNC 36 VCLK 37 TSXM 38 TSXP
k. ADC Input:
Board Mini6410 có 4 kênh chuyển đổi A/D. AIN0 được kết nối có thể điều chỉnh được điện trở W1; AIN1, 2, 3 là mở rộng của các pin27, 28, 29 của CON6. Bộ chuyển đổi A/D của board S3C66410 có thể được cấu hình 10- bit/12-bit.
Hình 5.2.12: Giao tiếp ADC của board
l. PWM Buzzer:
Speaker trên board thì được điều khiển bởi PWM, PWM0 tương ứng với GPF14, nó có thể được cấu hình như output PWM qua sosfware hoặc sử dụng một GPIO.
Hình 5.2.13: PWM của board
m. Infrared Receiver:
Board Tiny6410 có một đầu thu hơng ngoại. IRF là IRM3638. Nó kết nối đến pin EINT12.
Hình 5.2.14: Cảm biến hồng ngoại của board
n. I2C-EEPROM:
Board Tiny6410 có một EEOROM AT24C08 kết nối với I2C của CPU. Nó có 256 bytes bộ nhớ và chủ yếu là kiểm tra bus I2C.
Hình 5.2.15: I2C EEPROM của board
o. SD Card:
S3C6410 có 2 SDIO. SDIO0 thường được sử dụng cho thẻ SD. Tiny6410 được có một khe cắm SD chuẩn mở rộng SDIO0 qua CON7. Nó hỗ trợ SDHC tốc độ cao.
Hình 5.2.16: Giao tiếp SD Card của board
p. SDIO-II//SD-WiFi:
Các SDIO khác của S3C6410 được mở rộng thơng qua CON9. Nó có 20 pin và mỗi pin cách nhau 2.0mm và nó bao gồm một SPI, một I2C và 4 GPIOs.
CON9 PIN Spec CON9 PIN Spec 1 VDD/3.3V 2 GND 3 GPK8 4 GPK13 5 I2CSCL 6 I2CSDA 7 SPI0_MOSI0 8 SPI0_MISO0 9 SPI0_CLK0 10 SPI0_CS 11 GPP10/WiFi_I 12 GPP11/WiFi_PD 13 SD1_CLK 14 SD1_CMD 15 SD1_nCD 16 SD1_nWP 17 SD1_DAT0 18 SD1_DAT1 19 SD1_DAT2 20 SD1_DAT3
q. CMOS Camera Interface:
S3C6410 có một CMOS camera interface. Nó được mở rộng thơng qua CON10. Nó có 20 pin kết nối và mỗi pin cách nhau 2.0 mm, người dùng có thể sử dụng các module CAM130.
Hình 5.2.18: Giao tiếp CMOS Camera của board
CON10 PIN Spec CON10 PIN Spec
1 CAMSDA (I2CSDA) 2 CAMSCL