FreeRTOS

  • 317 Replies
  • 2310 Views
*

Offline tha

  • *****
  • 2953
    • View Profile
Re: FreeRTOS
« Reply #272 on: November 26, 2021, 06:05:20 am »

*

Offline tha

  • *****
  • 2953
    • View Profile
Re: FreeRTOS
« Reply #273 on: November 26, 2021, 07:23:40 am »
Principle of Operation

Threads that run tasks

The Windows port layer สร้าง a low priority Windows thread สำหรับแต่ละ FreeRTOS task ที่สร้างโดย the FreeRTOS application. ทุก the low priority Windows threads ดังนั้นถูกเก็บใน the suspended state, นอกเหนือจาก the Windows thread ที่กำลังรัน the FreeRTOS task ที่เลือกโดย the FreeRTOS scheduler จะอยู่ใน the Running state. ด้วยวิธีนี้, the FreeRTOS scheduler จะเลือกซึ่ง low priority Windows thread เพื่อรันให้สอดคล้องกับ scheduling policy ของมัน. ทุก the other low priority windows threads ไม่สามารถรันเนื่องจากพวกมันถูกระงับ.

FreeRTOS ports ที่รันบน microcontrollers จะต้องกระทำ complex context switching เพื่อบันทึกและกู้คืน the microcontroller context (registers, etc.) เนื่องจาก tasks เข้าสู่และออกจาก the Running state. ในทางตรงกันข้าม, the Windows simulator layer เพียงแค่ต้องระงับและกลับมาทำงาน Windows threads ต่อเนื่องจาก the tasks ที่แสดงถึงการเข้าสู่และออกจาก the Running state. The real context switching ถูกออกจากไปยัง Windows.

*

Offline tha

  • *****
  • 2953
    • View Profile
Re: FreeRTOS
« Reply #274 on: November 27, 2021, 05:25:32 am »
Simulating the tick interrupt

The tick interrupt generation ถูกจำลองโดย a high priority Windows thread ที่จะยึด the low priority threads ที่กำลังรัน tasks เอาไว้ก่อนเป็นระยะๆ. The tick rate achievable ถูกจำกัดจำกัดโดย the Windows system clock, ซึ่งใน normal FreeRTOS terms จะช้าและมี a very low precision. ดังนั้นมันไม่สามารถเป็นได้ที่จะให้ true real time behaviour.

Simulating interrupt processing

Simulated interrupt processing ถูกดำเนินการโดย a second higher priority Windows thread ที่, เพราะว่า priority ของมัน, สามารถยึด(ระงับ) the low priority threads ที่กำลังรัน FreeRTOS tasks เอาไว้ก่อนได้อีกด้วย.  The thread ที่ simulates interrupt processing รอจนกระทั่งมันถูกแจ้งข่าวโดย thread อื่นใน the system ว่ามี an interrupt pending(ค้างอยู่).  ตัวอย่างเช่น the thread ที่จำลอง the generation of tick interrupts เซ็ต an interrupt pending bit, และจากนั้นแจ้งไปยัง the Windows thread ว่า simulates interrupts กำลังถูกประมวลผลว่า an interrupt กำลังค้างอยู่. The simulated interrupt processing thread ดังนั้นจะปฏิบัติและมองไปที่ทุก the possible interrupt pending bits - การดำเนินการ simulated interrupt processing ใดๆและการเคลียร์ interrupt pending bits ตามความจำเป็น.

*

Offline tha

  • *****
  • 2953
    • View Profile
Re: FreeRTOS
« Reply #275 on: November 27, 2021, 06:30:04 am »
Items to Note Before Using the Simulator

Windows programming by embedded engineers

ก่อนการใช้ the provided Windows projects, โปรดทราบว่าผม (ผู้เขียนของ the Windows simulator) เป็น an embedded programmer, ไม่ได้เป็น a Windows programmer. The implementation อาจจะไร้เดียงสา. ข้อเสนอแนะใด ๆ ที่ให้ไว้เกี่ยวกับการจัดให้มีใช้ปัจจุบันโดยผู้ที่มีความรู้มากขึ้นเกี่ยวกับการเขียนโปรแกรม Windows จะถูกรับอย่างสุดซึ้ง.

*

Offline tha

  • *****
  • 2953
    • View Profile
Re: FreeRTOS
« Reply #276 on: November 27, 2021, 07:23:54 am »
Deleting tasks on Windows

เมื่อ a FreeRTOS task ถูกลบ, the Windows port จะยุติ the thread ที่รับผิดชอบในการรัน the task. อย่างไรก็ตาม, ภายใต้ Windows, การยุติ a thread จาก thread อื่นจะไม่เป็นเหตุให้ the resources ที่เคยถูกใช้โดย the terminated thread ถูกรีเทิร์นไปยัง the system. นี้หมายความว่าที่ run time มีการจำกัดจำนวณครั้งที่ the FreeRTOS vTaskDelete() API function สามารถถูกเรียก. ขีดจำกัดสูงมาก (หลายพัน) แต่ป้องกันไม่ให้ the standard demo 'death' tasks จากการปฏิบัติอย่างไม่มีกำหนดก่อน the demo tasks สตาร์ทเพื่อรายงาน errors.

*

Offline tha

  • *****
  • 2953
    • View Profile
Re: FreeRTOS
« Reply #277 on: November 27, 2021, 08:15:18 am »
Load on the CPU of the host Windows machine

The load บน the CPU of the host Windows machine จะสูงมากในขณะที่ a FreeRTOS application กำลังถูกรันอยู่. การตอบสนองไม่ควรได้รับผลกระทบมากเกินไป เพราะว่ามีเพียง low priority threads เท่านั้นถูกใช้, แต่ the CPU core temperature จะพุ่งขึ้นและ the CPU cooling fans จะตอบสนองให้สอดคล้องกัน.

หากคุณกังวลเกี่ยวกับความสามารถของคอมพิวเตอร์ในการรับมือกับอุณหภูมิสูงที่สร้างขึ้น ดังนั้นฉันขอแนะนำให้ใช้ยูทิลิตี้ที่ให้ข้อมูลเกี่ยวกับทั้ง the current CPU core temperature, และใกล้แค่ไหนที่อุณหภูมิปัจจุบันจะถึง the maximum temperature rating ของ your particular CPU. โดยส่วนตัวฉันใช้ the free Core Temp utility เพื่อจุดประสงค์นี้

*

Offline tha

  • *****
  • 2953
    • View Profile
Re: FreeRTOS
« Reply #278 on: November 27, 2021, 09:02:13 am »
Source Code Organisation

Eclipse and MingW (GCC)

The Eclipse project สำหรับ the FreeRTOS simulator demo application อยู่ใน the FreeRTOS/Demo/WIN32-MingW directory ของ the main FreeRTOS download. นี้จำเป็นต้องถูกนำเข้าลงใน the Eclipse workspace เพื่อบิ้วด์ the project.

Visual Studio

The Visual Studio solution สำหรับ the FreeRTOS simulator demo application ถูกเรียกว่า WIN32.sln และอยู่ใน the FreeRTOS/Demo/WIN32-MSVN directory of the main FreeRTOS download.

*

Offline tha

  • *****
  • 2953
    • View Profile
Re: FreeRTOS
« Reply #279 on: November 27, 2021, 09:38:49 am »
Using the Eclipse and MingW (GCC) Demo

Obtaining the compiler

The MingW compilation tools ไม่ถูกรวมเป็นส่วนหนึ่งของ the Eclipse distribution และต้องถูกดาวน์โหลดแยกต่างหาก.

Importing the FreeRTOS simulator project into an Eclipse workspace

เพื่อนำเข้า the FreeRTOS simulator project ลงใน Eclipse:

     1. สตาร์ท the Eclipse IDE, และไปยัง the Eclipse Workbench.
     2. เลือกt 'Import' จาก the Eclipse 'File' menu. A dialogue box จะปรากฎ.
     3. ใน the dialogue box, เลือก 'General | Existing Projects Into Workspace'. dialogue box อื่นจะปรากฎที่ยอมให้คุณค้นหาไปยังและเลือก a root
         directory.
     4. เลือก FreeRTOS/Demo/WIN32-MingW เป็น the directory - นี้จะเปิดเผย a project ชื่อ RTOSDemo, ซึ่งเป็น the project ที่ควรถูกนำเข้า.