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.

cmd及存储

Other Parts Discussed in Thread: CONTROLSUITE

关于28335的存储,有几个问题想咨询下:

1、什么是大寄存器模式?

2、存储区域中,高64K和低64K有什么区别?高64K的SARAM L0~L3做什么用?

3、代码只能在SARAM L0~L3运行吗?L4~L7不可以吗?

4、关于.bss(为全局变量和局部变量保留的空间,在程序上电时.cinit空间中的数据复制出来并存储在.bss空间中),

这里的程序上电具体什么时候?是跳转到_c_int00之后,执行main之前吗?

5、.ebss和.bss(类似还有.econst和.const)有什么区别?如果说.bss存放低64K,.ebss可以任何位置,那么直接使用.ebss不是更好?

问题有点多,谢谢!

  • 我的回答如下:

    1. 没听过,你是在哪里看到的。

    2. 我理解的应该只是汇编代码里面寻址指令的区别,用C语言的话,我认为没什么区别。L0~L3只是双地址映射而已,选择一个地址用即可。至于为何要搞成双映射,有可能是方便兼容以前老的芯片。

    3. 代码可以放在L4~L7. 不过一般代码是放在flash,如果你有些函数想运行在RAM,需要复制一下。

    4. code_start.asm 里面有个跳转指令,跳转到_c_int00,在这个函数里面就会执行这个copy工作,然后会再跳转到main.

    5. 你说的对,所以最新的CMD都是用ebss.

    Eric

  • 第一个问题是在

    http://bbs.ednchina.com/BLOG_ARTICLE_3031541.HTM

    里面关于.ebss介绍的时候写的。

    另外追加一个问题:

    现在调试是高压的,所以JTAG就没有方法使用了。目前是自己写了一个Bootloader,固化在flash一个区域,用can通信,通过Bootloader将应用程序下载到flash中,然后运行。

    但是在调试期间,这里会存在反复的擦除flash。自己有个想法,就是通过Bootloader,将应用程序下载到外部ram,发现运行不了。

    对于不能运行,我的理解是,虽然在Bootloader中配置了外部ram,在应用程序下载完成之后,PC指针也能够跳转到外部ram的指定位置,但是在运行应用程序的时候,跳转到_c_int00之后,main之前,又将系统初始化,而系统配置的是从flash启动,所以无法在外部ram中运行了。

    不知道我这样的理解对不?谢谢!

  • 首先,为什么调试高压,JTAG就用不了?我经常用JTAG口调试高压板。不要炸机就好了。要是怕炸坏电脑,在JTAG口那儿加个隔离,很多这种工具的啊。

    其次, 你要写bootloader, 是用来升级代码还是用来烧写裸片?建议可以借鉴一下TI最新发布的通过串口烧写或升级的例程,自己消化一下。

    C:\ti\controlSUITE\device_support\f2803x\v130\DSP2803x_examples_ccsv5\f2803x_flash_kernel

    Eric

  • 谢谢!

    因为高压调试,和结构设计有关,没有办法使用JTAG。