32 비트 48-96Mhz 마이크로 프로세서의 장점 (예 : Arduino Due)


10

것 같다 아두 이노 인해를 (32 비트, 84 MHz의, ARM - 코어 텍스 M3 기반 SAM3X8E)를 오늘 발표했다.

또한이 프로토 타입 보드 (32 비트 / 48-96Mhz / ARM)와 해당 프로토 타이핑 보드에는 무수히 많은 프로세서가 있습니다.

  • NXP LPC1768 / mBed
  • STM32 / 발견
  • PIC32 / ChipKit
  • PIC32 / 시차 프로펠러
  • LM4F120 / TI 런치 패드
  • 기타

나는이 "중간"마이크로 프로세서의 매력을 이해하려고 노력하고 있는데, 이는 저급 AVR / MSP430 / etc 사이에있는 것처럼 보입니다. (프로 : 저가, 저전력, 작은 풋 프린트) 및 고급 ARM7 / etc (프로 : 초당 훨씬 더 큰 명령 가능).

32 비트 / 48-96Mhz / ARM 기반 마이크로 프로세서는 어떤 상황이나 방식으로 적합한 선택입니까? 좀 더 구체적으로 말하면, 저급 8 비트 마이크로 컨트롤러 또는 최고급 ARM7 프로세서 모두에서 설계시 어떤 애플리케이션 또는 어떤 파라미터가 우수한 선택을 할 것인지 궁금합니다.


가장 먼저, Arduino가 처리 할 수없는 라이브 비디오 스트림을 처리 할 수 ​​있습니다. 또한 고급 암호화 알고리즘 또는 해싱 (Arduino보다 빠르고 빠름)이 가능합니다. Arduino가 32 비트 플랫폼을 출시 한 것에 놀랐습니다.하지만 단지 당신을 보여줍니다. Arduino에게 좋은 날입니다!
Piotr Kula

연결된 특수 기능 코어에서 수행하지 않는 한 100MHz 미만의 프로세서에서 사소한 라이브 비디오 처리를 수행하지 않습니다. 그리고 특히 이러한 장치에서 상당히 제한된 온보드 램에는 없습니다. 보다 현실적인 요점은 이러한 칩의 비용이 8 비트 부품의 비용보다 실질적으로 높지 않다는 것입니다. 플래시와 램이 비슷한 ATMEGA보다 실제로 낮을 수 있습니다.
Chris Stratton

3
내가 아는 한, Parallax Propeller는 PIC32와 관련이없는 맞춤형 칩입니다. 연결 소스가 있습니까?
AndrejaKo

답변:


12

이것은 매우 논쟁의 대상이 될 수있는 주제 중 하나입니다. 다양한 관점이 있으며 다른 사람들에게는 다른 것들이 중요합니다. 나는 포괄적 인 답변을하려고 노력하지만 항상 동의하지 않는 사람이 있다는 것을 이해합니다. 나와 동의하지 않는 사람들이 틀렸다는 것을 이해하십시오. (그냥 키딩)

빠른 요약 :

이 답변은 긴 답변이 될 것이므로 먼저 요약하겠습니다. 대다수의 사람들에게 최신 ARM Cortex-M0 / M3 / M4 칩은 최고의 솔루션, 비용 대비 최고의 기능을 제공합니다. 이러한 32 비트 MCU를 PIC 및 MSP430과 같은 8 비트 및 16 비트 조상과 비교할 때도 마찬가지입니다. M0은 1 달러당 1 달러 미만, M4는 1 달러당 2 달러 미만으로 구입할 수 있으므로 가격에 민감한 애플리케이션을 제외하고 ARM 솔루션은 매우 훌륭합니다. M0은 전력이 매우 낮아 대부분의 사람들에게 충분해야합니다. 전력에 매우 민감한 사람들에게는 MSP430이 더 나은 선택 일 수 있지만 M0은 이러한 응용 분야에도 고려할 가치가 있습니다.

보다 심층적 인 분석에 관심이있는 경우 계속 읽으십시오. 그렇지 않으면 지금 읽기를 중지 할 수 있습니다.

이제 각 영역을 살펴보고 다른 MCU를 비교해 보겠습니다.

실행 속도

물론 32 비트 MCU가 더 빨라질 것입니다. 클럭 속도가 빠르지 만 각 클럭에 대해 더 많은 작업을 수행합니다. ARM Cortex-M4와 같은 MCU에는 DSP 처리 명령이 포함되어 있으며 하드웨어에서 부동 소수점을 지원할 수도 있습니다. 8 비트 및 16 비트 CPU는 32 비트 숫자로 작동 할 수 있지만 그렇게하는 것은 비효율적입니다. 그렇게하면 CPU 레지스터, CPU 클럭 사이클 및 프로그램 저장을위한 플래시 메모리가 빠르게 소모됩니다.

개발의 용이성

제 생각에는 이것이 현대의 32 비트 MCU를 사용하는 가장 귀중한 이유 일뿐만 아니라 가장 평가되지 않은 이유이기도합니다. 먼저 이것을 8 비트 PIC와 비교해 보겠습니다. 이것은 최악의 경우 비교이지만 내 요점을 설명하는 데 가장 좋습니다.

더 작은 PIC는 기본적으로 프로그래밍이 어셈블리 언어로 수행되어야합니다. 사실, 8 비트 PIC에도 사용할 수있는 C 컴파일러가 있지만 이러한 컴파일러는 무료이거나 양호합니다. 좋고 자유로운 컴파일러는 얻을 수 없습니다. 컴파일러의 무료 버전은 최적화가 "Pro"버전만큼 좋지 않다는 점에서 한계가 있습니다. Pro 버전은 약 1,000 달러이며 한 제품군의 PIC 칩 (8, 16 또는 32 비트 칩) 만 지원합니다. 한 가족 이상을 사용하려면 다른 $ 1,000의 다른 사본을 사야합니다. 컴파일러의 "표준"버전은 중간 수준의 최적화를 수행하며 각 칩 제품군에 대해 약 500 달러의 비용이 듭니다. 8 비트 PIC는 최신 표준에 따라 속도가 느리고 최적화가 필요합니다.

이에 비해 ARM MCU 용으로 우수한 C 컴파일러가 많이 있습니다. 제한이있는 경우 이러한 제한은 일반적으로 지원되는 플래시 메모리의 최대 크기에 있습니다. Freescale Codewarrior 도구에서이 제한은 128Kbyte입니다. 이것은이 포럼에있는 대부분의 사람들에게 충분합니다.

C 컴파일러를 사용하면 CPU 메모리 맵의 하위 수준 세부 사항을 신경 쓸 필요가 없다는 장점이 있습니다. PIC에서의 페이징은 특히 고통스럽고 가능하면 피하는 것이 가장 좋습니다. 또 다른 장점은 8 비트 MCU에서 16 비트와 32 비트 숫자를 처리하거나 16 비트 MCU에서 32 비트 숫자를 처리 할 필요가 없다는 것입니다. 어셈블리 언어로이 작업을 수행하는 것은 어렵지 않지만 후면에서 고통스럽고 오류가 발생하기 쉽습니다.

잘 작동하는 다른 비 ARM C 컴파일러가 있습니다. MSP430 컴파일러는 합리적인 작업을 수행하는 것 같습니다. Cypress PSoC 도구 ​​(특히 PSoC1)는 버그가 있습니다.

플랫 메모리 모델

RAM / 레지스터 / 플래시를 페이징 한 MCU는 바보입니다. 예, 8 비트 PIC에 대해 이야기하고 있습니다. 바보, 바보, 바보. 그로 인해 PIC가 너무 꺼져서 새로운 것을 보지 않아도되었습니다. (면책 조항 : 이것은 새로운 PIC가 향상 될 수 있으며 나는 그것을 모른다는 것을 의미합니다.)

8 비트 MCU를 사용하면 256 바이트보다 큰 데이터 구조에 액세스하는 것이 어렵지만 불가능하지는 않습니다. 64 비트 또는 kword로 증가하는 16 비트 MCU 최대 4 기가 바이트의 32 비트 MCU

좋은 C 컴파일러는 프로그래머 (일명 You)에게이 많은 부분을 숨길 수 있지만, 프로그램 크기와 실행 속도에 영향을줍니다.

이것이 문제가되지 않을 많은 MCU 응용 프로그램이 있지만 물론 이것에 문제가있는 다른 응용 프로그램도 많이 있습니다. RAM 또는 플래시에 필요한 데이터 (배열 및 구조)의 양이 대부분 문제입니다. 물론 CPU 속도가 증가함에 따라 더 큰 데이터 구조를 사용할 확률도 높아집니다!

패키지 크기

소형 PIC 및 기타 8 비트 MCU 중 일부는 매우 작은 패키지로 제공됩니다. 6과 8 핀! 현재 내가 아는 가장 작은 ARM Cortex-M0은 QFN-28에 있습니다. QFN-28은 대부분 충분히 작지만 모두를 위해 충분히 작지는 않습니다.

비용

가장 저렴한 PIC는 가장 저렴한 ARM Cortex-M0 가격의 약 1/3입니다. 그러나 그것은 실제로 US $ 0.32 대 US $ 0.85입니다. 그렇습니다. 가격 차이는 일부 사람들에게 중요합니다. 그러나 나는이 웹 사이트에있는 대부분의 사람들이 그 작은 비용 차이에 신경 쓰지 않는다고 주장합니다.

마찬가지로, 더 많은 기능을 갖춘 MCU를 ARM Cortex-M0 / M3 / M4와 비교할 때 일반적으로 ARM Cortex는 "거의 고르게"나옵니다. 다른 것들 (개발 용이성, 컴파일러 비용 등)을 고려할 때 ARM은 매우 매력적입니다.

두 번째 요약

나는 진짜 문제는 추측 : 당신은 왜 것 NOT 에서 ARM 코어 텍스 M0 / M3 / M4를 사용합니까? 절대 비용이 매우 중요 할 때. 초 저전력 소비가 중요한 경우. 가장 작은 패키지 크기가 필요한 경우 속도가 중요하지 않은 경우. 그러나 대부분의 응용 프로그램에는 적용되지 않으며 ARM이 현재 최상의 솔루션입니다.

저렴한 비용으로 ARM Cortex를 사용하지 않는 적절한 이유가없는 한 사용하는 것이 좋습니다. 대부분의 다른 MCU보다 두통이 적고 설계 마진이 크므로 개발 시간이 더 빠르고 쉽습니다.

ARM이 아닌 다른 Cortex 32 비트 MCU를 사용할 수 있지만 그다지 이점이 없습니다. 더 나은 개발 도구와 더 빠른 기술 혁신을 포함하여 표준 CPU 아키텍처를 사용하면 많은 이점이 있습니다.

물론 상황은 변할 수 있고 변할 수 있습니다. 내가 말한 것은 오늘 유효하지만 1 년 또는 1 개월 후에는 유효하지 않을 수 있습니다. 자신의 숙제를하십시오.


1
ARM을 사용하여 메모리 위치에 액세스하려면 먼저 4K 이내의 주소로 레지스터를로드해야합니다. 많은 I / O 장치에 4K 이상의 주소 공간이 할당되어 있지만, 많은 장치가 몇 개의 개별 주소 만 사용하기도합니다. 반대로, 18Fxx PIC는 뱅킹 상태에 관계없이 단일 명령으로 대부분의 I / O 위치에서 직접 작동 할 수 있습니다. 대부분의 RAM이 뱅킹되는 방법은 다소 성가신 일이지만 특정 유형의 비트 뱅킹 (1970 년대에 PIC 아키텍처가 설계된 목적)의 경우 PIC 아키텍처가 매우 잘 작동합니다.
supercat

1
BTW, 1970 년대의 인기있는 8 비트 마이크로 프로세서가 임의로 정렬 된 256 바이트 데이터 구조를 효율적으로 처리 할 수 ​​있지만 인기있는 16 비트 프로세서는 16에 정렬 된 65,536 바이트 데이터 구조와 잘 작동 할 수 있다는 것이 궁금합니다. -바이트 경계 또는 임의로 정렬 된 데이터 구조는 거의 새로운 최신 8 비트 및 16 비트 프로세서로 인해 페이지 / 뱅크 경계를 넘어서는 효율적인 코드를 작성하기가 어렵습니다.
supercat

@supercat "LDR / SRT 즉시 오프셋"명령어의 4K 주소 범위는 사실이지만 종종 문제가되지 않습니다. 나는 당신의 의견의 나머지 부분에 동의하지 않습니다. Freescale M4 문서를 보면 각 주변 장치는 4K 이상의 주소 범위를 차지하지 않으므로 단일 "기본 주소 포인터"로 해당 주변 장치의 모든 레지스터에 액세스 할 수 있습니다. 또한 32 개의 범용 레지스터가 있으며이 중 하나를 기본 주소 포인터로 사용할 수 있으므로 동일한 코드 섹션에서 여러 주변 장치에 빠르게 액세스 할 수 있습니다.

1
@supercat 두 번째 요점은 전체 RISC 대 CISC 토론에 관한 것입니다. ARM은 RISC CPU이므로 가장 빈번한 작업을 수행하도록 최적화되었습니다. 정렬되지 않은 액세스와 같이 빈번하지 않은 작업은 CPU 아치에 따라 더 많은 작업이 필요하거나 시간이 더 걸립니다. 나는 이것을 부정적인 것이 아니라 긍정적 인 것으로 본다. 그렇기 때문에 구형 8 비트 가격으로 빠른 32 비트 MCU를 사용할 수 있습니다. 이러한 단점에도 불구하고, 나는이 CPU 중 하나를 PIC 대신 언젠가 가져갈 것입니다.

나는 틀렸다. 하나의 기본 레지스터가 전체 주변 장치를 처리 할 수 ​​없다는 것을 의미하는 것이 아니라 레지스터가 각 주변 장치에 대해 종종로드되어야한다는 것을 의미하지는 않았습니다. ). 일부 유형의 코드의 경우 레지스터를 미리로드하지 않고 "bsf LATA, 4"와 같은 명령으로 단일주기에서 I / O 비트를 설정할 수 있으면 매우 편리합니다. 나는 ARM을 좋아하지만 PIC의 직접 I / O 매핑은 아주 좋을 수 있습니다 (다른 메모리 액세스는 그렇게 나쁘지 않습니다).
supercat

3

데이비드 케스 너가 맞습니다. 다음을 추가하고 싶습니다.

  1. 8 비트 MCU는 프로토 타입 브레드 보드에서 다루기 쉽고 다루기 쉬운 PDIP 패키지로 쉽게 구할 수있는 유일한 MCU입니다.
  2. 32 비트 MCU는 실제로 8 비트 MCU보다 적은 전력을 사용할 수 있습니다. <20MHZ 8 비트 MCU가 Cortex M4보다 적은 전력을 사용한다는 것이 반드시 사실은 아닙니다.
  3. 8 비트 MCU는 일반적으로 MCU에서 많은 것을 필요로하지 않는 애호가들이 자주 사용합니다. 아마도 수백 줄의 간단한 C 코드 일 것입니다.

요즘 32 비트 MCU를 사용하지 않는 이유는 거의 없다는 데 동의합니다. 나는 두 가지 이유로 [8 비트 MCU] 만 사용하려고합니다. 종종 8 비트 MCU가 제공 할 수있는 것보다 더 많은 전력 / 복잡성이 필요하지 않습니다.

거래 차단기는 실제로 사용 가능한 도구입니다.


프로토 타이핑을 위해 LQFP를위한 소켓이 있습니다. 물론 LQFP를 직접 손으로 납땜 할 있으며 약간의 연습 만하면됩니다. QFN, DFN 및 BGA 수작업으로 납땜하지는 않지만 시장에 나와있는 모든 단일 저가형 32 비트 MCU에는 LQFP가 제공됩니다.
Lundin

1

우리는 32 비트 ~ 80Mhz 지원 MCU 인 비교적 유행없는 프리 스케일 MCF52259를 사용합니다.

선택의 이유 / 사고 과정은 다음과 같습니다.

  • 32 비트 M.Core 장치를 대체했기 때문에 이식이 비교적 간단했습니다.
  • 또한 기존 IDE (CodeWarrior)를 고수 할 수 있음을 의미했습니다.
  • 3 개의 스테퍼 모터, 4 개의 PWM 채널 채널, 3 개의 UART, I2C 및 SPI의 스텝 / 방향 제어를위한 충분한 IO가 필요했습니다.
  • 많은 일이 있었고 (마지막 요점 참조) 그 중 일부는 적시에 발생해야했기 때문에 모든 작업을 완료하기에 충분한 CPU주기가 있는지 확인해야했습니다.
  • 레거시 코드는 M.Core의 256k 플래시 크기 및 32k RAM과 충돌하여 플래시와 RAM을 두 배로 늘리면 쉽게 시작하고 실행할 수 있습니다.

요즘은 공간이나 시스템을 제외하고는 훨씬 저렴하고 작은 MCU로 압축하기 위해 코드를 최적화하는 귀중한 개발 시간을 소비하는 것보다 하드웨어 기능 (스토리지, 속도, IO 등)을 과도하게 사양화 / 확장하는 것이보다 비용 효율적이고 편리합니다. 힘은 큰 문제입니다.

우리의 경우,이 장치는 절반 가격으로 M.Core의 두 배 사양이었으며, 더 저렴한 MCU로 이동하면 보드 당 페니 만 절약 할 수 있지만 개발 시간이 많이 소요되며 MCU를 다시 변경하지 않고 향후 개발 가능성을 제한합니다.

우리가 백만 개의 보드를 제작했다면 비용을 절감하는 운동을하는 것이 가치가 있지만, 개발 시간에는 가치가 없습니다.

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