Chuyển đến nội dung chính

Bắt đầu với FreeRTOS (Bài 1)

NOTE: 1 vài tài liệu mình sử dụng trong bài này là mình sưu tầm được, có thể không có bản quyền, nếu tác giả không muốn đăng lên thì mình sẽ xóa.

Trước khi tìm hiểu mọi người có thể biên dịch thử 1 chương trình để lấy khí thế tại đây.

FreeRTOS là 1 hệ điều hành nhúng phù hợp cho các ứng dụng có yêu cầu về thời gian thực 1 cách chặt chẽ.
Và vì nó miễn phí, nhỏ gọn và có thể nhúng vào các dòng vi điều khiển thông thường như PIC, AVR, MSP430, ARM...nên mình làm hướng dẫn này cho những ai muốn bắt đầu tìm hiểu về FreeRTOS.
Trang chủ của nó http://www.freertos.org/

Đầu tiên là phải tải FreeRTOS về đã:
(thời điểm này bản mới nhất là 7.5.2) để tải về. Sau khi tải về bạn click đúp vào file .exe ấy để giải nén. Ta được 1 folder FreeRTOSV7.5.2. Xong Bước 1 
Tiếp theo là nên đọc 1 tài liệu để hiểu sơ qua xem RTOS nó là cái gì và nó hoạt động như thế nào:
Các bạn lấy tài liệu này: 
đọc qua để hiểu nhé.

Bước tiếp là hãy làm những ví dụ nho nhỏ mô phỏng trên máy tính (vì cái công đoạn này đã làm mình khốn khổ mất gần 1 tuần :(( )
Tải tài liệu này về (hình như cái này là phải mua thì phải ^^)
Trong này có những ví dụ cơ bản để dùng FreeRTOS. Và để chạy được những ví dụ này bạn phải có 2 chương trình là Open Watcom IDE, và DOSBOX để mô phỏng.
DOSBOX trang chủ là http://www.dosbox.com/
tải chương trình phù hợp với hệ điều hành về và cài đặt nhé.
Open Watcom IDE trang chủ là http://openwatcom.org/index.php/Main_Page
kéo xuống bên dưới chọn cái open-watcom-c-win32... mà tải về nhé (mình đang ví dụ là dùng Win32)
tải về cài đặt thì nhớ chọn cài đặt full chức năng. À quên, khi cài cứ để mặc định là cài vào C:\WATCOM
Và cái quan trọng nhất là code mẫu theo sách.
tải cái này này 

Source code for the standard edition

giải nén và copy toàn bộ file này vào C:\WATCOM
Vậy là xong. Đầy đủ phụ kiện rồi đó. Tiến hành thôi!
Hic. mệt quá. mai làm tiếp vậy!

Bắt đầu với FreeRTOS (Bài 2)

Nhận xét

  1. Chào bạn!
    Mình cài Open WATCOM trên win7 nhưng khi chạy ví dụ 1 trong example, khi biên dịch máy báo lỗi Error (E14): cannot execute (wcc): no such file or directory.
    Mong banj chi giup minh

    Trả lờiXóa
    Trả lời
    1. bạn thử làm theo thế này nhé.
      http://www.youtube.com/watch?v=z2Gw0EDIPPI&feature=youtu.be
      nếu vẫn không được thì gỡ ra cài lại lần nữa xem sao :D

      Xóa
    2. MÌnh cũng bị lỗi tượng tự, ko biết làm sao?

      Xóa
    3. Bạn đã xem cái clip mình gửi link và làm như thế chưa? vẫn không được à?

      Xóa
    4. Hello hlstgroup, t cũng bị lỗi giống như của bạn và cuối cùng tìm ra là do phiên bản cài đặt bị lỗi. Bạn có thể tải ở link sau: ftp://ftp.openwatcom.org/install/open-watcom-c-win32-1.9.exe

      Xóa
  2. Chào bạn!
    Theo hướng dẫn mình đã biên dịch được một chương trinh trong demo của Freertos. Mình đang thắc mắc muốn tạo ra một chương trình của riêng mình thì các bước làm như thế nào? Bạn chỉ cần định hướng cho mình dùng phần mềm nào để tạo project để soạn thảo và biên dịch code, các bước thực hiện như thế nào? Nếu có thể bạn có thể cho mình email có gì mình thắc mắc mình hỏi bạn. Cảm ơn bạn!

    Trả lờiXóa
  3. Bạn đọc bài này nhé.
    http://hethongnhung.blogspot.com/2013/09/cach-bien-dich-1-chuong-trinh-on-gian.html

    Trả lờiXóa
    Trả lời
    1. Mình đã đọc và làm được như hướng dẫn của bạn? nhưng ý mình muốn hỏi làm sao để tạo ra và chỉnh sửa file main.c hay là các file khác. Dùng AVR studio hay là sao hả bạn?

      Xóa
    2. Ừm. AVR studio chỉ là 1 trong các chương trình có thể dùng để biên dịch FreeRTOS thôi, chương trình gì là tùy thuộc vào vi điều khiển gì mà. Bạn có thể xem lại mấy trang đầu của tài lieu Using the FreeRTOS ấy, ở chỗ cấu trúc các file.

      Xóa
  4. Cảm ơn bạn!
    Mình sẽ tìm hiểu thêm?
    Vậy bạn có thể cho mình hỏi bạn có chương trình demo nhấp nháy led ở 2 port của AVR đó, bạn soạn thảo chương trình đó trên phần mềm gì vậy? Bạn có thể hướng dẫn mình viết 1 chương trình demo đơn giản như vậy không?

    Trả lờiXóa
    Trả lời
    1. Cái đó mình viết bằng AVR Studio, bạn đọc kỹ tài liệu tiếng anh đó hoặc là các bài mình viết thì bạn sẽ thấy nó rất đơn giản, chỉ là việc tạo them 2 cái Task thôi. Không khó đâu.

      Xóa
    2. anh có ví dụ nào nữa để mô phỏng để hiểu hơn về cái này không anh!

      Xóa
  5. bạn ơi, mình đang dùng phần mềm E2 Studio, có thể nhúng RTOS vào trong phần mềm ấy được ko nhỉ?

    Trả lờiXóa
  6. Cái này bạn có thể vào trang chủ của RTOS để kiểm tra xem nó có hỗ trợ cho IDE đó không chứ mình chưa dùng E2 Studio nên cũng không giúp cho bạn được.

    Trả lờiXóa
  7. xin chào, FreeRTOS có thể biên dịch trên KeilC cho arm được không ạ?

    Trả lờiXóa

Đăng nhận xét

Bài đăng phổ biến từ blog này

Chap 1: Task management (Quản lý Task).

Bài trước: Bắt đầu với FreeRTOS (Bài 2) 1 tháng rồi bận bịu quá nà. Bài này sẽ tổng hợp lại những thứ cần chú ý ở trong Chap 1 cuốn "Using the freertos real time kernel" Câu 1: Task là gì? và được tạo ra thế nào? Task được hiểu nôm na như là 1 chương trình thực hiện 1 nhiệm vụ nào đó. 1 Task gồm có: tên, chức năng, giá trị ưu tiên, độ sâu stack, task handle (như kiểu cái móc để tác động ấy), biến tác động vào task. Để tạo task thì đầu tiên phải định nghĩa chức năng của nó trước, cấu trúc hàm cơ bản như sau: void ATaskFunction(void *pvParameters) { // Khởi tạo biến ở đây for( ; ; ) { // Chức năng thực hiện ở đây } } Ví dụ: void vTask1(void *pvParameters) {                const char *pcTaskName = "This is Task 1 \r\n";                for ( ; ; ) { vPrintString(pcTaskName); } } Sau đó phải dùng hàm xTaskCreate()

Chapter 3: Interrupt management (quản lý ngắt).

Bài trước: Chapter 2: Queue Management (Quản lý hàng đợi). Nối tiếp chương 2 về quản lý hàng đợi, hôm nay chúng ta sẽ tìm hiểu về quản lý ngắt. Ngắt là 1 thành phần cực kỳ quan trọng trong lập trình nhúng, nếu bạn đã học qua về vi điều khiển thì chắc không phải nói nhiều về cái này làm gì. Còn nếu chưa thì hiểu nôm na Ngắt là 1 sự kiện mà nó luôn được ưu tiên cao nhất, tức là khi sự kiện ngắt xảy ra thì tất cả mọi sự kiên khác đều phải dừng lại để ngắt thực hiện công việc của mình. Nhưng có 1 sự khác nhau ở ngắt trong FreeRTOS và ngắt thông thường ở chỗ: Khi ngắt thông thường xảy ra nó sẽ nhảy vào hàm ngắt và các công việc cần phải làm đều đặt trong hàm ngắt. Còn ở FreeRTOS thì khi ngắt xảy ra nó sẽ nhảy vào hàm thủ tục ngắt, hàm thủ tục ngắt lại phát đi 1 "tín hiệu" để hàm thực hiện chức năng của ngắt Unblocking và hàm này có Priority cao hơn tất cả các task khác nên nó sẽ thực hiện ngay lập tức. Tín hiệu ở đây chính là Semaphore, có 2 loại Semaphore là Binary Semaph