도와주세요!!
글 수 15,339
2003.11.24 23:18:44 (*.252.60.150)
6710
안녕하세요.
M01을 구입해서 사용하고 있습니다.
m01보드를 사용하여 결과적으로 구현하고 싶은 기능은 void main형식으로 구현
하는 user application
프로그램 입니다. falinux에서 제공하는 bootloader가 하드웨어관한 모든 초기
화 과정을 포함하고 있고
ram copy나 flash-writing에 관해서도 해결되기 때문에 bootloader를 monitor
프로그램 형식으로 사용
하려 합니다.
이런 동작이 가능하려면 아래와 같은 사항들을 만족 해야 한다고 생각합니다.
1. strong-arm환경에서 돌아갈 수 있는 user program 작성 및 실행 image 만들
기
2. 원하는 Memory 영역으로 user 프로그램 down load
3. download된 영역으로 점프 및 실행
2번은 z-modem으로 minicom 상에서 특정 영역으로 다운로드 하는 방식을 사용
하여 해결 했고
3번 영역은 질문을 드려 봤지만 명확한 해결책을 찾지 못했습니다. 푸지님게
서 main.c 에 있는 Gofunction
라인의 주석을 지우고 해보면 된다고 하셨는데 어디에도 Gofunction은 선언되
있지 않더군요. 이부분 어떻게
구현 해주면 된느지 궁긍합니다.
아래와 같이 해주니 reset 되더군요. ^^;
/////////////////serial 프롬프트 상에서 go 를 입력했을때 실행되는 함
수 //////////
int GoFunction(int argc, char **argv){
void (*prgstart)(int zero, int arch);
prgstart = (void (*)(int, int))DEFAULT_RAM_USERAPP_START;
//#define DEFAULT_RAM_USERAPP_START 0xC0000100
//Userapplication Program start address
prgstart( ( long ) 0 , (long) 200 );
printf( "Running Program!
"); //Debugging Code
return 0;
}
///////////////////
1번은 arm linux gcc 로 -o 옵션을 줘서 컴파일 했습니다. 아주 간단하게 아래
와 같이 LED 점등하는 식으로
작성 해주었습니다. 이렇게 생성된 파일을 다운로드 해서 실행 시켰는데 동작
을 하지 않는 군요.
뭐가 잘못되어서 그럴까요. *^^*
실행되는 날까지 할껍니다. 한수 가르쳐 주세요.
그럼.
#include
void Delay(int count);
int main(void)
{
int Temp01,Temp02;
GAFR = 0x00000000; //Alternate Function Register
GPDR = 0xFFFF; //Pin Direction Register
GPCR = 0xFFFF; //Pin Output Clear Register
GPSR = 0x0000; //Pin Output Set Register
Delay(500); // All led turn on
//CCF is setted by 206.4Mhz at 3.6864Mhz
Temp01 = 0xffff;
Temp02 = 0x0000;
while(1){
GPCR = Temp01;
Delay(0xffff);
GPSR = Temp01;
Delay(0xffff);
}
return 0;
}
void Delay(int count)
{
while(count--);
}
M01을 구입해서 사용하고 있습니다.
m01보드를 사용하여 결과적으로 구현하고 싶은 기능은 void main형식으로 구현
하는 user application
프로그램 입니다. falinux에서 제공하는 bootloader가 하드웨어관한 모든 초기
화 과정을 포함하고 있고
ram copy나 flash-writing에 관해서도 해결되기 때문에 bootloader를 monitor
프로그램 형식으로 사용
하려 합니다.
이런 동작이 가능하려면 아래와 같은 사항들을 만족 해야 한다고 생각합니다.
1. strong-arm환경에서 돌아갈 수 있는 user program 작성 및 실행 image 만들
기
2. 원하는 Memory 영역으로 user 프로그램 down load
3. download된 영역으로 점프 및 실행
2번은 z-modem으로 minicom 상에서 특정 영역으로 다운로드 하는 방식을 사용
하여 해결 했고
3번 영역은 질문을 드려 봤지만 명확한 해결책을 찾지 못했습니다. 푸지님게
서 main.c 에 있는 Gofunction
라인의 주석을 지우고 해보면 된다고 하셨는데 어디에도 Gofunction은 선언되
있지 않더군요. 이부분 어떻게
구현 해주면 된느지 궁긍합니다.
아래와 같이 해주니 reset 되더군요. ^^;
/////////////////serial 프롬프트 상에서 go 를 입력했을때 실행되는 함
수 //////////
int GoFunction(int argc, char **argv){
void (*prgstart)(int zero, int arch);
prgstart = (void (*)(int, int))DEFAULT_RAM_USERAPP_START;
//#define DEFAULT_RAM_USERAPP_START 0xC0000100
//Userapplication Program start address
prgstart( ( long ) 0 , (long) 200 );
printf( "Running Program!
"); //Debugging Code
return 0;
}
///////////////////
1번은 arm linux gcc 로 -o 옵션을 줘서 컴파일 했습니다. 아주 간단하게 아래
와 같이 LED 점등하는 식으로
작성 해주었습니다. 이렇게 생성된 파일을 다운로드 해서 실행 시켰는데 동작
을 하지 않는 군요.
뭐가 잘못되어서 그럴까요. *^^*
실행되는 날까지 할껍니다. 한수 가르쳐 주세요.
그럼.
#include
void Delay(int count);
int main(void)
{
int Temp01,Temp02;
GAFR = 0x00000000; //Alternate Function Register
GPDR = 0xFFFF; //Pin Direction Register
GPCR = 0xFFFF; //Pin Output Clear Register
GPSR = 0x0000; //Pin Output Set Register
Delay(500); // All led turn on
//CCF is setted by 206.4Mhz at 3.6864Mhz
Temp01 = 0xffff;
Temp02 = 0x0000;
while(1){
GPCR = Temp01;
Delay(0xffff);
GPSR = Temp01;
Delay(0xffff);
}
return 0;
}
void Delay(int count)
{
while(count--);
}