关于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不是更好?
问题有点多,谢谢!
Eric Ma:
我的回答如下:
1. 没听过,你是在哪里看到的。
2. 我理解的应该只是汇编代码里面寻址指令的区别,用C语言的话,我认为没什么区别。L0~L3只是双地址映射而已,选择一个地址用即可。至于为何要搞成双映射,有可能是方便兼容以前老的芯片。
3. 代码可以放在L4~L7. 不过一般代码是放在flash,如果你有些函数想运行在RAM,需要复制一下。
4. code_start.asm 里面有个跳转指令,跳转到_c_int00,在这个函数里面就会执行这个copy工作,然后会再跳转到main.
5. 你说的对,所以最新的CMD都是用ebss.
Eric
关于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不是更好?
问题有点多,谢谢!
zdc:
回复 Eric Ma:
第一个问题是在
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中运行了。
不知道我这样的理解对不?谢谢!
关于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不是更好?
问题有点多,谢谢!
Eric Ma:
回复 zdc:
首先,为什么调试高压,JTAG就用不了?我经常用JTAG口调试高压板。不要炸机就好了。要是怕炸坏电脑,在JTAG口那儿加个隔离,很多这种工具的啊。
其次, 你要写bootloader, 是用来升级代码还是用来烧写裸片?建议可以借鉴一下TI最新发布的通过串口烧写或升级的例程,自己消化一下。
C:\ti\controlSUITE\device_support\f2803x\v130\DSP2803x_examples_ccsv5\f2803x_flash_kernel
Eric
关于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不是更好?
问题有点多,谢谢!
zdc:
回复 Eric Ma:
谢谢!
因为高压调试,和结构设计有关,没有办法使用JTAG。