主题 : keil下裸奔2440 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 28089
精华: 0
发帖: 64
金钱: 320 两
威望: 64 点
贡献值: 0 点
综合积分: 128 分
注册时间: 2010-09-05
最后登录: 2019-05-16
楼主  发表于: 2013-11-20 23:22

 keil下裸奔2440

刚开始学习友善之臂的mini2440,准备在keil下裸奔裸奔。在论坛找了一些资料,发现裸奔调试时用到的文件Ext_RAM.ini都是从keil下拷过来的。
FUNC void SetupForStart (void) {

// <o> Program Entry Point
  PC = 0x30000000;
}


FUNC void Init (void) {

  _WDWORD(0x4A000008, 0xFFFFFFFF);      // Disable All Interrupts

  _WDWORD(0x53000000, 0x00000000);      // Disable Watchdog Timer
  
                                        // Clock Setup
                                        // FCLK = 300 MHz, HCLK = 100 MHz, PCLK = 50 MHz
  _WDWORD(0x4C000000, 0x0FFF0FFF);      // LOCKTIME
  _WDWORD(0x4C000014, 0x0000000F);      // CLKDIVN
  _WDWORD(0x4C000004, 0x00043011);      // MPLLCON
  _WDWORD(0x4C000008, 0x00038021);      // UPLLCON
  _WDWORD(0x4C00000C, 0x001FFFF0);      // CLKCON

                                        // Memory Controller Setup for SDRAM
  _WDWORD(0x48000000, 0x22000000);      // BWSCON
  _WDWORD(0x4800001C, 0x00018005);      // BANKCON6
  _WDWORD(0x48000020, 0x00018005);      // BANKCON7
  _WDWORD(0x48000024, 0x008404F3);      // REFRESH
  _WDWORD(0x48000028, 0x00000032);      // BANKSIZE
  _WDWORD(0x4800002C, 0x00000020);      // MRSRB6
  _WDWORD(0x48000030, 0x00000020);      // MRSRB7

  _WDWORD(0x56000000, 0x000003FF);      // GPACON: Enable Address lines for SDRAM
}


// Reset chip with watchdog, because nRST line is routed on hardware in a way
// that it can not be pulled low with ULINK

_WDWORD(0x40000000, 0xEAFFFFFE);        // Load RAM addr 0 with branch to itself
CPSR = 0x000000D3;                      // Disable interrupts
PC   = 0x40000000;                      // Position PC to start of RAM
_WDWORD(0x53000000, 0x00000021);        // Enable Watchdog
g, 0                                    // Wait for Watchdog to reset chip

Init();                                 // Initialize memory
LOAD obj_list\111.axf INCREMENTAL         // Download program
SetupForStart();                        // Setup for Running
g, main    


_WDWORD(0x48000028, 0x00000032);      // BANKSIZE  这句的意思是将BANK6映射成128M.但是根据mini2440的原理图,应该映射成64M才对啊??????
论坛上大家怎么都是这么用的呢????????实在是困惑啊,求解答。