Femto Linux Project

Last modified by Rob Garth on 2016/06/19 14:10

The Femto Linux project is a headless User interface which uses GNU/Linux along with  PTXDist as the build environment

All Femto Releases

Release Download Instructions

A specific release can be downloaded by choosing the manifest from the Releases table.

$ repo init -u git://codeaurora.org/quic/femto/fsm/manifest.git -b release -m [manifest]
$ repo sync

For releases prior to March 2013, download the release by choosing both the branch and manifest from the Releases table.

$ repo init -u git://codeaurora.org/quic/femto/fsm/manifest.git -b [branch] -m [manifest]
$ repo sync

Patch Releases



Installation Instructions


For getting started with ptxdist, go to http://www.pengutronix.de/software/ptxdist/index_en.html

1) Download packages (ptxdist-1.99.10 and ptxdist-1.99.10-patches) from http://www.pengutronix.de/software/ptxdist/download/
2) Follow below steps to compile and install ptxdist-1.99.10

$ tar xvzf ptxdist-1.99.10.tgz
$ tar xvzf ptxdist-1.99.10-patches.tgz  (updates first tarball)
$ cd ptxdist-1.99.10  
$ ./configure --prefix=/usr/local/ptxdist --with-bash-completion=/etc/bash_completion.d
$ make
$ sudo make install

This creates /usr/local/ptxdist directory, export this path. 

$ export PATH=$PATH:/usr/local/ptxdist/bin

3) After installation, incorporate the below changes:

  • In File /usr/local/ptxdist/lib/ptxdist-1.99.10/scripts/lib/ptxd_lib_cfgchg.sh, insert the below on line 66
chmod 644 "${cfg_old}";
  • In File /usr/local/ptxdist/lib/ptxdist-1.99.10/scripts/lib/ptxd_make_get.sh, modify line 24 as below

4) Run ptxdist setup and ensure that Developer Options ==> host cc and host cxx are updated to gcc and g++ respectively

Build kernel

1) Retrieve kernel from https://www.codeaurora.org/gitweb/quic/femto/
2) Check out on to respective branch (ex:- android-msm-2.6.32, msm-2.6.38)
3) From the msm folder, execute the below command for compilation :

$ cp <path of the config file to be used from arch/arm/configs ex:- fsm9xxx_defconfig> .config
$ make ARCH=arm  HOSTCC=gcc CROSS_COMPILE=arm-none-linux-gnueabi-

Build mtd-utils

1) Retrieve mtd-utils from https://www.codeaurora.org/gitweb/quic/femto/
2) From mtd-utils folder, give the below command for compilation:

$ make -j8 CROSS="arm-none-linux-gnueabi-"

Build from /project/rules

1) Create <project> folder and retrieve rules from https://www.codeaurora.org/gitweb/quic/femto (After step 1,Project folder consists of rules folder)
2) Update kernel.make and mtd-utils.make in rules folder to download from appropriate location. (Replace ptxconf variables which are defined).

  • say snapshot of 
KERNEL_URL:  https://www.codeaurora.org/gitweb/quic/femto/?p=kernel%2Fmsm.git;a=snapshot;h=139e50c9553aade3c030ea1db0186542099b07ce;sf=tgz

Modify kernel.make accordingly as

KERNEL_FILENAME := "?p=kernel%2Fmsm.git;a=snapshot;h=139e50c9553aade3c030ea1db0186542099b07ce;sf=tgz"
KERNEL_URL += "https://www.codeaurora.org/gitweb/quic/le/$(KERNEL_FILENAME)"
  • Say snapshot of 
MTD_UTILS_URL: https://www.codeaurora.org/gitweb/quic/femto/?p=mtd/utils.git;a=snapshot;h=7577fd7248c4044ca1d91e9037e0a2ea2b103e79;sf=tgz

Modify mtd-utils.make accordingly as

MTD_UTILS_FILENAME :="?p=le%2Fmtd-utils.git;a=snapshot;h=7577fd7248c4044ca1d91e9037e0a2ea2b103e79;sf=tgz"
MTD_UTILS_URL :=  "https://www.codeaurora.org/gitweb/quic/femto/$(MTD_UTILS_FILENAME)"

3) PTXDIST expects Kconfig file in project folder. Create Kconfig file which consists of configuration details. Menu files of packages should be specified in Kconfig file. Hence, Create Kconfig file with the below code.

source "config/Kconfig"
source "workspace/rules/dejagnu.in"
source "workspace/rules/kernel.in"
source "workspace/rules/module-init-tools.in"
source "workspace/rules/mtd-utils.in"
source "workspace/rules/yaffs2.in"

After this step, Project folder contains rules folder and a Kconfig file Refer to /usr/local/ptxdist/lib/ptxdist-1.99.10/rules/templates/kconfig/Kconfig for further information related to Kconfig

4) From project folder,create menuconfig and platformconfig files using ptxdist

$ echo PTXCONF_CONFIGFILE_VERSION="1.99.10" > menu-config
$ touch platform-config
$ ptxdist ptxconfig=menu-config platformconfig=platform-config menuconfig
  • Packages to be compiled should be selected through menuconfig
  • Navigate through Root Filesystem ==> start scripts and deselect networking option.
$ ptxdist ptxconfig=menu-config platformconfig=platform-config platformconfig
  Enter appropriate details 
  •   Platform-name.(Ex:fsm9xxx).
  •   Navigate through Architecture >Toolchain and update gcc version and gnu target (Ex: arm-none-linux-gnueabi  ).
  •   If selected kernel, update version, imageType as vmlinux, and enter kernel config file as ‘kernel_defconfig’.

5) Create projectroot/etc directory under project folder(kernel make file expects this folder during compilation of kernel)

$ mkdir –p projectroot/etc

6) From project folder, run “ptxdist go” command to build the project with appropriate flags.

$ export PATCH_GET=0
$ export KERNEL_DEFCONFIG=<defconfig>
$ ptxdist toolchain=<path-to-toolchain> ptxconfig=menu-config platformconfig=platform-config go

PATCH_GET=0 disables source control fetching behavoir
KERNEL_DEFCONFIG > target specific defconfig file(say,fsm9xxx_defconfig)

Created by Rob Garth on 2010/07/26 09:44
This wiki is licensed under a Creative Commons 2.0 license
XWiki Enterprise 7.4.3 - Documentation