1 编译步骤
declare -x ARCH="arm"
declare -x CROSS_COMPILE="arm-linux-gnueabihf-"
declare -x PROJECT="2D07"
declare -x RELEASEDIR="/opt/"
./setup_config.sh ./configs/nvr/i2m/8.2.1/spinand.glibc.011a.128
cd kbuild/4.9.84
./release.sh -k ${RELEASEDIR}/kernel -b 011A -p nvr -f spinand -c i2m -l glibc -v 8.2.1
获取image/output/images文件夹为期望文件
2 过程解析
2.1 建立配置文件
./setup_config.sh ./configs/nvr/i2m/8.2.1/spinand.glibc.011a.128
test@ubuntu:/opt/project$ ./setup_config.sh ./configs/nvr/i2m/8.2.1/spinand.glibc.011a.128
PROJ_ROOT = /opt/project
CONFIG_NAME = config_module_list.mk
SOURCE_MK = ../sdk/sdk.mk
KERNEL_MEMADR = $(shell /opt/project/image/makefiletools/bin/mmapparser /opt/project/board/$(CHIP)/mmap/$(MMAP) $(CHIP) E_LX_MEM phyaddr)
KERNEL_MEMLEN = $(shell /opt/project/image/makefiletools/bin/mmapparser /opt/project/board/$(CHIP)/mmap/$(MMAP) $(CHIP) E_LX_MEM size)
KERNEL_MEMADR2 = $(shell /opt/project/image/makefiletools/bin/mmapparser /opt/project/board/$(CHIP)/mmap/$(MMAP) $(CHIP) E_LX_MEM2 phyaddr)
KERNEL_MEMLEN2 = $(shell /opt/project/image/makefiletools/bin/mmapparser /opt/project/board/$(CHIP)/mmap/$(MMAP) $(CHIP) E_LX_MEM2 size)
KERNEL_MEMADR3 = $(shell /opt/project/image/makefiletools/bin/mmapparser /opt/project/board/$(CHIP)/mmap/$(MMAP) $(CHIP) E_LX_MEM3 phyaddr)
KERNEL_MEMLEN3 = $(shell /opt/project/image/makefiletools/bin/mmapparser /opt/project/board/$(CHIP)/mmap/$(MMAP) $(CHIP) E_LX_MEM3 size)
LOGO_ADDR = $(shell /opt/project/image/makefiletools/bin/mmapparser /opt/project/board/$(CHIP)/mmap/$(MMAP) $(CHIP) $(BOOTLOGO_ADDR) miuaddr)
BOOTLOGO_BUFSIZE = $(shell /opt/project/image/makefiletools/bin/mmapparser /opt/project/board/$(CHIP)/mmap/$(MMAP) $(CHIP) $(BOOTLOGO_ADDR) size)
CHIP = i2m
BOARD = 011A
BOARD_NAME = SSC011A-S01A
PRODUCT = nvr
TOOLCHAIN = glibc
TOOLCHAIN_VERSION = 8.2.1
KERNEL_VERSION = 4.9.84
LIBC = libc-2.28
BUSYBOX = busybox-1.20.2-arm-linux-gnueabihf-glibc-8.2.1-dynamic
KERNEL_CONFIG = glibc
IMAGE_CONFIG = spinand.ubifs.p2.partition.config
CUSTOMER_OPTIONS = 011a.201_options.mk
CUSTOMER_TAILOR = nvr_i2m_display_glibc_tailor.mk
MMAP = MMAP_I2M_128M.h
MHAL = i2m
MERGE_BOOT = TRUE
BOOTLOGO_FILE = sigmastar1024_600.jpg
BOOTLOGO_ADDR = E_LX_LOGO_RESERVED_FB
DISP_OUT_NAME = CC0702I50R
EXBOOTARGS =
KERNEL_BOOT_ENV = LX_MEM=$(KERNEL_MEMLEN) mma_heap=mma_heap_name0,miu=0,sz=0x3800000 mma_memblock_remove=1 highres=off $(KERNEL_RESERVED_ENV)
TOOLCHAIN_REL = arm-linux-gnueabihf-
KERNEL_RESERVED_ENV = mmap_reserved=fb,miu=0,sz=0x300000,max_start_off=0x7C00000,max_end_off=0x7F00000
test@ubuntu:/opt/project$
./configs/nvr/i2m/8.2.1/spinand.glibc.011a.128 为依据硬件条件进行配置的信息。
上面从“CHIP = i2m” 到 “TOOLCHAIN_REL = arm-linux-gnueabihf-”的内容
其主要目的是生成 configs/current.configs 文件供后续步骤使用。
2.2 准备文件系统
./release.sh -k /opt/kernel -b 011A -p nvr -f spinand -c i2m -l glibc -v 8.2.1
chip = i2m
arch= arm
product=nvr
board=011A
toolchain_ver=8.2.1
flash_type=spinand
clib=glibc
RELEASEDIR=/opt/
2.2.1 获取工程基本信息
BOARD = 011A
KL_DIR = /opt/kernel
KL_ARCH = arm
KL_API = 1.0.0
KERNEL_ID = ##LX409
PLATFORM_ID = I2
COMMIT = #g#####
2.2.2 清理旧文件
echo " Clean old object..."
rm -Rvf ${chip}/arch/${arch}/boot/
rm -Rvf ${chip}/drivers/sstar
rm -Rvf ${RELEASEDIR}/*Image*
rm -Rvf ./${chip}/configs/${product}/${board}/${clib}/${toolchain_ver}/${flash_type}/include
rm -Rvf ./${chip}/configs/${product}/${board}/${clib}/${toolchain_ver}/${flash_type}/modules/*.ko
echo
2.2.2 准备新的API文件
- 复制kernel目录下的l/drivers/sstar/include 到工程目录/kbuild/4.9.84/i2m/drivers/sstar/include
2.2.3 准备新的内核配置文件
- 复制 kernel/.config’ 到工程目录/kbuild/4.9.84/i2m/configs/nvr/011A/glibc/8.2.1/spinand/
- 复制 kernel/Module.symvers 到工程目录/kbuild/4.9.84/i2m/configs/nvr/011A/glibc/8.2.1/spinand/
- 复制 include/config/auto.conf 到工程目录/kbuild/4.9.84/i2m/configs/nvr/011A/glibc/8.2.1/spinand/include/config
- 复制 kernel/include/generated/* 到工程目录/kbuild/4.9.84/i2m/configs/nvr/011A/glibc/8.2.1/spinand/include/
2.2.4 准备新的内核镜像文件
- 复制 kernel/arch/arm/boot/下所有镜像文件(如uImage.xz)到 工程目录/release/nvr/i2m/011A/glibc/8.2.1/bin/kernel/spinand/
2.2.5 准备新的内核模块文件
- 复制 kernel/modules下所有ko文件到 到工程目录/kbuild/4.9.84/i2m/configs/nvr/011A/glibc/8.2.1/spinand/modules/
3 心得
当工程有对应几个独立文件有更新,可以进行手动更新,跳过本文所有步骤。