| ################################## |
| # Introduction |
| ################################## |
| |
| Using config fragments in the Linux kernel is a supported model in the |
| Linux kernel main line. TI has taken advantage of this model to be able |
| to take a base defconfig and add or remove configuration flags based contained |
| within a config fragment. This allows the base defconfig to be left in tact |
| and helps facilitate and understanding of what config flags can be enabled |
| or disabled. The config fragments drastically reduces the number of merge |
| conflicts when the Linux stable dot release (LTS) is merged back to the |
| integration point as well as merges for TI domain trees. |
| |
| But alas this creates another issue as with the config fragments there is no |
| direct defconfig for customers to build just many, many, many options. |
| |
| Therefore the defconfig_builder script was derived to take a defconfig map file |
| and present a command line interface to the customer to to create a standard |
| defconfig based off the TI integration branches. The customer is walked through |
| steps and if successful a defconfig will be created in the arch/arm/configs directory |
| that can be built. |
| |
| ################################## |
| # Requirements |
| ################################## |
| |
| * awk v1.2 or greater. |
| * bash shell 4.3.11(1)-release or greater. |
| * Coreutils package v8.1 or greater. |
| * grep (GNU grep) v2.16 or greater. |
| * Linux kernel with merge_config script. |
| * sed (GNU sed) v4.2.2 or greater. |
| |
| ################################## |
| # Usage |
| ################################## |
| |
| There is only one option for this script. This option defines the working |
| path to where the Linux kernel resides. |
| |
| -w - Location of the TI Linux kernel |
| -t - Indicates the type of defconfig to build. This will force the |
| defconfig to build without user interaction. |
| -l - List all buildable defconfig options |
| |
| Command line example to generate the TI SDK AM335x processor defconfig automatically |
| without user interaction: |
| |
| ti_config_fragments/defconfig_builder.sh -t ti_sdk_am3x_release |
| |
| Command line Example if building from the ti_config_fragments directory: |
| defconfig_builder.sh -w ../. |
| |
| User interactive command line example: |
| |
| ################################## |
| # Defconfig Map File |
| ################################## |
| |
| The defconfig map file contains the mapping of the defconfig options and the |
| assembly instructions for the defconfig to be created. |
| |
| The file contains keywords and all are *required* to be filled out. |
| |
| classification: - Defines the class of the defconfig which can be Release, Debug, System Test. |
| type: - Defines the type of build. Like debug build, LSK build or RT build |
| defconfig: - Defines the base defconfig config to append the config fragments to |
| config_file: - Defines a file that contains a list of config fragments. If there is not a list then declare "None" for this field. |
| extra_configs: - These are individual config fragments that can be appended to the defconfig by themselves or in addition to |
| the config_file. |
| |
| A Note on ordering of "extra_configs": |
| |
| In general, config fragments should be listed such that the fragment |
| with more restrictive options goes towards the end of the list. This |
| makes sure that those options are not inadvertently overridden by more |
| generically applicable options. More concretely, the following ordering |
| is recommended: |
| |
| 1) Pruning of non-TI features |
| 2) Introduce domain specific features |
| 3) Optimize for an SoC family |
| 4) Optimize for a particular SoC |
| 5) Introduce distribution specific features. (example: Android) |
| |
| Example: |
| |
| This is an example of an AM335x entry that will create a defconfig only for AM335x |
| processors, based on the omap2plus_defconfig. The defconfig_fragment file adds features |
| that have been enabled in the TI integrated kernel. The extra_configs will add in the |
| debug options as well as undefine all processors that are not AM335x. |
| |
| classification: SDK_release type: ti_sdk_am3x_release defconfig: multi_v7_defconfig config_file: None extra_configs: multi_v7_prune.cfg baseport.cfg ipc.cfg connectivity.cfg audio_display.cfg omap_soc.cfg am33xx_only.cfg systemd.cfg |
| |
| ################################## |
| # Defconfig Mapping |
| ################################## |
| |
| #Processor Specific Defconfig options |
| |
| These defconfig options enable the Linux kernel for the targer processor only. Other processor platforms |
| are disabled. The base for each of these defconfigs is the omap2plus_defconfig contained |
| in the arch/arm/configs directory of the kernel. |
| |
| TI Base Integrated Kernel: |
| am335x_only - Adds the configs from the files contained in the defconfig_fragment file. |
| am335x_debug_only - Adds the configs from the files contained in the defconfig_fragment file and adds in the debug options from the debug_options.cfg |
| am43x_only - Adds the configs from the files contained in the defconfig_fragment file. |
| am43x_debug_only - Adds the configs from the files contained in the defconfig_fragment file and adds in the debug options from the debug_options.cfg |
| dra7xx_only - Adds the configs from the files contained in the defconfig_fragment file. |
| dra7xx_debug_only - Adds the configs from the files contained in the defconfig_fragment file and adds in the debug options from the debug_options.cfg |
| |
| Linaro Stable Kernel builds: (These configurations are only available on the TI LSK branch.) |
| am335x_lsk_only - Adds the configs from the files contained in the defconfig_fragment file and adds in the linaro options from the linaro/configs directory |
| am335x_lsk_debug_only - Adds the configs from the files contained in the defconfig_fragment file and adds in the debug options from the debug_options.cfg as |
| well as the linaro options from the linaro/configs directory |
| am43x_lsk_only - Adds the configs from the files contained in the defconfig_fragment file and adds in the linaro options from the linaro/configs directory |
| am43x_lsk_debug_only - Adds the configs from the files contained in the defconfig_fragment file and adds in the debug options from the debug_options.cfg as |
| well as the linaro options from the linaro/configs directory |
| dra7xx_lsk_only - Adds the configs from the files contained in the defconfig_fragment file and adds in the linaro options from the linaro/configs directory |
| dra7xx_lsk_debug_only - Adds the configs from the files contained in the defconfig_fragment file and adds in the debug options from the debug_options.cfg as |
| well as the linaro options from the linaro/configs directory |
| |
| TI Based Real Time Kernel: (These configurations are only available on the TI RT branch.) |
| am335x_rt_only - Adds the configs from the files contained in the rt_defconfig_fragment file. |
| am335x_rt_debug_only - Adds the configs from the files contained in the rt_defconfig_fragment file and adds in the debug options from the debug_options.cfg. |
| am43x_rt_only - Adds the configs from the files contained in the rt_defconfig_fragment file. |
| am43x_rt_debug_only - Adds the configs from the files contained in the rt_defconfig_fragment file and adds in the debug options from the debug_options.cfg. |
| dra7xx_rt_only - Adds the configs from the files contained in the rt_defconfig_fragment file. |
| dra7xx_rt_debug_only - Adds the configs from the files contained in the rt_defconfig_fragment file and adds in the debug options from the debug_options.cfg. |
| |
| #OMAP2+ Defconfig Options |
| |
| These defconfig options use the omap2plus_defconfig in the arch/arm/configs directory as the base defconfig. |
| These options do not disable any processor's or platforms but add additional features that |
| |
| TI Base Integrated Kernel: |
| omap2plus_debug - Takes the omap2plus_defconfig and only adds the debug options from the debug_options.cfg. |
| ti_omap2plus - Adds the configs from the files contained in the defconfig_fragment file. |
| ti_omap2plus_debug - Adds the configs from the files contained in the defconfig_fragment file and adds in the debug options from the debug_options.cfg |
| |
| Linaro Stable Kernel builds: (These configurations are only available on the TI LSK branch.) |
| ti_lsk_omap2plus - Adds the configs from the files contained in the defconfig_fragment file and adds in the linaro options from the linaro/configs directory. |
| ti_lsk_omap2plus_debug - Adds the configs from the files contained in the defconfig_fragment file and adds in the debug options from the debug_options.cfg as |
| well as the linaro options from the linaro/configs directory |
| |
| TI Based Real Time Kernel: (These configurations are only available on the TI RT branch.) |
| ti_rt_omap2plus - Adds the configs from the files contained in the rt_defconfig_fragment file. |
| ti_rt_omap2plus_debug - Adds the configs from the files contained in the rt_defconfig_fragment file and adds in the debug options from the debug_options.cfg. |
| |
| #Keystone Defconfig Options |
| |
| These defconfig options use the keystone_defconfig in the arch/arm/configs directory as the base defconfig. |
| These options do not disable any processor's or platforms but add additional features that |
| |
| TI Base Integrated Kernel: |
| base_keystone_debug - Takes the keystone_defconfig and only adds the debug options from the debug_options.cfg. |
| ti_keystone defconfig - Adds the configs from the files contained in the multi_core_defconfig_fragment file. |
| ti_keystone_debug - Adds the configs from the files contained in the multi_core_defconfig_fragment file and |
| adds in the debug options from the debug_options.cfg. |
| |
| Linaro Stable Kernel builds: (These configurations are only available on the TI LSK branch.) |
| ti_lsk_keystone - Adds the configs from the files contained in the multi_core_defconfig_fragment file and adds in the |
| linaro options from the linaro/configs directory |
| ti_lsk_keystone_debug_only - Adds the configs from the files contained in the multi_core_defconfig_fragment file and adds in the |
| debug options from the debug_options.cfg as well as the linaro options from the linaro/configs directory |
| |
| TI Based Real Time Kernel: (These configurations are only available on the TI RT branch.) |
| ti_rt_keystone - Adds the configs from the files contained in the rt_defconfig_fragment file. |
| ti_rt_keystone_debug - Adds the configs from the files contained in the rt_defconfig_fragment file and adds in the debug options from the debug_options.cfg. |