H3核心板开发笔记:编译及烧写方式
Posted 丘木木
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了H3核心板开发笔记:编译及烧写方式相关的知识,希望对你有一定的参考价值。
系统配置文件路径:tools/pack/chips/sun8iw7p1/configs/dolphin/sys_config.fex
linux 内核: linux-3.4
u-boot: brandy/u-boot-2011.09
文件系统: buildroot/target/dragonboard/rootfs
固件路径: tools/pack
编译
首次编译,需要导入内核配置,进入 linux3.4 目录,执行:
$ cp h3_defconfig .config
退回到 lichee 目录,再执行
$ ./build.sh config
依次选择: 1 1 0 2
(仅首次编译需要 config,以后就不需要了)
以后再次编译只使用命令:
$ ./build.sh
即完成一次编译
编译完成:
打包固件:
$ ./build.sh pack
固件位置: tools/pack/sun8iw7p1_dragonboard_dolphin.img
编译 u-boot
使用 build.sh 不会编译 u-boot, 因为在 SDK 里已经提供了 u-boot.bin, 通常不需要修改,在 pack 时打包到固件里
如果需要修改 u-boot, 按下面的流程:
进入 u-boot 目录(brandy/u-boot-2011.09),清除编译(仅第一次编译需要)
$ make distclean
选择 H3 平台的配置(仅第一次编译需要)
$ make sun8iw7p1_config
编译:
$ make -j
生成 u-boot-sun8iw7p1.bin自动替换到 tools/pack/chips/sun8iw7p1/bin/u-boot-sun8iw7p1.bin
打包:
$ ./build.sh pack
修改 Linux 内核配置
$ cd linux-3.4
$ make menuconfig ARCH=arm
默认的内核配置文件linux3.4/h3_defconfig
还原默认配置
$ cp h3_defconfig .config
交叉编译器配置
交叉编译器路径 out/sun8iw7p1/dragonboard/common/buildroot/external-toolchain/bin
将编译器加入环境变量,用于编译 Linux 应用程序
$export PATH=$PATH:/home/ql/linux/H3Core/lichee/out/sun8iw7p1/dragonboard/common/buildroot/external-toolchain/bin
导入交叉编译器的环境后,直接使用 arm-linux-gnueabi-gcc 编译应用程序
可以用命令来看下是否成功arm-linux-gnueabi-gcc -v
文件系统定制
文件系统路径:buildroot/target/dragonboard/rootfs
编译脚本:buildroot/target/dragonboard/build.sh
在编译时调用此脚本,主要作用是复制文件到 rootfs 中,或在 rootfs 创建目录或文件,或建立文件连接,修改权限等。
将要放入文件系统的文件或目录放到 extra 目录,在 build.sh 里添加:
cp -rf extra/xxxx rootfs/xxxx
启动脚本:
dragonboard/rootfs/autorun.sh
原路径是 dragonboard/extra/autorun.sh,编译时由脚本拷到 rootfs 中
把要加载驱动模块的命令和需要自启动的程序写在这里
驱动模块路径:
/system/vendor/modules
原路径是 rootfs/lib/modules/3.4.39,运行时由脚本拷到/system/vendor/modules
编译应用程序
单独编译:
导入交叉编译器的环境后,直接使用 arm-linux-gnueabi-gcc 编译
将生成的程序传到板上即可运行,或手动拷贝到 rootfs 的 bin 目录,编译打包
在工程中编译:
参考 buildroot/target/dragonboard/src/testcase/example
将要编译的软件包(以 myapp 为例)放到 testcase 中,
修改 testcase/Makefile,加入
make -C myapp
修改 myapp 中的 Makefile
SRC_ROOT := ../..
LDFLAGS := -lscript
include $(SRC_ROOT)/rule.mk
myapp_objs = myapp.o
.PHONY: all
all: myapp
myapp: $(myapp_objs)
$(LINK_MSG)
$(LINKX)
$(myapp_objs): %.o: %.c
$(COMPILE_MSG)
$(COMPILEX)
在编译系统时,会把 myapp 编译到 rootfs/dragonboard/bin
在 Linux 系统烧写固件
按照 LiveSuit_For_Linux 安装包中的教程安装 LiveSuit,根据本机的系统位数选择安装 32 位或 64 位版本。
可执行程序路径: ~/Bin/LiveSuit/LiveSuit.sh运行 LiveSuit
$ sudo ./LiveSuit.sh
选择打包好的固件
给开发板断电,按住板左上方的 UBOOT 按键, 将 USB 线连接设备的 MicroUSB 口至 PC机, 会自动检测到设备(此时可以松开按键), 弹出窗口提示“是否格式化数据分区”: 选 Yes,进行格式化烧写,清除 data 目录;选 No,进行非格式化烧写,不清除 data 目录。
如果没有检测到设备, 请重新尝试上述步骤
烧写的过程需要 1 分钟左右
在 Windows 系统烧写固件
安装 PhonixSuit 软件, 打开后选择“一键刷机”,点击“浏览” 选择要烧写的固件文件,选中“格式化”进行格式化烧写;如果不想擦除 data 分区,就取消“格式化”
给开发板断电,按住板左上方的 UBOOT 按键,将 USB 线连接设备的 MicroUSB 口至 PC机, 会自动检测到设备(此时可以松开音量键), 提示开始烧写固件, 如果没有检测到设备,请重新尝试上述步骤
固件烧写成功后,拔掉 USB 线,再给开发板上电
以上是关于H3核心板开发笔记:编译及烧写方式的主要内容,如果未能解决你的问题,请参考以下文章
Linux学习笔记四:OTG方式为itop4412烧写安卓系统