buildroot应用开发流程

我用的firefly rockchip系列芯片的SDK,这个SDK可以制作芯片系统的所有文件,虽然给的链接是rk3399-jd4版本的SDK,但是在一个SDK是能够编译所有rk系列芯片的linux固件的。这个SDK既可以制作ubuntu,debian等linux固件,也可以制作buildroot固件。SDK的架构如下: 

├── linux_sdk
│   ├── app
│   ├── buildroot buildroot根文件系统的编译目录
│   ├── build.sh -> device/rockchip/common/build.sh 全自动编译脚本
│   ├── device 编译相关配置文件
│   ├── distro debian根文件系统生成目录
│   ├── docs 文档
│   ├── envsetup.sh -> buildroot/build/envsetup.sh
│   ├── external 存放文件系统工具、demo等源码
│   ├── kernel 内核
│   ├── Makefile -> buildroot/build/Makefile
│   ├── mkfirmware.sh -> device/rockchip/common/mkfirmware.sh rockdev链接更新脚本
│   ├── prebuilts 存放编译工具
│   ├── rkbin 存放初始化ddr的.bin文件
│   ├── rkflash.sh -> device/rockchip/common/rkflash.sh 烧写脚本
│   ├── debian debian根文件系统编译目录
│   ├── tools 烧写、打包工具
│   └── u-boot u-boot

 buildroot普通开发的一般流程是:

1,在linux_sdk目录下使用source envsetup.sh命令选择芯片,比如用的3399就选择44,make menuconfig配置依赖环境

2,在buildroot目录下 make,先把交叉编译环境默认的组件全部编译完,大概要花好几个小时。

3,在linux_sdk目录下 ./mkfirmware.sh 就可以在rockdev目录下生成buildroot的全套固件,也可以./build.sh直接一键编译打包

4,如果自己有app应用要加进buildroot,就要:

 

    1)在linux_sdk/buildroot/package下面或者linux_sdk/buildroot/package/rockchip目录下面写配置连接文件.

~/firefly/linux_sdk/buildroot/package/rockchip/demo$ tree
.
├── Config.in
└── demo.mk
Config.in://此文件为配置文件,这样就能在make menuconfig里面搜索到BR2_PACKAGE_DEMO开关
config BR2_PACKAGE_DEMO
	bool "rockchip demo"


demo.mk://此文件为链接文件,make的时候源文件所在地
DEMO_SITE = $(TOPDIR)/../external/demo
DEMO_SITE_METHOD = local

define DEMO_INSTALL_TARGET_CMDS
        $(INSTALL) -D -m 755 $(@D)/demo $(TARGET_DIR)/usr/bin/
endef

$(eval $(cmake-package))

    2)在linux_sdk/external下面放app工程文件例如文件夹名为demo

    3)在linux_sdk/buildroot/package/rockchip/Config.in文件中要把刚才app的Config.in加进去

    4)在linux_sdk/buildroot目录下make demo就能单独编译该固件

    5)下载固件的话之前有烧过就不用全部img都烧录进去了,每次修改demo这个工程make好之后直接:

cd ~/firefly/linux_sdk/rockdev
rm rootfs.img
ln -s ../buildroot/output/rockchip_rk3399/images/rootfs.ext4 rootfs.img
sudo ./upgrade_tool ul MiniLoaderAll.bin 
sudo ./upgrade_tool di -p parameter.txt
sudo ./upgrade_tool di -rootfs rootfs.img
sudo ./upgrade_tool rd

 

    或者,如果你的工程不是系统库文件,是可以直接./跑起来的话,那么直接把生成好的可执行文件拷贝到机器上就行,例如:

adb push ../buildroot/output/rockchip_rk3399/build/demo/ /userdata/demo

 

buildroot移植开源库修改流程:

这里说一下menuconfig里面支持的库选项比如opencv,menuconfig里面没有的话就要按上面的流程来了。

1,在menuconfig里面把opencv3选好打上勾,将firefly/linux_sdk/buildroot/dl下opencv3-3.4.3.tar.gz拷贝出来,作为你修改源码的主项目

2,修改好源码之后打包成opencv3-3.4.3.tar.gz,替换掉原来的firefly/linux_sdk/buildroot/dl下opencv3-3.4.3.tar.gz

3,将firefly/linux_sdk/buildroot/package/opencv3目录下的opencv3.hash文件删除,这是为了防止校验。接下来make即可

参考:

rockchip linux软件开发手册

瑞芯微linuxSDK全套资料

The Buildroot User Manual

完整的目录结构如下:

~/firefly/linux_sdk$ tree -L 2
.
├── app
│   ├── camera
│   ├── demo
│   ├── gallery
│   ├── music
│   ├── QLauncher
│   ├── settings
│   └── video
├── buildroot
│   ├── arch
│   ├── board
│   ├── boot
│   ├── build
│   ├── CHANGES
│   ├── Config.in
│   ├── Config.in.legacy
│   ├── configs
│   ├── COPYING
│   ├── DEVELOPERS
│   ├── dl
│   ├── docs
│   ├── fs
│   ├── linux
│   ├── Makefile
│   ├── Makefile.legacy
│   ├── output
│   ├── package
│   ├── README
│   ├── support
│   ├── system
│   ├── toolchain
│   └── utils
├── build.sh -> device/rockchip/common/build.sh
├── debian
│   ├── mk-base-debian.sh
│   ├── mk-image.sh
│   ├── mk-rootfs-buster.sh
│   ├── mk-rootfs.sh
│   ├── mk-rootfs-stretch-arm64.sh
│   ├── mk-rootfs-stretch.sh
│   ├── overlay
│   ├── overlay-debug
│   ├── overlay-firmware
│   ├── packages
│   ├── packages-patches
│   ├── readme.md
│   └── ubuntu-build-service
├── device
│   └── rockchip
├── distro
│   ├── Config.in
│   ├── configs
│   ├── download
│   ├── envsetup.sh
│   ├── Makefile
│   ├── make.sh
│   ├── overlay
│   ├── package
│   ├── scripts
│   └── support
├── docs
│   ├── Develop reference documents
│   ├── Linux reference documents
│   ├── Platform support lists
│   ├── RKTools manuals
│   ├── Rockchip Linux软件开发指南.pdf
│   ├── Rockchip 休眠唤醒 开发指南__ V0.1-20160729.pdf
│   └── SoC platform related
├── envsetup.sh -> buildroot/build/envsetup.sh
├── external
│   ├── alsa-config
│   ├── audioservice
│   ├── bluez-alsa
│   ├── camera_engine_cifisp
│   ├── camera_engine_rkisp
│   ├── ffmpeg
│   ├── gst-plugins-rockchip
│   ├── gstreamer-camera
│   ├── gstreamer-rockchip
│   ├── libdrm
│   ├── libmali
│   ├── linux-rga
│   ├── minigui
│   ├── mpp
│   ├── mpv
│   ├── powermanager
│   ├── recovery
│   ├── rgademo
│   ├── rk3399demo
│   ├── rknn_demo
│   ├── rknpu
│   ├── rk_pcba_test
│   ├── rkscript
│   ├── rkssd
│   ├── rkupdate
│   ├── rkwifibt
│   ├── rtspdemo
│   ├── security
│   ├── softapDemo
│   ├── softapServer
│   ├── tensorflow
│   └── zsxl
├── IMAGE
│   ├── RK3399PRO-FIREFLY-AIOJD4_20191205.1727_RELEASE_TEST
│   ├── RK3399PRO-FIREFLY-AIOJD4_20191206.0837_RELEASE_TEST
│   └── RK3399PRO-FIREFLY-AIOJD4_20191206.1611_RELEASE_TEST
├── kernel
│   ├── android
│   ├── arch
│   ├── backported-features
│   ├── block
│   ├── boot.img
│   ├── build.config.cuttlefish.aarch64
│   ├── build.config.cuttlefish.x86_64
│   ├── certs
│   ├── config.ini
│   ├── COPYING
│   ├── CREDITS
│   ├── crypto
│   ├── defconfig
│   ├── Documentation
│   ├── drivers
│   ├── firmware
│   ├── fs
│   ├── include
│   ├── init
│   ├── ipc
│   ├── Kbuild
│   ├── Kconfig
│   ├── kernel
│   ├── kernel.img
│   ├── lib
│   ├── logo.bmp
│   ├── MAINTAINERS
│   ├── Makefile
│   ├── mm
│   ├── modules.builtin
│   ├── modules.order
│   ├── Module.symvers
│   ├── net
│   ├── README
│   ├── REPORTING-BUGS
│   ├── resource.img
│   ├── samples
│   ├── scripts
│   ├── security
│   ├── sound
│   ├── System.map
│   ├── tools
│   ├── upgrade_tool
│   ├── usr
│   ├── verity_dev_keys.x509
│   ├── virt
│   ├── vmlinux
│   ├── vmlinux.o
│   └── zboot.img
├── Makefile -> buildroot/build/Makefile
├── mkfirmware.sh -> device/rockchip/common/mkfirmware.sh
├── prebuilts
│   └── gcc
├── rkbin
│   ├── bin
│   ├── README
│   ├── RKBOOT
│   ├── RKBOOT.ini
│   ├── RKTRUST
│   ├── scripts
│   └── tools
├── rkflash.sh -> device/rockchip/common/rkflash.sh
├── rockdev
│   ├── boot.img -> /home/xxx/firefly/linux_sdk/kernel/boot.img
│   ├── config.ini
│   ├── MiniLoaderAll.bin -> /home/xxx/firefly/linux_sdk/u-boot/rk3399pro_loader_v1.20.115.bin
│   ├── misc.img -> /home/xxx/firefly/linux_sdk/device/rockchip/rockimg/wipe_all-misc.img
│   ├── oem.img
│   ├── parameter.txt -> /home/xxx/firefly/linux_sdk/device/rockchip/rk3399pro/parameter-buildroot.txt
│   ├── recovery.img -> /home/xxx/firefly/linux_sdk/buildroot/output/rockchip_rk3399pro_recovery/images/recovery.img
│   ├── rootfs.img -> /home/xxx/firefly/linux_sdk/buildroot/output/rockchip_rk3399pro/images/rootfs.ext4
│   ├── trust.img -> /home/xxx/firefly/linux_sdk/u-boot/trust.img
│   ├── uboot.img -> /home/xxx/firefly/linux_sdk/u-boot/uboot.img
│   ├── upgrade_tool
│   └── userdata.img
├── tools
│   ├── linux
│   └── windows
└── u-boot
    ├── api
    ├── arch
    ├── board
    ├── cmd
    ├── common
    ├── config.mk
    ├── configs
    ├── disk
    ├── doc
    ├── Documentation
    ├── drivers
    ├── dts
    ├── env
    ├── examples
    ├── fs
    ├── include
    ├── Kbuild
    ├── Kconfig
    ├── lib
    ├── Licenses
    ├── MAINTAINERS
    ├── Makefile
    ├── make.sh
    ├── net
    ├── post
    ├── PREUPLOAD.cfg
    ├── README
    ├── rk3399pro_loader_v1.20.115.bin
    ├── scripts
    ├── snapshot.commit
    ├── spl
    ├── System.map
    ├── test
    ├── tools
    ├── tpl
    ├── trust.img
    ├── u-boot
    ├── u-boot.bin
    ├── u-boot.cfg
    ├── u-boot.cfg.configs
    ├── u-boot.dtb
    ├── u-boot-dtb.bin
    ├── uboot.img
    ├── u-boot.lds
    ├── u-boot.map
    ├── u-boot-nodtb.bin
    ├── u-boot.srec
    └── u-boot.sym

 

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值