앞서 실버웨어 아크로 펌업을 하고 난뒤 시마 기본 조종기로 바인딩 까지는 성공 했지만 전파 도달거리의 이상을 발견한것 까지 설명 했다. 결국 디버깅을 하기로 했지만 이게 생업이 아니다 보니 시간을 최소한 으로 적게 들여야 했다. 그리고 이거 개조해서 밥벌어 먹고 살것도 아닌데 적당히 해야 했다. 그래서 결국 레퍼런스를 뒤져보며 비트연산자 가득한 소스코드를 들여다 보기로 했다. 먼저 체크 할 사항은 수신 부분의 설정이 정확한가 이다. 시마 드론의 송신부분은 변화 가 없는데 수신부분이 문제가 있는것이므로 펌웨어 업데이트 쪽에 당연히 문제가 있는것이고 펌업 을 하면서 통신 부분의 변화는 rx 초기화 부분과 채널 설정 부분이 될것이다. 먼저 rx 쪽이 정확히 초기화 되어있는지 type 은 정확하게 되어있는지 살펴야 했다. 펌웨어는 비트 노가다먼저 rx_init () 중에 rf_setup 변수를 주목했다 type 은 uint8_t 로 8비트 이다 이 변수가 여러가지 비트연산자 처리를 통해서 최종적으로 통신칩에 초기화 세팅을 하게 되는된다
>
bk2425 레퍼런스를 보면
위의 8비트 는 이런 식으로 설정 된다. 위에서 아래로 00001111 로 기본값이 박히게 된다. 만약 내가 칩의 비트레이트를 250k 에서 1M 으로 또는 2M 으로 바꾸게 되면 그에 따라서 8비트도 각각 스위치 역활을 하면서 변화 해야 할것이다,
>
2M 로 설정해서 컴파일 한뒤에 컴파일러의 디스어셈블러로 최종 변수값이 어찌 변해서 설정됬는지를 추적 해보면
>
rf_setup 의 최종 값은 0x08 즉 00001000 이 되며 이는 250k 였을때 00100000과 달라졌음을 확인 가능했다 비트연산자가 맞는지 틀리는지 다 확인 하긴 힘드는 결과 값만 보고 맞는지 틀리는 지 여부만 판단하겠다는 얕은 꼼수인데 이짓을 의심가는데 마다 해야 하니 ….. rx init 쪽의 세팅에서 의심가는 부분은 없었다. 결국 채널 쪽으로 봐야 겠다