Arduino의 펌웨어를 업그레이드하여 더 많은 처리 성능을 제공하기 위해 저전압 / 과전압 변경과 같은 더 많은 작업을 수행 할 수 있습니까? 이렇게하려면 칩 자체를 다시 플래시해야한다면 어떻게해야합니까?
Arduino의 펌웨어를 업그레이드하여 더 많은 처리 성능을 제공하기 위해 저전압 / 과전압 변경과 같은 더 많은 작업을 수행 할 수 있습니까? 이렇게하려면 칩 자체를 다시 플래시해야한다면 어떻게해야합니까?
답변:
대부분의 Arduino 보드에 사용되는 ATmega328p MCU의 "펌웨어"에 관한 질문의 측면에 대답하려면 :
ATmega에는 부트 로더를 제외하고는 펌웨어가 없습니다. 작성한 프로그램이 하드웨어 에서 직접 실행 중 입니다.
ISP 프로그래머 가 설정 한 특정 "퓨즈"설정이 있습니다 . 그러나 그중 24 개 (3 바이트) 만 있으며 저수준 구성과 관련이 있으며 내가 생각하는 것은 아닙니다.
Bootloader 도 있습니다.이 프로그램은 MCU 프로그램 메모리의 별도 세그먼트에 있으며 시작시 자체 업데이트 할 수있는 작은 프로그램입니다 (모든 arduino가 프로그래밍되는 방식). 그러나 시작시 단기간 동안 만 실행되며 MCU가 주 프로그램으로 이동 한 후 메모리에서 완전히 제거됩니다.
마지막으로, USB 직렬 인터페이스로 사용되는 대부분의 arduino 보드에는 보조 MCU (ATmega16U2 / 8U2)가 있으며, 다르게 동작하도록 업데이트 할 수 있습니다 (예 : 키보드 / 마우스 에뮬레이션). 그러나 실제로 이것은 변경 사항이 아닙니다. 코어 프로세서에 "다른 펌웨어 설치"로 간주되는지 여부는 arduino 정의 방법에 따라 다릅니다.
실제로 ATmega328P 데이터 시트를 읽는 것이 좋습니다. 기본적으로 "Arduino"를 구성하는 MCU에 대한 설명서입니다. 오해로 보이는 것을 다루어야합니다.
다른 F_CPU에 대한 장치 언더 / 오버 볼팅과 관련하여 아래 차트는 관계를 나타냅니다. 결과적으로 대부분의 Arduino는 5V에서 작동하며 클럭 속도는 16MHz입니다. 8MHz에서 실행되는 3.3V 변형이 있습니다.
그러나 IDE와 함께 제공되는 코어 라이브러리는 일반적으로 대부분의 장소에서 공식을 사용하지 않고 8 및 16 MHz F_CPU 속도에 대해 특정 #if를 갖습니다.
그러므로 당신이 원하는 것을 할 수 있습니다. 그러나 핵심 라이브러리 제한이 영향을받습니다. 비용 대비 이익 비율을 매우 의도 한 수준으로 기울입니다. 그리고 아마도 Stock IDE와 핵심 라이브러리를보다 makefile 메소드로 남겨 둘 것입니다.