[Device Driver] FXOS8700, FXAS2100 - Step 1

박남호·2022년 11월 23일
0

--------Step 1
1. yocto에서 FXOS8700 source code 위치
2. yocto에서 FXOS8700 object file 위치
3. yocto에서 커널에 내장되어있는 디바이스 드라이버 build 방법
4. 타겟 보드에서 data file 읽어보기

1. yocto에서 FXOS8700 source code 위치
nxp yocto 환경에서 FXOS8700 커널 소스는 /tmp-imx-yocto-bsp/build/tmp/work-shared/imx7dsabresd/kernel-source/drivers/misc 에서 확인 할 수 있다. 추후 컴파일이 제대로 되었는지 확인하기 위해 fxos8700.c의 probe 함수에 printk("fxos8700 test code.");를 추가 하였다. 나중에 타겟보드에서 제대로 출력하는지 확인해보자.
2. yocto에서 FXOS8700 object file 위치
nxp yocto 환경에서 FXOS8700 오브젝트 파일은 /tmp-imx-yocto-bsp/build/tmp/work/imx7dsabresd-poky-linux-gnueabi/linux-imx/5.4-r0/build/drivers/misc 에서 확인 할 수 있다.

한가지 추가로 알아야 할 것은 디바이스 트리에 대한 설명인데 이것은 아직 스터디가 부족하여 다음번에 포스팅 하기로하고... 간단하게만 설명하자면 FXOS sensor 드라이버를 디바이스 트리에 등록을 해두면 부팅과정에서 드라이버를 올린다 (User가 Insmod를 해줄 필요가 없다). /tmp-imx-yocto-bsp/build/tmp/work-shared/imx7dsabresd/kernel-source/arch/arm/boot/dts 경로에서 imx7d-sdb.dts 파일을 vim으로 열어서 fxos를 찾으면 아래와 같이 등록 되어있는 것을 확인 할 수 있다.

3. yocto에서 커널에 내장되어있는 디바이스 드라이버 build 방법
build 폴더에서 bitbake -c compile -f virtual/kernel 를 입력한다. 빌드가 끝나고 FXOS8700 object file을 확인해보면 지금 시간으로 update가 된 것을 확인 할 수 있다. 그리고 이제 bitbake coer-image-minimal 로 빌드한다. 빌드에 대해 간단히 설명하면 첫번째 빌드로 디바이스 드라이버에 대한 부분을 업데이트해주고 두번째 빌드로 타겟보드에 올릴 부트로더, 커널이미지, rootfs 등을 업데이트 한다고 생각하면 된다. 이제 빌드는 끝났으니 타겟보드에 올려서 fxos8700 sensor에 data를 읽어보면 될 것 같다. (타겟보드에 올리는 방법은 yocto 파트에서 자세하게 설명하고 있다.)
4. 타겟 보드에서 data file 읽어보기
일단 부팅을 하면서 1번에서 추가한 부분이 제대로 출력되는지 확인해보자. 추가한 부분도 출력이되고 initial도 모두 성공했다는 메시지가 표시된다. 정상적으로 센서 드라이버가 올라갔으니 이제 데이터를 확인해 보자. /sys/devices/virtual/misc/FreescaleAccelerometer 경로에서 #echo 1 > enable 커맨드를 입력하고 cat data로 데이터를 확인하면 계속 데이터가 바뀌는 것을 확인 할 수 있다.

profile
NamoPark

0개의 댓글