<div dir="ltr"><div dir="ltr">On Mon, Mar 23, 2020 at 6:43 AM Chris Johns <<a href="mailto:chrisj@rtems.org">chrisj@rtems.org</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 2020-03-18 07:36, G S Niteesh Babu wrote:<br>
> ---<br>
> user/index.rst | 1 +<br>
> user/start/gsoc.rst | 453 +++++++++++++++++++++++++++++++++++++++++++<br>
> user/start/index.rst | 1 +<br>
> 3 files changed, 455 insertions(+)<br>
> create mode 100644 user/start/gsoc.rst<br>
> <br>
> diff --git a/user/index.rst b/user/index.rst<br>
> index 0e644c9..f253ea6 100644<br>
> --- a/user/index.rst<br>
> +++ b/user/index.rst<br>
> @@ -10,6 +10,7 @@ RTEMS User Manual (|version|).<br>
> <br>
> .. topic:: Copyrights and License<br>
> <br>
> + | |copy| 2020 Niteesh Babu<br>
> | |copy| 2019 Vijay Kumar Banerjee<br>
> | |copy| 2018 Amaan Cheval<br>
> | |copy| 2018 Marçal Comajoan Cara<br>
> diff --git a/user/start/gsoc.rst b/user/start/gsoc.rst<br>
> new file mode 100644<br>
> index 0000000..071c1cc<br>
> --- /dev/null<br>
> +++ b/user/start/gsoc.rst<br>
> @@ -0,0 +1,453 @@<br>
> +.. comment: SPDX-License-Identifier: CC-BY-SA-4.0<br>
> +<br>
> +.. comment: Copyright (C) 2020 Niteesh Babu <<a href="mailto:niteesh.gs@gmail.com" target="_blank">niteesh.gs@gmail.com</a>><br>
> +.. comment: All rights reserved.<br>
> +<br>
> +<br>
> +.. _QuickStartGSoC:<br>
> +<br>
> +GSoC Getting Started<br>
> +====================<br>
> +<br>
> +The goal of this page is to help you get RTEMS compiled and running so you can<br>
> +start with the real work.<br>
> +<br>
> +Please join the :r:list:`users` and :r:list:`devel` mailing lists and ask questions.<br>
> +Help correct any deficiencies in the code or documentation you spot, including<br>
> +those on the wiki. The ultimate goal of GSoC is to help you become part of the<br>
> +open source community.<br>
> +<br>
> +.. _QuickStartConfigureComputer:<br>
> +<br>
> +Configure a Development Computer > +--------------------------------<br>
> +<br>
> +You will be best served by using a GNU/Linux environment,<br>
<br>
This should reference the Host section and ask the student to select one <br>
of the supported hosts. Recommending a Unix host is fine.<br>
<br>
> which could be in a<br>
> +virtual machine, for example that uses `Virtualbox <<a href="https://www.virtualbox.org/" rel="noreferrer" target="_blank">https://www.virtualbox.org/</a>>`_<br>
<br>
This is fine.<br>
<br>
> +and should run on most modern desktop systems. You should also be able to work<br>
> +with a MacOS or Windows system, but might encounter more difficulty than a *nix<br>
> +environment.<br>
<br>
For some people Unix is more difficult.<br>
<br>
> +<br>
> +Feel free to ask questions on the rtems-users mailing list in case you face<br>
> +trouble with the steps. If you want tools for another architecture, replace<br>
> +sparc in the RSB directions with another architecture, such as arm or mips. You<br>
> +can also use the RSB to build RTEMS directly, but we recommend that you learn<br>
> +how to build RTEMS by itself with the compiler tools generated by RSB.<br>
> +<br>
> +As you will be compiling a lot of code, it is recommended to have a reasonably<br>
> +fast development machine.<br>
> +<br>
> +The instructions in this chapter will help you in quickly setting up a<br>
> +development environment. For a detailed set of instruction please refer to the<br>
> +:ref:`QuickStart` chapter.<br>
> +<br>
> +You need tools for your host’s operating system to build the RTEMS tool suite<br>
> +from source. Please have a look at the :ref:`host-computer` chapter for the<br>
> +instructions to install the tools.<br>
> +<br>
> +Choosing an Installation Prefix<br>
> +-------------------------------<br>
<br>
From here on I would prefer references to the existing documentation <br>
with any GSoC details list here. I would prefer we avoid duplicating <br>
prefix, sources and building anywhere in the documentaion as it will <br>
only confuse search engines, normal users and GSoC students. The Quick <br>
Start Guide has taken a long time to get to where it is. If there is <br>
something in the Quick Start guide that needs fixing please let me know.<br></blockquote><div>I had this discussion with Gedare. We felt it would be nice to have all the</div><div>instructions in once place instead of referencing them. It would make it</div><div>easier for newcomers and students to follow.</div><div>Maybe I'll use the same prefix as in the Quick Start guide but have all the</div><div>instructions here.</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
I am sorry I have not commented before now, I have been distracked.<br>
<br>
Thanks<br>
Chris<br>
<br>
> +<br>
> +The term ``prefix`` refers to the path on your computer where the software is to<br>
> +be installed.<br>
> +In this case, we choose the home directory ``$HOME/rtems`` as our prefix.<br>
> +<br>
> +.. code-block:: none<br>
> +<br>
> + mkdir $HOME/rtems<br>
> +<br>
> +Getting Sources<br>
> +---------------<br>
> +<br>
> +We obtain the source code for the :ref:`RTEMS Source Builder (RSB) <RSB>` and<br>
> +RTEMS from the RTEMS :r:url:`git`.<br>
> +<br>
> +The :ref:`RTEMS Source Builder (RSB) <RSB>` is the tool used to build RTEMS<br>
> +packages from source. We will be using the RSB to build RTEMS the source.<br>
> +Please have a look at the :ref:`RTEMS Source Builder (RSB) <RSB>` for more<br>
> +information.<br>
> +<br>
> +We'll clone to the repositories to ``$HOME/rtems/src``.<br>
> +<br>
> +.. code-block:: none<br>
> +<br>
> + mkdir -p $HOME/rtems/src<br>
> + cd $HOME/rtems/src<br>
> + git clone git://<a href="http://git.rtems.org/rtems-source-builder.git" rel="noreferrer" target="_blank">git.rtems.org/rtems-source-builder.git</a> rsb<br>
> + git clone git://<a href="http://git.rtems.org/rtems.git" rel="noreferrer" target="_blank">git.rtems.org/rtems.git</a><br>
> +<br>
> +Building the Tool suite<br>
> +-----------------------<br>
> +<br>
> +Once you have cloned the repositories and installed the required tools for<br>
> +your host operating system. You can start building the tools suite for your BSP.<br>
> +The tools suite is the collection of compiler, debugger, Assembler and other<br>
> +tools required for developing the software.<br>
> +<br>
> +You can check if your host is set up correctly using ``sb-check`` tool provided<br>
> +in the RSB repository.<br>
> +<br>
> +.. code-block:: none<br>
> +<br>
> + cd $HOME/rtems/src/rsb/source-builder<br>
> + ./sb-check<br>
> +<br>
> +If you installed all the required tools you should have the following output.<br>
> +<br>
> +.. code-block:: none<br>
> +<br>
> + RTEMS Source Builder - Check, 5 (0b7e87143b76)<br>
> + Environment is ok<br>
> +<br>
> +.. note:: The numbers may vary depending on the RSB release.<br>
> +<br>
> +The tool suite for RTEMS and the RTEMS sources are tightly coupled. For example,<br>
> +do not use a RTEMS version 5 tool suite with RTEMS version 4.11 sources and vice<br>
> +versa. In simple words, make sure you clone both the repositories at the same<br>
> +time.<br>
> +<br>
> +The tools suite is architecture specific. In this guide we will be building the<br>
> +tools suite for the SPARC architecture. So the tool suite name is sparc-rtems5.<br>
> +You can build the tools suite for other architectures like ARM, RISCV by<br>
> +replacing the architecture name. For example, for ARM the tools suite name would<br>
> +be arm-rtems5.<br>
> +<br>
> +The following command builds and installs the tools suite in the path mentioned<br>
> +in the prefix option.<br>
> +<br>
> +.. code-block:: none<br>
> +<br>
> + cd $HOME/rtems/src/rsb/rtems<br>
> + ../source-builder/sb-set-builder --prefix=$HOME/rtems/5 5/rtems-sparc<br>
> +<br>
> +This command should output something like this (omitted lines are denoted by …).<br>
> +The build host appears as part of the name of the package being built. The name<br>
> +you see may vary depending on the host you are using:<br>
> +<br>
> +.. code-block:: none<br>
> +<br>
> + RTEMS Source Builder - Set Builder, 5.1.0<br>
> + Build Set: 5/rtems-sparc<br>
> + ...<br>
> + config: tools/rtems-binutils-2.34.cfg<br>
> + package: sparc-rtems5-binutils-2.34-x86_64-freebsd12.1-1<br>
> + building: sparc-rtems5-binutils-2.34-x86_64-freebsd12.1-1<br>
> + sizes: sparc-rtems5-binutils-2.34-x86_64-freebsd12.1-1: 305.866MB (installed: 29.966MB)<br>
> + cleaning: sparc-rtems5-binutils-2.34-x86_64-freebsd12.1-1<br>
> + reporting: tools/rtems-binutils-2.34.cfg -> sparc-rtems5-binutils-2.34-x86_64-freebsd12.1-1.txt<br>
> + reporting: tools/rtems-binutils-2.34.cfg -> sparc-rtems5-binutils-2.34-x86_64-freebsd12.1-1.xml<br>
> + config: tools/rtems-gcc-7.5.0-newlib-fbaa096.cfg<br>
> + package: sparc-rtems5-gcc-7.5.0-newlib-fbaa096-x86_64-freebsd12.1-1<br>
> + building: sparc-rtems5-gcc-7.5.0-newlib-fbaa096-x86_64-freebsd12.1-1<br>
> + ....<br>
> + Build Sizes: usage: 5.684GB total: 1.112GB (sources: 143.803MB, patches: 21.348KB, installed 995.188MB)<br>
> + Build Set: Time 0:21:35.626294<br>
> +<br>
> +Once the build has successfully completed you can check if the cross C compiler<br>
> +works with the following command:<br>
> +<br>
> +.. code-block:: none<br>
> +<br>
> + $HOME/rtems/5/bin/sparc-rtems5-gcc --version<br>
> +<br>
> +This command should output something like below. The version information helps<br>
> +you to identify the exact sources used to build the cross compiler of your RTEMS<br>
> +tool suite.<br>
> +<br>
> +.. code-block:: none<br>
> +<br>
> + sparc-rtems5-gcc (GCC) 7.5.0 20191114 (RTEMS 5, RSB 5.1.0, Newlib fbaa096)<br>
> + Copyright (C) 2017 Free Software Foundation, Inc.<br>
> + This is free software; see the source for copying conditions. There is NO<br>
> + warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.<br>
> +<br>
> +Add the tools suite to your ``$PATH`` by the following command:<br>
> +<br>
> +.. code-block:: none<br>
> +<br>
> + export PATH=$HOME/rtems/5:"$PATH"<br>
> +<br>
> +This is only valid for the current terminal session. To make it permanant, add<br>
> +it your ``~/.profile`` by the following command:<br>
> +<br>
> +.. code-block:: none<br>
> +<br>
> + echo "export PATH=$PATH:$HOME/rtems/5" >> ~/.profile<br>
> +<br>
> +Bootstrap the RTEMS Source<br>
> +--------------------------<br>
> +<br>
> +Since you have built and installed the tools required for compilation of RTEMS.<br>
> +It is time to build the BSP. But before that it is necessary to bootstrap the<br>
> +the build system in the RTEMS source. Bootstrap is the process where the files<br>
> +required for building RTEMS are generated. This process is required because<br>
> +RTEMS does not keep the generated files under version control.<br>
> +<br>
> +To perform bootstrap we need to enter the cloned source directory then run the<br>
> +bootstrap commands:<br>
> +<br>
> +.. code-block:: none<br>
> +<br>
> + cd $HOME/rtems/src/rtems<br>
> + ./bootstrap -c && /$HOME/rtems/src/rtems/rtems-bootstrap<br>
> +<br>
> +Build the BSP<br>
> +-------------<br>
> +<br>
> +The Board Support Package (BSP) is the software that glues a specific board or<br>
> +hardware to RTEMS. For information on available BSPs you can refer to :ref:`BSPs`.<br>
> +<br>
> +We will be building the SPARC ERC32 BSP since we have installed the SPARC tools<br>
> +suite and also because this BSP has a robust simulator that runs the example and<br>
> +test executables on your host computer.<br>
> +<br>
> +The RSB can also be used to build the BSP. But we will be building it manually.<br>
> +You can refer to the :ref:`QuickStart` chapter for instructions on building it<br>
> +using RSB.<br>
> +<br>
> +We by choosing a build directory. It must be separate from the RTEMS source<br>
> +directory. We will be using ``$HOME/rtems/build/erc32`` as our build directory.<br>
> +<br>
> +.. code-block:: none<br>
> +<br>
> + mkdir -p $HOME/rtems/build/erc32<br>
> +<br>
> +We now configure the BSP. We enable all the tests. But if you want you can<br>
> +enable only a part of the tests by replacing `--enable-tests` with<br>
> +`--enable-tests=samples`. This would only build the tests under<br>
> +``$HOME/rtems/src/rtems/testsuites/samples`` and will also reduce your build<br>
> +times significantly.<br>
> +<br>
> +.. code-block:: none<br>
> +<br>
> + cd $HOME/rtems/build/erc32<br>
> + $HOME/rtems/src/rtems/configure \<br>
> + --prefix=$HOME/quick-start/rtems/5 \<br>
> + --enable-maintainer-mode \<br>
> + --target=sparc-rtems5 \<br>
> + --enable-rtemsbsp=erc32 \<br>
> + --enable-tests<br>
> +<br>
> +This command should output something like this (omitted lines are denoted by ...):<br>
> +<br>
> +.. code-block:: none<br>
> +<br>
> + checking for gmake... gmake<br>
> + checking for RTEMS Version... 5.0.0<br>
> + checking build system type... x86_64-unknown-freebsd12.0<br>
> + checking host system type... x86_64-unknown-freebsd12.0<br>
> + checking target system type... sparc-unknown-rtems5<br>
> + ...<br>
> + config.status: creating Makefile<br>
> +<br>
> + target architecture: sparc.<br>
> + available BSPs: erc32.<br>
> + 'gmake all' will build the following BSPs: erc32.<br>
> + other BSPs can be built with 'gmake RTEMS_BSP="bsp1 bsp2 ..."'<br>
> +<br>
> + config.status: creating Makefile<br>
> +<br>
> +The configure command will the create the Makefile required to build the BSP.<br>
> +<br>
> +We can now finally build the BSP using make.<br>
> +<br>
> +.. code-block:: none<br>
> +<br>
> + cd $HOME/rtems/build/erc32<br>
> + make<br>
> +<br>
> +This command should output something like this (omitted lines are denoted by …).<br>
> +<br>
> +.. code-block::none<br>
> +<br>
> + Configuring RTEMS_BSP=erc32<br>
> + checking for gmake... gmake<br>
> + checking build system type... x86_64-unknown-freebsd12.0<br>
> + checking host system type... sparc-unknown-rtems5<br>
> + checking rtems target cpu... sparc<br>
> + checking for a BSD-compatible install... /usr/bin/install -c<br>
> + checking whether build environment is sane... yes<br>
> + checking for sparc-rtems5-strip... sparc-rtems5-strip<br>
> + checking for a thread-safe mkdir -p... $BASE/src/rtems/c/src/../../install-sh -c -d<br>
> + checking for gawk... no<br>
> + checking for mawk... no<br>
> + checking for nawk... nawk<br>
> + checking whether gmake sets $(MAKE)... yes<br>
> + checking whether to enable maintainer-specific portions of Makefiles... yes<br>
> + checking for RTEMS_BSP... erc32<br>
> + checking whether CPU supports libposix... yes<br>
> + configure: setting up make/custom<br>
> + configure: creating make/erc32.cache<br>
> + gmake[3]: Entering directory '$BASE/build/b-erc32/sparc-rtems5/c/erc32'<br>
> + ...<br>
> + sparc-rtems5-gcc -mcpu=cypress -O2 -g -ffunction-sections -fdata-sections -Wall -Wmissing-prototypes -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -B./../../lib/libbsp/sparc/erc32 -B$BASE/src/rtems/bsps/sparc/erc32/start -specs bsp_specs -qrtems -L./../../cpukit -L$BASE/src/rtems/bsps/sparc/shared/start -Wl,--wrap=printf -Wl,--wrap=puts -Wl,--wrap=putchar -Wl,--gc-sections -o spwkspace.exe spwkspace/spwkspace-init.o ./../../lib/libbsp/sparc/erc32/librtemsbsp.a ./../../cpukit/librtemscpu.a<br>
> + gmake[5]: Leaving directory '$BASE/build/b-erc32/sparc-rtems5/c/erc32/testsuites/sptests'<br>
> + gmake[4]: Leaving directory '$BASE/build/b-erc32/sparc-rtems5/c/erc32/testsuites'<br>
> + gmake[3]: Leaving directory '$BASE/build/b-erc32/sparc-rtems5/c/erc32'<br>
> + gmake[2]: Leaving directory '$BASE/build/b-erc32/sparc-rtems5/c/erc32'<br>
> + gmake[1]: Leaving directory '$BASE/build/b-erc32/sparc-rtems5/c'<br>
> + gmake[1]: Entering directory '$BASE/build/b-erc32'<br>
> + gmake[1]: Nothing to be done for 'all-am'.<br>
> + gmake[1]: Leaving directory '$BASE/build/b-erc32'<br>
> +<br>
> +The last step is installing the BSP.<br>
> +<br>
> +.. code-block:: none<br>
> +<br>
> + cd $HOME/rtems/build/erc32<br>
> + make install<br>
> +<br>
> +This command should output something like this (omitted lines are denoted by …).<br>
> +In this output the base directory $HOME/rtems was replaced by $BASE.<br>
> +<br>
> +.. code-block:: none<br>
> +<br>
> + Making install in sparc-rtems5/c<br>
> + gmake[1]: Entering directory '$BASE/build/b-erc32/sparc-rtems5/c'<br>
> + Making install in .<br>
> + gmake[2]: Entering directory '$BASE/build/b-erc32/sparc-rtems5/c'<br>
> + gmake[3]: Entering directory '$BASE/build/b-erc32/sparc-rtems5/c'<br>
> + gmake[3]: Nothing to be done for 'install-exec-am'.<br>
> + gmake[3]: Nothing to be done for 'install-data-am'.<br>
> + gmake[3]: Leaving directory '$BASE/build/b-erc32/sparc-rtems5/c'<br>
> + gmake[2]: Leaving directory '$BASE/build/b-erc32/sparc-rtems5/c'<br>
> + Making install in erc32<br>
> + gmake[2]: Entering directory '$BASE/build/b-erc32/sparc-rtems5/c/erc32'<br>
> + gmake[3]: Entering directory '$BASE/build/b-erc32/sparc-rtems5/c/erc32'<br>
> + Making install-am in .<br>
> + Making install-am in cpukit<br>
> + gmake[4]: Entering directory '$BASE/build/b-erc32/sparc-rtems5/c/erc32/cpukit'<br>
> + gmake[5]: Entering directory '$BASE/build/b-erc32/sparc-rtems5/c/erc32/cpukit'<br>
> + gmake[5]: Nothing to be done for 'install-exec-am'.<br>
> + $BASE/src/rtems/c/src/../../cpukit/../install-sh -c -d '$BASE/rtems/5/sparc-rtems5/erc32/lib/include'<br>
> + ...<br>
> + $BASE/src/rtems/make/Templates/Makefile.lib '$BASE/rtems/5/share/rtems5/make/Templates'<br>
> + $BASE/src/rtems/./install-sh -c -d '$BASE/rtems/5/make/custom'<br>
> + /usr/bin/install -c -m 644 $BASE/src/rtems/make/custom/default.cfg '$BASE/rtems/5/make/custom'<br>
> + gmake[2]: Leaving directory '$BASE/build/b-erc32'<br>
> + gmake[1]: Leaving directory '$BASE/build/b-erc32'<br>
> +<br>
> +Testing the BSP<br>
> +---------------<br>
> +<br>
> +Since, we now have a BSP built and installed. We will test it by running a<br>
> +Hello world example. This example is already been built during the BSP build<br>
> +phase.<br>
> +<br>
> +We can run this using the simulator provided by RSB tools suite. The SPARC tools<br>
> +suite comes with SIS simulator which can we used to run your executables on your<br>
> +host computer without the need for hardware.<br>
> +<br>
> +The ``Hello World`` executable can be found under<br>
> +``$HOME/rtems/build/erc32/sparc-rtems5/c/erc32/testsuites/samples/hello/hello.exe``.<br>
> +<br>
> +To run the executable in the simulator we use the following command:<br>
> +<br>
> +.. code-block:: none<br>
> +<br>
> + sparc-rtems5-sis sparc-rtems5/c/erc32/testsuites/samples/hello/hello.exe<br>
> +<br>
> +The output will be the following:<br>
> +<br>
> +.. code-block:: none<br>
> +<br>
> + sparc-rtems5-sis sparc-rtems5/c/erc32/testsuites/samples/hello/hello.exe<br>
> + SIS - SPARC/RISCV instruction simulator 2.20, copyright Jiri Gaisler 2019<br>
> + Bug-reports to <a href="mailto:jiri@gaisler.se" target="_blank">jiri@gaisler.se</a><br>
> + ERC32 emulation enabled<br>
> +<br>
> + Loaded sparc-rtems5/c/erc32/testsuites/samples/hello.exe, entry 0x02000000<br>
> +<br>
> + sis><br>
> +<br>
> +This command will start the simulator and will load the executable in it. To run<br>
> +the exe, enter run in the simulator prompt ( `sis>` ). This will running the<br>
> +executable in the simulator and the following output will be produced.<br>
> +<br>
> +.. code-block:: none<br>
> +<br>
> + sparc-rtems5-sis sparc-rtems5/c/erc32/testsuites/samples/hello/hello.exe<br>
> + SIS - SPARC/RISCV instruction simulator 2.20, copyright Jiri Gaisler 2019<br>
> + Bug-reports to <a href="mailto:jiri@gaisler.se" target="_blank">jiri@gaisler.se</a><br>
> + ERC32 emulation enabled<br>
> +<br>
> + Loaded sparc-rtems5/c/erc32/testsuites/samples/hello.exe, entry 0x02000000<br>
> +<br>
> + sis> run<br>
> +<br>
> +<br>
> + *** BEGIN OF TEST HELLO WORLD ***<br>
> + *** TEST VERSION: 5.0.0.c6d8589bb00a9d2a5a094c68c90290df1dc44807<br>
> + *** TEST STATE: EXPECTED-PASS<br>
> + *** TEST BUILD: RTEMS_POSIX_API<br>
> + *** TEST TOOLS: 7.5.0 20191114 (RTEMS 5, RSB 83fa79314dd87c0a8c78fd642b2cea3138be8dd6, Newlib 3e24fbf6f)<br>
> + Hello World<br>
> +<br>
> + *** END OF TEST HELLO WORLD ***<br>
> +<br>
> +<br>
> + *** FATAL ***<br>
> + fatal source: 0 (INTERNAL_ERROR_CORE)<br>
> + fatal code: 5 (INTERNAL_ERROR_THREAD_EXITTED)<br>
> + RTEMS version: 5.0.0.c6d8589bb00a9d2a5a094c68c90290df1dc44807<br>
> + RTEMS tools: 7.5.0 20191114 (RTEMS 5, RSB 83fa79314dd87c0a8c78fd642b2cea3138be8dd6, Newlib 3e24fbf6f)<br>
> + executing thread ID: 0x08a010001<br>
> + executing thread name: UI1<br>
> + cpu 0 in error mode (tt = 0x101)<br>
> + 116401 02009ae0: 91d02000 ta 0x0<br>
> +<br>
> +Prove You Can Work On RTEMS<br>
> +---------------------------<br>
> +<br>
> +Modify the hello world example to include a new different print statement.<br>
> +Something like "Hello from The Dark Side!". Then send us enough to prove to us<br>
> +that you did this. We want to know you can work with RTEMS.<br>
> +<br>
> +Create a patch of your changes and send it to :r:link:`devel` along with the<br>
> +screenshot of the output.<br>
> +<br>
> +If you followed this guide, this hello world modification will likely need to be<br>
> +made to the file you'll have in ``$HOME/rtems/src/rtems/testsuites/samples/hello/init.c``.<br>
> +You can edit the file, commit your changes using git, and then run git<br>
> +format-patch master to generate a patch file.<br>
> +<br>
> +Creating Patch<br>
> +--------------<br>
> +<br>
> +Once you have made the required changes in the ``init.c`` file. You will have to<br>
> +commit those changes. Before commiting the changes make sure you are not on the<br>
> +master branch. This is to avoid merge conflicts. You can create and work on a<br>
> +separate local branch with the following git command.<br>
> +<br>
> +.. code-block:: none<br>
> +<br>
> + cd $HOME/rtems/src/rtems<br>
> + git checkout -b gsoc<br>
> +<br>
> +This is will create a separate branch called `gsoc` and will switch you to it.<br>
> +<br>
> +Stage the file and commit using the following commands.<br>
> +<br>
> +.. code-block:: none<br>
> +<br>
> + git add $HOME/rtems/src/rtems/testsuites/samples/hello/init.c<br>
> + git commit -m "<YOUR-COMMIT-MESSAGE>"<br>
> +<br>
> +You can now create a patch file using ``git format-patch``.<br>
> +<br>
> +.. code-block:: none<br>
> +<br>
> + git format-patch -1<br>
> +<br>
> +Sending Patches<br>
> +---------------<br>
> +<br>
> +Once the patch file is created. You can now send it to :r:link:`devel` using<br>
> +``git send-email``. Please refer to `git send-email <<a href="https://git-scm.com/docs/git-send-email" rel="noreferrer" target="_blank">https://git-scm.com/docs/git-send-email</a>>`_<br>
> +for instructions on seting up the SMTP server and other options.<br>
> +<br>
> +The following command will send the patch to the mailing list.<br>
> +<br>
> +.. code-block:: none<br>
> +<br>
> + git send-email <YOUR-PATCH-FILE> --to <a href="mailto:devel@rtems.org" target="_blank">devel@rtems.org</a><br>
> diff --git a/user/start/index.rst b/user/start/index.rst<br>
> index d6333f3..2d3ab2c 100644<br>
> --- a/user/start/index.rst<br>
> +++ b/user/start/index.rst<br>
> @@ -22,3 +22,4 @@ applications on top of RTEMS.<br>
> bsp-build<br>
> bsp-test<br>
> app<br>
> + gsoc<br>
> <br>
</blockquote></div></div>