RTEMS 5 how to run "hello" example

Gedare Bloom gedare at rtems.org
Wed Mar 17 21:43:30 UTC 2021


On Wed, Mar 17, 2021 at 2:23 PM Olga Syrbachova <syrba4eva28 at gmail.com>
wrote:

> Thank you very much for your reply! I'm still confused about all the
> prefixes and PATHs. In the README.waf it is said to run
>
> $ waf configure --rtems=$HOME/Development/rtems/5 \
> --rtems-tools=$HOME/Development/rtems/5 \
> --rtems-bsps=sparc/erc32
>
> where $HOME/Development/rtems/build/5 is the path to tools and
> $HOME/Development/rtems/build/5 is the path to RTEMS Board Support
> Packages.
>
> I followed this tutorial
> https://medium.com/@mritunjaysharma394/installing-rtems-ecosystem-and-building-your-first-bsp-993d1cf38902
> installing RTEMS and building BSP. So in my case I built the tool suit in development/rtems/src/rsb/rtems
>
>
> $ ../source-builder/sb-set-builder --prefix=$HOME/development/rtems/5 5/rtems-sparc
>
> So the path to tools development/rtems/src/rsb/rtems, is it right? And
> I'm not sure what is a path to RTEMS Board Support Packages.
>
>
Since you build version 5, you need to specify that to waf, otherwise it
defaults to try to build the current RTEMS development version, try

./waf configure --rtems=$HOME/Development/rtems/5 \
    --rtems-tools=$HOME/Development/rtems/5 \
  --rtems-bsps=sparc/erc32 \
  --rtems-version=5

I think we will need some updates to the README.waf for version management.
Patches are welcome :)

On Wed, 17 Mar 2021 at 18:48, Gedare Bloom <gedare at rtems.org> wrote:
>
>>
>>
>> On Wed, Mar 17, 2021 at 10:22 AM Olga Syrbachova <syrba4eva28 at gmail.com>
>> wrote:
>>
>>> What do you mean "regular README file"? There are 3 of them: README,
>>> README.Makefile and README.waf. In README there is just a list of examples.
>>> I tried to follow the README.Makefile instructions, and after running:
>>>
>> Thanks I forgot we put those instructions into README.Makefile.
>>
>>
>>>
>>> olga at olga-H270M-DS3H:~/development/rtems-examples/hello/hello_world_c$
>>> RTEMS_MAKEFILE_PATH=${HOME}/development/rtems/5/sparc-rtems5/erc32 make
>>> clean
>>>
>>> and
>>>
>>> olga at olga-H270M-DS3H:~/development/rtems-examples/hello/hello_world_c$
>>> RTEMS_MAKEFILE_PATH=${HOME}/development/rtems/5/sparc-rtems5/erc32 make
>>>
>>> there appeared an empty folder "o-optimize" in the examples's directory.
>>> What's next?
>>>
>>> Weird, I'll take a look. We do encourage to try to use waf to build the
>> examples though, so let's focus on that direction.
>>
>>
>>> And what do you mean "use ./waf"? When I run ./waf in "rtems-examples",
>>> it says
>>>
>>> olga at olga-H270M-DS3H:~/development/rtems-examples$ ./waf
>>> The project was not configured: run "waf configure" first!
>>> olga at olga-H270M-DS3H:~/development/rtems-examples$ waf configure --rtems=$HOME/development/rtems/build/5 \--rtems-tools=$HOME/development/rtems/5 \--rtems-bsps=sparc/erc32
>>>
>>>
>>  ./waf configure --rtems=$HOME/development/rtems/build/5
>> \--rtems-tools=$HOME/development/rtems/5 \--rtems-bsps=sparc/erc32
>>  ^
>>
>>> Command 'waf' not found, did you mean: ...
>>>
>>>   command 'paf' from deb libpod-abstract-perl
>>>   command 'wdf' from deb wit
>>>   ...
>>>
>>> On Wed, 17 Mar 2021 at 16:51, Gedare Bloom <gedare at rtems.org> wrote:
>>>
>>>>
>>>>
>>>> On Wed, Mar 17, 2021 at 9:11 AM Olga Syrbachova <syrba4eva28 at gmail.com>
>>>> wrote:
>>>>
>>>>> Thanks a lot! I have one more stupid question. How do I run examples
>>>>> from git? I've cloned rtems-examples and tried to follow the instructions
>>>>> from "README.waf", but it doesn't work. When I enter
>>>>>
>>>>>     $ waf configure --rtems=$HOME/development/rtems/bsps/5 \
>>>>>                     --rtems-tools=$HOME/development/rtems/5 \
>>>>>                     --rtems-bsps=sparc/erc32
>>>>>
>>>>> I get this error:
>>>>>        Command 'waf' not found, did you mean: ...
>>>>>
>>>>> Use ./waf
>>>>
>>>>
>>>>
>>>>> I probably do something wrong. Do I need to do the instructions from "README.waf" at all? Or do I need to proceed as in this tutorial https://docs.rtems.org/branches/master/user/start/app.html with every example's directory? I would really appreciate some step-by-step tutorial or instructions as I'm totally frustrated right now and don't understand what to do.
>>>>>
>>>>> Btw there is a makefile in every example's directory. Can I use it instead of waf to compile the applications? If this is the case how do I do it?
>>>>>
>>>>> You can do either way of building the examples, see the regular README
>>>> file for directions on the Makefile approach.
>>>>
>>>>
>>>>> Many thanks in advance for any help!!!
>>>>>
>>>>>
>>>>> On Tue, 16 Mar 2021 at 20:07, Joel Sherrill <joel at rtems.org> wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>> On Tue, Mar 16, 2021 at 1:40 PM Olga Syrbachova <
>>>>>> syrba4eva28 at gmail.com> wrote:
>>>>>>
>>>>>>> Thank you very much for your reply and for your concern!
>>>>>>>
>>>>>>> Actually I'd like to create my own application and test some
>>>>>>> mechanisms, provided by RTEMS. This is a part of my Bachelor Thesis. I'd
>>>>>>> like, for example, to create two/three tasks and make them communicate
>>>>>>> with each other via queues, schedule them by priority etc. I have some
>>>>>>> experience with FreeRTOS. It is run via Visual Studio, which is quite
>>>>>>> simple. And now with RTEMS I am a bit frustrated and don't know where to
>>>>>>> start. That's why I followed the tutorial on the Website. "Hello World"
>>>>>>> program worked just fine, so I decided to try some more complicated
>>>>>>> applications before I start with my own, that's why I decided to build
>>>>>>> "ticker" with waf. Unfortunately I didn't find any helpful (for me)
>>>>>>> tutorial on how to create applications in RTEMS. I mean I can handle
>>>>>>> writing the App's code, but I don't get it how to compile and run it. So I
>>>>>>> was just going to do the same as in the tutorial, but with my own
>>>>>>> application. Is it the right way to proceed or is there another way ?
>>>>>>>
>>>>>>
>>>>>> The tests in RTEMS are just that tests. They depend on things that
>>>>>> shouldn't be installed or used by user applications.
>>>>>>
>>>>>> I would recommend cloning rtems-examples and going from one of those.
>>>>>> There is a directory with variations on ticker and I suspect the base one
>>>>>> is a better one to start from.
>>>>>>
>>>>>> If you want to write POSIX code, one of the POSIX examples there
>>>>>> would serve you ok
>>>>>>
>>>>>> --joel
>>>>>>
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> Virenfrei.
>>>>>>> www.avast.com
>>>>>>> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
>>>>>>> <#m_2587329209695249861_m_-6228330996423727151_m_-6868087392309282603_m_-8071420466793372504_m_971219196135651785_m_277508452244861825_m_-8462729502950921950_m_6778778117170402098_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
>>>>>>>
>>>>>>> On Tue, 16 Mar 2021 at 16:29, Vijay Kumar Banerjee <vijay at rtems.org>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> On Tue, Mar 16, 2021 at 4:07 AM Olga Syrbachova <
>>>>>>>> syrba4eva28 at gmail.com> wrote:
>>>>>>>> >
>>>>>>>> > Thank you very much for your reply!
>>>>>>>> >
>>>>>>>> > I've added
>>>>>>>> > includes =
>>>>>>>> '/home/olga/development/rtems/rtems-5/testsuites/support/include/tmacros.h',
>>>>>>>> >
>>>>>>>> It takes the relative address to the directory where the header file
>>>>>>>> is. For example, if you're building from the
>>>>>>>> "/home/olga/development/rtems" directory the includes argument would
>>>>>>>> be:
>>>>>>>>
>>>>>>>> `includes = './rtems-5/testsuites/support/include/'`
>>>>>>>>
>>>>>>>> BTW, your first email at the start of the thread says that you just
>>>>>>>> want to run the samples, the samples get built as a part of the
>>>>>>>> rtems
>>>>>>>> and you'll be able to see the *.exe files in the build directory. Is
>>>>>>>> there any reason that you're trying to build it in a separate
>>>>>>>> directory with waf? Experimenting with the build system is a good
>>>>>>>> reason though, just making sure that we're not pushing you in the
>>>>>>>> wrong direction and your objective is indeed to try waf on your own
>>>>>>>> and not just running RTEMS hello app.
>>>>>>>>
>>>>>>>> Best regards,
>>>>>>>> Vijay
>>>>>>>>
>>>>>>>>
>>>>>>>> > it still says "No such file or directory". I'm pretty sure the
>>>>>>>> path is write, though there is now another path to "tmacros.h" (the first
>>>>>>>> one below), it's a folder named "tmacros.h" and it's empty.
>>>>>>>> > olga at olga-H270M-DS3H:~$ locate tmacros.h
>>>>>>>> >
>>>>>>>> /home/olga/development/app/ticker/build/sparc-rtems5-erc32/$HOME/developement/rtems/rtems-5/testsuites/support/include/tmacros.h
>>>>>>>> >
>>>>>>>> /home/olga/development/rtems/rtems-5/testsuites/support/include/tmacros.h
>>>>>>>> >
>>>>>>>> >
>>>>>>>> > On Mon, 15 Mar 2021 at 21:00, Vijay Kumar Banerjee <
>>>>>>>> vijay at rtems.org> wrote:
>>>>>>>> >>
>>>>>>>> >> On Mon, Mar 15, 2021 at 1:53 PM Olga Syrbachova <
>>>>>>>> syrba4eva28 at gmail.com> wrote:
>>>>>>>> >> >
>>>>>>>> >> > Sure! https://github.com/syrba4eva/RTEMS/blob/main/wscript
>>>>>>>> >>
>>>>>>>> >> Thanks. In this line:
>>>>>>>> https://github.com/syrba4eva/RTEMS/blob/main/wscript#L33
>>>>>>>> >> After cflags parameter, add "includes", for example:
>>>>>>>> >>
>>>>>>>> >> bld(features = 'c cprogram',
>>>>>>>> >>       target = 'ticker.exe',
>>>>>>>> >>       cflags = '-g -O2',
>>>>>>>> >>       includes='. .. ./original/path/to/tmacros.h',
>>>>>>>> >>       source = ['init.c', 'tasks.c'])
>>>>>>>> >>
>>>>>>>> >> you don't need to copy tmacros.h or any headers from rtems, just
>>>>>>>> add
>>>>>>>> >> the path to includes.
>>>>>>>> >>
>>>>>>>> >>
>>>>>>>> >> Best regards,
>>>>>>>> >> Vijay
>>>>>>>> >>
>>>>>>>> >> >
>>>>>>>> >> > On Mon, 15 Mar 2021 at 20:36, Vijay Kumar Banerjee <
>>>>>>>> vijay at rtems.org> wrote:
>>>>>>>> >> >>
>>>>>>>> >> >> On Mon, Mar 15, 2021 at 1:30 PM Olga Syrbachova <
>>>>>>>> syrba4eva28 at gmail.com> wrote:
>>>>>>>> >> >> >
>>>>>>>> >> >> > Thank you very much for your reply!
>>>>>>>> >> >> > Unfortunately I'm still a bit confused and don't quite
>>>>>>>> understand what to do. Where do I need to modify the "include" parameter?
>>>>>>>> In the wscript file from the "hello" example there is no "include"
>>>>>>>> parameter. I also tried to find a tutorial on how to write a wscript, but
>>>>>>>> didn't find any (Could you suggest any please?). So I tried to copy the
>>>>>>>> file "tmacros.h" from testsuites/support/include to app/ticker. Now after
>>>>>>>> running ./waf I get an error, which tells me that "buffer_test_io.h" wasn't
>>>>>>>> found. When I copied it to my app/ticker directory it didn't work and I
>>>>>>>> still have the same error.
>>>>>>>> >> >> >
>>>>>>>> >> >> Would it be possible for you to paste your wscript somewhere
>>>>>>>> (like
>>>>>>>> >> >> gist.github.com) and share it here so that we can have a
>>>>>>>> look and help
>>>>>>>> >> >> you with that?
>>>>>>>> >> >>
>>>>>>>> >> >> Best regards,
>>>>>>>> >> >> Vijay
>>>>>>>> >> >>
>>>>>>>> >> >> > Waf: Entering directory
>>>>>>>> `/home/olga/development/app/ticker/build/sparc-rtems5-erc32'
>>>>>>>> >> >> > [1/3] Compiling tasks.c
>>>>>>>> >> >> > [2/3] Compiling init.c
>>>>>>>> >> >> > In file included from ../../system.h:17:0,
>>>>>>>> >> >> >                  from ../../init.c:15:
>>>>>>>> >> >> > ../../tmacros.h:32:10: fatal error: buffer_test_io.h: No
>>>>>>>> such file or directory
>>>>>>>> >> >> >  #include <buffer_test_io.h>
>>>>>>>> >> >> >           ^~~~~~~~~~~~~~~~~~
>>>>>>>> >> >> > compilation terminated.
>>>>>>>> >> >> >
>>>>>>>> >> >> > In file included from ../../system.h:17:0,
>>>>>>>> >> >> >                  from ../../tasks.c:22:
>>>>>>>> >> >> > ../../tmacros.h:32:10: fatal error: buffer_test_io.h: No
>>>>>>>> such file or directory
>>>>>>>> >> >> >  #include <buffer_test_io.h>
>>>>>>>> >> >> >           ^~~~~~~~~~~~~~~~~~
>>>>>>>> >> >> > compilation terminated.
>>>>>>>> >> >> >
>>>>>>>> >> >> > Waf: Leaving directory
>>>>>>>> `/home/olga/development/app/ticker/build/sparc-rtems5-erc32'
>>>>>>>> >> >> > Build failed
>>>>>>>> >> >> >  -> task in 'ticker.exe' failed with exit status 1 (run
>>>>>>>> with -v to display more information)
>>>>>>>> >> >> >  -> task in 'ticker.exe' failed with exit status 1 (run
>>>>>>>> with -v to display more information)
>>>>>>>> >> >> >
>>>>>>>> >> >> > On Mon, 15 Mar 2021 at 16:21, Vijay Kumar Banerjee <
>>>>>>>> vijay at rtems.org> wrote:
>>>>>>>> >> >> >>
>>>>>>>> >> >> >> Hi Olga,
>>>>>>>> >> >> >>
>>>>>>>> >> >> >>
>>>>>>>> >> >> >> On Mon, Mar 15, 2021 at 8:29 AM Olga Syrbachova <
>>>>>>>> syrba4eva28 at gmail.com> wrote:
>>>>>>>> >> >> >> >
>>>>>>>> >> >> >> > Thank you very much for your reply!
>>>>>>>> >> >> >> >
>>>>>>>> >> >> >> > I've built the RTEMS Kernel for erc32. Then I followed
>>>>>>>> this tutorial
>>>>>>>> https://docs.rtems.org/branches/master/user/start/app.html to
>>>>>>>> build a "Hello World" application and it works just fine. Then I've tried
>>>>>>>> to create another application following the steps in the tutorial.
>>>>>>>> >> >> >> > 1. In $HOME/development/app/ I created a directory
>>>>>>>> "ticker".
>>>>>>>> >> >> >> > 2. cd ticker
>>>>>>>> >> >> >> > 3. curl https://waf.io/waf-2.0.19 > waf
>>>>>>>> >> >> >> >     chmod +x waf
>>>>>>>> >> >> >> >     git init
>>>>>>>> >> >> >> >     git submodule add git://git.rtems.org/rtems_waf.git
>>>>>>>> rtems_waf
>>>>>>>> >> >> >> > 4. I've copied the files "init.c", "tasks.c", "system.h"
>>>>>>>> from testsuites/samples
>>>>>>>> >> >> >> > 5. In the "wscript" I've changed the lines 32 and 34 to
>>>>>>>> target = 'ticker.exe', source = ['init.c', 'tasks.c']
>>>>>>>> >> >> >> > 6. ./waf configure --rtems=$HOME/development/rtems/5
>>>>>>>> --rtems-bsp=sparc/erc32
>>>>>>>> >> >> >> > 7. and running ./waf next, I get an error. It looks like
>>>>>>>> the file "tmacros.h", which is included in "system.h", cannot be found.
>>>>>>>> >> >> >> >
>>>>>>>> >> >> >> You have changed the "target" and "source" parameters in
>>>>>>>> your wscript.
>>>>>>>> >> >> >> You'd also need to modify the "include" parameter and add
>>>>>>>> relative
>>>>>>>> >> >> >> path to tmacros.h. For multiple headers, you'll have to
>>>>>>>> add the paths
>>>>>>>> >> >> >> as a string with space-separated values or a list like
>>>>>>>> this:
>>>>>>>> >> >> >> `includes='./ ../ ./path/to/include/'`
>>>>>>>> >> >> >>
>>>>>>>> >> >> >>
>>>>>>>> >> >> >> > What am I doing wrong? Is the way to run other examples
>>>>>>>> exactly the same as to run a "Hello World" example?
>>>>>>>> >> >> >> The other examples will also follow a similar wscript
>>>>>>>> structure but
>>>>>>>> >> >> >> hello world is the simple one with fewer includes so it's
>>>>>>>> a good place
>>>>>>>> >> >> >> to start if you're trying to learn how to make a separate
>>>>>>>> project with
>>>>>>>> >> >> >> RTEMS applications using waf.
>>>>>>>> >> >> >>
>>>>>>>> >> >> >>
>>>>>>>> >> >> >> Best regards,
>>>>>>>> >> >> >> Vijay
>>>>>>>> >> >> >> > _______________________________________________
>>>>>>>> >> >> >> > users mailing list
>>>>>>>> >> >> >> > users at rtems.org
>>>>>>>> >> >> >> > http://lists.rtems.org/mailman/listinfo/users
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> Virenfrei.
>>>>>>> www.avast.com
>>>>>>> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
>>>>>>> <#m_2587329209695249861_m_-6228330996423727151_m_-6868087392309282603_m_-8071420466793372504_m_971219196135651785_m_277508452244861825_m_-8462729502950921950_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
>>>>>>> _______________________________________________
>>>>>>> users mailing list
>>>>>>> users at rtems.org
>>>>>>> http://lists.rtems.org/mailman/listinfo/users
>>>>>>
>>>>>> _______________________________________________
>>>>> users mailing list
>>>>> users at rtems.org
>>>>> http://lists.rtems.org/mailman/listinfo/users
>>>>
>>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/users/attachments/20210317/a5132ba7/attachment-0001.html>


More information about the users mailing list