R11
SDK User Manual
第 1 页 共 13 页
文档履历
版本号
V1.0
日期
2017/12/27
制/修订人
制/修订记录
初始版本
第 2 页 共 13 页
目 录
1.. 概述..........................................................................................................................................................................4
1.1. 编写目的.......................................................................................................................................................4
1.2. 适用范围.......................................................................................................................................................4
1.3. 相关人员.......................................................................................................................................................4
1.4. 名词解释.......................................................................................................................................................4
2.. SDK 的使用..............................................................................................................................................................5
3.. 创建和移植软件包................................................................................................................................................. 6
3.1. 概述...............................................................................................................................................................6
3.2. Makefile 范例................................................................................................................................................ 6
3.3. 软件的自启动设置...................................................................................................................................... 8
3.3.1. 概述....................................................................................................................................................8
3.3.2. 初始化脚本简介............................................................................................................................... 8
3.3.3. 手动调试初始化脚本....................................................................................................................... 8
3.3.4. SysV 式的初始化脚本.......................................................................................................................8
3.3.5. Procd 式的初始化脚本......................................................................................................................9
3.4. 软件的选择与调试...................................................................................................................................... 9
3.4.1. 软件的选择....................................................................................................................................... 9
3.4.2. 软件的调试..................................................................................................................................... 10
4.. 分区与挂载............................................................................................................................................................12
4.1. 分区定义.....................................................................................................................................................12
4.2. 默认挂载点................................................................................................................................................ 12
5.. Declaration..............................................................................................................................................................13
第 3 页 共 13 页
1.1. 概述概述
1.1. 编写目的
R11 Tina Linux 用户手册,介绍如何在 Tina SDK 的平台上开发应用
1.2. 适用范围
Tina Linux V2.5 版本
1.3. 相关人员
Tina Linux 开发人员;Tina Linux 产品开发人员
1.4. 名词解释
R11,全志 R 系列 soc 产品
banjo_R11_pref1, R11 在 Tina 方案名
第 4 页 共 13 页
2.2. SDKSDK 的使用的使用
Tins SDK 的编译、打包、内置命令请参考文档《SDK_Quick_Start_Guide》
第 5 页 共 13 页
3.3. 创建和移植软件包
创建和移植软件包
3.1. 概述
在 Tina Linux SDK 中一个软件包目录下通常包含如下两个目录和一个文件:
package/<分类>/<软件包名>/Makefile
package/<分类>/<软件包名>/patches/ [可选]
package/<分类>/<软件包名>/files/ [可选]
其中:
patches 保存补丁文件,在编译前会自动给源码打上所有补丁
files 保存软件包的源码,在编译时会对应源码覆盖源码中的源文件
Makefile 编译规则文件,例见 3.6.2 节
Makefile 的编写语言作为基础知识,在此不做介绍。
3.2. Makefile 范例
该 Makefile 的功能是软件源码的准备,编译和安装的过程,提供给 Tina Linux 识别和管理软件包的接口,
软件的编译逻辑是由软件自身的 Makefile 决定,理论上和该 Makefile(该 Makefile 只执行 make 命令和相关参
数)无实质关系.
include $(TOPDIR)/rules.mk
PKG_NAME:=bridge
PKG_VERSION:=1.0.6
PKG_RELEASE:=1
#软件包的名字
#软件包版本(详见①)
#该 Makefile 的版本
#软件包文件名(dl 目录下)
PKG_SOURCE:=bridge-utils-$(PKG_VERSION).tar.gz
#该包的下载地址(详见②)
PKG_SOURCE_URL:=@SF/bridge
#该包的 md5 值(详见③)
PKG_MD5SUM:=9b7dc52656f5cbec846a7ba3299f73bd
PKG_CAT:=zcat
#该软件包的解压方法
PKG_BUILD_DIR:=$(COMPILE_DIR)/bridge-utils-$(PKG_VERSION) #该软件包的编译目录
include $(BUILD_DIR)/package.mk
define Package/bridge
SECTION:=net
CATEGORY:=Base system
TITLE:=Ethernet bridging configuration utility
URL:=http://bridge.sourceforge.net/
[可选]MAINTAINER:=
[可选]DEPENDS:=
[可选]BUILDONLY:=
endef
#Package/<包名>(详见④)
#该包的类别,目前没有使用
#该包在配置系统中的分类
#该包的简单的描述信息
#该包的原始下载连接
#该包的维护人员的联系方式
#该包的依赖关系(详见⑤)
#固定编译(详见⑥)
[可选]
define Package//conffiles:
#指定软件包依赖的配置文件,一个配置文件一行
endef
endef
[可选]
define Build/Prepare:
#准备源码和给源码打补丁
[可选]
define Package/bridge/description
#该软件包的文字描述
第 6 页 共 13 页
Manage ethernet bridging:
a way to connect networks together to form a larger network.
endef
[可选]
define Build/Configure
#配置软件包(详见⑦)
$(call Build/Configure/Default, \
--with-linux-headers="$(LINUX_DIR)" \
[可选]
define Build/Compile
#执行软件编译的动作(详见⑧)
)
endef
endef
endef
define Package/bridge/install
#执行软件包的安装动作(详见⑨)
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/brctl/brctl $(1)/usr/sbin/
$(eval $(call BuildPackage,bridge))
详注:
①如果是开源软件,软件包版本建议与下载软件包的版本一致
②以 PKG 开头的变量主要告诉编译系统去哪里下载软件包.其中@SF 是一个内置的特殊关键字,表示
#BuildPackage 的宏(详见⑩)
去 sourceforge 网站去下载软件包,类似的关键字还有@GNU 表示从 GNU 下载软件源码包.
③ md5sum 用 于 校 验 下 载 下 来 的 软 件 包 是 否 正 确 , 如 果 正 确 , 在 编 译 该 软 件 的 时 候 , 就 会 在
PKG_BUILD_DIR 下找到该软件包的源码.
④Package/: 用来指定该 Package 的名字,该名字会在配置系统中显示
⑤使用依赖包的名字来指定依赖关系,如果是扩展包,前面添加一个”+”号,如果是内核版本依赖
使用@LINUX_2_
⑥如果该值为 1,该包将不会出现在配置菜单中,但会作为固定编译,可选
⑦在开源软件中一般用来生成 Makefile,其中参数可以通过 CONFIGURE_VARS 来传递
⑧在开源软件中一般相当于执行 make,其中有两个参数可以使用:MAKE_FLAGS 和 MAKE_VARS
⑨内置的几个关键字如下:
INSTALL_DIR 相当于 install -d m0755
INSTALL_BIN 相当于 install -m0755
INSTALL_DATA 相当于 install -m0644
INSTALL_CONF 相当于 install -m0600
⑩该 Makefile 的所有 define 部分都是为该宏的参数做的定义.上层 Makefile 通过调用此宏进行编译
第 7 页 共 13 页
3.3. 软件的自启动设置
3.3.1. 概述
在 Tina Linux 中支持两种格式的初始化脚本,一种是 busybox 式或者 SysV 式的初始化脚本,一种是
procd 式的初始化脚本。一般我们把由初始化脚本启动的应用叫做服务。
3.3.2. 初始化脚本简介
初始化脚本以 shell 脚本的编程语言组织,shell 脚本作为基础知识在此不展开说明。
一般情况下,初始化脚本源码保存在软件的 files 目录,且后缀为“.init”,例如:
tina/package/system/fstools/files/fstab.init
在 Makefile 的 install 中把初始化脚本安装到小机端的/etc/init.d 中,例如:
define Package/block-mount/install
$(INSTALL_DIR) $(1)/etc/init.d/
$(INSTALL_BIN) ./files/fstab.init $(1)/etc/init.d/fstab
endef
3.3.3. 手动调试初始化脚本
在启动的时候会有太多的 log,且 log 信息已被 logd 守护进程收集,不利于我们调试初始化脚本,此
时可通过小机端的命令行手动调用的形式来调试,例如:
root@TinaLinux: /# /etc/init.d/fstab start
3.3.4.
SysV 式的初始化脚本
SysV 式的初始化脚本保存在小机端的/etc/init.d/目录下,实现开机自启动。
注意: SysV 式初始化脚本目前已经不推荐使用,此节说明仅方便开发者阅读 SysV 格式的初始化脚本
以最小内容的初始化脚本作示例讲解,核心是实现 start/stop 函数:
#!/bin/sh
# Example script
# Copyright (C) 2007 OpenWrt.org
#本质为 script 脚本,以#!开头, 之后执行/etc/rc.common
/etc/rc.common
START=10
STOP=15
DEPEND=xxxx
#开机启动优先级(序列) [数值越小, 越先启动],取值范围 0-99
#关机停止优先级(序列) [数值越小, 越先关闭],取值范围 0-99
#初始化脚本会并行执行,通过此项配置确保执行的依赖
start() {
}
stop() {
}
#启动函数
echo start
# commands to launch application
#停止函数
echo stop
# commands to kill application
第 8 页 共 13 页