`
huozheleisi
  • 浏览: 1239269 次
文章分类
社区版块
存档分类
最新评论

Q格式/启动过程/cmd文件

 
阅读更多

定点处理器对浮点数的处理:
1> 定义变量为浮点型(float,double),用C语言抹平定点处理器和浮点处理器的区别,但是程序的代码庞大,运算速度也慢。
2> 放大若干倍表示小数。比如要表示精度为0.01的变量,放大100倍去运算,运算完成后再转化。但是这个做法比较僵硬,如要将上面的变量重新定义成0.001精度,又需要放大1000倍,且要重新编写整个程序,考虑溢出等问题。
3> 定标法:Q格式:通过假定小数点位于哪一位的右侧,从而确定小数的精度。
Q0:小数点在第0位的后面,即我们一般采用的方法
Q15 小数点在第15位的后面,0~14位都是小数位。
转化公式:Q=(int)(F×pow(2,q))
F=(float)(Q×pow(2,-q))
Q格式的运算
1> 定点加减法:须转换成相同的Q格式才能加减
2> 定点乘法:不同Q格式的数据相乘,相当于Q值相加
3> 定点除法:不同Q格式的数据相除,相当于Q值相减
4> 定点左移:左移相当于Q值增加
5> 定点右移:右移相当于Q减少
Q格式的应用格式
实际应用中,浮点运算大都时候都是既有整数部分,也有小数部分的。所以要选择一个适当的定标格式才能更好的处理运算。一般用如下两种方法:
1> 使用时使用适中的定标,既可以表示一定的整数复位也可以表示小数复位,如对于2812的32位系统,使用Q15格式,可表示-65536.0~65535.999969482区间内的数据。
2> 全部采用小数,这样因为小数之间相乘永远是小数,永远不会溢出。取一个极限最大值(最好使用2的n次幂),转换成x/Max的小数(如果Max是取的2的n次幂,就可以使用移位代替除法)。
5. Ti的qmath.lib库说明:
见TI的文档C28x IQMath Library (SPRC087a).zip的详细说明。
TI公司给出了一个Q格式的数学库qmath.lib
注意Q格式函数使用的时序和空间要求,尽量避重就轻。


来看个具体的例子吧
#define maxf 120; //整数默认的是Q0;
f=50.01 //想表示的频率
unsigned int f;
f=((unsigned long )5001<<15)/(maxf*100) //先移位扩大100倍,转换格式之后移位15位后结果就是想要的
可以得到f=13656



DSP2812的启动过程

a)程序硬件复位或者软件复位
b)判断mp/mc是否为0,微计算机模式(为1,当为微处理器模式时,2812内部的bootrom被禁止,通过zone7从外部调引导程序启动。这个比较适合flash引导的启动。)
c)为0则从boot rom启动,否则从外部启动(0x3F FC00)
d)到boot rom的0x3F FC00处取出复位向量,跳到boot函数:2812有一块flash地址从0x3F F000-0x3F FFFF在出厂时ti已经固化好了引导程序initboot:Iniboot函数判断几个GPIO引脚来判断使用哪一种引导模式,比如flash boot模式,检测SPICLKA,SCITXA,GPIO34的电平,当都为高电平时表明是片内flash boot模式,那么initboot执行完后跳转到0x3F 7FF6处,这个时候指令占据两个字节,刚好在代码模块之前。一定是是跳转指令才行。。。)
e)采集io管脚状态,确定启动模式。2812提供几种启动模式:
SCITXDA(GPIOF4) MDXA(GPIOF12) SPISTEA(GPIOF3) SPICLK(GPIOF2)
1 x x x FLASH启动
0 1 x x SPI启动
0 0 1 1 SCI启动
0 0 0 0 PARALLEL启动



f)根据io状态选择boot方式
g)如果是flash,程序退出boot函数,跳转到0x3F 7FF6(codestart)
h)取出跳转指令,跳转到自己的指定地址或者C初始化的入口_C_INT00(0x3F6000)处(DSP281x_CodeStartBranch.asm中)
i)在C初始化的入口_C_INT00对一些变量,堆栈和寄存器进行必要的设置,该函数在c的库函数内(RTS Library)
j)进入main函数(0x3F658E,这个地址不是固定的。但是在flash里面。)


注:根据TI中文手册总结如上。。。。。

3F8238
_c_int00: 这个地址是我一次程序运行观测到的。这个地址会随时的变化,但是总在3F8000到3FA 000 之间,也就是在H0 SRAM中间。
具体的可以参照TMS320F2812的存储器的空间。。
CMD文件的编写
首先简要介绍:

链接命令文件(.cmd文件)通过段定位控制命令,分配程序代码和数据运行存储空间。

链接命令文件有两个重要的指令:MEMORY和SECTIONS。

(1)、MEMORY

指出目标系统中物理上存在的存储空间的范围,即可供程序使用的存储空间范围。在默认状态下,PAGE0代表程序空间,PAGE1代表数据空间。

(2)、SECTIONS

1)、描述输入段如何组合成输出段。

2)、定义可执行程序的输出段。

3)、指出输出段存放在存储空间中的位置。

4)、允许重命名输出段。

.cmd文件编写的目的 确定程序和数椐的装载运行空间,校验数据和程序代码的长度,定义输入/输出文件,安排系统中可用的存储器,程序段、数据段、堆栈以及复位向量和中断向量的地址空间。

链接命令文件通过段定位控制命令,分配程序代码空间、数据代码空间、程序运行空间、堆栈空间。


.CMD文件命令格式

Ø MEMORY:定义目标板物理存储空间分配,默认状态下,PAGE0为程序空间, PAGE1为数据空间。

Ø SECTIONS:定义程序连接过程中各个输入段与输出段之间的关系,并给出输出段地址。

① 给出输入段组合成输出段的方式;

② 定义可执行程序的输出段;

③ 指出输出段存放在存储空间中的位置;

④ 允许重命名输出段。

下面分析一个简单的,helloword 经典的CMD
MEMORY
{
PAGE 0 :

PROG : origin = 0x3f8000, length = 0x0023fff
RESET : origin = 0x0, length = 0x3f


PAGE 1 :
DATA : origin = 0x008000, length = 0x001fff
}

SECTIONS
{
.reset : load = RESET, PAGE = 0
.text : load = PROG, PAGE = 0
.cinit : load = PROG, PAGE = 0
.vectors : load = PROG, PAGE = 0
.stack : load = DATA, PAGE = 1
.data : load = DATA, PAGE = 1
.ebss : load = DATA, PAGE = 1
.bss : load = DATA, PAGE = 1
.econst : load = DATA, PAGE = 1
.const : load = DATA, PAGE = 1
.cio : load = DATA, PAGE = 1
}

说明:

.text: ;程序代码在第0页

.reset ;复位在第0页
.cinit: ;初始化变量在第0页
.pinit: ;初始化参数在第0页

.vectors :一些向量在第0页
.bss: ;非初始化变量在第1页

.ebss ;初始化变量在第一页。

.const: ;常数在第1页
.
.sysmem: ;系统的东东,初始化一些东西,硬件的。

.cio: ;C语言I/O调用在第1页
.stack: ;堆栈在第1页

分享到:
评论

相关推荐

    cmd操作命令和linux命令大全收集

    CMD命令:开始-&gt;运行-&gt;键入cmd或command(在命令行里可以看到系统版本、文件系统版本) 命令大全 1. gpedit.msc-----组策略 2. sndrec32-------录音机 3. Nslookup-------IP地址侦测器 ,是一个 监测网络中 DNS...

    CMD网络命令及用法

    cppy 1st.jpg/b+2st.txt/a 3st.jpg 将2st.txt的内容藏身到1st.jpg中生成3st.jpg新的文件,注:2st.txt文件头要空三排,参数:/b指二进制文件,/a指ASCLL格式文件 copy $\svv.exe"&gt;\\ip\admin$\svv.exe c:\ 或:copy\\...

    bat批处理文件实现复制、删除、创建文件夹、执行程序、打开文件

    /Z 用重新启动模式复制网络文件。 Xcopy 复制文件和目录,包括子目录。 语法 xcopy Source [Destination] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d[:mm-dd-yyyy]] [/s [/e]] [/t] [/k] [/r] [/h] [{/a|/m}] ...

    如何编写批处理文件批处理文件批处理文件

    表示不显示@后面的命令,在入侵过程中(例如使用批处理来格式化敌人的硬盘)自然不能让对方看到你使用的命令啦。 Sample:@echo off @echo Now initializing the program,please wait a minite... @format X: /q/u...

    rar压缩软件.rar

    RAR 只支持 RAR 格式压缩文件,它默认有 .rar 扩展名。不支持ZIP 和其他格 式。即使创建压缩文件时指定了 .zip 扩展名,它仍然是 RAR 格式的。Windows 用户 可以 WinRAR,它支持更多的压缩文件类型,包括 RAR 和 ...

    网管教程 从入门到精通软件篇.txt

    CMD:Windows NT,OS/2的命令文件;DOS CD/M命令文件;dBASEⅡ程序文件 CPI:Microsoft MS-DOS代码页信息文件 CPL:控制面板扩展名,Corel颜色板 CPP:C++代码文件 CPR:Corel提供说明书文件 CPT:Corel 照片-...

    入门学习Linux常用必会60个命令实例详解doc/txt

    -v,--verbose:处理每个文件/目录时印出名称。 --help:显示此帮助信息并离开。 --version:显示版本信息并离开。 mount 1.作用 mount命令的作用是加载文件系统,它的用权限是超级用户或/etc/fstab中...

    Editplus 3[1].0

    复制相应 *.CTL 文件到软件安装目录,重新启动 EditPlus ,则系统自动识别。 作者主页有很多语法自动完成文件下载,地址 http://editplus.com/files.html 【14】工具集成——编译器集成例子(Java、Borland C++、...

    visualsvn server 2.5.1 企业版安装文件+汉化注册

    注明,按步骤来,注册及安装不成功或者出错,关于安装过程中出现的服务不能启动的原因,请访问本站博客,很多原因是没有按步骤来。。。 另:visual svn server服务端本身是免费的,只有visual svn是收费商用的,功能上...

    清除临时文件的bat程序.pdf

    "" echo "此⽂件夹为空" bat获取当前⽬录 @echo off echo 当前盘符:%~d0 echo 当前盘符和路径:%~dp0 echo 当前盘符和路径的短⽂件名格式:%~sdp0 echo 当前批处理全路径:%~f0 echo 当前CMD默认⽬录:%cd% ::上⼀...

    sql server 集群配置

    9 选择AD数据库和日志文件的存放位置 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407739565AxuX.png" \* MERGEFORMATINET 10 存放SYSVOL的存放位置(注意:一定要放在NTFS的分区中) ...

    !!!!ap6212a0_a33_sc3817r_验证通过_修正wifi的配置文件为nvram_ap6212.txt

    (以后重新解压缩SDK的时候,直接导入这个.config文件即可!) 2、(这个不修改:) Q:\a33\ap6212a0_a33_sc3817r\android\device\softwinner\astar-y3\overlay\frameworks\base\core\res\res\values\config.xml...

    实验十三Linuxftp服务器.doc

    (3) 用匿名(anonymous)登录 进入MS-DOS,输入:ftp FTP服务器的IP地址 输入用户名:anonymous , 口令:任意输入 (提示输入口令一般为e- mail地址格式,且在ftpaccess中设置anonymous_enabl=YES); 1. 登录成功...

    PHP整站套件-1.3.4

    重新解压, 执行 Init.cmd , 然后执行 Stop.cmd 再彻底删除所有文件. Q: PHP 配置文件(php.ini)在哪? ____________________________________________________________________ A: .\...

    mongodbWindows3.6.2

    用win+r打开运行框,输入“cmd”运行。(要以管理员的方式运行)把目录切换到安装的目录,执行下面的命令。 msiexec.exe /q /i mongodb-win32-x86_64-2008plus-ssl-3.0.0-signed.msi INSTALLLOCATION="安装目录" ADD...

    Jhead (Exif 信息批量命令行编辑工具,win命令行,含源代码)一个直接用命令查看修改删除图片属性Exif信息的文件

    jhead这个DOS程式必需在DOS下执行,如何在windows中启动DOS? 以windowsXP为例: 开始——运行 在开启处键入cmd C:\DocumentsandSettings\user。这即是我们的电脑硬碟(简化来说。其实只是硬碟的一部份)。试着click这...

    服务器性能变慢 c盘temp文件夹存在大量sess开头文件的问题原因及解决

    保存后双击运行,即开始进行删除处理(也可直接在cmd命令行中输入执行)你也可以将其加入开机启动项,以使得每次重启系统后即执行一次删除处理。 提示: 1. 如果这里执行一直显示无法进行(志文工作室最先遇到的情况

    72055569.vbs病毒专杀

    4.正常启动系统后按下键盘“菜单键+R”弹出运行,输入“cmd”确定 5.在cmd命令行输入“attrib -s -h -r x:\autorun.inf” 回车后输入“del /f /q x:\autorun.inf” (X为你电脑的盘符,有多少个盘符执行多少次) ...

    网狐荣耀版开发使用常见问题解答

    二、删除文件试一下,看看是不是文件被占用,如果删除不了,就是被占用,可以查是哪个程序占用,不行重启服务器试一下。 三、是不是路径有问题。 十二、网狐荣耀版房卡游戏在手机客户端不出现房卡房间 最近,有...

    一款定时/循环执行任务的绿色小软件

    [内容]del c:\*.log /q /s 6.模拟按键: 用来发送按键(附录有相关按键说明) 如: [内容]^%z 相当于按了Ctrl+Alt+z ,QQ出来了吧!…… 7.发送邮件: 用来定时发送Email的,当然你要先设置好SMTP,也就是用来发信的...

Global site tag (gtag.js) - Google Analytics