<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">I understand your confusion. Currently there is a mixture of autoconfig, waf , and the examples use a custom makefile configuration. <div class=""><br class=""></div><div class="">When I setup my RTEMS development environment, I use:</div><div class="">$HOME/rtems — base directory</div><div class="">$HOME/rtems/rtems-src — I checkout the RTEMS source here</div><div class="">$HOME/rtems/bsps  - I install BSP libraries here</div><div class="">$HOME/rtems/tools - I install the RSB toolchains here</div><div class="">$HOME/rtems/apps — I put my apps such as the RKI project here</div><div class=""><br class=""></div><div class="">So, when I build a toolchain with RSB, ( 4.11, Sparc for example ) </div><div class="">It goes in:</div><div class="">$HOME/rtems/tools/4.11/</div><div class="">Note that multiple toolchains for 4.11 can be installed here ( sparc, arm, x86, etc ) </div><div class="">Similarly, I can use </div><div class="">$HOME/rtems/tools/4.12/</div><div class="">for RTEMS 4.12 tools as well. </div><div class=""><br class=""></div><div class="">I believe the newlib libraries and headers are installed along with the tools.</div><div class=""><br class=""></div><div class=""><div class="">The setup can be powerful because all of the cross compiler tools for different versions and architectures can co-exist.</div></div><div class=""><br class=""></div><div class="">I also build the RTEMS source separately, and I use the ./bootstrap, configure, make, and make install steps</div><div class="">During the configure step, I specify:</div><div class="">$HOME/rtems/bsps/4.11 as the install prefix, so I know where the compiled RTEMS libraries and headers will reside. Once installed, the build directory is no longer needed. </div><div class="">This also works for multiple architectures and versions of RTEMS.</div><div class=""><br class=""></div><div class="">Once the tools and RTEMS libraries and headers are compiled and installed, you have a SDK ready to develop applications. </div><div class="">With the correct application makefiles, you do not need to worry as much about the exact locations of the libraries and headers. </div><div class=""><br class=""></div><div class="">If you look at the RKI standard makefile:</div><div class=""><a href="https://github.com/alanc98/rki/blob/master/Makefile" class="">https://github.com/alanc98/rki/blob/master/Makefile</a></div><div class="">You can see that there are environment variables that point to the location of the tools and RTEMS libraries/bsps. </div><div class="">As you can see in this makefile, the individual RTEMS libraries are not called out. I believe the -specs bsp_specs and -qrtems options take care of that. </div><div class=""><br class=""></div><div class="">( also note that the paths in that makefile do not separate tools and bsps.. I have not updated that in a while. In that example, tools and bsps were installed in $HOME/rtems/4.11, which will work, but I prefer to separate them )</div><div class=""><br class=""></div><div class="">So that is an example of a custom made makefile for an application. The rtems-waf tool is another way to build an application. </div><div class="">Look at the README.waf for an example of how to use the waf tool. </div><div class=""><br class=""></div><div class=""><a href="https://github.com/alanc98/rki/blob/master/README.waf" class="">https://github.com/alanc98/rki/blob/master/README.waf</a></div><div class=""><br class=""></div><div class="">The RTEMS project has a goal of replacing the auto configure scripts for the RTEMS kernel source with a waf build system. </div><div class=""><br class=""></div><div class="">The simple examples can also be built using a waf script. I have an example on my disk, I should post it to my GitHub account soon for reference. </div><div class=""><br class=""></div><div class="">Alan</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><div class=""><div class=""><div><blockquote type="cite" class=""><div class="">On Jan 3, 2017, at 5:10 AM, Denis Obrezkov <<a href="mailto:denisobrezkov@gmail.com" class="">denisobrezkov@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class=""><div class=""><div class=""><div class="">Thank you for your answer. <br class="">I've already build a cross-compiler and rtems. And sample applications work.<br class=""><br class=""></div>I want to note that it is pretty easy to build rtems with rsb. But it is also a bit confusing, because, for example, when we build an embedded linux distribution (with buildbot or without it), we know exactly where binaries and headers from linux kernel and libc located (because we specified it). So, it is easy to create a new application. It is much harder with with an unknown for many people RSB build system and complicated autotools files.<br class=""><br class=""></div>It seems, that I found binary and headers location - they are obviously in a build directory (shame for me). And now I can understand the makefile of an example application. But I still can't understand two things:<br class=""></div>Where is a newlib binary?<br class=""><br class=""></div><div class="">I see code in the hello world example's makefile:<br class="">$(PGM): $(OBJS)<br class="">    $(make-exe)<br class=""></div><div class="">could you explain where is the rule for $(OBJS) and what is $(make-exe)?<br class=""><br class=""></div><div class="">Sorry, for such stupid questions, but there are so much different .cfg, .am, .in, waf, configure files, that it is very hard to understand what is happening. <br class=""></div></div><div class="gmail_extra"><br class=""><div class="gmail_quote">2017-01-03 3:07 GMT+02:00 Alan Cudmore <span dir="ltr" class=""><<a href="mailto:alan.cudmore@gmail.com" target="_blank" class="">alan.cudmore@gmail.com</a>></span>:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class="">Hi Denis,<div class=""><br class=""></div><div class="">The simplest application is the RTEMS hello example. </div><div class=""><a href="https://git.rtems.org/rtems/tree/testsuites/samples/hello" target="_blank" class="">https://git.rtems.org/rtems/<wbr class="">tree/testsuites/samples/hello</a></div><div class=""><br class=""></div><div class=""><div class="">Typically you use the RTEMS source builder tool ( RSB ) to build and install an RTEMS cross compiler. Next, you download, configure, build, and install the RTEMS kernel. Finally you would build your own application outside of the RTEMS source tree and link to the RTEMS library and startup code to create a standalone executable that is loaded to the target. </div></div><div class=""><br class=""></div><div class="">There are some getting started docs here to help setup a cross compiler and build the RTEMS source with examples:</div><div class=""><a href="https://devel.rtems.org/wiki/TBR/UserManual/Quick_Start" target="_blank" class="">https://devel.rtems.org/wiki/<wbr class="">TBR/UserManual/Quick_Start</a></div><div class="">(Not sure if that is the latest, but I believe the “sis” BSP has been removed. I use the sparc/erc32 BSP in it’s place) </div><div class=""><br class=""></div><div class=""><div class="">If you want to move on from the samples and build your own application outside of the RTEMS tree, I have a sample application framework here:</div><div class=""><a href="https://github.com/alanc98/rki" target="_blank" class="">https://github.com/alanc98/rki</a></div><div class=""><br class=""></div><div class="">This gives you an example of how to create a simple RTEMS application with a RAM disk, shell and some sample commands to run on the shell. The wafscript or Makefile link in the necessary libraries for the chosen BSP. </div><div class="">You can use this with RTEMS 4.11 and 4.12 ( git head ). </div><div class=""><br class=""></div><div class="">It’s pretty easy to build for the sparc erc32 BSP and run with the sparc-rtems4.11-run command line simulator.</div><div class=""><br class=""></div><div class="">To build, I use the “waf” build tool ( <a href="http://waf.io/" target="_blank" class="">waf.io</a> ). When you build for erc32 for example, the executable program will be in :</div><div class="">rki/build/sparc-rtems4.11-<wbr class="">erc32/rki.elf</div><div class="">rki.elf is the final executable that is loaded into the simulator.</div><div class=""><br class=""></div><div class="">Hope this helps,</div><div class="">Alan</div><div class=""><br class=""></div><div class=""><div class=""><blockquote type="cite" class=""><div class=""><div class="h5"><div class="">On Jan 2, 2017, at 8:54 AM, Denis Obrezkov <<a href="mailto:denisobrezkov@gmail.com" target="_blank" class="">denisobrezkov@gmail.com</a>> wrote:</div><br class="m_-7446857271882909985Apple-interchange-newline"></div></div><div class=""><div class=""><div class="h5"><div dir="ltr" class=""><div class=""><div class=""><div class=""><div class=""><div class="">Hello, can you point me to some manual how to create a simple application with rtems?<br class=""></div>I read a lot of your tutorials like POSIX  tutorial, C Guide, Ada guide, Dev. environment guide, but I can't find out how to create a simple application.<br class=""><br class=""></div>I found that I am not alone:<br class=""><a href="http://rtems-users.rtems.narkive.com/rQP1z7Pg/rtems-application-tutorial" target="_blank" class="">http://rtems-users.rtems.<wbr class="">narkive.com/rQP1z7Pg/rtems-<wbr class="">application-tutorial</a><br class=""><a href="http://stackoverflow.com/questions/23794870/rtems-how-to-compile-and-execute-programs" target="_blank" class="">http://stackoverflow.com/<wbr class="">questions/23794870/rtems-how-<wbr class="">to-compile-and-execute-<wbr class="">programs</a><br class=""><br class=""></div>I saw examples for rtems, but I have other questions, for example:<br class=""></div>Where should I place my source code? Should I place it inside of a rtems tree?<br class=""></div><div class="">How should I organize my development environment? For example, I want to make an application for a host computer, make myself sure that it works, and then cross-compile it for a target board.<br class=""></div>What is the structure of an rtems binary? is it something like a "newlib.a+rtems_kernel.a+<wbr class="">userapplication.a".img? <br class=""><br class=""><br clear="all" class=""><div class=""><div class=""><div class=""><div class=""><div class=""><div class=""><br class="">-- <br class=""><div class="m_-7446857271882909985gmail_signature">Regards, Denis Obrezkov</div>
</div></div></div></div></div></div></div></div></div>
______________________________<wbr class="">_________________<br class="">users mailing list<br class=""><a href="mailto:users@rtems.org" target="_blank" class="">users@rtems.org</a><br class=""><a href="http://lists.rtems.org/mailman/listinfo/users" target="_blank" class="">http://lists.rtems.org/<wbr class="">mailman/listinfo/users</a></div></blockquote></div><br class=""></div></div></div></blockquote></div><br class=""><br clear="all" class=""><br class="">-- <br class=""><div class="gmail_signature" data-smartmail="gmail_signature">Regards, Denis Obrezkov</div>
</div>
</div></blockquote></div><br class=""></div></div></div></body></html>