




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
OTA On The Air-二科小唐 09-28前言在深入了解OTA(空中升级)流程的具体实现之前,我们有必要先对其在脑海中形成一个初步的认识。这里则是带你从整体认识OTA。一、M3328F方案Flash block存储区域定义bootloaderOta comman dataotaLogoDefault dbtuner drivercommon datamain codeback dbxx dbuser db应用层(App)的存储区域OTA的存储区域公共数据的存储区域bootloader的存储区域二、OTA功能的具体设计规划(一)Flash block存储区域规划为了设计系统OTA部分,我们需要在Flash block存储区域中新增两个chunk存储区域:公共数据存储区域(comman data)和空中升级存储区域(ota)。我们将在1MB系统中加入OTA功能。目前1MB系统中已经使用了10个bank来存储bootloader和App的数据,还剩下6个bank可以供我们使用。comman data:使用1个bank存储。ota:使用1-2个bank存储。根据具体实现时的实际情况进行调整。(二)OTA功能规划1、SI表中升级相关升级描述信息 SI表中升级相关信息定位升级文件播发位置。升级文件播发的位置由NIT表中的KingVon_linkage_descriptor描述,KingVon_linkage_descriptor作为升级下载的链接描述,可以有多个描述子。该描述符放置在NIT表的第一个描述子循环中。2、OTA升级链接描述符NIT表PID:0x0010KingVon_linkage_descriptor升级链接描述符 Syntax No. of bitsIdentifierKingVon_Loader_Desc()TagLengthFor(i=0;iN;i+)STB_Provider_IDManager_CodeHardware_codeSoftware_version Download_ModeFrequency Symborate PolarizationDownload_PIDReservedCRC328816323232832328163232UimsbfUimsbfUimsbfUimsbfUimsbfUimsbfUimsbfUimsbfUimsbf UimsbfUimsbfUimsbfUimsbf 详细描述:Descriptor_Tag:0xA8;STB_Provider_ID:机顶盒提供商ID,金网通为0x4b56,当为其他厂家的机顶盒待定;Manager_Code:运营商ID;Hardware_code:主芯片、Flash、SDRAM、Tuner、IC卡版本 ;Software_version:机顶盒软件版本; Download_Mode:01:强制,02:自动提示;Frequency:统一为调制器上的频率,单位MHZ;Symborate:统一为调制器上的符号率;Polarization:统一为调制器上的极化方式;01:水平,02: 垂直; Download_PID:升级流的PID;Reserved:预留;CRC32:CRC校验码。3、前端播出方案前端播出系统在NIT中插入KingVon_linkage_descriptor升级链接描述符,该描述符指明各机顶盒厂商相应升级软件所在的基础流的PID,同时该描述符中也可以给出机顶盒升级控制字节的值。金网通提供升级软件在TS文件(188字节/包),供升级码流播出系统在相应基础流中播出,同时机顶盒厂商需提供相应的升级控制字节,供播出系统在KingVon_linkage_descriptor升级链接描述符中播出。金网通定义/选择TS文件的生成方式,即机顶盒厂商采用定义/选择的方式将机顶盒升级软件转换为TS文件,该方式对于前端升级码流播出系统是透明的。前端码流播出系统对升级软件的播出采用循环的方式,以便终端用户可以在一定时间范围内完成机顶盒软件的更新升级。4、末端接收方案(1)升级方式手动(提示)下载末端机顶盒查询NIT中是否有本厂商的Linkage_Descriptior升级链接描述符,如果有,则根据升级控制字节判断本机机顶盒是否需要升级,如果需要升级,则询问终端用户是否升级。在得到终端用户许可后,机顶盒则接收相应PID的基础流,并根据相应的方式分析数据、组装升级软件,该分析组装方式同前端生成TS文件的方式相对应。如果在接收数据的过程中断电或出错,在回复后应能够断点续传或重新开始接收数据。强制下载末端机顶盒查询NIT中是否有本厂商的Linkage_Descriptior升级链接描述符,如果有,则根据升级控制字节判断本机顶盒是否需要强制升级,如果是则开始升级。机顶盒控制高频道转换到升级流所在的频点,接收相应PID的基础流,下载升级程序,进行升级。全手动下载用户通过机顶盒界面主动要求升级,机顶盒接收NIT,分析NIT中是否有本厂商的Linkage_Descriptior升级链接描述符,如果有,则根据升级控制字节判断本机顶盒是否需要升级,如果需要升级,则开始升级。如果不需要升级,提示用户当前版本已经是最新版本。(2)升级保护方案末端机顶盒应在升级软件的所有数据接收完成并校验无误后在行替换原有软件。如果在升级过程中出错或断电,机顶盒应尽最大可能使终端用户的机顶盒可用。一、开发过程中的OTA升级基本流程制作新程序的TS流文件 :BIN TS文件OTA的SI表 :TS文件 + PAT、PMT、NIT 带PAT、PMT、NIT 描述的TS文件 复用进某频点的节目 :将带PAT、PMT、NIT描述的TS文件复用进某频点的节目信号传输 :调制器广播升级信息 整个网络STB进行信息解析成功 :正在收看节目 解析升级信息 做出升级判断(系统自动完成)STB进行OTA : OTA模块升级(后续详细介绍)二、OTA模块升级初始化主要包括软件版本、硬件版本、分配滤波器、设置通道值、打开NIT通道等等任务监控判断是否有符合升级的信息,如果有且升级方式为提示而非强制,则给出提示,询问用户是否需要进行更新,如果需要,则重启STB,进入下一步升级界面。解析NIT数据信息 + 核对NIT信息任务A、解析的NIT数据信息主要包括:软件版本号、硬件版本号、升级模式、升级类型、厂商号、升级频率、升级符号率、升级数据PID、描述子长度等B、核对NIT信息主要包括两类如果软件版本号的遥控器型号、客户编号、数据广播类型、条件接收系统类型和flash中的对应数据不同,则退出循环,停止解析;如果硬件版本号和厂商号与flash中的对应数据相等,而软件版本号的第四个字节不同,则在升级前要先擦除flash中的数据,再保存新的升级信息。开始升级 根据不同的升级类型和升级模式,重启机顶盒,开始升级。注:升级类型和升级模式有哪些?升级类型主要是分升级全部代码和升级数据库两种类型;升级模式即是手动提示下载、强制下载、全手动下载三种模式。三、测试OTA模块版本更新测试 : 只升级更高版本的软件,STB正常平移升级过程中掉电 :如果是下载过程中掉电,则STB中的数据未被破坏,重启STB后可继续收看节目;如果是擦写数据时掉电,则机顶盒中的数据已被破坏,重启STB后可重新开始升级。升级信息中所包含的频点信息不准确 :进入OTA后tuner会读取升级信息中包含的频点信息,并尝试锁定该频点,若该频点无法锁定或者该频点中没有播放软件升级流,则在等待TUNER_LOCK_TIME毫秒后,会弹出一个菜单,由用户自己重新设定升级频点的频率和符号率,并再次尝试升级。下载过程中信号不好 若信号太差导致升级过程中丢包严重,OTA程序会循环搜索LOOP_MAX次后自动退出并跳转到应用程序。下载过程中信号中断 OTA程序会在等待SIGNAL_BAD_TIME毫秒后自动退出并跳转到应用程序,而在此时间之内恢复信号,STB将继续OTA模块运行。四、表名词缩写PAT(节目关联表)、PMT(节目映射表)、NIT(网络信息表)、BAT(业务群关联表)、SDT(业务描述表)、EIT(事件信息表)、CAT(条件接收表)、TDT(时间和日期表)、TOT(时间偏移表)、RST(运行状态表) PAT(Program Association Table):PAT表主要提供Program和PID之间的对应关系PMT(Program Map Table):PMT表主要提供节目numbers和节目elements之间的映射关系NIT(Network Information Tabel):NIT表主要提供物理网络本身的一些信息BAT(Bouquet Association Table):BAT表主要提供关于Bouquet的信息,Bouquet是一个services的集合SDT(Service Description Table):SDT表主要提供关于Service的信息,如Service name, Service provider 等 EIT(Event Infomation Table):EIT表主要提供关于event的信息,如name, start time, duration等CAT(Conditional Access Table):CAT表主要提供关于Bouquet的信息,Bouquet是一个services的集合 TDT(Time and Date Tabel):NIT表仅提供UTC时间和日期信息 TOT(Time Offset Table):TOT表提供了UTC时间和日期信息,以及和本地时间的时差RST(Running Status Table):RST表允许一个或多个event适时状态准确快速的更新.这对一个过早或过迟开始的event是必要的五、如何识别和区别PAT表和PMT表?通过包的包头和tabel_id来区别是PAT表还是PMT表。六、如何解析PAT表、解析PMT表?(1) 解析PAT表在解析PAT表的过程中,主要的工作是从TS流文件中获取Section_length、prog_number、pid重要信息,将获取的prog_number(即客户要求的Service_ID )和从flash中读取的service_id比较,二者相等,则将获取的pid保存下来,该pid即是PMT表的pid。以下是一个用TS analyse 工具打开TS 流后的PAT packet:0000 47 40 00 10 00 00 80 0d 00 01 01 00 G.000c 00 03 ac 04 01 7d 36 75 3c ff ff ff .6u.0018 ff ff ff ff ff ff ff ff ff ff ff ff .0024 ff ff ff ff ff ff ff ff ff ff ff ff .0030 ff ff ff ff ff ff ff ff ff ff ff ff .003c ff ff ff ff ff ff ff ff ff ff ff ff .0048 ff ff ff ff ff ff ff ff ff ff ff ff .0054 ff ff ff ff ff ff ff ff ff ff ff ff .0060 ff ff ff ff ff ff ff ff ff ff ff ff .006c ff ff ff ff ff ff ff ff ff ff ff ff .0078 ff ff ff ff ff ff ff ff ff ff ff ff .0084 ff ff ff ff ff ff ff ff ff ff ff ff .0090 ff ff ff ff ff ff ff ff ff ff ff ff .009c ff ff ff ff ff ff ff ff ff ff ff ff .00a8 ff ff ff ff ff ff ff ff ff ff ff ff .00b4 ff ff ff ff ff ff ff ff详细描述: first 4 bytes is header,即0x47400010sync byte(8) : 0x47transport error indicator(1) : 0x0payload unit start indicator(1) : 0x1transport priority(1) : 0x0packet identifier(13) : 0x0000transport scrambling control(2) : 0x0adaptation field control(2) : 0x1continuity counter(4) : 0x0 the 5 byte is ?,即0x00the 6 byte is tabel_id,即0x00the 1-4bits of 7 byte is Section_syntax_indicator+ 0+ Reserved,即0x8the 5-8bits of 7 byte+the 8 byte is Section_length(12bits),即0x00dthe 9-10 bytes is transport_stream_id,即0x0001the 11 bytes is Reserved(2bits)+ Version_number(5bits)+ Current_next_indicator(1bits),即0x01the 12 bytes is Section_number(8bits),即0x00the 13 bytes is last_section_number(8bits),即0x00the 14-15 bytes is program number,即0x03acthe 16-17 bytes is reserved(3 bits)+program_map_PID(13bits),即0x0401the 18-21 bytes is CRC_32(32bits),即0x7d36753c其余部分则填充为ff,每个packet总大小为188 bytes(2) 解析PMT表在解析PMT表的过程中,主要的工作是从TS流文件中获取Section_length、stream_type,如果获取的stream_type和从flash中读取的stream_type两者相等,则继续解析PMT表,获取elementary_pid后保存下来,此pid即是ota_pid。以下是一个用TS analyse 工具打开TS 流后的PMT packet:0000 47 44 01 10 00 02 80 12 03 ac 01 00 GD.000c 00 1f fe 00 00 d0 03 09 00 00 d2 87 .0018 e3 3b ff ff ff ff ff ff ff ff ff ff .;.0024 ff ff ff ff ff ff ff ff ff ff ff ff .0030 ff ff ff ff ff ff ff ff ff ff ff ff .003c ff ff ff ff ff ff ff ff ff ff ff ff .0048 ff ff ff ff ff ff ff ff ff ff ff ff .0054 ff ff ff ff ff ff ff ff ff ff ff ff .0060 ff ff ff ff ff ff ff ff ff ff ff ff .006c ff ff ff ff ff ff ff ff ff ff ff ff .0078 ff ff ff ff ff ff ff ff ff ff ff ff .0084 ff ff ff ff ff ff ff ff ff ff ff ff .0090 ff ff ff ff ff ff ff ff ff ff ff ff .009c ff ff ff ff ff ff ff ff ff ff ff ff .00a8 ff ff ff ff ff ff ff ff ff ff ff ff .00b4 ff ff ff ff ff ff ff ff .详细描述: first 4 bytes is header,即0x47440110sync byte(8) : 0x47transport error indicator(1) : 0x0payload unit start indicator(1) : 0x1transport priority(1) : 0x0packet identifier(13) : 0x0401transport scrambling control(2) : 0x0adaptation field control(2) : 0x1continuity counter(4) : 0x0 the 5 byte is ?,即0x00the 6 byte is tabel_id(8bits),即0x02the 1-4bits of 7 byte is Section_syntax_indicator+ 0+ Reserved(4bits),即0x 8the 5-8bits of 7 byte+the 8 byte is Section_length(12bits),即0x012the 9-10 bytes is program_number(16bits),即0x03acthe 11 bytes is Reserved(2bits)+ Version_number(5bits)+ Current_next_indicator(1bits),即0x01the 12 bytes is Section_number,即0x00the 13 bytes is last_section_number,即0x00the 14-15 bytes is reserved(3bits)+ PCR_PID(13bits),即0x1ffethe 16-17 bytes is reserved(4bits)+ program_info_length(12bits),即0x0000the 18 bytes is stream_type(8bits),即0xd0the 19-20 bytes is reserved(3bits)+elementary_PID(13bits),即0x0309the 21-22 bytes is reserved(4bits)+ ES_info_length(12bits),即0x0000 the 23-26 bytes is CRC_32(32bits),即0xd287e33b七、如何解析升级所需数据、拼凑数据、校验拼凑结果?在解析升级所需数据的过程中,主要的工作是从TS流文件中获取有效数据,做好下载数据的准备。如硬件信息:descriptor_type、specifier_type、specifier_data、model、version,如果和flash中的信息相同,则设置hardware_fit = TRUE;软件信息:descriptor_type、specifier_type、specifier_data、model,如果和flash中的信息相同,且version_control、version满足一定条件,则更新flash中的版本号,设置software_fit = TRUE。以下是一个用TS analyse 工具打开TS 流后的user private packet:在函数dsi_message中的数据包解析过程如下:0000 47 43 09 13 00 3b b0 55 00 00 c1 00 GC.;.U.000c 00 11 03 10 06 80 00 00 00 ff 00 00 .0018 40 ff ff ff ff ff ff ff ff ff ff ff .0024 ff ff ff ff ff ff ff ff ff 00 00 00 .0030 28 00 01 80 00 00 02 00 02 00 00 00 (.003c 18 00 02 01 09 01 00 0d 64 00 00 01 .d.0048 10 00 02 09 01 00 0d 64 00 00 00 03 .d.0054 00 00 00 00 00 c3 34 9c d7 ff ff ff .4.0060 ff ff ff ff ff ff ff ff ff ff ff ff .006c ff ff ff ff ff ff ff ff ff ff ff ff .0078 ff ff ff ff ff ff ff ff ff ff ff ff .0084 ff ff ff ff ff ff ff ff ff ff ff ff .0090 ff ff ff ff ff ff ff ff ff ff ff ff .009c ff ff ff ff ff ff ff ff ff ff ff ff .00a8 ff ff ff ff ff ff ff ff ff ff ff ff .00b4 ff ff ff ff ff ff ff ff .详细描述: first 4 bytes is header,即0x47430913sync byte(8bits) : 0x47transport error indicator(1bits) : 0x0payload unit start indicator(1bits) : 0x1transport priority(1bits) : 0x0packet identifier(13bits) : 0x0309transport scrambling control(2bits) : 0x0adaptation field control(2bits) : 0x1continuity counter(4bits) : 0x3 the 5 byte is ?,即0x00the 6 byte is tabel_id(8bits),即0x3b the 7-8 bytes is section_len,处理后,即0x0055 the 9-10 bytes is table_id_extension,处理后,即0x0000 the 12 bytes is section_num,即0x00 the 13 bytes is last_section_num,即0x00 the 18-21 bytes is transaction_id,处理后,即0x80000000 the 23 bytes is adaptation_len,即0x00 the 24-25 bytes is message_len,处理后,即0x0040 the 45-46 bytes is compatibility_descriptor_len,处理后,即0x00 the 47-48 bytes is private_data_len,处理后,即0x0028 the 49-50 bytes is num_of_groups,处理后,即0x0001 the 51-54 bytes is group_id,处理后,即0x80000002 the 55-58 bytes is group_size,处理后,即0x00020000 the 59-60 bytes is compatibility_descriptor_len,处理后,即0x0018 the 61-62 bytes is descriptor_count,处理后,即0x0002 the 63 bytes is descriptor_type,处理后,即0x01 the 64 bytes is descriptor_len,处理后,即0x09 the 65 bytes is specifier_type,处理后,即0x01 the 66-68 bytes is specifier_data,处理后,即0x000d64 the 69-70 bytes is model,处理后,即0x0000 the 71-72 bytes is version,处理后,即0x0110 the 74 bytes is descriptor_type, 处理后,即0x02 the 75 bytes is descriptor_len,处理后,即0x09 the 76 bytes is specifier_type,处理后,即0x01 the 77-79 bytes is specifier_data,处理后,即0x000d64 the 80-81 bytes is model,处理后,即0x0000 the 82-83 bytes is version,处理后,即0x0003 the 85-86 bytes is group_info_len,处理后,即0x0000 在函数dii_message中的数据包解析过程中,获取transaction_id、message_len、download_id、blocksize、num_of _modules、module_num、module_id、module_size、module_version、module_info_len、private_data_len。判断transaction_id和函数dsi_message中获取的group_id是否相同,相同则继续解析,并保存module_id、module_size等数据。当获取下载数据信息成功后,开始下载数据。在函数ddb_data中的数据包解析过程中,获取一下数据,并和函数dii_message中的数据包解析过程中保存的数据作比较,符合条件时才继续执行,如比较module_id、block_num。接着获取所需数据存放在flash的 blank中。以下是一个用TS analyse 工具打开TS 流后的user private packet:0000 47 43 09 15 00 3c bf fd 01 00 c1 00 GC.000c 20 11 03 10 03 00 00 00 0b ff 00 0f .0018 e8 01 00 00 ff 00 00 00 00 05 01 1e .0024 14 1e 14 4e 01 00 00 54 48 41 49 35 .N.THAI50030 5b 37 38 2e 35 45 5d 00 00 00 00 02 78.5E.003c 00 14 41 68 29 16 26 5a 01 00 00 4e .Ah).&Z.N0048 53 53 36 28 4b 55 29 5b 39 30 2e 35 SS6(KU)90.50054 45 5d 00 03 00 04 01 1e 14 1e 14 44 E.D0060 01 00 00 49 4e 54 45 4c 37 2f 31 30 .INTEL7/10006c 5b 36 38 2e 35 45 00 04 00 14 41 68 68.5E.Ah0078 29 16 26 00 00 00 00 49 4e 54 45 4c ).&.INTEL0084 37 2f 31 30 28 4b 55 29 00 00 00 05 7/10(KU).0090 00 04 01 1e 14 1e 14 4a 01 00 00 49 .J.I009c 4e 53 41 54 33 43 5b 37 34 2e 30 45 NSAT3C74.0E00a8 5d 00 00 06 00 14 41 68 29 16 26 00 .Ah).&.00b4 00 00 00 49 4e 53 41 54 .INSAT详细描述: first 4 bytes is header,即0x47430915 sync byte(8) : 0x47 transport error indicator(1) : 0x0 payload unit start indicator(1) : 0x1 transport priority(1) : 0x0 packet identifier(13) : 0x0309 transport scrambling control(2) : 0x0 adaptation field control(2) : 0x1 continuity counter(4) : 0x5 the 5 byte is ?,即0x00 the 6 byte is tabel_id(8bits),即0x3c the 7-8 bytes is section_len,处理后,即0xbffd the 9-10 bytes is table_id_extension,处理后,即0x0100 the 12 bytes is section_num,即0x00 the 13 bytes is last_section_num,即0x20 the 18-21 bytes is download_id,处理后,即0x0000000b the 23 bytes is adaptation_len,即0x00 the 24-25 bytes is message_len,处理后,即0x0fe8 the 26-27 bytes is module_id,处理后,即0x0100 the 28 bytes is module_version,即0x00 the 30-31 bytes is block_num,处理后,即0x0000 八、如何解析NIT表?回答这个问题还有待深入学习。九、如何制作带NIT 描述的TS文件?回答这个问题还有待深入学习。十、结合TS流文件跟踪程序执行流程(1) 升级时,OTA升级界面重要的提示信息BOOL ota_get_download_info(UINT16 pid, struct dl_info *info, ota_str_display_t string_disp)string_disp(Get OTA information, Please wait.);BOOL ota_get_download_info_new(ota_para_t *ota_para, ota
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 诗歌蒲公英课件
- 诗歌炼句题课件
- 短期租约合同范本
- 艺术演出开场致辞模板
- 1月旅游文化模拟试题(附答案)
- 2024年6月临床医学概要习题库与参考答案
- 爆炸课件教学课件
- 考点攻克人教版九年级物理《生活用电》同步练习练习题(含答案详解)
- 2025及未来5年中国色织格子灯芯绒市场调查、数据监测研究报告
- 2025及未来5年中国广角固定适配器市场调查、数据监测研究报告
- 大飞机C919:追梦五十载,“破茧化蝶”
- 某培训基地可行性研究报告
- YY/T 1617-2018血袋用聚氯乙烯压延薄膜
- GB/T 4339-2008金属材料热膨胀特征参数的测定
- GB/T 39965-2021节能量前评估计算方法
- GB/T 3934-2003普通螺纹量规技术条件
- 尿动力学检查操作指南2023版
- 五星领导人课件
- GB/T 22560-2008钢铁件的气体氮碳共渗
- 《大体积混凝土》课件
- 标准法兰、阀门螺栓对照表
评论
0/150
提交评论