도와주세요!!
글 수 15,339
2004.03.19 18:55:44 (*.232.103.193)
6661
모르는게 너무 많아 자주 질문드리게 되네요.
부트로더에서 PWM0 레지스터를 활성화하여 일정 신호를 출력하고자 하는데요.
컴파일하고 ez보드에 올리고 리부팅을 하면 커널이미지를 불러오는 부분에
서 멈춰버립니다. 이걸 어찌 해결해야 하나요?
다른 부분의 소스는 안건드리구 pxa255.h파일과 main.c만 수정하였습니다.
--------------수정부분 -----------------
pxa255.h 에 삽입한 내용
-------------------------
헤더파일 중간쯤에
#define PWM_CTRL0 __REG(0x40B00000) // PWM_CTRL0 Register
#define PWM_PRESCALE ( 0x0000003F & 0x0000003F )
#define PWM_CTRL0_SD ( 0x00000040 & 0x00000040 ) // Abrupt PWM0
#define PWM_CTRL0_RES ( 0x00000000 & 0xFFFFFF80 )
#define PWM_CTRL0_ON ( PWM_CTRL0_RES | PWM_CTRL0_SD | PWM_PRESCALE)
#define PWM_DUTY0 __REG(0x40B00004)
#define PWM_DCYCLE ( 0x000003E7 & 0x000003FF )
#define PWM_FDCYCLE ( 0x00000000 & 0x00000400 ) // duty Cycle
#define PWM_DUTY0_RES ( 0x00000000 & 0xFFFFF800 )
#define PWM_DUTY0_ON ( PWM_DUTY0_RES | PWM_DCYCLE)
#define PWM_PERVAL0 __REG(0x40B00008)
#define PWM_PERVAL0_PV ( 0x000003FF & 0x00003FF )
#define PWM_PERVAL0_RES ( 0x00000000 & 0xFFFFC00 )
#define PWM_PERVAL0_ON ( PWM_PERVAL0_RES | PWM_PERVAL0_PV)
----------------------------------------------
이렇게 삽입했구요..
-------------------------
main.c 에 삽입한 내용.
--------------------------
........
CS8900_Init();
GAFR(16) = 3;
GPDR(16) = 1;
printf("GAFR(16) = 0x%x",GAFR(16));
printf("GPDR(1) = 0x%x",GPDR(1));
CKEN = CKEN | CKEN_PWM0;
PWM_CTRL0 = ( PWM_CTRL0 | PWM_CTRL0_ON);
PWM_DUTY0 = ( PWM_DUTY0 | PWM_DUTY0_ON);
PWM_PERVAL0 = (PWM_PERVAL0 | PWM_PERVAL0_ON);
............
---------------------------------------
위와 같이 삽입하여 컴파일하였는데 에러는 없는데..
부트로더를 이지보드에 올리구 리부팅을 하면
Copy Kernel Image .....
Copy Ramdisk Image .....
Starting kernel [MARCH 303]...
위와 같은 메시지 부분에서 멈춰 버립니다.
에러가 있다면 어느 부분에 에러가 있는지.. 부탁드립니다..
어떤 부분을 어떻게 해야 하는지 막막합니다.. ㅡㅡㅋ
부트로더에서 PWM0 레지스터를 활성화하여 일정 신호를 출력하고자 하는데요.
컴파일하고 ez보드에 올리고 리부팅을 하면 커널이미지를 불러오는 부분에
서 멈춰버립니다. 이걸 어찌 해결해야 하나요?
다른 부분의 소스는 안건드리구 pxa255.h파일과 main.c만 수정하였습니다.
--------------수정부분 -----------------
pxa255.h 에 삽입한 내용
-------------------------
헤더파일 중간쯤에
#define PWM_CTRL0 __REG(0x40B00000) // PWM_CTRL0 Register
#define PWM_PRESCALE ( 0x0000003F & 0x0000003F )
#define PWM_CTRL0_SD ( 0x00000040 & 0x00000040 ) // Abrupt PWM0
#define PWM_CTRL0_RES ( 0x00000000 & 0xFFFFFF80 )
#define PWM_CTRL0_ON ( PWM_CTRL0_RES | PWM_CTRL0_SD | PWM_PRESCALE)
#define PWM_DUTY0 __REG(0x40B00004)
#define PWM_DCYCLE ( 0x000003E7 & 0x000003FF )
#define PWM_FDCYCLE ( 0x00000000 & 0x00000400 ) // duty Cycle
#define PWM_DUTY0_RES ( 0x00000000 & 0xFFFFF800 )
#define PWM_DUTY0_ON ( PWM_DUTY0_RES | PWM_DCYCLE)
#define PWM_PERVAL0 __REG(0x40B00008)
#define PWM_PERVAL0_PV ( 0x000003FF & 0x00003FF )
#define PWM_PERVAL0_RES ( 0x00000000 & 0xFFFFC00 )
#define PWM_PERVAL0_ON ( PWM_PERVAL0_RES | PWM_PERVAL0_PV)
----------------------------------------------
이렇게 삽입했구요..
-------------------------
main.c 에 삽입한 내용.
--------------------------
........
CS8900_Init();
GAFR(16) = 3;
GPDR(16) = 1;
printf("GAFR(16) = 0x%x",GAFR(16));
printf("GPDR(1) = 0x%x",GPDR(1));
CKEN = CKEN | CKEN_PWM0;
PWM_CTRL0 = ( PWM_CTRL0 | PWM_CTRL0_ON);
PWM_DUTY0 = ( PWM_DUTY0 | PWM_DUTY0_ON);
PWM_PERVAL0 = (PWM_PERVAL0 | PWM_PERVAL0_ON);
............
---------------------------------------
위와 같이 삽입하여 컴파일하였는데 에러는 없는데..
부트로더를 이지보드에 올리구 리부팅을 하면
Copy Kernel Image .....
Copy Ramdisk Image .....
Starting kernel [MARCH 303]...
위와 같은 메시지 부분에서 멈춰 버립니다.
에러가 있다면 어느 부분에 에러가 있는지.. 부탁드립니다..
어떤 부분을 어떻게 해야 하는지 막막합니다.. ㅡㅡㅋ