| How to add new profile for a subtarget |
| ======================================== |
| There are serveral subtargets in the target/linux/mmp (pxa1826, asr1802s, asr1803...). |
| Here we take 1826 (i.e. Nezha3) as a sample, others are similar. |
| |
| Basically a new profile is created for a new hardware board or a new product model. |
| |
| Steps needed: |
| ---------------------------------------------------------------------------- |
| 1. Add a new profile entry in: "target/linux/mmp/pxa1826/profiles/marvell.mk" |
| For example: |
| |
| "define Profile/NEZHA305 |
| NAME:=NEZHA3-DKB Type A with Nand Flash |
| endef |
| $(eval $(call Profile,NEZHA305)) |
| $(eval $(call Model,NEZHA305,pxa1826p305)) |
| " |
| |
| where NEZHA305 is your <profile_name> |
| |
| 2. Create a defconfig file in "config/" with desired configuration. |
| Meanwhile, create specific obm and uboot codes. |
| |
| The typical steps are |
| ~$ make distclean |
| ~$ ./scripts/feeds update -a |
| ~$ ./scripts/feeds install -a |
| ~$ vi package/boot/obm-mmp/Makefile //need to add profile specific obm |
| ~$ <add specific obm code and build instruction in Loader/Platforms/NZA3/DKB/make_loader_NZA3_LINUX.sh when necessary> |
| ~$ vi package/boot/uboot-mmp/Makefile //need to add profile specific board type in uboot if a new one used here |
| ~$ <add specific uboot code in uboot/board/Marvell/ and uboot/include/configs, also update board config in marvell/uboot/boards.cfg> |
| ~$ cp config/defconfig_pxa1826 .config |
| ~$ make menuconfig // choose the proper profile, bootloaders, pakcages,etc. then exit and save |
| ~$ cp .config config/defconfig_<ARCH_PROFILE> |
| |
| |
| 3. In "target/linux/mmp/image/Makefile": |
| Add new line: Image/BuildKernel/Profile/<profile_name>=$(call Image/Build/DTB,<dts_filename>) |
| |
| and put it in: |
| "ifeq ($(CONFIG_TARGET_mmp_pxa1826),y) |
| Image/BuildKernel/Profile/NEZHA301=$(call Image/Build/DTB,pxa1826-dkb) |
| ... ... |
| Image/BuildKernel/Profile/NEZHA305=$(call Image/Build/DTB,pxa1826-p305) |
| Image/BuildKernel/Profile/<profile_name>=$(call Image/Build/DTB,<dts_filename>) |
| endif" |
| |
| 4. In "rules.mk" |
| Add: |
| "ifeq ($(CONFIG_TARGET_mmp_pxa1826_<profile_name>),y) |
| export ARCH_PROFILE:=<profile_bin_dir_name> |
| export KERNEL_CONFIG_FILE_NAME_APPENDIX:= |
| #you can insert here any profile specific variables and use it in the openwrt makefiles |
| endif" |
| |
| 5. Add dts file for the board. |
| |
| Create <dts_filename>.dts and put in /marvell/linux/arch/arm/boot/dts. |
| |
| Next, in arch/arm/boot/dts/Makefile, add "<dts_filename>.dtb" to create dtb file: |
| |
| "dtb-$(CONFIG_CPU_PXA1826) += pxa1826-dkb.dtb \ |
| <dts_filename>.dtb" |
| |
| 6. Create the BLF files for under swd/NZA3/ for software download and OTA upgrade |
| |
| |
| 7. Create profile sepcific setting files and telephony images at locations below, |
| |
| ~$ package/network/services/lte-telephony/files/nvm/<ARCH_PROFILE> //add fixed NV setting files, can't upgrade via OTA |
| ~$ package/network/services/lte-telephony/files/tel-<if>.config //add telephony config file and update its Makefile |
| ~$ <target/linux/mmp/files/mrd/> //add changeable NV setting files, which can be upgraded via OTA |
| ~$ <target/linux/mmp/pxa1826/oem_fs/> //OEM can also put upgradeable NV settings files here if there is OEM partition |
| ~$ <marvell/lte-telephony/cp/> //add new CP images if required |
| |
| 8. build the profile images and fix any error during the building process |
| |
| ============================================================================================== |
| Additonal steps (optional): |
| |
| 1. If you want to be able to identify your board from the console (e.g. TeraTerm), |
| Then, in file: "target/linux/mmp/base-files/lib/mmp.sh" |
| Function: mmp_board_detect() |
| You need to add a case for your board (profile). |
| ============================================================================================== |
| Note: |
| On v2102 branch, the proman.sh script can help on |
| the step 1 to 4 above(i.e. only cover top repo changes) use existing profile as template, |
| |
| Syntax: ./scripts/proman.sh add <template_profile> <chip> <name> <code> |
| |
| e.g., ./scripts/proman.sh add asr1803p401 asr1828 KAGU 801 |
| |
| Affected files: rules.mk target/linux/mmp/Makefile target/linux/mmp/$CHIP config/defconfig_${CHIP}p$CODE |
| |
| Limitations: obm-mmp, uboot-mmp and telephony packages need manual update. |