共2条
1/1 1 跳转至页
LOAD,PROGRAM 快晕了:新手一问,LOAD PROGRAM与烧写!
问
现在手头没板子,这个问题始终想不通,请过来人点拨点拨:
既然.CMD文件可以指定程序载入或运行入FLASH,ROM等中,利用仿真器在CCS中LOAD PROGRAM,这样也载入程序到指定地址,比如FLASH,那这样不是代码已经在FLASH中了吗,这不是就不用烧写了吗???
请高手指点一下,可能我的理解有问题,就是不明白? 答 1: 哦,是不是这样???LOAD PROGRAM只是仿真,这个可能就是JTAG这种仿真吧, 答 2: 新手一问,LOAD PROGRAM与烧写!你的 cmd文件写的地址是flash的话,你load是load不进去的,只能load到ram里面运行,然后运行正确的话,再进行烧写flash,你可以load进flash的话,还要什么写flash啊 答 3: 谢谢TI DSP的.CMD定制太灵活了,对它的内存空间理解不够,还牵扯到了BOOTLOADER,COFF->HEX转换等,有点繁,手头又没板子...学习中 答 4: 程序到FLASH只能用烧些 答 5: RE4楼5楼的说的对啊
LOAD只是仿真 答 6: 现在明白了正向一位高人说的:"flash难道能象ram一样直接写吗,这个问题还需要讨论吗?".
我结合我看过的说一下我的理解:(不对的地方请大虾指教)
1.JTAG仿真理解:
其实JTAG这种方法与传统的调试器不同的就是它分成了两部分,调试时要结合目标系统,加载程序要载入自己的程序区然后开使仿真,而自己的程序区就是目标系统的程序区(包括I/O,等等资源都是和目标系统共用的),因为它们两个结合起来才构成一个传统的仿真器,所以从这个意义上说,目标系统一定要有RAM才能适合这种仿真,也才能加载(如果它支持FLASH,EEPROM读写的话,那当然就可以加载了,有吗?),设断点调试(软断点).所以才会有调试板与工业板区分.
2.调试板与工业板区分.
开发时需要做调试板用于调试,它与最终板区别在于最终板有时可以不需要外接的程序RAM,数据RAM等(看实际情况,因为不需要仿真了),一些可调节的设置等等.我原来一直就疑惑这个问题怎么我用不到外扩RAM干吗还要DSP旁边挂个它,原来你做调试板当然最好有了,最终板可以去掉的,在用传统仿真器的情况下可没有这个概念.
3.存储空间的理解:
TI DSP中要特别理解存储空间的概念,TI DSP存储空间编址为三类:PROGRAM MEMORY,DATA MEMORY,I/O MEMORY,它们独立编址,什么是独立编址,就是说这三个MEMORY空间是独立的,互不干涉的,比如都可以是占据0X0000~0XFFFF空间.
而地址空间又与物理存储空间不是一马事,比如同样一个DRAM(无论是DSP内部还是外扩的)既可以支配到PROGRAM MEMORY 地址空间,又可以支配给DATA MEMORY 地址空间,怎么实现呢,如果是外扩的,大家都知道有三个脚PS,DS,IS,加上地址线,你就可以达到个目的(当然DSP内部要有设置,比如MC/MP等),如果是内部的,DSP提供了一写控制位来达到这个目的,比如2407,你可以动动PON,DON,MC/MP,CNF,比如5402,你可以动动OVLY,MP/MC,DROM,就能达到这个目的,只是这个指定没有外扩的指定那么灵活,因为它内部的地址线已经固定了,所一一般只是取消指定或安装制定,
以5402来说,DROM = 0 E000h–FEFFh 地址空间指定给 External,即取消指定给On-chip ROM
DROM = 1 FF00h–FFFFh 地址空间指定给On-chip ROM
E000h–FFFFh Reserved
最后加上TI DSP提供的灵活的软件编译联接工具,使的它的地址空间,物理空间,程序加载空间,程序烧写空间,程序运行空间之间建立了非常灵活的连接机制.
先写这些,有不对之处还请大虾指点, 答 7: 再谈谈我一个初学者的认识 1.
很多初学者包扩我在内在用2407时都会有这个疑惑:"24x系列如果只用片内的FLASH,无法实现在线仿真,这是为什么?""仿真时将程序下载到外部RAM与下载到FLASH相比,有什么不同?""因为我的程序用片内的RAM就足够了,如果直接用FLASH调试很方便的话,就不打算增加外部RAM了。"不带外部RAM的2407怎么调试"
象类似的问题,我发现很多初学者都很疑惑,而且是开发中必然要碰到的问题,如果上面我理解的是对的话,主要是对JTAG的仿真的理解,其次是存储空间的理解,那么这些问题都可迎刃而解.
2.
还有一个问题也是经常初学者问的,就是类似"在调试硬件时,程序无法下载到存储器中,出现错误,data verification failed at address 0x40,please verify target memory and memory map。问题出在哪里"这样的问题,
我引用"电子开发网"上一位高人的答案,未知作者:
!你的错误发生在DSP往一个存储区写数据,结果校验出错。原因可能是
a)该存储区没有RAM,也可能是其他存储器如ROM,FLASH,或者内部RAM没有激活。
b)外部的RAM速度慢
c)硬件不稳定。
从这里我知道了仿真器在向RAM中写数据时,完了还会校验写入的数据,怎么校验,可能会再读出该数据,进行比较,发现不同,就会出现上面类似问题,所以可能出现上述问题的原因大虾已经列出.
既然.CMD文件可以指定程序载入或运行入FLASH,ROM等中,利用仿真器在CCS中LOAD PROGRAM,这样也载入程序到指定地址,比如FLASH,那这样不是代码已经在FLASH中了吗,这不是就不用烧写了吗???
请高手指点一下,可能我的理解有问题,就是不明白? 答 1: 哦,是不是这样???LOAD PROGRAM只是仿真,这个可能就是JTAG这种仿真吧, 答 2: 新手一问,LOAD PROGRAM与烧写!你的 cmd文件写的地址是flash的话,你load是load不进去的,只能load到ram里面运行,然后运行正确的话,再进行烧写flash,你可以load进flash的话,还要什么写flash啊 答 3: 谢谢TI DSP的.CMD定制太灵活了,对它的内存空间理解不够,还牵扯到了BOOTLOADER,COFF->HEX转换等,有点繁,手头又没板子...学习中 答 4: 程序到FLASH只能用烧些 答 5: RE4楼5楼的说的对啊
LOAD只是仿真 答 6: 现在明白了正向一位高人说的:"flash难道能象ram一样直接写吗,这个问题还需要讨论吗?".
我结合我看过的说一下我的理解:(不对的地方请大虾指教)
1.JTAG仿真理解:
其实JTAG这种方法与传统的调试器不同的就是它分成了两部分,调试时要结合目标系统,加载程序要载入自己的程序区然后开使仿真,而自己的程序区就是目标系统的程序区(包括I/O,等等资源都是和目标系统共用的),因为它们两个结合起来才构成一个传统的仿真器,所以从这个意义上说,目标系统一定要有RAM才能适合这种仿真,也才能加载(如果它支持FLASH,EEPROM读写的话,那当然就可以加载了,有吗?),设断点调试(软断点).所以才会有调试板与工业板区分.
2.调试板与工业板区分.
开发时需要做调试板用于调试,它与最终板区别在于最终板有时可以不需要外接的程序RAM,数据RAM等(看实际情况,因为不需要仿真了),一些可调节的设置等等.我原来一直就疑惑这个问题怎么我用不到外扩RAM干吗还要DSP旁边挂个它,原来你做调试板当然最好有了,最终板可以去掉的,在用传统仿真器的情况下可没有这个概念.
3.存储空间的理解:
TI DSP中要特别理解存储空间的概念,TI DSP存储空间编址为三类:PROGRAM MEMORY,DATA MEMORY,I/O MEMORY,它们独立编址,什么是独立编址,就是说这三个MEMORY空间是独立的,互不干涉的,比如都可以是占据0X0000~0XFFFF空间.
而地址空间又与物理存储空间不是一马事,比如同样一个DRAM(无论是DSP内部还是外扩的)既可以支配到PROGRAM MEMORY 地址空间,又可以支配给DATA MEMORY 地址空间,怎么实现呢,如果是外扩的,大家都知道有三个脚PS,DS,IS,加上地址线,你就可以达到个目的(当然DSP内部要有设置,比如MC/MP等),如果是内部的,DSP提供了一写控制位来达到这个目的,比如2407,你可以动动PON,DON,MC/MP,CNF,比如5402,你可以动动OVLY,MP/MC,DROM,就能达到这个目的,只是这个指定没有外扩的指定那么灵活,因为它内部的地址线已经固定了,所一一般只是取消指定或安装制定,
以5402来说,DROM = 0 E000h–FEFFh 地址空间指定给 External,即取消指定给On-chip ROM
DROM = 1 FF00h–FFFFh 地址空间指定给On-chip ROM
E000h–FFFFh Reserved
最后加上TI DSP提供的灵活的软件编译联接工具,使的它的地址空间,物理空间,程序加载空间,程序烧写空间,程序运行空间之间建立了非常灵活的连接机制.
先写这些,有不对之处还请大虾指点, 答 7: 再谈谈我一个初学者的认识 1.
很多初学者包扩我在内在用2407时都会有这个疑惑:"24x系列如果只用片内的FLASH,无法实现在线仿真,这是为什么?""仿真时将程序下载到外部RAM与下载到FLASH相比,有什么不同?""因为我的程序用片内的RAM就足够了,如果直接用FLASH调试很方便的话,就不打算增加外部RAM了。"不带外部RAM的2407怎么调试"
象类似的问题,我发现很多初学者都很疑惑,而且是开发中必然要碰到的问题,如果上面我理解的是对的话,主要是对JTAG的仿真的理解,其次是存储空间的理解,那么这些问题都可迎刃而解.
2.
还有一个问题也是经常初学者问的,就是类似"在调试硬件时,程序无法下载到存储器中,出现错误,data verification failed at address 0x40,please verify target memory and memory map。问题出在哪里"这样的问题,
我引用"电子开发网"上一位高人的答案,未知作者:
!你的错误发生在DSP往一个存储区写数据,结果校验出错。原因可能是
a)该存储区没有RAM,也可能是其他存储器如ROM,FLASH,或者内部RAM没有激活。
b)外部的RAM速度慢
c)硬件不稳定。
从这里我知道了仿真器在向RAM中写数据时,完了还会校验写入的数据,怎么校验,可能会再读出该数据,进行比较,发现不同,就会出现上面类似问题,所以可能出现上述问题的原因大虾已经列出.
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【笔记】生成报错synthdesignERROR被打赏50分 | |
【STM32H7S78-DK评测】LTDC+DMA2D驱动RGBLCD屏幕被打赏50分 | |
【STM32H7S78-DK评测】Coremark基准测试被打赏50分 | |
【STM32H7S78-DK评测】浮点数计算性能测试被打赏50分 | |
【STM32H7S78-DK评测】Execute in place(XIP)模式学习笔记被打赏50分 | |
每周了解几个硬件知识+buckboost电路(五)被打赏10分 | |
【换取逻辑分析仪】RA8 PMU 模块功能寄存器功能说明被打赏20分 | |
野火启明6M5适配SPI被打赏20分 | |
NUCLEO-U083RC学习历程2-串口输出测试被打赏20分 | |
【笔记】STM32CUBEIDE的Noruletomaketarget编译问题被打赏50分 |