gx3201高清方案应用架构与开发介绍

You might also like

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 21

1. gxapp_common 简介......................................................................................................................

1.1 gxapp_common 代码目录........................................................................................................2

1.2 env.sh 环境变量配置介绍........................................................................................................5

1.3 gxapp_common 编译 ...............................................................................................................8

1.4 增加/配置遥控器......................................................................................................................9

1.4.1 增加新遥控器:.....................................................................................................................9

1.4.2 配置遥控器:.......................................................................................................................10

1.5 开启/配置前面板....................................................................................................................10

1.5.1 应用开启前面板:................................................................................................................10

1.5.2 配置面板:............................................................................................................................11

1.5.3 gxlowpower 中增加、配置前面板........................................................................................11

1.6 增加/配置开机画面................................................................................................................11

1.6.1 JPG 开机画面增加、配置.....................................................................................................11

1.6.2 I 帧开机画面增加、配置 ....................................................................................................12

1.6.3 I 帧开机广告..........................................................................................................................12

2. Development 简介.........................................................................................................................12

2.1 development 代码目录:.......................................................................................................13

2.2 development 编译...................................................................................................................16

2.3 JTAG 调试...............................................................................................................................16

3.增、删、配置 CA..........................................................................................................................17

3.1 市场 CA 版本改为 FTA 版本.................................................................................................18

3.2 市场 CA 替换(CA1 替换成 CA2).....................................................................................18

3.3 双 CA 配置..............................................................................................................................19

3.4 移植新 CA...............................................................................................................................19

4.OTA 编译.......................................................................................................................................20

4.1 demod 编译 OTA 需要的库...................................................................................................20

4.2 gxota 编译...............................................................................................................................20

5. 代码发布注意事项.......................................................................................................................20

6.硬件版本........................................................................................................................................21

7. 修订记录.......................................................................................................................................21
gx3201/gx3113c 方案应用代码由 gxapp_common 和 development 两部分实现,
ecos、linux、有线、国标地面方案均使用 svn 服务器上 gxapp_common,差异化通过 env.sh 中
配置 os、demod、tuner、CA 等环境变量实现。

1. gxapp_common 简介

gxapp_common 为机顶盒应用通用模块,兼容各芯片、市场版本,与具体方案完全独立。
gxapp_common 包含音视频播放、节目管理、搜索、FLASH 读写、预约、前面板、多媒体播放 、
NVOD、PVR、已移植的所有 CA、广告、前面板、遥控器、开机画面等公共模块接口和资源。

各市场版本同步更新 svn 服务器上 gxapp_common 最新代码,通过配置环境变量,最


大限度复用/组合已实现功能的模块代码,减少各项繁杂重复工作(尤其是 CA、广告移植、
重复 bug 修改等)。

针对不同市场需求,通过配置 env.sh 环境变量,灵活配置/实现对应的软件功能需求。


例如:
市场 1:数码 CA+3H 广告+FD650 面板+国芯公版遥控器+公版开机画面;
市场 2:永新 CA+博远广告+PT6964 面板+润德遥控器+广西开机画面;

不同的应市场/客户硬件平台,配置的 env.sh 保存在 sh 对应市场目录下。


gxapp_common/sh/<chip>/<demod>/<market>/env.sh
例如润德广西有线市场:
gxapp_common/sh/gx3201/gx1001/runde_guangxi_yulin/env.sh

gxapp_common 公共部分的代码修改、增加,必须遵循以下几个基本原则:

1. gxapp_common 代码增加、修改不能影响其他市场方案。
2. gxapp_common 只增加可共用的的公共部分。不同市场的差异化实现(例如 CA 界面等),
于各市场的 development 中实现。
3. 不 同 市 场 只 需 check out svn 服 务 器 上 最 新 gxapp_common 代 码 , 不 单 独 维 护
gxapp_common。
4. env.sh 中增加/删减环境变量配置项,sh/目录下所有 env.sh 同步修改。

1.1 gxapp_common 代码目录

目录(一级) 目录(二级) 目录/文件 描述


build 编译脚本:
./build <chip>
<demod> <market>
<os>
env.sh svn 上默认 evn.sh。
sh gx3201 例 如 : sh/gx3201/ 市场方案 env.sh。编
gx1001/ 译对应市场版本时,
runde_guangxi_yulin/ 编译脚本自动将对应
env.sh; env.sh 复 制 到
gxapp_common/env.sh
gx3113c 例如:
sh/gx3113c/gx1503/g
ongban/env.sh
Makefile env.sh 环 境 变 量 配
置,配置模块编译等
Doc 《ubuntu gx3201 高清 Ubuntu gx3201 ecos\
开发环境搭建.ppt》 linux 开发、调试环境
搭建
《gx3201 方案应用架 gx3201/gx3113c 方 案
构与开发介绍.doc》 代码架构、环境变量
配置介绍;模块功能
开发介绍
Scripts csky-ecos- ecos 编译工具链配置
compiler.mak
csky-linux- Linux 编译工具链配
compiler.mak 置
inc.Makefile 编译脚本,env.sh 中环
境变量配置项处理等
Linux S05panel Linux 方 案 前 面 板 加
载脚本等.
logo-jpg 所有市场开机画
面.jpg 文件
key_xml 1. key.xml( 公 env.sh 环 境 变 量
版、常用遥控 DVB_KEY_TYPE 的
器,自适应 值 , 设 置 为 key.xml
兼容); 或 key_xxx(厂家).xml
2. key_xxx( 厂 中 group 对应的值,
家 ).xml: 例 例如:
如: KEY_GONGBAN_N
keymap_zhiling.xml ATIONALCHIP_NE
3. readme.txt,遥控 W , KEY_ZHILING
器设置、增加方法说 等

Ads Xxxads(ads 类 型 ) / api 提供广告移植接口、
xxx(市场),例如: 菜单功能调用的所有
接口函数
博远广告/公版 doc 广告厂家提供的所有
byads/gongban 移植文档、移植库
include 包含 api\porting\
lib 广告库
Porting 移植接口实现
readme.txt env.sh 中对应广告环
境变量配置说明
book app_common_book.c 预约接口(预约播
放、预约录制)
Bsp pannel_common app_common_panel.c 面板显示、GPIO 设置
接口
其他 所有已移植的前面板
驱动
cas Xxxca(ca 类 型 )/ Api 提供 CA 移植接口、
xxx(市场),例如: 菜单功能调用的所有
接口函数
数码视迅 CA/公版 doc CA 厂家提供的所有
dvtca/gongban 移植文档、原 始 CA

include 包含 api\porting\
Lib CA 库
porting 移植接口实现
readme.txt env.sh 中 对 应 CA 环
境变量配置说明
epg app_common_epg.c epg\时间读取接口
flash app_common_flash.c flash 读 写 接
口 , config\oem\ 广 告
文件读写等
include gxapp_sys_config.h 根据 env.sh,编译动
态生成条件编译项
其他 各模块头文件目录
init 初始化接口
media 多媒体接口
nvod app_common_nvod.c nvod 准视频点播接口
play app_common_play.c 音视频播放、缩放、分
辨率等设置
porting app_common_porting 提供 CA 菜单公共接
_stb_api.c 口
app_common_porting 移植 CA 解复用通用
_ca_demux.c 接口
app_common_porting 移植 CA 解扰通用接
_ca_descramble.c 口
app_common_porting 移植广告存储读写通
_ads_flash.c 用接口
app_common_porting 移植 CA 存储读写通
_ca_flash.c 用接口
app_common_porting 移植 CA 操作系统通
_ca_os.c 用接口
app_common_porting 移植 CA 智能卡通信
_ca_smart.c 通用接口
prog app_common_prog.c 节目分组、定位、编辑
等接口
pvr app_pvr.c pvr 录制、时移接口
spplayer app_common_ad.c SPP 广告层通用接口
app_common_ad_scro SPP 广告层滚动解码/
ll_load.c 显示接口
search app_common_search. 手动、NIT、自动等搜
c 索接口
subt app_ttx_subt.c Ttx\subtitle 通用接口
table app_common_lcn.c 逻辑频道号更新、管
理接口
app_common_table_c cat 表过滤、分析接口
at.c
app_common_table_n nit 表过滤、分析接口
it.c
app_common_table_o 国 芯 公 版 OTA 协 议
ta.c 接口
app_common_table_p pmt 表过滤、分析接
mt.c 口
app_common_table_b bat 表过滤、分析接口
at.c

1.2 env.sh 环境变量配置介绍

环境变量 值 说明
ARCH csky CPU
OS ecos Ecos 操作系统
linux Linux 操作系统
CROSS_PATH csky-ecos、csky-linux 交叉编译项
RC_VERSION GOXCEED_v1_9_1_ 驱动版本(发布的生产版本必须设置对应驱
1 等 , 参 动版本,便于跟踪与维护)
考 include/init/goxcee
d_csky.h
GXLIB_PATH /opt/goxceed/ csky-ecos、csky-linux 路径
$CROSS_PATH 等

GXSRC_PATH `pwd` 等 gxapp_common 代码路径

GX_KERNEL_PATH $GXSRC_PATH/../ Linux 方案内核代码路径


linux-2.6.27.55 等
DVB_MARKET haishu_neimeng 等 对应客户/市场
DVB_CA_MARKET gongban 等 对应 CA 的市场版本
DVB_AD_MARKET gongban 等 对应广告的市场版本
DVB_CA_FLAG yes CA 版本
no FTA 版本
DVB_CA_TYPE DVB_CA_TYPE_DV 默认运行的第一个 CA 类型(兼容多 CA 同
T等 时 运 行 ) , 参 考
app_common_porting_stb_api.h 中
dvb_ca_type_t 定义
DVB_CA_1_NAME dvtca 等 第一个 CA(目录)名
DVB_CA_1_LIB dvt20140130 等 第一个 CA 库名
DVB_CA_1_FLAG DVB_CA_TYPE_DV 第一个 CA 条件编译环境变量
T_FLAG 等
DVB_CA_2_NAME byca 等 第二个 CA(目录)名,同时兼容双 CA 使
用。非双 CA 系统,第二个 CA 不用设置,下
同。
DVB_CA_2_LIB byca 等 第二个 CA 库名,同时兼容双 CA 使用
DVB_CA_2_FLAG DVB_CA_TYPE_BY 第二个 CA 条件编译环境变量,同时兼容双
_FLAG 等 CA 使用
DVB_AD_NAME 3hads 等 广告(目录)名
DVB_AD_FLAG DVB_AD_TYPE_3H 广告条件编译环境变量
_FLAG 等
DVB_AD_LIB 广告库名,无广告库的广告移植,此项不设
置。
DVB_OTA_TYPE DVB_NATIONALCH OTA 协议,参考 ota_enum.h 定义
IP_OTA 等
DVB_HD_LIST yes 高 清 节 目 支 持 单 独 列 表 ( gxbus 中 针 对 修
改)
no 高清、标清不分开保存。
DVB_JPG_LOGO yes Jpg 开机画面(gxloader 中需对应开启 JPG 开
机画面)
no I 桢开机画面
DVB_LOGO_JPG logo_nationalchip_go 配置开机画面,所有可配置开机 jpg 保存在
ngban.jpg gxapp_common/
AUDIO_DOLBY yes 开启 dolby 支持。gx3201d 芯片支持 dolby
no 非 gx3201d 芯片不开启 dolby 支持
DVB_PVR_FLAG yes 开启 PVR 功能
no 不开启 PVR 功能
DVB_SUBTITLE_FL yes 开启 subtitle 功能
AG no 不开启 suttitle 功能
DVB_NETWORK_F yes 开启网络功能(仅限 linux 方案)
LAG no 不开启网络功能(ecos 方案必须设置为 no)
DVB_USB_FLAG yes 开启 USB 功能
no 不开启 USB 功能
DVB_PVR_SPEED_ yes 开启多媒体播放的快进、快退功能
SUPPORT no 不开启多媒体播放的快进、快退功能
DVB_PANEL_TYPE PANEL_TYPE_xxx 配置前面板,参考 panel_enum.h 定义
( 市 场 )_xxx( 面 板 类
型)_xxx(厂家)
PANEL_TYPE_fd650
_RUNDE 等
PANEL_CLK_GPIO 芯片面板 CLK GPIO 管脚值
PANEL_DATA_GPIO 芯片面板 DATA GPIO 管脚值
PANEL_STANDBY_ 芯片面板 STANDBY GPIO 管脚值
GPIO
PANEL_LOCK_GPI 芯片面板 LOCK GPIO 管脚值
O
DVB_KEY_TYPE KEY_xxx( 市 场 )_( 厂 配 置 遥 控 器 , 参 考 remote_enum.h 定
家)。例如: 义,remote_enum.h 中定义与 key_xml 目录下
KEY_GONGBAN_N key.xml 或 key_xxx( 厂 家 ).xml 中 group 对 应
ATIONALCHIP_NE 的值一致
W等
DVB_DEMOD_TYP DVB_DEMOD_GX1 配置解调,参考 demod_enum.h 定义
E 001 等
DVB_DEMOD_MOD DVB_DEMOD_DVB 配置有线、国标地面模式。
E C , DVB_DEMOD_
DTMB 等
DVB_TS_SRC 0,1,2 等 配置 TS 输出。目前有线公版方案配置为 0.国
标地面公版方案配置为 1. 其他根据硬件配置
选择配置值
DVB_TUNER_TYPE 0,1......等 配置 TUNER。参考 demod/include/tuners.h 定

DVB_WORK_PATH '"/dvb/"' linux 操作系统的图片、XML 等路径

DVB_LOGO_PATH '"/dvb/theme/ I 桢开机画面路径


logo.bin"' ( linux 方
案)
'"/theme/
logo.bin"' ( ecos 方
案)等

DVB_I_FRAME_PAT '"/dvb/theme/ I 桢广播背景路径


H logo.bin"' ( linux 方
案)
'"/theme/
logo.bin"' ( ecos 方
案)等

DVB_SYS_MODE 0,1 同步方式


0 -- PCR 同步, 1-- ATPS 同步
DVB_VIDEO_X 0
DVB_VIDEO_Y 0
DVB_VIDEO_W 1280
DVB_VIDEO_H 720
DVB_SAT_MAX 1
DVB_TP_MAX 200
DVB_SERVICE_MA 1000
X
DVB_PAT_TIMEOU 3000(ms)
T
DVB_SDT_TIMEOU 5000(ms)
T
DVB_NIT_TIMEOU 10000(ms)
T
DVB_PMT_TIMEOU 8000(ms)
T
DVB_LCN_DEFAUL 500 等 LCN 开启模式下,无逻辑频道号节目默认起
T 始 LCN 值。如果为 0,则无逻辑频道号节目
不设置 LCN 值
DVB_CENTER_FRE 例如:307 主频点频率
(MHz)
DVB_CENTER_SY 例如:6875 主频点符号率
MRATE
DVB_CENTER_QA 例如:2 主频点调制方式
M 0-QAM16, 1-QAM32, 2-QAM64, 3-QAM128,
4-QAM256
1.3 gxapp_common 编译

编译方法: ./build <chip> <demod> <market> <os>

例如 润德广西玉林有线方案(ecos):
$ cd gxapp_common
$ ./build gx3201 gx1001 runde_guangxi_yulin ecos

润德广西玉林有线方案(linux):
$ cd gxapp_common
$ ./build gx3201 gx1001 runde_guangxi_yulin linux

注意:development 与 gxapp_common 的编译环境配置一致。编译 gxapp_common 时编译脚


本会自动将 evn.sh 拷贝到$GXLIB_PATH/include/app/sh 目录下;
编译 development 时编译脚本会自动从 $GXLIB_PATH/include/app/sh 目录下拷贝 evn.sh 到
developemnt’/env_common.sh。

gxapp_common 编译完成,生成 libappcommon.a。gxapp_common 编译时编译脚背会自动


将 libappcommon.a、env.sh 以及其他编译依赖的第三方.a(env.sh 中配置,如 CA 库等)、头文
件安装到$GXLIB_PATH/include/app 目录。
根据 env.sh 的不同配置,gxapp_common 编译时编译脚本在 gxapp_common/include 自动
生成 gxapp_sys_config.h 的条件编译选项。

1.4 增加/配置遥控器

1.4.1 增加新遥控器:

1. gxbus\gui_core\event\hwa\hwa_event.c 中开启遥控器按键打印。
2. 打印得到的键码值,参考 key_xxx(厂家).xml 格式增加新遥控器.xml。
3. gxapp_common/include/key/remote_enum.h 中增加新遥控器名称对应的宏定义,
与 keymap.xml,key_xxx(厂家).xml 中 group 值一致。
例如:#define KEY_ZHILING 8
4. gxapp_common/include/key/panel_key.h 中增加新遥控器对应的上、下、左、右、菜
单、退出、待机等常用面板按键。根据 env.sh 配置的遥控器环境变量条件编译,
面板将自动对应配置的遥控器按键。(只需配置遥控器)

keymap.xml 兼容公版以及常用遥控器(兼容自适应)。 key_xxx(厂家).xml 即某具体机顶盒


厂家遥控器。新增遥控器一般参考 key_xxx(厂家).xml,例如 key_zhiling.xml 实现。
1.4.2 配置遥控器:

1.修改 gxapp_common/sh 目录下对应市场 env.sh 中 DVB_KEY_TYPE 环境变量的值,


参考 gxapp_common/include/key/remote_enum.h 中定义值。
env.sh 文件 DVB_KEY_TYPE 环境变量、gxapp_common/include/key/remote_enum.h 定
义值、gxapp_common/key_xmk/key_xxx(厂家).xml 文件 group 一致。

2. 编译 gxapp_common 时编译脚本自动查找 DVB_KEY_TYPE 宏定义所在的.xml 文


件 , 并 将 找 到 的 .xm 文 件 复 制 到 $GXLIB_PATH/include/app/key_xml/
$DVB_KEY_TYPE.xml。
3. 编 译 development 时 编 译 脚 本 自 动 将 $GXLIB_PATH/include/app/
$DVB_KEY_TYPE.xml 复制到 development/theme/keymap.xml,实现遥控器的灵活选择和配
置。

注意:默认发布版本校验遥控器按键 usrcode + usrcode_reverse 等于 0xff,部分非 NEC


协议,如松下协议某些遥控器 usrcode + usrcode_reverse 不等于 0xff ,则必须将 gxbus\
gui_core\event\hwa\hwa_event.c 校验的代码屏蔽掉。

1.5 开启/配置前面板

1.5.1 应用开启前面板:

1. development/app/bsp.cpp 中开启 MOD_PANEL。 (ecos 方案)


2. gxloader 编译 release 模式,默认配置对应厂家的面板。
gxloader 编译编译其他模式,默认关闭面板配置。参考:
https://isvn.guoxintech.com/svn/3201_DVBC/goxceed-v1.9.2/gxloader 代码
release.config,debug.config,otalib.config,boot.config 中 PANEL_TYPE 配置,
PANEL_TYPE 如配置为 PANEL_TYPE_NONE 即关闭面板功能。
3. gxloader 编译方法:
./build <chip> <board> <.config>
例如:
./build gx3201 3201-dvbc-runde release,编译正式版本的 loader-sflash.bin.
./build gx3201 3201-dvbc-runde debug,编译调试模式用的 loader-sflash.bin.
./build gx3201 3201-dvbc-runde boot,编译烧写用的 boot 引导程序.
./build gx3201 3201-dvbc-runde otalib,编译 ota 功能依赖的.a 文件.

注意:JTAG 与面板 GPIO 复用,前面板开启时不能使用 JTAG 方式调试。


(前面板调试,可开启 gxapp_common/include/bsp/stb_panel.h 宏 __BSP_DEBUG__ ,
通过增加打印调试。)

同 理 , 如 使 用 JTAG 调 试 , 则 必 须 关 闭 面 板 。 PANEL_TYPE 设 置 为
PANEL_TYPE_NONE,并将 development/app/bsp.cpp 中 MOD_PANEL 注释掉。

1.5.2 配置面板:

1. 修改 gxloader 客户 release.config 配置 PANEL_TYPE 的值,参考 gxloader/include/


panel_enum.h
2. 修改 gxapp_common/sh 目录下对应市场 env.sh 中 DVB_PANEL_TYPE 的值,参
考 gxapp_common/include/bsp/panel_enum.h

Linux 方案:编译 gxapp_common 时编译脚本会自动将编译生成的 panel.ko,S05panel 复


制到$GXLIB_PATH/include/app/linux。
编译 development 时编译脚本会自动将 $GXLIB_PATH/include/app/linux/ 下文件复
制到 genrootfs、nfsroot 对应路径下,实现前面板的灵活选择和配置。

1.5.3 gxlowpower 中增加、配置前面板

针对面板中要求增加 LED 显示、面板按键功能需求,参考:


https://isvn.guoxintech.com/svn/3201_DVBC/market/zhanchen_guba/gxlowpower,用法。

后续《gx3201 高清有线方案 gxlowpower 开发与配置.doc》进一步介绍。

1.6 增加/配置开机画面

Gx3201 高清有线方案支持 JPG、I 帧两种类型的开机画面显示。其中 JPG 在 gxloader 中显


示,I 帧在应用中显示。不同市场根据需要配置、使用。

1.6.1 JPG 开机画面增加、配置

步骤:
1. 新市场开机画面 JPG 图片复制到 gxapp_common/logo-jpg/目录下。
2. gxloader 中开启 JPG 开机画面支持,gxloader 对应市场/客户 release.config 中
设置 ENABLE_LOGO = yes
3. gxapp_common/sh 目 录 下 对 应 市 场 env.sh 配 置 JPG 开 机 画 面 模 式 , export
DVB_JPG_LOGO=yes.
4. gxapp_common/sh 目 录 下 对 应 市 场 env.sh 配 置 JPG 开 机 画 面 图 片 名 , 例 如 :
export DVB_LOGO_JPG=logo_nationalchip_gongban.jpg
注 意 : 编 译 gxapp_common 时 编 译 脚 本 会 自 动 将 evn.sh 配 置 的 jpg 拷 贝 到
$GXLIB_PATH/include/app/logo-jpg 目录下;
编译 development 时编译脚本会自动从 $GXLIB_PATH/include/app/logo-jpg 目录下拷
贝 evn.sh 到 developemnt/flash/logo.jpg,实现 jpg 开机画面的灵活配置和选择。
Svn 公版默认 jpg 的 logo 分区最大为 192K,如果市场开机画面 jpg 图片超过 192k.必须
修改 development/flash/flash.conf 分段信息。

1.6.2 I 帧开机画面增加、配置

步骤:
1. 新市场开机画面 I 帧复制到 development/theme/目录下。
2. gxloader 中关闭 JPG 开机画面支持,gxloader 对应市场/客户 release.config 中
设置 ENABLE_LOGO = no
3. gxapp_common/sh 目 录 下 对 应 市 场 env.sh 关 闭 JPG 开 机 画 面 模 式 , export
DVB_JPG_LOGO=no
4. gxapp_common/sh 目录下对应市场 env.sh 配置 I 帧路径。例如:
export DVB_LOGO_PATH='"/theme/logo.bin"'

注 意 : 开 机 画 面 和 广 播 背 景 图 片 可 以 不 是 同 一 个 I 帧 , 通 过 export
DVB_I_FRAME_PATH='"/dvb/theme/logo.bin"';设置广播背景 I 帧路径。

1.6.3 I 帧开机广告

针对部分市场,存在需要开机播放 I 帧广告的需求,从码流中接收到的 I 帧保存在


FLASH 文件中(例如:"/home/gx/openpicture.bin",根据不同市场文件名)。开机播放保存在
FLASH 文件中的 I 帧,而非播放 DVB_LOGO_PATH 路径下的 I 帧。

2. Development 简介

development 为机顶盒具体市场应用代码,包含各模块的界面代码;图片、字库资源
镜像文件生成脚本等。
2.1 development 代码目录:

目录(一级) 目录(二级) 目录/文件 描述


env.sh 编译环境变量,
env_common.sh 编 译 时 , csky-
ecos/include/app/
sh 自动复制,内容与
gxapp_common/
env.sh 完全一样
Makefile
Scripts csky-ecos- ecos 编译工具链配置
compiler.mak
csky-linux- Linux 编译工具链配
compiler.mak 置
inc.Makefile 编 译 脚 本 ,env.sh 中
环境变量配置项处理

create_signal_conn .xml 与 .c 中 信 号 函
ect.sh 数信号关联脚本
app (应用方案) include 头文件目录
cas : (支持多 CA 系 Xxxca , 对 应 于 对 应 CA 界 面 代
统) env.sh 中 的 码.c,.h
DVB_CA_1_NAME 或
DVB_CA_2_NAME 例
如:
Dvtca
pvr app_pvr_bar.c Pvr 录制、时移显示
subtitle app_subtitling.c Subtitle 显示
network 网络功能,如:
youtube,wifi 等
menu (不包含第三方 media 多媒体模块界面
移植 界面 ,如 CA 界 xxx.c 界面.c
面)
Output ( linux 方 案 theme Linux 方案使用的资
编译生成) 源文件
out.elf Linux 方 案 生 成 的
out.elf
.gdbinit、 第一行中
tar jtag
jtag://127.0.1.1:1
025,针对本机 IP、
端口号配置
app.c 机顶盒初始化接口
bsp.cpp 配置文件,如 demod
类型等
main.c GxCore_Startup , 创
建机顶盒运行线程
Makefile env.sh 环 境 变 量 配
置,配置模块编译等
signal_connect.c 编译自动生成的.c
flash (ecos 方 案 生 file_tree file_tree\ 配置 flash、内存存
产 BIN 相关文件) rootfs_ecos\etc\ 储段文件系统说明
fstab
merger
flash 根目录下文件 flash.conf 编 译 BIN 文 件 flash
分段配置文件
flash.bin 编译生成的 flash 镜
像文件
flash_ts.conf 编译升级段 BIN 文件
flash 分段配置文件
( 包 含 boot 、 table
段)
flash_ts.dat 编译生成的制作升级
流段 flash 镜像文件
loader-sflash.bin Loader
logo.jpg 开机画面
causer.bin 机顶盒序列号存储文

invariable_oem.ini 不可变 OEM 配置文件
(硬件版本等)
variable_oem.ini 可 变 OEM 配 置 文 件
(软件版本等)
ota.img Ota 升级程序
ecos.img 编译代码段生成的文

root_cramfs.img 编 译 资 源 ( XML ) 等
生成的文件
block.bin 存储段(所有节
目、CA 等数据)
genflash 生成 BIN 文件的工具
mkimg 生成 BIN 文件脚本
flash_linux(linux loader- flash.conf Linux 方 案 BIN 文 件
方案生产 BIN 相关文 sflash.bin、logo.jp flash 分段
件) g、causer.bin、inva flash_ts.conf Linux 方案 ts 升级段
riable_oem.ini、var flash 分段
iable_oem.ini、ota. flashrom.bin Linux 方案编译生成
img 等 ecos,linux 共 的镜像文件
用 资 源 在 flash_ts.dat Linux 方案编译生成
development/flash 的升级段 BIN 文件
目录下,linux 方案
编译时,编译脚本会
自动将这文件复制到
genrootfs、nfsroot
对应路径下
theme (资源文件) font (字库) Arial 字符字库
Num 大数字字库(数字切
台)
font.xml 字体大小脚本
image (图片资源) image_xxx 如 image_gongban(公
版 图 片 资
源)、media(多媒体图
片资源)等
create_image.sh 将.bmp 文件生成 xml
文件脚本
Image.xml ./create_image.sh
编译生成的 xml
language (多语言支 i18n.xml 定义中、英文 xml 文
持) 件名
Chinese.xml 中文
English.xml 英文
i18n.xls 中英文 xls 对照
i18n.py、i18n_split 将 i18n.xls 生 成
.py i18n.xml、Chinese.x
ml 、 English.xml 脚

widget (窗体) create_widget.sh 生 成 窗 体 列 表
widget.xml 脚本。可
定 义 UI 宽 高 , 界 面
bmp 位数、OSD、GUI 透
明度的值等
widget.xml ./create_widget.sh
编译生成的 xml
xxx.xml 窗体 xml
logo.bin 广播背景 I 帧
color.xml 特殊控件颜色定义
style.xml 字符集
keymap.xml 遥控器 XML,编译时
自 动 从
$GXLIB_PATH//
include/app/
key_xml 更新
theme.conf 资源配置文件

2.2 development 编译

development(Linux 操作系统)编译:

development$ source env.sh csky-linux


ARCH=csky OS=linux Configuration !
development$ make clean;make;make bin
Linux 方 案 编 译 后 , development/flash_linux 目 录 下 会 生 成 flashrom.bin 镜 像 文 件 和
flash_ts.dat 升级段 BIN 文件。

development(ecos 操作系统)编译:
development$ source env.sh csky-ecos
ARCH=csky OS=linux Configuration !
development$ make clean;make
ecos 方案编译后,development/flash 目录下会生成 flash.bin 镜像文件和 flash_ts.dat 升级
段 BIN 文件。

ecos、linux 方案 BIN 文件烧写,参考《ubuntu gx3201 高清方案开发环境搭建.ppt》

2.3 JTAG 调试

Ecos 方案如何启动 JTAG;linux 方案 nfs 调试《ubuntu gx3201 高清开发环境搭建.ppt》


中详细介绍,参考《ubuntu gx3201 高清开发环境搭建.ppt》。

开始调试代码:
1. 分别配置 gxapp_common 和 development 目录下 scripts/inc.Makefile 对应 ecos/linux -
O0 -g ,(svn、生产版本默认为-O2)。
2. 修改 /development/app/.gdbinit 第一行 tar jtag jtag://127.0.1.1:1025 (根据本机使用 IP
地址、端口号修改).
3. 重现编译 gxapp_common,development
$ cd development/app
app$ csky-elf-gdb out.elf
(如第一次使用 csky-linux-gdb 出现 csky-linux-gdb: error while loading shared libraries:
libexpat.so.0: cannot open
cd /usr/lib/i386-linux-gnu/
sudo ln -s libexpatw.so.1.5.2 libexpat.so.0)

3. 增、删、配置 CA

Gx3201 CA 移植分别两部分,gxapp_common/cas 对应 CA 目录下为移植接口、提供界面调


用接口模块。Development/app/cas 对应 CA 目录下为 CA 界面的数据显示、操作等,通过调
用 gxapp_common/cas 对应 CA 目录下封装的中间接口实现相应 CA 数据的读取、设置等功能
(development 界面部分并不直接调用 CA 移植头文件提供的接口,以实现不同市场、客户
移植相同 CA 的接口统一,确保同步、代码维护性和软件稳定性)。

不同市场、客户移植的相同 CA,gxapp_common 与 development 中代码基本保持一致,最


主要差异主要为 XML(例如:菜单界面是否需要显示时间、日期、广告等)、以及图片资源。

针对相同 CA 的 gxapp_common 代码,不同市场、客户硬件平台差异通常为智能卡参数、CA


库名称不一样,代码基本无差异。

3.1 市场 CA 版本改为 FTA 版本

gx3201 高清有线方案没有固定 FTA 公版,任一市场带 CA 软件版本根据市场/客户需要,


参考以下操作即可简单删减为 FTA 版本。
1 、将 gxapp_common/sh 对应市场 env.sh,export DVB_CA_FLAG=yes 修改为 export
DVB_CA_FLAG=no.
2. 重新编译 gxapp_common、development 即编译为 FTA 版本。

3.2 市场 CA 替换(CA1 替换成 CA2)

针对不同市场,前端采用不一样的 CA 系统。有时需在某个市场(A 市场)版本的软件基


础上(CA1,以 BYCA 为例),移植另外的 CA(CA2,以 CDCAS3.0 为例,B 市场已移植过)。

步骤:
1、参考 3.1 将 A 市场版本修改为 FTA 版本,(根据需要可选择是否删除 A 市场相应
BYCA 菜单的 XML 文件、development\app\cas\byca 目录)。
2 、 将 gxapp_commom/sh 目 录 对 应 市 场 env.sh , export DVB_CA_FLAG=no 修 改 为
export DVB_CA_FLAG=yes; 修 改
DVB_CA_TYPE 、DVB_CA_1_NAME、DVB_CA_1_LIB、DVB_CA_1_FLAG 为 CDCAS3.0 对应值,例如:
export DVB_CA_TYPE=DVB_CA_TYE_CDCAS30
export DVB_CA_1_NAME=cdcas3.0
export DVB_CA_1_LIB=Y1120-tonghui-gx3001-20121212D
export DVB_CA_1_FLAG=DVB_CA_TYE_CD_CAS30_FLAG
3、gxapp_common/cas/cdcas3.0/目录下创建$DVB_CA_MARKET 目录(A 市场)。
并从 gxapp_common/cas/cdcas3.0/$DVB_CA_MARKET(B 市场)复制对应代码到对应
创建的目录,替换市场 CA 库、移植文档等第三方资料。
4、复制 B 市场版本 development/theme/widget 所有 CDCAS3.0 菜单 XML 文件到 A 市
场版本 development/theme/widget,复制 B 市场版本 development/app/cas/cdcas3.0 到 A 市场
版本 development/app/cas/cdcas3.0。
5、B 市场版本 development 代码中 DVB_CA_TYE_CD_CAS30_FLAG 宏定义使用的代码复制
到 A 市场版本,全屏.XML 中 CDCAS3.0 CA 相关控件加入到 A 市场版本全屏 XML。重新编译
gxapp_common,development。运行即 CDCAS3.0 。
6、针对修改 CA 菜单相关 XML 和图片资源、多语言,使 CA 菜单与 A 市场菜单一致。
( development/app/cas/cdcas3.0 目 录 下 i18n.xls 为 永 新 CA3.0 所 有 中 英 文 翻 译 , 将
development/app/cas/cdcas3.0/i18n.xls 添加到 development/theme/language/i18n.xls)

(development/app/cas/cdcas3.0 保存 CA 界面使用的多语言 i18n.xls,后续所有新移植 CA 必


须将 CA 相关的中英文 .xls 保存到 evelopment/app/cas/xxxcas,替换 CA 添加到/development/
theme/language/i18n.xls,实现 CA 多语言)
DVB_CA_MARKET 设置对应 CA 的市场版本(CA 库差异等)。(同一方案多数小 CA 的
CA 库唯一,CA 库唯一的可全设置为 gongban)。
3.3 双 CA 配置

某些特殊市场,需要同时兼容双 CA。以兼容 CDCAS3.0 和 BYCA 双 CA 为例,步骤:


1、参考 5.2 增加 BYCA 和 CDCAS3.0(已移植)
2、修改 gxapp_common/sh 目录对应市场 env.sh,开启双 CA 配置
if [ $DVB_CA_FLAG = "yes" ]; then
export DVB_CA_TYPE=DVB_CA_TYE_CDCAS30
export DVB_CA_1_NAME=cdcas3.0
export DVB_CA_1_LIB=Y1120-tonghui-gx3001-20121212D
export DVB_CA_1_FLAG=DVB_CA_TYE_CD_CAS30_FLAG
fi
#兼容双 CA。多数情况下只有一个 CA,第二个 CA 不用设置
if [ $DVB_CA_FLAG = "yes" ]; then
export DVB_CA_2_NAME=byca
export DVB_CA_2_LIB=byca
export DVB_CA_2_FLAG=DVB_CA_TYPE_BY_FLAG
fi
3、双 CA 系统开机选择运行的 CA:
双 CA 系 统 通 过 重 启 智 能 卡 复 位 读 取 应 答 , 重 启 运 行 CA 前 调 用
app_cas_update_dvb_ca_flag()根据不同 CA 智能卡应答标志智能判断当前智能卡所属
CA,不同智能卡应答字节从移植文档应答接口说明获取
(如移植文档中无对应卡应答字节说明,需和 CA 厂家进行确认)。

已 移 植 CA env.sh 中 环 境 变 量 配 置 参
考 gxapp_common/cas/xxxca/$DVB_CA_MARKET/readme.txt

3.4 移植新 CA

移 植 新 CA , 按 照 gxapp_common,development 代 码 架 构 。 参 考 已 移 植 CA 实 现 ( 如
cdcas3.0,byca ) , 部 分 代 码 可 直 接 拷 贝 ( 文 件 名 、 函 数 名 针 对 CA 修 改 ) 。 其 他 参 考
DVB_CA_TYPE_CD_CAS30_FLAG、DVB_CA_TYPE_BY_FLAG 宏开关调用。

4. OTA 编译

注意:gxota 编译依赖 csky-gxloader,编译错误首先需确认/opt/goxceed/csky-gxloader。


4.1 demod 编译 OTA 需要的库

$ cd demod/
demod$ ./build csky gxloader
编译完成后,编译脚本会自动将编译生成的.a,对应头文件复制到/opt/goxceed/csky-
gxloader 对应目录中。

4.2 gxota 编译

$ cd gxota/
gxota$ ./build gx3201
编译完成后,gxota/src 目录下生成 ota.img(即 development/flash/ota.img)

5. 代码发布注意事项

注意:如果发布代码给客户自行开发,应将代码中第三方客户购买/申请的所有 CA、广
告、浏览器、库、移植文档等资料删除,仅提供代码客户。
CA、广告、浏览器、库、移植文档等由客户自行向对应厂家申请/购买。
如果国芯发布给客户开发的代码中,误包含第三方他客户的 CA、广告、浏览器、库、移植
文档等,立即通知该客户自行删除第三方的 CA、广告、浏览器、库、移植文档等,并不得擅自
使用。
对于客户擅自使用第三方客户的 CA、广告、浏览器、库、移植文档等,该客户自行承担对
应的商业、法律责任。

6.硬件版本

针对有线、国标地面同一市场,相同芯片方案存在多个客户情况,如果广电
前端未定义硬件版本规范(硬件版本由机顶盒厂家自定义)。OTA 升级通过校
验硬件版本等匹配升级与否,避免不同厂家客户交误升级导致严重问题(tuner\
panel\remote 等差异,升级后程序可能无法运行,只能通过串口更新)。所以每
个客户对应市场的硬件版本必须保证唯一。
因此,广电前端如果定义了硬件版本规范,根据广电规范实现。如果广电未
定义,根据国芯定义规范实现。国芯方案有线、国标地面硬件版本参考《杭州国
芯 gx3201 高清方案硬件版本定义规范》
硬件版本显示:xx.xx.xx.xx,8 个字节。

7. 修订记录

修订日期 修订人 修订说明 备注


2012.12.21 周华明 初稿
2013.04.17 周华明 1. 增加 CA 开发说明
2014.01.21 周华明 1. 增 加 env.sh 环 境 变 量
说明
2. 增加、配置遥控器、前
面板、开机画面等说明
3. 增加各模块编译、调试
说明
4. 错误修正
2014.06.10 周华明 1. gxapp_common
编译方法修改
说 明 ( 兼 容
gx3201\
gx3113c)
2. env.sh 增 加 / 修
改环境变量说

3. 遥控器新增、修
改说明
4. gxloader 编 译
方法修改说明
(面板开关、配
置说明)

You might also like