Ok, Jo„o,<div><br></div><div>Let's try the following steps, and at the end, with some lucky, we'll get RTEMS 4.11 development environment for i386/pc386 BSP up and running, on Ubuntu, with Eclipse. I hadn't had time to make it shorter, so take a deep breath and read this long text:†</div>

<div><br></div><div>1 - Prepare your Ubuntu with the required packages to build the RTEMS (GNU-based) tool-chains, presuming Ubuntu 10.10, run:</div><div><pre style="padding-right:1em;padding-left:1em;border-bottom-width:1px;padding-top:1em;border-top-style:dashed;border-right-style:dashed;padding-bottom:1em;border-bottom-color:rgb(47,111,171);border-top-width:1px;border-bottom-style:dashed;line-height:1.1em;border-left-color:rgb(47,111,171);border-top-color:rgb(47,111,171);border-right-color:rgb(47,111,171);border-left-style:dashed;border-right-width:1px;border-left-width:1px">
sudo aptitude install m4 patch  build-essential texinfo cvs \
    libncurses5-dev libgmp3-dev libmpfr-dev libmpc-dev autoconf \
    autotools-dev automake</pre>See:†<a href="http://www.rtems.org/wiki/index.php/Building_the_RTEMS_toolset_on_Ubuntu" target="_blank">http://www.rtems.org/wiki/index.php/Building_the_RTEMS_toolset_on_Ubuntu</a></div><div>
<br></div><div>
2 - Build RTEMS tools: Follow the Phase 2 mentioned in the link above. In summary: get tools tarballs of the tools, and, for each tool, apply patches (if needed), configure, make, make install. <b>HOWEVER</b>, in your case, you want to a different target, since your Board Support Package (BSP) matches i386/pc386, use <b>--target=i386-rtems4.11</b> instead of --target=powerpc-rtems4.11 when configuring each tool.</div>

<div>Another thing to worry about: probably you need to be logged as root to perform the build process (I'm not sure on Ubuntu - I'd never use it, BTW).</div><div><br></div><div>3 - Build RTEMS for you BSP</div><div>

By this time you probably have /opt/rtems-4.11/bin full of files. If this is true (and you are lucky... :-), run the following steps as a non-root user:</div><div><br></div><div>(presuming you are logged as 'joao', and the current directory is /home/joao)</div>

<div><br></div><div>$ export RTEMS_HOME=/opt/rtems-4.11</div><div>$ export PATH=$RTEMS_HOME/bin:$PATH</div><div>$ mkdir rtems-4.11-work</div><div>$ cd rtems-4.11-work</div><div>$ git clone git://<a href="http://git.rtems.org/rtems.git" target="_blank">git.rtems.org/rtems.git</a></div>

<div>(this is going to download the rtems source code, version 4.10.99 - which will become 4.11 upon release)</div><div>$ cd rtems</div><div>$ ./bootstrap</div><div>(this is going to prepare the rtems source for your environment; 'Makefile' is created as well as the 'configure' script)</div>

<div>$ cd ..</div><div>$ mkdir b-pc386</div><div>$ cd b-pc386</div><div>$ ../rtems/configure --target=i386-rtems4.11 --prefix=/home/joao/rtems-4.11-work/bsp-install --enable-rtemsbsp="pc386" --enable-tests="samples"</div>

<div>(this is going to prepare the current directory to hold the temporary stuffs created during the build process).</div><div>$ make all</div><div>(now actually building something :-)</div><div>$ make install</div><div>
(note that /home/joao/rtems-4.11-work/bsp-install was created)</div>
<div><br></div><div>Don't forget to put</div><div><div><br></div><div>export RTEMS_HOME=/opt/rtems-4.11</div><div>export PATH=$RTEMS_HOME/bin:$PATH</div></div><div><br></div><div>in your ~/.bashrc (or ~/.bash_profile) to make these variables available next time you boot your system.</div>

<div><br></div><div>4 - Testing†</div><div>Since --enable-tests=samples was used, RTEMS samples was generated.</div><div>Find all of them just for fun:</div><div>$ find . -name *.exe</div><div>(this yields something like the following - all of them are bootable images, besides the .exe extension)</div>

<div><div>./i386-rtems4.11/c/pc386/testsuites/samples/ticker/ticker.exe</div><div>./i386-rtems4.11/c/pc386/testsuites/samples/minimum/minimum.exe</div><div>./i386-rtems4.11/c/pc386/testsuites/samples/hello/hello.exe</div>

<div>./i386-rtems4.11/c/pc386/testsuites/samples/pppd/pppd.exe</div><div>./i386-rtems4.11/c/pc386/testsuites/samples/fileio/fileio.exe</div><div>(... lines suppressed...)</div></div><div><br></div><div>I recommend you to use qemu to test them; it will be useful to help you in the development tasks like, debuging without the need of the real hardware. If you does not have qemu yet, now is a good time to installing it. For you, 'sudo apt-get install qemu' may work.</div>

<div>If you already has qemu installed:</div><div><br></div><div>$ qemu -kernel ./i386-rtems4.11/c/pc386/testsuittes/samples/ticker/ticker.exe</div><div>( you should see the follwing output: )</div><div>More info:†<a href="http://www.rtems.org/wiki/index.php/QEMU" target="_blank">http://www.rtems.org/wiki/index.php/QEMU</a></div>

<div><br></div><div>5. Run bootable image on your target.</div><div>There are many options available. One of them is grub on a pen drive or installed in your target's flash/hdd drive.†Another one is iPXE network boot.†</div>

<div><br></div><div>6. Create your own application (ok, you won... with Eclipse):</div><div>Download and install the latest eclipse for GNU/Linux C/C++ developers (get it from:†<a href="http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/indigo/SR1/eclipse-linuxtools-indigo-SR1-incubation-linux-gtk-x86_64.tar.gz" target="_blank">http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/indigo/SR1/eclipse-linuxtools-indigo-SR1-incubation-linux-gtk-x86_64.tar.gz</a>)</div>

<div><br></div><div>Open eclipse and File | New ... | C Project</div><div>In 'Project type' select: Makefile project | Empty Project</div><div>In 'Toolchains' select: Cross GCC</div><div>In 'Project name' write rtems-app</div>

<div>Click Next, then Finish</div><div><br></div><div>Select the project in the Project explorer, them click File | Properties</div><div>Select C/C++ Build | Environment, them click 'Add...' to add a new environment variable, then:</div>

<div>In "Name" write:†RTEMS_MAKEFILE_PATH</div><div>In "Value" write:†/home/joao/rtems-4.11-work/bsp-install/i386-rtems4.11/pc386</div><div>Check "Add to all configurations", then click OK.</div>

<div>Select C/C++ | Paths and Symbols, then click 'Add...' to add a new path to tell eclipse where RTEMS include files are.</div><div>In "Directory:" put ${RTEMS_MAKEFILE_PATH}/lib/include</div><div>Check "Add to all configurations" and "Add to all languages"</div>

<div>Click OK (close dialog)†</div><div>Click OK (close properties dialog)</div><div><br></div><div>Presuming your eclipse workspace is at /home/joao/workspace, on a shell do:</div><div>$ cp /home/joao/rtems-4.11-work/rtems/make/Templates/Makefile.leaf /home/joao/workspace/rtems-app/Makefile</div>

<div><br></div><div>Back to to eclipse project, press F5 to refresh your project. You probably can see the Makefile in the project's tree.</div><div><br></div><div>Add a new C header file to your project (File | New | Header file), named system.h, and put the following content in there:</div>

<div><div>#ifndef SYSTEM_H_</div><div>#define SYSTEM_H_</div><div><br></div><div>#include <bsp.h> /* for device driver prototypes */</div><div><br></div><div>#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER</div><div>

#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER</div><div>#define CONFIGURE_MAXIMUM_TASKS † † † † † † 4</div><div>#define CONFIGURE_RTEMS_INIT_TASKS_TABLE</div><div>#define CONFIGURE_EXTRA_TASK_STACKS † † † † (3 * RTEMS_MINIMUM_STACK_SIZE)</div>

<div><br></div><div>#include <rtems/confdefs.h></div><div><br></div><div>#endif /* SYSTEM_H_ */</div></div><div><br></div><div>Add a new C source file to your project (File | New | C Source file), named init.c, and put the following content in there:</div>

<div><div>#define CONFIGURE_INIT</div><div>#include "system.h"</div><div><br></div><div>rtems_task Init(rtems_task_argument argument)</div><div>{</div><div>† †int i = 0;</div><div><br></div><div>† †for (;;)</div>

<div>† †{</div><div><span style="white-space:pre-wrap">       </span> †rtems_task_wake_after(RTEMS_MILLISECONDS_TO_TICKS(1000));</div><div><span style="white-space:pre-wrap">      </span> †printk("%d RTEMS rocks!\n", i);</div>

<div><span style="white-space:pre-wrap">  </span> †i++;</div><div>† †}</div><div><br></div><div>† †rtems_shutdown_executive(0);</div><div>}</div></div><div><br></div><div>Edit the Makefile and alter the following lines:</div>

<div>Change: C_PIECES=xxxd xxxe xxxf</div><div>To:†C_PIECES=init</div><div><br></div><div>Change:†CC_PIECES=xxxa xxxb xxxc</div><div>To:†CC_PIECES=</div><div><br></div><div>Change:†H_FILES=</div><div>To:†H_FILES=system.h</div>

<div><br></div><div>Change:†PGMS=${ARCH}/xxx-your-program-here ${ARCH}/xxx-another-one</div><div>to:†PGMS=${ARCH}/rtems-app.exe</div><div><br></div><div>Change:</div><div><div>LD_PATHS †+= xxx-your-EXTRA-library-paths-go-here, if any</div>

<div>LD_LIBS † += xxx-your-libraries-go-here eg: -lvx</div></div><div><br></div><div>To:</div><div><div>LD_PATHS †+=†</div><div>LD_LIBS † +=†</div></div><div><br></div><div>Change:†CLEAN_ADDITIONS += xxx-your-debris-goes-here</div>

<div>to:†CLEAN_ADDITIONS +=†</div><div><br></div><div>Change:†${ARCH}/xxx-your-program-here: ${OBJS} ${LINK_FILES}</div><div>To:†${ARCH}/rtems-app.exe: ${OBJS} ${LINK_FILES}</div><div><br></div><div>Save Makefile</div><div>

<br></div><div>Now you should be able to create the make targets 'all' and 'clean', in the "Make targets" view.</div><div>Just click "Create make target" there, and in "Target name", just write 'all' (without quotes). Do the same for the 'clean' make target.</div>

<div><br></div><div>Click 'all' in that view, and you should be able to see the build output in the "Console" view, like:</div><div><div>**** Build of configuration Default for project rtems-app ****</div>
<div><br></div><div>make all†</div><div>test -d o-optimize || mkdir o-optimize</div><div>i386-rtems4.11-gcc --pipe -B/home/wendell/rtems/bsp-install/i386-rtems4.11/pc386/lib/ -specs bsp_specs -qrtems † -g -Wall †-O2 -g -g † † -mtune=i386 † † †-c † -o o-optimize/init.o init.c</div>
<div>i386-rtems4.11-gcc --pipe -B/home/wendell/rtems/bsp-install/i386-rtems4.11/pc386/lib/ -specs bsp_specs -qrtems † -g -Wall †-O2 -g -g † † -mtune=i386 † † †-Wl,-Ttext,0x00100000 † †-mtune=i386 † -o o-optimize/rtems-app.exe †o-optimize/init.o † † ††</div>
<div>i386-rtems4.11-nm -g -n o-optimize/rtems-app.exe > o-optimize/rtems-app.num</div><div>i386-rtems4.11-size o-optimize/rtems-app.exe</div><div>† †text<span class="Apple-tab-span" style="white-space:pre">       </span> † data<span class="Apple-tab-span" style="white-space:pre">     </span> † †bss<span class="Apple-tab-span" style="white-space:pre">     </span> † †dec<span class="Apple-tab-span" style="white-space:pre">     </span> † †hex<span class="Apple-tab-span" style="white-space:pre">     </span>filename</div>
<div>†174057<span class="Apple-tab-span" style="white-space:pre">       </span> †10256<span class="Apple-tab-span" style="white-space:pre">     </span> † 8836<span class="Apple-tab-span" style="white-space:pre">     </span> 193149<span class="Apple-tab-span" style="white-space:pre">     </span> †2f27d<span class="Apple-tab-span" style="white-space:pre">     </span>o-optimize/rtems-app.exe</div>
<div>i386-rtems4.11-objcopy -O elf32-i386 --remove-section=.comment --remove-section=.note --strip-unneeded o-optimize/rtems-app.exe o-optimize/rtems-app.nxe</div><div>i386-rtems4.11-objcopy -O binary o-optimize/rtems-app.nxe o-optimize/rtems-app.bin</div>
<div>/home/wendell/rtems/bsp-install/i386-rtems4.11/pc386/build-tools/bin2boot -v o-optimize/rtems-app.ralf 0x00097E00 /home/wendell/rtems/bsp-install/i386-rtems4.11/pc386/lib/start16.bin 0x00097C00 0 o-optimize/rtems-app.bin 0x00100000 0</div>
<div>header address † † † 0x00097e00, its memory size 0x00000200</div><div>first †image address 0x00097c00, its memory size 0x00000200</div><div>second image address 0x00100000, its memory size 0x0002da00</div><div>rm -f o-optimize/rtems-app.nxe</div>
<div><br></div><div>**** Build Finished ****</div></div><div><br></div><div>The file rtems-app.exe should be created in the folder o-optimize. Use qemu to run it:</div><div>$ cd ~/workspace/rtems-app</div><div>$ qemu-system-i386 -kernel o-optimize/rtems-app.exe</div>
<div>or</div><div>$ qemu -kernel†o-optimize/rtems-app.exe</div><div><br></div><div>Well, I hope it helps you now.</div><div><br></div><div>Best regards (from Brazil also! :-)</div><div><br></div><div>--</div><div>Att.</div>
<div>Wendell.</div><div><br></div><div><br><div class="gmail_quote">Em 16 de fevereiro de 2012 18:11, Jo„o Paulo Scal„o Martins <span dir="ltr"><<a href="mailto:joaopaulosm@gmail.com" target="_blank">joaopaulosm@gmail.com</a>></span> escreveu:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Thank you so much guys!<div><br></div><div>But I'm still having basic problems. The RTEMS building didn't work correctly, so I decided to start it all over again. I need to build the binutils, gcc-core and newlib, etc..</div>



<div><br></div><div>The problem is: there are too many versions! RTEMS Tools version 4.11, RTEMS building version 4.10.2 ... I'm just getting crazy!</div><div><br></div><div>I need your help one more time:</div><div>


<br>
</div><div>1 - Where is the best place (rtems ftp, git repository, cvs repository, apt-yum repository) to get the tool chain files ????? And which one should I download? The 4.10.2 or 4.11 ? Where are the 4.10.2 sources ????<br>



</div><div>(my host machine is a Intel Core 2 Duo 64bits, running Ubuntu, and my target is a AMD Geode).</div><div><br></div><div>2 - Where is the best place to download the files for BUILD the RTEMS and examples ??</div>



<div><br></div><div>Thank you, once again!</div><div><br></div><div>Best regards,</div><div><br></div><div>Joao</div><div>†</div>
<br>_______________________________________________<br>
rtems-users mailing list<br>
<a href="mailto:rtems-users@rtems.org" target="_blank">rtems-users@rtems.org</a><br>
<a href="http://www.rtems.org/mailman/listinfo/rtems-users" target="_blank">http://www.rtems.org/mailman/listinfo/rtems-users</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br>Att.<br>Wendell P. Silva<br><a href="tel:%2B55%2012%208114-8018" value="+551281148018" target="_blank">+55 12 8114-8018</a><br><br>
</div>