历史上的今天
今天是:2024年12月12日(星期四)
2018年12月12日 | 利用IAR调试Mini2440
2018-12-12 来源:eefocus
利用IAR 调试mini2440,准备先玩玩裸奔
以前开发Lpc2214的时候用的是IAR调试环境 感觉还是很不错的 当时一度错怪的了这开发环境
因为Lpc对Jtag的引脚可以配置成普通IO
我当时一时疏忽把他配置成IO了 导致IAR无法单步执行 一度觉得这个环境不好用 当时由于把Jtag口屏蔽了 导致下载一次以后JTAG口就不能用了 很多时候都是用串口擦除了片内Flash再烧写 后来回忆起来当时有点傻(主要还是当时误认为芯片被加密了,只能用串口擦除),当时完全不必用串口擦除程序。其实Jtag口被屏蔽了 直接把芯片的ISP使能引脚短接,然后芯片就从内部的Bootloader启动了,然后Flashloader就可以下载程序了
开发Lpc时还有一个需要注意的地方就是如果MEMMAP设置的不对的话,一发生中断就会跳到一个不对的地方 导致中断无法调试 因为这个原因 让我当时怀疑IAR是无法调试中断的 后来发现我完全错了
后来接触了Samsung的一些片子,知道了Mac文件的作用,mac文件是在编译成功的二进制文件下载到硬件之前,用来配置ARM寄存器的文件,比如2440带有片上的SDRAM控制器,由于上电后SDRAM寄存器是默认不使能的,所以如果要在RAM中调试程序的话,程序是无法下载到RAM中的。所以在文件下载之前必须配置SDRAM控制器。
我先在RAM中跑了一个RAM程序,mac文件如下
execUserFlashInit()
{
__writeMemory32(0x00000000, 0x53000000, "Memory");
__writeMemory32(0xffffffff, 0x4a000008, "Memory");
__writeMemory32(0x000007ff, 0x4a00001c, "Memory");
__writeMemory32(0x00000000, 0x53000000, "Memory");
__writeMemory32(0x000055AA, 0x56000050, "Memory");
__writeMemory32(0x00000007, 0x4C000014, "Memory");
__writeMemory32(0x00FFFFFF, 0x4C000000, "Memory");
__writeMemory32(0x00061012, 0x4C000004, "Memory");
__writeMemory32(0x00040042, 0x4C000008, "Memory");
__writeMemory32(0x22111120, 0x48000000, "Memory");
__writeMemory32(0x00002F50, 0x48000004, "Memory");
__writeMemory32(0x00000700, 0x48000008, "Memory");
__writeMemory32(0x00000700, 0x4800000C, "Memory");
__writeMemory32(0x00000700, 0x48000010, "Memory");
__writeMemory32(0x00000700, 0x48000014, "Memory");
__writeMemory32(0x0007FFFC, 0x48000018, "Memory");
__writeMemory32(0x00018005, 0x4800001C, "Memory");
__writeMemory32(0x00018005, 0x48000020, "Memory");
__writeMemory32(0x008E0459, 0x48000024, "Memory");
__writeMemory32(0x00000032, 0x48000028, "Memory");
__writeMemory32(0x00000030, 0x4800002C, "Memory");
__writeMemory32(0x00000030, 0x48000030, "Memory");
}
将ICF文件中的起始地址都设置成SDRAM的地址,程序就能下载运行并且调试了。
现在还没有摸索出来怎么将文件利用flashloader下载到外部flash中。参考lpc的调试,发现不管是下载到片内的FLASH还是片外的Flash,flashloader在程序下载之前首先要将一个.out文件下载到片子的RAM中,这点和HJTAG相似,HJTAG在下载时也是需要你指明RAM的起始地址的,他们这两个工具下载原理是一样的,加入你要将B程序烧写进flash中,必须先将一个编译好的二进制程序A下载到片子的内部RAM中,然后利用A这个程序在将要下载的B程序下载到flash中
IAR的flashloader提供很多片子的A程序,像LPC系列片子的A程序都有,但是对于2440就没有这个程序,需要自己写,如果不自己实现的话也可以采用HJTAG的HFALSHER来进行烧写。
史海拾趣
|
[注:之所以叫终结版,是因为现在没有多少时间再去做这个了,有新的任务了.谢谢指教] 写了一个上位机,是个简单的调试助手。快考试了,也没有时间再去弄VB了。现在把资料打包上来,里面有源程序,下位机的程序可以验证上位机的全部功能。安装好后, ...… 查看全部问答> |
|
对初学者理解STM32最新文件系统会有帮助 如何从STM32F10xxx固件库V2.0.3升级到V3.0.0 [local]1[/local] 如何从STM32F10xxx固件库V2.0.3升级到V3.0.0.pdf (1.22 MB) 下载次数:1193 2010-8-12 16:49 ...… 查看全部问答> |
|
MSP-EXP430G2 LaunchPad FAQs1. Does the MSP-EXP430G2 support fuse blow?The MSP-EXP430G2 LaunchPad experimenter board onboard debugging interface lacks the JTAG security fuse-blow capability. To ensure firmware security on devices g ...… 查看全部问答> |
|
三星的eMMC iNAND(型号KLM2G1DEHE)大概还有50片左右,DDR3 SDRAM(型号K4B2G0846C)大概30片的样子都是BGA封装,冰点吐血价5元每片,照例上图 淘宝小店:http://shop34118588.taobao.com/… 查看全部问答> |




