Vi điều khiển họ ARM• Kiến trúc tổng quan lõi vi xử lý ARM • Kiến trúc vi điều khiển lõi ARM920T S3C2440 • Lập trình ứng dụng trên hệ điều hành Linux nhúng... Kiến trúc tổng quan lõi vi
Trang 13.3 Vi điều khiển họ ARM
• Kiến trúc tổng quan lõi vi xử lý ARM
• Kiến trúc vi điều khiển lõi ARM920T (S3C2440)
• Lập trình ứng dụng trên hệ điều hành Linux nhúng
Trang 2Kiến trúc tổng quan lõi vi xử lý ARM
• ARM là dòng vi xử lý 32 bit được thiết kế theo kiến trúc tập lệnh RISC (Reduced Instruction Set Computer)
• ARM viết tắt của
• Advanced RISC Machine
• Acorn RISC Machine
• ARM là kiến trúc được sử dụng rộng rãi trong các hệ thống nhúng: Mobile phones, PDAs, thiết bị điện tử gia dụng…
2
Trang 3Kiến trúc tổng quan vi xử lý lõi ARM
• Kế thừa các đặc điểm của kiến trúc tập lệnh RISC
• Số lượng thanh ghi lớn và có kích thước giống nhau
• Tập lệnh load/store, không cho phép các thao tác xử lý dữ liệu trực tiếp trên
bộ nhớ
• Chế độ địa chỉ đơn giản (ít chế độ địa chỉ hơn kiến trúc CISC)
• Phát triển các đặc trưng mới của ARM
• Các lệnh có kết hợp với lệnh dịch hoặc các lệnh logic
• Chế độ địa chỉ tự động tăng-giảm để tối ưu hóa các vòng lặp
• Nạp và lưu (load/store) nhiều lệnh cùng lúc cho phép nâng cao thông lượng
Trang 4Kiến trúc tổng quan lõi vi xử lý ARM
4
Kiến trúc các dòng ARM
Trang 5• Thumb Instruction Set: tập lệnh 16 bit cho phép tăng mật độ lệnh
• Jazelle: công nghệ cho phép tăng tốc các ứng dụng viết bằng Java
• SIMD, NEON: công nghệ nâng cao hiệu năng cho các ứng dụng Video/Audio
• TrustZone: công nghệ nâng cao tính bảo mật
Công nghệ đặc trưng
Trang 6So sánh hiệu năng các dòng ARM
6
Phân nhóm theo hiệu năng và tính hữu dụng
Trang 7Kiến trúc tổng quan vi xử lý lõi ARM
• ARM được rất nhiều hãng phát triển và sản xuất, ở Việt Nam phổ biến chip ARM của các hãng
• ATMEL: AT91SAM7, AT91SAM9…
• NXP: LPC2138, LPC2148, LPC2300…
• TI (Texas Instrument): TMS470, TMS570…
• SAMSUNG: S3C2440
• …
Trang 8Kiến trúc vi điều khiển S3C2440
• Đặc điểm của chip S3C2440
• Core:
• ARM920T core , 16 Kbytes Data Cache, 16 Kbytes Instruction cache
• Xung nhịp tối đa: 400 MHz
• Memories
• Giao diện bus AMBA (Advanced Micro controller Bus Architecture)
• 4 KByte SRAM nội
8
Trang 9Lõi vi xử lý ARM920T
Trang 10Kiến trúc vi điều khiển S3C2440
• Đặc điểm của chip S3C2440 (tiếp)
• Multimedia Card Interface
• ADC 10 bit 8 kênh
• Giao tiếp cảm biến ảnh (Image Sensor)
• Điều khiển LCD
• Điều khiển AC97 audio codec
10
Trang 11Kiến trúc vi điều khiển S3C2440
• Đặc điểm của chip S3C2440(tiếp)
• Hệ thống
• 4 kênh DMA (Direct Memory Access)
• Boot hệ thống từ NOR Flash, NAND Flash, SDCard, Ethernet
• Bộ điều khiển ngắt nâng cao AIC(Advanced Interrupt Controller)
• Vào ra
• 130 chân vào ra lập trình được
Trang 13Tập thanh ghi và chế độ hoạt động
Trang 14Thanh ghi trạng thái chương trình
14
Các cờ kết quả hoạt động của ALU
Điều khiển cho phép/cấm ngắt
Thiết lập chế độ hoạt động
Trang 15Mode bits
Trang 16Tập lệnh của S3C2440
• Tập lệnh ARM chia thành các nhóm lệnh
• Lệnh rẽ nhánh (Branch)
• Lệnh xử lý dữ liệu (Data Processing)
• Trao đổi thanh ghi trạng thái (Status Register Transfer)
• Nạp và lưu (Load and Store)
• Phát sinh ngoại lệ (Exception-Generating)
Trang 17Bản đồ bộ nhớ
• Bus địa chỉ 32 bit
• Địa chỉ bắt đầu: 0x00000000
• Địa chỉ kết thúc: 0x40000000
• Chia thành nhiều bank nhớ, mỗi bank 128 MB, tổng không gian bộ nhớ 1GB
• 6 bank nhớ cho ROM, SRAM
• 2 bank nhớ cho ROM, SRAM, SDRAM, ….
• Hỗ trợ cả hai kiểu lưu trữ: little endian, big endian
Trang 1818
Trang 20Giới thiệu KIT nhúng mini2440
20
Trang 21Giới thiệu KIT nhúng mini2440
Trang 22Giới thiệu KIT nhúng mini2440
• Thông số kỹ thuật
22
Trang 23Giới thiệu KIT nhúng mini2440
Trang 24Môi trường phát triển ứng dụng
Trang 25Môi trường phát triển ứng dụng
Trang 26• Chạy chương trình trên nền hệ điều hành Linux nhúng
• Trên KIT cài TFTP client
• Trên máy phát triển, cài TFTP server
• Trên KIT dùng lệnh TFTP để download chương trình
26
Trang 28Thảo luận
Trang 29Lập trình ứng dụng trên Linux
• Cài đặt môi trường phát triển
• Xây dựng chương trình HelloWorld
• Lập trình vào ra căn bản
• Lập trình xử lý ngắt
• Lập trình giao tiếp cổng COM
• Lập trình ứng dụng đồ họa
Trang 30Cài đặt môi trường phát triển
• Môi trường phát triển
• Hệ điều hành Linux (Ubuntu 9.04)
• Trình biên dịch chéo: ARM Linux GCC 4.3.2
Trang 31Xây dựng chương trình Hello World
Bước 1: viết code chương trình
Bước 2: dịch chương trình
-Cách 1: dùng lệnh make
-Cách 2: dùng lệnh tường minh
arm-linux-gcc –o OutputFile Source.c
Bước 3: dùng tftp download chương trình xuống dưới KIT
tftp –l localfile –r remotefile –g ServerIP
Trang 32Lập trình giao tiếp cổng COM
• Khởi tạo: Khai báo thư viện
Trang 33Khai báo thư viện
• #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
Trang 34Bước 1: Mở cổng
• Sử dụng lệnh mở file
int fd = open ("/dev/ttyUSB0", O_RDWR);
• Fd >0 nếu mở file thành công
• Fd<0 nếu mở file thất bại
34
Trang 35Bước 2: Thiết lập tham số
port_settings.c_cflag &= ~PARENB;
port_settings.c_cflag &= ~CSTOPB;
port_settings.c_cflag &= ~CSIZE;
port_settings.c_cflag |= CS8;
Trang 36Bước 3: Đọc, ghi cổng
• Đọc cổng: sử dụng lệnh đọc file
n=read(fd,&result,sizeof(result));
N: số ký tự đọc được
Result: chứa kết quả
• Ghi cổng: sử dụng lệnh ghi file
n=write(fd,“Hello World\r",12);
N:số ký tự đã ghi
Fd: file id (có được từ thao tác mở file thành công)
36
Trang 38Lập trình ứng dụng đồ họa
• Sử dụng nền tảng QT của Nokia
• Ứng dụng đa nền: Desktop, mobile, embedded computer
• Viết code 1 lần duy nhất, chạy trên nhiều nền tảng khác nhau
• Sử dụng ngôn ngữ C/C++
• Hỗ trợ các nền tảng: Windows, Linux, Embedded Linux, Win CE, Symbian, Maemo…
• Có thể tích hợp với các IDE thông dụng: Visual Studio, Eclipse
• Tham khảo: qt.nokia.com; qtcentre.org
38
Trang 39Ứng dụng QT
Trang 40Kiến trúc QT SDK
40
Trang 41Cơ chế Signals and Slot của QT
• Signals: tương tự Event
• Slot: tương tự Event Handler
connect(sender, SIGNAL(signal), receiver, SLOT(slot));
VD: đồng bộ hai điều khiển trên QT
Trang 42Môi trường phát triển
• IDE
1) QT Creator
2) Tích hợp vào Visual Studio, Eclipse
• Chương trình dịch: qmake
1) Qmake for Windows
2) Qmake for Linux
3) Qmake for Embedded Linux
…
42
Trang 43QT Creator
Trang 44Demo
Trang 45Thảo luận