Tải bản đầy đủ (.pdf) (117 trang)

Lập trình nhúng ARM Linux course 1

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.53 MB, 117 trang )

1
Khóa học
LẬP TRÌNH NHÚNG ARM-LINUX

GV: Phạm Ngọc Hưng, Phạm Văn Thuận
Bộ môn Kỹ thuật Máy tính
Viện CNTT&TT- ĐH BKHN
email:
Website:
Lập trình nhúng ARM-Linux
Mục tiêu khóa học
 Sau khi kết thúc khóa học n{y, học viên có thể
• Nắm được kiến trúc một hệ thống nhúng nền tảng ARM + hệ
điều h{nh nhúng Linux.
• Tùy biến, biên dịch, c{i đặt hệ điều h{nh nhúng Linux trên
KIT FriendlyArm 2440.
• Lập trình giao tiếp v{o ra GPIO cơ bản trên hệ nhúng Arm-
Linux (giao tiếp gpio)
• Lập trình giao tiếp c|c chuẩn v{o ra RS232, USB, ADC
• Sử dụng driver, v{ cơ chế viết driver trên hệ nhúng Linux.
• Nắm được c|c kỹ thuật lập trình giao tiếp giữa c|c tiến trình
trên linux, kỹ thuật lập trình đa luồng, lập trình socket
• Lập trình giao diện đồ họa Qt trên Linux
• B{i tập, Case Study.
2
2
Lập trình nhúng ARM-Linux
Nội dung khóa học
Bài 1. Giới thiệu lập trình nhúng Arm Linux
Bài 2. Biên dịch, c{i đặt hệ điều hành nhúng Linux
Bài 3. Môi trường lập trình nhúng Arm Linux


Bài 4. Lập trình vào ra GPIO cơ bản
Bài 5. Lập trình vào ra nâng cao
Bài 6. C|c kỹ thuật lập trình nâng cao
Bài 7. Lập trình Qt cơ bản
Bài 8. Lập trình Qt n}ng cao
3
Lập trình nhúng ARM-Linux
Nội dung khóa học
 CASE STUDY
• Lập trình ứng dụng Qt giao tiếp rs232
• Lập trình usb device driver (giao tiếp usb giữa KIT
micro2440 và Keil Arm7 Board)
• Lập trình mạng Qt
4
3
Lập trình nhúng ARM-Linux
Tài liệu tham khảo
 Tài liệu tham khảo chính:
• Micro2440 User Manual
• S3C2440 MicroController User’s Manual
• Beginning Linux Programming
• Advanced Linux Programming
• Linux Device Driver
• C++ GUI programming with QT
• Website:


5
Lập trình nhúng ARM-Linux
Bài số 1


Giới thiệu
Lập trình nhúng Arm Linux
6
4
Lập trình nhúng ARM-Linux
Mục tiêu bài học số 1
 Sau khi kết thúc b{i học n{y, học viên có thể
• Nắm được tổng quan về lập trình nhúng
• Trình b{y tổng quan về kiến trúc ARM, c|c dòng vi
xử lý ARM
• Trình b{y được cấu trúc phần cứng v{ c|c chức
năng của hệ nhúng KIT FriendlyArm micro2440
7
Lập trình nhúng ARM-Linux
Nội dung bài học
1.1. Giới thiệu về lập trình nhúng
1.2. Tổng quan về kiến trúc ARM
1.3. Giới thiệu KIT FriendlyArm micro2440
1.3. Môi trường ph|t triển ứng dụng trên KIT
FriendlyArm
8
5
Lập trình nhúng ARM-Linux
1.1. Giới thiệu lập trình nhúng
 Lập trình ứng dụng trên hệ nhúng phụ thuộc vào nền
tảng (platform) phần cứng, phần mềm của hệ nhúng đó.
 Hệ nhúng không có hệ điều hành:
• Thường sử dụng c|c vi điều khiển
hiệu năng tương đối thấp

(8051, ATMega, PIC, ARM7, …)
• Lập trình bằng C, ASM
• Môi trường, công cụ lập trình tùy theo từng dòng vi điều
khiển (CodeVision, AVR Studio, Keil…)
• Phù hợp c|c ứng dụng điều khiển v{o/ra cơ bản, c|c giao
tiếp ngoại vi cơ bản.
9
Lập trình nhúng ARM-Linux
Giới thiệu lập trình nhúng
 Hệ nhúng có hệ điều hành:
• Dựa trên c|c vi điều khiển, vi xử lý (CPU) có hiệu
năng cao (Ví dụ: AVR 32, ARM 9, ARM 11, …)
• Nhiều nền tảng hệ điều h{nh nhúng : uCLinux,
Embedded Linux, Windows CE, …
• Môi trường, công cụ lập trình tùy thuộc nền tảng hệ
điều h{nh: C/C++, QT SDK (Nokia), .Net Compact
FrameWork (Microsoft), …
• Ứng dụng nhiều b{i to|n phức tạp: GPS
Tracking/Navigator, Xử lý ảnh, ứng dụng
Client/Server, …
10
6
Lập trình nhúng ARM-Linux
Giới thiệu lập trình nhúng
 Các thiết bị di động thông minh:
• Xu hướng công nghệ hiện nay
• Nhiều nền tảng: iOS, Android, Windows Phone,
Symbian OS/Maemo,
• Môi trường, công cụ:
iOS: Xcode + iOS SDK (ngôn ngữ Object-C)

Android: C, Java + Android SDK, Eclipse/Netbean
Windows Phone: SDK + Visual Studio (C#)
• C|c ứng dụng phong phú: Google Play Store, Apple
Store, Windows Market Place, …

11
Lập trình nhúng ARM-Linux
Giới thiệu lập trình nhúng
 Khóa học n{y hướng tới:
• Lập trình hệ nhúng nền tảng ARM + Linux
• Minh họa trên KIT FriendlyArm micro 2440
• Lập trình C/C++, lập trình giao diện đồ họa QT
 Lý do:
• ARM ? > 90% thị phần thiết bị nhúng,
l{ dòng vi xử lý hiệu năng cao.
• Embedded Linux ? M~ nguồn mở, khả năng can thiệp, hiểu
s}u hệ thống. Nhiều OS kh|c (iOS, Android) dựa trên Linux
kernel
12
7
Lập trình nhúng ARM-Linux
 ARM:
• Advanced RISC Machine
• Acorn RISC Machine
 ARM l{ kiến trúc tập lệnh RISC 32 bit (Instruction Set
Architecture – ISA) ph|t triển bởi Arm Holdings
(1983).
 Phổ biến nhất trong c|c kiến trúc tập lệnh 32 bit.
 Được sử dụng rộng r~i trong c|c hệ thống nhúng:
mobile phones, PDAs, tablets, digital media, music

players, calculators, routers, …
 98% of 1 billion mobile phones (in 2005);


13
1.2. Giới thiệu kiến trúc ARM
Lập trình nhúng ARM-Linux
Kiến trúc 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 bằng nhau (32bit)
• Kiến trúc tập lệnh RISC, độ d{i từ lệnh 32 bit, khuôn dạng
lệnh 3 địa chỉ to|n hạng.
• 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
14
8
Lập trình nhúng ARM-Linux
Architecture Family
ARMv1

ARM1

ARMv2

ARM2

, ARM3
ARMv3

ARM6,
ARM7
ARMv4

StrongARM
, ARM7TDMI, ARM9TDMI
ARMv5

ARM7EJ
, ARM9E, ARM10E, XScale
ARMv6

ARM11
, ARM Cortex-M
ARMv7

ARM Cortex
-A, ARM Cortex-M, ARM
Cortex
-R
ARMv8

Support
64-bit data and addressing
15
Các dòng ARM



Lập trình nhúng ARM-Linux
Các dòng ARM (tiếp)
Kiến trúc các dòng ARM
16
9
Lập trình nhúng ARM-Linux
 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


17
Một số công nghệ trong ARM
Lập trình nhúng ARM-Linux
So sánh các dòng ARM
Phân nhóm theo hiệu năng và tính hữu dụng
18
10
Lập trình nhúng ARM-Linux
Kiến trúc ARM và lịch sử phát triển
 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
• …
19
Lập trình nhúng ARM-Linux
 Đặc điểm của chip (microprocessor) S3C2440
• Core:
ARM920T core , 16 Kbytes Data Cache, 16 Kbytes
Instruction cache
Xung nhịp 400MHz (thường dùng), 533 MHz (max)
• Memories
Giao diện bus AMBA (Advanced Microcontroller
Bus Architecture)
4 KByte SRAM nội

20
Kiến trúc vi điều khiển S3C2440
11
Lập trình nhúng ARM-Linux
Lõi vi xử lý ARM920T
21
Lập trình nhúng ARM-Linux
Ngoại vi S3C2440
22
12
Lập trình nhúng ARM-Linux
 Đặc điểm của chip S3C2440 (tiếp)
• Ngoại vi (Peripherals)
USB Host/Device
10/100 Mbps Ethernet MAC Controller
SPI, I2C…

32 bit Timer/Counter
3 USARTs
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

23
Kiến trúc vi điều khiển S3C2440
Lập trình nhúng ARM-Linux
Kiế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

24
13
Lập trình nhúng ARM-Linux
R0->R12: thanh ghi
công dụng chung
R13: Stack Pointer
R14: Link Register
R15: Program Counter

CPSR: Current
Program Status
Register
SPSR_SVC: Saved
Program Status
Register
25
Tập thanh ghi và chế độ hoạt động
Lập trình nhúng ARM-Linux
Thanh ghi trạng thái chương trình
 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
26
14
Lập trình nhúng ARM-Linux
Tậ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)

27
Lập trình nhúng ARM-Linux
Bả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 (viết tắt SROM)
2 bank nhớ cho ROM, SRAM, SDRAM, ….
 Hỗ trợ cả hai kiểu lưu trữ: little endian, big endian


28
15
Lập trình nhúng ARM-Linux
29
Lập trình nhúng ARM-Linux
Bản đồ bộ nhớ
Hỗ trợ hai chế độ khởi động chính
 Với chế độ khởi động từ Nand Flash, 4 Kbytes
BootSram được |nh xạ v{o vùng nhớ chọn bởi
nGCS0.
 Với chế độ khởi động từ Nor Flash, Nor Flash
được |nh xạ v{o vùng nhớ chọn bởi nGCS0.
 Vùng nhớ cho SDRAM bắt đầu tại địa chỉ
0x30000000 v{ kết thúc ở địa chỉ 0x34000000.
 (NOR Flash chứa sẵn BIOS firmware)

30
16
Lập trình nhúng ARM-Linux
1.3. Giới thiệu KIT nhúng micro2440
31
Lập trình nhúng ARM-Linux

Giới thiệu KIT nhúng micro2440
32
17
Lập trình nhúng ARM-Linux
33
Giới thiệu KIT nhúng micro2440
Lập trình nhúng ARM-Linux
Giới thiệu KIT nhúng micro2440
 Thông số kỹ thuật

34
18
Lập trình nhúng ARM-Linux
Giới thiệu KIT nhúng micro2440
35
Lập trình nhúng ARM-Linux
1.4. Môi trường phát triển ứng dụng
 Mô hình sử dụng ph|t triển ứng dụng trên KIT
FriendlyArm mini/macro 2440
36
19
Lập trình nhúng ARM-Linux
Môi trường phát triển ứng dụng
 Phần mềm
• M|y tính Linux (Ubuntu 9.04 hoặc mới hơn)
• Trình biên dịch chéo (C/C++ cross compiler): Cross
toolchains (arm linux gcc 4.4.3)
• gFTP (Công cụ truyền nhận file theo giao thức FTP)
• minicom (phần mềm giao tiếp cổng Com trên Linux)
• USB push (Công cụ truyền file qua USB trên Linux)

• QT SDK, QT Embedded (Môi trường IDE để ph|t triển ứng
dụng giao diện đồ họa trên nền tảng Qt Framework, dựa trên
C/C++)

37
Lập trình nhúng ARM-Linux
Môi trường phát triển ứng dụng
Môi trường phát triển ứng dụng theo nhóm
38
20
Lập trình nhúng ARM-Linux
Thảo luận
39
Lập trình nhúng ARM-Linux
Bài số 2

Biên dịch, cài đặt
Hệ điều hành nhúng Linux
40
21
Lập trình nhúng ARM-Linux
Mục tiêu bài học số 2
 Sau khi kết thúc b{i học n{y, học viên có thể
• Nắm được tổng quan về hệ điều h{nh nhúng Linux
(Embedded Linux OS)
• Nắm được c|c kh|i niệm cơ bản về Bootloader,
kernel, root file system
• Biết c|ch nạp hệ điều h{nh nhúng Linux xuống KIT
FriendlyArm Micro2440
• Biết c|ch tùy biến, biên dịch nh}n hệ điều h{nh

41
Lập trình nhúng ARM-Linux
Nội dung bài học
2.1. Tổng quan về hệ điều h{nh nhúng Linux
2.2. Quy trình c{i đặt hệ điều h{nh nhúng Linux
2.3. Biên dịch nh}n hệ điều h{nh nhúng Linux

42
22
Lập trình nhúng ARM-Linux
2.1. Tổng quan Embedded Linux OS
 Hệ điều h{nh (OS) ?
• Hệ điều h{nh bản chất l{ phần mềm hệ thống
Quản lý t{i nguyên phần cứng m|y tính
Cung cấp c|c h{m dịch vụ cho phép c|c ứng dụng
tương t|c với t{i nguyên hệ thống
43
Lập trình nhúng ARM-Linux
Tổng quan Embedded Linux OS
 Đặc trưng cơ bản của hệ điều h{nh
Quản lý t{i nguyên hệ thống (phần cứng, phần mềm)
Trung gian giữa phần cứng v{ phần mềm, giúp phần
cứng l{m việc trong suốt với phần mềm ứng dụng
Cung cấp giao diện h{m chuẩn cho phần mềm ứng
dụng
 Lợi ích của hệ điều h{nh
• Tăng tính ổn định, tin cậy của hệ thống
• Tăng tính khả chuyển (portability)

44

23
Lập trình nhúng ARM-Linux
Sơ đồ phân cấp hệ thống
45
Lập trình nhúng ARM-Linux
Kiến trúc hệ điều hành Unix
46
24
Lập trình nhúng ARM-Linux
Kiến trúc hệ điều hành nhúng
 Hệ điều h{nh nhúng (embedded os) ?
• L{ hệ điều h{nh c{i đặt cho c|c hệ thống nhúng
(embedded system)
• Được thiết kế: compact, efficient, reliable.

47
Lập trình nhúng ARM-Linux
Kiến trúc hệ điều hành nhúng
 Đặc trưng của hệ điều h{nh nhúng
• Tăng tính tin cậy (reliability)
• Tăng tính khả chuyển (portability)
• Khả năng tương thích mềm: dễ d{ng n}ng cấp hay
thu gọn để tương thích với nền tảng hệ thống
• Thu gọn, đòi hỏi ít bộ nhớ hơn. Có thể hỗ trợ khởi
động từ bộ nhớ ROM, Flash (hệ thống không có ổ
cứng)
• Cung cấp c|c cơ chế lập lịch (scheduler) hỗ trợ thời
gian thực (Realtime OS – RTOS)
48
25

Lập trình nhúng ARM-Linux
Hệ điều hành thời gian thực
 Hệ thống thời gian thực (Realtime): c|c phần mềm,
phần cứng hoạt động thỏa m~n c|c r{ng buộc về
thời gian
 Ph}n loại:
• Hard Realtime: không đ|p ứng deadline -> lỗi hệ
thống
• Soft Realtime: không đ|p ứng deadline -> giảm chất
lượng dịch vụ (QoS)
49
Lập trình nhúng ARM-Linux
Hệ điều hành thời gian thực
50

×