하나의 큰 마이크로 컨트롤러 또는 많은 작은 마이크로 컨트롤러?


24

저는 마이크로 컨트롤러로 비교적 간단하고 기본적인 작업을 수행하는 데 익숙합니다. LED 구동, 모터 구동, 기본 루틴, 문자 LCD의 GUI 등과 같은 것들이 있지만, 항상 몇 가지 작은 부수적 인 작업으로 단 하나의 핵심 작업입니다. 저것이 저것에 필요한 전부이기 때문에 저를 저급 제품으로 강등 시켰습니다.

더 복잡한 것을 설계하고 싶지만 마이크로 컨트롤러 연속체의 윗면은 내가 잘 노출 된 것이 아닙니다. 따라서, 나는 많은 작업을 동시에 수행 할 마이크로 컨트롤러를 고르는 데 매우 어려운 시간을 보냈습니다. MIPS 번호와 만족스러운 핀아웃만으로도 원하는 작업을 수행 할만큼 충분한 마력이 있다고 말할 수는 없습니다. 할 것.

예를 들어, 직렬 및 USB 통신, GUI 및 기타 여러 작업과 함께 PI 루틴을 사용하여 2 개의 BLDC 모터를 제어하고 싶습니다. 각 모터마다 마이크로 컨트롤러가 있고 기타 작업을 위해 하나의 마이크로 컨트롤러를 가지고 싶어서 기타 작업으로 인한 오버 헤드가 중요한 모터 기능을 방해하지 않도록 보장 할 수 있습니다. 그러나 그것이 실제로 좋은 아이디어인지 순진한 방법인지는 모르겠습니다.

내 질문은 두 가지로 생각됩니다.

  1. 여러 가지 멀티 태스킹을 수행해야 할 때 복합기 방식이 좋은 아이디어입니까, 아니면 분할 및 분리하는 것이 좋습니다.

  2. 보고있는 마이크로 컨트롤러가 내 작업 목록을 기반으로 필요한 작업을 수행하기에 충분한 컴퓨팅 성능을 가지고 있는지 직관적으로 알 수있는 방법은 무엇입니까?

RTOS를 실행하는 ARM SoC에 이르기까지 중간 정도의 dsPIC33을보고 있습니다. 내가 필요한 것을 연마하는 체계적인 방법은 많은 도움이 될 것입니다.




4
답변이 너무 많지만 동일한 언어로 말하는 동일한 보드에 많은 프로그래밍 가능 마이크로를 얻는 것은 단일 마이크로를 사용하는 것보다 지능적인 주변 장치를 사용하는 것보다 훨씬 더 효과적입니다.
Erik Friesen

답변:


10

질문에 대한 답변은 최종 목표가 무엇인지에 따라 다릅니다. 이러한 장치 중 소수 이하가 필요한 경우 개발을보다 쉽게하고 부품 비용에 대해 걱정하지 않아도됩니다. 이 중 수천 개 이상을 만들 경우 요구 사항을 분석하고 장치 하드웨어 비용을 줄이는 것이 좋습니다.

소량

일회성 또는 소규모로 이러한 장치를 사용하는 경우 개발 노력으로 인해 항목 당 비용이 증가 할 수 있으므로 비용 / 개발보다는 개발하기 가장 쉽고 빠른 것에 중점을 두어야합니다. 마이크로 일렉트로닉의 크기.

일반적으로 캡슐화는 복잡성을 줄이고 생산성을 향상시킬 수 있습니다. BLDC 제어, PID 루프 등과 같은 어려운 실시간 요구 사항이있는 경우 사용자 인터페이스 및 기타 비 실시간을 유지하는 컨트롤러와 통신하는 작업에 대해 별도의 컨트롤러를 사용하는 것이 더 빠를 수 있습니다. 시간 작업.

따라서이 경우 질문에 대한 답변은 다음과 같습니다.

여러 가지 멀티 태스킹을 수행해야 할 때 복합기 방식이 좋은 아이디어입니까, 아니면 분할 및 분리하는 것이 좋습니다.

스케일은 분할 및 격리를 위해 약간 기울어집니다. 가장 큰 이유는 실시간 시스템을 디버깅하는 데 많은 시간이 소요될 수 있고, 그러한 작업을 자체 프로세서에 유지하면 무언가 제대로 작동하지 않는 이유를 찾을 때 측정하거나 제어해야하는 변수가 제한되기 때문입니다.

보고있는 마이크로 컨트롤러가 내 작업 목록을 기반으로 필요한 작업을 수행하기에 충분한 컴퓨팅 성능을 가지고 있는지 직관적으로 알 수있는 방법은 무엇입니까?

이 경우 리소스가 많은 32 비트 프로세서와 리소스가 제한된 8 비트 프로세서의 비용 차이는 개발에 소요되는 시간에 비해 작습니다. 필요한 전력량을 알아 내야 할 이유가 거의 없습니다. 개발하고 사용할 수있는 가장 큰 프로세서를 구입하십시오. 나중에 설계 비용을 최적화해야하는 경우 실제 프로세서 리소스 사용량을 측정하는 것이 비교적 쉬운데 실제 부하를 처리 할 수있는리스 어 프로세서를 선택하십시오. 그때까지 가장 큰 것을 사용하고 "최적의 적합"을 찾는 것에 대해 걱정하지 마십시오.

대량 생산

이러한 장치를 많이 만들 계획이라면 신중한 분석을 통해 상당한 비용을 절감 할 수 있습니다. 일반적으로 더 큰 마이크로 컨트롤러를 사용하면 단일 마이크로 컨트롤러를 대체 할 수있는 2 개 미만의 마이크로 컨트롤러가 필요하지만 필요한 특정 작업에 따라 예외가 있습니다. 이러한 양으로 하드웨어 비용은 개발 비용보다 훨씬 클 수 있으므로 요구 사항을 분석하고 개발을 수행하는 것보다 몇 시간 만 투자하는 것보다 더 많은 시간을 소비해야합니다.

많은 멀티 태스킹을 수행해야 할 때 복합기 방식이 좋은 생각입니까, 아니면 분할 및 분리하는 것이 더 낫습니까?

복합기 방식은 일반적으로 여러 프로세서보다 전체 프로젝트 수명 동안 비용이 적게 듭니다. 다양한 작업이 충돌하지 않도록하기 위해 더 많은 개발 및 디버깅 시간이 필요하지만, 엄격한 소프트웨어 디자인은 별도의 하드웨어를 갖는 것만 큼을 제한 할 것입니다.

보고있는 마이크로 컨트롤러가 내 작업 목록을 기반으로 필요한 작업을 수행하기에 충분한 컴퓨팅 성능을 가지고 있는지 직관적으로 알 수있는 방법은 무엇입니까?

수행하려는 작업과 수행하는 리소스 수를 이해해야합니다. 다음이 사실이라고 가정하십시오.

BLDC PI 루틴은 초당 100 회 프로세서 시간의 X주기를 소비하며 각각 작동에는 약 50 바이트의 RAM, 튜닝에는 16 바이트의 EEPROM, 코드에는 1k 플래시가 필요합니다. 마이크로 컨트롤러에는 각각 16 개의 16 비트 PWM 주변 장치가 필요합니다. 특정 인터럽트 대기 시간 요구 사항이있는 지터를 지정해야 할 수도 있습니다.

USB 및 직렬 루틴은 필요에 따라 Y주기의 프로세서 시간, 2k RAM, 64 바이트 EEPROM 및 8k 플래시를 소비합니다. USB 및 직렬 주변 장치가 필요합니다.

GUI는 초당 30 회의 Z 사이클 프로세서 전력을 소비하며 2k RAM, 128 바이트 EEPROM 및 10k 플래시가 필요합니다. LCD, 버튼, 노브 등과의 통신에 19 I / O를 사용합니다.

처음 시작할 때 X, Y, Z가 실제로 무엇인지 이해하기 어려울 수 있으며 프로세서의 아키텍처에 따라 약간 변경됩니다. 그러나 야구장 추정 내에서 설계에 필요한 램, eeprom 및 플래시의 양과 필요한 주변 장치를 이해할 수 있어야합니다. 메모리 및 주변 장치 요구 사항을 충족하고 해당 제품군 내에 광범위한 성능 옵션이있는 프로세서 제품군을 선택할 수 있습니다. 이 시점에서 개발을 위해 제품군에서 가장 강력한 프로세서를 사용할 수 있습니다. 설계를 구현 한 후에는 설계 또는 개발 환경을 변경하지 않고도 전력 측면에서 제품군을보다 저렴한 옵션으로 쉽게 이동할 수 있습니다.

이러한 설계를 충분히 수행 한 후 X, Y 및 Z를 더 잘 추정 할 수 있습니다. BLDC PI 루틴은 자주 실행되지만 매우 작으며 사이클이 거의 필요하지 않습니다. USB 및 직렬 루틴은 많은주기를 필요로하지만 드물게 발생합니다. 사용자 인터페이스는 변경 사항을 찾기 위해 자주 몇 번의주기가 필요하지만, 예를 들어 디스플레이를 업데이트하기 위해 드물게 많은주기가 필요합니다.


11

PI 제어는 일단 시작되면 격리 된 작업이므로 일단 코드를 작성하면 모터 제어를 분리하고 두 BLDC 모터 각각에 대해 PWM (아마도 PIC18)을 포함하는 별도의 마이크로 컨트롤러를 갖게됩니다. 두 마이크로 모두에서 사용할 수 있습니다. I²C와 같은 인터페이스를 통해 메인 마이크로 컨트롤러에 다시 연결하고 원하는 경우 PI 컨트롤에 대한 매개 변수를 다운로드 할 수 있습니다. 이를 통해 GUI에서 수정할 수 있습니다.

그런 다음 PIC24와 같은 기본 마이크로 컨트롤러의 다른 모든 것을 실행합니다 (목록에 나열된 작업을 기반으로 PIC32가 과도하게 사용되었을 수 있습니다). 또한 가장 빠른 PIC24E는 PIC32만큼 빠르게 실행될 수 있습니다.

마이크로 컨트롤러를 선택할 때는 먼저 필요한 플래시와 RAM의 양을 추정 한 다음 워드 길이와 프로세서 속도를 살펴 봅니다. 나중에 가장 까다로운 요구 사항은 처리해야 할 가장 빠른 인터럽트입니다. 예를 들어 16KHz 사운드를 출력하고 62.5µs마다 인터럽트가 발생하면 수십 나노초 내에 명령 시간이 단축 된 마이크로 컨트롤러를 사용하는 것이 좋습니다. 업무 완료.


7

답변을 생성하는 데 도움이되는 반 공식 접근법이 있습니다. White의 "임베디드 시스템 설계"2 장을 읽는 것이 좋습니다. 대부분은 Google 도서 에서 볼 수 있습니다 .

이 장에서는 시스템 아키텍처 설계에 대해 설명하고 작업을 가장 잘 캡슐화 할 수있는 방법에 대한 공식적인 접근 방식을 제공합니다. 이 장은 주로 하나의 컨트롤러 시스템에 관한 것이지만 여러 컨트롤러로 쉽게 확장됩니다. 공유해야 할 리소스를 구상하고 각 작업에 대한 캡슐화 수준을 선택하는 데 도움이됩니다.

그녀는 고려해야 할 다양한 견해를 제시하지만 그중 하나는 아래에 나와 있지만 유용한 조작이 많이 있습니다. 물론 이것은 그 자체로는 그다지 의미가 없지만 장을 확인하는 것이 좋습니다.

화이트, 임베디드 시스템 만들기, 2 장

"컨트롤러가 충분한 지 어떻게 알 수 있습니까?"에 관해서는 저의 선호 사항은 디자인 샌드 박스에 최대한 많은 전력을 투입하고 디자인이 제대로 된 후에 얼마나 많은 리소스를 줄일 수 있는지 파악하는 것입니다. 방법. 프로토 타입 제작을위한 10 달러 마이크로 컨트롤러와 3 달러 마이크로 컨트롤러 사이의 가격 차이는 몇 주 만에 새로운 부품을 기다리는 엄지 손가락을 재조정하고 돌리는 것입니다.


5

Coldfire 52259 (미드 레인지 32 비트 ~ 80MHz 마이크로)에서 실행되는 모터, IO, 디스플레이, 3x UART + SPI + I2C-광범위하게 설명하는 시스템에서 작업하고 있지만 너무 어렵지는 않습니다. 소프트웨어 아키텍처 권리가 중요합니다-우리는 하드웨어 및 인터럽트 (하드웨어가 자체적으로 처리 할 수있는 모든 것, 인터럽트로 하드웨어 및 서비스에서 실행되는 것)에서 많은 것들을 가지고 있습니다. 모든 하우스 키핑을 수행하기 위해 main () 루프를 떠나십시오.

개인적으로 나는 내가 본 대부분의 RTOS를 싫어합니다. 최저가 프로젝트를 부풀리고 배우고 싶은 다른 것을 추가하면 직접 사용할 수있는 하드웨어 기능 (인터럽트 기능 + 인터럽트 사용)을 통해 하드웨어에서 더 나은 성능을 얻을 수 있습니다 소프트웨어로 위장하기보다는

하이 엔드에서 요즘 RTOS와 임베디드 리눅스를 실행하는 SoC로부터 실제로 이익을 얻을 수 있을 정도로 복잡하고 강력한 MCU 사이에는 마진이 거의없는 것 같습니다 .

그러나이 경우 메인 "두뇌"CPU의 명령 하에서 중요한 기능 (타이밍 또는 제한에서 정지하는 것이 중요한 EG 모터 제어)을 처리하기 위해 작고 저렴한 마이크로를 사용하는 것이 가치 있다고 말하면 "실시간이 아닌"OS에서 적시에 무언가를 수행합니다.


3

다른 사람의 대답은 더 좋지만 유용 할 수있는 약간의 정보가 있습니다. 이것은 약간의 표시가있을 수 있으며 주석으로 추가하고 싶지만 50 개의 대표 규칙이 있습니다. (

짧은 대답은 의존한다는 것입니다. 위를 참조하십시오.하지만 프로세서 이점에 대해서도 생각하지 마십시오.

소형 프로세서의 이점에 대해 생각해보십시오. 이것은 결국 프로세서에 관한 질문입니다. 수학적 및 반복적이지 않은 특정 작업의 경우 여러 프로세서가 로그 부스트를 생성 할 수 있습니다. 암달의 규칙은 부스트를 로 달성 할 수 있다고 말합니다1((1)+에스)

물론, 비용, 구현 용이성; 고려하는 것이 중요하고 훨씬 더 중요합니다.


1

대답은 구현 세부 사항에 따라 달라질 수 있습니다. 별도의 마이크로 컨트롤러에서 깨끗하고 강력한 방법으로 구현하기가 더 쉬운 일부 작업. 전력 소비도 고려할 수 있습니다. 일반적으로 여러 작업을 처리하는 단일 마이크로를 말하면 단일 작업을 처리하는 여러 마이크로보다 전력이 덜 필요합니다.


1

"Horsepower"는 실시간 제약 조건을 충족시킬 수 있는지 여부에 따라 다릅니다.

두 개의 PWM 출력이 있고 둘 다 정확히 동시에 전환해야하는 경우이를 수행하려면 필요한 병렬 처리가 필요합니다. 정확한 타이밍을 처리하는 전용 PWM 컨트롤러를 사용하는 경우 작은 마이크로 컨트롤러에서도 작동하지만 GPIO 기반 솔루션은 많은 컴퓨팅 성능을 사용할 수 있어도 엄청나게 복잡합니다.

대부분의 프로토콜의 경우 최신 MCU에는 실시간 제약 조건이있는 프로토콜 부분의 구현이 내장되어 있으므로 필요한 주변 장치가 있고 데이터 흐름을 처리하는 데 필요한 CPU 속도가있는 MCU를 찾을 수있는 경우 (즉, 하드 실시간 요구 사항이 저하됨) FIFO가 가득 차기 전에 FIFO에서 읽을 수 있고 채워지는 것보다 빠릅니다 "라는 형식의 부드러운 실시간 요구 사항에 따라 최적의 선택이 될 것입니다.

그러한 솔루션이 존재하지 않는 경우, 옵션은 CPU + FPGA 솔루션 (예 : 하드 ARM 코어가있는 FPGA) 또는 순수한 FPGA 솔루션 (복잡한 요구 사항에 따라 소프트 CPU가있는 경우)을 사용하여 기능을 별도의 컨트롤러로 옮기는 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.