利用IAR調試Mini2440

來源:互聯網
上載者:User

利用IAR調試Mini2440 收藏
利用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來進行燒寫。

本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/dog0138/archive/2008/11/18/3321361.aspx

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.