nRF5 SDK 의 sdk_config.h 역할 및 엉망 품질 ..
본 설명의 nRF5 SDK 버전 : 17.1.0 (정확한 버전 : 17.1.0_ddde560 2023 년 8월 가장 최신 버전의 SDK )
예 . SPIS 를 예로 설명하나 다른 페리페랄들 모두 동일하게 적용됨.
SDK 로 제공되는 SPIS 관련 파일 중에서 nrfx_spis.c 파일을 보면 NRFX_SPIS_ENABLED 가 1이면 이후 코드 활성화 시키고 0이면 비활성화 하는 식으로 sdk 소스 파일들 관리 체계 구현되어있고 그 설정을 sdk_config.h 에서 기록하게 되어있다. sdk_config.h 는 nRF5 SDK 사용자가 가장 많이 사용하게 되는 중요한 파일이며 그 관리체계에 자체 모순이 있으면 안되는 지점이다.
위와 같이 SPI slave 관련 함수를 활성하기 위하여 sdk_config.h 파일에 아래처럼 설정 하면 될것이라고 당연히 누구나 그렇게 생각할 것이다
#define NRFX_SPIS_ENABLED 1
그러나, 위 구문으로는 정상적인 설정 안된다. NRFX_ 없이 SPIS_ENABLED 를 1로 설정해야 정상 작동한다.
#define SPIS_ENABLED 1
심지어는 SPIS_ENABLED 를 1로 설정하면 NRFX_SPIS_NABLED 를 0으로 설정해도 위 그림코드 처럼 NRFX_SPIS_NABLED 가 1인 것처럼 처리됨. SDK 설계자가 미쳤나 싶다. 코드에다가 뭔 짓 을 한거냐 !! 코딩을 해야지 왜 똥을 싸질러? 초보 개발자 습작 수준의 것을 회사공식 sdk 로 배포하고 있음.. 최소한의 기준은 지키자... 사람보다 AI 가 SDK 만들어 배포하는게 더 좋을거 같구나...이건 실수도 아니고 그냥 너네들이 이 정도는 문제없겠지? 라는 빡대가리 발상임을 알 수 있게 해주는 품질이다. 분명 깔끔한 해결이 가능한 부분임. 칩 하드웨어 설계는 최소한 이 따위 저품질이 아니길 희망한다. 현재까지 NORDIC 사 에서 제공하는 솔루션들을 관찰한 결과 - 칩 하드웨어 설계 쪽은 최고 인텔리한 계층 & 책임감 & 무결성 검토조직 등이 있는 것 같고(NORDIC 사가 원래 칩 하드웨어에서 경쟁력 좋았음.), softdevice 도 제법 무결성달성된 것 같아서 이 쪽도 최상위 인텔리 & 책임감 있는 사람이 작업 한것 같음. 최종 말단 사용자 에게 제공하는 sdk 류는 개발자가 직접 해결 가능한 지점이다 보니 좀 부실한 애들이 담당하나 보다 이렇게 받아들이고 있긴함. 5년 전부터 sdk 에 있던 버그 해결안하고 계속 동일한것 배포하는것 보다가 빡쳤음. 말해도 개선안됨. 능력이 부족한건 이해 해준다. 그러나 무책임 무성의한 태도는 이해도 안되고 용서도 안됨.
해결책
아래처럼 NRFX_ 부착되지 않은 것으로 설정하면 오동작 없고 혼선 없고, 항상 의도한 대로 코드 작동함.
다른 페리페랄들 모두 동일.
// NRFX_xxx 설정 무관하게 실제 코드에서의 처리는 이 설정으로 결정됨.
#define SPIS_ENABLED 1
#define SPIS1_ENABLED 1
// NRFX_xxx 설정 . 항상 위의 설정이 우선권을 가짐. 이 설정은 하나 마나. 하나 마나인걸 sdk 로 배포하는 니네들 하...
//#define NRFX_SPIS_ENABLED 1
//#define NRFX_SPIS1_ENABLED 1
연관
상위정리
https://igotit.tistory.com/244 의 nRF52
첫 등록 : 2023.08.05
최종 수정 :
단축 주소 : https://igotit.tistory.com/4772
'임베디드.일렉트로닉스 > nRF52' 카테고리의 다른 글
nRF52 . Watch Dog Timer (0) | 2023.10.30 |
---|---|
nRF5 SDK . NRF_LOG_INFO 고속 출력시 표현 누락 해결책 (0) | 2023.08.24 |
nRF52 . 컴파일 에러 해결 . unknown type name 'nrf_dfu_set_adv_name_svci_async_t' (0) | 2023.08.04 |
SES . 해결 . #error "libc++ does not support using GCC with C++03. Please enable C++11" (0) | 2023.07.27 |
nRF52 . 코드에서 핀 리셋 용 GPIO 핀 연결 설정 . CONFIG_GPIO_AS_PINRESET (0) | 2023.07.26 |
댓글