아두파일럿을 "luckfox-pico"에 포팅하는 과정
luckfox-pico는 Rockchip의 RV1103 SoC를 장착하고있으며 스펙은 아래와 같다
CPU: ARM Cortex-A7 @ 1GHz x1
MEMORY: 64MB DDR2
STORAGE: 외부에 장착하는 microSD
기타: H264/H265 하드웨어 인코딩 지원 (720p)
이 중에서 카메라를 사용하게 되면 일부를 카메라에 할당하기때문에 사용가능한 메모리가 더 줄어든다.
따라서 메모리 사용량이 적은 리눅스 배포판이 필요하여 Alpine Linux를 사용하게 됨 링크
리눅스 사용법은 배포판별로 아주 큰 차이가 나지는 않음(대부분의 차이는 패키지 관리자의 차이임)
아래 아두파일럿 포팅 방법도 배포판별로 큰 차이가 나지 않음
PWM이나 I2C 하드웨어 접근방법도 추상화가 되어있어 보드별로/리눅스 배포판 별로 차이가 없음
먼저 파일의 다른 리눅스 보드들을 참고해서 보드 지원을 위한 클래스를 추가함
CONFIG_HAL_BOARD_SUBTYPE는 임의의 값으로 하지만
다른 보드들과 작명법을 같이하는것이 좋음
HAL_BOARD_SUBTYPE_LINUX_ASTROLUCKFOX는 나중에 C매크로 등에서 사용됨

위 파일도 수정해준다
번호를 부여하는데 다른것과 겹치지 않도록 주의한다

ADC의 출력을 실제 전압으로 확인할려면 일반적으로 숫자를 곱해줘야한다
luckfox의 ADC는 최대 1.8V까지 측정가능하며 1.8v에서 1024를 출력하기때문에
1.8/1024를 추가해준다
위 이미지의 코드는 보드가 HAL_BOARD_SUBTYPE_LINUX_ASTROLUCKFOX면
ADC의 배수를 1.757812500/1024로 설정하라는 의미이다.
위 두 파일들은 없던 파일들인데 libraries/AP_HAL_Linux/RCOutput_Sysfs.h를 참고해서 추가해 주었다
이 보드가 sysfs를 통해 PWM을 지원을 하지만 핀별로 부여된 번호가 순서대로가 아니기때문에
pwmchip-pwmpin을 순서대로 나열할 수 있는 클래스를 추가해 주었다.
이 소스코드는 그대로 사용해도 상관없으니 따로 적어두진 않음 링크 참고
117번째 줄의 내용은 보드가 HAL_BOARD_SUBTYPE_LINUX_ASTROLUCKFOX이면
static AnalogIn_IIO analogIn; 코드를 추가하는 내용이다.(ADC를 이용해서 배터리 전압 측정이 가능하도록 한다)
224번째 줄의 내용은 PWM핀을 순서대로 나열하는

