Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 30 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
30
Dung lượng
1,27 MB
Nội dung
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ TIỂU LUẬN: HỆTHỐNGNHÚNG GVHD : Th.S Đậu Trọng Hiển SVTH : TP.HỒ CHÍ MINH- T4/2016 MỤC LỤC MỤC LỤC NỘI DUNG Chương 1: GIỚI THIỆU VỀHỆTHỐNGNHÚNG 1.1 Khái niệm hệthốngnhúng 1.2 Đặc điểm 1.3 Kiến trúc CPU (Processor Architecture) 1.4 Kiến trúc tập lệnh (Instruction Set Architecture) Chương 2: GIỚI THIỆU VỀ PHẦN MỀM NHÚNG 2.1 Khái niệm phần mềm nhúng 2.2 Đặc điểm phần mềm nhúng 2.3 Quy trình thực phần mềm nhúng 2.4 Quá trình ngắt (Interrupt process) 2.5 Các ngõ vào/ Chương 3: GIỚI THIỆU VỀ PHẦN CỨNG 3.1 Tổng quan FRDM-KL46Z 3.2 Cấu trúc phần cứng Chương 4: GIỚI THIỆU CÁC KHÁI NIỆM RTOS CƠ BẢN 17 4.1 Khái niệm Real – Time 17 4.2 Giới thiệu RTOS 18 Chương 5: GIỚI THIỆU VỀ FREESCALE MQX RTOS 23 5.1 Nhiệm vụ RTOS MQX 23 5.2 Kernel Details 24 Chương 6: 6.1 LẬP TRÌNH TRÊN KIT NHÚNG 26 Đèn giao thông thời gian thực: Đèn đỏ sáng 10s, Xanh sáng 8s, Vàng sáng 2s 26 NỘI DUNG Chương 1: GIỚI THIỆU VỀHỆTHỐNGNHÚNG 1.1 Khái niệm hệthốngnhúngHệthốngnhúng (Embedded system) thuật ngữ để hệthống có khả tự trị nhúng vào môi trường hay hệthống mẹ Đó hệthống tích hợp phần cứng phần mềm phục vụ toán chuyên dụng nhiều lĩnh vực công nghiệp, tự động hoá điều khiển, quan trắc truyền tin Đặc điểm hệthốngnhúng hoạt động ổn định có tính tự động hoá cao 1.2 Đặc điểm Các hệthốngnhúng thiết kế để thực số nhiệm vụ chuyên dụng đóng vai trò hệthống máy tính đa chức Một số hệthống đòi hỏi ràng buộc tính hoạt động thời gian thực để đảm bảo độ an toàn tính ứng dụng; số hệthống không đòi hỏi ràng buộc chặt chẽ, cho phép đơn giản hóa hệthống phần cứng để giảm thiểu chi phí sản xuất Một hệthốngnhúng thường khối riêng biệt mà hệthống phức tạp nằm thiết bị mà điều khiển Phần mềm viết cho hệthốngnhúng gọi firmware lưu trữ chip nhớ đọc (read-only memory) nhớ flash Phần mềm thường chạy với số tài nguyên phần cứng hạn chế: bàn phím, hình có với kích thước nhỏ, nhớ hạn chế 1.3 Kiến trúc CPU (Processor Architecture) Các xử lý hệthốngnhúng chia thành hai loại: vi xử lý vi điều khiển MCU (Microprocessor Unit) thiết vị tích hợp tính toán điện tử bao gồm ba thành phần chip: Bộ vi xử lý Bộ nhớ Các ngõ ra/ vào I / O Hình 1: Kiến trúc CPU Bộ vi xử lý thiết bị đa chức năng, lập trình nhận liệu số từ đầu vào input, xử lý theo lệnh lưu trữ nhớ cung cấp kết cho đầu output Hình 2: Kiến trúc Harvard kiến trúc Von Neuman Kiến trúc Harvard kiến trúc máy tính có đường địa liệu riêng biệt, tốc độ nhanh có thẻ vừa đọc lệnh vừa truy cập liệu từ nhớ Kiến trúc Von Neumann, gọi mô hình Von Neumann kiến trúc Princeton, kiến trúc thiết kế cho máy tính điện tử có chung đường địa liệu, với thành phần gồm: đơn vị logic số học ghi vi xử lý, đơn vị điều khiển có chứa lệnh 1.4 Kiến trúc tập lệnh (Instruction Set Architecture) ISA phần kiến trúc máy tính liên quan đến lập trình, bao gồm kiểu liệu gốc, hướng dẫn, ghi, chế độ địa chỉ, kiến trúc nhớ, ngắt xử lý ngoại lệ, I / O bên Hình 3:: So sánh cấu trúc CISC RISC Các kiểu truyền địa toán tử lệnh Các kiểu đánh/truyền địa cho phép ra/truyền toán tử tham gia lệnh thực thi Kiểu địa số, ghi khu vực cụ thể nhớ Một số kiểu đánh địa cho phép sử dụng địa ngắn số loại cho phép xác định khu vực chứa toán tử lệnh, thường gọi địa hiệu dụng toán tử thường động Chúng ta xét số loại hình đánh địa sử dụng rộng rãi chế thực lệnh • Đánh địa tức (Immediate Addressing): Phương pháp cho phép truyền giá trị toán tử lệnh cách tức phần câu lệnh thực thi Ví dụ sử dụng kiểu đánh địa tức thời cho câu lệnh Load 0x0008 giá trị 0x0008 nạp vào AC Trường bit thường dùng để chứa toán tử lệnh chứa giá trị thực toán tử địa toán tử cần truyền cho lệnh thực thi Kiểu địa tức thời cho phép thực thi lệnh nhanh thực truy xuất nhớ để nạp giá trị toán tử mà giá trị toán tử gộp phần câu lệnh thực thi Vì toán tử tham gia phần cố định chương trình kiểu đánh địa phù hợp với toán tử biết trước thời điểm thực chương trình, hay xác định thời điểm biên dịch chương trình • Đánh địa trực tiếp (Direct Addressing):Phương pháp cho phép truyền toán tử lệnh thông qua địa trực tiếp chứa toán tử nhớ Ví dụ sử dụng chế đánh địa toán tử trực tiếp câu lệnh Load 0x0008 hiểu liệu hay toán tử nạp câu lệnh nằm nhớ địa 0x0008 Cơ chế đánh địa trực tiếp thuộc loại hình nhanh không nhanh chế truyền địa tức thời độ mềm dẻo cao địa toán tử không nằm phần mã lệnh giá trị thay đổi trình thực thi chương trình • Đánh địa ghi (Register Addressing): Trong cách đánh địa truyền toán tử toán tử không nằm nhớ trường hợp đánh địa trực tiếp mà nằm ghi Khi toán tử nạp vào ghi việc thực nhanh tốc độ truy xuất ghi nhanh so với nhớ Nhưng số lượng ghi có hạn phải chia sẻ trình thực chương trình toán tử phải nạp vào ghi trước thực thi • Đánh địa gián tiếp (Indirect Addressing): Trong phương pháp truyền toán tử này, trường toán tử câu lệnh sử dụng để tham chiếu tới trỏ nằm nhớ để trỏ tới địa hiệu dụng toán tử Cơ chế truyền nói mềm dẻo so với chế truyền địa khác trình thực thi chương trình Ví dụ áp dụng chế truyền địa gián tiếp câu lệnh Load 0x0008 hiểu giá trị liệu có địa 0x0008 thực chất chứa địa hiệu dụng toán tử cần truyền cho câu lệnh Giả thiết vị trí ô nhớ 0x0008 chứa giá trị 0x02A0 0x02A0 giá trị thực toán tử nạp vào AC Một biến thể khác thực theo chế truyền tham chiếu tới trỏ nằm khu vực ghi Cơ chế biết tới với tên gọi đánh địa gián tiếp ghi Ví dụ câu lệnh Load R1 sử dụng chế truyền địa gián tiếp ghi dễ dàng thông dịch toán tử truyền câu lệnh có địa hiệu dụng nằm ghi R1 • Cách đánh địa sở số (Indexed and Based Addressing): Trong chế người ta sử dụng ghi để chứa offset (độ chênh lệch tương đối) mà cộng với toán tử để tạo địa hiệu dụng Ví dụ, toán tử X lệnh Load X đánh địa theo chế địa chỉ số ghi R1 ghi chứa số có giá trị địa hiệu dụng toán tử thực chất X+1 Cơ chế đánh địa sở giống ngoại trừ điều thay sử dụng ghi địa offset sử dụng ghi địa sở Về mặt lý thuyết khác hai chế tham chiếu địa chúng sử dụng toán tử.được tính toán thể Một ghi số lưu số mà sử dụng offset so với địa đưa trường địa lệnh thực thi Thanh ghi sở lưu địa sở trường địa câu lệnh thực thi lưu giá trị dịch chuyển từ địa Hai chế tham chiếu địa hữu ích việc truy xuất với phần tử kiểu mảng Tuỳ thuộc vào thiết kế tập lệnh ghi mục đích chung thường hay sử dụng chế đánh địa • Đánh địa ngăn xếp (Stack Addressing): Trong chế truyền địa toán tử nhận từ đỉnh ngăn xếp Thay sử dụng ghi mục đích chung hay ô nhớ kiến trúc dựa ngăn xếp lưu toán tử đỉnh ngăn xếp, truy xuất với CPU Kiến trúc không hiệu việc lưu giữ giá trị trung gian phép tính phức tạp mà cung cấp phương pháp hiệu việc truyền tham số lời gọi hàm để lưu cất cấu trúc liệu cục định nghĩa phạm vi tồn biến hàm Trong cấu trúc lệnh truyền toán tử dựa ngăn xếp, hầu hết lệnh bao gồm phần mã, nhiên có số lệnh đặc biệt có toán tử ví dụ lệnh cất vào (push) lấy (pop) từ ngăn xếp Chỉ có số lệnh yêu cầu hai toán tử hai giá trị chứa ô nhớ đỉnh ngăn xếp sử dụng Ví dụ lệnh Add, CPU lấy khỏi ngăn xếp hai phần tử nằm đỉnh thực phép cộng sau lưu kết trở lại đỉnh ngăn xếp • Các cách đánh địa khác: Có nhiều biến tạo chế đánh địa giới thiệu Đó tổ hợp việc tạo xác định địa hiệu dụng toán tử truyền cho lệnh thực thi Ví dụ chế đánh địa chỉ số gián tiếp sử dụng đồng thời hai chế đánh địa đồng thời, tương tự có chế đánh địa sở/offset…Cũng có số chế tự động tăng giảm ghi sử dụng lệnh thực thi nhờ mà giảm độ lớn mã chương trình đặc biệt phù hợp cho ứng dụng Nhúng Chương 2: GIỚI THIỆU VỀ PHẦN MỀM NHÚNG 2.1 Khái niệm phần mềm nhúng Phần mềm nhúng chương trình viết, biên dịch máy tính nạp vào hệthống khác (gọi tắt KIT) bao gồm nhiều vi xử lý cài sẵn hệ điều hành, nhớ ghi chép được, cổng giao tiếp với phần cứng khác… Phần mềm nhúng phần mềm tạo nên phần hồn, phần trí tuệ sản phẩm nhúng Phần mềm nhúng ngày có tỷ lệ giá trị cao giá trị sản phẩm nhúng Hiện phần lớn phần mềm nhúng nằm sản phẩm truyền thông sản phẩm điện tử tiêu dùng (consumer electronics), tiếp đến sản phẩm ô tô, phương tiện vận chuyển, máy móc thiết bị y tế, thiết bị lượng, thiết bị cảnh báo bảo vệ sản phẩm đo điều khiển Để tồn phát triển, sản phẩm công nghiệp tiêu dùng cần phải thường xuyên đổi ngày có nhiều chức tiện dụng thông minh Các chức phần lớn chương trình nhúng tạo nên Phần mềm nhúng lĩnh vực công nghệ then chốt cho phát triển kinh tế nhiều quốc gia giới Nhật Bản, Hàn Quốc, Phần Lan Trung quốc Tại Mỹ có nhiều chương trình hỗ trợ Nhà nước để phát triển hệthống phần mềm nhúng Hàn Quốc có dự án lớn nhằm phát triển công nghệ phần mềm nhúng thiết bị gia dụng nối mạng Internet, hệthống phần mềm nhúng cho phát triển thành phố thông minh, dự án phát triển ngành công nghiệp phần mềm nhúng, trung tâm hỗ trợ ngành công nghiệp hậu PC Thụy Điển coi phát triển hệnhúng có tầm quan trọng chiến lược cho phát triển đất nước Phần Lan có sách quốc gia tích cực cho nghiên cứu phát triển hệnhúng đặc biệt phần mềm nhúngNhững quốc gia thành lập nhiều viện nghiên cứu trung tâm phát triển hệnhúng 2.2 Đặc điểm phần mềm nhúng Hiện phần mềm nhúng có số đặc điểm sau bật: Phần mềm nhúng phát triển theo hướng chức hóa đặc thù Hạn chế tài nguyên nhớ Yêu cầu thời gian thực 2.3 Quy trình thực phần mềm nhúng Tạo dự án Thiết lập tùy chọn dự án Biên dịch & Liên kết Chương trình Flash Thực & Gỡ lỗi Hình 4: Quy trình thực phần mềm nhúng 2.4 Quá trình ngắt (Interrupt process) Xử lý ngắt Một hệthống thời gian thực gọi “điều khiển kiện” có nghĩa hệthống phải có chức phản ứng lại kiện xảy môi trường hệthống Vậy hệthống phản ứng lại kiện nào? Hiện có hai phương pháp tiếp cận vấn đề Phương pháp Polling hay Vòng lặp Polling phương pháp thứ xử lý ngắt (Interrup) Polling Hình 5:Vòng lặp Polling Hãy xem đoạn code hình 8.4 Chương trình bắt đầu vài cài đặt ban đầu cho hệthống truy cập vào vòng lặp vô hạn, đó, kiện mà hệthống phản ứng lại kiểm tra Khi có kiện xảy ra, dịch vụ phản ứng lại kiện kích hoạt Tiến trình thực vòng lặp tỏ đơn giản thích hợp với hệthống nhỏ không đòi hỏi gắt gao mặt thời gian Tuy nhiên, có số vấn đề cần bàn đến: • Thời gian phản ứng lại kiện phụ thuộc lớn vào vị trí mà chương trình thực vòng lặp Lấy ví dụ: Nếu kiện event_1 xảy trước câu lệnh if(event_1) thời gian phản ứng ngắn Nhưng kiện event_1 xảy sau câu lệnh kiểm tra đó, chương trình lúc phải quét toàn vòng lặp quay trở điểm đầu thực dịch vụ kiện event_1 • Và hệ tất yếu, thời gian phản ứng hàm số lượng kiện kích hoạt thời điểm sau thời gian thực dịch vụ lần quét vòng lặp chương trình • Tất kiện chương trình đối xử cách bình đẳng ưu tiên • Khi có đặc tính mới, dịch vụ mới, thêm vào chương trình, thời gian phản ứng lại dài thêm 2.5 Các ngõ vào/ Các thành phần hệthống máy tính truyền thông qua mạng kết nối I / O ánh xạ nhớ cho phép ghi vào/ra truy cập vị trí nhớ Kết sổ đăng ký truy cập sử dụng lệnh Load Store Giao diện thiết bị vào/ra Cung cấp phương tiện truyền liệu trao đổi thông tin trạng thái kiểm soát Bao gồm liệu, trạng thái, ghi điều khiển truy cập lệnh Load and Store I / O ánh xạ nhớ cho phép phần mềm xem ghi vị trí nhớ Hình 6: Mạng kết nối máy tính trình nói chung để thực thi chương trình phục vụ tác vụ cho kiện ngắt Thực chất trình ngắt CPU nhận dạng tín hiệu ngắt, chấp nhận đưa trỏ lệnh chương trình trỏ tới vùng mã chứa chương trình phục vụ tác vụ ngắt Vì ngắt gắn với vector ngắt trỏ lưu thông tin địa vùng nhớ chứa mã chương trình phục vụ tác vụ ngắt REAL TIME CLOCK Đồng hồ thời gian thực (RTC : Real-time clock), khái niệm thời gian thực dùng với ý nghĩa thời gian tuyệt đối mà người sử dụng, tình giây, phút, giờ… 3.2.7 COMMUNICATION INTERFACES Trong kit FRDM-KL46Z có chuẩn giao tiếp để giao tiếp với ngoại vi: I2C (Inter‐IC) Giao thức ưu tiên truyền thông nối tiếp phát triển Philips Semiconductor gọi bus I2C Tất chíp có tích hợp tương thích với I2C có thêm giao diện tích hợp Chip để truyền thông trực tiếp với thiết bị tương thích I2C khác Đường bus thực truyền thông nối tiếp I2C gồm hai đường đường truyền liệu nối tiếp SDA đường truyền nhịp xung đồng hồ nối tiếp SCL Vì chế hoạt động đồng nên cần có nhịp xung tín hiệu đồng Đơn vị thiết bị khởi tạo trình truyền thông đơn vị Chủ đơn vị tạo xung nhịp đồng bộ, điều khiển cho phép kết thúc trình truyền Nếu đơn vị Chủ muốn truyền thông với đơn vị khác gửi kèm thông tin địa đơn vị mà muốn truyền liệu truyền Đơn vị Tớ gán đánh địa thông qua đơn vị Chủ thiết lập truyền thông trao đổi liệu I2C giao diện truyền thông đặc biệt thích hợp cho ứng dụng truyền thông đơn vị bo mạch với khoảng cách ngắn tốc độ thấp Ví dụ truyền thông CPU với khối chức bo mạch EEPROM, cảm biến, đồng hồ tạo thời gian thực Hầu hết thiết bị hỗ trợ I2C hoạt động tốc độ 400Kbps, số cho phép hoạt động tốc độ cao vài Mbps I2C đơn giản để thực thi kết nối nhiều đơn vị hỗ trợ chế xác định địa SPI SPI giao diện cổng nối tiếp đồng ba dây cho phép kết nối truyền thông nhiều VĐK phát triển Motorola Trong cấu hình mạng kết nối truyền thống phải có VĐK giữ vai trò Chủ (Master) VĐK lại Chủ Tớ SPI có tốc độ lập trình, cực pha nhịp đồng hồ khả trình kết thúc ngắt truyền thông Nhịp đồng hồ không nằm dòng liệu phải cung cấp tín hiệu tách độc lập Có ba ghi SPSR, SPCR SPDR cho phép 14 thực chức điều khiển, trạng thái lữu trữ UART Trong giao tiếp UART, hai UART giao tiếp trực tiếp với Các UART truyền chuyển liệu song song từ thiết bị điều khiển CPU vào dạng nối tiếp, truyền liệu nối tiếp đến UART nhận, sau chuyển đổi liệu nối tiếp trở lại thành liệu song song cho thiết bị nhận Chỉ có hai dây để truyền liệu hai UART Luồng liệu từ pin Tx UART truyền với pin Rx UART nhận: Để bắt đầu cho việc truyền liệu UART, START bit gửi đi, sau bit liệu kết thúc trình truyền STOP bit Cả hai UARTs phải phải cấu hình để truyền nhận cấu trúc gói liệu giống USB OTG USB On-The-Go, viết tắt USB OTG hay đơn giản OTG dạng thiết bị tích hợp cổng USB… khác với thông thường Giao thức kết nối USB (Universal Serial Bus) yêu cầu thiết bị thuộc mô hình khách/chủ Về bản, cổng USB máy tính bạn chủ flashdrive (USB) nhỏ xinh khách Khi khách chủ gặp nhau, kết nối tạo lập I2S I2S viết tắt Inter-IC Sound Integrated Interchip Sound Chuẩn dùng cho việc truyền liệu âm Hỗ trợ truyền hai kênh liệu đường bus tín hiệu nối tiếp 3.2.8 HMI Giao diện người dùng (User interface) hay gọi giao diện người-máy ( HMI ) phần máy tính đảm nhận tương tác người với máy tính Bàn phím máy tính, hình cảm ứng số ví dụ điển hình cho HMI nơi mà ta tương tác với máy tính Thành phần HMI thường có : Phần cứng Màn hình Các phím bấm 15 Chips: CPU, ROM,RAM, EPROM/Flash, … Phần Firmware: Các đối tượng Các hàm lệnh Phần mềm phát triển: Các công cụ xây dựng HMI Các công cụ kết nối, nạp chương trình gỡ rối Các công cụ mô Giao tiếp: Các cổng giao tiếp Các giao thức kết nối Trong KIT Kinetis KL4x Family, thành phần HMI gồm có : GPIO, Xtrinsic low-power touch-sensing Interface, Segment LCD controller GPIO viết tắt General Purpose Input Output chân đầu ra, đầu vào đa chức Chúng đảm nhận vai trò kiểm soát giao tiếp với thiết bị bên K4lx family có cảm biến cảm ứng điều khiển LCD với mức tiêu thụ điện thấp hỗ trợ LCD lên đến 376 đoạn 16 Chương 4: GIỚI THIỆU CÁC KHÁI NIỆM RTOS CƠ BẢN 4.1 Khái niệm Real – Time Thời gian thực khó định nghĩa Ý tưởng thời gian thực thể chỗ: hệthống phải có phản ứng thích hợp, thời điểm với môi trường Nhiều người nghĩ rằng, thời gian thực có nghĩa thực nhanh, nhanh tốt, điều sai lầm Thời gian thực có nghĩa “đủ nhanh” (fast enough) ngữ cảnh, môi trường mà hệthống hoạt động Khi đề cập đến máy tính điều khiển động ô tô, cần chạy nhanh tốt Một ví dụ khác, đề cập đến nhà máy lọc dầu hoá học chẳng hạn, nhà máy điều khiển một hệthống máy tính Các máy tính có trách nhiệm điều khiển trình hoá học đồng thời phải phát cố xảy Tuy nhiên, phản ứng hay trình hoá học thường có số thời gian lớn từ hàng giây hàng phút Chính mày giả thiết máy tính hoàn toàn có khả phản ứng lại cố nghiêm trọng Tuy nhiên, đặt vấn đề hệthống máy tính trình in báo cáo dài thông số sản lượng tuần trước trục trặc xảy Vậy thời gian để phản ứng lại cố thế? Thực chất việc tính toán thời gian thực không việc phản ứng đủ nhanh mà phải đáng tin cậy xác Máy tính điều khiển động ô tô bạn phải điều chỉnh luồng nhiên liệu thời gian đánh lửa cách hợp lý vòng quay Nếu không, động không làm việc theo mong muốn Máy tính nhà máy lọc dầu phải phát phản ứng lại điều kiện bất thường thời gian cho phép để tránh thảm hoạ xảy Như vậy, nghệ thuật lập trình thời gian thực việc thiết kế hệthống cho tiếp nhận cách xác ràng buộc mặt thời gian suốt trình kiện ngẫu nhiên không đồng xảy Các tính hệthống Real – time: Các hệthống thời gian thực thường mục đích Các hệthống thời gian thực thường không yêu cầu phải giao tiếp với người dùng Các tính tìm thấy máy tính để bàn yêu cầu phần cứng lớn so với thường có sẵn hệthống thời gian thực Các dạng thời gian thực Về bản, chương trình có tính thời gian thực phải có khả phản ứng lại kiện môi trường mà hệthống làm việc khoảng thời gian định cho trước Nhữnghệthống gọi hệthống “điều khiển kiện” (hay hệ 17 thống lái kiện – event-driven) mô tả thời gian trễ từ mà kiện xảy hệthống có hoạt động phản ứng lại với kiện Thời gian thực, mặt khác, đòi hỏi giới hạn cao thời gian trễ, gọi “thời hạn lập danh mục” (scheduling deadline) Một hệthống thời gian thực chia làm loại: “thời gian thực cứng” (hard real-time) “thờigian thực mềm” (soft real-time) Trong hệthống hard real-time, hệthống phải tiếp nhận nắm bắt scheduling deadline thời điểm Sự sai sót việc tiếp nhận deadline dẫn đến hậu nghiêm trọng người Lấy ví dụ: máy hỗ trợ nhịp tim cho bệnh nhân phẫu thuật Thuật toán điều khiển phụ thuộc vào thời gian nhịp tim người bệnh, thời gian bị trễ, tính mạng người bệnh bị ảnh hưởng Đối với khái niệm soft real-time, scheduling deadline thở chút Chúng ta mong muốn hệthống phản ứng lại kiện thời gian cho phép thực nghiêm trọng xảy hệthống bị trễ Lỗi mặt thời gian đơn giản dẫn đến hậu giảm độ tin cậy đối tượng hệthống mà hậu thê thảm khác xảy Mạng lưới thu ngân tự động ngân hàng ví dụ rõ cho soft real-time Mạng rút tiền tự động ATM hệthống thời gian thực? Chẳng dám đặt cược Khi bạn đưa thẻ ATM vào máy, bạn mong máy phản ứng lại vòng hay giây Nhưng lâu thế, điều tồi tệ xảy là… bạn sốt ruột thấy khó chịu máy Trên thực tế có nhiều hệthống phối hợp loại trên, đó, phần hệthống làm việc dựa hard real-time, số phần khác lại dựa soft realtime 4.2 Giới thiệu RTOS Hệ điều hành thời gian thực – RealTime Operating Systems(RTOS), phần mềm điều khiển chuyên dụng thường dùng ứng dụng điện toán nhúng có tài nguyên nhớ hạn chế yêu cầu ngặt nghèo thời gian đáp ứng tức thời, tính sẵn sàng cao khả tự kiểm soát cách xác Có thể tìm thấy RTOS nơi Chúng phổ biến hệ điều hành mà bạn quen thuộc Windows, Mac OS Unix RTOS âm thầm làm việc bên định tuyến chuyển mạch mạng, động xe, máy nhắn tin, điện thoại di động, thiết bị y tế, thiết bị đo lường điều khiển công nghiệp vô số ứng dụng khác Một thuộc tính quan trọng RTOS khả tách biệt với ứng dụng, có chương trình bị "chết" hay hoạt động không hợp lệ, RTOS nhanh chóng cô lập chương trình này, kích hoạt chế phục hồi bảo vệ chương trình khác hay thân hệ điều hành khỏi hậu lệnh sai Cơ chế bảo vệ tương tự 18 áp dụng để tránh tình trạng tràn nhớ chương trình gây RTOS xuất hai dạng: cứng mềm Nếu tính xử lý ứng với kiện không xảy hay xảy không đủ nhanh, RTOS cứng chấm dứt hoạt động giữ không gây ảnh hưởng đến độ tin cậy tính sẵn sàng phần lại hệthống Vì RTOS máy tính nhúng trở nên phổ biến ứng dụng quan trọng, nhà phát triển thương mại tạo nên RTOS với tính sẵn sàng cao Những sản phẩm có thành phần phần mềm chuyên dụng làm chức cảnh báo, chạy chương trình chẩn đoán hệthống để giúp xác định xác vấn đề trục trặc hay tự động chuyển đổi sang hệthống dự phòng Hiện thời RTOS sẵn sàng cao hỗ trợ bus Compact PCI tổ chức PCI Industrial Computer Manufacturers Group, bus dùng cho phần cứng trao đổi nóng RTOS có nhiều dạng Sản phẩm thương mại VxWorks VxWorks AE, Wind River Systems Inc; VxWorks AE thiết kế với tính sẵn sàng cao, hỗ trợ khả gửi thông điệp phân tán chịu lỗi RTOS cho phép lập trình viên tách biệt thư viện dùng chung, liệu phần mềm hệthống ứng dụng LynxOS loại RTOS cứng, làm việc với Unix Java QNX chạy xử lý Intel x86 với nhân có 10 KB RTOS giới nghiên cứu gồm có Chimera Đại học Carnegie Mellon Đây hệthống đa nhiệm, đa xử lý thời gian thực, thiết kế để tạo dễ dàng cho nhà lập trình việc tái cấu hình tái sử dụng mã Chimera nhắm vào hệthống rô bô tự động RTOS Đại học Maryland, có tên Maruti, hỗ trợ cho ứng dụng thời gian thực cứng mềm Trong nhiều năm, ứng dụng dựa RTOS chủ yếu hệthốngnhúng gần chúng có mặt khắp nơi, từ thiết bị y tế điều khiển máy ảnh máy pha cà phê, ứng dụng tính toán phân tán thúc đẩy nhà phát triển hệ điều hành thực nghiên cứu phát triển chuẩn Chính phủ Mỹ có số chương trình lĩnh vực công nghệ quản lý tài nguyên thời gian thực, mạng, quản lý liệu phần mềm điều khiển trung gian Mục đích chương trình làm cho hệthống cộng tác, phân tán giao tiếp chia sẻ tài nguyên với Một uỷ ban chuyên trách đẩy mạnh việc tạo khung công nghệ cho tính toán phân tán thời gian thực, áp dụng cho ứng dụng quân thương mại Khung công nghệ hỗ trợ giao tiếp thành phần liên tác chuẩn Cho dù người tạo môi trường tính toán phân tán thời gian thực, phổ dụng RTOS công nghệ quan trọng mà người dùng cuối chưa nghe đến 19 Hình 8: So sánh kiến trúc RTOS OS chuẩn Hệthống điều hành với phần lõi hạt nhân phải đảm nhiệm tác vụ sau: • Xử lý ngắt • Lưu trữ ngữ cảnh chương trình thời điểm xuất ngắt • Nhận dạng lựa chọn xử lý phục vụ dịch vụ ngắt • Điều khiển trình • Tạo kết thúc trình/tác vụ • Lập lịch điều phối hoạt động hệthống • Định thời • Điều khiển ngoại vi • Xử lý ngắt • Khởi tạo giao tiếp vào Hình 9:Cấu trúc Hệ điều hành thời gian thực Tùy theo chế thực xây dựng hoạt động hạt nhân người ta phân loại số loại hình: • Hệthống thời gian thực nhỏ: Với loại phần mềm phát triển mà không cần có hệ điều hành, người lập trình phải tự quản lý xử lý vấn đề điều khiển hệthống bao gồm: • Xử lý ngắt • Điều khiển trình/ tác vụ • Quản lý nhớ • Công nghệ đa nhiệm • Mỗi trình có không gian nhớ riêng 20 • Các trình phải chia nhỏ thành Thread chia sẻ không gian nhớ • Các dịch vụ cung cấp hạt nhân • Tạo kết thúc trình/ tác vụ • Truyền thống trình • Các dịch vụ định thời gian Thông thường, thiết kế thực ứng dụng nhúng / cách sử dụng máy trạng thái đơn giản Máy trạng thái cấu trúc đơn giản sử dụng để thực số hoạt động, thường theo trình tự Hình 10: Quá trình thực máy trạng thái RTOS Kernel Hạt nhân phần hệthống đa tác vụ chịu trách nhiệm quản lý nhiệm vụ (nghĩa là, để quản lý thời gian CPU) giao tiếp nhiệm vụ Dịch vụ cung cấp hạt nhân chuyển đổi ngữ cảnh Việc sử dụng hạt nhân thời gian thực nói chung đơn giản hóa việc thiết kế hệthống cách cho phép ứng dụng chia thành nhiều nhiệm vụ hạt nhân quản lý Một hạt nhân thêm chi phí cho hệthống bạn đòi hỏi nhớ thêm (không gian mã), bổ sung RAM cho cấu trúc liệu hạt nhân quan trọng nhất, công việc đòi hỏi không gian ngăn xếp riêng mà có khuynh hướng ăn RAM cách nhanh chóng Một hạt nhân tiêu tốn thời gian CPU (thường từ đến 5%) Một hạt nhân cho phép bạn sử dụng tốt CPU bạn cách cung cấp cho bạn dịch vụ thiếu quản lý semaphore, hộp thư, hàng đợi, thời gian trễ, vv Một bạn thiết kế hệthống cách sử dụng hạt nhân thời gian thực, bạn không muốn trở lại trước / hệthống 21 RTOS Task and Processes RTOS Context Switching Task a Task code Stack CPU mem Task b Task code Stack mem CPU CPU Task c Task code Stack mem CPU is resumed Task ab c is ends ends resumed execution execution based based on event CPU status is copied back from stack now executed executed from from CPU CPU Task ab isis now Hình 11: Nguyên lý hoạt động RTOS Task and processes Context Swiching RTOS Scheduler Trình lên lịch, gọi dispatcher, phần hạt nhân chịu trách nhiệm xác định nhiệm vụ chạy Hầu hết hạt nhân thời gian thực ưu tiên dựa Mỗi nhiệm vụ giao ưu tiên dựa tầm quan trọng Mức độ ưu tiên cho công việc ứng dụng cụ thể Trong hạt nhân dựa ưu tiên, kiểm soát CPU luôn trao cho nhiệm vụ ưu tiên cao sẵn sàng để chạy Tuy nhiên, nhiệm vụ ưu tiên cao có CPU xác định loại hạt nhân sử dụng Có hai loại hạt nhân ưu tiên: không bảo vệ phòng ngừa 22 Chương 5: GIỚI THIỆU VỀ FREESCALE MQX RTOS 5.1 Nhiệm vụ RTOS MQX Một hệthống thời gian thực gọi “điều khiển kiện” có nghĩa hệthống phải có chức phản ứng lại kiện xảy môi trường hệthống Vậy hệthống phản ứng lại kiện nào? Một giải pháp đưa có tên Đa nhiệm Giải pháp chứng minh mô hình chuẩn cho hệthống điều khiển kiện hệthống sử dụng ngắt Ý tưởng giải pháp phân chia vấn đề lớn thành nhánh nhỏ đơn giản để giải Mỗi vấn đề (sub-problem) trở thành tác vụ - task Mỗi tác vụ làm việc đơn giản Sau đó, giả thiết tác vụ chạy song song với Trên thực tế, tác vụ không chạy song song hệthống đa vi xử lý Trong trường hợp xét, tác vụ chia sẻ vi xử lý Cũng giống chương trình khác, tác vụ bao gồm mã lệnh để thực chức tác vụ phải thực (do người lập trình thiết kế) Mã lệnh chứa hàm tương tự hàm main() ngôn ngữ lập trình C Điều làm nên khác biệt tác vụ ngữ cảnh (context) chứa ngăn xếp (stack) Hình 12: Task gì? Mỗi tác vụ bao gồm : • Mã nguồn chứa chức tác vụ • Một ngăn xếp để chứa ngữ cảnh tác vụ • Một hộp thư (mail box) (tùy chọn) để phục vụ cho việc truyền thông với tác vụ khác Chú ý rằng, (nhiều hữu dụng) ta tạo nhiều tác vụ từ 23 hàm chung Như nói, điều làm cho tác vụ tách biệt khác biệt với tác vụ khác ngăn xếp Thực tế lập trình hướng đối tượng kiểu cổ điển Ta nghĩ hàm tác vụ việc định nghĩa class Và tác vụ tạo từ hàm ví dụ class Mặc dù thấy tác vụ độc lập, chúng cần phải hợp tác với để thực mục đích chung thiết kế sẵn cho hệthống Vì vậy, tác vụ cần phải có chế truyền thông mà thông qua đó, chúng kết nối, đồng với tác vụ khác Trong trường hợp này, ta gọi chế Hộp thư – mail box Hình 13:Cấu trúc thông thường tác vụ Một tác vụ khởi động với vài khởi tạo (có thể bao gồm khởi tạo đối số data) Sau đó, thông thường, tác vụ vào vòng lặp không giới hạn Tại vài điểm vòng lặp, đợi "Một kiện xảy ra", có thể, kiện tin gửi tới mail box, đơn giản tràn định thời Trong chờ kiện, tác vụ không làm không sử dụng vi xử lý Một vài tác vụ khác sẵn sàng hoạt động hoạt động xử dụng vi xử lý Khi kiện mà tác vụ chờ xảy ra, tác vụ "thức dậy" và: nhận lấy tin, giải mã tin hoạt động theo yêu cầu đặt săn dựa hệthống yêu cầu phân định câu lệnh switch() Sau thực xong yêu cầu, tác vụ lại quay trở lại trạng thái chờ kiện Có thể thấy rằng, tất tá vụ giành phần lớn thời gian cho việc chờ kiện xảy Đây cung lí để đa nhiệm hoạt động 5.2 Kernel Details Thời gian tuyệt đối so với thời gian qua Ban đầu, thời gian tuyệt đối thời gian kể từ ngày tham chiếu 0: 00: 00.000 vào ngày tháng năm 1970 Trừ ứng dụng thay đổi thời gian tuyệt đối, cặp sau hàm trả lại giá trị nhau: _time_get () _time_get_elapsed () 24 _time_get_ticks () _time_get_elapsed_ticks () Nhưng thời gian tuyệt đối cập nhật, thời gian trôi qua nên sử dụng để đo khoảng cách Các loa ̣i timer Trình tính Trọng lượng nhẹ sử dụng để gọi chức theo chu kỳ định kỳ, tạo hàng đợi định kỳ Chức chạy ISR, không ngăn gọi MQX không phép Normal timer Tạo nhiệm vụ hẹn giờ, đếm hết hạn, gây chức thông báo để chạy Chức thông báo không chặn phân bổ nguồn lực loại giống ISR Chạy mức độ ưu tiên tác vụ hẹn giờ, thiết lập đếm thời gian tạo, nhiệm vụ tạo nhiệm vụ hẹn Một nhiệm vụ bắt đầu đếm thời gian thời điểm cụ thể số thời gian cụ thể sau thời gian Bộ tính sử dụng thời gian trôi qua thời gian tuyệt đối Có hai loại tính giờ: Bộ hẹn lần, hết hạn lần Định thời tính giờ, mà hết hạn nhiều lần khoảng thời gian định Khi hẹn định kỳ hết hạn, MQX lập lại đếm thời gian Lightweight Timers Cung cấp thông báo định kỳ Một nhiệm vụ tạo hàng đợi định kỳ thêm đếm thời gian vào Bộ tính hết hạn tốc độ với khoảng thời gian hàng đợi, bù lại với thời gian hết hạn kỳ Chỉ có cấu trúc liệu thay tác vụ 25 Chương 6: LẬP TRÌNH TRÊN KIT NHÚNG 6.1 Đèn giao thông thời gian thực: Đèn đỏ sáng 10s, Xanh sáng 8s, Vàng sáng 2s 6.1.1 Code lập trình cho PIC C: #include #fuses INTRC_IO #use rtos(timer=0, minor_cycle=25ms) #use delay(clock=8MHz) #define D1 PIN_C0 #define V1 PIN_C1 #define X1 PIN_C2 #define D2 PIN_C3 #define V2 PIN_C4 #define X2 PIN_C5 UNSIGNED INT1 L=0; SIGNED INT8 GIAY=10; unsigned int8 ma7doan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x8 0,0x90}; #task (rate=10s,max=20ms) void DAO() { L=~L; GIAY=10; } #task (rate=1s,max=20ms) void DEN() { GIAY ; IF(L==0) { IF((GIAY2)) { OUTPUT_LOW(V2); OUTPUT_LOW(D1); OUTPUT_HIGH(X1); OUTPUT_HIGH(D2); 26 } ELSE IF((GIAY=0)) { OUTPUT_HIGH(V1); OUTPUT_LOW(X1); } } IF(L==1) { IF((GIAY2)) { OUTPUT_LOW(V1); OUTPUT_LOW(D2); OUTPUT_HIGH(X2); OUTPUT_HIGH(D1); } ELSE IF((GIAY=0)) { OUTPUT_HIGH(V2); OUTPUT_LOW(X2); } } OUTPUT_D(MA7DOAN[GIAY/10]); OUTPUT_B(MA7DOAN[GIAY%10]); } void main() { set_tris_e(0xFF); setup_adc_ports(NO_ANALOGS); set_tris_d(0x00); set_tris_b(0x00); set_tris_c(0x00); output_d(0x00); output_c(0x00); rtos_run(); } 27 6.1.2 Kết nối phần cứng 6.1.3 Kết mô 28 ... Chương 1: GIỚI THIỆU VỀ HỆ THỐNG NHÚNG 1.1 Khái niệm hệ thống nhúng Hệ thống nhúng (Embedded system) thuật ngữ để hệ thống có khả tự trị nhúng vào môi trường hay hệ thống mẹ Đó hệ thống tích hợp phần... Đặc điểm hệ thống nhúng hoạt động ổn định có tính tự động hoá cao 1.2 Đặc điểm Các hệ thống nhúng thiết kế để thực số nhiệm vụ chuyên dụng đóng vai trò hệ thống máy tính đa chức Một số hệ thống. .. tính ứng dụng; số hệ thống không đòi hỏi ràng buộc chặt chẽ, cho phép đơn giản hóa hệ thống phần cứng để giảm thiểu chi phí sản xuất Một hệ thống nhúng thường khối riêng biệt mà hệ thống phức tạp