모듈 소스코드를 컴파일하는데 warnings난 것을 에러로 처리되서 진행이 안되네요..

jungjury의 이미지

구조체를 하나 선언해주고

struct  GpioRegisters
{
        uint32_t PD_CFG[4];
        uint32_t PD_DAT;
};
 
 
struct GpioRegisters *pGpioRegisters;

아래와 같이 주소값을 지정해주는데...

pGpioRegisters = (struct GpioRegisters *)__io_address(0x01C2086C);

아래와 같은 에러가 납니다. 다른 보드의 같은 버전대(3.4.xx) 커널로 바꿔보면 에러가 안나던데..
컴파일러는 동일한걸 사용하는데 이상합니다..

/home/webnautes/tmp/ledblink.c: In function ‘LedBlinkModule_init’:
/home/webnautes/tmp/ledblink.c:71:27: error: implicit declaration of function ‘__io_address’ [-Werror=implicit-function-declaration]
cc1: some warnings being treated as errors
make[2]: *** [/home/webnautes/tmp/ledblink.o] 오류 1
make[1]: *** [_module_/home/webnautes/tmp] 오류 2
make[1]: Leaving directory `/home/webnautes/kernel-source'
make: *** [default] 오류 2

hys545의 이미지

저 옵션을 제거 하거나
아니면
소스에
‘__io_address
이 함수 원형이 있는 헤더 파일을 추가하면 될거 같긴한데
저건 컴파일러하고는 상관업이 소스 자체의 문제 같습니다

즐린

익명 사용자의 이미지


말씀하신 옵션을 찾아서 제거해보니...
문제가 되었던 커널소스에는 해당 함수가 선언이 안되어 있어 문제가 발생한게 맞네요...

동작했던 커널 소스에는 아래 처럼 선언이 되어 있고..
:#define __io_address(n) IOMEM(IO_ADDRESS(n))

jungjury의 이미지

^^;

안녕하세요 : )