rtos | A cobbled together RTOS for ARM microcontrollers

 by   promovicz C Version: Current License: GPL-2.0

kandi X-RAY | rtos Summary

kandi X-RAY | rtos Summary

rtos is a C library. rtos has no bugs, it has no vulnerabilities, it has a Strong Copyleft License and it has low support. You can download it from GitHub.

A cobbled together RTOS for ARM microcontrollers
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              rtos has a low active ecosystem.
              It has 6 star(s) with 1 fork(s). There are 2 watchers for this library.
              OutlinedDot
              It had no major release in the last 6 months.
              rtos has no issues reported. There are no pull requests.
              It has a neutral sentiment in the developer community.
              The latest version of rtos is current.

            kandi-Quality Quality

              rtos has no bugs reported.

            kandi-Security Security

              rtos has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.

            kandi-License License

              rtos is licensed under the GPL-2.0 License. This license is Strong Copyleft.
              Strong Copyleft licenses enforce sharing, and you can use them when creating open source projects.

            kandi-Reuse Reuse

              rtos releases are not available. You will need to build from source code and install.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of rtos
            Get all kandi verified functions for this library.

            rtos Key Features

            No Key Features are available at this moment for rtos.

            rtos Examples and Code Snippets

            No Code Snippets are available at this moment for rtos.

            Community Discussions

            QUESTION

            EMBEDDED C - Volatile qualifier does not matter in my interrupt routine
            Asked 2021-Jun-13 at 19:31

            I am new to embedded C, and I recently watched some videos about volatile qualifier. They all mention about the same things. The scenarios for the use of a volatile qualifier :

            1. when reading or writing a variable in ISR (interrupt service routine)
            2. RTOS application or multi thread (which is not my case)
            3. memory mapped IO (which is also not my case)

            My question is that my code does not stuck in the whiletest();function below when my UART receives data and then triggers the void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) interrupt function

            ...

            ANSWER

            Answered 2021-Jun-13 at 16:12

            volatile informs the compiler that object is side effects prone. It means that it can be changed by something which is not in the program execution path.

            As you never call the interrupt routine directly compiler assumes that the test variable will never be 1. You need to tell him (volatile does it) that it may change anyway.

            example:

            Source https://stackoverflow.com/questions/67959610

            QUESTION

            Unable to ssh into QNX 6.5.0 VirtualBox session
            Asked 2021-Jun-04 at 00:58

            I've reinstalled the QNX RTOS 6.5.0 on virtualbox of which I was able to ssh into using the following command: ssh root@127.0.0.1 -p 3022. The network settings inside my VirtualBox environment is set to NAT, and port forwarding set to:

            When attempting to connect with -vvv flags:

            ...

            ANSWER

            Answered 2021-Jun-04 at 00:58

            Solved. The solution was to generate new rsa and dsa keys with:

            Source https://stackoverflow.com/questions/67830057

            QUESTION

            FreeRTOS Systick Handler
            Asked 2021-May-24 at 18:19

            I'm studying the FreeRTOS scheduler (port.c) and have a question about Systick handler. I understand xPortSysTickHandler() is supposed to be called at RTOS ticks, but I don't see where it gets specified by saying xPortSysTickHandler() is the Systick timer interrupt callback function.

            Especially, I didn't see that in vPortSetupTimerInterrupt(), which seems a bit strange to me since this function does configure, such as load register value, of the timer.

            Does it gets specified as the callback somewhere else? Or is there something I'm missing?

            Thanks!

            ...

            ANSWER

            Answered 2021-May-24 at 18:19

            It is installed directly into the interrupt vector table. If the vector table uses CMSIS names for the handlers then you can map the CMSIS name to the name of the FreeRTOS systick handler in FreeRTOSConfig.h, as per the FAQ - see the red "special note to ARM Cortex-M users" here: https://www.freertos.org/FAQHelp.html

            Source https://stackoverflow.com/questions/67646586

            QUESTION

            ESP-IDF deep_sleep and FreeRTOS tasks
            Asked 2021-May-10 at 15:07

            I work on project where I use FreeRTOS tasks and I would like to go into deep_sleep. Is there anything that I should do before going into the deep_sleep ? Or after wake up, RTOS scheduler works as nothing happen ?

            ...

            ANSWER

            Answered 2021-May-10 at 15:07

            There's no easy way to mix freeRTOS and deep_sleep mode. During deep sleep the CPU is powered down and its context is lost, yet the RTC memory can be retained. As all SRAM's content is lost, there's no easy backup-restore we can do here to safely restore everything after coming out from deep sleep.

            But what you can do is to bring everything down to a safe state before entering deep-sleep, you can signal all your tasks to finish what they're doing and exit, and then take some advantage of ESP32's relatively low wake-up latency. It is a very unpleasant inconvenient for a Wi-Fi connected device, but more or less acceptable for BLE devices that will wake up and send a beacon once in a few seconds.

            You would also want to fine-tune the second stage bootloader's configuration by enabling the CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP option so waking-up from deep-sleep would be faster than booting from a cold reset.

            Source https://stackoverflow.com/questions/67367391

            QUESTION

            What is the difference between bare metal, RTOS and SoC?
            Asked 2021-May-10 at 02:40

            Having just recently gotten into embedded programming using PIC microcontrollers, I am trying to understand the difference between Bare metal, RTOS and SoC.

            Online searches reveal contradictory definitions and meanings.

            For example, Semiengineering state that "An RTOS is code written on bare metal" and arduino.cc state that "If you programming controller without using any [RT]OS it's a bare metal approach".

            The implication is that some code written on bare metal can be considered to be RTOS, whilst others may not be.

            Therefore, my question is when can embedded programming of microntroollers be considered programming of bare metal and/or RTOS? And where does SoC fit into all of this, if at all?

            Any insight that anyone can provide will be very much appreciated!

            ...

            ANSWER

            Answered 2021-May-07 at 00:19

            (1) An RTOS is a Real Time Operating System. Implementing an operating system is not the same thing as using an operating system. It seems like you'd know whether you're programming using a Real Time Operating System or nothing. And that's the difference between using a RTOS and bare metal.

            Note that the RTOS code is bare-metal programming, because it's not using any lower-level software. And then when you write your code using the RTOS, it's not bare-metal programming, because you're using the services of the RTOS.

            (2) It seems like you'd know whether you're implementing an operating system or an embedded application And that's the other difference.

            (3) As regards an SoC - that's a hardware category. Is there one integrated circuit containing the CPU and a bunch of associated functions (interrupt controller, maybe an MMU, peripheral interfaces, network, etc.)? Then it may be a SoC. Or are there a few other ICs providing these functions? Then it's not a SoC.

            Source https://stackoverflow.com/questions/67427373

            QUESTION

            How to run FreeRTOS on TM4C129EXL?
            Asked 2021-Apr-30 at 14:14

            I am working on a C project for the university where a CoAP server is to be hosted on a TM4C129EXL. It is particularly important to choose a FreeRTOS operating system. Unfortunately, I had to learn that Texas Instruments has stopped supporting FreeRTOS. There are no options for me to switch to another operating system. It is for this reason that I turn to you.

            I'm looking for a sample program in which Free RTOS is executed on a TM4C129EXL board. In the best case, I would be happy about a Code Composer Studio Project, as this is the IDE we work with from the university.

            If you do not have any sample code available, I would be happy to receive any other information regarding FreeRTOS and CoAP of course with reference to the TM4C129EXL.

            ...

            ANSWER

            Answered 2021-Apr-30 at 14:14

            You did not specify if you had any requirements in terms of FreeRTOS version, but you can either:

            • use the demo provided in file SW-EK-TM4C1294XL-2.1.4.178.exe available on TI WEB site as is - you will find it in directory examples\boards\ek-tm4c1294xl-boostxl-senshub\senshub_iot
            • use this example as a basis to use a more recent version of FreeRTOS: you just would have to replace FreeRTOS source code by the most recent one, and maybe to modify some code in the demo: some function names/signatures may have changed across major versions.

            The procedure hereafter describes step by step how to create a minimalist FreeRTOS program with Code Composer Studio 10.3.0 and FreeRTOS v202104.00 in a Windows 10 environment using the second approach. You may have to adjust the drive letter to you specific setup, I am using D: for the purpose of this example..

            • Download Code Composer Studio 10.3.0, FreeRTOS v202104.00 and SW-EK-TM4C1294XL-2.1.4.178.exe.

            • Install Code Composer Studio with support for the Tiva-C MCU familly. When prompted for a workspace name, specify D:\ti\workspace_v10.

            • Unzip FreeRTOSv202104.00.zipinto D:\.

            • Unzip SW-EK-TM4C1294XL-2.1.4.178.exe into D:\SW-EK-TM4C1294XL-2.1.4.178.

            • Launch CCS

            • Use the menu item File/New/CCS Project, and create an 'Empty Project (with main.c).

            []

            • Click on the Finishbutton.
            • Create the following directories:
              D:\ti\workspace_v10\TM4C129EXL-FreeRTOS\driverlib
              D:\ti\workspace_v10\TM4C129EXL-FreeRTOS\inc
              D:\ti\workspace_v10\TM4C129EXL-FreeRTOS\FreeRTOS-Kernel
              D:\ti\workspace_v10\TM4C129EXL-FreeRTOS\FreeRTOS-Kernel\include
              D:\ti\workspace_v10\TM4C129EXL-FreeRTOS\FreeRTOS-Kernel\portable\GCC
              D:\ti\workspace_v10\TM4C129EXL-FreeRTOS\FreeRTOS-Kernel\portable\GCC\ARM_CM4F
              D:\ti\workspace_v10\TM4C129EXL-FreeRTOS\FreeRTOS-Kernel\portable\MemMang
            • Copy D:\SW-EK-TM4C1294XL-2.1.4.178\examples\boards\ek-tm4c1294xl-boostxl-senshub\senshub_iot\FreeRTOSConfig.h into D:\ti\workspace_v10\TM4C129EXL-FreeRTOS
            • Copy all .h files from D:\SW-EK-TM4C1294XL-2.1.4.178\driverlib into D:\ti\workspace_v10\TM4C129EXL-FreeRTOS\driverlib.
            • Copy D:\SW-EK-TM4C1294XL-2.1.4.178\driverlib\gcc\libdriver.a into D:\ti\workspace_v10\TM4C129EXL-FreeRTOS\driverlib.
            • Copy all .hfiles from D:\SW-EK-TM4C1294XL-2.1.4.178\inc into D:\ti\workspace_v10\TM4C129EXL-FreeRTOS\inc.
            • Copy all files present in D:\FreeRTOSv202104.00\FreeRTOS\Source\include into D:\ti\workspace_v10\TM4C129EXL-FreeRTOS\FreeRTOS-Kernel\include.
            • Copy all .cfiles present in D:\FreeRTOSv202104.00\FreeRTOS\Source into D:\ti\workspace_v10\TM4C129EXL-FreeRTOS\FreeRTOS-Kernel.
            • Copy all file present in D:\FreeRTOSv202104.00\FreeRTOS\Source\portable\GCC\ARM_CM4F into D:\ti\workspace_v10\TM4C129EXL-FreeRTOS\FreeRTOS-Kernel\portable\GCC\ARM_CM4F
            • Copy D:\FreeRTOSv202104.00\FreeRTOS\Source\portable\MemMang\heap_4.c into D:\ti\workspace_v10\TM4C129EXL-FreeRTOS\FreeRTOS-Kernel\portable\MemMang.
            • Edit D:\ti\workspace_v10\TM4C129EXL-FreeRTOS\main.c, and replace its content by:

            Source https://stackoverflow.com/questions/67229825

            QUESTION

            Understanding Linker output (Elf2Bin)
            Asked 2021-Apr-27 at 23:13

            I'm doing some development using Mbed Studio and after linking I see this sort of output:

            ...

            ANSWER

            Answered 2021-Apr-27 at 23:13

            Could it be the change in size from the last link?

            Yes.

            Source https://stackoverflow.com/questions/67291712

            QUESTION

            int32_t for stack in 32 microcontroller
            Asked 2021-Apr-21 at 15:09

            In bellow example why we should use int32_t instead of uint32_t ? (platform is ARM 32 bit microcontroller)

            ...

            ANSWER

            Answered 2021-Apr-21 at 14:21

            There is no particular reason that you should use pointer to signed rather than unsigned.

            You are probably never going to dereference this pointer directly to access the words on the stack. If you do want to access the data on the stack, some of it will be signed, some unsigned, and some neither (strings etc) so the pointer type will not help you with that.

            When you want to pass around a pointer but never dereference it then one convention is to use a pointer to void, but that convention isn't so popular in embedded system code.

            One reason to use a pointer to a 32-bit integer is to suggest that the pointer is at least word-aligned. If you intend on complying with the ARM EABI (which you should) then the stack should be doubleword (64-bit) aligned at the entry to every EABI compliant function. To hint that that is the case you might want to even use a (u)int64_t pointer. This might be misleading though because not everything on the stack is 64-bit or 32-bit aligned, just the whole frames.

            Source https://stackoverflow.com/questions/67197388

            QUESTION

            How to pass environment variables as parameters by reference to another batch file?
            Asked 2021-Apr-13 at 11:35

            I have a question about Windows batch. I have two batch files/scripts, the first one calls the second one, several times with different parameters.

            I want to create several environment variables in the first one and pass them as parameters to the second one. In this second batch script the passed variables should be increased each by a value determined in the second batch file. Then the environment variables in first batch file are passed again on the next call of the second batch file and their values should be incremented once again accordingly by the second batch file.

            First .bat script:

            ...

            ANSWER

            Answered 2021-Apr-10 at 21:41

            Here is the full first batch file rewritten:

            Source https://stackoverflow.com/questions/67000256

            QUESTION

            STM32 LwIP PPPos - getting started
            Asked 2021-Apr-11 at 21:34

            I am struggling (like many others it seems) to get started with LwIP over PPPos (ppp over serial) for STM32. I could have ended that sentence earlier, because even without PPPos I am having a hard time understanding where to start.

            I have read, and read, and read. Their official home page, wiki, tons of forums, and trying to digest github examples for other platforms. But still I am having a hard time to have a clue where to start.

            There seem to be little (none?) examples on this online taking me through the whole process. And I really don't get it. The IoT world is exploding. So I really thought it would be "easy" to have some hello world example.

            What I have at the moment:

            • An LTE modem which I can use via AT commands
            • A small application which runs on my nucleo (F446ze) board which can blink LEDs, communicate over UART3 with my PC, and UART2 with the LTE modem
            • Played around with free RTOS, that part was surprisingly easy to familiarize

            But instead of clumsy internet communication using AT commands (and AT+CMQTT commands) I want to rely on a proper TCP/IP stack. Set the LTE modem in data mode (PPP), and have LwIP take over the TCP/IP stack.

            Is this still very complicated anno 2021? Or am I completely looking in the wrong direction? Is there anybody who can point me in the right direction?

            I already have freertos working too. I don't mind to use it. I also don't mind to go without. I am just looking for a way to get started with LwIP without having to reverse engineer the LwIP stack completely.

            ...

            ANSWER

            Answered 2021-Apr-11 at 21:34

            Going top-to-bottom, you have your application code which in the end will likely want to talk to some server: resolve DNS name, open a tcp connection etc. This is what LwIP provides - a set of API functions: socket functions, DNS functions and other. For example, when you do a TCP socket connect to a given IP address and port, it decides which out of available network interfaces to use, constructs a frame in form of array of bytes and sends those bytes over that interface. This is where LwIP part ends - it requesting given network interface to output X bytes it provides, as well as consuming any bytes that may arrive on that interface. It doesn't know how exactly to make the bytes "come out", but it knows how to construct the data to send and understands the data you give it.

            Going bottom-to-top, you have your modem - LTE, 3G, 2G, doesn't really matter. Modems provide a set of AT commands to talk to them to perform a set of functions: set SIM card PIN, get signal quality, list available operators, select an operator etc., as well as a way to switch it to PPP mode, which also done ATD command. Assuming the modem has been configured properly before, once you switch it to PPP mode it'll be able to send data using PPP protocol and will also "spit out" any data it receives. This is where the modem part ends - when switched to PPP mode, the modem is able to send and receive raw network traffic using PPP protocol. It knows how to output the raw bytes you give it, but it doesn't understand them on a very high level.

            Your role is to connect (interface) both parts. Your modem uses PPP to produce and consume network traffic. LwIP has the capability to understand and produce PPP frames.

            In case of sending data out, after preparing a PPP frame LwIP is going to call the sio_write function that is expected to send provided bytes to modem that's already in PPP mode. This is the part that you need to fill in. In case of reads sio_read is used and it's your job to fill it in so that it returns bytes that were received from the modem. How you're going to do that - using RTOS and queues for bytes, no RTOS or any other way - doesn't matter. It's what you find more convenient or what fits your overall project structure better. As long as those functions do what they're supposed to, LwIP will be happy to use them.

            This interfacing is discussed in more detail here: https://lwip.fandom.com/wiki/PPP#PPP_over_serial. Again, the general concept is that LwIP is just a software library and in the end it'll want to send and receive bytes. Your job is enabling it to do so, by filling in the functions it expects.

            Source https://stackoverflow.com/questions/67048191

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install rtos

            You can download it from GitHub.

            Support

            For any new features, suggestions and bugs create an issue on GitHub. If you have any questions check and ask questions on community page Stack Overflow .
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries
            CLONE
          • HTTPS

            https://github.com/promovicz/rtos.git

          • CLI

            gh repo clone promovicz/rtos

          • sshUrl

            git@github.com:promovicz/rtos.git

          • Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link