본문 바로가기

ARM9

(24)
S3C6410 부트로더 테스트 S3C6410 부트로더 테스트 테스트 속도를 높이기 위해 보통 RAM에 다운로드 하도록 하는데.. 먼저 컴파일러 설정에서 scatter파일을 RAM용으로 설정하고 이미지의 엔트리포인터를 0x50200000로 설정한다. 참고로 S3C6410보드의 메모리 구조이다. SDRAM은 시작번지는 0x5020 0000이다. 컴파일 하고 이렇게 해서 컴파일 하면 RAM용 부트로더가 생성된다. 컴파일된 S3C6410용 부트로더를 RAM에 다운로드 하기 위해 Trace32를 실행한다. Trace32 실행 후 RAM용 배치 파일 (.cmm)을 선택하면 자동으로 RAM에 다운로드 된다. 그리고 바로 엔트리 포인터로 브레이크가 걸리는 것을 확인할 수 있다. 만약 ROM(Nor Flash)에 다운로드 한다면 0번지로 설정해서 컴..
[S3C6410] 카메라 영상 처리 - USB를 이용한 영상 전송 테스트 [S3C6410] 카메라 영상 처리 - USB를 이용한 영상 전송 테스트 S3C6410 보드의 카메라 인터페이스는 J2에 연결되어 있다. S3C6410의 경우 내부적으로 4개의 카메라 버퍼가 있고 카메라로부터 영상이 들어오면 DMA를 통하여 4개의 버퍼에 차례로 영상이 저장된다. buf[0]->buf[1]->buf[2]->buf[3]->buf[0]->…의 순서로 계속 영상이 저장된다. 영상을 받기 위해서는 Cam_GrabContinuous() 함수를 이용하여 버퍼를 설정하고 카메라를 동작시킨 후, Cam_GrabWait() 함수를 이용하여 영상이 들어올 때까지 기다리면 된다. Cam_GrabWait() 함수에서 리턴된 값은 현재 영상이 들어온 버퍼의 번호이다. (0~3까지의 리턴값) 따라서 Cam_Gra..
[S3C6410] GPIO Switch 테스트 [S3C6410] GPIO Switch 테스트 S3C6410 베이스보드에는 두개의 스위차가 GPIO6~7에 연결되어 있다. S3C6410 스위치 드라이버 함수 //----------------------------------------------------------------------------- //Switch Driver #define SW1_BIT BIT6 #define SW1_PORT PORTI #define Sw1Init() GPIO_SetFunctionEach(SW1_PORT, eGPIO_6, 0) #define GetSw1() (!(GPIO_GetDataAll(SW1_PORT)&SW1_BIT)) #define WaitForSw1() while(GetSw1()) //-------------..
[S3C6410] GPIO 속도테스트 [S3C6410] GPIO 속도테스트 간단히 gpio.cpp 에서 제공되는 함수를 이용하여 PORTI를 토글시켜 보았다. 토글 속도가 220ns - 2.2Mhz가 나온다. 느린데.. #define Led1Toggle() GPIO_SetDataAll(eGPIO_I, GPIO_GetDataAll(eGPIO_I) ^ BIT0) 포트를 S3C6410 GPIO 레지스터로 집접 제어하도록 수정해 보았다. 198ns 2.5Mhz로 조금 더 빨라 졌지만 여전히 느리다. #define Led1Toggle() PORTI ^= BIT0 GPIDAT레지스터는 0x7F008104에 할당되어 있다. #define PORTI (*(volatile unsigned*)0x7F008104) while(1) { Led1Toggle(); ..
[S3C6410] Hellow World 개발환경 및 LED테스트 프로그램 [S3C6410] Hellow World 개발환경 및 LED테스트 프로그램 새로운 MCU 다루는데 있어서 LED제어만큼 간단하고 확실한 방법도 없다. 하드웨어 셋업 일단 테스트할 펌웨어를 램에 다운로드 하기위해 USB를 연결하고, 디버깅 시리얼 포트를 위해 USBUART를 U1에 연결한다. 부트 로드를 이용해야 하므로 부트 점퍼도 연결한다. USB를 연결하면 장치관리자에서 확인할 수 있다. 부트로드가 정상 동작하면 시리얼 포트에서 메세지를 확인할 수 있다. USB다운로더를 이용하여 bin파일을 램영역 0x50200000 에 다운로드 할수 있다. 새로운 프로그램을 작성하면 리셋을 눌러 부트모드로 가서 다시 다운로드 하면 된다. "Program"버튼은 플래시에 다운로드 한다. S3C6410 부트모드 커넥터 ..
[STR911-SM] EVM 제작 [STR911-SM] EVM 제작 ARM9코어 STR911을 [SM-Type EVM]의 소형 모듈로 제작 했다. 지난번 제작해선 PCB가 남아 있지 않고 STR911은 핀수가 적기 때문에 소형으로 만들어 두면 좋을 것같아 SM타입으로 만들었다. MPU는 STR911FAM42X6 을 이용하여 보드 제작 했다. 256k falsh, 96k ram, 96Mhz ARM966E Core. [SM-Type EVM] 이라 동일한 핀맵과 USB2UART, Bluetooth 모듈을 호환 가능하다. ARM-EVM 테스트 보드
[S3C2400] ARM920T - 저렴한 ARM9 [S3C2400] ARM920T - 저렴한 ARM9 저렴한 가격으로 ARM9 테스트 해 볼만한 MCU가 있다. MMU있고 TFT LCD Controller있고... LQFP타입이라 조립하기 좋고 2층 PCB로도 충분할것 같고... 부품 저렴하고 쉽게 구할 수 있어 ARM9테스트 해 보기에 상당히 좋을듯 하다. 판매처 S3C2400 마이크로 콘트롤러 구조 DMA 컨트롤러 - ARM920T CPU core .내부 AMBA (Advanced Microcontroller Bus Architecture) .MMU 내장 . 데이터/명령어 캐쉬 (각 16K), write 버퍼 Physical address TAG RAM . Tracking ICE mode - 응용 분야: 범용/ 이동기기 - 16/32-bit RISC..
STR911 GPIO 토글링 속도 측정 STR911 GPIO 토글링 속도 측정 while(1) { GPIO2->DR[0x3FC] ^= 0xFF; } 기본 예제로 클럭 설정시 25Mhz에서 SCU_MCLKSourceConfig(SCU_MCLK_OSC); /*Use OSC as the default clock source*/ SCU_PCLKDivisorConfig(SCU_PCLK_Div1); /* ARM Peripheral bus clokdivisor = 1*/ 대략 600kHz 정도 출력된다. PLL 클럭으로 설정시 SCU_MCLKSourceConfig(SCU_MCLK_PLL); /*Use OSC as the default clock source*/ SCU_PCLKDivisorConfig(SCU_PCLK_Div1); /* ARM Peripher..