FreeRTOS

Started by tha, October 08, 2021, 08:24:01 AM

Previous topic - Next topic

tha

Did you know? (คุณรู้หรือเปล่า?)

     •  FreeRTOS ถูกดาวน์โหลดทุกๆ 170 seconds (โดยเฉลี่ย, ในระหว่างปี 2019).
     •  FreeRTOS อยู่ในอันดับต้น ๆ ในทุกๆ EETimes Embedded Market Survey ตั้งแต่ปี 2011, ซึ่งเป็นปีแรกที่มันถูกรวมไว้.
     •  FreeRTOS เสนอ lower project risks และ a lower total cost of ownership กว่าทางเลือกเชฺงพาณิชย์เนื่องจาก:
             •  ได้รับการสนับสนุนอย่างเต็มที่และจัดทำเป็นเอกสาร
             •  คนส่วนใหญ่นำผลิตภัณฑ์ออกสู่ตลาดโดยไม่ต้องติดต่อเรา แต่ด้วยความอุ่นใจอย่างเต็มที่ พวกเขาสามารถเลือกที่จะเปลี่ยนไปใช้ใบอนุญาตเชิงพาณิชย์ที่มีการ
                 ชดใช้ค่าเสียหายทั้งหมด (พร้อมการสนับสนุนเฉพาะ) ได้ตลอดเวลา
     •  บาง FreeRTOS ports ไม่เคยปิดการใช้งาน interrupts อย่างสมบูรณ์.
     •  เพื่อวัตถุประสงค์ในการควบคุมคุณภาพที่เข้มงวด และเพื่อขจัดความคลุมเครือในการเป็นเจ้าของ IP ทั้งหมด โค้ด FreeRTOS อย่างเป็นทางการจะถูกแยกออกจากการมี
         ส่วนร่วมของชุมชน
     •  FreeRTOS มีโหมด tick-less เพื่อรองรับ low power applications โดยตรง.
     •  FreeRTOS ถูกออกแบบมาให้เรียบง่ายและใช้งานง่าย: source files เพียง 3 ไฟล์ที่ใช้กับพอร์ต RTOS ทั้งหมด และ one microcontroller specific source
         file ถูกต้องการและ API ของไฟล์นั้นได้รับการออกแบบมาให้ใช้งานง่ายและเข้าใจง่าย
     •  The RL78 port สามารถสร้าง 13 tasks, 2 queues and 4 software timers ในภายใต้ 4K bytes of RAM

tha

Why choose FreeRTOS? (ทำไมต้องเลือก FreeRTOS?)

" ณ จุดนี้อาจพูดได้อย่างปลอดภัยว่า FreeRTOS ผ่าน 'การตรวจสอบโดยเพื่อน' มากกว่า RTOS อื่น ๆ ที่มีอยู่บนโลก ฉันได้ใช้มันในหลายโครงการ - หนึ่งในนั้นคือสภาพแวดล้อมแบบมัลติโปรเซสเซอร์ที่ใช้โปรเซสเซอร์มากกว่า 64 ตัวและ จำเป็นต้องรันเป็นเวลาหลายเดือนอย่างน่าเชื่อถือ แกน RTOS ทำงานได้ดี ลองใช้ FreeRTOS เลย" - John Westmoreland

FreeRTOS จัดให้มีสิ่งดีที่สุดของทุกโลก: FreeRTOS ฟรีและรองรับอย่างแท้จริง, แม้เมื่อใช้ใน commercial applications. The FreeRTOS open source MIT license ไม่ต้องการให้คุณเปิดเผย IP ที่เป็นกรรมสิทธิ์ของคุณ. คุณสามารถนำผลิตภัณฑ์ออกสู่ตลาดโดยใช้ FreeRTOS โดยไม่ต้องพูดคุยกับเรา, ไม่ต้องเสียค่าธรรมเนียมใดๆ,  และผู้คนหลายพันคนทำอย่างนั้น. เมื่อใดก็ตามที่คุณต้องการรับข้อมูลสำรองเพิ่มเติม หรือหากทีมกฎหมายของคุณต้องการหนังสือรับรองหรือการชดใช้ค่าเสียหายเพิ่มเติม เมื่อนั้นมีเส้นทางอัปเกรดเชิงพาณิชย์ที่มีต้นทุนต่ำอย่างง่าย ความอุ่นใจของคุณมาพร้อมกับความรู้ที่คุณสามารถเลือกใช้เส้นทางการค้าได้ตลอดเวลาที่คุณเลือก

tha

นี่คือบางเหตุผลว่าทำใม FreeRTOS เป็นตัวเลือกที่ดีสำหรับ your next application - FreeRTOS...

     •  จัดให้มี a single and independent solution สำหรับ many different architectures และ development tools.
     •  เรียกได้ว่ามีความน่าเชื่อถือ มั่นใจได้ด้วยกิจกรรมที่ดำเนินการโดย the SafeRTOS sister project.
     •  เป็นคุณลักษณะที่หลากหลายและยังคงอยู่ระหว่างการพัฒนาอย่างต่อเนื่อง
     •  มี a minimal ROM, RAM and processing overhead. โดยทั่วไป an RTOS kernel binary image จะอยู่ในขอบเขตของ 6K ถึง 12K bytes.
     •  ง่ายมาก - แกนหลักของเคอร์เนล RTOS มีอยู่ในไฟล์ C เพียง 3 ไฟล์เท่านั้น ไฟล์ส่วนใหญ่จำนวนมากที่รวมอยู่ในการดาวน์โหลดไฟล์ .zip เกี่ยวข้องกับแอปพลิเคชั่น
         สาธิตจำนวนมากเท่านั้น
     •  ใช้งานได้ฟรีอย่างแท้จริงในแอปพลิเคชันเชิงพาณิชย์ (ดูรายละเอียดเงื่อนไขใบอนุญาต)
     •  มีการอนุญาตให้ใช้สิทธิ์เชิงพาณิชย์ การสนับสนุนอย่างมืออาชีพ และบริการการย้ายพอร์ตที่มีอยู่ในรูปแบบ OPENRTOS จากระบบความสมบูรณ์สูงของ
         WITTENSTEIN ซึ่งเป็นพันธมิตรของเรา
     •  มีเส้นทางการโยกย้ายไปยัง SafeRTOS ซึ่งรวมถึงการรับรองสำหรับภาคการแพทย์ ยานยนต์ และอุตสาหกรรม
     •  มีฐานผู้ใช้ที่ใหญ่และเติบโตขึ้นเรื่อยๆ
     •  ประกอบด้วยตัวอย่างที่กำหนดไว้ล่วงหน้าสำหรับแต่ละพอร์ต ไม่จำเป็นต้องหาวิธีตั้งค่าโครงการ - เพียงแค่ดาวน์โหลดและคอมไพล์!
     •  มีฟอรัมการสนับสนุนฟรีที่ยอดเยี่ยม ได้รับการตรวจสอบ และใช้งานได้ฟรี
     •  มีการประกันว่ามีการสนับสนุนทางการค้าหากจำเป็น
     •  ให้เอกสารเพียงพอ
     •  ปรับขนาดได้มาก เรียบง่าย และใช้งานง่าย
     •  FreeRTOS เสนอทางเลือกในการประมวลผลแบบเรียลไทม์ที่เล็กกว่าและง่ายกว่าสำหรับแอปพลิเคชันที่ eCOS, embedded Linux (หรือ Real Time Linux) และ
         แม้แต่ uCLinux จะไม่พอดี ไม่เหมาะสม หรือไม่พร้อมใช้งาน


tha

https://www.freertos.org/FreeRTOS-Coding-Standard-and-Style-Guide.html

Coding Standard, Testing and Style Guide

บนหน้านี้:

     •  Coding Standard
     •  Testing
     •  Naming Conventions
     •  Data Types
     •  Style Guide

Coding Standard / MISRA Compliance

The core FreeRTOS source files (ไฟล์ที่ใช้กันทั่วไปในพอร์ตทั้งหมด แต่ไม่ใช่ the port layer) ปฏิบัติตาม the MISRA coding standard guidelines. การปฏิบัติตามถูภเช็คโดยใช้ pc-lint กับ the linked lint configuration files. ดังที่ the standard มีความยาวหลายหน้า และมีให้ใช้ประโยชน์โดยซื้อได้จาก MISRA โดยมีค่าธรรมเนียมเพียงเล็กน้อย เราไม่ได้ทำซ้ำกฎทั้งหมดที่นี่.

tha

การเบี่ยงเบนจากมาตรฐาน MISRA ถูกแสดงรายการไว้ด้านล่าง:

     •  สอง API functions มีมากกว่าหนึ่ง exit point. A deviation ถูกอนุญาติให้ในสองกรณีนี้ด้วยเหตุผลด้านประสิทธิภาพที่สำคัญ.
     •  เมื่อสร้าง tasks, the source code จัดการ memory addresses เพื่อค้นหา the start and end addresses ของ the stack ที่จัดสรรให้กับ the created
         task. The code ต้องทำงานได้กับทุก the architectures ที่ FreeRTOS ถูกพอร์ต - ซึ่งรวมถึง architectures ที่มี 8, 16, 20, 24 and 32-bit buses. สิ่งนี้
         ต้องการบาง pointer arithmetic อย่างหลีกเลี่ยงไม่ได้ . เมื่อ pointer arithmetic ถูกใช้, the arithmetic result ถูกตรวจเช็คโดยทางโปรแกรมเพื่อความถูกต้อง.

tha

     •  The trace macros, โดยค่าเริ่มต้น, จะว่างเปล่า, ดังนั้นไม่สร้างโค้ดใดๆ. ดังนั้น, MISRA compliance checking ถูกดำเนินการด้วย dummy macro
         definitions.
     •  MISRA rules ถูกปิดทีละบรรทัดโดย line basis, ตามความเหมาะสม (นั่นคือ การปฏิบัติตามกฎถูกถือว่าสร้างโค้ดที่เหมาะสมสำหรับ a deeply embedded system
         น้อยกว่าการไม่ปฏิบัติตามอย่างระมัดระวัง). เหตุการณ์ดังกล่าวแต่ละครั้งจะมาพร้อมกับการให้เหตุผลโดยใช้ the special pc-lint MISRA comment mark-up
         syntax.

tha

FreeRTOS สร้างด้วย many different compilers, ซึ่งบางตัวก็ล้ำหน้ากว่าตัวอื่นๆ. ด้วยเหตุผลดังกล่าว FreeRTOS จึงไม่ใช้คุณลักษณะหรือรูปแบบใดๆ ที่นำมาใช้กับภาษา C โดยหรือตั้งแต่มาตรฐาน C99. ข้อยกเว้นประการหนึ่งคือการใช้ the stdint.h header file. The FreeRTOS/Source/include directory บรรจุไฟล์หนึ่งชื่อ stdint.readme ที่สามารถเปลี่ยนชื่อเป็น stdint.h เพื่อจัดให้มี the minimum stdint type definitions ที่จำเป็นต่อการ build FreeRTOS - หาก your compiler ไม่จัดให้มีมันเป็นของตัวเอง.

tha

Testing

ส่วนนี้อธิบาย the tests ที่ทำกับโค้ดทั่วไป (the code ที่อยู่ใน the FreeRTOS/Source directory, ที่ถูกสร้างโดยทุก FreeRTOS kernel ports), และ the tests ถูกทำบน the portable layer code (the code ที่อยู่ใน subdirectories ของ the FreeRTOS/Source/portable directory).

     •  Common code

        The standard demo/test files พยายามจัดให้มี 'branch' test coverage (ในกรณีส่วนใหญ่ไฟล์นี้จะบรรลุจริงๆ 'condition' coverage เพราะ the kernel's
        coding style จงใจรักษาเงื่อนไขที่เรียบง่ายเฉพาะเจาะจงสำหรับจุดประสงค์นี้), โดย tests ทำให้แน่ใจว่าทั้ง 'true' and 'false' paths ผ่านแต่ละ decision ถูก
        ปฏิบัติ. 'branch' coverage ถูกวัดโดยใช้ GCOV โดยการกำหนด the mtCOVERAGE_TEST_MARKER() macro ไปยัง a NOP (no operation)
        instruction ใน the 'else' path ของแต่ละ 'if()' condition ถ้า the 'else' path อีกอย่างหนึ่งเป็นว่างเปล่า. mtCOVERAGE_TEST_MARKER() ถูกกำหนด
        เฉพาะในขณะที่ทำการวัด test coverage - โดยปกติมันเป็น an empty macro ที่ไม่ได้สร้างโค้ดใดๆ.

     •  Port layer

        Port layer code ถูกตรวจสอบโดยใช้ 'reg test' tasks, และ, สำหรับ ports ที่รองรับ interrupt nesting, the 'interrupt queue' tasks.

        The 'reg test' tasks สร้างหลาย (ปกติสอง) tasks ที่อย่างแรกเติมทุก the CPU registers ด้วยค่าที่รู้, จากนั้นตรวจสอบต่อไปว่าทุกๆ register รักษาค่าที่ทราบ
        ที่คาดไว้ของมันในขณะที่การทดสอบอื่นๆ ดำเนินการอย่างต่อเนื่อง (soak test) แต่ละ reg test task ใช้ค่าที่ไม่ซ้ำกัน.

        The 'interrupt queue' tasks ทำการตรวจสอบบน interrupts ของ different priorities ที่อย่างน้อย three deep. Macros ถูกใช้ใส่ artificial delays
        ลงใน pertinent points ภายใน the code เพื่อให้แน่ใจว่า the desired test coverage ถูกทำสำเร็จ.

เป็นที่น่าสังเกตว่าการทดสอบอย่างละเอียดถี่ถ้วนมีส่วนในการค้นหาจุดบกพร่องในซิลิคอนหลายครั้ง