Cortex-A9 / Cortex-M4 / IMX6 / IMX7 / HumminBoard



MCU 선정하기

리눅스 스터디를 시작하면서 어떠한 보드를 선정할까 많이 고민하였다.

주 파트가 자동차와 관련된 전장용 장비를 다뤄야 되다보니 전장 SOC 의 대표주자인 

NXP-freescale / STMicroelectronics / TI 등을 위주로 찾아보았다.


현재 freescale의 IMX285와 STM의 STA1078-Telemaco2를 다뤄보았으며 이를 기반으로 보드를 선정하려고 한다. Telemaco2의 경우 아직 지원되지 않는 기능이 부족해서(BR) Telemaco3를 기다려야 되는 상황이라서 Freescale의 IMX 시리즈를 살펴보았다. 그 중 IMX6의 스펙은 다음과 같다.


IMX6 시리즈

http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/i.mx-applications-processors-based-on-arm-cores/i.mx-6-processors:IMX6X_SERIES?cof=0&am=0#staticFile


http://cache.nxp.com/files/32bit/doc/fact_sheet/IMX6SRSFS.pdf


http://cache.nxp.com/files/32bit/doc/brochure/FLYRIMXPRDCMPR.pdf

대부분의 CPU가 Cortex-A7과 A9을 쓰고 있다. 아직 찾아보지 않았지만 전장용에서는 Cortex-M4가 요즘 추세라고 한다. CortexM4를 지원해 주는 칩은 I.MX 6SoloX이다.

USB, Audio Interface, Ethernet, CAN, 가 있고 ADC Channel 등을 따져봤을 때 괜찮은 것 같다.



IMX7 시리즈

Cortex-M4가 내장되어있다.

http://cache.nxp.com/files/32bit/doc/fact_sheet/IMX7SRSFS.pdf


Cortex 설명

ARM을 쓰는 이유는 간단하다. 저전력이다.IOT환경에서는 전력소모가 큰 이슈인데 ARM이 저전력 고효율의 특징을 가지고 있다. 또한 성능면에서는 32비트 고성능 임베디드가 개발되어있어서 성능면에서도 탁월하다.

ARM관련 설명 : https://namu.wiki/w/ARM(CPU)



Cortex M 시리즈

여기에는 CortexM4에 관한 설명이다. Telemaco2 STA1088로 개발을 진행하였는데 CortexR4와 CortexM3로 이루어져있다. 부팅은 CortexM3하였으며 커널이미지 압출해제를 CortexR4로 진행한다. 어찌 됬든 A시리즈 외에도 M시리즈가 전장에서 많이 사용되는데, M시리즈에 관하여 찾아보았다.

https://namu.wiki/w/ARM%20Cortex-M%20%EC%8B%9C%EB%A6%AC%EC%A6%88



Cortex-M3, Cortex-M4 비교

Cortex-M4는 M3에 DSP가 추가된 버전으로써 성능이 더 좋다. IO의 전력은 M4가 약간 더 높다. 어찌됬든 M4 프로세서는 디지털 신호 제어 (DSC:Digital Signal Control) 애플리케이션에 고효율의 솔루션을 제공한다. 초저전력, 저비용, 사용성, 편리성 등이 완벽히 결합되었다. SIMD(Signal Instruction Multiple Data)로는 NEON 이 포함되어 있다. 또한 최적의 코드 밀도를 실현하는 Thumb-2d이 있다. DSP가 추가되면서 고급 연산이 가능해진 것이 가장 큰 특징이다. (MATLAB 연산도 가능하다고 함) 또한 부동소수점 연산이 들어간다고 한다. (밑에 설명)

http://www.kbench.com/?q=node/80877


Cortex-A vs Cortex-M

태블릿, 모바일 등에서는 고급성능을 가진 Cortex-A (64bit까지 지원) 이 많이 사용되며 웨어러블이나 IoT에서는 Cortex-A의 하위인 저전력 제품 Cortex-m 시리즈가 중요하다. Cortex-M시리즈가 성능이 부족한 편인데 M4부터 DSP기능이 탑재되어 성능이 향상되었다.

"부동 소수점 연산을 강화한 이유는 센서 노드와 기능 때문입니다. 예를 들어 오디오 프로세싱 같은 게 있겠지요. 마이크가 항상 명령을 대기하는 상태가 필요한데요. 명령을 감지하려면 막대한 양의 부동 소수점 연산이 필요합니다"(ARM의 Hurley).


이러한 Cortex-M의 강화 노선은 로우엔드 Cortex-A와 어떻게 구분하는지 의문이 들게 됩니다. 현재 두 계열의 아키텍처를 구분하는 건 매우 간단합니다. Cortex-A는 MMU(Memory Management Unit)을 갖추고 Cortex-M은 MMU가 없습니다. 메모리 아키텍처의 차이가 두 계열의 결정적인 차이입니다.

 

"Cortex-M은 MMU과 캐시가 없습니다. 그것이 Cortex-M을 매우 반응성이 좋은 프로세서로 만들었습니다. 그러나 일정한 성능까지 도달하려면 캐시가 필요합니다. 그 결과 그 CPU는 스몰 코어 수준의 응답성이 사라지게 됩니다. 성능과 응답성의 균형을 고려할 필요가 있습니다. 그것이 MMU을 가진 Cortex-A의 구분입니다"라고 ARM의 Hurley는 말합니다.


 프랑스 르망에 있는 STMicroelectronics 소프트웨어 센터에 가서 Telemaco에 대한 설명을 들을 때 ucLinux라는 설명과 MMU가 없다는 설명을 들었었다. Cortex-M3를 사용하는 ST제품에서 MMU가 없다는 말이 이제 이해되었다. MMU와 빠른 성능은 Trade-off 관계이다.


Cortex-A vs Cortex-M vs Cortex-R

모바일기기, IoT의 요구에 따라서 제품근을 크게 3개로 나누었음

Cortex-A (Application) 고성능의 ㅍ어플리케이션 구동 (모바일 시장)

Cortex-R (Real time) 중급 임베디드 시스템 A보다 성능이 낮음

Cortex-M (Micro controller) 단순한 ARM기반 칩. (M4부터는 DSP, FPU:floating point unit) 을 통해 성능이 높아짐


http://jjy0501.blogspot.kr/2012/11/arm-5-2010.html

https://namu.wiki/w/ARM%20Cortex-M%20%EC%8B%9C%EB%A6%AC%EC%A6%88

'리눅스 > 기타' 카테고리의 다른 글

.bashrc에서 예약어 등록하기  (0) 2019.07.08
리눅스 7z 압축풀기  (0) 2019.07.08
ARM 기반 소프트웨어 효율성 증대  (0) 2016.03.09
bash shell  (0) 2016.01.25

+ Recent posts