您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> ldr文件烧进Flash不能启动问题
本帖共有4199个阅读者
发表帖子 发表投票 回复主题
ldr文件烧进Flash不能启动问题
xuanjinjin(论坛新手)
xuanjinjin
头衔:社区公民
帮派:无帮无派
帖数:57
金钱:562
积分:72
注册时间:2013/9/23
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
ldr文件烧进Flash不能启动问题
原写程序ldr是20K,仿真和烧写都可以正常运行;然后我在源代码基础上增加显示图片的功能,增加了jpeg解码的程序,增加到了30K,图片数据我转换成二进制烧写到Flash中去,程序运行之后先从Flash中取出,放在SDRAM中,然后解码显示。
加图片之后生成的30K程序就显示运行不了了,真是不知道如何下手,难道内存溢出了,可是我有外部SDRAM啊,不知道如何下手?
然后我在程序的每条指令后面增加一个UART发送提示字节看看程序可以跑到哪里,结果一个也没有接收到。奇怪啊
求助 中。。。

我的底牌是什么
等级:论坛新手 参考IP地址:*.*.*.*
2014/3/12 15:59:13
xuanjinjin(论坛新手)
xuanjinjin
头衔:社区公民
帮派:无帮无派
帖数:57
金钱:562
积分:72
注册时间:2013/9/23
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
我然后把所有的代码都删去,只保留图片的解码显示程序,发现可以正常显示。
请问:Flash存储的代码是如何在DSP里面的分配的,尤其是code如果超过了内存空间,怎么办?BF531可以容纳的最大code是多少?

我的底牌是什么
等级:论坛新手 参考IP地址:*.*.*.*
2014/3/12 16:11:13
xuanjinjin(论坛新手)
xuanjinjin
头衔:社区公民
帮派:无帮无派
帖数:57
金钱:562
积分:72
注册时间:2013/9/23
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
发现问题所在了,是因为代码太大了,当我把代码删减到16K时候就可以正常显示图片了,请问怎么解决呢?谢谢andy,请问BF531有代码容量限制吗?

我的底牌是什么
等级:论坛新手 参考IP地址:*.*.*.*
2014/3/13 15:03:00
xuanjinjin(论坛新手)
xuanjinjin
头衔:社区公民
帮派:无帮无派
帖数:57
金钱:562
积分:72
注册时间:2013/9/23
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
我仔细看了一下ldr文件,发现分配到SDRAM中的程序段就不可以执行,这是为什么呢?

我的底牌是什么
等级:论坛新手 参考IP地址:*.*.*.*
2014/3/13 17:55:23
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
4信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
你生成LDR时,没有加入initcode文件,或者文件错误

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2014/3/13 22:07:43
xuanjinjin(论坛新手)
xuanjinjin
头衔:社区公民
帮派:无帮无派
帖数:57
金钱:562
积分:72
注册时间:2013/9/23
5信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
initcode文件我加上了,昨天发现问题所在了,但是不知道怎么解决。问题是:在L1中的doj文件可以运行,但是运行到SDRAM中的doj就运行不了了,我猜应该是指令从L1转到SDRAM时候出了问题,还是编译程序时候需要设置什么东西?

我的底牌是什么
等级:论坛新手 参考IP地址:*.*.*.*
2014/3/14 8:46:32
xuanjinjin(论坛新手)
xuanjinjin
头衔:社区公民
帮派:无帮无派
帖数:57
金钱:562
积分:72
注册时间:2013/9/23
6信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
If, at the time of writing the program, the destination is known to be less
than a 13-bit offset from the current PC value, then the JUMP.S 0xnnnn
instruction may be used. If the destination requires more than a 13-bit
offset, then the JUMP.L 0xnnnnnnn instruction must be used. If the destination
offset is unknown and development tools must evaluate the offset,
then use the instruction JUMP 0xnnnnnnn. Upon disassembly, the instruction
is replaced by the appropriate JUMP.S or JUMP.L instruction.
这是手册上的代码,我想我的问题在这里,应该是程序运行的时候没有正确跳转,请问andy如何设置装配程序的代码呢?

我的底牌是什么
等级:论坛新手 参考IP地址:*.*.*.*
2014/3/14 9:27:12
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
7信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
你看看你的工程选项中有没有生成LDF文件,然后在LDF选项部分,使能你的内存,并且正确设置你的内存大小。然后用section("sdram0_bank1") 指令,加在你比较大的数组或者不常用的函数前面,将其指定到SADRAM中

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2014/3/14 23:55:31
xuanjinjin(论坛新手)
xuanjinjin
头衔:社区公民
帮派:无帮无派
帖数:57
金钱:562
积分:72
注册时间:2013/9/23
8信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

上传的图片
  20143151132860.png [ 37.49 KB 643×464 ] (缩略时请点击查看原图)

 


上传的图片
  20143151134360.png [ 39.82 KB 643×464 ] (缩略时请点击查看原图)

 


上传的图片
  20143151134860.png [ 41.64 KB 643×464 ] (缩略时请点击查看原图)

 


上传的图片
  20143151135460.png [ 43.09 KB 643×464 ] (缩略时请点击查看原图)

 


上传的图片
  20143151135860.png [ 40.78 KB 643×464 ] (缩略时请点击查看原图)

 




「该帖子被 xuanjinjin 在 2014-03-15 11:04:43 编辑过」

我的底牌是什么
等级:论坛新手 参考IP地址:*.*.*.*
2014/3/15 11:00:50
xuanjinjin(论坛新手)
xuanjinjin
头衔:社区公民
帮派:无帮无派
帖数:57
金钱:562
积分:72
注册时间:2013/9/23
9信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
Welcome();   //进入初始化界面
UART_Tbyte(0x13);
// PPI_TMR_DMA_Enable();
for(j=0;j<90000;j++)
for(i=0;i<1000;i++);   //延时函数

UART_Tbyte(0x14);
    InitMainmenu();                //这个函数定义到SDRAM中了,发现就卡在这里了
    UART_Tbyte(0x15);
    KeyFunc=0x13;
    asm("ssync;");
    asm("ssync;");
   UART_Tbyte(0x16);

串口输出的数据是:00 5A 11 12 13 14
发现SDRAM中的数据空间可以正常使用,但是代码区就不运行了。
谢谢andy
我的LDR文件是:
上传的图片
  20143151191360.png [ 39.69 KB 963×750 ] (缩略时请点击查看原图)

 


发现位于SDRAM中的代码段就不能运行,数据可以正常读写,当运行到SDRAM中的代码区时候,串口就不再输出数据。


「该帖子被 xuanjinjin 在 2014-03-15 11:10:30 编辑过」

我的底牌是什么
等级:论坛新手 参考IP地址:*.*.*.*
2014/3/15 11:06:57
16
1
1/2
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.154029 Call, 1 Queries, Processed in 0.031250 second(s),