源码编译¶
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