Lập trình hệ nhúng - Chương 1: Giới thiệu lập trình hệ nhúng

pdf 56 trang vanle 2020
Bạn đang xem 20 trang mẫu của tài liệu "Lập trình hệ nhúng - Chương 1: Giới thiệu lập trình hệ nhúng", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdflap_trinh_he_nhung_chuong_1_gioi_thieu_lap_trinh_he_nhung.pdf

Nội dung text: Lập trình hệ nhúng - Chương 1: Giới thiệu lập trình hệ nhúng

  1. LẬP TRÌNH HỆ NHÚNG GV: Phạm Ngọc Hưng Bộ môn Kỹ thuật Máy tính Viện CNTT&TT- ĐH BKHN email: hungpn@soict.hut.edu.vn
  2. Nội dung Chương 1. Giới thiệu lập trình hệ nhúng Chương 2. Lập trình v{o ra cơ bản Chương 3. Lập trình v{o ra n}ng cao Chương 4. C|c kỹ thuật lập trình n}ng cao Chương 5. Lập trình device driver trên Linux Chương 6. Lập trình nền tảng QT Chương 7. Lập trình mạng trên Linux nhúng Chương 8. Lập trình xử lý ảnh trên nền nhúng Lập trình nhúng ARM-Linux 2
  3. 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: Lập trình nhúng ARM-Linux 3
  4. Chương 1 Giới thiệu Lập trình hệ nhúng Lập trình nhúng ARM-Linux 4
  5. Nội dung chương 1 1.1. Giới thiệu về lập trình hệ nhúng 1.2. Giới thiệu KIT FriendlyArm micro2440 1.3. Hệ điều h{nh nhúng Linux 1.4. Môi trường lập trình KIT FriendlyArm 2440 Lập trình nhúng ARM-Linux 5
  6. 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. Lập trình nhúng ARM-Linux 6
  7. 1.1. Giới thiệu lập trình hệ 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, Lập trình nhúng ARM-Linux 7
  8. 1.1. Giới thiệu lập trình hệ 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/Memo, • 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, Lập trình nhúng ARM-Linux 8
  9. 1.1. Giới thiệu lập trình hệ nhúng . 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 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 đ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 Lập trình nhúng ARM-Linux 9
  10. 1.2. Giới thiệu KIT nhúng micro2440 Lập trình nhúng ARM-Linux 10
  11. Giới thiệu KIT nhúng micro2440 Lập trình nhúng ARM-Linux 11
  12. Giới thiệu KIT nhúng micro2440 Lập trình nhúng ARM-Linux 12
  13. Giới thiệu KIT nhúng micro2440 . Thông số kỹ thuật Lập trình nhúng ARM-Linux 13
  14. Giới thiệu KIT nhúng micro2440 Lập trình nhúng ARM-Linux 14
  15. 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 Lập trình nhúng ARM-Linux 15
  16. 1.3.1. Tổng quan Embedded Linux . 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. Lập trình nhúng ARM-Linux 16
  17. Sơ đồ phân cấp hệ thống Lập trình nhúng ARM-Linux 17
  18. Kiến trúc hệ điều hành Linux Lập trình nhúng ARM-Linux 18
  19. Đặ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ừ 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) Lập trình nhúng ARM-Linux 19
  20. 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) Lập trình nhúng ARM-Linux 20
  21. Hệ điều hành thời gian thực Lập trình nhúng ARM-Linux 21
  22. Cấu trúc nhân hệ điều hành Lập trình nhúng ARM-Linux 22
  23. 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, c|c th{nh phần phần cứng, phần mềm đang chạy trong hệ thống • /usr: chứa c|c file thực thi, t{i liệu liên quan tới người dùng Lập trình nhúng ARM-Linux 23
  24. 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ó khối quản lý bộ nhớ (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 v{ tương thích với từng hệ thống Lập trình nhúng ARM-Linux 24
  25. Quá trình boot hệ thống Linux trên PC Lập trình nhúng ARM-Linux 25
  26. Quá trình boot hệ thống Linux nhúng Lập trình nhúng ARM-Linux 26
  27. Quá trình boot hệ thống Linux nhúng . Boot loader: chương trình mồi, thực hiện kiểm tra phần cứng hệ thống v{ nạp nh}n (kernel) của hệ điều h{nh . Kernel: nh}n hệ điều h{nh, chứa c|c th{nh phần cơ bản nhất . Root file system: hệ thống file, chứa c|c modules bổ sung v{ c|c phần mềm ứng dụng Lập trình nhúng ARM-Linux 27
  28. 1.3.2. Cài đặt Embedded Linux . Bước 1: C{i đặt bootloader (VD: U-Boot, Supervivi) . Bước 2: C{i đặt kernel . Bước 3: C{i đặt hệ thống file (root file system) Lập trình nhúng ARM-Linux 28
  29. Cài đặt từ môi trường Windows . Công cụ • Phần mềm HyperTerminal: kết nối với KIT micro2440 qua cổng COM • Phần mềm DNW: kết nối với KIT micro2440 qua cổng USB . C|ch thức • Phần mềm HyperTerminal (giao tiếp với BIOS trên Nor Flash qua cổng rs232) truyền c|c lệnh điều khiển • Phần mềm DNW trao đổi file Lập trình nhúng ARM-Linux 29
  30. Cài đặt từ môi trường Linux . Công cụ: • Phần mềm minicom: kết nối với KIT micro2440 qua cổng COM • Phần mềm usbpush: kết nối với KIT micro2440 qua cổng USB . C|ch thức • Phần mềm minicom cho phép giao tiếp serial, truyền c|c lệnh điều khiển • Phần mềm usbpush nạp file xuống KIT Lập trình nhúng ARM-Linux 30
  31. Cài đặt hệ điều hành nhúng Linux Demo Lập trình nhúng ARM-Linux 31
  32. 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 c|c phiên bản mới hơn • Khi cần 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 địa chỉ: kernel.org (Hoặc trong CD đi kèm KIT) • File nén linux-2.6.32.2.tar (tùy phiên bản); • Giải nén được thư mục to{n bộ m~ nguồn của nh}n (ví dụ thư mục linux-2.6.32.2) Lập trình nhúng ARM-Linux 32
  33. Biên dịch nhân Linux . Qu| trình biên dịch nh}n (tiếp): • V{o thư mục chứa m~ nguồn nh}n (linux-2.6.32.2) • Cấu hình trước khi biên dịch bằng lệnh: make menuconfig • Xuất hiện giao diện cấu hình, tùy chỉnh phù hợp với hệ thống. • Thực hiện biên dịch bằng lệnh: make zImage • Biên dịch th{nh công kết quả sẽ l{ file zImage (trong thư mục linux-2.6.32.2/arch/arm/mach-s3c2440) , sẽ được nạp (porting) xuống KIT Lập trình nhúng ARM-Linux 33
  34. Biên dịch nhân Linux Demo Lập trình nhúng ARM-Linux 34
  35. 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 Lập trình nhúng ARM-Linux 35
  36. 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 micro 2440 Lập trình nhúng ARM-Linux 36
  37. Mô hình lập trình hệ thống nhúng • Host: hệ thống chứa môi trường phát triển •Target: hệ nhúng cần phát triển ứng dụng Lập trình nhúng ARM-Linux 37
  38. Môi trường lập trình KIT micro 2440 • M|y host c{i hệ điều h{nh Linux (Ubuntu 10.04) • Trình biên dịch chéo Cross toolchains (arm-linux-gcc 4.4.3): biên dịch ứng dụng (viết bằng C/C++) • Công cụ viết m~ nguồn chương trình C (dùng gedit, eclipse) • gFTP: truyền nhận file Host KIT qua giao thức FTP • Telnet: kết nối KIT qua Ethernet (sử dụng cross cable) Lập trình nhúng ARM-Linux 38
  39. Môi trường lập trình theo nhóm Môi trường phát triển ứng dụng theo nhóm Lập trình nhúng ARM-Linux 39
  40. 1.4.2. Cài đặt môi trường phát triển . Cấu hình mạng LAN (host + KIT) qua c|p chéo v{ sử dụng IP cùng dải: • Linux host: 192.168.1.30 • Linux target: 192.168.1.230 (default) Lập trình nhúng ARM-Linux 40
  41. Cài đặt trình biên dịch chéo . Bước 1: Giải nén arm-linux-gcc-4.4.3.tar.gz tar –zxvf arm-linux-gcc-4.4.3.tar.gz . Bước 2: Cập nhật biến môi trường PATH • Thêm đường dẫn tới thư mục bin của arm-linux-gcc- 4.4.3 (Cập nhật biến môi trường PATH trong file .bashrc trong đường dẫn chỉ ra bởi biến $HOME) . Bước 3: Kiểm tra trình biên dịch • Mở cử sổ console, gõ lệnh: arm-linux-gcc version • Thông b|o về phiên bản của arm-linux-gcc hiện ra => qu| trình c{i đặt th{nh công Lập trình nhúng ARM-Linux 41
  42. Kiểm tra trình biên dịch chéo Lập trình nhúng ARM-Linux 42
  43. Cài đặt phần mềm gFTP . Bước 1: Cài đặt phần mềm gFTP (nếu chưa có) • Gõ lệnh: sudo apt-get install gftp . Bước 2: Kiểm tra kết nối giữa Host và Target • Mở phần mềm gFTP: Applications->Internet- >gFTP • Thiết lập các tham số Địa chỉ IP của KIT: 192.168.1.230 Username: root Password: ktmt (có thể đổi bằng lệnh passwd) • Mở kết nối Lập trình nhúng ARM-Linux 43
  44. Kết nối sử dụng gFTP Lập trình nhúng ARM-Linux 44
  45. Cài đặt phần mềm debug GDB . Bước 1: download m~ nguồn gdb (version 7.0) • Cách 1: apt-get source gdb • Cách 2: . Bước 2: Biên dịch v{ c{i đặt gdb client trên m|y HOST . Bước 3: Biên dịch v{ c{i đặt gdb server trên m|y TARGET (Chi tiết xem trong tài liệu hướng dẫn cài đặt môi trường phát triển ứng dụng) Lập trình nhúng ARM-Linux 45
  46. 1.4.3. Chương trình HelloWorld . Cấu trúc chương trình đơn giản . C|ch thức biên dịch chương trình . Nạp file thực thi xuống KIT v{ chạy ứng dụng Lập trình nhúng ARM-Linux 46
  47. Cấu trúc chương trình . Tu}n thủ cấu trúc chương trình ANSII C Lập trình nhúng ARM-Linux 47
  48. Chương trình Hello World . Soạn thảo m~ nguồn chương trình C bằng gedit (file Hello.c) #include int main (int argc, char* argv[]) { printf(“Hello World !\n”); printf (“Ten chuong trinh la „%s‟.\n”, argv[0]); printf (“Chuong trinh co %d tham so \n”, argc - 1); /* Neu co bat cu tham so dong lenh nao*/ if (argc > 1) { /* Thi in ra*/ int i; printf (“Cac tham so truyen vao la:\n”); for (i = 1; i < argc; ++i) printf (“ Tham so %d: %s\n”, i, argv[i]); } return 0; } Lập trình nhúng ARM-Linux 48
  49. Cách thức biên dịch chương trình . Cách 1: Sử dụng lệnh của cross compiler • VD: arm-linux-gcc –g –o Hello Hello.c • Kết quả: biên dịch ra một file thực thi có tên l{ Hello từ một file m~ nguồn l{ Hello.c, file n{y có hỗ trợ khả năng debug (-g) . Cách 2: Tạo v{ sử dụng Makefile • make l{ một tool cho phép quản lý qu| trình biên dịch, liên kết của một dự |n với nhiều file m~ nguồn. • Tạo Makefile lưu c|c lệnh biên dịch theo định dạng của Makefile • Sử dụng lệnh make để chạy Makefile v{ biên dịch chương trình . Cách 3: Sử dụng automake và autoconf • Tạo makefile tự động Lập trình nhúng ARM-Linux 49
  50. Cấu trúc Makefile . Makefile cấu th{nh từ c|c target, variables v{ comments . Target có cấu trúc như sau: target: dependencies [tab] system command . target: make target . Dependencies: c|c th{nh phần phụ thuộc (file m~ nguồn, c|c file object ) . System command: c|c c}u lệnh (lệnh biên dịch, lệnh linux) Lập trình nhúng ARM-Linux 50
  51. VD 1: Makefile đơn giản CC=arm-linux-gcc all: Hello.c $(CC) –g –o Hello Hello.c clear: rm Hello .Biên dịch chương trình: make all .Xóa file sinh ra trước đó: make clear Lập trình nhúng ARM-Linux 51
  52. VD 2: Makefile liên kết Hello.c include Display.c void display(int index, char* str) include Display.h void display(int index, char* str) Lập trình nhúng ARM-Linux 52
  53. VD2: Makefile liên kết Hello.c Display.c Compiler Compiler Hello.o Display.o Linker Hello File thực thi Lập trình nhúng ARM-Linux 53
  54. VD 2: Makefile liên kết CC=arm-linux-gcc OUTPUT=Hello all:Hello.o display.o $(CC) -o $(OUTPUT) Hello.o display.o Hello.o:Hello.c $(CC) -c Hello.c display.o:display.c $(CC) -c display.c Lập trình nhúng ARM-Linux 54
  55. Nạp file thực thi xuống KIT . Bước 1: sử dụng phần mềm gFTP chuyển file Hello (đ~ được biên dịch trước đó) xuống KIT, ví dụ xuống thư mục: /ktmt . Bước 2: telnet xuống KIT, chuyển tới thư mục /ktmt, thực thi chương trình • Gõ lệnh: ./Hello • Nếu chương trình chưa có quyền thực thi, thực hiện cấp quyền: chmod +x Hello . Bước 3: quan s|t kết quả Lập trình nhúng ARM-Linux 55
  56. Thảo luận Lập trình nhúng ARM-Linux 56