您的位置:首页 > 移动开发 > Android开发

MSD6A801 android4.2.1 full_mstarkaisers_dvbt-userdebug编译平台搭建-编译-OTA升级

2014-03-28 15:42 281 查看
编译服务器原有Amlogic 8726mx编译,现接入MStar6a801编译

toolchain必须各家用各家的

msd工程存放路径如下:



程序总共涉及4部分:

boot: Mboot_STB_Kaiser

kernel: KERN-3.1.10.config_kaiser_SMP_android_emmc

android: jb_4.2

TV: Supernova



另外:

images是./releaseimage.sh临时产生的目录,供tftp 100M网线升级使用

toolchain是自己创建的目录,用以存放该平台的交叉编译工具链

envinstall.sh也是自己创建的脚本用以配置toolchain在每次终端中生效,编译之前先配置一下环境source envinstall.sh或. envinstall.sh,这样就避免多平台同编译服务器上冲突的问题:

envinstall.sh如下:

#!/bin/bash
#BASE_PATH=/usr/lib/jdk/jdk1.6.0_45/bin:/usr/lib/jdk/jdk1.6.0_45/jre/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
BASE_PATH=$PATH
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
echo "Script by kll."
echo "基础环境如下:"
echo $BASE_PATH
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
echo "新增MStar交叉编译环境如下:"
#export PATH=/opt/msd/arm-2010.09/bin:$PATH
#export PATH=/opt/msd/arm-2011.03/bin:$PATH
export PATH=$PWD/toolchain/arm-2010.09/bin:$PATH
export PATH=$PWD/toolchain/arm-2011.03/bin:$PATH
echo $PATH
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"


公共部分,只把jdk放到/usr/bin/jdk,在/etc/profile中配置全局的jdk到PATH

Amlogic平台的toolchain配置也类似放在他专属的工程目录中



这一点回想起AllWinner做得很好,工程带toolchain一起

MSD6A801编译记录

编Mboot

cd MBoot_STB_Kaiser/sboot/

cp .config.kaiser.android.170a_SZ.emmc .config

make menuconfig

make clean

make

输出文件:[MBoot_STB_Kaiser/sboot/bin/mboot_signed.bin]

cd -

cp MBoot_STB_Kaiser/sboot/bin/mboot_signed.bin images/jb_4.2/mstarkaisers_dvbt/ //第一次编译代码时,目标目录必须等编完android后运行./releaseimage.sh才会出现

编Kernel

cd KERN-3.1.10.config_kaiser_SMP_android_emmc/3.1.10/

./genlink.sh

cp .config_kaiser_SMP_android_emmc .config

make

输出文件:[KERN-3.1.10.config_kaiser_SMP_android_emmc/3.1.10/arch/arm/boot/zImage]

cd -

cp KERN-3.1.10.config_kaiser_SMP_android_emmc/3.1.10/arch/arm/boot/zImage jb_4.2/device/mstar/mstarkaiser_stb/kernel

编译android

cd jb_4.2/

. env.sh

lunch 13 //full_mstarkaisers_dvbt-userdebug

make

./releaseimage.sh

cd -

编Supernova

cd Supernova/projects/

. buildsettings/build_K3S_187A_TVOS.sh

make rebuild_all

make image_all

cd -

cp Supernova/target/dvb_box.k3s/images/ext4/*.img images/jb_4.2/mstarkaisers_dvbt/

android中只打包内核镜像boot.img

make bootimage

[Target boot image: out/target/product/mstarkaisers_dvbt/boot.img]

images/jb_4.2/mstarkaisers_dvbt/ 供tftp升级系统

进入boot命令行

mstar //按auto_update.txt升级,当然也可以自定义txt

mstar scripts/[[mboot_signed //比如我这里只升级mboot,这样也可以

***ota升级文件

make otapackage

ota包拷贝到u盘之前改一下名字

mv jb_4.2/out/target/product/mstarkaisers_dvbt/full_mstarkaisers_dvbt-ota-V01.00.00.zip jb_4.2out/target/product/mstarkaisers_dvbt/update_signed.zip

第一次make不能带-j参数 //MStar第一次make不能-j,以下就是-j的下场(段错误),只要第一次make成功过后就可以make -j了

target Executable: uim-sysfs (out/target/product/mstarkaiser_stb/obj/EXECUTABLES/uim-sysfs_intermediates/LINKED/uim-sysfs)

target Strip: vfp-crasher (out/target/product/mstarkaiser_stb/obj/EXECUTABLES/vfp-crasher_intermediates/vfp-crasher)

target SharedLib: libdvm_assert (out/target/product/mstarkaiser_stb/obj/SHARED_LIBRARIES/libdvm_assert_intermediates/LINKED/libdvm_assert.so)

target SharedLib: libdvm_interp (out/target/product/mstarkaiser_stb/obj/SHARED_LIBRARIES/libdvm_interp_intermediates/LINKED/libdvm_interp.so)

target SharedLib: libdvm_sv (out/target/product/mstarkaiser_stb/obj/SHARED_LIBRARIES/libdvm_sv_intermediates/LINKED/libdvm_sv.so)

段错误

build01@build-pc:~/msd/6a801/jb_4.2$ Image Name: MStar-linux(recovery)

Created: Thu Mar 27 16:41:15 2014

Image Type: ARM Linux Multi-File Image (uncompressed)

Data Size: 6525542 Bytes = 6372.60 kB = 6.22 MB

Load Address: 20208000

Entry Point: 20208000

Contents:

Image 0: 3785336 Bytes = 3696.62 kB = 3.61 MB

Image 1: 2740194 Bytes = 2675.97 kB = 2.61 MB

注意:某些输入文件使用或覆盖了已过时的 API。

注意:要了解详细信息,请使用 -Xlint:deprecation 重新编译。

注意:某些输入文件使用了未经检查或不安全的操作。

注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。

4 警告

build01@build-pc:~/msd/6a801/jb_4.2$

android make不会主动替换更新的内核镜像,类似问题需要修改镜像文件时间戳

touch 拷贝到android目录中的镜像文件名,eg:touch device/mstar/mstarkaiser_stb/kernel










                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: