Bài báo này sẽ trình bày các bước xây dựng một ứng dụng với hệ điều hành FreeRTOS và triển khai nó trên chíp vi điều khiển ARM AT91SAM7S256 của hãng Atmel-một chíp thuộc họ vi điều khiển ARM7 được sử dụng rộng rãi trong các bo mạch dùng chủ yếu cho việc thực hành, thí nghiệm với ARM7 trong các trường đại học hoặc các trung tâm nghiên cứu về hệ nhúng. Chương trình ứng dụng là một chương trình đa tiến trình hoạt động song song để có thể tận dụng được khả năng xử lý của CPU.
Ngơ Thị Vinh Tạp chí KHOA HỌC & CƠNG NGHỆ 113(13): 135 - 140 TRIỂN KHAI HỆ ĐIỀU HÀNH NHÚNG THỜI GIAN THỰC FreeRTOS TRÊN VI ĐIỀU KHIỂN ARM AT91SAM7S256 Ngô Thị Vinh* Trường ĐH Công nghệ thông tin Truyền thơng – ĐH Thái Ngun TĨM TẮT FreeRTOS hệ điều hành nhúng thời gian thực có nhiều ưu điểm bật để phù hợp cho hệ thống thời gian thực nhỏ với kiến trúc khác ARM, AVR, APSx, AFSx, LPC2000, STM32, PIC18,….Với phần cứng khác người lập trình cần phải cung cấp tham số đầu vào phù hợp với dòng vi điều khiển để ứng dụng hoạt động theo cấu hình mạch thiết kế Bài báo trình bày bước xây dựng ứng dụng với hệ điều hành FreeRTOS triển khai chíp vi điều khiển ARM AT91SAM7S256 hãng Atmel-một chíp thuộc họ vi điều khiển ARM7 sử dụng rộng rãi bo mạch dùng chủ yếu cho việc thực hành, thí nghiệm với ARM7 trường đại học trung tâm nghiên cứu hệ nhúng Chương trình ứng dụng chương trình đa tiến trình hoạt động song song để tận dụng khả xử lý CPU Từ khóa: FreeRTOS, ARM, hệ điều hành nhúng, AT91SAM7S256, quản lý tài nguyên, tiến trình GIỚI THIỆU* FreeRTOS hệ điều hành nhúng thời gian thực mã nguồn mở[1] đời từ năm 2003, đến phát triển mạnh mẽ nhận nhiều ủng hộ lập trình cho hệ nhúng FreeRTOS có tính khả chuyển, sử dụng miễn phí dùng cho mục đích thương mại[1] Nó có nhiều ưu điểm bật so với hệ điều hành nhúng thời gian thực khác có kích thức nhỏ gọn nên phù hợp với hệ nhúng thời gian thực nhỏ; viết ngơn ngữ C nên có độ phù hợp cao với phần cứng khác Ngồi ra, FreeRTOS hỗ trợ chế cho phép tạo task coroutie với số lượng task không giới hạn phụ thuộc vào tài nguyên phần cứng chip[1]; hỗ trợ chế truyền thông đồng task task ngắt cách sử dụng hàng đợi semaphore nhị phân semaphore đếm mutex; cho phép nhận biết ngăn xếp bị tràn Ngay hệ thống nhúng lớn người ta sử dụng FreeRTOS để tiết kiệm dung lượng nhớ làm cho hệ thống bị tải * Tel: 0987706830; Email: ntvinh@ictu.edu.vn FreeRTOS đời cài đặt chủ yếu cho dòng chip [3], [4], [5] LPC, PIC, RX tiếp tục quan tâm triển khai dòng chip ARM [2] Với phần cứng khác người lập trình cần cấu hình thơng số khác cho phù hợp hệ thống hoạt động xác Đã có số ứng dụng FreeRTOS viết cho chip AT91SAM7S32 bít AT91SAM7S64 bít [10] đời vi xử lý thấp AT91SAM7S256, ứng dụng viết túy chương trình lập trình giao tiếp với cổng vi điều khiển mà không sử dụng hệ điều hành nhúng thời gian thực[10] Do đó, chúng ứng dụng đơn tiến trình Nhiều lập trình viên hệ nhúng quan tâm đến việc triển khai ứng dụng FreeRTOS chip AT91SAM7S256 Vì vậy, báo trình bày bước xây dựng ứng dụng sử dụng hệ điều hành FreeRTOS, chương trình gồm bốn tiến trình chạy đồng thời đồng sử dụng chế hàng đợi chế mutex hệ điều hành Chương trình sử dụng LED nút nhấn thiết kế sẵn board để thể trạng thái task minh họa ngắt hệ nhúng Đồng thời chương trình truyền liệu từ chuyển đổi ADC máy tính qua cổng COM hiển thị hình nhờ task khác 135 Ngơ Thị Vinh Tạp chí KHOA HỌC & CƠNG NGHỆ QUẢN LÝ HOẠT ĐỘNGTRONG FREERTOS Quản lý task: Đây nhiệm vụ quan trọng FreeRTOS Các nhiệm vụ mà người lập trình muốn hệ thống thực viết nội dung task Mỗi task gán độ ưu tiên phù hợp lập lịch xếp thời gian hoạt động Mỗi task gồm tham số như: chức năng, tên, độ ưu tiên, độ sâu stack, định danh task biến tham số tác động vào task File task.c [8] cung cấp tập hàm chức để làm việc với task Thời gian hoạt động task định nghĩa file FreeRTOSConfig.h tính mini giây theo cơng thức t/portTICK_RATE_MS, với t thời gian trạng thái Blocking task Trong SAM7S256 Tick tương ứng với 500ms Quản lý hàng đợi [1]: FreeRTOS cung cấp chế hàng đợi (Queue) hoạt động theo nguyên tắc vào trước trước-FIFO Hàng đợi nơi lưu trữ liệu task Khi task chờ để ghi liệu vào hàng đợi đọc liệu từ hàng đợi bị rơi vào trạng thái Block Quản lý kiện ngắt [1]: FreeRTOS cho phép quản lý hiệu ngắt Khi ngắt xảy CPU chuyển vào hàm thủ tục ngắt, hàm thủ tục ngắt phát "tín hiệu" để hàm thực chức ngắt thực hiện, hàm có độ ưu tiên cao tất task khác nên thực Tín hiệu Semaphore, FreeRTOS có loại Semaphore Binary Semaphore Counting Semaphore [1] Có tác động vào Semaphore "Take" "Give" "Take" dùng cho hàm thực chức ngắt, chưa có ngắt hàm trạng thái khóa (Blocking ) chờ đợi kiện ngắt xảy Tác động "Give" thực hàm thủ tục ngắt, phát tín hiệu có ngắt xảy (Semaphore trạng thái Full), hàm thực chức ngắt chuyển sang trạng thái sẵn sàng (Semaphore trạng thái Empty) Sau thực xong lại trở lại trạng thái khóa chờ đợi cho kiện ngắt xảy 136 113(13): 135 - 140 Đồng liệu FreeRTOS [1]: Nếu Semaphore sử dụng FreeRTOS để đồng kiện Mutex sử dụng để đồng liệu task chúng cần truy xuất đến vùng nhớ chứa liệu chung Mutex khác semaphore chỗ bắt buộc phải trả vùng đệm liệu sau dùng Để tạo Mutex sử dụng phương thức xSemaphoreCreateMutex (void) Hai hàm tác động vào Mutex "Take" "Give" định nghĩa để bảo vệ vùng mã không cho phép task khác truy xuất task sử dụng BOARD ARM AT91SAM7S256 Với đặc điểm trình bày FreeRTOS phù hợp cài đặt họ vi điều khiển SAM7S Đây họ vi điều khiển sử dụng lõi ARM7TDMI nhân nhiều chip điện thoại di động ngày AT91SAM7S256 chip vi điều khiển điển hình họ thường sử dụng thiết bị RFID, đặc biệt sử dụng để chế tạo loạt bo mạch phục vụ cho việc học tập, nghiên cứu, thực hành thí nghiệm với vi điều khiển ARM trường đại học giới Hình Một số kít thí nghiệm sử dụng AT91SAM7S256 Chíp AT91SAM7S256 hoạt động với tần số 60MHz, 256KB nhớ Flash 64KB nhớ RAM Do đó, để tận dụng tối đa hiệu xử lý CPU người lập trình nên cài đặt hệ điều hành nhúng thời gian thực FreeRTOS cho chíp để xây dựng ứng dụng đa tiến trình Ngơ Thị Vinh Tạp chí KHOA HỌC & CƠNG NGHỆ Ngồi khả hỗ trợ lập trình cho chân vào ra, hoạt động định thời vi điều khiển thơng thường, AT91SAM7S256 hỗ trợ chuẩn truyền thông nối chuẩn RS485, chuyển đổi ADC 16 bít, chuẩn USB với tốc độ truyền 2.0 Để lập trình cho chip cần sử dụng tệp thư viện nhà sản xuất chip Atmel AT91SAM7S256.h [9], tệp định nghĩa chức chân ký hiệu sử dụng chương trình CÁC BƯỚC XÂY DỰNG ỨNG DỤNG VỚI FREERTOS CHO KÍT AT91SAM7S256 Có thể mơ tả cấu trúc hoạt động chung chương trình sử dụng hệ điều hành nhúng FreeRTOS sau: Hình Cấu trúc chung chương trình sử dụng hệ điều hành FreeRTOS hệ nhúng Bước 1: Khởi tạo cấu hình phần cứng cho bo mạch thực thiết lập thông số phù hợp với chip phần cứng cụ thể Chương trình thực cấu hình số tương ứng với xung nhịp đầu vào hệ thống, 113(13): 135 - 140 cấu hình chân vào số 17, 18, 19 20 cổng cổng cho việc điều khiển nút nhấn LED đơn, cấu hình thơng số khởi động điều khiển ADC USART chip Bước 2: Khởi tạo Semaphore Nếu chương trình có sử dụng semaphore để đồng liệu task chúng tạo bước Chương trình thực tạo semaphore sử dụng mutex để đồng vùng liệu dùng chung cho chuyển đổi ADC cổng USART Bước 3: Khởi tạo hàng đợi Nếu chương trình sử dụng chế hàng đợi để lưu trữ liệu chung chuyển tiến trình với chúng tạo bước Chương trình ứng dụng trình bày sử dụng hàng đợi để lưu trữ giá trị sử dụng làm cờ trạng thái cho tiến trình điều khiển LED Bước 4: Khởi tạo task Bước thực tạo task với độ ưu tiên định để thực nhiệm vụ theo yêu cầu người lập trình Chương trình ứng dụng xây dựng gồm bốn task tương ứng với bốn tiến trình hoạt động song song chíp Mỗi tiến trình thực nhiệm vụ sau: Tiến trình vTaskLED1: Điều khiển đảo trạng thái LED1 chân số 17 cổng chờ nhận ngắt tác động qua nút bấm chân số 19 cổng Tiến trình vTaskLED2: Điều khiển đảo trạng thái LED2 chân số 18 cổng chờ nhận ngắt tác động qua nút bấm chân số 20 cổng Hai tiến trình vTaskLED1 vTaskLED2 sử dụng hàng đợi tạo bước để điều khiển trạng thái LED cho phép ngắt mềm tác động nút bấm chân số 19 20 nhấn Khi tiến trình vTaskLED1 hoạt động tiến trình vTaskLED2 trạng thái Blocking ngược lại Khi tiến trình hoạt động LED bật sáng trạng thái Blocking LED tương ứng tắt, nhấn nút bấm chân 19 20 có ngắt 137 Ngơ Thị Vinh Tạp chí KHOA HỌC & CÔNG NGHỆ 113(13): 135 - 140 xảy Sơ đồ sau thể trình tự hoạt động hai task vTaskLED1 vTaskLED2 thể hình Hình Sử dụng Mutex để đồng hai task vTaskADC vTaskSerial Hình Trình tự hoạt động task vTaskLED1 vTaskLED2 Tiến trình thứ ba vTaskADC liên tiếp đọc giá trị từ kênh chuyển đổi tương tự sang số (ADC) ghi vào vùng đệm Tiến trình thứ tư vTaskSerial liên tiếp đọc liệu từ vùng đệm tiến trình vTaskADC ghi vào gửi cổng nối tiếp USART Hai tiến trình vTaskADC vTaskSerial sử dụng chung vùng đệm liệu nên phải đồng cách sử dụng semaphore với chế Mutex tạo bước Hoạt động đồng hai tiến trình mơ tả hình Thực chất để đồng hai tiến trình ta sử dụng biến cờ để đánh dấu vùng đệm liệu bận chuyển đổi ADC chưa hoàn thành hoàn thành để báo cho tiến trình truyền đọc liệu từ vùng đệm truyền qua cổng nối tiếp biết Đồng thời hai tiến trình sử dụng cặp hàm xSemaphoreTake() xSemaphoreGive() để bảo vệ vùng mã khơng cho phép tiến trình khác xâm nhập 138 Bước 5: Khởi động hệ điều hành Hệ điều hành bắt đầu chạy lập lịch để chia sẻ thời gian xử lý cho tiến trình chờ đợi kiện ngắt xảy Tổng kết lại ta có chương trình sau: int main(void){ Init (); //Tạo semaphore hệ điều hành để đồng tiến trình CreateMutexADC(); // Tạo hàng đợi tiến trình CreateQueue(); // Tạo task CreateAllTask(); //Khởi tạo hệ điều hành FreeRTOS vTaskStartScheduler(); return 0; } Ta thực biên dịch chương trình phần mềm IAR nạp chương trình lên kít qua cổng USB sử dụng phần mềm SAM_BA SAM_PROG Với SAM_PROG người lập trình nạp chương trình thực thi với bin tạo trực tiếp từ trình biên dịch IAR WinARM Ngơ Thị Vinh Tạp chí KHOA HỌC & CƠNG NGHỆ 113(13): 135 - 140 KẾT LUẬN Bài báo ưu điểm hệ điều hành nhúng thời gian thực FreeRTOS bước tiến hành xây dựng ứng dụng với FreeRTOS phần cứng định Tác giả tiến hành nạp chương trình thử nghiệm board AT91SAM7S256 hãng Atmel Hình Nạp file bin lên board ĐÁNH GIÁ KẾT QUẢ Kết kiểm tra chương trình kít cho thấy sau 100 lần bật tắt nút nguồn kít thấy chương trình hoạt động ổn định thời gian dài (một đồng hồ) cho kết hiển thị LED hình máy tính giống Trên kít ta quan sát thấy LED chân số 17 sáng LED chân số 18 tắt ngược lại hình Trên hình máy tính (hình 6) hiển thị liệu từ kít gửi qua cổng USART lần test giống Hình Kết hình máy tính nhận liệu từ cổng COM ảo Hình Kết nạp chương trình lên board Kết cho thấy chương trình hoạt động ổn định cho kết giống lền kiểm tra Bài báo làm tài liệu tham khảo cho lập trình viên hệ nhúng muốn tìm hiểu tìm hiểu cách xây dựng ứng dụng đa tiến trình sử dụng FreeRTOS nói chung board AT91SAM7S256 nói riêng 139 Ngơ Thị Vinh Tạp chí KHOA HỌC & CÔNG NGHỆ TÀI LIỆU THAM KHẢO [1] Richard Bary, Using the FreeRTOS Real Time Kernel - a Practical Guide - Standard Base Edition, Real Time Engineers Ltd London, 2013 [2] RICHARD BARY, USING THE FREERTOS REAL TIME KERNEL FOR CORTEX-M3 EDITION, REAL TIME ENGINEERS LTD LONDON, 2013 [3] RICHARD BARY (2013), USING THE FREERTOS REAL TIME KERNEL FOR LPC17XX EDITION , REAL TIME ENGINEERS LTD LONDON [4] Richard Bary, Using The FreeRTOS Real Time Kernel for Microchip PIC32 Edition, Real Time Engineers Ltd London, 2013 113(13): 135 - 140 [5] Richard Bary, (2013) Using The FreeRTOS Real Time Kernel for Renesas RX600 Edition, Real Time Engineers Ltd London [6] ALAN BURNS, ANDY WELLINGS, REAL-TIME SYSTEMS AND PROGRAMMING LANGUAGES, ADDISON WESLEY LONGMAN, NOVEMBER 1ST 1996 [7] Alan Burns and Andy Wellings, Real-Time Systems and Programming Languages (Fourth Edition), Addison Wesley Longmain, April 2009 [8] http://www.freertos.org [9] http:// www.atmel.com/ [10].http://siwawi.bauing.unikl.de/avr_projects/arm_projects/index_at91.html [11] http://www.embeddedrelated.com SUMMARY DEPLOYMENT EMBEDDED OPERATING SYSTEM FreeRTOS ON ARM MICROPROCESSOR AT91SAM7S256 Ngo Thi Vinh* College of of Information And Communication Technology – TNU FreeRTOS is a real-time embedded operating system that has many advantages for small real-time systems with different architectures such as ARM, AVR, APSx, AFSx, LPC2000, STM32, PIC18,… Programmers need to provide different input parameters corresponding to each microcontroller of different hardware platforms to obtain accurate applications in accordance with the configurations of the designed circuits This paper presents the steps to build an application using FreeRTOS and to setup FreeRTOS on ARM microcontroller AT91SAM7S256 of Atmel, which is one chip belonged to ARM7 microcontrollers that are widely used in for practicing and experimenting in universities and research centers of embedded systems The application is a multi-process program operating in parallel to take advantage of the processing power of the CPU Keywords: FreeRTOS, ARM, embedded operating system, AT91SAM7S256, resource management, task Ngày nhận bài: 03/11/2013; Ngày phản biện:15/11/2013; Ngày duyệt đăng: 18/11/2013 Phản biện khoa học: TS Phùng Trung Nghĩa – Trường ĐH Công nghệ thông tin & TT - ĐHTN * Tel: 0987706830; Email: ntvinh@ictu.edu.vn 140 ... BOARD ARM AT91SAM7S256 Với đặc điểm trình bày FreeRTOS phù hợp cài đặt họ vi điều khiển SAM7S Đây họ vi điều khiển sử dụng lõi ARM7 TDMI nhân nhiều chip điện thoại di động ngày AT91SAM7S256 chip vi. .. chương trình sử dụng hệ điều hành nhúng FreeRTOS sau: Hình Cấu trúc chung chương trình sử dụng hệ điều hành FreeRTOS hệ nhúng Bước 1: Khởi tạo cấu hình phần cứng cho bo mạch thực thiết lập thông... trình thực thi với bin tạo trực tiếp từ trình biên dịch IAR WinARM Ngơ Thị Vinh Tạp chí KHOA HỌC & CƠNG NGHỆ 113(13): 135 - 140 KẾT LUẬN Bài báo ưu điểm hệ điều hành nhúng thời gian thực FreeRTOS