文档章节

DVB开发之升级介绍

二进制的忧伤
 二进制的忧伤
发布于 2015/01/15 11:33
字数 1439
阅读 137
收藏 0

    一、Android系统相关的基本概念

    (1) Bootloader分区:Bootloader是嵌入式系统在加电后执行的第一段代码,在它完成CPU和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序装在到内存中然后跳转到操作系统所在的空间,启动操作系统运行。Bootloader百度百科链接

    (2) Boot分区:存放boot,linux操作系统引导分区。

    (3) recovery分区:实际上是一个简单的Linux系统,当内核启动完毕后,开始执行第一个程序init(init程序是Linux系统所有程序 的老祖宗)。init会启动一个叫做recovery的程序(recovery模式的名称也由此而来)。通过recovery程序,用户可以执行清除数 据,安装刷机包等操作。一般的手机厂商都提供一个简单的recovery刷机。Recovery百度百科链接 

    (4) system:是一般发布的ROM的主要功能程序分区了,我们说的ROM功能和自带程序的定制应该就是基于这个分区的修改和编译了。

    (5) Kernel分区:Linux内核。

    (6) misc分区:有Bootloader Control Block(BCB),主要是用于存放Recovery引导信息。

    (7) userdata:用户数据。

    (8) Cache:缓存。

    二、Android系统启动模式

    Android系统启动后可能会进入的几种工作模式:

    若正常启动,即开机没有按组合键,bootloader会读取位于MISC分区的启动控制信息块BCB(Bootloader Control Block)。它是一个结构体,存放着启动命令command。根据不同的命令,系统又 可以进入三种不同的启动模式。结构体的定义如下:

  struct bootloader_message{
                      char command[32];  //存放不同的启动命令
                      char status[32];   //update-radio或update-hboot完成存放执行结果
                      char recovery[1024]; //存放/cache/recovery/command中的命令
             };

    (1)command=="boot-recovery"时,系统会进入Recovery模式。Recovery服务会具体根据/cache/recovery/command中的命令执行相应的操作(例如,升级update.zip或擦除cache,data等)。

    (2)command=="update-radia"或"update-hboot"时,系统会进入更新firmware(更新bootloader),具体由bootloader完成。

    (3)command为空时,即没有任何命令,系统会进入正常的启动,最后进入主系统(main system)。这种是最通常的启动流程。

    三、DVB升级的实现方式

    (1)离线升级之USB升级:

    优点:实现难度小,依赖性小,适合单个升级。

    缺点:大批量升级效率较低,需要额外U盘设备。

    有通用bootloader如u-boot来实现USB升级,通常我们可以在u-boot的引导kernel的之前做相关升级处理;

    (2)在线升级之IP升级:

    优点:简单。

    缺点:依赖于网络,需要服务端支持。

    我们在开发中使用TFTP来做烧写处理,被认为是最简单的方式,同样只要用户终端有网络,并被获知需要升级,和已知TFTP服务端及文件名,便能很容易的实现升级,在TFTP升级中,我们不需要额外修改tftp的代码,只需要为自动参数传递升级的命令即可。

    在uboot中需要先设置serverip参数,然后使用

    tftp内存地址服务端的文件名如:tftp80000000 vmlinux.ub

    在CFE中可以直接使用

    flash–noheader服务器IP:文件路径分区

    如:flsah–noheader 192.168.1.100:/vmlinuz flash0.kernel

    考虑到网络的连通的不确定性以及丢包的问题,一般我们在内网中使用或者可以在工厂批量升级使用。

    (3)在线升级之OTA升级:

    优点:用户参与少,直接由前端控制,适合大批量升级

    缺点:依赖前端码流,依赖机顶盒tuner。

    OTA升级(OnTheAir),又称空中升级,是指用户终端直接通过信号通道接收下载方式来升级软件。是厂家最重要的一种升级方式,用于大批量用户升级。在手机,以及其他一些移动终端也有用到,它们主要是通过3G或者Gprs等无线升级方式,也可以总体概括到网络升级中。只是具体区别于通常所说的电信网络以及这里的无线网络和我们将讨论的数字电视网络。机顶盒的OTA升级数据可以根据不同厂商自己的方式封装,打包成TS流,然后播放,机顶盒终端接收到流,通过解析NIT等相关表来获取升级信息。

    不同平台的OTA实现也不尽相同,但思路都是需要针对具体平台对锁频,接收和解析码流,最后烧写到flash中。

    四、DVB升级简单总结

    DVB升级无论是在线升级还是离线升级,最终都是要进入recovery安装update.zip升级包。

    五、升级应用相关的好文章,前面写的都算是抛砖,玉都在这里。

    1、基于linux的数字电视机顶盒几种升级方式的设计与实现

    2、 Android系统Recovery工作原理之使用update.zip升级过程分析(一)---update.zip包的制作这个要从一一直看到八估计收获不小。

© 著作权归作者所有

二进制的忧伤
粉丝 9
博文 19
码字总数 16902
作品 0
深圳
程序员
私信 提问
DVB网关--DVBlast

DVBlast是一个简单而强大的流媒体应用,基于Linux的DVB API开发。它打开一个DVB设备进行调整,放置PID过滤器,配置CAM的模块,组合数据包以输出RTP数据。DVBlast被设计为一个定制IRD或CID的核...

匿名
2009/12/17
2.9K
0
海思Hi3136卫星数字电视信道接收芯片处理器参数介绍

Hi3136是一款同时支持DVB-S(ETS 300 421)、DVB-S2(ETS 302 307)和DirecTV(ITU-R BO.1294 System B)标准的卫星数字电视信道接收芯片。芯片完成卫星数字信号从基带采样到MPEG-TS流输出的全数字...

牛牛00
06/17
0
0
Kodi 15.2 Isengard 发布,改进 Android 屏幕缩放

Kodi 15.2 Isengard 最终版本发布,包括一些 bug 修复,最主要的是解决 Android 屏幕大小自适应的问题。同时还升级了 DirectX 11。 Bug 修复 • Fix non DVB subtitles • Fix incompatible...

oschina
2015/10/20
2.2K
1
联发科MT5582数字电视芯片处理器介绍

MT5582是一款高度集成的中端智能电视SoC,为消费电子制造商提供一体化解决方案,可构建高品质,高性价比且功能丰富的全高清智能电视,兼容全球标准。 MT5582的True 4K解码器结合了4K UHD HE...

牛牛00
06/04
0
0
U盘上的操作系统 Puppy Linux 4.1.1发布

Puppy Linux 是个相当小巧的 Linux 发行版,虽然它只有几十MB的大小,但它自带了大量的描扫仪、打印机、数码相机的驱动以及音乐录制/编辑/转换软件。Barry Kauler于2008年11月3日中午发布Pup...

oschina
2008/11/04
396
0

没有更多内容

加载失败,请刷新页面

加载更多

idea修改新的git地址

我们在项目变动中通常会遇到更换git地址情况,这里介绍一个在idea项目中简单更换git地址操作: 1、点击VCS; 2、点击Git; 3、点击Remotes; 具体步骤如图 4、点击框中链接即可在右边看到一个...

west_coast
19分钟前
6
0
将规则集传递给mixin

允许包装在mixin中定义的css块。 分离的规则集是一组CSS属性、嵌套规则集、媒体声明或者是存储在变量中的任何其他内容,我们可以将它包含在规则集中或其他结构中,并且所有属性都将复制到那里...

凌兮洛
20分钟前
4
0
玩转阿里云 Terraform(一):Terraform 是什么

从本文起,我将陆续推出一系列有关 Terraform 的文章,从概念,特点,工作机制,用法以及最佳实践等多个方面由浅入深的向大家介绍如何在阿里云上玩转 Terraform。同时也希望借此机会,与感兴...

阿里云官方博客
21分钟前
4
0
科研大数据面临的挑战

近几十年硬件的发展非常迅猛,第一台Macintosh苹果电脑的内存是128KB(0.13MB),现在很多笔记本配的是8GB的内存,硬盘1TB(1024GB),2TB的很常见。大型的数据服务器上还会有更大的储容量,...

英论阁学术院
21分钟前
5
0
python学习10.09:Python列表和元组的底层实现

有关列表(list)和元组(tuple)的底层实现,本节分别从它们的源码来进行分析。 首先来分析 list 列表,它的具体结构如下所示: typedef struct { PyObject_VAR_HEAD /* Vector o...

太空堡垒185
22分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部