背景:最近产品需要立一个技改项目,除了一些硬性需求以外,我还是想做一个对底层DSP进行远程升级的功能。这两天大概研究了一下,觉得这个方案基本可行,但是给领导汇报的时候还是因为技改项目时间紧,怕增加这个功能影响项目进度而被领导KILL了。虽然如此,自己还是想把这个方案写下来,和博友们一起分享和讨论一下,说不定后续还是会要做的。

一,产品系统组成结构。

产品管理单元采用的是PC104+LINUX,底层数据采集采用DSP(TI的C6711不跑操作系统),底层数据采集可以有多路,根据客户需求进行配置。管理单元和DSP采集单元之间是数据通讯方式采用的是PC104的IO口模拟DSP的HPI时许实现对DSP的内存操作,从而实现对DSP采集数据的读取。

二、对DSP进行软件升级的实现原理

因DSP属于产品的底层数据采集板件,因此DSP每次的程序烧录都是使用仿真器在线烧写。这样做烧写麻烦暂且先不说,主要是如果产品已经运用到现场发现bug需要升级时就尤为麻烦了,要不就是更换设备板件,要不就是更换设备整机,无法实现对DSP程序的升级。

DSP采集板上外扩了一个32M的SDRAM和一个16Mbit(2M空间)的FLASH.我的想法是这样的:

1、DSP程序用CCS编译以后会得到一个.out的目标程序,原先是通过仿真器烧写到FLASH中。如果使用远程升级,那么.out文件并不是一个通用的执行文件,需要将其转换为bin二进制文件,TI在CCS里集成了这样的插件,可以实现转换。第一步已经验证,没有问题。

2、将已经转换好的bin文件通过FTP或者web上传等方式上传至管理单元/data目录,管理单元通过HPI可以对DSP的全部内存空间进行操作,那么就可以将bin文件原封不动地写到DSP内存单元中。DSP再把内存上的bin文件内容写到FLASH上。当然,这样做有一个前提,就是要SDRAM中有足够的一段空间来单独存放管理单元写下来的数据,还有一个要注意的是当管理单元通知DSP目前是要进行程序升级时,DSP应停止其它运行,只独立运行在升级模式下。

三、升级过程中的可靠性及安全性

这样升级程序还是有一定风险的,比如如何保证管理单元写到DSP内存单元的数据是无误的?在写FLASH时断电了怎么办?等等,如果出现这些问题,那么将会导致DSP单元无法启动了,就只能更换板件或者重新用仿真器进行烧写了。针对这些问题,我也提出了一下几点解决办法:

1、在管理单元往DSP内存写数据时进行实时动态校验,每写一个字节或者几个字节就再读回来进行校验,确保写下去的数据是正确的。这样做应该会影响读写速度。

2、在进行FLASH擦除前对原来FLASH内的数据进行备份,备份有两种方式,备份到内存上或者是将FLASH分块然后备份到FLASH其它块上,前者简单些,但是如果断电了还是会出问题,后者麻烦些,但是如果断电了,程序还在。

3、还有一个办法,就是将FLASH分成两块,第一块作为出厂程序存放用的,这个一直保持不动。第二块作为升级程序专用,如果程序升级了,那么以后DSP启动就从第二块地址启动,如果升级失败,DSP还是继续原来出厂时的程序。

以上方案并未进行全部验证,只是一个理论上的探讨,是否可行还需进一步验证,因项目为添加这个功能需求,无法继续做,在记录,以备后续沿用。

不知各位博友是否有此类实践检验,可以一起探讨探讨。

阅读(1449) | 评论(2) | 转发(1) |

1

下一篇:没有了

linux远程升级运行程序,在LINUX上对DSP程序远程升级的实现想法相关推荐

  1. 在Linux环境下运行你的第一个C语言程序

    在Linux环境下运行你的第一个C语言程序 1.前言 2.环境配置 1.1 安装编辑器 1.2 安装gcc编译器 3.编写第一个C程序 3.1 新建文件夹 3.2 编辑该文件 3.3 编译mian.c ...

  2. linux asp可以运行吗,宝塔linux面板可以搭建运行asp网站程序吗

    宝塔linux面板可以搭建运行asp网站程序吗?宝塔linux面板怎么支持asp?下面由宝塔教程栏目为大家详细介绍! 首先登录到宝塔 Linux 面板 >> 软件管理 >> 运 ...

  3. 【Linux】Shell运行原理及Linux权限的概念

    文章目录 一.Shell运行原理 二.Linux权限的概念 1)Linux中的用户 2)Linux权限管理 1.文件访问者的分类(人) 2.文件的权限(事物属性) ① 文件类型 ② 文件基本权限 ④ ...

  4. linux下能运行python,(转)Linux下运行python

    原文: http://blog.csdn.net/jackywgw/article/details/48847187 在linux命令行下运行python,可以直接输出hello world jack ...

  5. linux 开机自动运行命令_如何在Linux终端同时运行多个Linux命令

    在一行中运行两个或多个命令可以节省大量时间,并在Linux中提高效率.在Linux中,有三种方法可以在一行中运行多个命令: ; Command 1 ; Command 2 首先运行Command1,然 ...

  6. 计算机运行时删除桌面上的应用程序图标,删除windows桌面上某个应用程序的图标,意味着什么...

    删除windows桌面上某个应用程序的图标,意味着:只删除了快捷图标,对应的应用程序被保留.桌面上的图标是一种快捷方式,是Windows提供的一种快速启动程序.打开文件或文件夹的方法. 本教程操作环境 ...

  7. linux下如何运行c编译,Linux下如何编译并运行C程序

    GCC是Linux操作系统下一个非常重要的源代码编译工具,有着许多重要的选项,支持许多不同语言的编译,如C.C++.Ada.Fortran.Objective.Perl.Python.Ruby以及Ja ...

  8. python输入完怎么运行-如何在服务器上跑python程序

    购买服务器 首先你需要一个服务器,阿里云云翼计划有一个9.9云服务器ECS服务.你怎么买我不管,反正你最后给我搞到一个云服务器. 购买的配置界面 由于阿里云现在限量购买,所以这里只是截个图说明而已,主 ...

  9. linux终端中运行网银盾,Linux下使用Virtualbox安装 Windows 7 操作网银攻略

    作为一个Linux的爱好者,经过数次决心后放弃了双系统,只在自己的笔记本电脑里安装了Linux,坚持数月后发现网银是个问题,只能通过虚拟机来解决,现将安装使用中的要点同大家分享: 操作环境: 硬件:H ...

  10. Linux指定jre运行jar包,Linux如何运行和停止jar包

    项目上线部署的时候,领导要求直接jar包运行,特此研究了一下. 前期准备: 1.待运行的jar包:ROOT.jar 2.装好了jdk的linux环境 具体操作如下: 在/home/greatwall目 ...

最新文章

  1. select * 和 select 所有字段的区别
  2. 剑指offer:求1+2+3+...+n
  3. create_pose算子说明
  4. 黄聪:百度知道中对HTML字符实体、字符编号,开头字符的使用
  5. 较高人工智能的人机博弈程序实现(多个算法结合)含C++源码
  6. linux通过tar包安装docker
  7. VTK:可视化之ColorSeriesPatches
  8. 如何做好性能测试_流程篇
  9. 数据库实现列值合并为行
  10. linux-数据库篇-索引
  11. vue 根据接口数据筛选_如何根据行值变化筛选数据
  12. LayaAir 快捷键设置与资源命名规则
  13. 平方矩阵——3种思路
  14. Cesium中的相机—方向余弦阵
  15. 校验身份证、组织机构代码证、纳税人识别号、营业执照号 的方法
  16. spring深入学习(十九) IOC 之 Factory 实例化 bean
  17. 看完这篇操作系统,和面试官扯皮就没问题了
  18. 图像修复 2021 最新综述——附综述论文分享
  19. Debian Apache完整
  20. uni-app实现PDF预览功能(避坑看这)

热门文章

  1. 【差分算法入门】例题讲解(代码逐句分析)
  2. 机器学习:残差学习、RNN、GAN、迁移学习、知识蒸馏
  3. vue 鼠标点击绘制任意多边形_神操作!PPT也能绘制城市轮廓线
  4. echo输出不重复行到文件 shell_Shell脚本100例:43 shell中echo用法
  5. linux远程搭建web环境,使用Xshell工具远程Linux环境部署web项目
  6. python根据题库答案自动答题器_python实现百万答题自动百度搜索答案
  7. python需要编译_Python编译安装
  8. 艺术招生考试/艺术职称考试/才艺比赛/艺术特长考试/舞蹈比赛等-评委现场打分公开展示系统的定制
  9. REDIS中加锁和解锁问题
  10. Redis学习笔记~Redis并发锁机制