DSP bootloader学习笔记1
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的更多相关文章
- DSP - Bootloader学习笔记2
DSP - Bootloader学习笔记2 彭会锋 1 本文主要以F2812为例进行说明的: F28027内部资源 F28027内存映射
- DSP EPWM学习笔记2 - EPWM相关寄存器设置问题解析
DSP EPWM学习笔记2 - EPWM相关寄存器设置问题解析 彭会锋 本篇主要针对不太熟悉的TZ 故障捕获 和 DB 死区产生两个子模块进行学习研究 感觉TI的寄存器命名还是有一定规律可循的 SEL ...
- DSP EPWM学习笔记1 - EPWM定时中断
DSP EPWM学习笔记1 - EPWM定时中断 彭会锋 EPWM模块组成 EPWM有7个子模块组成:时间基准 TB.比较功能 CC.动作限定 AQ.死区产生 DB.斩波控制 PC.故障捕获 TZ.事 ...
- ucore lab1 bootloader学习笔记
---恢复内容开始--- 开机流程回忆 以Intel 80386为例,计算机加电后,CPU从物理地址0xFFFFFFF0(由初始化的CS:EIP确定,此时CS和IP的值分别是0xF000和0xFFF0 ...
- linux dev/dsp 声卡学习笔记
原文地址:dev/dsp 声卡学习笔记">linux dev/dsp 声卡学习笔记作者:ziyou飞翔 无论是从声卡读取数据,或是向声卡写入数据,事实上都具有特定的格式(f ...
- LM3S之boot loader学习笔记-1
LM3S之boot loader学习笔记-1 彭会锋 (首先声明,此系列文章编写参考了很多资料,其中一些内容是原版内容的引用和整理,并加入了一些自己的见解,我已经尽量标明引用部分,如有未全部标注部分, ...
- Linux 学习笔记
Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...
- GRUB学习笔记(转自http://www.cnblogs.com/evilzy/archive/2008/03/30/1130173.html)
grub学习笔记1 首先要了解的几个概念 1.1 启动管理器 启动管理器是存储在磁盘开始扇区中的一段程序,例如,硬盘的MBR(Master Boot Record),在系统完成启动测试后,如果系统是从 ...
- jz2440-linux3.4.2-kernel移植【学习笔记】【原创】
平台:jz2440 作者:庄泽彬(欢迎转载,请注明作者) 说明:韦东山二期视频学习笔记 交叉编译工具:arm-linux-gcc (GCC)4.3.2 linux:linu3.4.2 PC环境:ubu ...
随机推荐
- C# 多线程之一:信号量Semaphore
通过使用一个计数器对共享资源进行访问控制,Semaphore构造器需要提供初始化的计数器(信号量)大小以及最大的计数器大小 访问共享资源时,程序首先申请一个向Semaphore申请一个许可证,Sema ...
- 用于JDBC操作数据库的公共类
/* * @(#)CommonSql.java 2011-9-5 * * Copyright 2011 Bianjing,All rights reserved. */ import java.sql ...
- (1)若当前字符不是大于0的数字字符,则复制该字符于新字符串中; (2)若当前字符是一个数字字符,且它之后没有后继字符,则简单地将它复制到新字符串中; (3)若当前字符是一个大于0的数字字符,并且还有后继字符,设该数字字符的面值为n,将它的后继字符重复复制n+1次到新字符串中; (4)以上述一次变换为一组,在不同组之间另插入一个"_"用于分割(5))若字符串中包含有下划线'_',则变换为 \UL
package b; import java.util.Scanner; public class Zifuchuan { public static void main(String[] args) ...
- [转][Unreal3教程]引擎使用操作入门教程
前言 如果你想转载这篇文章,请不要把这篇文章的来源去掉:http://blog.sina.com.cn/zjmjeo 一来是对我辛苦写这篇文章肯定,二来我可以有更多机会和你们这些朋友交流 1.打开引擎 ...
- Give My Text Back
Give My Text Back 标签(空格分隔): 算法 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 To prepare for the English exa ...
- Django 过滤器 实例
实例1 safe让Html标签以及一些特殊符号(如<)生效,下面以例子说明: # value = '<b>CPT</b>' # 那么输出的时候,CPT就是加粗的,如果不加 ...
- Qt根据汉字生成位图,可连续调用,生成的位图不会有杂点
void MainWindow::drawText(int font_size, QString str, int n){ QPainter p; QSize size(460, font_size) ...
- “System.Data.OracleClient.OracleConnection”已过时
处理办法: 在oracle 安装目录下 找到 Oracle.DataAccess.dll添加引用,然后 using Oracle.DataAccess.Client;其他的都不用动,即可.连接字符串中 ...
- 用一张图片制作skybox图片 (如何制作360全景图、立方体)
我转发的帖子在这里 http://dong2008hong.blog.163.com/blog/static/4696882720140294039205/ 原帖不知道地址 我这里简单整理了下 去掉了 ...
- iOS - Xib
前言 xib 文件可以被 Xcode 编译成 nib 文件,xib 文件本质上是一个 xml 文件,而 nib 文件就是编译后的二进制文件,该文件将视图等控件对象封装了起来,而在程序运行起来后,这些对 ...