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

6 21 0
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

Đang tải... (xem toàn văn)

Thông tin tài liệu

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 t[r]

(1)

Ngơ Thị Vinh Tạp chí KHOA HỌC & CÔNG NGHỆ 113(13): 135 - 140

135

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 cịn hỗ trợ chế cho phép tạo task co-routie 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

(2)

Ngô Thị Vinh Tạp chí KHOA HỌC & CƠNG NGHỆ 113(13): 135 - 140

136

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 sẽđược 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 sẽở 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

Đồ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

(3)

Ngô Thị Vinh Tạp chí KHOA HỌC & CƠNG NGHỆ 113(13): 135 - 140

137 Ngoà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 cịn 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 ởđây thực cấu hình số tương ứng với xung nhịp đầu vào hệ thống,

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ịđược 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

(4)

Ngô Thị Vinh Tạp chí KHOA HỌC & CƠNG NGHỆ 113(13): 135 - 140

138

xảy Sơđồ sau thể trình tự hoạt động hai task vTaskLED1 vTaskLED2 thể hình

Hình Trình tự hoạt động task vTaskLED1 và vTaskLED2

Tiến trình thứ ba vTaskADC sẽ 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 sẽ 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 hồ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

Hình Sử dụng Mutex đểđồng hai task vTaskADC vTaskSerial

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; }

(5)

Ngơ Thị Vinh Tạp chí KHOA HỌC & CƠNG NGHỆ 113(13): 135 - 140

139 Hình Nạp file đuôi 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 giờđồ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 nạp chương trình lên board

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 Kết hình máy tính nhận liệu từ cổng COM ảo

(6)

Ngô Thị Vinh Tạp chí KHOA HỌC & CƠNG NGHỆ 113(13): 135 - 140

140

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

[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.uni-kl.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

Phn bin khoa hc: TS Phùng Trung Nghĩa – Trường ĐH Công ngh thông tin & TT - ĐHTN

Ngày đăng: 30/03/2021, 01:46

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan