Difference between revisions of "Software habits"
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
简单记录下Linux sdk上软件的设计思路和规则, 有需要可以往下面添加 | 简单记录下Linux sdk上软件的设计思路和规则, 有需要可以往下面添加 | ||
+ | |||
+ | | ||
| | ||
Line 6: | Line 8: | ||
= Loader/Firmware = | = Loader/Firmware = | ||
− | == | + | == [https://github.com/rockchip-linux/rkbin rkbin] == |
暂时需要注意很多地方我们用了通配符, 所以除了ddr.bin可以传不同频率的, 其他的最好不要一个芯片同时存在两个版本的binary, 不然通配符会选到两个以上的文件。 | 暂时需要注意很多地方我们用了通配符, 所以除了ddr.bin可以传不同频率的, 其他的最好不要一个芯片同时存在两个版本的binary, 不然通配符会选到两个以上的文件。 | ||
− | == | + | == [https://github.com/rockchip-linux/build/blob/debian/mk-uboot.sh build-debian] == |
build debian里是使用rkbin下的prebuilt tool生成需要的文件, 具体步骤和我们wiki上描述的是一样的。 | build debian里是使用rkbin下的prebuilt tool生成需要的文件, 具体步骤和我们wiki上描述的是一样的。 | ||
Line 24: | Line 26: | ||
根据 分区,芯片 封装了 rkdeveloptool的烧写脚本: [https://github.com/rockchip-linux/build/blob/debian/flash_tool.sh https://github.com/rockchip-linux/build/blob/debian/flash_tool.sh] | 根据 分区,芯片 封装了 rkdeveloptool的烧写脚本: [https://github.com/rockchip-linux/build/blob/debian/flash_tool.sh https://github.com/rockchip-linux/build/blob/debian/flash_tool.sh] | ||
− | == | + | == Build-Yocto == |
yocto里制作image和debian差不多 | yocto里制作image和debian差不多 | ||
Line 42: | Line 44: | ||
= Debian = | = Debian = | ||
− | 实质就是live-build上网apt构建基本系统, 可以到ubuntu-build-service下增删软件: https://github.com/rockchip-linux/rk-rootfs-build/blob/master/mk-base-debian.sh | + | 实质就是live-build上网apt构建基本系统, 可以到ubuntu-build-service下增删软件: [https://github.com/rockchip-linux/rk-rootfs-build/blob/master/mk-base-debian.sh https://github.com/rockchip-linux/rk-rootfs-build/blob/master/mk-base-debian.sh] |
− | 实质就是chroot到系统里执行一系列命令来做配置: https://github.com/rockchip-linux/rk-rootfs-build/blob/master/mk-rootfs-stretch.sh | + | 实质就是chroot到系统里执行一系列命令来做配置: [https://github.com/rockchip-linux/rk-rootfs-build/blob/master/mk-rootfs-stretch.sh https://github.com/rockchip-linux/rk-rootfs-build/blob/master/mk-rootfs-stretch.sh] |
− | deb的打包需要docker: https://github.com/rockchip-linux/rk-rootfs-build/tree/master/packages/armhf | + | deb的打包需要docker: [https://github.com/rockchip-linux/rk-rootfs-build/tree/master/packages/armhf https://github.com/rockchip-linux/rk-rootfs-build/tree/master/packages/armhf] |
| | ||
Line 77: | Line 79: | ||
| | ||
+ | |||
+ | = 版本管理 = | ||
+ | |||
+ | 暂时没有很明确的版本的管理, debian都是滚动的, yocto的话通过rev固定住软件版本。 | ||
+ | |||
+ | 注意的是yocto还有上游版本区分,目前我们就是只更新最新的stable branch, 比如最新的stable branch是pyro, 那就yocto的修改就要同时推送master和pyro,直到stable branch变了。 |
Latest revision as of 06:41, 9 October 2017
简单记录下Linux sdk上软件的设计思路和规则, 有需要可以往下面添加
Loader/Firmware
rkbin
暂时需要注意很多地方我们用了通配符, 所以除了ddr.bin可以传不同频率的, 其他的最好不要一个芯片同时存在两个版本的binary, 不然通配符会选到两个以上的文件。
build-debian
build debian里是使用rkbin下的prebuilt tool生成需要的文件, 具体步骤和我们wiki上描述的是一样的。
分区表:https://github.com/rockchip-linux/build/blob/debian/partitions.sh
板级配置: https://github.com/rockchip-linux/build/blob/debian/board_configs.sh
idbloader, uboot.img, trust.img的制作:https://github.com/rockchip-linux/build/blob/debian/mk-uboot.sh
一体image的制作,还有uboot的制作:https://github.com/rockchip-linux/build/blob/debian/mk-image.sh
根据 分区,芯片 封装了 rkdeveloptool的烧写脚本: https://github.com/rockchip-linux/build/blob/debian/flash_tool.sh
Build-Yocto
yocto里制作image和debian差不多
烧写脚本(同debian):https://github.com/rockchip-linux/build/blob/yocto/flash_tool.sh
一体image的制作(包含idbloader) : https://github.com/rockchip-linux/meta-rockchip/blob/master/classes/rockchip-gpt-img.bbclass
ddr, trust, loader的载入和预处理: https://github.com/rockchip-linux/meta-rockchip/blob/master/recipes-bsp/rk-binary/rk-binary-native_git.bb
prebuilt工具 (不过很多native prebuilt工具都不能用在yocto的环境下): https://github.com/rockchip-linux/meta-rockchip/blob/master/recipes-bsp/rk-binary/rk-binary-loader_git.bb
需要注意的是yocto里直接用trust_meger打包完后的trust.img, 因为prebuilt trust_meger放到yocto环境用不起来, 大概是库的版本有差。。所以传了新的bl31.bin, 最好这个trust.img和rk-binary-native_git.bb的rev都更新下。
Debian
实质就是live-build上网apt构建基本系统, 可以到ubuntu-build-service下增删软件: https://github.com/rockchip-linux/rk-rootfs-build/blob/master/mk-base-debian.sh
实质就是chroot到系统里执行一系列命令来做配置: https://github.com/rockchip-linux/rk-rootfs-build/blob/master/mk-rootfs-stretch.sh
deb的打包需要docker: https://github.com/rockchip-linux/rk-rootfs-build/tree/master/packages/armhf
Yocto
yocto的思路是两个layer,meta-rockchip, meta-rockchip-extra。
(yocto要编译测试单独软件可以bitbake linux-rockchip -c compile -f, 然后要重新生成image的话就是再执行一遍bitbake xxximage, bitbake -s可以列出可选择的bitbake对象)
meta-rockchip用于添加, 目的是提供rockchip bsp, 大部分的新增软件和软件配置都放在这里,还有kernel/u-boot相关的软件和配置也都是放到这里。这个layer主要避免放置侵入性的修改(放到extra里)。
板级 芯片级配置 : https://github.com/rockchip-linux/meta-rockchip/tree/master/classes
内核 : https://github.com/rockchip-linux/meta-rockchip/tree/master/recipes-kernel
u-boot : https://github.com/rockchip-linux/meta-rockchip/tree/master/recipes-kernel/linux
meta-rockchip-extra除了放firmware和 rootfs image配置以外, 最主要的功能就是配置”rockchip sdk“发行版-----就是开机启动, 挂载规则,适用什么版本的软件(比如xserver , wayland,gstreamer), 实际开发者在做改动比较大项目的时候, 这个extra是预期要被他们自己的project layer替代的。
发行版配置 : https://github.com/rockchip-linux/meta-rockchip-extra/tree/master/conf
image : https://github.com/rockchip-linux/meta-rockchip-extra/tree/master/recipes-qt/images
自启规则 : https://github.com/rockchip-linux/meta-rockchip-extra/tree/master/recipes-rk/autostart
版本管理
暂时没有很明确的版本的管理, debian都是滚动的, yocto的话通过rev固定住软件版本。
注意的是yocto还有上游版本区分,目前我们就是只更新最新的stable branch, 比如最新的stable branch是pyro, 那就yocto的修改就要同时推送master和pyro,直到stable branch变了。