5517의 부팅과정을 각 단계별로 설명할 것이다. 부팅과정을 이해함으로서, 듀얼부팅에서 필요한 정보를 얻는다.
하드웨어 초기화 과정
이 부분은 두가지로 나누어서 설명한다. 하나는 DCU 를 이용할 때와 나머지는 Flash 를 이용할 때이다. 일단 우리가 원하는 것은 Flash 에 대한 부분이기 때문에 DCU 에 대한 내용은 간단히 설명하고 넘어가도록 한다.
일반적으로 DCU 를 이용해서 실행할 때,
st20run -l C:/STM/DACS1000/config/chip -l C:/STM/DACS1000/config/board -l C:/STM/DACS1000/config/platform -l /chip -l /board -l /platform -l \ C:/STM/DACS1000/config/platform -i C:/STM/DACS1000/config/board/mb382_um.cfg -t c2hw_jei top.lku
위와 같은 명령어로 실행한다. 그러면 아래와 같은 출력이 나온다.
Setup5517 proc setup_clock_gen Clock_gen setup procedure for programmed PLL mode... Device has booted in DEFAULT mode. Switching back to X1 mode Programming FS PLL with 540 MHz C200 = 180 MHz SMI = 135 MHz SMI/2 = 67 MHz SMI/4 = 33 MHz Audio = 54 MHz COMMS = 54 MHz STBUS = 90 MHz FLASH = 90 MHz SDRAM = 90 MHz transitioning CLOCKGEN Successfully setup EMIpokes5517 alt settings Testing Phase & lock 0xffbf1234 0x56781234 0x12345678 SDRAM locked on phase 2 SDRAM init has been successful
위의 메세지는 하드웨어를 초기화 하는 작업이다. PC로 말하자면, CMOS가 출력해주는 부분이다. 위의 작업은 DCU 로 실행할 때 .cfg 파일들의 세팅을 읽어들임으로서 하드웨어를 초기화한다.
이번에는 Flash 에서의 하드웨어 초기화 과정이다. .hex 파일을 만들 때, 반드시 참조해야할 오브젝트 파일이 있다. 바로 initfunc.tco 이다. 이것은 DCU 에서 하드웨어를 초기화해주는 함수 이다. 실제로 이 파일을 포함하지 않은 .hex 파일은 부팅이 되지 않는다. 그러므로 st 에서 받은 듀얼부트 소스코드 역시 initfunc 를 포함시켜야 할 것이다.
여기까지가 main() 함수를 호출하기 전까지의 대략적인 과정이다.
DCU | 커맨드 명령의 옵션으로 |
FLASH | initfunc.tco 의 포함으로 |
나의 생각으로 하드웨어 초기화 과정은 이미 가능하다고 생각한다. 문제는 main 함수안의