flit / argon-rtos Goto Github PK
View Code? Open in Web Editor NEWArgon RTOS: tiny embedded C/C++ RTOS for Cortex-M
License: BSD 3-Clause "New" or "Revised" License
Argon RTOS: tiny embedded C/C++ RTOS for Cortex-M
License: BSD 3-Clause "New" or "Revised" License
Hi,
I'd like to use argon-rtos in my project which uses custom makefile. I noticed several problem during configuration of include paths.
Here, you have #include "argon/src/ar_internal.h"
.
Such include expects, that I have include path set to parent directory of repo clone and this clone directory is called 'argon'. Both conditions are kind of nonsense.
#include "../ar_internal.h"
should be sufficient or just completely without path.
Here is similar problem. #include "argon/src/ar_config.h"
This time it even collides with your suggestion hoiw to have custom config file:
"The recommended method is to copy the
ar_config.h
file to your application's source code tree and modify it."
There are other places where you just use #include "ar_config.h"
and everything is fine.
Hi,
AFAIK IRQ handlers use current active thread stack. That means, every thread must have large enough stack to accommodate all IRQ requirements.
Is there any function which IRQ handler can call to switch to custom stack and then back?
When there is scheduled sleep longer than maximum systick period, sleeping times become imprecise. Sleep times are then multiples of systick maximum period, even the last one which would be probably shorter than that. Problem is this line https://github.com/flit/argon-rtos/blob/master/src/ar_kernel.cpp#L279. Systick is not reconfigured and stays at maximum period until it overshoots or matches nextWakeup time. Sleep is then longer than required.
I'll try to fix it and open PR
I have situation where I want to have multiple threads waiting for some event. Ar::Channel sounds like the proper way to let threads wait for event. Unfortunately event is consumed by first waiting thread. To deliver event to multiple threads, I've found this solution
while (channel.send(eventValue, 0) == kArSuccess);
Is there cleaner way?
Hi, I've tried to split todos and ideas into groups. Maybe the are in wrong one. I guess, you should be able to edit this post. Most of points come from doc/argon_todo.txt
(Issue reported by @diggit.)
There is one more warning:
./argon-rtos/include/argon/ar_kernel.h:54:26: warning: ISO C restricts enumerator values to range of 'int' [-Wpedantic]
kArInfiniteTimeout = 0xffffffffUL //!< Pass this value to wait forever to acquire a resource.
static const uint32_t kArInfiniteTimeout = 0xffffffffUL;
would solve this warning, do/don't? (same would apply to kArNoTimeout for consistency
Hi,
-Wunused
and for me -Wunused-parameter
is sometimes very handy.
As title says, it would be nice to have such warnings suppressed on functions, that intentionally not use some parameter.
Possible solutions are explained here on SO.
If you want this solved, which solution do you prefer?
Hi,
I am a little bit confused by Runloop usage.
Hi,
I noticed a problem with thread waking from sleep in tickless mode.
When there is thread synced (infinite timeout) by semaphore from ISR, whole system timing breaks.
All sleeps in other threads are much shorter.
Note: Now I am syncing using simple suspend and resume principle which works.
Not, it does not, same problem.
All static ctors are called before ar_kernel_run()
which configures list predicates. This results in g_ar.readyList
and g_ar.sleepingList
being possibly unordered at kernel startup. This causes that lower priority thread may run forever even though higher priority thread is waiting to be served.
As title says, deferred queue send is almost useless, because if you want to send something from interrupt, its' lifetime probably ends with interrupt handler. Deferred send at the moment of handling deferred actions probably points to memory already used by different data. This little fact may cause very weird bugs.
Hi Chris,
I tried to import your project in Eclipse and I'm afraid your project configuration is somehow damaged, the imported project has no settings, and the build is impossible.
I suggest you unpack a fresh Eclipse, install the GNU ARM Eclipse plug-ins and try the Import from Git.
You'll notice that in C/C++ Settings the project has no Tool Settings.
I did the test on two different platforms (OS X and GNU/Linux) with the same result.
Regards,
Liviu
GNU ARM Eclipse plug-ins maintainer
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.