반응형
execUserPreload() { __message "*** setup.mac *** Setup default value in VIC\n"; // Disable all IRQ in VIC __writeMemory32(0xFFFFFFFF, 0xFFFFF014, "Memory"); // VICIntEnClear=0xFFFFFFFF // Reset all IRQ Addr in VIC __writeMemory32(0x00000000, 0xFFFFF034,"Memory"); // VICDefVectAddr, __writeMemory32(0x00000000, 0xFFFFF100,"Memory"); // VICVectAddr0, __writeMemory32(0x00000000, 0xFFFFF104,"Memory"); // VICVectAddr1, __writeMemory32(0x00000000, 0xFFFFF108,"Memory"); // VICVectAddr2, __writeMemory32(0x00000000, 0xFFFFF10C,"Memory"); // VICVectAddr3, __writeMemory32(0x00000000, 0xFFFFF110,"Memory"); // VICVectAddr4, __writeMemory32(0x00000000, 0xFFFFF114,"Memory"); // VICVectAddr5, __writeMemory32(0x00000000, 0xFFFFF118,"Memory"); // VICVectAddr6, __writeMemory32(0x00000000, 0xFFFFF11C,"Memory"); // VICVectAddr7, __writeMemory32(0x00000000, 0xFFFFF120,"Memory"); // VICVectAddr8, __writeMemory32(0x00000000, 0xFFFFF124,"Memory"); // VICVectAddr9, __writeMemory32(0x00000000, 0xFFFFF128,"Memory"); // VICVectAddr10, __writeMemory32(0x00000000, 0xFFFFF12C,"Memory"); // VICVectAddr11, __writeMemory32(0x00000000, 0xFFFFF130,"Memory"); // VICVectAddr12, __writeMemory32(0x00000000, 0xFFFFF134,"Memory"); // VICVectAddr13, __writeMemory32(0x00000000, 0xFFFFF138,"Memory"); // VICVectAddr14, __writeMemory32(0x00000000, 0xFFFFF13C,"Memory"); // VICVectAddr15, // Reset all IRQ Cntl in VIC __writeMemory32(0x00000000, 0xFFFFF200,"Memory"); // VICVectCntl0, __writeMemory32(0x00000000, 0xFFFFF204,"Memory"); // VICVectCntl1, __writeMemory32(0x00000000, 0xFFFFF208,"Memory"); // VICVectCntl2, __writeMemory32(0x00000000, 0xFFFFF20C,"Memory"); // VICVectCntl3, __writeMemory32(0x00000000, 0xFFFFF210,"Memory"); // VICVectCntl4, __writeMemory32(0x00000000, 0xFFFFF214,"Memory"); // VICVectCntl5, __writeMemory32(0x00000000, 0xFFFFF218,"Memory"); // VICVectCntl6, __writeMemory32(0x00000000, 0xFFFFF21C,"Memory"); // VICVectCntl7, __writeMemory32(0x00000000, 0xFFFFF220,"Memory"); // VICVectCntl8, __writeMemory32(0x00000000, 0xFFFFF224,"Memory"); // VICVectCntl9, __writeMemory32(0x00000000, 0xFFFFF228,"Memory"); // VICVectCntl10, __writeMemory32(0x00000000, 0xFFFFF22C,"Memory"); // VICVectCntl11, __writeMemory32(0x00000000, 0xFFFFF230,"Memory"); // VICVectCntl12, __writeMemory32(0x00000000, 0xFFFFF234,"Memory"); // VICVectCntl13, __writeMemory32(0x00000000, 0xFFFFF238,"Memory"); // VICVectCntl14, __writeMemory32(0x00000000, 0xFFFFF23C,"Memory"); // VICVectCntl15, __message "*** setup.mac *** Setup EMC, do external RAM config\n"; // SRAM 32bit; IDCY = 0; WST1 = 0; RBLE = 1; WST2 = 0 __writeMemory32(0x20000400, 0xFFE00004, "Memory"); // BCFG1=0x20000400 // P1.26 : P1.31 - JTAG // P2.0 : P2.31 - Data bus // P3.1 : P3.22 - Address bus // P1.0 - CS0 (Flash) // P3.26 - CS1 (RAM) // P3.31 - BLS0 // P3.30 - BLS1 // P3.29 - BLS2 // P3.28 - BLS3 // P3.26 - WE // P1.1 - OE //PINSEL2 = 0000 1111 0000 0000 0000 1001 0010 0100 __writeMemory32(0x0F000924, 0xE002C014, "Memory"); // PINSEL2 = 0x0F000924; __message "*** setup.mac *** Do ISR vectors remap to internal RAM 0x40000000 \n"; __writeMemory32(0x00000002, 0xE01FC040, "Memory"); // MEMMAP = 2 }
Olimex 관련 포스트는 눈을 씻고 찾아보려고 해도 도저히 찾아볼 수가 없습니다. 물론 전제는 국내 사이트 이지요....
E2294 보드엔 1M sram 2M Flash 가 내장되어 있습니다.
물론 MCU 내부에 128k, 64k의 sram, flash가 존재하지만... 쓰다보면 욕심이 생기게 됩니다..... 달아논거 쓰고 싶다라고 느끼죠....
Address Mapping이 되어있어. ( LPC2000 시리즈의 Address Map 참고하길 ) CS1,CS2 세팅만 해주면 외부 플래시, 램을 사용가능 합니다.
물론 코드내도 가능하고, 초기 부터도 사용가능 합니다.
위의 코드는 초기 Startup 부분으로서 초기에 사용가능 하도록 만들어 주는 코드 입니다. ( EWARM 기준입니다. )
각각의 보드마다, 컴파일러 마다 상이하기 때문에, 커스터마이징이 필요함 ( 그건 엔지니어의 역량 )
반응형