175 lines
9.0 KiB
Plaintext
175 lines
9.0 KiB
Plaintext
#@TYPE: Machine configuration
|
|
#@NAME: ixp4xx
|
|
#@DESCRIPTION: genric machine configuration for ixp4xx platforms
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# INPUTS
|
|
#-------------------------------------------------------------------------------
|
|
# conf/${DISTRO}.conf is included after this file and should be used to modify
|
|
# variables identified as 'INPUTS' to the required values for the DISTRO, this
|
|
# will cause the board specific settings (which depend for the most part on the
|
|
# exact CPU used) to be set correctly within this file. The results are the
|
|
# variables identifies here as 'OUTPUTS'
|
|
#
|
|
#variable = "default"
|
|
# <possible values>
|
|
# description
|
|
|
|
ARCH_BYTE_SEX = "be"
|
|
# "be" "le"
|
|
# The memory byte sex and (on correctly implemented hardware - the IXP4XX is
|
|
# correct) the byte sex of the buses within the system. 'be' (big-endian)
|
|
# means that the first byte is the most significant byte on a bus, 'le'
|
|
# (little-endian) means that the first byte is the least significant byte.
|
|
|
|
ARM_INSTRUCTION_SET = "arm"
|
|
# "arm" "thumb"
|
|
# The instruction set the compiler should use when generating application
|
|
# code. The kernel is always compiled with arm code at present. arm code
|
|
# is the original 32 bit ARM instruction set, thumb code is the 16 bit
|
|
# encoded RISC sub-set. Thumb code is smaller (maybe 70% of the ARM size)
|
|
# but requires more instructions (140% for 70% smaller code) so may be
|
|
# slower.
|
|
|
|
THUMB_INTERWORK = "yes"
|
|
# "yes" "no"
|
|
# Whether to compile with code to allow interworking between the two
|
|
# instruction sets. This allows thumb code to be executed on a primarily
|
|
# arm system and vice versa. It is strongly recommended that DISTROs not
|
|
# turn this off - the actual cost is very small.
|
|
|
|
DISTRO_BASE = ""
|
|
# "" ":<base>"
|
|
# If given this must be the name of a 'distro' to add to the bitbake OVERRIDES
|
|
# after ${DISTRO}, this allows different distros to share a common base of
|
|
# overrides. The value given must include a leading ':' or chaos will result.
|
|
|
|
IXP4XX_SUFFIX = "${MACHINE_ARCH}"
|
|
# <string>
|
|
# Kernel suffix - 'ixp4xxbe' or 'ixp4xxle' for a truely generic image, controls
|
|
# the suffix on the name of the generated zImage, override in the DISTRO
|
|
# configuration if patches or defconfig are changed for the DISTRO.
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# OUTPUTS
|
|
#-------------------------------------------------------------------------------
|
|
|
|
#OVERRIDES
|
|
# The standard ':' separated list of overrides used by bitbake - see the
|
|
# basic setting in bitbake.conf. This list is based on that used for the
|
|
# standard setting however :<base>, :thumb and :thumb-interwork will be
|
|
# inserted at appropriate points if a base distro, default use of thumb or
|
|
# arm/thumb interworking are enabled in the inputs.
|
|
OVERRIDE_THUMB = "${@['', ':thumb'][bb.data.getVar('ARM_INSTRUCTION_SET', d, 1) == 'thumb']}"
|
|
OVERRIDE_INTERWORK = "${@['', ':thumb-interwork'][bb.data.getVar('THUMB_INTERWORK', d, 1) == 'yes']}"
|
|
OVERRIDES = "local:${MACHINE}:ixp4xx:${DISTRO}${DISTRO_BASE}:${TARGET_OS}:${TARGET_ARCH}${OVERRIDE_THUMB}${OVERRIDE_INTERWORK}:build-${BUILD_OS}:fail-fast"
|
|
|
|
# TARGET_CC_ARCH
|
|
# TARGET_CC_KERNEL_ARCH
|
|
# TARGET_LD_ARCH
|
|
# TARGET_LD_KERNEL_ARCH
|
|
# Compiler and linker options for application code and kernel code. These
|
|
# options ensure that the compiler has the correct settings for the selected
|
|
# instruction set and interworking.
|
|
ARM_INTERWORK_M_OPT = "${@['-mno-thumb-interwork', '-mthumb-interwork'][bb.data.getVar('THUMB_INTERWORK', d, 1) == 'yes']}"
|
|
ARM_THUMB_M_OPT = "${@['-mno-thumb', '-mthumb'][bb.data.getVar('ARM_INSTRUCTION_SET', d, 1) == 'thumb']}"
|
|
#
|
|
TARGET_CC_ARCH = "-march=armv5te -mtune=xscale ${ARM_INTERWORK_M_OPT} ${ARM_THUMB_M_OPT}"
|
|
TARGET_CC_KERNEL_ARCH = "-march=armv5te -mtune=xscale -mno-thumb-interwork -mno-thumb"
|
|
TARGET_LD_ARCH = ""
|
|
TARGET_LD_KERNEL_ARCH = ""
|
|
|
|
# FULL_OPTIMIZATION
|
|
# Optimization settings. Os works fine and is significantly better than O2.
|
|
# The other settings are somewhat arbitrary. The optimisations chosen here
|
|
# include the ones which 'break' symbolic debugging (because the compiler does
|
|
# not include enough information to allow the debugger to know where given
|
|
# values are.) The -fno options are an attempt to cancel explicit use of space
|
|
# consuming options found in some packages (this isn't a complete list, this is
|
|
# just the ones which package writers seem to know about and abuse).
|
|
FULL_OPTIMIZATION = "-Os -fomit-frame-pointer -frename-registers \
|
|
-fno-unroll-loops -fno-inline-functions \
|
|
-fweb -funit-at-a-time"
|
|
|
|
# TARGET_ARCH
|
|
# The correct setting for the system endianness (ARCH_BYTE_SEX). This will
|
|
# be arm (le) or armeb (be) - it is difficult to be more precise in the
|
|
# setting because of the large number of ways it is used within OpenEmbedded.
|
|
TARGET_ARCH = "${@['armeb', 'arm'][bb.data.getVar('ARCH_BYTE_SEX', d, 1) == 'le']}"
|
|
|
|
# TARGET_PACKAGE_ARCH [not used]
|
|
# The correct setting for the generated packages. This corresponds to the
|
|
# -march flag passed to the compiler because that limits the architectures
|
|
# on which the generated code will run.
|
|
BYTE_SEX_CHAR = "${@['b', 'l'][bb.data.getVar('ARCH_BYTE_SEX', d, 1) == 'le']}"
|
|
TARGET_PACKAGE_ARCH_BASE = "${@['armv5te', 'thumbv5t'][bb.data.getVar('ARM_INSTRUCTION_SET', d, 1) == 'thumb']}"
|
|
TARGET_PACKAGE_ARCH = "${TARGET_PACKAGE_ARCH_BASE}${BYTE_SEX_CHAR}"
|
|
|
|
# MACHINE_ARCH
|
|
# The correct setting for packages which are specific to the machine, this
|
|
# defaults to ${MACHINE} in bitbake.conf, however it is set to ixp4xx here
|
|
# because everything built here is no more specific than that.
|
|
MACHINE_ARCH = "ixp4xx${ARCH_BYTE_SEX}"
|
|
|
|
# IPKG_EXTRA_ARCHS
|
|
# The full list of package architectures which should run on the system.
|
|
# This takes into account both the board level issues and the INPUTS set
|
|
# by the distro. The arm list is derived from the architecture settings
|
|
# known to gcc, the thumb list is then derived from that (only the 't'
|
|
# architectures of course).
|
|
#[not used]: TARGET_ARCH is handled below because it is also currently
|
|
# used for thumb packages.
|
|
#ARM_ARCHITECTURES = "${TARGET_ARCH} armv2${BYTE_SEX_CHAR} armv2a${BYTE_SEX_CHAR} armv3${BYTE_SEX_CHAR} armv3m${BYTE_SEX_CHAR} armv4${BYTE_SEX_CHAR} armv4t${BYTE_SEX_CHAR} armv5${BYTE_SEX_CHAR} armv5t${BYTE_SEX_CHAR} armv5e${BYTE_SEX_CHAR} armv5te${BYTE_SEX_CHAR} xscale${BYTE_SEX_CHAR}"
|
|
ARM_ARCHITECTURES = "armv2${BYTE_SEX_CHAR} armv2a${BYTE_SEX_CHAR} armv3${BYTE_SEX_CHAR} armv3m${BYTE_SEX_CHAR} armv4${BYTE_SEX_CHAR} armv4t${BYTE_SEX_CHAR} armv5${BYTE_SEX_CHAR} armv5t${BYTE_SEX_CHAR} armv5e${BYTE_SEX_CHAR} armv5te${BYTE_SEX_CHAR} xscale${BYTE_SEX_CHAR}"
|
|
THUMB_ARCHITECTURES = "thumbe${BYTE_SEX_CHAR} thumbv4t${BYTE_SEX_CHAR} thumbv5t${BYTE_SEX_CHAR}"
|
|
|
|
# NOTE: this list contains just the things which rootfs_ipk.bbclass does
|
|
# not add, rootfs_ipk.bbclass evaluates:
|
|
#
|
|
# ipkgarchs="all any noarch ${TARGET_ARCH} ${IPKG_EXTRA_ARCHS} ${MACHINE}"
|
|
#
|
|
# This is a priority ordered list - most desireable architecture at the end,
|
|
# so put <ARM_INSTRUCTION_SET>_ARCHITECTURES at the end and, if
|
|
# THUMB_INTERWORK precede this with the other architectures.
|
|
IPKG_EXTRA_ARCHS = "ixp4xx ${MACHINE} \
|
|
${@(lambda arch_thumb, arch_arm, is_arm, interwork: \
|
|
(interwork and (is_arm and arch_thumb or arch_arm) + ' ' or '') \
|
|
+ '${TARGET_ARCH} ' + (is_arm and arch_arm or arch_thumb)) \
|
|
(bb.data.getVar('THUMB_ARCHITECTURES', d, 1), \
|
|
bb.data.getVar('ARM_ARCHITECTURES', d, 1), \
|
|
bb.data.getVar('ARM_INSTRUCTION_SET', d, 1) != 'thumb', \
|
|
bb.data.getVar('THUMB_INTERWORK', d, 1) == 'yes')} \
|
|
${MACHINE_ARCH} ${MACHINE}${ARCH_BYTE_SEX}"
|
|
|
|
# IPKG_ARCH_LIST [not used]
|
|
# This is used to override the ipkgarchs settings in rootfs_ipk.bbclass, allowing
|
|
# the removal of the raw "${MACHINE}" from the end of the list. ${MACHINE} and
|
|
# ixp4xx are included at the start (lower priority) as the non-byte-sex specific
|
|
# versions.
|
|
IPKG_ARCH_LIST = "all any noarch ixp4xx ${MACHINE} ${IPKG_EXTRA_ARCHS}"
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Package versions
|
|
#-------------------------------------------------------------------------------
|
|
# Warning: these are shared across the different machine and distro
|
|
# configurations but can be overridden therein if required.
|
|
SRCDATE_ipkg-utils ?= "20060106"
|
|
SRCDATE_ipkg-utils-native ?= "20060106"
|
|
SRCDATE_ipkg-link ?= "20060106"
|
|
SRCDATE_irssi ?= "20050930"
|
|
|
|
CVS_TARBALL_STASH = "http://sources.nslu2-linux.org/sources/"
|
|
INHERIT += "nslu2-mirrors"
|
|
|
|
PREFERRED_VERSION_ipkg ?= "0.99.154"
|
|
PREFERRED_VERSION_ipkg-native ?= "0.99.154"
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Board defaults
|
|
#-------------------------------------------------------------------------------
|
|
# These values are board specific but they seem to be common to a large number
|
|
# of boards so are reasonable defaults.
|
|
SERIAL_CONSOLE = "115200 ttyS0"
|
|
KERNEL_CONSOLE = "ttyS0,115200n8"
|
|
USE_VT = "0"
|