⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 int_ram.ini

📁 atmel 9263的boottloader
💻 INI
字号:
/******************************************************************************/
/* Int_RAM.ini: Internal RAM Initialization File                              */
/******************************************************************************/
// <<< Use Configuration Wizard in Context Menu >>>                           // 
/******************************************************************************/
/* This file is part of the uVision/ARM development tools.                    */
/* Copyright (c) 2005-2008 Keil Software. All rights reserved.                */
/* This software may only be used under the terms of a valid, current,        */
/* end user licence from KEIL for a compatible version of KEIL software       */
/* development tools. Nothing else gives you the right to use this software.  */
/******************************************************************************/


DEFINE CHAR Setup;
DEFINE INT  Entry;

DEFINE LONG PMC;
DEFINE LONG PIO_SD;
DEFINE LONG MATRIX;
DEFINE LONG SDRAMC;
DEFINE LONG SDRAM;

// Memory mapped peripherals address definitions
PMC    = 0xFFFFFC00;
PIO_SD = 0xFFFFF800;
MATRIX = 0xFFFFEC00;
SDRAMC = 0xFFFFE200;
SDRAM  = 0x20000000;


FUNC void Clock_Setup (void) {
  if (Setup & 0x01) {
    // Setup clock; XTAL      =  16.367660 MHz, 
    //              PLLA      = 200.049178 MHz, 
    //              Processor = 100.024589 MHz
    _WDWORD(PMC+   0x20, 0x0000FF01);   // CKGR_MOR: Enable main oscillator
    _sleep_(100);                       // Wait for stable Main Oscillator
    _WDWORD(PMC+   0x28, 0x206DBF09);   // CKGR_PLLAR: Configure PLL A
    _sleep_(100);                       // Wait for stable PLL A
    _WDWORD(PMC+   0x30, 0x00000004);   // PMC_MCKR: MDIV and PRES fields
    _sleep_(100);                       // Wait for Main Master Clock ready
    _WDWORD(PMC+   0x30, 0x00000006);   // PMC_MCKR: all fields
    _sleep_(100);                       // Wait for Main Master Clock ready
  }
}

FUNC void SDRAM_Setup (void) {
  if (Setup & 0x02) {
    // Setup SDRAM Controller

    // Setup pins for SDRAM controlling
    _WDWORD(PIO_SD+0x60, 0xFFFF0000);   // Disable pull-ups
    _WDWORD(PIO_SD+0x70, 0xFFFF0000);   // Select peripheral A
    _WDWORD(PIO_SD+0x04, 0xFFFF0000);   // Disable PIO mode
  
    _WDWORD(MATRIX+0x120,0x00000002);   // EBI_CSA: CSA1 support for SDRAM
  
    _WDWORD(SDRAMC+0x08, 0x85227259);   // SDRAM Configuration
    _sleep_(10);
    _WDWORD(SDRAMC+0x00, 0x00000001);   // Issue NOP Command
    _WDWORD(SDRAM+ 0x00, 0x00000000);
    _WDWORD(SDRAMC+0x00, 0x00000002);   // Issue Precharge All Command
    _WDWORD(SDRAM+ 0x00, 0x00000000);
    _sleep_(10);
    _WDWORD(SDRAMC+0x00, 0x00000004);   // Issue Auto-Refresh Command
    _WDWORD(SDRAM+ 0x04, 0x00000001);
    _WDWORD(SDRAMC+0x00, 0x00000004);
    _WDWORD(SDRAM+ 0x08, 0x00000002);
    _WDWORD(SDRAMC+0x00, 0x00000004);
    _WDWORD(SDRAM+ 0x0C, 0x00000003);
    _WDWORD(SDRAMC+0x00, 0x00000004);
    _WDWORD(SDRAM+ 0x10, 0x00000004);
    _WDWORD(SDRAMC+0x00, 0x00000004);
    _WDWORD(SDRAM+ 0x14, 0x00000005);
    _WDWORD(SDRAMC+0x00, 0x00000004);
    _WDWORD(SDRAM+ 0x18, 0x00000006);
    _WDWORD(SDRAMC+0x00, 0x00000004);
    _WDWORD(SDRAM+ 0x1C, 0x00000007);
    _WDWORD(SDRAMC+0x00, 0x00000004);
    _WDWORD(SDRAM+ 0x20, 0x00000008);
    _WDWORD(SDRAMC+0x00, 0x00000003);   // Issue Load Mode Register Command
    _WDWORD(SDRAM+ 0x24, 0xCAFEDEDE);

    _WDWORD(SDRAMC+0x00, 0x00000000);   // Enter Normal Mode
    _WDWORD(SDRAM+ 0x00, 0x00000000);

    _WDWORD(SDRAMC+0x04, 0x000002EE);   // Refresh for SDRAM (at 96 MHz)
  }
}

FUNC void Remap (void) {
  if (Setup & 0x10) {
    _WDWORD(MATRIX+0x100,0x00000003);   // MATRIX_MRCR: Remap IRAM to 0
  }
}

FUNC void PC_Setup (void) {
  if (Setup & 0x40) {
    PC = Entry;
  }
}

FUNC void GoMain (void) {
  if ((Setup & 0xA0) == 0xA0) {
    exec("g,main");
  }
}


// <o1.0> Clock Setup
// <o1.1> SDRAM Setup
// <e1.4> Remap
// </e>
// <e1.5> Download Program
FUNC void Download (void) {
  if (Setup & 0x20) {
//  <s0.80> Command for Loading
    exec("LOAD Output\\SAM9263_DF_P1056_CS0_BL.axf INCREMENTAL");
  }
}
// </e>
// <e0.6> Setup Program Counter to Entry Point
//   <o1> Program Entry Point <0x0-0xFFFFFFFF>
// </e>
// <e.7> Execute Program untill Main Function
// </e>
Setup = 0xF1;
Entry = 0x00000000;


Clock_Setup();
SDRAM_Setup();
Remap();
Download();
PC_Setup();
GoMain();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -