Don't think! Just do it!

종합 IT 기술 정체성 카오스 블로그! 이... 이곳은 어디지?

임베디드 소프트웨어/Zephyr

[nRF52840 + Zephyr] #6. KConfig

방피터 2023. 5. 22. 21:47

Kconfig는 제퍼 소프트웨어 설정에 관련이 있어.
gpio나 usb처럼 하드웨어 드라이버를 로드하기 위한 설정도 포함되지.
👇👇
CONFIG_GPIO=y
CONFIG_UART=y

...

이런 식으로 하드웨어 사용 설정을 하는데 하드웨어 peripharal 종류만큼 있겠지?
자주 사용되는 것들은 외우면 좋을 듯 하고.


소프트웨어 설정 쪽을 살펴보면 두 가지 정도가 있을 거 같아.
1. 제퍼 os 시스템 소프트웨어
2. 그 외 서브 시스템 소프트웨어 등등

k_malloc, k_free를 위한 heap 사이즈 설정이나 logging 모듈 사용처럼 os과 밀접하게 관련이 있는 것들이 있고

👇👇👇

system heap을 사용하려면 위와 같은 kconfig 설정이 필요하다.


modbus 처럼 어플리케이션 종류에 따라 사용이 결정되는 subsystem software가 있지.
👇👇
CONFIG_MODBUS=y
CONFIG_MODBUS_ROLE_CLIENT=y

제퍼 MODBUS RTU CLIENT 설정


자주 사용하는 것들은 외워두면 되겠지만 ㅎ
그렇지 않은 것들은 zephyr 사이트에서 검색해가며 써야 할거야.

양이 엄청 많거든 ㅋㅋ

프로토콜이든 서브시스템이든 일단 검색부터 해보자!

예제라도 검색해보라구!

👇👇

 

전체 예제의 반의 반도 안된다.

자기가 만든 application에서 kconfig 설정은 prj.conf에서 할 수 있어.
그런데 hello world나 blinky 같은 예제를 보면 gpio나 uart 설정이 없는데...
다들 예상하고 있다시피 ㅎㅎ 기본적인 것들은 이미 보드 레벨에서 설정이 되어 있어.

👇👇👇

Default kconfig

내 mac에서는 아래 경로에 위치해 있어.

opt>nordic>ncs>v.2.3.0>zephyr>boards>arm>nrf52840dk_nrf52840>nrf52840dk_nrf52840_defconfig

이 덕분에 별도 설정없이 gpio나 uart를 사용할 수 있는 거지 ㅎㅎ 다들 한번 확인해보자.

 

그리고 vscode nRF extension에서는 kconfig gui를 제공하는데

처음에는 좀 헤깔리 수 있으니 천천히 시간을 두고 보는 걸 추천해!

👇👇

kconfig gui

그래도 기본 툴에서 제공하는 gui보다는 나으니깐 감사해 하자 ㅋㅋ

👇👇

zephyr west guiconfig

이걸로 kconfig를 마무리 할건데
kconfig는 device tree와 함께 제퍼 os 설정에 필수적인만큼 대강 넘기지 말고 꼭 여러번 공부하고 눈에 익히길 바래.
나중에 개발하다가
“왜 안되지?”
이러면 kconfig와 device tree 문제인 경우가 많으니까! 안녕!

반응형