源码编译 Firefly 提供完整的 SDK 方便用户开发。 下载源码 源码获取请联系我们 搭建环境 配置默认使用 bash sudo dpkg-reconfigure dash #选择no 安装软件包 sudo apt-get install make libc6:i386 lib32z1 lib32stdc++6 zlib1g-dev libncurses5-dev \ ncurses-term libncursesw5-dev g++ u-boot-tools:i386 texinfo texlive gawk libssl-dev openssl \ bc 创建/etc/ld.so.preload 文件 echo "" > /etc/ld.so.preload #解决 64bit linux server 上某些第三方库编译失败的问题。 安装交叉编译器 安装 aarch64 交叉编译器: 1. 文档工具包,拷贝出` aarch64-himix100-linux.tgz` 2. 解压` tar -xvf aarch64-himix100-linux.tgz` 3. 安装交叉编译工具` sudo ./aarch64-himix100-linux.install` 安装 arm-none-eabi 交叉编译器: 1. 文档工具包,拷贝出` gcc-arm-none-eabi-4_9-2015q3.tgz 2. 解压` tar -xvf gcc-arm-none-eabi-4_9-2015q3.tgz` 3. 安装交叉编译工具` sudo ./gcc-arm-none-eabi-4_9-2015q3.install` PS: 官方使用"Ubuntu 18.04"安装编译验证成功。如选择其他 Linux 操作系统推荐 使用较新版本。 SDK 编译 下面所有步骤如没有特殊说明都是在 SDK 的"根目录"下进行 非异构 ./build.sh prepare Firefly3559A4G-multi-core_defconfig 配置 SDK 配置 ./build.sh osdrv 编译海思原始 SDK ./build.sh mpp_sample 编译 mpp sample ./build.sh mali_ko 编译 Mali 进入 Hi3559AV100_SDK/drv/interdrv make 编译外设驱动 ./build.sh rootfs hi3559a_smp_defconfig 配置 Buildroot 配置 ./build.sh rootfs 编译 Buildroot SDK ./build.sh sd 生成 SD 卡固件 output/Firefly-3559A4G_linux/images/sd 固件 异构 ./build.sh prepare Firefly3559A4G-big-little_defconfig 配置 SDK 配置 ./build.sh osdrv 编译海思原始 SDK ./build.sh mpp_sample 编译 mpp sample ./build.sh mali_ko 编译 Mali cd Hi3559AV100_SDK/drv/interdrv; make;cd - 编译外设驱动 ./build.sh liteos_a53 编译 liteos sample ./build.sh rootfs hi3559a_smp_defconfig 配置 Buildroot 配置 ./build.sh rootfs 编译 Buildroot SDK ./build.sh sd 生成 SD 卡固件 output/Firefly-3559A4G_linux/images/sd 固件 PS: 格式化 SD 卡后,sd 目录下所有文件拷贝到 SD 卡中,SD 升级卡制作完成。 编译重构某个模块可以使用 rebuild 来完成,如: 编译 kernel: ./build.sh kernel-hisilicon-rebuild;./build.sh hiatf-rebuild 编译 u-boot: ./build.sh u-boot-rebuild 关于 Hi3559av100 平台的所有 Buildroot Package 都放在了buildroot- external/package/中 添加应用 以 settings-qt QT 应用为例。 开发好自己的 QT 应用并且把项目工程复制到 sdk/app 中 cp settings ./app/ -rf //settings 为自己开发的 QT 应用 创建 Package 文件夹 cd sdk/buildroot-external/package mkdir settings-qt 在文件夹内添加 Config.in vim Config.in config BR2_PACKAGE_SETTINGS_QT //必须和文件夹名字一致 bool "Settings Examples" help Settings examples in Qt 5. 在文件夹内添加 settings_app.mk vim settings_app.mk SETTINGS_QT_VERSION = 1.0 //所有 SETTINGS_QT 都需要与文件夹名匹配 SETTINGS_QT_DEPENDENCIES = qt5base HiMPP SETTINGS_QT_VERSION = master SETTINGS_QT_SITE_METHOD = local SETTINGS_QT_SITE = ../app/settings define SETTINGS_QT_CONFIGURE_CMDS (cd $(@D); \ $(QT5_QMAKE); \ ) endef define SETTINGS_QT_BUILD_CMDS $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) endef define SETTINGS_QT_INSTALL_TARGET_CMDS $(INSTALL) -D -m 0755 $(@D)/settings $(TARGET_DIR)/usr/bin/settings //编译后生成的可执行文件 $(INSTALL) -D -m 0755 $(@D)/setting.desktop $(TARGET_DIR)/usr/share/applications //桌面应用配置文件 $(INSTALL) -D -m 0755 $(@D)/image/setting/setting_icon.png $(TARGET_DIR)/usr/share/icons/setting_icon.png //桌面图标 endef $(eval $(generic-package)) 修改顶层 Config.ini cd buildroot-external vim Config.in silicon Hi3559AV100" menu "Host tools" source "$BR2_EXTERNAL_HI3559A_PATH/package/hiprepare/Config.in" source "$BR2_EXTERNAL_HI3559A_PATH/package/ext4_utils/Config.in" source "$BR2_EXTERNAL_HI3559A_PATH/package/hiregbin/Config.in" endmenu source "$BR2_EXTERNAL_HI3559A_PATH/package/HiMPP/Config.in" source "$BR2_EXTERNAL_HI3559A_PATH/package/mali/Config.in" source "$BR2_EXTERNAL_HI3559A_PATH/package/mali_eglfs/Config.in" source "$BR2_EXTERNAL_HI3559A_PATH/package/examples-qt5/Config.in" source "$BR2_EXTERNAL_HI3559A_PATH/package/amp-examples/Config.in" source "$BR2_EXTERNAL_HI3559A_PATH/package/hisyslink/Config.in" source "$BR2_EXTERNAL_HI3559A_PATH/package/kernel-hisilicon/Config.in" source "$BR2_EXTERNAL_HI3559A_PATH/package/hiatf/Config.in" source "$BR2_EXTERNAL_HI3559A_PATH/package/u-boot/Config.in" source "$BR2_EXTERNAL_HI3559A_PATH/package/hiipcm/Config.in" source "$BR2_EXTERNAL_HI3559A_PATH/package/liteos-loader/Config.in" source "$BR2_EXTERNAL_HI3559A_PATH/package/firefly-app/Config.in" + source "$BR2_EXTERNAL_HI3559A_PATH/package/settings-qt/Config.in" source "$BR2_EXTERNAL_HI3559A_PATH/package/multivideoplayer/Config.in" source "$BR2_EXTERNAL_HI3559A_PATH/package/svpsample/Config.in" endmenu 添加编译项 cd output/Firefly_XXXXX make menuconfig 输入 ‘/’ 搜索 SETTINGS_QT_BUILD_CMDS 打开 SETTINGS_QT_BUILD_CMDS make savedefconfig 重新编译 rootfs