This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DSP28335 如何在外部ram中仿真?

.test 程序空间太大,无法放在内部RAM中运行,flash 下载很慢而且烧写次数有限,希望把程序放在外部RAM中运行。查了很多资料也没有发现应该怎么做。

  • Zhide Zhang

    我认为首先要配置芯片GPIO84~87引脚, 使其的引导模式为Jump to XINTF x16,这种模式下芯片会跑到jump to 0x10 0000开始执行代码,你需要将外部RAM的空间放在这个区间。

    其次,修改CMD文件,将.text段放到XINTF zone6的区间,将BEGIN设为0x10 0000; 

    最后,建议程序中关于XINTF zone6的初始化,需要copy到RAM中运行。

    然后就是Reset CPU, run main。

    Eric

  • Zhide Zhang

    我认为首先要配置芯片GPIO84~87引脚, 使其的引导模式为Jump to XINTF x16,这种模式下芯片会跑到jump to 0x10 0000开始执行代码,你需要将外部RAM的空间放在这个区间。

    其次,修改CMD文件,将.text段放到XINTF zone6的区间,将BEGIN设为0x10 0000; 

    最后,建议程序中关于XINTF zone6的初始化,需要copy到RAM中运行。

    然后就是Reset CPU, run main。

    引导模式参考TMS320x2833x, 2823x Boot ROM userguide

    Eric

  • 你好。

    你可以通过28335引脚的总线外扩一个SRAM。

    然后,根据Datasheet上的Memery Map所示,改写相应的CMD文件配置,生成的.out直接下载就可以了。

  • 恩,谢谢。

  • 你好,按照你说的方法已经编译成功。但是现在又有了新的问题:程序无法下载进去。下载时提示:

    C28xx: File Loader: Data verification failed at address 0x00100000 Please verify target memory and memory map.
    C28xx: GEL: File: F:\DSP\CCS_WORKSPACE\28335\UCGUI_2\Debug\UCGUI_398.out: a data verification error occurred, file load failed.

  • 你好。

    你的SRAM是扩展到Zone6吗?

    能否发一下扩展SRAM部分的原理图看一下。

    在下载程序前,建议先用CCS连上芯片,然后在Memory Browser窗口看一下扩展的SRAM能否看到。例如,你输入地址0x00100000,看窗口中是否可以看到数据。

  • 按照你说的我看了一下是有数据的。

  • 我现在使用的是CCSV6版本,是不是需要配置一下GEL文件?但我在工程的目录下并未找到该类型的文件

  • 我使用的是CCS V6 版本  ,是不是需要配置一下.GEL文件

  • 你好。

    你说得没错。

    如果要用CCS直接Load程序到SRAM,需要写个GEL文件来配置XINTF模块。

  • 你好,请问你有没有一份配置XINTF的.GEL文件,希望参考一下能从中得到一些启发

  • 你好。

    你打开C:\ti\ccsv6\ccs_base\emulation\gel\f28335.gel,找到里面的OnReset(int nErrorCode)函数。

    把最后一行去掉注释。

    你在连上CPU后,做一个Reset(Debug->Reset CPU)就会调用这个函数,从而可以使XINTF被使能。

    这样之后,再去Load你的.out试试。 

    另外,请检查一下,你的Target Configuration文件.ccxml里面是否有包含这个gel。打开.ccxml,在Advanced标签下可以看到。

  • 您好,我想问下,用示波器观察发送程序时,是不是将示波器的探头和地线分别接CAN_H和CAN_L,观察到有波形,峰峰值显示是2.5V左右,

    1.为什么是2.5V呢(隐性电平,逻辑1)?此时是隐性电平吗?因为没有处于发送can网络中,空闲状态是隐性电平。

    2.为什么不是3.5v和1.5v(显性电平,逻辑0)呢?

    还有就是我对隐性电平和显性电平不是很理解,书上只讲了最基本的特点,没有深入讲解。

  • 谢谢你,按照你说的的确成功了

  • Ming,

    1. CANH和CANL都为2.5V代表隐性电平,空闲时为隐性电平,有数据发送时显性(H3.5V,L1.5V)覆盖隐性;

    2. CAN的电气标准规定,具体建议查看CAN2.0协议。

  • 非常感谢您的回复,

    我想问您:

     1.用示波器测试canh和canl两根线,能看出单一dsp 的发出波形是在不停地变化;峰峰值为2.5V左右。我想测试接收程序:但是一点击run,只显示一瞬间的波形,然后波形就回到0V了(波形图如附件所示),不知道这样的测试接收程序的方法对不对?还请您建议一个正确的测试单一can接收程序的方法!Thanks.
    2.我用的是2812的,您能否提供2个调试成功的程序呢,就是很简单的2个程序,一个dsp发01,另一DSP接01.谢谢,导师最近催得较紧,谢谢。


    谢谢。期待您的回复。
  • Ming,

    这样用示波器直接测试CANH和CANL的电压差的方法是可以的,无信号时CANH和CANL都是2.5V(5V的CAN芯片),有信号时有2V的差值(3.5V-1.5V);

    http://www.deyisupport.com/cfs-file.ashx/__key/communityserver-discussions-components-files/56/0272.ecan_5F00_back2back.zip

    参考下TI的例程。谢谢!

  • 谢谢您的回复,

    这个程序,是自测模式下的,我也进行过修改,但就是不成功,我把附件加上,您看我的程序对不对?!谢谢。

    还想问您,怎么用示波器测试单dsp的接收程序呢?!我想测试接收程序:但是一点击run,只显示一瞬间的波形,然后波形就回到0V了(波形图如附件所示),不知道这样的测试接收程序的方法对不对?为什么只显示一瞬间的波形呢?!

    还请您建议一个正确的测试单一can接收程序的方法!Thanks.

    另外我的QQ,1083176055,如果方便的话,我们qq聊吧。谢谢,期待您的回复,非常感谢您。。

    发送和接收2个工程.zip
  • 白天、登陆不了QQ不好意思,建议先单发或单收的板子先和PC机通讯,排除问题,都能通讯上再连一起。

    看了下你的程序,建议检查下接收邮箱的方向设置。谢谢!

  • 非常感谢您的回复,我检查了一下,接收邮箱方向没错呀,

    //设置邮箱16为接收邮箱
    ECanaShadow.CANMD.all = ECanaRegs.CANMD.all;
    ECanaShadow.CANMD.bit.MD16 =1;
    ECanaRegs.CANMD.all = ECanaShadow.CANMD.all;
    //全局接受屏蔽,标示符位必须一一匹配
    ECanaRegs.CANGAM.all=0;

    谢谢,您能告诉我一下您qq吗?或者晚上您加我一下,谢谢。

  • RX: 

    ECanaMboxes.MBOX16.MID.all =  0x80C80000;

    TX:

     ECanaMboxes.MBOX0.MID.all =  0xA0C80000;

    检查下,谢谢!

  • 谢谢您的回复,您的意思是,要把ID配置为相同的号码吧?

     

    我感觉这个是小问题,不知道其他还有没有问题了,Thanks.

    期待您的回复,祝您工作顺利!天天好心情,快乐每一天!1083176055@qq.com邮箱

  • 非常感谢您的回复,我的程序成功了。谢谢。

    我通过观察相关的寄存器的窗口,发现了一个很奇怪的问题,就是发现:寄存器里的值所编写的程序里的赋值正好相反!

    不知道为什么,请您帮我解答一下,万分感谢,期待您的回复!1083176055@qq.com

    相关程序语句:

    EALLOW;
    ECanaShadow.CANMC.all = ECanaRegs.CANMC.all;
    //工作在正常模式
    ECanaShadow.CANMC.bit.STM = 0;
    //工作在eCAN模式
    ECanaShadow.CANMC.bit.SCM = 1;
    //存储方向
    ECanaShadow.CANMC.bit.DBO = 0;
    ECanaRegs.CANMC.all = ECanaShadow.CANMC.all;
    EDIS;

  • 非常感谢您的回复,我的程序成功了。谢谢。

    我通过观察相关的寄存器的窗口,发现了一个很奇怪的问题,就是发现:寄存器里的值所编写的程序里的赋值正好相反!

    不知道为什么,请您帮我解答一下,万分感谢,期待您的回复!1083176055@qq.com

    相关程序语句:

    EALLOW;
    ECanaShadow.CANMC.all = ECanaRegs.CANMC.all;
    //工作在正常模式
    ECanaShadow.CANMC.bit.STM = 0; 
    //工作在eCAN模式
    ECanaShadow.CANMC.bit.SCM = 1;
    //存储方向
    ECanaShadow.CANMC.bit.DBO = 0; 
    ECanaRegs.CANMC.all = ECanaShadow.CANMC.all;
    EDIS;

  • 您好,看到您的这段话,我试着操作了一遍,但是在程序运行的过程中出现了停留在:“3FF9FA 6F00        SB         0,UNC”的现象,不知道您是否解答一下?

    十分感谢。

    下面是部分修改后的cmd文件:

    page 0:

     BEGIN      : origin = 0x200000, length = 0x000002

     

     ZONE7A     : origin = 0x200003, length = 0x00FC00

    section:

     .text            : > ZONE7A,     PAGE = 0

     

  • 你好,请教你一下,你在外部RAM仿真时,是把程序中的所有段都映射到外部RAM中去了么,还是一部分在内部RAM,一部分在外部RAM?谢谢了。