blob: 00762f39f4b6162fcf04f8587440aa810daa27fb [file] [log] [blame]
brians343bc112013-02-10 01:53:46 +00001see ../README.txt for overall information
2
3[FILES]
4config/ has some configuration files
5 aos.conf has directions for setting up resource limits so you can run the code on any linux machine (the directions are there to keep them with the file)
6 setup_rc_caps.sh is a shell script (you have to run as root) that lets you run the realtime code without installing aos.conf for an individual file
7 starter is an init.d file
8 install it by putting it in /etc/init.d an running "update-rc.d starter defaults"
9 restart it by running "invoke-rc.d starter restart" (doesn't always work very well...)
10 the .config files are for building linux kernels
11
12atom_code/ has code that only runs on the atom
13crio/ has code that only runs on the crio
14
15common/ is where stuff that runs on both the crio and the atom is
16common/input/ is where the framework code for reading stuff into the queues system is
17common/output/ is where the framework for writing things out of the queues system is
18common/messages is where the c++ wrappers for "queues" are
19
20[NOTES]
21C++ code should _only_ #include "aos/aos_core.h" because it has the extern "C" stuff etc. That should have all of the necessary header files #included, but if it doesn't, they should get added.
22Some functions need to be in separate translation units in order for them to be guaranteed to work. As the C standard says,
23 Alternatively, an implementation might perform various optimizations within each translation unit, such
24 that the actual semantics would agree with the abstract semantics only when making function calls across
25 translation unit boundaries. In such an implementation, at the time of each function entry and function
26 return where the calling function and the called function are in different translation units, the values of all
27 externally linked objects and of all objects accessible via pointers therein would agree with the abstract
28 semantics. Furthermore, at the time of each such function entry the values of the parameters of the called
29 function and of all objects accessible via pointers therein would agree with the abstract semantics. In this
30 type of implementation, objects referred to by interrupt service routines activated by the signal function
31 would require explicit specification of volatile storage, as well as other implementation-defined
32 restrictions.
33Everything that has to do different things when compiled for the crio or the atom uses #ifdef __VXWORKS__ etc.
34The crio "queue" implementation uses 1 global instance and no synchronization, so it should only be used in code that gets called by the crio-side control loop infrastructure.
35The C++ namespace aos is used for all of the aos code. The crio and atom namespaces are for APIs that only make sense on one platform or the other.