Technology
Allwinner
Technology CO.,CO.,CO.,CO., LtdLtdLtdLtd....
Allwinner
Technology
Allwinner Technology
Allwinner
A20 Dragonboard 测试用例编
写说明书
V1.V1.V1.V1.1111
2012012012014444----06060606----03030303
A20 Dragonboard 测试用例编写说明书 V1.1
Copyright © 2014 Allwinner Technology. All Rights Reserved.
2014-06-03
CONFIDENTIAL
Technology
Allwinner
Technology CO.,CO.,CO.,CO., LtdLtdLtdLtd....
Allwinner
Technology
Allwinner Technology
Allwinner
Revision
History
Revision
History
Revision History
History
Revision
DateDateDateDate
Version
Version
Version
Version
2014-06-03
V1.1
Author
Author
Author
Author
previous
compared totototo previous
compared
Changes
issue
Changes
compared
previous
issue
previous issue
Changes compared
Changes
issue
Create
A20 DragonBoard 测试用例编写说明书 V1.1
Copyright © 2014 Allwinner Technology. All Rights Reserved.
i
2014-06-03
CONFIDENTIAL
Technology
Allwinner
Technology CO.,CO.,CO.,CO., LtdLtdLtdLtd....
Allwinner
Technology
Allwinner Technology
Allwinner
目录
1. 前言............................................................................................................................................................ 3
1.1. 简介................................................................................................................................................. 3
1.2. 目的................................................................................................................................................. 3
1.3. 名词解释......................................................................................................................................... 3
1.4. 参考文档......................................................................................................................................... 3
2. 快速入门.................................................................................................................................................... 4
2.1. 目录结构......................................................................................................................................... 4
2.2. C 测试用例....................................................................................................................................... 4
2.3. Shell 测试用例................................................................................................................................. 5
2.4. 编译................................................................................................................................................. 5
2.5. 打包烧录......................................................................................................................................... 5
3. 配置脚本.................................................................................................................................................... 7
4. 测试用例.................................................................................................................................................... 8
4.1. 与 core 交互.....................................................................................................................................8
4.2. C 测试用例....................................................................................................................................... 8
4.3. Shell 测试用例............................................................................................................................... 10
5. Declaration................................................................................................................................................. 11
A20 DragonBoard 测试用例编写说明书 V1.1
Copyright © 2014 Allwinner Technology. All Rights Reserved.
ii
2014-06-03
CONFIDENTIAL
Technology
Allwinner
Technology CO.,CO.,CO.,CO., LtdLtdLtdLtd....
Allwinner
Technology
Allwinner Technology
Allwinner
1.1.1.1. 前言
1.1.1.1.1.1.1.1. 简介
DragonBoard 是一个基于 Linux BSP,集成了 DirectFB 的图形化板卡测试系统。该系统旨在检测
板卡能否在特定的环境中正常工作。
DragonBoard 系统默认启动两个进程,分别是 core 进程和 launcher 进程,后者是前者的子进程。
测试任务由模块测试程序完成,由 launcher 进程负责加载,该进程会根据 test_config.fex 文件的配置
创建(fork)新的进程运行测试用例。目前测试用例支持 C、shell 脚本编写。
1.2.1.2.1.2.1.2. 目的
本文档主要介绍如何编写一个 DragonBoard 系统的模块测试用例。撰写的比较匆忙,欢迎大家
指正文中的错误。
1.3.1.3.1.3.1.3. 名词解释
1.4.1.4.1.4.1.4. 参考文档
A20 DragonBoard 测试用例编写说明书 V1.1
Copyright © 2014 Allwinner Technology. All Rights Reserved.
3
2014-06-03
CONFIDENTIAL
# 输出目录
# 测试用例(程序)输出目录
# 根目录
# 测试用例(程序)rootfs 的输出目录
# 源码目录
# 系统核心模块
# 系统公共头文件
# 系统公共库
# 测试用例源码目录
# UI
# 顶层 Makefile
# 编译变量,include by Makefile
# 交叉编译环境依赖目录
# 生成 rootfs.ext4
|-- output/
|-- bin/
|-- rootfs/
|-- dragonboard/
|-- bin/
|-- src/
|-- core/
|-- include/
|-- lib/
|-- testcases/
|-- example/ # 示例
|-- example.c
|-- Makefile
|-- Makefile
|-- view/
|-- Makefile
|-- rule.mk
|-- sysroot/
|-- build.sh
|-- README.txt
2.2.2.2.2.2.2.2.
CCCC 测试用例
1. 创建模块测试用例的目录
Technology
Allwinner
Technology CO.,CO.,CO.,CO., LtdLtdLtdLtd....
Allwinner
Technology
Allwinner Technology
Allwinner
2.2.2.2. 快速入门
目前 DragonBoard 系统只需要在 lichee 的根目录运行./build.sh –p sun7i_dragonboard && ./build.sh
pack 就可以编出一个可以调试的固件。下面的章节会介绍如何编写一个测试用例。
2.1.2.1.2.1.2.1. 目录结构
DragonBoard 放在 buildroot/target 目录下,其目录结构大致如下:
$ cd buildroot/target/dragonboard
$ mkdir src/testcases/example
$ cd src/testcases/example
2. 编写测试用例源码 example.c
参照 4.2 节。
3. 编写 Makefile
参照 4.2 节。
4. 让系统编译你的模块测试用例
A20 DragonBoard 测试用例编写说明书 V1.1
Copyright © 2014 Allwinner Technology. All Rights Reserved.
4
2014-06-03
CONFIDENTIAL
Technology
Allwinner
Technology CO.,CO.,CO.,CO., LtdLtdLtdLtd....
Allwinner
Technology
Allwinner Technology
Allwinner
在 testcases/Makefile 中添加
all:
make -C example
2.3.2.3.2.3.2.3.
SSSShellhellhellhell 测试用例
Shell 测试用例就是用 shell 脚本完成模块的测试任务。launcher 进程会向脚本传递 4 个参数,分
别是:$0 是脚本的名称,$1 是 DragonBoard 系统版本号,目前没有使用,$2 是配置脚本的共享内
存 id,$3 是当前测试用例的 id,返回结果的时候会使用。下面是一个简单的示例(memtester):
#!/bin/sh
memtester 128K 1 > /dev/null
echo "$3 $?" >> /tmp/cmd_pipe
为了编译的时候能够将脚本拷贝到 output/bin 目录下,我们还需要一个 Makefile,如:
# define sources root directory before everything
SRC_ROOT := ../..
# include rule.mk
include $(SRC_ROOT)/rule.mk
.PHONY: all
all:
cp memtester.sh $(BINDIR)/
然后在 testcases/Makefile 添加:
all:
make -C memtester
更加详细的说明参照 4.3 节。
2.4.2.4.2.4.2.4. 编译
1. 在 lichee 根目录下编译 DragonBoard 的内核时,即执行:
$ ./build.sh –p sun7i_dragonboard
会调用 dragonboard 目录下的 build.sh 脚本译 DragonBoard 系统,并生成 rootfs.ext4。
2.5.2.5.2.5.2.5. 打包烧录
DragonBoard 系统的打包烧录流程和 Linux 相似,下面简要描述一下 A20 sugar-ref001 的打包流
程:
$ cd $lichee
$ ./build.sh pack
A20 DragonBoard 测试用例编写说明书 V1.1
Copyright © 2014 Allwinner Technology. All Rights Reserved.
5
2014-06-03
CONFIDENTIAL
Technology
Allwinner
Technology CO.,CO.,CO.,CO., LtdLtdLtdLtd....
Allwinner
Technology
Allwinner Technology
Allwinner
Start packing for Lichee system
All valid chips:
0. Sun7i
Please select a chip:0
All valid platforms:
0. android
1. dragonboard
2. linux
Please select a platform:1
All valid boards:
0. Sugar-ref001
Please select a board:0
打包生成的固件放在 tools/pack 目录下,用 phoenixCard 制作启动卡。
A20 DragonBoard 测试用例编写说明书 V1.1
Copyright © 2014 Allwinner Technology. All Rights Reserved.
6
2014-06-03
CONFIDENTIAL
Technology
Allwinner
Technology CO.,CO.,CO.,CO., LtdLtdLtdLtd....
Allwinner
Technology
Allwinner Technology
Allwinner
3.3.3.3. 配置脚本
DragonBoard 系统使用一个配置脚本(test_config.fex)来完成系统和各个模块的配置,core 进程
起来的时候会去解释这个配置脚本,并将其内容按照固定的格式放在一块共享内存里,方便各个测
试用例的进程访问。在 C 语言中,这块共享内存的访问 id 通过 main 函数的参数 argv[2]传递到各个
测试用例中。目前没有找到 shell 脚本访问这块共享内存的方法,后期将提供其他的解决方案。
test_config.fex 的格式类似 INI 文件格式,可以说是一种扩展。下面是一个测试模块配置示例:
[example]
display_name= "Example"
activated
program
category
run_type
= 1
= "example.sh"
= 0
= 1
display_name
display_name
���� display_name
display_name
显示到界面的名称,字符串类型,如果需要显示双引号,可以使用以下语法:
display_name= string:"Example"
区别在于后者会显示"string:"后面所有的字符,包括空格和制表符。该项能够容纳 63 个英文字符,
31 个中文字符。如果 display_name 为空,其它项无效。
activated
activated
���� activated
activated
0: 不测试该模块;1: 测试该模块。
program
program
���� program
program
模块的测试程序,该项能够容纳 15 个英文字符。用于指定模块测试的入口。
category
category
���� category
category
0: 自动化测试模块;1: 手动测试模块。
run_type
run_type
���� run_type
run_type
0: 等待当前模块的测试程序执行完毕再运行下一个模块的测试程序;1: 不等待当前模块的测试
程序执行完毕。一般为了提高整体的测试速度,对于耗时较长的测试程序建议填 0,反之填 1;注意,
当,category = 1,即手动测试模块时,该项无效。
以上是一些基础的配置项,用户亦可根据需要添加自己的配置项。
A20 DragonBoard 测试用例编写说明书 V1.1
Copyright © 2014 Allwinner Technology. All Rights Reserved.
7
2014-06-03
CONFIDENTIAL