onkwon / yaos Goto Github PK
View Code? Open in Web Editor NEWAn embedded operating system for ARM Cortex-M based microcontrollers
License: Apache License 2.0
An embedded operating system for ARM Cortex-M based microcontrollers
License: Apache License 2.0
When runtime finer than systick granularity, task runtime doesn't get updated as delta is zero.
debug()
to swo terminal directlylog(msg)
Consider to change the data structure used in such as device manager, timer list, etc, to save memory
As a real time task preempts idle
task, the least priority task, idle
task never gets chance to clean zombie tasks freeing data memory used by those zombie tasks. It makes eventually system go into out of memory.
Either of below have to be implemented to solve this problem:
kill_zombie()
function manually in a real time taskAll the meta blocks are re-written every time it changes, taking too much time. Let's keep it in memory and write back when it really need to be.
Disabling CONFIG_FS
, ramfs
gets the root file system and mount /dev/
on it. But /dev/
directory isn't visible to user since it is not actually created in the root file system. There is calling dependency making it hard to create /dev' directory between mounting
rootfsand
devfs`.
rootfs
first/dev/
directorydevfs
nowWhat makes it difficult is that to get [2] done system call functionality must be activated which only can be activated after devfs
mounted.
embedfs
also need to get optimized as it creates /dev/
in an incompatible way, not configuable to change its name.
probably because of invalid stack pointer. need to dig out
It will make easier for users to dive into code if following CMSIS on ARM Cortex-M architecture. Consider it though I feel lazy.
It only causes instruction and memory overhead not fully supporting SMP. There is no use as well since YAOS is for single core processor. Let's forget about SMP and get rid of synchronization.
only 64KB embedded flash memory are writable by user since flash sector size is not fixed but variable from 16KB to 128KB.
user must make sure not to exceed the boundary of 64KB writing into embedded flash memory. or the result is unpredictable.
implementing soft reset. don't forget to clean cache buffer first before reset
make the member of the structure in the first place then it can be easily replaced by just assignment operator. Such rq
member of struct task
, link
member of struct page
, list
member of struct ff_freelist
and link
of struct
waitqueue` are the candidates.
besides consider creating a thread for each event and just make it runnable in the handler, softirq_handler(). That would be more efficient than just calling in turn, waiting for the previous work done.
Return back to the task running if possible fixing the problem or schedule to another task after killing the task.
Reset if system is corrupted entirely.
make sure only saved registers are used during that operations
Superblock and inode synchronization must be implemented
Some static task run just once doing something like initializing and it never returns memory back for system to use the unused memory. As task struct
consumes memory the most among others, it is necessary to make that unused memory usable.
There are typos in your README.
Those functions internally call get_sysclk()
family functions that access to privileged system registers. Make it usable in user mode providing related system call to user.
It is quite a overhead to keep run queue sorted when adding new tasks using linked list structure.
Change polling method timer of sleep() to cascaded timer wheel.
As a task is resident only in a queue at a time, run queue or wait queue, task's rq list can be used in both of queues.
ldrex
and strex
don't work on rpi. Find out what is going on.
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.