Bài trước: Chapter 4: Resource Management ( Quản lý tài nguyên).
Phù! Vậy là đi đến chương cuối cùng về các kiến thức của hệ điều hành FreRTOS này rồi :D
Phần này nói về phần quản lý bộ nhớ RAM của vi điều khiển. Với hàm C chuẩn thì ta có 2 hàm là malloc() và free() nhưng mà khi sử dụng những hàm này sẽ nảy sinh 1 số vấn đề như:
1. Không phù hợp với các hệ thống nhúng nhỏ.
2. Quá trình thực thi cần 1 không gian tính toán lớn.
3. Không đảm bảo an toàn.
4. Không phải là cấp phát động.
5. Có thể gây nên hiện tượng phân mảnh bộ nhớ.
.........
Do đó nên FreeRTOS sử dụng 2 hàm thay thế là pvPortMalloc(); và vPortFree();
Có ba file định nghĩa sẵn các hàm này là heap_1.c, heap_2.c và heap_3.c nằm ở trong chỉ dẫn: FreeRTOS\Source\Portable\MemMang.
I. Heap_1.c
Là 1 version cơ bản trong quản lý bộ nhớ, trong này chỉ có hàm pvPortMalloc() mà không có hàm vPortFree tức là chỉ có cấp phát bộ nhớ mà không thể giải phóng sau khi đã cấp phát.
Cấu hình độ lớn của RAM bằng hằng số configTOTAL_HEAP_SIZE ở file FreeRTOSConfg.c
Khi 1 Task được yêu cầu thì sẽ được cấp khối điều khiển + bộ nhớ RAM đi kèm.
cụ thể được trình bày ở hình:
Bài tiếp: Cách biên dịch 1 chương trình đơn giản từ ví dụ của FreeRTOS
Phù! Vậy là đi đến chương cuối cùng về các kiến thức của hệ điều hành FreRTOS này rồi :D
Phần này nói về phần quản lý bộ nhớ RAM của vi điều khiển. Với hàm C chuẩn thì ta có 2 hàm là malloc() và free() nhưng mà khi sử dụng những hàm này sẽ nảy sinh 1 số vấn đề như:
1. Không phù hợp với các hệ thống nhúng nhỏ.
2. Quá trình thực thi cần 1 không gian tính toán lớn.
3. Không đảm bảo an toàn.
4. Không phải là cấp phát động.
5. Có thể gây nên hiện tượng phân mảnh bộ nhớ.
.........
Do đó nên FreeRTOS sử dụng 2 hàm thay thế là pvPortMalloc(); và vPortFree();
Có ba file định nghĩa sẵn các hàm này là heap_1.c, heap_2.c và heap_3.c nằm ở trong chỉ dẫn: FreeRTOS\Source\Portable\MemMang.
I. Heap_1.c
Là 1 version cơ bản trong quản lý bộ nhớ, trong này chỉ có hàm pvPortMalloc() mà không có hàm vPortFree tức là chỉ có cấp phát bộ nhớ mà không thể giải phóng sau khi đã cấp phát.
Cấu hình độ lớn của RAM bằng hằng số configTOTAL_HEAP_SIZE ở file FreeRTOSConfg.c
Khi 1 Task được yêu cầu thì sẽ được cấp khối điều khiển + bộ nhớ RAM đi kèm.
cụ thể được trình bày ở hình:
II. Heap_2.c
Là Version có giải thuật tốt nhất trong quản lý bộ nhớ, nó cung cấp chức năng xóa RAM sau khi 1 Task được xóa.
III. Heap_3.c
Là Version mà sử dụng hàm cơ bản malloc() và free() nhưng mà đã được chỉnh sửa để an toàn hơn hàm C chuẩn.
Xong! chương này chỉ cơ bản vậy thôi :))
Chào bạn. Hình như chưa có ai Cmt. Mình cmt vậy.
Trả lờiXóaBlog rất hay và có ích với những bạn muốn tìm hiểu về RTOS.
FreeTOS trên tất cả các nền tảng MCU khác nhau. Cảm ơn và chúc học tập tốt @@.
Thanks u. Những thứ này mà có thể giúp được mọi người 1 phần nào đấy là mình cũng thấy vui rồi ^^
Trả lờiXóathank You...tuy nó không được tổng quát và thêm ví dụ như slide tiếng anh nhưng kết hợp 2 bài đọc thì mình dễ hiểu hơn nhiều
Xóahay lắm, cảm ơn ông bạn nhiều
Trả lờiXóa