User Tools

Site Tools


iotivity_porting_to_arm_based_platforms

This information is largely out of date, suggest using procedures to build with Yocto or for Tizen which are both cross-builds which can target ARM. Advantage: they target a specific known operating system. The Development Platforms page may also have useful information.

The procedure to port IoTivity to arm based platforms is provided here

1) Download and install an ARM toolchain (available at: https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads, or may be packaged for certain systems - Fedora has packages named arm-none-eabi-*)

2) Keep track of the path to the toolchain, and whether the commands have a prefix. These will become the TC_PATH TC_PREFIX used in step 6 below. Example:

  TC_PREFIX=arm-none-eabi- TC_PATH=/opt/gcc-arm-none-eabi-6-2017-q2-update/bin
  

3) Download the Boost libraries from internet and place it in iotivity/extlibs/boost/. Update the CPPPATH for BOOST header in iotivity\build_common\linux\SConscript

4) Download the UUID Header/Libraries for arm architecture from Internet or from linkuuid-arm.zip. Place the UUID Headers/Libraries inside IoTivity folder (For Eg: iotivity/extlibs/). Update the CPPPATH/LIBPATH for UUID Headers/Libraries in required SConscript

 For E.g.: env.AppendUnique(CPPPATH = [ '<uuid header path>'])
           env.AppendUnique(LIBPATH =  ['<uuid Library Path>'])
           env.AppendUnique(LIBS = ['uuid']) 
           {{:arm_uuid_path.png?200|}}

5) Boost is needed for IoTivity C++ layer and Services compilation. Boost libraries have to be cross compiled for arm or can be downloaded and has to placed in iotivity/extlibs/boost/.

  • Unordered List ItemUpdate the CPPPATH for BOOST header iniotivity\build_common\linux\SConscript

  • Changes in resource/src/SConscript

  • Changes in resource\oc_logger\SConscript

6) During IoTivity Build, include the following options in SCons command

  • TC_ARCH=arm
  • TC_PREFIX=<Prefix of tool chain compiler> For E.g.: TC_PREFIX=arm-none-linux-gnueabi-
  • TC_PATH=<Tool Chain Path> For E.g.: TC_PATH=/opt/<platform>/usr/local/gcc-4.3.3-glibc-2.8-cs2009q1-203/arm-none-linux-gnueabi/bin

Example for SCons Command: scons TARGET_OS=linux TARGET_ARCH=arm TARGET_TRANSPORT=IP SECURED=0 RELEASE=1 TC_PREFIX=arm-none-linux-gnueabi- TC_PATH=/opt/<platform>/usr/local/gcc-4.3.3-glibc-2.8-cs2009q1-203/arm-none-linux-gnueabi/bin

Remove Services, C++ SDK, Example/Samples from IoTivity Build

To remove services, C++ SDK from Build, SCons does not provide option to remove these features during build. We need to comment in SConscript

1) To Remove Services from Build:

In iotivity/SConscruct, comment the mentioned line SConscript(build_dir + 'service/SConscript') LineNo. 63

2) To Remove C++SDK from Build:

in iotivity/resource/SConscript, comment the mentioned line SConscript('src/SConscript') LineNo. 60

3) To Remove Samples/Examples from Build:

in iotivity/resource/SConscript, comment the mentioned line SConscript('examples/SConscript') LineNo. 64
in iotivity/SConstruct, comment the examples/OICMiddle/SConscript LineNo. 59, 60

Note: LineNo. are mentioned according to IoTivity 1.0 Version

iotivity_porting_to_arm_based_platforms.txt · Last modified: 2017/07/13 17:53 by Mats Wichmann