summaryrefslogtreecommitdiffstats
path: root/documentation
diff options
context:
space:
mode:
authorScott Rifenbark <scott.m.rifenbark@intel.com>2012-12-27 14:23:23 -0600
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-01-16 15:59:11 +0000
commitfe1b20f80a2bd1c8c19b8cdb59c04ec2095794d4 (patch)
tree3bef9ec67d42ea9ebda1be8e52ffe04dfe234723 /documentation
parentd675ef08784d8bd27ac9010b8561158b97f35505 (diff)
downloadpoky-fe1b20f80a2bd1c8c19b8cdb59c04ec2095794d4.tar.gz
kernel-dev: Formatted the "BSP Descriptions" section.
(From yocto-docs rev: 9cfccb3372f47094479fb0a5ad095cf2b46f906e) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'documentation')
-rw-r--r--documentation/kernel-dev/kernel-dev-advanced.xml252
1 files changed, 147 insertions, 105 deletions
diff --git a/documentation/kernel-dev/kernel-dev-advanced.xml b/documentation/kernel-dev/kernel-dev-advanced.xml
index e8587eee52..ee90df2732 100644
--- a/documentation/kernel-dev/kernel-dev-advanced.xml
+++ b/documentation/kernel-dev/kernel-dev-advanced.xml
@@ -1016,133 +1016,175 @@ Note: It is not strictly necessary to create a ktype scc file. The BSP file can
1016 <title>BSP Descriptions</title> 1016 <title>BSP Descriptions</title>
1017 1017
1018 <para> 1018 <para>
10193.3.5 BSP Descriptions 1019 BSP descriptions combine kernel types with hardware-specific
1020---------- 1020 features.
1021BSP descriptions combine kernel types (see 3.3.4) with hardware-specific 1021 The hardware specific portion is typically defined
1022features (see 3.3.3). The hardware specific portion is typically defined 1022 independently, and then aggregated with each supported kernel
1023independently, and then aggregated with each supported kernel type. Consider a 1023 type.
1024simple example: 1024 Consider a simple example:
1025 1025 <literallayout class='monospaced'>
1026mybsp.scc: 1026 mybsp.scc:
1027 define KMACHINE mybsp 1027 define KMACHINE mybsp
1028 define KTYPE standard 1028 define KTYPE standard
1029 define KARCH i386 1029 define KARCH i386
1030
1031 kconf mybsp.cfg
1032
1033Every BSP description should include the definition of the KMACHINE, KTYPE, and
1034KARCH variables. These variables allow the build-system to identify this
1035description as meeting the criteria set by the recipe being built. This
1036particular description can be said to support the "mybsp" machine for the
1037"standard" kernel type and the "i386" architecture. Note that there is no hard
1038link between the KTYPE and a ktype description file. If you do not have kernel
1039types defined in your meta-data, you only need to ensure that the recipe
1040LINUX_KERNEL_TYPE and the KTYPE here match.
1041
1042NOTE: future versions of the tooling make the specification of KTYPE in the BSP
1043 optional.
1044
1045If you did want to separate your kernel policy from your hardware configuration,
1046you could do so by specifying a kernel type, such as "standard" (see 3.3.4) and
1047including that description in the BSP description. You might also have multiple
1048hardware configurations that you aggregate into a single hardware description
1049file which you could include here, rather than referencing a single .cfg file.
1050Consider the following:
1051 1030
1052mybsp.scc: 1031 kconf mybsp.cfg
1053 define KMACHINE mybsp 1032 </literallayout>
1054 define KTYPE standard 1033 Every BSP description should include the definition of the
1055 define KARCH i386 1034 <filename>KMACHINE</filename>, <filename>KTYPE</filename>,
1035 and <filename>KARCH</filename> variables.
1036 These variables allow the build-system to identify this
1037 description as meeting the criteria set by the recipe being built.
1038 This particular description can be said to support the "mybsp"
1039 machine for the "standard" kernel type and the "i386" architecture.
1040 Be aware that there is no hard link between the
1041 <filename>KTYPE</filename> and a ktype description file.
1042 If you do not have kernel types defined in your metadata, you
1043 only need to ensure that the recipe
1044 <filename>LINUX_KERNEL_TYPE</filename> and the
1045 <filename>KTYPE</filename> here match.
1046 <note>
1047 Future versions of the tooling make the specification of
1048 <filename>KTYPE</filename> in the BSP optional.
1049 </note>
1050 </para>
1056 1051
1057 include standard.scc 1052 <para>
1058 include mybsp.scc 1053 If you did want to separate your kernel policy from your
1054 hardware configuration, you could do so by specifying a kernel
1055 type, such as "standard" (see 3.3.4) and including that
1056 description in the BSP description.
1057 You might also have multiple hardware configurations that you
1058 aggregate into a single hardware description file which you
1059 could include here, rather than referencing a single
1060 <filename>.cfg</filename> file.
1061 Consider the following:
1062 <literallayout class='monospaced'>
1063 mybsp.scc:
1064 define KMACHINE mybsp
1065 define KTYPE standard
1066 define KARCH i386
1059 1067
1060In the above example standard.scc aggregates all the configuration fragments, 1068 include standard.scc
1061patches, and features that make up your standard kernel policy whereas mybsp.scc 1069 include mybsp.scc
1062aggregates all those necessary to support the hardware available on the mybsp 1070 </literallayout>
1063machine. For information on how to break a complete .config into the various 1071 </para>
1064fragments, see 2.3.1.
1065 1072
1066Many real-world examples are more complex. Like any other scc file, BSP 1073 <para>
1067descriptions can aggregate features. Consider the Fish River Island II (fri2) 1074 In the above example, <filename>standard.scc</filename>
1068BSP definitions from the linux-yocto-3.4 repository: 1075 aggregates all the configuration fragments, patches, and
1076 features that make up your standard kernel policy whereas
1077 <filename>mybsp.scc</filename> aggregates all those necessary
1078 to support the hardware available on the <filename>mybsp</filename>
1079 machine.
1080 For information on how to break a complete <filename>.config</filename>
1081 into the various, see the
1082 "<link linkend='generating-configuration-files'>Generating Configuration Files</link>"
1083 section.
1084 </para>
1069 1085
1070fri2.scc: 1086 <para>
1071 kconf hardware fri2.cfg 1087 Many real-world examples are more complex.
1088 Like any other <filename>scc</filename> file, BSP
1089 descriptions can aggregate features.
1090 Consider the Fish River Island II (fri2)
1091 BSP definitions from the linux-yocto-3.4 repository:
1092 <literallayout class='monospaced'>
1093 fri2.scc:
1094 kconf hardware fri2.cfg
1072 1095
1073 include cfg/x86.scc 1096 include cfg/x86.scc
1074 include features/eg20t/eg20t.scc 1097 include features/eg20t/eg20t.scc
1075 include cfg/dmaengine.scc 1098 include cfg/dmaengine.scc
1076 include features/ericsson-3g/f5521gw.scc 1099 nclude features/ericsson-3g/f5521gw.scc
1077 include features/power/intel.scc 1100 include features/power/intel.scc
1078 include cfg/efi.scc 1101 include cfg/efi.scc
1079 include features/usb/ehci-hcd.scc 1102 include features/usb/ehci-hcd.scc
1080 include features/usb/ohci-hcd.scc 1103 include features/usb/ohci-hcd.scc
1081 include features/iwlwifi/iwlwifi.scc 1104 include features/iwlwifi/iwlwifi.scc
1082 1105 </literallayout>
1083The fri2.scc description file includes a hardware configuration fragment 1106 </para>
1084(fri2.cfg) specific to the fri2 BSP as well as several more general
1085configuration fragments and features enabling hardware found on the fri2. This
1086description is then included in each of the three machine-ktype descriptions
1087(standard, preempt-rt, and tiny). Consider the fri2 standard description:
1088 1107
1089fri2-standard.scc: 1108 <para>
1090 define KMACHINE fri2 1109 The <filename>fri2.scc</filename> description file includes
1091 define KTYPE standard 1110 a hardware configuration fragment
1092 define KARCH i386 1111 (<filename>fri2.cfg</filename>) specific to the fri2 BSP
1112 as well as several more general configuration fragments and
1113 features enabling hardware found on the fri2.
1114 This description is then included in each of the three
1115 machine-ktype descriptions (standard, preempt-rt, and tiny).
1116 Consider the fri2 standard description:
1117 <literallayout class='monospaced'>
1118 fri2-standard.scc:
1119 define KMACHINE fri2
1120 define KTYPE standard
1121 define KARCH i386
1093 1122
1094 include ktypes/standard/standard.scc 1123 include ktypes/standard/standard.scc
1095 branch fri2 1124 branch fri2
1096 1125
1097 git merge emgd-1.14 1126 git merge emgd-1.14
1098 1127
1099 include fri2.scc 1128 include fri2.scc
1100 1129
1101 # Extra fri2 configs above the minimal defined in fri2.scc 1130 # Extra fri2 configs above the minimal defined in fri2.scc
1102 include cfg/efi-ext.scc 1131 include cfg/efi-ext.scc
1103 include features/drm-emgd/drm-emgd.scc 1132 include features/drm-emgd/drm-emgd.scc
1104 include cfg/vesafb.scc 1133 include cfg/vesafb.scc
1105 1134
1106 # default policy for standard kernels 1135 # default policy for standard kernels
1107 include cfg/usb-mass-storage.scc 1136 include cfg/usb-mass-storage.scc
1108 1137 </literallayout>
1109Note the "include fri2.scc" line about midway through the file. By defining all 1138 The "include fri2.scc" line about midway through the file defines
1110hardware enablement common to the BSP for all kernel types, duplication is 1139 all hardware enablement common to the BSP for all kernel types.
1111significantly reduced. 1140 Including the statement significantly reduces duplication.
1112 1141 </para>
1113This description introduces a few more variables and commands worthy of further
1114discussion. Note the "branch" command which is used to create a
1115machine-specific branch into which source changes can be applied. With this
1116branch set up, the "git merge" command uses the git SCM to merge in a feature
1117branch "emgd-1.14". This could also be handled with the patch command, but for
1118commonly used features such as this, feature branches can be a convenient
1119mechanism (see 3.5).
1120 1142
1121Next consider the fri2 tiny description: 1143 <para>
1144 This description introduces a few more variables and commands
1145 worthy of further discussion.
1146 Notice the "branch" command, which is used to create a
1147 machine-specific branch into which source changes can be applied.
1148 With this branch set up, the <filename>git merge</filename> command
1149 uses Git to merge in a feature branch "emgd-1.14".
1150 This could also be handled with the patch command, but for
1151 commonly used features such as this, feature branches can be a
1152 convenient mechanism.
1153 See the "<link linkend='feature-branches'>Feature Branches</link>"
1154 section for more information.
1155 </para>
1122 1156
1123fri2-tiny.scc: 1157 <para>
1124 define KMACHINE fri2 1158 Now consider the Fish River Island 2 tiny
1125 define KTYPE tiny 1159 (<filename>fri2-tiny</filename>) BSP description:
1126 define KARCH i386 1160 <literallayout class='monospaced'>
1161 fri2-tiny.scc:
1162 define KMACHINE fri2
1163 define KTYPE tiny
1164 define KARCH i386
1127 1165
1128 include ktypes/tiny/tiny.scc 1166 include ktypes/tiny/tiny.scc
1129 branch fri2 1167 branch fri2
1130 1168
1131 include fri2.scc 1169 include fri2.scc
1170 </literallayout>
1171 As you might expect, the tiny description includes quite a bit less.
1172 In fact, it includes only the minimal policy defined by the
1173 tiny ktype and the hardware-specific configuration required for
1174 boot and the most basic functionality of the system as defined in
1175 the base fri2 description file.
1176 </para>
1132 1177
1133As you might expect, the tiny description includes quite a bit less. In fact, 1178 <para>
1134it includes only the minimal policy defined by the tiny ktype and the 1179 Notice again the three critical variables: <filename>KMACHINE</filename>,
1135hardware-specific configuration required for boot and the most basic 1180 <filename>KTYPE</filename>, and <filename>KARCH</filename>.
1136functionality of the system as defined in the base fri2 description file. Note 1181 Of these, only the <filename>KTYPE</filename> has changed.
1137again the three critical variables: KMACHINE, KTYPE, and KARCH. Of these, only 1182 It is now set to "tiny".
1138the KTYPE has changed, now set to "tiny".
1139 </para> 1183 </para>
1140 1184
1141 <para> 1185 <para>
1142 Original text: 1186 Original text:
1143 <literallayout class='monospaced'> 1187 <literallayout class='monospaced'>
11443.3.5 BSP Descriptions
1145----------
1146BSP descriptions combine kernel types (see 3.3.4) with hardware-specific 1188BSP descriptions combine kernel types (see 3.3.4) with hardware-specific
1147features (see 3.3.3). The hardware specific portion is typically defined 1189features (see 3.3.3). The hardware specific portion is typically defined
1148independently, and then aggregated with each supported kernel type. Consider a 1190independently, and then aggregated with each supported kernel type. Consider a