


1.1. Giới thiệu lập trình hệ 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.
1.1. Giới thiệu lập trình hệ nhúng (tiếp)
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, ARM9, ARM11, …)
- 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, …
1.1. Giới thiệu lập trình hệ nhúng (tiếp)
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/Memo
- Môi trường, công cụ:
- iOS: Xcode + iOS SDK (ngôn ngữ Objective-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, …
1.1. Giới thiệu lập trình hệ nhúng (tiếp)
Môn 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 micro2440
- 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 điều khiển 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.
1.2. Giới thiệu KIT nhúng micro2440
(Trang 10, 11, 12: hình minh họa – đã được giữ nguyên dạng ghi chú vì không có hình trong văn bản bạn gửi.)
Giới thiệu KIT nhúng micro2440
Thông số kỹ thuật
(Trang 13: bảng/thông số — giữ nguyên như bản gốc, không bổ sung vì bạn không gửi nội dung chi tiết.)
1.3. Hệ điều hành nhúng Linux
- 1.3.1. Tổng quan hệ điều hành nhúng Linux
- 1.3.2. Cài đặt Embedded Linux trên Micro2440
- 1.3.3. Biên dịch, tùy biến nhân Linux
1.3.1. Tổng quan Embedded Linux
Hệ điều hành nhúng (embedded OS) là gì?
- 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
Sơ đồ phân cấp hệ thống
(Trang 17 — giữ nguyên dạng ghi chú)
Kiến trúc hệ điều hành Linux
(Trang 18 — ghi chú hình)
Đặc trưng 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ừ 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)
Hệ điều hành thời gian thực
Realtime system: 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)
Hệ điều hành thời gian thực (hình)
(Trang 21 — ghi chú)
Cấu trúc nhân hệ điều hành
(Trang 22 — ghi chú)
Hệ thống file trong Linux
Một số thư mục quan trọng:
- /home: thư mục người dùng
- /dev: chứa các file thiết bị
- /bin: chứa các file thực thi của hệ thống
- /etc: chứa các file cấu hình
- /var: chứa các file log
- /opt: chứa các gói chương trình cài đặt thêm
- /proc: chứa thông tin về các tiến trình, thành phần phần cứng/phần mềm đang chạy
- /usr: chứa các file thực thi, tài liệu liên quan đến người dùng
Embedded Linux
- Hỗ trợ rất nhiều kiến trúc vi xử lý (cả 32 bit và 64 bit)
→ Intel X86, ARM, PowerPC, MIPS, AVR32, … - Không hỗ trợ các vi điều khiển hiệu năng thấp
- Hỗ trợ cả kiến trúc có và không có MMU
- Các hệ thống có thể dùng chung toolchains, bootloader và kernel;
các thành phần khác phải riêng biệt & tương thích từng hệ thống
Quá trình boot hệ thống Linux trên PC
(Trang 25 — ghi chú)
Quá trình boot hệ thống Linux nhúng
(Trang 26 — ghi chú)
Quá trình boot hệ thống Linux nhúng (tiếp)
- Bootloader: chương trình mồi, kiểm tra phần cứng và nạp nhân (kernel)
- Kernel: nhân hệ điều hành, chứa các thành phần cơ bản nhất
- Root file system: chứa các modules bổ sung và phần mềm ứng dụng
1.3.2. Cài đặt Embedded Linux
Quy trình:
- Cài đặt bootloader (VD: U-Boot, Supervivi)
- Cài đặt kernel
- Cài đặt hệ thống file (root file system)
Cài đặt từ môi trường Windows
Công cụ:
- HyperTerminal: kết nối KIT micro2440 qua cổng COM
- DNW: kết nối KIT micro2440 qua cổng USB
Cách thức:
- HyperTerminal (giao tiếp với BIOS trên Nor Flash qua RS232) truyền lệnh điều khiển
- DNW trao đổi file
Cài đặt từ môi trường Linux
Công cụ:
- Minicom: kết nối KIT micro2440 qua cổng COM
- usbpush: kết nối KIT micro2440 qua cổng USB
Cách thức:
- Minicom cho phép giao tiếp serial, truyền lệnh
- usbpush nạp file xuống KIT
Cài đặt hệ điều hành nhúng Linux
Demo
(Ghi chú trang 30–31)
1.3.3. Biên dịch, tùy biến nhân Linux
Khi nào cần biên dịch lại nhân?
- Khi nâng cấp hệ thống lên phiên bản mới
- Khi sửa lỗi, thay đổi, tùy chỉnh các module
Quá trình biên dịch nhân:
- Download nhân tại kernel.org (hoặc từ CD kèm KIT)
- File nén: linux-2.6.32.2.tar (tùy phiên bản)
- Giải nén → thư mục mã nguồn nhân (vd: linux-2.6.32.2)
Biên dịch nhân Linux (tiếp)
- Vào thư mục chứa mã nguồn nhân
- Cấu hình trước khi biên dịch bằng lệnh:
make menuconfig - Tùy chỉnh cấu hình phù hợp
- Biên dịch bằng lệnh:
make zImage - Kết quả: file zImage (trong
linux-2.6.32.2/arch/arm/mach-s3c2440)
→ nạp xuống KIT
Biên dịch nhân Linux
Demo
(ghi chú – không có link)
1.4. Môi trường lập trình KIT FriendlyARM Micro2440
- 1.4.1. Môi trường phát triển ứng dụng nhúng
- 1.4.2. Cài đặt môi trường phát triển KIT 2440
- 1.4.3. Chương trình HelloWorld
1.4.1. Môi trường phát triển ứng dụng nhúng
- Mô hình lập trình hệ thống nhúng
- Môi trường lập trình KIT micro2440

