DSP bootloader学习笔记1

彭会锋

参考:

 TMS320F28xx DSP中内部Flash的应用研究   http://wenku.baidu.com/view/83e9837931b765ce050814fd.html

1 关于_c_int00问题

从代码注释可以看到 :

_c_int00 is branch to start of boot.asm in RTS libray  //翻译为中文就是:_c_int00是rts2800_ml.lib的入口地址; 
  • _c_int00是C初始化代码的入口地址
  • 在你用C编程的时候,DSP需要执行一段C运行支持库代码以完成C运行环境的初始化,_c_int00就是这段初始化代码的入口地址,
  • _c_int00函数在运行支持库(rts,runtime-support library)中。连接器会将这个函数的入口地址放置在复位中断向量处,使其可以在初始化时被调用。c_int0函数进行以下工作以建立C运行环境:为系统堆栈产生.stack块,并初始化堆栈指针。从.cinit块将初始化数据拷贝到.bss块中相应的变量;
  • 执行完初始化代码后,就跳转到main函数,开始运行C程序;


2 f2802x_codestartbranch.asm的分析

此文件是.asm文件,所以需要懂得些汇编指令问题,下面是一些学习到的汇编命令:

  • 跳转指令:LB;
  • .set : 设置常量给标号 - The .set directive sets a constant value to a symbol;
  • .ref 在别的地方定义的,在这里被应用,类似于c语言的extern;.def是在当前文件中定义变量; .global 应用的范围相对更广些,可以代替.ref和.def;
  • .sect 定义包含代码和数据的自定义段,类似于函数定义,注意这里的格式;
  • 注释从分号“;”开始,可以放在指令或汇编命令的后面,也可以放在单独的一行或多行;

3 在阅读的代码中,我发现了一个很有意思的事情,程序应用的是rts2800_ml.lib,印象中的都是rts2800.lib,所以搜索了一些,还是有些不同的!

  • rts2800.lib:C/C++运行支持库;
  • rts2800_ml.lib C/C++大内存模式运行支持库.
  • rts2800_ml.lib中有大量浮点运算处理的函数而rts2800.lib没有
  • 在指针的访问空间上有区别,rts2800.lib中库函数的指针为near,故不能访问3Fxxxx,rts2800_ml.lib可以访问(大小内存模式故名思议就是可以访问的内存的大小有区别,小内存模式只能访问低64k地址,也就是16位地址线)

4 最后附上一张dsp启动的完整示意图,方便大家理解,稍后继续写后续几篇学习笔记

DSP bootloader学习笔记1的更多相关文章

  1. DSP - Bootloader学习笔记2

    DSP - Bootloader学习笔记2 彭会锋 1 本文主要以F2812为例进行说明的: F28027内部资源 F28027内存映射  

  2. DSP EPWM学习笔记2 - EPWM相关寄存器设置问题解析

    DSP EPWM学习笔记2 - EPWM相关寄存器设置问题解析 彭会锋 本篇主要针对不太熟悉的TZ 故障捕获 和 DB 死区产生两个子模块进行学习研究 感觉TI的寄存器命名还是有一定规律可循的 SEL ...

  3. DSP EPWM学习笔记1 - EPWM定时中断

    DSP EPWM学习笔记1 - EPWM定时中断 彭会锋 EPWM模块组成 EPWM有7个子模块组成:时间基准 TB.比较功能 CC.动作限定 AQ.死区产生 DB.斩波控制 PC.故障捕获 TZ.事 ...

  4. ucore lab1 bootloader学习笔记

    ---恢复内容开始--- 开机流程回忆 以Intel 80386为例,计算机加电后,CPU从物理地址0xFFFFFFF0(由初始化的CS:EIP确定,此时CS和IP的值分别是0xF000和0xFFF0 ...

  5. linux dev/dsp 声卡学习笔记

    原文地址:dev/dsp 声卡学习笔记">linux dev/dsp 声卡学习笔记作者:ziyou飞翔       无论是从声卡读取数据,或是向声卡写入数据,事实上都具有特定的格式(f ...

  6. LM3S之boot loader学习笔记-1

    LM3S之boot loader学习笔记-1 彭会锋 (首先声明,此系列文章编写参考了很多资料,其中一些内容是原版内容的引用和整理,并加入了一些自己的见解,我已经尽量标明引用部分,如有未全部标注部分, ...

  7. Linux 学习笔记

    Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...

  8. GRUB学习笔记(转自http://www.cnblogs.com/evilzy/archive/2008/03/30/1130173.html)

    grub学习笔记1 首先要了解的几个概念 1.1 启动管理器 启动管理器是存储在磁盘开始扇区中的一段程序,例如,硬盘的MBR(Master Boot Record),在系统完成启动测试后,如果系统是从 ...

  9. jz2440-linux3.4.2-kernel移植【学习笔记】【原创】

    平台:jz2440 作者:庄泽彬(欢迎转载,请注明作者) 说明:韦东山二期视频学习笔记 交叉编译工具:arm-linux-gcc (GCC)4.3.2 linux:linu3.4.2 PC环境:ubu ...

随机推荐

  1. ViewController之间的切换动画

    一 .API介绍 iOS7开始,苹果推出了自定义转场动画API.从此,任何可以用Core Animation实现的动画,都可以出现在两个ViewController的切换之间 知识点图: 从上图可以看 ...

  2. .Net面試題

    初级.NET开发人员 - 任何使用.NET的人都应知道的 1. 描述线程与进程的区别? 进程是系统所有资源分配时候的一个基本单位,拥有一个完整的虚拟空间地址,并不依赖线程而独立存在.进程可以定义程序的 ...

  3. .Net需要掌握的知识

    一.C#开发 1.C#基础 变量定义 如何变量的初始化 变量的作用域 常量 字符串处理 使用正则表达式 什么是CTS类型?数据类型如何分类以及各个数据类型范围 类型的转化分类 显式转换何隐式转化如何区 ...

  4. hdu 1874(Dijkstra + Floyd)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874 畅通工程续 Time Limit: 3000/1000 MS (Java/Others)    Me ...

  5. HDU 2098 分拆素数和

    HDU 2098 分拆素数和 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768K (Java/Others) [题目描述 ...

  6. 没有Path的Binding

    当Binding源本身就是数据且不需要Path来指明时,可以设置Path的值为".",或直接省略Path.XAML中这个"."可以省略不写,但在C#代码中是不能 ...

  7. FLASH CC 2015 CANVAS 实际应用过程中遇到的【粉色】问题(不定期更新)

    1,导入音乐导致发布卡死 一开始以为是不支持,FQ搜索了一些帖子,也有说不能再时间轴加音乐,需要用代码加入,想想不太可能啊,如果真的不能为什么IDE不禁用呢? 而实际问题是: 我使用的其中一条音效有问 ...

  8. iOS - OC NSValue 值

    前言 @interface NSValue : NSObject <NSCopying, NSSecureCoding> 将任意数据类型包装成 OC 对象 1.比较两个 NSValue 类 ...

  9. iOS - Swift NSProcessInfo 系统进程信息

    前言 public class NSProcessInfo : NSObject 1.获取系统进程信息 // 创建系统进程信息对象 let processInfo:NSProcessInfo = NS ...

  10. poj1971Parallelogram Counting

    链接 越来越感觉到了数学的重要性!.. 这题本来用以斜率和长度为key值进行hash不过感觉很麻烦还TLE了.. 最后知道中点一样的话就可以组成平行四边形,初中数学就可以了.. #include &l ...