PrevNextUpHome SophiaFramework UNIVERSE 5.3

2.1. Installing Development Environments

2.1.1. System Requirements

  • Brew MP 1.0.3 / 1.0.2 / 1.0.1, BREW 4.0.4 / 3.1.5 SP02 / 2.1.3 / 2.0.1
  • Microsoft Visual Studio 2005, Microsoft Visual Studio .NET 2003, or Microsoft Visual C++ 6 ( SP6 or later )
  • ARM RealView Compilation Tools for BREW 1.2 ( Build 848 or later ), ARM RealView Compilation Tools for BREW 3.0 ( Build 970 or later ), YAGARTO 4.4.2 for Windows (20091018), or GNUARM 4.1.1
[Note] How to get GNUARM 4.1.1

GNUARM 4.1.1 is available at the GNUARM top page where select Files and click Binary GCC-4.1 toolchain.

[Note] How to get YAGARTO 4.4.2

YAGARTO 4.4.2 for Windows (20091018) is available at the YAGARTO top page and click SourceForge.

[Caution] About versions of development environments

- For Microsoft Visual C++ 6.0, application of Service Pack 6 is necessary.

- For RealView Compilation Tools for BREW 1.2, application of Build 848 patch is necessary.

- It is recommended to use GNUARM 4.1.1 with Cygwin.

- It is recommended to use YAGARTO 4.4.2 (20091018), because YAGARTO 4.4.2 (20091223) has some issues with math functions.

[Caution] Abbreviation

"ARM RealView Compilation Tools for BREW" is occasionally abbreviated as RVCTB in this chapter.

2.1.2. BREW SDK

Install BREW SDKs as instructed by Qualcomm Inc.

2.1.3. SophiaFramework UNIVERSE

Click the installer icon and install SophiaFramework UNIVERSE.

[Caution] Overwriting usertype.dat

When you finish installing SophiaFramework UNIVERSE, Microsoft Visual Studio Keywords file "usertype.dat" will be overwritten by SophiaFramework UNIVERSE.

If you have customized "usertype.dat", please backup it before installing.

Default location of "usertype.dat" is the below.

  1. Microsoft Visual Studio 6.0: C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin
  2. Microsoft Visual Studio .NET 2003: C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE
  3. Microsoft Visual Studio 2005: C:\Program Files\Microsoft Visual Studio 8\Common7\IDE

2.1.4. BREW Elf2Mod

If you develop with RVCTB 3.0, GNUARM or YAGARTO, Qualcomm BREW Elf2Mod 1.0.2 needs to be installed.

[Note] Qualcomm BREW Elf2Mod

You must be certified as Brew Developer to get elf2mod tool.

Create the environment variable "ELF2MOD_TOOL_PATH", and register the value "C:\Program Files\BREW Elf2Mod\bin" (if the tool has installed in the directory "C:\Program Files\BREW Elf2Mod").

Figure 2.1. Environment Variable "ELF2MOD_TOOL_PATH"

Environment Variable "ELF2MOD_TOOL_PATH"

2.1.5. [Option] Free Development Environments for Brew Devices

GCC toolchains for ARM is free compilation tools for mobile phones.

SophiaFramework supports developing with GNUARM 4.1.1 and YAGARTO 4.4.2.

In case of developing with RVCTB, go to the section "Creating Projects".

If you have finished installing GCC toolchains, "Updating GNU ld Linker" and "Modifing BREW SDK Header Files" are necessary.

2.1.5.1. Install GNUARM 4.1.1

GNUARM 4.1.1 is available at Files -> Binary GCC-4.1 toolchain: binutils-2.17, gcc-4.1.1-c-c++, newlib-1.14.0, insight-6.5, setup.exe [25.1MB] of GNUARM.

Execute the downloaded file "bu-2.17_gcc-4.1.1-c-c++_nl-1.14.0_gi-6.5.exe".

Figure 2.2. Set up GNUARM - 1

Set up GNUARM - 1

When the setup screen appears, push the Next button and go next.

Figure 2.3. Set up GNUARM - 2

Set up GNUARM - 2

When the screen of License Agreement appears, select "I accept the agreement", push the Next button and go next.

Figure 2.4. Set up GNUARM - 3

Set up GNUARM - 3

Set the installed folder to "C:\GNUARM", push the Next button and go next.

Figure 2.5. Set up GNUARM - 4

Set up GNUARM - 4

After leaving Start Menu Folder as it is, push the Next button and go next.

Figure 2.6. Set up GNUARM - 5

Set up GNUARM - 5

With "Full installation", push the Next button and go next.

Figure 2.7. Set up GNUARM - 6

Set up GNUARM - 6

If Cygwin has already been installed(this is recommended), turn off the check of "Install Cygwin DLLs", push the Next button and go next.

Figure 2.8. Set up GNUARM - 7

Set up GNUARM - 7

If nothing is wrong, push the Install button and start to install.

Figure 2.9. Set up GNUARM - 8

Set up GNUARM - 8

In case the environment variable "PATH" is set to the path of GNUARM execution file (this is option since register other environment variable), turn off the check, push the Finish button and complete the installation.

Set the environment variable "GNUARM41HOME" (create if not exists) to "C:\GNUARM" which is the installed folder.

Figure 2.10. Environment variable "GNUARM41HOME"

Environment variable "GNUARM41HOME"

That's all about the installation of GNUARM.

Next, perform Updating GNU ld Linker and Modifing BREW SDK include file.

2.1.5.2. Install YAGARTO 4.4.2

YAGARTO 4.4.2 for Windows (20091018) is available at SourceForge of YAGARTO top page.

Execute the downloaded file "yagarto-bu-2.19.1_gcc-4.4.2-c-c++_nl-1.17.0_gi-6.8.50_20091018.exe".

Figure 2.11. Set up YAGARTO - 1

Set up YAGARTO - 1

When the setup screen appears, push the Next button and go next.

Figure 2.12. Set up YAGARTO - 2

Set up YAGARTO - 2

When the screen of License Agreement appears, select "I accept the terms of the License Agreement", push the Next button and go next.

Figure 2.13. Set up YAGARTO - 3

Set up YAGARTO - 3

In case the environment variable "PATH" is set to the path of YAGARTO execution file (this is option because the other environment variable will be set), turn off the check, push the Next button and go next.

Figure 2.14. Set up YAGARTO - 4

Set up YAGARTO - 4

Set the installed folder, push the Next button and go next.

Figure 2.15. Set up YAGARTO - 5

Set up YAGARTO - 5

After leaving Start Menu Folder as it is, push the Install button and start installation.

Figure 2.16. Set up YAGARTO - 6

Set up YAGARTO - 6

Files installation is done, push the Next button and go next.

Figure 2.17. Set up YAGARTO - 7

Set up YAGARTO - 7

Setup is done, push the Finish button and quit the wizard.

Set the environment variable "YAGARTO44HOME" (create if not exists) to "C:\Program Files\yagarto" which is the installed folder.

Figure 2.18. Environment variable "YAGARTO44HOME"

Environment variable "YAGARTO44HOME"

That's all about the installation of YAGARTO.

Next, perform Updating GNU ld Linker and Modifing BREW SDK include file.

2.1.5.3. Updating GNU ld Linker (for both GNUARM 4.1.1 and YAGARTO 4.4.2)

GNU ld linker (arm-elf-ld.exe) in GNUARM 4.1.1 is version 2.1.7. This version does not support both "--emit-relocs" and "--gc-sections" options on at the same time.

The following is a brief explanation about the two options.

"--emit-relocs" option outputs the relocation table information. BREW Elf2Mod Tool needs this information to convert an elf file into a mod file.

"--gc-sections" option deletes unsed functions to make the size of a linked module smaller.

This issue can be solved by replacing the arm-elf-ld.exe with patched GNU ld 2.19.1 (execution file).

(*) Exisisting linker is unable to emit position independent veneer codes (pic-veneer) when arm/thumb interwoking (in particular thumb mode to arm mode). The bug is also fixed in the patched edition.

[Caution] In the latest YAGARTO

The bug is fixed at binutils 2.20 in the latest YAGARTO (20091223) (2009/12/24 now).

However, there are some issues with math functions, and we don't recommend to use it until they are resolved.

Figure 2.19. Update arm-elf-ld.exe (GNUARM)

Update arm-elf-ld.exe (GNUARM)

Figure 2.20. Update arm-elf-ld.exe (YAGARTO)

Update arm-elf-ld.exe (YAGARTO)

2.1.5.4. Modifing BREW SDK Header Files

When using BREW SDK 3.1.2 or below, you have to update the the BREW header file "sdk\inc\AEESource.h" as follows:

Example 2.1. Before Updating AEESource.h

#define DECLARE_IGETLINE(iname)\
   int32  (*GetLine)  (iname *po, GetLine *pgl, int32 nTypeEOL);\
   void   (*UngetLine)(iname *po, int32 nLenUnused)

#define INHERIT_IGetline(iname)\
   INHERIT_IPeek(iname);\
   int32  (*GetLine)  (iname *po, GetLine *pgl, int32 nTypeEOL);\
   void   (*UngetLine)(iname *po, int32 nLenUnused)

Example 2.2. After Updating AEESource.h

#define DECLARE_IGETLINE(iname)\
   int32  (*GetLine)  (iname *po, struct GetLine *pgl, int32 nTypeEOL);\
   void   (*UngetLine)(iname *po, int32 nLenUnused)

#define INHERIT_IGetline(iname)\
   INHERIT_IPeek(iname);\
   int32  (*GetLine)  (iname *po, struct GetLine *pgl, int32 nTypeEOL);\
   void   (*UngetLine)(iname *po, int32 nLenUnused)

When using BREW SDK 4.0.4 SP02, you have to update the 30th line of the BREW header file "sdk\inc\AEEOldVaList.h" as follows:

Example 2.3. Before Updating AEEOldVaList.h

#elif defined(__GNUC__) && defined(__arm__)

Example 2.4. After Updating AEEOldVaList.h

#elif (0)