qinlong
驱动牛犊
驱动牛犊
  • 注册日期2003-03-24
  • 最后登录2009-02-01
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:2419回复:17

请教高手问题(DSP 54X)

楼主#
更多 发布于:2003-05-09 14:15
我现在要把DSP的程序在线写到FLASH里面,就是我需要写一个程序来实现将我的目标文件写到FLASH里面。现在不明白有两个地方。一、我是写OUT文件还是经过HEX转换后的二进制文件呢?二、我把目标数据怎么放呢?因为DSP不支持文件操作!你能在百忙中抽出时间解答一下我的问题吗?非常感谢!
glqgglq
驱动小牛
驱动小牛
  • 注册日期2001-04-16
  • 最后登录2008-10-28
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望4点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-05-10 09:12
不知道54系列的dsp是否支持hpiload方式,如果可以就可以用pc机上载上去
qinlong
驱动牛犊
驱动牛犊
  • 注册日期2003-03-24
  • 最后登录2009-02-01
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-05-10 11:35
支持,但硬件是别人设计的,所以只能采用在线写FLASH的方式,现在就是不知道数据源放在哪里?
lyingying
驱动牛犊
驱动牛犊
  • 注册日期2003-03-20
  • 最后登录2007-09-12
  • 粉丝0
  • 关注0
  • 积分60分
  • 威望6点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-05-11 11:43
well, you can not directly write the out file. It is in the special TI format-- I forgot the terminology. You have to write a parser to parse that into binary. I think TI has a tool to convert it into binary, but I am not hundred percent sure. If you can not find it, you can write one. The TI assembly language manual has a thorough doc about the spec.

A easy hack though: If you use CC or CCS, load the out, then dump the memory -- C54 has both data and program, you need two images.

You need a small bootloader, which can load the program, you can put it in EE or hardcode it on flash, depend on your HW.

qinlong
驱动牛犊
驱动牛犊
  • 注册日期2003-03-24
  • 最后登录2009-02-01
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-05-11 13:13
我以前是通过HEX转换成二进制文件后通过烧写器写到FLASH里的。
关于你说的通过CCS来实现,我不太明白,是通过CCS将OUT文件调进去,然后怎么写到FLASH里呢?能给一个详细的介绍吗?非常感谢你的宝贵建议!
lbcat
驱动牛犊
驱动牛犊
  • 注册日期2002-03-19
  • 最后登录2007-09-27
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-05-12 11:56
   CCS有个外加插件可以写flash的,你上网找找,不过我用的是
2407,不知你用的合不合适。 :D :D
mardux
驱动小牛
驱动小牛
  • 注册日期2002-11-21
  • 最后登录2004-09-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-05-12 19:20
如果你片外还带RAM的话,可以先通过CCS将你的.OUT文件加载到RAM,
然后写一个烧写程序将已经加载到RAM中的.OUT文件搬到FLASH即可。
(这种情况肯定可以的)。


不过如果没有外带RAM的话,可能要转换.OUT为别的文件格式。不过这种情况我现在也没有把握,现在也正郁闷着。还请各位大虾指点。
(我的FLASH已经焊在板子上,想通过CCS来实现)
wuhongxing
驱动牛犊
驱动牛犊
  • 注册日期2002-04-01
  • 最后登录2004-05-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-05-16 11:43
将.OUT文件用TI的HEX500.EXE 转化成16进制文件,找个软件将其转化成.BIN文件存放在PC机上,再自己编个DSP的小程序编译成.OUT,用仿真器下到DSP里跑,该程序将PC机上.BIN文件打开(谁说DSP不支持文件操作?),读进来,写到FLASH里的对应地址.可否?
qinlong
驱动牛犊
驱动牛犊
  • 注册日期2003-03-24
  • 最后登录2009-02-01
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-05-16 12:10
请问DSP对文件怎么进行操作呢?能给一点源代码?在下非常感谢你了!我现在这个问题就是解决不了呀!请多多帮忙呀!
qinlong
驱动牛犊
驱动牛犊
  • 注册日期2003-03-24
  • 最后登录2009-02-01
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-05-16 12:11
我的信箱是:qinlong@vip.sina.com,非常希望得到你的帮助了!
wuhongxing
驱动牛犊
驱动牛犊
  • 注册日期2002-04-01
  • 最后登录2004-05-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-05-16 16:37
  CCS下的C编译器支持ANSI C语法,当然支持对主机PC文件的操作,和TURBO C的操作一样,如:
CCS下
#include<stdio.h>
main()
{
FILE *fp;
fp=fopen(\"file1\",\"w\");
}
就在当前目录下建立、打开一个文件file1;
qinlong
驱动牛犊
驱动牛犊
  • 注册日期2003-03-24
  • 最后登录2009-02-01
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-05-16 16:50
非常感谢你的帮助,我前一次试了一下,好象不行,我再去试一下了!
wuhongxing
驱动牛犊
驱动牛犊
  • 注册日期2002-04-01
  • 最后登录2004-05-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-05-16 16:55
我试过可以的
qinlong
驱动牛犊
驱动牛犊
  • 注册日期2003-03-24
  • 最后登录2009-02-01
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2003-05-19 18:43
wuhongxing:你好,我试了还是不行,请问你用的CCS是多少版本的?
wuhongxing
驱动牛犊
驱动牛犊
  • 注册日期2002-04-01
  • 最后登录2004-05-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2003-05-20 08:46
V2.0版本;你是打开什么文件?
如果那样不行,可以采用比较麻烦一点的办法:
自己编再一个烧写小程序:burn.ou,用来把主程序:main.out写到FLASH中。在写FLASH时,还应加上引导表的表头,因为.out文件与hex500.exe产生的引导表.hex文件相比,没有表头,这要参考详细的引导表格式说明。最后在数据空间的0xFFFF处写入引导表的起始地址
注意烧写程序定义的程序空间不能与主程序的程序空间重合,以免覆盖。 烧写时,同时2个PROJECT,先LOAD main.out,再LOAD burn.out,2个程序都在DSP的内部RAM中,然后执行burn.out,将main.out从内部RAM搬到外部FLASH,由于烧写小程序很小,所以不会占太多空间。
qinlong
驱动牛犊
驱动牛犊
  • 注册日期2003-03-24
  • 最后登录2009-02-01
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2003-05-20 09:34
我打开的是一个二进制文件,我在试一试你后面说的那个方法。非常感谢你的帮助!
wuhongxing
驱动牛犊
驱动牛犊
  • 注册日期2002-04-01
  • 最后登录2004-05-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2003-05-20 12:43
第1种方法是可以的,我已经试过了:
过程大致如下:
#include <file.h>
#include <stdio.h>
#include <stdlib.h>
#include <std.h>
#include <sys.h>
先打开一个.bin文件
fp=fopen(\"d:main.bin\",\"rb\");
文件位置指针到文件头;

rewind(fp);

while(!(feof(fp)))
{
bin_copy=getc(fp);
if(flashadderr=0Xffff)
FlashBurn(flashaddress,boot_table_address);
else
FlashBurn(flashaddress,bin_copy);
flashaddress++;
}

第2中方法比较麻烦,但也是可以的。
lyingying
驱动牛犊
驱动牛犊
  • 注册日期2003-03-20
  • 最后登录2007-09-12
  • 粉丝0
  • 关注0
  • 积分60分
  • 威望6点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2003-05-21 14:25
sorry to be late. I was not here recently.


to write flash, you need to write a small burner and loader. I am not hundred percent sure, I think that there are some rules to use flash, things like you have to erase a block and write a block, but you can read any bytes, you have to check the spec of your chip. You might need to read the ...

After you load the program, run a small burner to burn your pmem and dmam into flash. But you have to have a small loader, in EE or as part of your bootable flash by modifing your boot loader, just copy the flash out to your pmem and dmem.\\

I think I run into an app note from TI about flash, try search it.

have fun
游客

返回顶部