使用器件 ti dsp c2000 2837x

1、dsp的上电过程和boot mode以及boot loader

1)dsp的上电顺序,

对于双核系统而言 , 他的上电启动顺序如下所示:

系统复位或者重新上电之后:

cpu2系统重新上电之后,一直处于复位状态

cpu1系统会自动跳转到地址0x3fffc0中获取复位向量,福为向量的目的就是为了使得系统自动跳转到0X3F8000地址上,开始执行boot ROM 段中存储的boot loader代码段;

对于cpu1而言,cpu1的boot ROM段中的boot loader程序首先会从TI - OTP内存段中获取设备的配置自,并配置好器件。

完成之后,boot loader 开始执行DCSM 和OTP JTAGLOCK流程:DCSM流程:1)读取OTP中的Zx_poinyer;2)解码指针值;3)度去除TI-OTP中的SECDC;4)读取Zx BOOT模式;5)读取ZX DCSM模块

完成之后,boot loader检测FUSEERR寄存器中是否存在错误标志位,并采取错误处理机制

之后初始化RAM和内存端的ECC/PARITY

完成之后cpu1将引导CPU2系统跳出复位操作,之后便不管cpu2的运行状态

之后CPU1系统的boot loader将会根据外部的GPIO 和XRST(一般链接下载器才会有) 来确定程序的启动方式是从flash启动还是ram启动,或者是在XRST为低的情况下,更具PIE向量表(地址为0xd00)的第一个32位的值来确定启动方式(一般是链接了下载器的情况);

确定完之后,CPU1的boot loader代码段会将各种信息都更新到指定的RAM段中,以便于CPU1的程序去读取这些状态字。

此时按照启动方式开始跳转程序,如果是flash启动则将程序指针跳转到0x80000(flash的其实地址),如果是ram启动则将程序指针跳转到0x00000(ram段的起始地址),同时结束boot loader并进入CPU1的主程序。

如果此时的启动方式是外设启动,那么boot loader则会等待外部程序按照一定的格式将程序加载到ram中,程序代码传输完成之后,跳转到运行指针开始运行程序代码段。

此时cpu1的boot loader 完成使命,已退出,并开始执行CPU1中的用户程序。

此时的CPU2系统知识退出了复位状态,任然在等待启动模式确定,需要cpu1的用户程序来引导cpu2的引导,如果是cpu2也要从flash启动,则通过ipc command即可触发,但是如果cpu2也需要从外设启动,那么需要cpu1的应用首先设置好外设的引脚,之后在触发cpu2开始接受程序。

关于链接下载器的xrst为低是的系统启动过程参考手册

关于外设启动的代码输入格式也可以参考手册

//--------------------------------------------------------------------------------------------

2、实现在线升级的个些方案 :

次方案是用 : 升级代码 + 用户应用程序的方式来实现

升级代码的用途是下载到DSP中上电就开始运行的代码段,主要功能是上电之后首先监测是否有升级指令发出,如果有则进入升级流程,如果没有则通过(LB )的跳转指令跳转到指定的程序运行其实处。

假设 : 将用户应用程序的其实地址定义为0XC0000;当监测到需要升级的指令,则升级代码通过外设将上位机输送过来的代码通过DSP的flash API写入到以0XC0000为起始地址的FLASH sector中,当所有的数据全部书写完成之后,通过跳转指令,将程序指针跳转到0XC0000上,便开始执行用户程序。

数据格式 : 上位机输送给升级代码的格式就是bin文件当中的内容,dsp将.out文件转化为bin文件,然后dsp接受到这个文件直接写入到flash中就可以,原因是 :将同一个程序的.out文件下载到dsp中,然后通过uniflsh去查看内部代码段的内容和bin文件的内容是一样的。

至于为什么bin文件和.out文件的格式和datasheet上的数据流内容不一样,我还没找到原因

关于DSP的boot mode / boot loader /上电顺序 /在线升级等问题的总结的更多相关文章

  1. spring boot / cloud (三) 集成springfox-swagger2构建在线API文档

    spring boot / cloud (三) 集成springfox-swagger2构建在线API文档 前言 不能同步更新API文档会有什么问题? 理想情况下,为所开发的服务编写接口文档,能提高与 ...

  2. Spring Boot的属性加载顺序

        伴随着团队的不断壮大,往往不需要开发人员知道测试或者生产环境的全部配置细节,比如数据库密码,帐号信息等.而是希望由运维或者指定的人员去维护配置信息,那么如果要修改某项配置信息,就不得不去修改项 ...

  3. dsp 28377在线升级 实例总结

    使用dsp品台28377d来实现在线升级的功能. 方案 : 升级程序  +  应用程序 升级程序 : 主要的目的是将上位机发送过来的应用程序数据(ccs编译生成的.bin文件)烧写到指定位置,之后在跳 ...

  4. 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU启动那些事(2)- Boot配置(BOOT Pin/eFUSE)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的Boot配置. 在上一篇文章 Boot简介 里痞子衡为大家介绍了Boot基本原理以及i.MXRT Bo ...

  5. 痞子衡嵌入式:飞思卡尔i.MX RTyyyy系列MCU启动那些事(2)- Boot配置(BOOT Pin/eFUSE)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RTyyyy系列MCU的Boot配置. 在上一篇文章 Boot简介 里痞子衡为大家介绍了Boot基本原理以及i.MXR ...

  6. spring boot ----> spring boot 和spring的联系

    1.自动配置的实现是基于spring 4.0的条件化配置,这是spring 4.0的新特性.比如,定义一个类A,它实现Condition接口,覆盖condition接口的match()方法,那么该类变 ...

  7. [Spring Boot] Spring Boot启动过程源码分析

    关于Spring Boot,已经有很多介绍其如何使用的文章了,本文从源代码(基于Spring-boot 1.5.6)的角度来看看Spring Boot的启动过程到底是怎么样的,为何以往纷繁复杂的配置到 ...

  8. Spring Boot -- Spring Boot之@Async异步调用、Mybatis、事务管理等

    这一节将在上一节的基础上,继续深入学习Spring Boot相关知识,其中主要包括@Async异步调用,@Value自定义参数.Mybatis.事务管理等. 本节所使用的代码是在上一节项目代码中,继续 ...

  9. spring boot 使用属性加载顺序

    1.命令行中传入的参数 2.SPRING_APPLICATION_JSON中的属性.SPRING_APPLICATION_JSON是以JSON格式配置再系统环境变量中的内容 3.java:comp/e ...

随机推荐

  1. 只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态。还请确保在应用程序配置的 // 节中包括 System.Web.SessionSta

    我直接在父类的构造方法中调用了sessionj结果就报这个错误 搜了好久 让改web.config 可是不起作用 代码如下: public class BasePage:System.Web.UI.P ...

  2. Macaca开源--阿里的移动自动化测试框架

    https://github.com/macacajs/macaca-cli 项目在此 https://macacajs.github.io/macaca/cli-usage.html 文档在此 项目 ...

  3. 使用hbuilder编辑器实现移动app打包

    作为一枚web前端来讲,需要了解的东西太多,需要学习的也太多了,那天因为公司需求,就研究了下移动网站打包成app的方法,这种东西好像是H5出来后就有推出的,因为性功能不行,就没怎么关注,但现在移动互联 ...

  4. Windows Phone 八、文件读写IO

    文件存储的类型 •本地应用文件: •ApplicationData.Current.LocalFolder: •漫游应用文件: •ApplicationData.Current.RoamingFold ...

  5. cache与MMU与总线仲裁

    为了以合理的价格,设计容量和速度满足计算机系统的需求,计算机体系结构设计者设计出了存储器的层次结构. "Cache-主存"和"主存-辅存"是最常见的两种层次结构 ...

  6. h5视频上传之前端视频压缩研究

    今天领导接到一个h5上传手机视频的需求,主要是要看用户在这个视频中有没有完成某个任务,比如投篮进了几个球. 但是由于手机拍摄的视频文件大小有点大,直接上传的话,用户流量顶不住,而且特别耗时,在这样的情 ...

  7. git 常用命令粗略总结

    本文版权归cxun所有,如有转载请注明出处与本文链接,谢谢!原文地址:http://www.cnblogs.com/cxun/p/5630190.html git的功能很强大,但是其实很简单,用来用去 ...

  8. 亲手使用Sencha Touch + phonepag开发Web APP随笔 -- 第一个APP

    参考博文: [Phonegap+Sencha Touch] 移动开发1.准备工作 [Phonegap+Sencha Touch] 移动开发2.PhoneGap/Cordova初步使用   经过差不多1 ...

  9. VB.NET中Form窗体运行时,按F1进入全屏状态

    1.在KeyDown事件中添加: If e.KeyValue = 112 Then Me.WindowState = FormWindowState.Maximized End If 注:1.其中11 ...

  10. CSS颜色代码

    颜色值 CSS 颜色使用组合了红绿蓝颜色值 (RGB) 的十六进制 (hex) 表示法进行定义.对光源进行设置的最低值可以是 0(十六进制 00).最高值是 255(十六进制 FF).从 0 到 25 ...