Recent Posts

Pages: [1] 2 3 ... 10
1
ARM Processors / Re: FreeRTOS
« Last post by tha on Today at 10:35:39 am »
     •  RAM usage and ROM usage:

        The Memory Management section จัดให้มีข้อมูลทั้งหมดที่ต้องการเพื่อเข้าใจวิธีที่ FreeRTOS ใช้ RAM, และวิธีที่ RAM นี้ถูกจัดสรรไปยัง the RTOS
        kernel.

        ถ้าคุณกำลังแปลง an existing demo application เพื่อรันบน a microcontroller ที่มี RAM น้อยกว่าดังนั้นคุณอาจจำเป็นต้องลด the
        configTOTAL_HEAP_SIZE value - ที่ถูกเอาไว้อยู่ภายใน FreeRTOSConfig.h - และลดจำนวนของ tasks ที่ the demo สร้าง. การลดจำนวนของ tasks ที่
        สร้างสามารถถูกทำให้สำเร็จลงโดยเอาออกอย่างง่ายๆ the function calls ที่ใช้สร้าง the tasks ภายใน main(), ดังที่แสดงไว้ก่อนหน้านี้.

        ถ้าคุณกำลังแปลง an existing demo application เพื่อรันบน a microcontroller ที่มี ROM น้อยกว่าดังนั้นคุณอาจจำเป็นต้องลดจำนวนของ demo
        application files ที่ถูก included ในการบิวด์. เหล่านี้คือ the files ที่ถูกเอาไว้อยู่ภายใน the FreeRTOS/Demo/common directory tree. เมื่อคุณเอาออก
        a demo application file จากการบิวด์คุณจะต้องเอาออก the call ภายใน main() ที่ใช้สร้าง the tasks ที่ไม่ได้ included อีกต่อไปด้วย.
2
ARM Processors / Re: FreeRTOS
« Last post by tha on Today at 09:04:59 am »
     •  Project settings:

        ทุกๆ project จะกำหนดโดยปกติ a preprocessor macro ที่เฉพาะเจาะจงไปยัง the port ที่กำลังถูกคอมไพล์. The preprocessor macro ระบุซึ่ง
        portmacro.h file จะถูกรวมด้วย. ตัวอย่างเช่น, GCC_MEGA_AVR ต้องถูกกำหนดเมื่อใช้ GCC เพื่อคอมไพล์ the MegaAVR port. IAR_MEGA_AVR  ต้องถูก
        กำหนดเมื่อใช้ IAR เพื่อคอมไพล์ the MegaAVR port, ฯลฯ. อ้างถึง existing demo application projects และ the file
        FreeRTOS/source/include/portable.h เพื่อค้นหาการกำหนดที่ถูกต้องสำหรับ project ของคุณ. ถ้า the preprocessor macro ไม่ถูกกำหนดดังนั้น the
        directory ซึ่ง the relevant portmacro.h file ถูกอยู่ต้องถูกรวมใน the preprocessors include search path.

        การตั้งค่าคอมไพเลอร์อื่นๆ เช่น ตัวเลือกการปรับให้เหมาะสมก็มีความสำคัญเช่นกัน. อีกครั้งอ้างถึง existing demo application projects สำหรับตัวอย่าง.

        Compilers ที่มี an IDE based interface โดยทั่วไปจะรวม the target microcontroller เป็นส่วนหนึ่งของ of the project settings - นี้ต้องถูกปรับเพื่อให้
        ถูกต้องสำหรับ the new target. ในทำนองเดียวกันในกรณีที่ a makefile ถูกใช้, ตัวเลือกภายใน makefile จะต้องได้รับการอัปเดตเพื่อให้ถูกต้องสำหรับเป้าหมาย
        ไมโครคอนโทรลเลอร์ใหม่.

     • Configuring the tick interrupt:

        The tick interrupt ถูกกำหนดค่าโดย a function ที่เรียกว่า prvSetupTimerInterrupt(), ซึ่งสามารถถูกเอาไว้อยู่ภายใน
        FreeRTOS/source/portable/[compiler]/[microcontroller]/port.c.
3
ARM Processors / Re: FreeRTOS
« Last post by tha on Today at 06:17:26 am »
     •  Low level files:

        The C startup file and linker script เป็นโดยเฉพาะ processor and compiler โดยทั่วไป. ไม่ควรสร้าง from เหล่านี้จากเริ่มต้น - แทนด้วยการมองหาผ่าน
        ทาง the existing FreeRTOS demo projects สำหรับ a file ที่เป็นตัวเลือกที่เหมาะสมสำหรับการปรับเปลี่ยน.

        ใช้ความระมัดระวังเป็นพิเศษกับ ARM7 C startup files. เหล่านี้ต้องกำหนดอย่างใดอย่างหนึ่ง the IRQ handler ถึง vector โดยตรงไปยัง the interrupt
        handler หรือ vector ไปยัง a common entry point. ตัวอย่างถูกจัดให้มีของทั้งสองวิธี. ไม่ว่าในกรณีใด the first code ที่ปฏิบัติหลังจาก the jump ต้องเป็น
        the FreeRTOS context save code, ไม่ใช้ code ตัวกลางที่จัดให้มีโดยคอมไพเลอร์ใดๆ. อีกครั้ง - ใช้ the existing files เป็นตัวอ้างอิง.

        Linker scripts ต้องถูกปรับและอธิบายอย่างถูกต้อง the memory map of the microcontroller ที่กำลังถูกใช้.
4
ARM Processors / Re: FreeRTOS
« Last post by tha on December 05, 2021, 11:01:19 am »
     •  การระบุ files ที่เฉพาะเจาะจงไปยัง the compiler ที่กำลังถูกใช้:

        Compilers ที่เป้าหมายเป็น embedded systems จัดให้มีส่วนขยายบางอย่างสำหรับ the C language. ตัวอย่างเช่น, a special keyword อาจมีอยู่ที่ถูกใช้เพื่อ
        ระบุว่า a particular function ควรถูกคอมไพล์เป็น an interrupt handler.

        ส่วนขยายของ the C language, โดยการกำหนด, อยู่นอก the C standard ดังนั้นจึงแตกต่างจาก compiler หนึ่งถึง compiler หนึ่ง. The FreeRTOS files ที่
        บรรจุ non-standard syntax ดังกล่าวจะเป็นไฟล์เหล่านั้นภายใน the FreeRTOS/source/portable directory tree (ตามที่ไฮไลต์ด้านบน).  นอกจากนี้, some
        demo applications จะติดตั้ง interrupt handlers ซึ่งไม่ได้เป็นส่วนหนึ่งของ  FreeRTOS เอง. การกำหนดของ interrupt handlers ดังกล่าวและวิธีการติดตั้ง
        the interrupt handler อาจเป็นคำเฉพาะของคอมไพเลอร์ด้วย.
5
ARM Processors / Re: FreeRTOS
« Last post by tha on December 05, 2021, 10:09:24 am »
หมายเหตุต่อไปนี้เน้นข้อมูลที่ต้องการการพิจารณาว่าวิธีใดถูกใช้:

     •  การระบุ the FreeRTOS kernel files ที่เฉพาะเจาะจงไปยัง the microcontroller ที่กำลังถูกใช้ :

         The FreeRTOS source code organization page จัดให้มีข้อมูลทั้งหมดที่ถูกต้องการเพื่อเข้าใจ the FreeRTOS directory structure.

         ส่วนใหญ่ (ถ้าไม่ใช่ทั้งหมด) the code ที่เฉพาะเจาะจงไปยัง a single port ถูกบรรจุใน a file ที่เรียกว่า
         FreeRTOS/source/portable/[compiler]/[microcontroller]/port.c และ an accompanying header file ที่เรียกว่า
         FreeRTOS/source/portable/[compiler]/[microcontroller]/portmacro.h, โดยที่ [compiler] คือชื่อของคอมไพเลอร์ที่กำลังถูกใช้งาน และ
         [microcontroller] คือชื่อตระกูลไมโครคอนโทรลเลอร์ที่กำลังถูกใช้

         สำหรับคอมไพเลอร์บางตัว the port.c and portmacro.h files คือทั้งหมดที่ถูกต้องการ. สำหรับตัวอื่น ๆ (เหล่านั้นที่มีคุณสมบัติที่ยืดหยุ่นน้อยกว่า) an
         assembler file ถูกต้องการด้วย. นี้จะถูกเรียกว่า portasm.s or portasm.asm.

         สุดท้าย, และเฉพาะเจาะจงไปยัง ARM7 GCC ports เท่านั้น, จะมี a file ที่เรียกว่า portISR.c. portISR.c ถูกใช้อีกด้วยเพือแยกออกจาก port.c ที่ code ซึ่ง
         ต้องถูกคอมไพล์เป็น ARM mode เสมอ - the code ที่ยังคงอยู่ใน port.c ดังนั้นสามารถถูกคอมไพล์เป็นอย่างใดอย่างหนึ่ง ARM หรือ THUMB mode.
6
ARM Processors / Re: FreeRTOS
« Last post by tha on December 05, 2021, 06:24:16 am »
Combining or Modifying Existing Demo Projects

ส่วนย่อยนี้เน้นรายละเอียดที่ต้องการพิจารณาเพื่ออย่างใดอย่างหนึ่ง ปรับเปลี่ยนโครงการที่มีอยู่ หรือรวมโครงการที่มีอยู่สองโครงการ, ทั้งคู่มีเป้าหมายของการสร้าง a project เฉพาะเจาะจงตามความต้องการของคุณ. ตัวอย่างเช่น, คุณอาจอยากจะสร้าง an STR9 demo project ที่ใช้ the GCC compiler. ในขณะที่ the FreeRTOS download อาจไม่ (ในขณะนั้นหรือการเขียน) รวม a GCC STR9 demo, มันรวม an IAR STR9 demo, และ a GCC STR75x demo.  ข้อมูลที่จำเป็นในการสร้าง the STR9 GCC project สามารถถูกรวบรวมได้จากทั้งสอง existing project. มีสองวิธีนี้สามารถถูกทำ:
 
     1. เอา an existing demo project ที่ใช้ the correct compiler แต่กำหนดเป้าหมายเป็น microcontroller อื่น, และกำหนดเป้าหมายใหม่นี้ไปยัง
         microcontroller ที่ต้องการ.
     2. สร้าง a new project โดยใช้ compiler ที่คุณเลือก. เมื่อตัวเลือกนี้ถูกเอา an existing demo project สามารถถูกใช้เป็นแนวทางที่ files และการเซ็ตถูก
         ต้องการ, ถึงแม้ว่า the existing project จะใช้ compiler ที่ต่างกัน.
7
ARM Processors / Re: FreeRTOS
« Last post by tha on December 04, 2021, 09:24:33 am »
     4. Finishing off:

         เมื่อ the simple flash demo ถูกปฏิบัติคุณสามารถกู้คืน the full demo application ที่มี the demo tasks ทั้งหมดถูกสร้าง, หรืออีกทางหนึ่ง, เริ่มต้นสร้าง
         your own application tasks.

         ข้อควรจำ:

              •  ถ้า the demo application แต่เดิมไม่มีการเรียกไปยัง vTaskCreateFlashTasks(), และการเรียกไปยังฟังชั่นนี้ถูกเพิ่มแล้วแบบ manually, ดังนั้นการ
                  เรียกควรถูกเอาออกอีกครั้ง. ด้วยเหตุผลสองประการ อย่างแรก the flash tasks อาจใช้ LED outputs ที่ถูกใช้ที่อื่นแล้วภายใน the demo, และอย่างที่สอง
                  the full demo อาจใช้ the available RAM ทั้งหมดแล้ว, หมายความว่าไม่มีที่ว่างสำหรับ tasks เพิ่มเติมถูกสร้าง.

              •  The standard 'com test' tasks (ถ้าถูกรวมใน the demo) จะใช้ประโยชน์ the microcontrollers UART peripherals ตัวหนึ่ง. ตรวจสอบว่า the
                  UART ที่ใช้ใช้ได้สำหรับ the hardware ที่ซึ่งคุณได้พอร์ท the demo.

              •  ไม่น่าเป็นไปได้ที่ peripherals อย่างเช่น LCDs จะทำงานโดยไม่มีการปรับเปลี่ยน เพื่อพิจารณาสำหรับความแตกต่าง hardware หรือ interface ใดๆ.
8
ARM Processors / Re: FreeRTOS
« Last post by tha on December 04, 2021, 07:39:18 am »
    3. Introducing the RTOS scheduler:

        เมื่อ the LEDs ถูกทราบว่ากำลังทำงาน the dummy main() function สามารถถูกเอาออก, และ the original main() function เอากลับคืน.

        ขอแนะนำให้เริ่มต้นด้วย the simplest multitasking application เท่าที่เป็นได้. The standard 'flash test' tasks มักจะถูกใช้ตอนเริ่มต้นเป็น a
        multitasking เทียบได้กับ a 'hello world' type application.

        The standard 'flash test' tasks คือชุดของ 3 very simple tasks - แต่ละ task จะสลับ a single LED ที่ความถี่คงที่, ด้วยแต่ละ task จะใช้ a different
        frequency. tasks เหล่านี้ถูกรวมใน the demo applications เกือบทั้งหมด, และถูกสตาร์ทภายใน main() โดยการเรียกไปยัง the function
        vStartLEDFlashTasks() (หรือ vStartFlashCoRoutines() หาก the co-routine version ถูกใช้แทน). ถ้า the main() function of the demo ที่คุณ
        กำลังใช้ไม่เรียก vStartLEDFlashTasks() (หืออีกทางหนึ่ง vStartFlashCoRoutines()) ดังนั้นเพิ่มอย่างง่ายๆ the file
        FreeRTOS/Demo/Common/Minimal/Flash.c ไปยัง your build และเพิ่มการเรียกถึง vStartLEDFlashTasks() แบบแมนน้วล.

        เอาออกทุกๆ function ที่ถูกใช้ตอนเริ่มต้นหนึ่งหรือมากว่า demo tasks, นอกเหนือจากการเรียกไปยัง vStartLEDFlashTasks(). มีแนวโน้มว่า main() จะเรียกใช้
        ฟังก์ชันสามฟังก์ชันเท่านั้น:  prvSetupHardware(), vStartLEDFlashTasks(), and vTaskStartScheduler(). For example (ตาม the typical main() 
        ที่แนะนำก่อนหน้านี้):



        แอปพลิเคชั่นที่เรียบง่ายมากนี้ทำงานอย่างถูกต้องหากไฟ LED 0 ถึง 2 (รวม) อยู่ภายใต้การควบคุมของ the 'flash' tasks และแต่ละรายการมีการสลับที่ความถี่คงที่
        แต่ต่างกัน
9
ARM Processors / Re: FreeRTOS
« Last post by tha on December 04, 2021, 06:25:32 am »
Converting a Demo to Use a Different Evaluation Board

subsection นี้ทำเอกสารขั้นตอนที่จำเป็นเพื่อแปลง an existing demo application จาก prototyping board หนึ่งไปยังอีกบอร์ดหนึ่ง, โดยไม่มีการเปลี่ยนอย่างใดอย่างหนึ่ง the microcontroller หรือ compiler ที่ใช้. ดังตัวอย่าง, คำแนะนำเหล่านี้จะถูกใช้เพื่อแปลง the IAR SAM7S demo เป้าหมายที่ the SAM7S-EK hardware เพื่อแทนด้วยเป้าหมาย the Olimex SAM7-P64 prototyping board.

ตรวจสอบให้แน่ใจว่าแต่ละขั้นตอนเสร็จสมบูรณ์ก่อนที่จะย้ายไปขั้นตอนถัดไป:

     1. Initial compilation:

        An existing demo application ควรถูกใช้เป็น a starting point สำหรับ the conversion exercise, ดังนั้นก่อนอื่นเช็คว่าคุณสามารถคอมไพล์ the existing
        demo application ได้สำเร็จจริงๆตามที่ดาวน์โหลด - ก่อนทำการแก้ไขใดๆ. ในกรณีส่วนใหญ่ the demo application ควรคอมไพล์โดยไม่มี errors หรือ
        warnings ใดๆ.

        เว็บไซ้ท์นี้บรรจุ a documentation page for each demo application รวมอยู่ใน the FreeRTOS download. โปรดแน่ใจว่าได้อ่านสิ่งนี้อย่างครบถ้วน Build
        instructions ถูกรวมอยู่ด้วย.

     2. Modifying the LED IO:

        LEDs จัดให้มีวิธีที่ง่ายที่สุดของการได้รับการป้อนกลับที่มองเห็นว่า the demo application กำลังรันอยู่, ดังนั้นจึงเป็นประโยชน์ที่จะทำให้ LED บนแพลตฟอร์ม
        ฮาร์ดแวร์ใหม่ทำงานได้โดยเร็วที่สุด

        ไม่น่าเป็นไปได้ที่ the hardware platform ที่ the demo ที่ถูกพอร์ทมี LEDs บน IO ports เดียวกันกับ the hardware platform ที่ the demo ถูกพัฒนา
        แล้ว - ดังนั้นแก้ไขเล็กน้อยบางอย่างถูกต้องการ.

        The function vParTestInitialise() ภายใน partest.c บรรจุ the IO port mode and direction configuration. The function prvSetupHardware()
        ภายใน main.c บรรจุ more generic hardware configuration (ตัวอย่างเช่น, เปิดการใช้งาน the clock ไปยัง the IO peripheral) และอาจต้องการการ
        แก้ไขบางอย่างอีกด้วย, ขึ้นอยู่กับ the port ที่ถูกใช้.

        ทำการเปลี่ยนแปลงที่จำเป็นกับฟังก์ชันทั้งสองที่ไฮไลต์ในย่อหน้าด้านบน จากนั้นเขียนโปรแกรมง่ายๆ เพื่อตรวจสอบว่าเอาต์พุต LED ทำงานหรือไม่ โปรแกรมง่ายๆ นี้ไม่
        จำเป็นต้องใช้ FreeRTOS - สิ่งที่น่าสนใจทั้งหมดในขั้นตอนนี้คือการทำให้แน่ใจว่าไฟ LED ทำงาน - ดังนั้นสำหรับตอนนี้เอาออก the existing main() function
        และแทนมันด้วยบางสิ่งที่คล้ายกับตัวอย่างต่อไปนี้:

10
ARM Processors / Re: FreeRTOS
« Last post by tha on December 03, 2021, 06:53:05 am »
https://www.freertos.org/porting-a-freertos-demo-to-different-hardware.html

Modifying a FreeRTOS Demo
เพื่อใช้ compiler อื่นหรือรันบน hardware อื่น

เพจนี้เกี่ยวกับอะไร

[โปรดดู "Creating a new FreeRTOS project"]

FreeRTOS ได้รวม demo applications จำนวนมากไว้แล้ว - แต่ละตัวมีเป้าหมายที่:

     1. A specific microcontroller.
     2. A specific development tool (compiler, debugger, etc.).
     3. A specific hardware platform (prototyping or evaluation board).

เหล่านี้ถูกทำเป็นเอกสารภายใต้ 'Supported Devices' ในกรอบเมนูทางด้านซ้าย.

ขออภัย เป็นไปไม่ได้ที่จะจัดให้มี a demo project สำหรับทุกชุดของ microcontroller, compiler and evaluation board - ดังนั้นอาจเป็นไปได้ว่า a demo application ไม่มีที่ตรงกันกับการเซ็ตอัฟที่ต้องการของคุณจริงๆ. หน้านี้จัดทำเอกสารวิธีที่ demo applications ที่มีอยู่สามารถถูกแก้ไขหรือถูกรวมเพื่อให้ตรงดีขึ้นกับ the setup ที่คุณต้องการ.

โดยทั่วไปเป็นงานง่ายที่เอา an existing demo สำหรับ evaluation board หนึ่งและแก้ไขมันไปรันบนอีกบอร์ดหนึ่ง - และซับซ้อนกว่าเล็กน้อยเท่านั้นในการเอา a demo สำหรับ compiler หนึ่งและแก้ไขมันไปใช้กับอีก compiler หนึ่ง. หน้านี้จัดให้มีคำแนะนำเกี่ยวกับเหล่านี้และ porting type activities ที่คล้ายกัน. มันไม่ง่ายนัก อย่างไรก็ตาม ในการใช้ a FreeRTOS port และแปลงมันเพื่อรันบน processor core architecture ที่แตกต่างจากเดิมโดยสิ้นเชิง, และยังไม่ได้ถูกรองรับ.  หน้านี้จึงไม่ครอบคุมหัวข้อของการสร้าง RTOS ports ใหม่อย่างสมบูรณ์, นอกจากนี้ยังมีหน้าแยกต่างหากซึ่งให้คำแนะนำเกี่ยวกับวิธีที่การพัฒนาดังกล่าวถูกเข้าใกล้.
Pages: [1] 2 3 ... 10