精华内容
下载资源
问答
  • 产品升级方案

    千次阅读 2010-07-27 09:50:00
    最佳的产品升级策略是什么

    在给客户提案的时候,有的客户比较细心,会问到我关于产品升级的问题。可惜的是,我们的产品是在太过于山寨,销售方面没有框架可循,技术方面更无所谓升级的概念,每次都只好含混过关。

     

    抽空考虑了一下关于产品升级的策略,发现微软的方式,真是一条现成的成功模式:

     

    首先推出产品的1.0版本,然后大张旗鼓的开始兜售,然后允诺客户:永久免费升级!

     

    然后要维持一个稳定的产品线,把从各个实施项目中收集到的反馈意见或者bug修改过之后,升级到1.1版、1.2版。。。。1.15版等等。升级一定是要频繁的,有时候哪怕真的一点功能性的修改都没有,改几个固定文字也都要出一个升级版本。客户有时候要的,不是软件的功能,而是软件服务的感觉。。。

     

    然后,关键的,等积累到一定时候,2.0版就应运而生,这个时候,最重要的,是要全面改进外观,不管功能多么的一致,外观绝对要改的谁也认不识。

     

    这个时候,就可以自豪的跟客户宣布:我们的产品已经升级到2.0版本,1.0版本已经停止服务支持。你可以继续使用1.0版本及其最新升级包,但是不会再有新的升级包发布,我们也将停止续签所有1.0版本的维护合同。当然,鉴于友好合作关系,1.0用户购买2.0的时候,可以自动获得最大额度的优惠。。。

     

     

    当然,这样的策略还是有风险的,客户是否会买2.0版本的帐,这取决于客户的性格。不过,如果1.0的服务能够跟上,相信还是有一定把握的。

     

    展开全文
  • IT互联网直播平台产品升级发布会策划方案.pptx
  • 介绍了关于GE智能平台升级改造解决方案的详细说明,提供其它产品的技术资料的下载。
  • 介绍了一种基于XILINX FPGA的在线程序升级方案,该方案不需要额外增加器件,在不改变硬件状态的前提下,实现产品的软件功能升级。由于对配置芯片(PROM)的所有操作均由FPGA的内部逻辑实现,故此方案具有良好的移植...
  • Android Small框架增量升级方案

    千次阅读 2016-08-21 17:59:56
    但是如果使用增量升级方案,用户只需要下载新旧版本的差异包,然后在本地合成就行,这样省时省力。我们可以看下某产品使用增量升级时的数据: xxx.2.4.0000.apk 32MB xxx.2.5.0000.apk 28MB 差异包 6.3MB 其中增量

    背景

    随着业务的发展,安装包的体积也在不断的增大,这时候,如果要版本更新,用户不得不去下载完整的安装包。但是如果使用增量升级方案,用户只需要下载新旧版本的差异包,然后在本地合成就行,这样省时省力。我们可以看下某产品使用增量升级时的数据:

    • xxx.2.4.0000.apk 32MB
    • xxx.2.5.0000.apk 28MB
    • 差异包 6.3MB

    其中增量包就是上文提到的差异包,可见用户每次升级只需下载差异包就行,省时省力。

    原理

    这里写图片描述

    这里写图片描述

    其原理就是,我们在服务器端先拿新版本安装包和旧版本安装包进行对比,在生成差异包之后下发,之后客户端根据对应的差异包和本地旧版本安装包合成,便生成了新版本安装包

    实现

    0x01 下载编译差分合并工具:
    apk文件的差分和合并都是使用的开源的二进制比较工具 bsdiff实现,值得注意的是,该工具依赖bizp2这个库。在下载完毕后,直接make便可以编译工具,不过我在一台苹果机器上编译的时候出现了一点问题,那时候make文件没法正确的读取,所以我修改了make文件,读者编译的时候(仅限mac, linux)只需要运行install.sh脚本就行。这部分的代码我已经单独抽出来作为一个repo,读者喜欢可以自行star,然后下载编译 repo

    0x02 生成差异包
    如果你刚刚编译成了bsdiff,在命令行里面输入bsdiff或者bspatch就会出现如下的信息:
    这里写图片描述
    其中bsdiff用于比较新旧文件的差异部分并生成差异包,bspatch根据之前差异包和旧文件生成新文件,我们可以从这两个可执行文件的报错信息看出该命令如何使用。我们这里有两个文件:new.so 和 old.so
    这里写图片描述
    之后我们运行 diff old.so new.so patch.so便生成了差异包patch.so
    这里写图片描述

    这里写图片描述

    0x03 合成新版本
    通过刚刚的介绍,我们已经在Android端实现了相关的库,只需要简单的调用

    YPatch.patch(oldFilePath, newFilePath, patchFilePatch)

    便可以将新版本存放到newFilePath指定的目录下

    结合Small框架

    上面好像都是在讲原理,没有具体的实践讲解的话,估计读者还是不懂,我们现在就结合Small框架来看看如何做到增量更新。
    对于我们的Small框架,我们要知道,它把每个插件都编译成.so文件,然后存放到app的native目录下,不过,如果它发现自己的download目录有新的插件,那么就会去加载download目录下的插件,并且这种加载优先权是最大的,也就是说它会优先加载download目录下的插件。所以,如果我们要做增量更新,旧文件就从app的native目录进行读取,然后从服务器端下载增量包,最后合成的文件存放到download目录下,这样每次插件启动都会到download目录下加载新的插件。

    实现:

            //其中pluginUri对应的是bundle.json中插件对应的uri
            //下文有介绍
            String packageName = parsePackageName(context, pluginUri);
            if (TextUtils.isEmpty(packageName)) {
                Log.e(TAG, "can't parse plugin's package name, check if assets/bundle.json is deleted");
                return;
            }
    
            // small框架的约定就是,插件名字是以lib+包名.so明明的
            // 比如如果我们插件的包名是com.chan.app.setting
            // 那么对于插件名就是libcom_chan_app_setting.so
            final String soName = "lib" + packageName.replaceAll("\\.", "_") + ".so";
    
            //找到旧版本的插件安装包
            final File oldPlugin = new File(context.getApplicationInfo().nativeLibraryDir, soName);
            //新版本都存放到small指定的download目录下
            final File newPlugin = new File(FileUtils.getDownloadBundlePath(), soName);
    
            //开始下载patch
            OkHttpClient okHttpClient = new OkHttpClient();
            Request request = new Request.Builder().url(uri).build();
    
            Call call = okHttpClient.newCall(request);
            call.enqueue(new Callback() {
                @Override
                public void onFailure(Request request, IOException e) {
    
                }
    
                @Override
                public void onResponse(Response response) throws IOException {
    
                    //保存从服务器端下载的增量包
                    File patch = new File(FileUtils.getDownloadBundlePath(), "patch.so");
                    FileOutputStream fileOutputStream = new FileOutputStream(patch);
                    byte[] content = response.body().bytes();
                    fileOutputStream.write(content);
                    fileOutputStream.flush();
                    fileOutputStream.close();
    
                    //合成的新插件安装包存放文职有new Plugin指定
                    YPatch.patch(oldPlugin.getAbsolutePath(), newPlugin.getAbsolutePath(), patch.getAbsolutePath());
                }
            });

    可以看到这个函数中出现的pluginUri,它其实对应的是bundle.json中插件的uri:

    {
      "version": "1.0.0",
      "bundles": [
        {
          "uri": "main",
          "pkg": "com.chan.app.main",
          "rules": {
            "item": ".ItemActivity"
          }
        },
        {
          "uri": "setting",
          "pkg": "com.chan.app.setting",
          "rules": {
            "index": ".MainActivity"
          }
        }
      ]
    }

    也就是这里的main, setting

    而这个bundle.json就是宿主中asset下的small配置文件:
    这里写图片描述

    示例代码:

    OkSmall.merge(LaunchActivity.this, "setting", "http://192.168.1.100:8080/patch.so");
                    Toast.makeText(LaunchActivity.this, "重启应用后更新生效", Toast.LENGTH_SHORT).show();

    至此,所有的内容已经介绍完毕

    要踩的坑

    更新插件的时候要记得把插件的versionCode加大,比如 我们这里的setting插件:
    这里写图片描述

    修改它的build.gradle文件:
    这里写图片描述
    要记得加大11行的数值,不然加载还是不成功的

    引用

    展开全文
  • FPGA远程升级方案

    千次阅读 2020-03-12 19:11:03
    概述 现场可编程门阵列(FiELD Programmable Gate ... 结语 本文以提高FPGA远程更新程序的方便性为目标,提出了一种基于EPCS Flash的远程在线更新FPGA程序的方法,从而在应用中能够使基于FPGA的产品更加方便地维护升级

    概述

      现场可编程门阵列(FiELD Programmable Gate Array,FPGA)器件具有高密度、低功耗、高速、高可靠性等优点,在航空航天、通信、工业控制等方面得到了大量应用。FPGA的处理器分为软核和硬核,并且软核处理器具有高度的灵活性和可配置性。

      由于FPGA器件采用的是SRAM工艺,在断电的情况下FPGA内的配置数据将丢失,所以需要非易失的存储器来结合FPGA完成嵌入式系统的设计。EPCS(Erasable Programmable Configurable Serial)Flash属于串行接口Flash,具有接口简单、体积小、配置方便的特点,通常用来存储FPGA的配置文件和NiosII的软件可执行代码。在经过合理的配置后,系统在上电后就可以从EPCSFlash中读取这些文件来启动整个系统。

           为了能使系统得到更灵活的应用,充分发挥FPGA的灵活性、高效性,FPGA的软硬件程序都需要方便的更新和升级功能;而当形成产品后,通过JTAG和NiosII IDE工具来联合完成对EPCS Flash的更新烧写很不方便。为此,本文结合ALTEra公司提供的工具,提出了一种远程在线更新FPGA配置文件和NiosII程序文件的方法。

      2 系统硬件结构

      系统硬件结构如图1所示。系统主要有上位机系统、FPGA系统、EPCS Flash三个主体部分。上位机系统提供人机交互的部分,FPGA系统包括NiosII处理器、EPCS控制器、网络及串行接口和其他外部接口,EPCSFlash主要用于存储FPGA的配置文件和Nios程序映像文件。上位机系统通过FPGA集成的网络及串行接口来完成通信工作。

      FPGA采用Altera公司的CycloneIII系统的EP3C40F48417N芯片。它具有低功耗、高集成度、易于使用的特性。EPCS Flash采用Altera公司的EPCS16SI16N芯片,它支持多种可配置的时钟源,最高支持100 MHz的外部时钟源,具有16 Mb的存储空间,足够满足一般的FPGA配置文件和Nios程序文件的存储需要。

      3 更新程序处理流程

      更新FPGA的配置文件和NiosII的应用程序的流程如图2所示。

      本方法把由NiosII IDE生成的FPGA配置文件和NiosII程序文件合并,并编程为一个可以直接执行的、包含FPGA配置文件和NiosII程序文件的二进制BIN文件。然后把该文件通过X-modem协议由上位机系统传输给NiosII的应用程序。NiosII的应用程序接收到完整的BIN文件后,把该BIN文件写入到EPCS Flash中。最后,Nios II的应用程序停止看门狗,程序重新启动,即完成了FPGA的远程在线更新程序的过程。

      4 合并程序文件

      Nios II的启动要经历两个过程:

      ①FPGA器件本身的配置过程。如果内部逻辑中使用了NiosII,则配置完成的FPGA中包含有NiosII软核CPU。

      ②NiosII本身的应用过程。一旦FPGA配置成功后,NiosII就被逻辑中的复位电路复位,从reset地址开始执行代码。

      Nios II IDE将FPGA的配置文件(.SOF文件)和应用程序(.elf文件)转成flash格式文件,转换后的flash格式文件是一种S-Record格式数据,包含如下区域:<type><length><address><data><checksum>。各字段的意思分别如下:<type>表示记录的类型;<length>表示数据的长度;<address>表示数据写入的起始地址,该字段的长度取决于<type>的取值;<data>表示存储的数据;<checknum>表示校验位。


    配置文件和应用程序可能有多个段,每个段前面都插有一个“程序记录”。一个“程序记录”由2个32位的数据构成,一个是32位的整数,另一个是32位的地址,分别表示程序段本身的长度和程序段的运行时地址。其存储布局如图3所示。

    c.jpg

     


    为了在更新程序时把FPGA配置文件和Nios II应用程序一起更新,把FPGA配置文件和Nios II应用程序合并成一个文件,并且把合并后的Flash格式的文件转换成不需要地址解码就能直接执行的二进制BIN文件。具体处理流程如图4所示。

    d.jpg


    在合并程序的过程中,去掉了flash文件中的长度、目的地址等用于解析程序的信息,并且把程序映像由字符格式转换为二进制格式。合并后的BIN文件包含FPGA配置文件和Nios II应用程序,并且Nios II应用程序紧挨在FPGA配置文件的后面,其存储布局如图5所示。

    e.jpg

     



    5 Nios II更新程序模块处理
    Nios II程序中的更新程序模块主要负责从上位机接收合并后的可执行BIN文件,并把该BIN文件写入EPCSFlash,处理流程如图6所示。

    f.jpg


    5.1 程序文件的传输
    Nios II应用程序中的更新程序模块和上位机系统采用X-modem协议传输程序文件,X-modem协议是一种网口和串口通信中广泛用到的异步传输协议。
    如果在程序传输过程中出现错误,更新程序模块能够通过设置超时来退出更新程序的状态。
    5.2 对EPCS Flash的读写
    由于EPCS Flash的串行配置器件定义了特殊的读写协议,所以Nios II程序只能通过ALTEra提供的HAL API(ApplICation Program Inter face,应用程序接口)来完成读写Flash。打开、关闭Flash设备的API为:alt flash open_dev()和alt_flash_close_dev()。操作Flash读写
    的API为:alt_read_flash()和alt_write_flash_bLOCk()。清除Flash的API为alt_erase_falsh_block()。

    结语
    本文以提高FPGA远程更新程序的方便性为目标,提出了一种基于EPCS Flash的远程在线更新FPGA程序的方法,从而在应用中能够使基于FPGA的产品更加方便地维护升级。

    展开全文
  • MSP430远程升级解决方案

    千次阅读 2019-01-06 20:59:06
    有没有普通用户就可操作的固件升级方案呢?就像BootLoader,可通过命令选择启动方式,甚至实现远程升级?答案是有的。其原理就是通过FLASH操作,将新的固件刷到FLASH中去,然后转到固件起始地址运行。 MSP430串口...

    MSP430系列单片机常用的程序下载方式为JTAG、BSL,实际产品应用中会用到固件的升级,如果是异地设备,则给升级带来不少麻烦。有没有普通用户就可操作的固件升级方案呢?就像BootLoader,可通过命令选择启动方式,甚至实现远程升级?答案是有的。其原理就是通过FLASH操作,将新的固件刷到FLASH中去,然后转到固件起始地址运行。

    MSP430串口升级程序

    MSP430 FLASH ROM

    1. 如下图所示, 如下图所示, 如下图所示, FLASH ROM为 32K 字节(FLASH大小要根据你用的具体型号做调整),分为 64 个段,每个段分为512字节,512字节又细分为 8个块 ,每块64字节。
    2. MSP430F247每次最小可擦除1个段的空间,除操作是向该写满 0XFF。
    3. 32K字节的 FLASH ROM起始地址为 0X0FFFF –0X080000,对应Segment0 – Segment63.
    4. RST复位中断向量地址为0x0FFFE,其由编译器自动写入跳转到main()函数的指令。

    中断向量

    当有外部复位、软件复位等,都会触发名为Reset的不可屏蔽中断,此时MCU会自动将中断向量0xFFFE装入PC指针,从而引导程序运行。

    除了Reset中断,还有其它例如UART、SPI、TIMER等中断,中断向量记录了中断子程序的入口地址,中断向量表如下:

    存储空间划分

    增加串口升级功能需要有该部分程序支撑,因此FLASH ROM被划分成两部分:引导分区、应用分区,引导分区运行bootloader,当需更新代码时,该部分程序会读取串口发送的程序文件,并将其下载到应用分区;应用分区用于存放应用程序。

    具体分区见下图:

     

    这里系统分区占了1.5KB的空间,其中包括了bootloader代码分区和中断向量分区。应用程序分区也包括代码区和中断向量区两部分,但这里的中断向量却是虚拟中断向量,原因:中断向量表不能重新映射。

    具体实现

    程序更新步骤:1、设备上电; 2、运行bootloader程序; 3、延时等待远程升级命令;4、收到更新命令进入升级功能;5、将应用分区擦除;6、将接收的程序写入应用分区;7、跳转PC指针到应用程序的复位地址;8、运行新的应用程序。

    程序运行的步骤: 1、设备上电; 2、运行bootloader程序; 3、延时等待远程升级命令;4、接收命令超时;5、判断应用分区是否有可运行的程序;6、跳转PC指针到应用程序的复位地址;7、运行应用程序。(如果没有可运行的程序、则一直停留在bootloader)

    关键技术:

    1、通过移动PC指针实现了bootloader到应用程序的切换、同时也实现了虚拟中断向量表。

    2、通过FLASH ROM的读写操作实现应用程序的更新

    总结

    顺利实现MSP430的远程升级,这里我要感谢梁先生的网络资料。其实,只要单片机有FLASH的读写接口,就能根据此原理实现bootloader,同时接口也不局限与串口,只要有机制获取新程序,就可以通过这种方式实现对MCU的升级。

    如果需要技术合作可联系 QQ:1174316744

     

     

    展开全文
  • 嵌入式设备差分升级方案讨论

    千次阅读 热门讨论 2018-03-26 13:54:53
    如题,嵌入式设备,比如通信模组等,往往在使用中需要固件升级,但当设备已经部署出去后,再想通过工厂烧录的方式进行升级时不太现实的,一般采用FOTA升级,但当固件size太大的时候,使用蜂窝网进行升级会消耗过多的...
  • 在物联网开发中,OTA升级(firmware update Over The Air)是模组必备的功能,本文将以RTL8711、乐鑫8266 、庆科3186 wifi模块为例介绍几种的常见的... RTL8711 ota升级方案 方案简介 8711flash分区如下图:  ...
  • 钢铁有限公司产品提档升级改造工程_轧钢提高压缩比开坯技术改造项目前期方案.doc
  • 基于WiFi和云端的无线远程升级方案

    千次阅读 2018-08-15 00:07:30
    基于WiFi和云端完成无线远程对产品WiFi固件和MCU固件分别进行升级刷新,当产品售出后需要维护时,该方法具有较强实际意义。  总体方案 利用机智云云端OTA技术+产品主控MCU(STM32)的IAP功能来实现。  具体实现...
  • OCX控件MSI打包升级方案

    千次阅读 2012-03-28 10:07:21
    MSI:MSI文件是Windows Installer的数据包,它实际上是一个数据库,包含安装一种产品所需要的信息和在很多安装情形下安装(和卸载)程序所需的指令和数据。MSI文件将程序的组成文件与功能关联起来。此外,它还包含...
  • 非常实用的网络方案,可以拿去参考规划。 采用成熟的网络技术  采用初步的安全的防护措施  采用成熟稳定的网络产品  采用成熟的布线结构和布线设施
  • 炬力2091方案MP3升级工具,对于维修MP3产品提供维修方法和提供维修思路有帮助
  • 诺普信定增方案获批,募资用于生产线自动化升级、新建项目、产品研发和登记等.rar
  • 诺普信定增方案获批,募资用于生产线自动化升级、新建项目、产品研发和登记等.pdf
  • IAP是In Application Programming的简写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。IAP主要包括...
  • 最近不少人问我如何给单片机升级,如何给arm板升级。也有些人说网上很多工具可以参考或者移植。我当时回答时,如果做功能,自己想怎么玩即可,如果要做成量化的产品最好自己做一套协议。 因为应用场合不同,对于...
  • 共享产品方案开发

    千次阅读 2017-10-18 10:57:59
    共享产品方案开发,分享经济将是在商业公司主导下的,一场新的消费主义观念的升级。用更通俗的话来说,消费者会逐渐接受这种新的理念:一有需要,即可使用。 分享经济最初的定义,是说有效地匹配这个社会上闲散的...
  • 升级解决方案概述zip,在当今的经济环境下,您必须通过升级解决方案来提升生产力,降低维护旧式设备的风险。您需要与具有产品、服务和行业知识的供应商一起工作,以便为您提供升级策略以帮助您最大化竞争优势。
  • HXSN邮件服务器升级技术方案

    千次阅读 2008-11-11 13:54:00
    第1章 邮件升级策略本章覆盖了升级计划的制定及升级到Domino 8需要考虑的问题。Domino体系结构有很多种可能的变化,每一种变化需要考虑的因素可能都不一样。本章不涉及与某个具体设计相关的可能的因素,而主要集中...
  • 软件在线升级设计方案及演变过程分析系统分析员 庞绍伟摘要:本文通过一个虚拟项目,以时间为序,描述了一个软件在线升级设计方案的演变过程,针对遇到的一些典型问题进行分析,提出了相应的解决方法,并对该方案的...
  • Android 数据库升级完整解决方案

    千次阅读 2016-11-24 12:55:19
    数据库升级的意义 我们在开发Android应用的时候,不可避免地要使用数据库。而数据库的结构在第一版的时候定下来,之后发布功能更新,或增加业务逻辑,原来的数据库结构可能就不适用了。而如果数据库的结构与之前...
  • 为了方便维护人员在现场升级产品,我们做这个升级产品。不用拆装设备,实现远程升级产品。 需求分析 所谓远程空中升级,就是利用无线网络给指定MCU更新程序。在这里的无线设备我使用的是蓝牙(CC2541芯片或者CC2542...
  • - OTA在线升级在日常消费电子产品中很常见,比如手机,机顶盒等,通过网络,下载升级数据包,更新操作系统等底层固件进行系统更新升级。 - 在线升级系统对于批量化消费电子产品来说是相当重要的。因为销售给客户的...
  • 电脑硬件升级完全解决方案-1

    千次阅读 2008-05-08 07:57:00
    所谓电脑升级,简而言之就是在您电脑硬件、软件原有的基础上进行进一步的更新改造,而这种改造又是以提高您当前电脑的性能,如运行速度、工作稳定性、应用兼容性等方面为目的的。随着摩尔定律的周期越来越短,原来18...
  • 金蝶云星空 V7.3_产品培训_基础领域_WISE一键升级服务(线上).pptx 包含: 1 WISE一键升级整体解决方案 1.1 应用场景 1.2 整体解决方案 1.3 产品特性 1.4 价值体现 2 WISE一键升级操作流程 3 WISE一键升级应用介绍

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 172,049
精华内容 68,819
关键字:

产品升级方案