FreeRTOS support forum archive – FreeRTOS porting on LPC This porting guide walks you through modifying the Amazon FreeRTOS software package to work on boards that are not Amazon FreeRTOS qualified. Amazon. Porting for FreeRTOS to new processor/compiler platforms and those not currently supported by FreeRTOS project.
|Published (Last):||4 July 2014|
|PDF File Size:||11.98 Mb|
|ePub File Size:||13.62 Mb|
|Price:||Free* [*Free Regsitration Required]|
FreeRTOS – Porting a FreeRTOS demo to a different hardware platform
Click here to view a static menu. Thread aware file system Hint: A specific development tool compiler, debugger, etc. A specific hardware platform prototyping or evaluation board. These are documented under ‘ Supported Devices ‘ in the menu frame freerrtos the left. Unfortunately it is not possible to provide a demo project for every combination of microcontroller, compiler and evaluation board – porying it might be that a demo application does not exist that matches your required setup exactly.
This page documents how existing demo applications can be modified or combined to better match the setup you require. It is generally a simple task to take an existing demo for one evaluation board and modify it to run on another – and only slightly more complex to take a demo for one compiler and modify it to use another.
This page provides instruction on these and similar porting type activities. It is not so simple however to take a FreeRTOS port and convert it to run on a completely different, and as yet unsupported, processor core architecture. This freertod does not therefore cover the topic of creating completely new RTOS ports, also a separate page is provided that gives hints on how such a development can be freetos. Converting a Demo to Use a Different Evaluation Board This subsection documents the steps required to convert an existing demo application from one prototyping board to another, without changing portingg the microcontroller or compiler being used.
Ensure each step is completed successfully prior to moving to the next: An existing demo application should be used as a starting point for the conversion exercise, therefore first check you can successfully compile the existing demo application exactly as downloaded – before making any modifications.
In most cases the demo application should compile without any errors or warnings. This website contains a documentation page for each demo application included in the FreeRTOS download.
Please ensure to read this in full. Build instructions are included. LEDs provide the freertoe method of getting visual feedback that the demo application is running, so it is useful to get the LEDs on the new hardware platform working as soon as possible.
It is unlikely that the feertos platform to which the demo is being ported has LEDs on the same IO ports as the hardware platform on which the demo was developed – so pporting minor modification will be required. The function vParTestInitialise within partest. The function prvSetupHardware within main. Make any changes necessary to the two functions highlighted in the paragraph above, then write a very simple program to check that the LED outputs are working.
This simple program need not make use of FreeRTOS – all that is of interest at this stage is ensuring the LEDs work – so for now comment out the existing main frerrtos and replace it with something similar to the following example: Once the LEDs are known to ffreertos working the dummy main function can be removed, and the original main function restored.
It is advisable to start with the simplest multitasking application possible. The standard ‘flash test’ tasks are often used rreertos as a multitasking equivalent of a ‘hello world’ type application.
The standard ‘flash test’ tasks are a set of 3 very simple tasks – each of which toggles a single LED freertps a fixed frequency, with each task using a different frequency.
These tasks are included in nearly all the demo applications, and are started within main by a call to the function vStartLEDFlashTasks or vStartFlashCoRoutines should the co-routine version be used instead. It is likely that main will then only call three functions: For example based on the typical main introduced earlier: Once the simple flash demo is executing you can restore the full demo application with all the demo tasks being created, or alternatively, start to create your own application tasks.
Points to keep in mind: If the demo application did not originally have a call to vTaskCreateFlashTasksand a call to this function was added manually, then the call should be removed again. This is for two reasons, first the flash tasks may use LED outputs that are already used elsewhere within the demo, and second the full demo might already use all the available RAM, meaning freretos is no room for additional tasks to be created.
The standard ‘com test’ tasks if included in the demo will utilise one of the microcontrollers UART peripherals. Check that freetos UART used is valid for the hardware onto which you have ported the demo. It is unlikely that peripherals such as LCDs will function without modification to account for any hardware or interface differences.
Combining or Modifying Existing Demo Projects This subsection highlights the details that require consideration to either modify an existing project, or combine two existing project, both with the aim of creating a project specific to your requirements. There are two ways this can be done: Take an existing demo project that uses the correct compiler but portijg a different microcontroller, and re-target this to the required microcontroller.
Create a new project using your chosen compiler. When this option is taken an existing demo project can be used as a guide to which files and settings are required, even if the existing project uses a different compiler.
Amazon FreeRTOS Porting Guide
The following notes highlight the information that requires consideration whichever method is used: For some compilers the port. For others those with less flexible features an assembler file is also required. This will be called portasm. Identifying files that are specific to the compiler being used: Compilers targeting embedded systems provide certain extensions to the C language.
For example, a special keyword might exist that is used to identify that a particular function should be compiled as an interrupt handler. Extensions to the C language, by definition, fall outside of the C standard so differ from compiler to compiler.
In addition, some demo applications will install interrupt handlers that are not part of FreeRTOS itself. The definition of such interrupt handlers and the method of installing the interrupt handler might also be compiler specific. The C startup file and linker script are generally processor and compiler specific. Never try to create these files from scratch – instead look through the existing FreeRTOS demo projects for a file that is a suitable candidate for modification.
Take particular care with ARM7 C startup files. These must either configure the IRQ handler to vector directly to the interrupt handler or vector to a common entry point. Examples are provided of both methods. In either case the first code executed after the jump must be the FreeRTOS context save code, not any compiler provided intermediary code. Again – use the existing files as a reference.
Linker scripts must be adjusted to correctly describe the memory map of the microcontroller being used.
Every project will normally define a preprocessor macro that is specific to the port being compiled. The preprocessor macro identifies which portmacro. If the preprocessor macro is not defined then the directory in which the relevant portmacro. Other compiler settings, portng as optimisation options, can also be critical. Again refer to existing demo application projects for examples. Compilers with an IDE based interface will generally include the target microcontroller as part of the project settings – this must be adjusted to be correct for the new target.
Likewise where a makefile is used, the options within the makefile must be updated to be correct for the new microcontroller target.
Configuring the tick interrupt: Reducing the amount of tasks created can be achieved by simply commenting out the function calls used to create the tasks within mainas previously demonstrated.
If you are converting an existing demo application to run on a microcontroller that has less ROM then you may need to reduce the number of demo application files that are included in the build. When you remove a demo application file from the build you will also have to remove the call within main used to create the tasks that are no longer included.
Fail Safe File System: Delivered online or on-site. Thread aware file system. Use the tree menu to navigate groups of related pages.