我们的整个软件工程目录在:~/workspace/Embedded_kits_rk3308
prebuilts 目录存放 U-Boot、Kernel 编译使用的交叉编译工具链;
u-boot 目录存放着 U-Boot 部分的源码;
kernel 为内核部分源码;
buildroot 目录存放 buildroot 开源项目代码,可定制根文件系统;
device 目录存放板级配置及一些预置文件,开机脚本等;
external 目录存放 SDK 相关库及工具源码;
rkbin 目录存放 Rockchip 平台一些关键性二进制文件(编译生成);
rockdev 执行 mkfirmware.sh 会把系统编译的生成的镜像做打包;
apps 存放我们的应用程序和用户数据;
mkfirmware.sh 脚本可对镜像文件进行打包,并统一拷贝至 rockdev/Image-rkxx 目录;
docs 目录存放 SDK 提供的相关文档;
build.sh 为系统编译脚本,执行可进行 SDK 的完整编译。
标红的是我们本章内容重点关注的地方。
U-Boot
在工程项目目录下运行:
cd u-boot
./make.sh evb-rk3308
编译完,会生成 trust.img、rk3308_loader_v1.26.114.bin、uboot.img 三个镜像文件(回想一下上一节课中烧录的固件中,就有这三个):
如果我们想把编译的数据清除掉,可以运行make distclean:
Kernel
在工程项目目录下运行:
cd kernel
make rk3308_linux_defconfig
make rk3308-evb-amic-v10.img
编译完成后,在kernel 根目录,生成 boot.img 镜像文件:
如果我们想把编译的数据清除掉,可以运行make distclean:
Rootfs
注意,由于rootfs编译时间非常久,和网络速度以及电脑处理器有关系,基本要2个小时,所以我们打包的这个系统工程中,是已经编译过了的,大家不要进行clean操作(不要运行make clean更不要运行make distclean)。
在工程项目目录下运行:
export TARGET_OUTPUT_DIR=/home/lucker/workspace/Embedded_kits_rk3308/buildroot/output/rockchip_rk3308_release
接着输入make进行编译:
编译成功:
编译成功后,在目录buildroot/output/rockchip_rk3308_release/images下可以看到编译出来的固件,我们用的类型是squashfs:
把这个文件重命名为rootfs.img即可(注意路径):
APPs
我们把所有的应用程序放在该目录下,比如有一个程序是用来测试串口1的功能,源码文件:apps/tools/test_uart1.c;我们可以直接进行源码的编译,生成开发板可设别和运行的程序(-lpthread是链接线程库):
aarch64-linux-gnu-gcc test_uart1.c -o test_uart1 -lpthread
目前APPs还没有Makefile的工程管理,在后面的应用篇中,我们会在该目录下搭建Makefile管理的文件结构。
将编译完成后得firmware烧录到硬件中,可以顺利运行起来:
了解硬件和更多资料可点击:点击了解
新建一个物联网行业交流学习QQ群,感兴趣可加:928840648