ARM on Cortex-M3 시리즈의 Linux


29

나는 ARM을 처음 사용하고 모든 다른 시리즈와 약간 혼동되었습니다.

나는 구축 할 필요가 저전력 나는 피질-M을 추측하거나 피질-R이 좋은 출발점이 될 것입니다 때문에, 게이트웨이 (이더넷, 무선 랜을 ...). 그러나 그것은 리눅스를 지원하는 cortex-m3 (각각 꽤 인기있는 것처럼 보입니다)라고 말하는 개발 보드를 찾지 못했습니다.

그것은 가능한 것 linuxM3을 내가 주위에 리눅스 프로젝트가없는 이유를 궁금해 때문에, mbed 또는 LPCXpresso 예를 들면?

누구든지 내가 찾은 dev 보드를 알려주거나 "cortex m"+ linux가 더 많은 답변을 제공하지 않는 이유를 설명 할 수 있습니까?


NXP는 특정 프로세서에 대해 잘 모르는 다른 프로세서에 대한 일부 Linux 지원을 제공합니다.
kenny

2
얼마나 낮은 전력이 필요합니까? Freescale iMX283을 기반으로 1/2 와트 풀 리눅스 시스템을 구축했습니다. 이더넷없이 정상로드시 1 / 2W, 이더넷 사용시 1W, 완전로드시 <1.5W 이더넷 ... 이더넷 PHY는 정상로드시 시스템 전력의 절반입니다.
darron

답변:


18

ARM Cortex-M3과 관련하여 :

Linux에는 MMU (메모리 관리 장치)가 필요합니다. ARM Cortex-M3에는 하나가 없습니다. ARM Cortex-M3에서 기본 Linux 커널을 실행할 수 없습니다.

그러나 uCLinux 라는 MMUless 프로세서 용 Linux 커널 변형이 있습니다.

Linux on M3 안내서

uCLinux에 대한 ST의 애플리케이션 노트

그러나 다른 사람들이 지적했듯이 Linux는 M3에서 실용적이지 않을 수 있습니다. 외부 RAM이 없으면 실행되지 않습니다. 가장 큰 Cortex-M3 부품조차도 1MB 플래시 만 있다고 생각하므로 추가 스토리지도 필요할 것입니다.


12

Cortex-M은 업무에 적합하지 않으므로 ARM926EJ-S가 필요합니다.

Cortex-M은 Linux 용으로 설계되지 않았기 때문에 "Cortex-M + Linux"에 대한 검색은 많은 답변을 얻지 못했습니다. 일반적으로 Linux와 같은 전체 OS를 실행할 수 있다고 생각되는 가장 강력한 ARM 은 ARMv5 아키텍처를 사용하는 ARM926EJ-S 시리즈 입니다. 이 프로세서는 광범위하게 채택되었으며 (많은 NAS 상자, 구형 스마트 폰 및 Chumby Classic에서 지원됨) 많은 지원을 제공하지만 후속 프로세서보다 약간 덜 효율적입니다. ARMv5 아키텍처를 가지며 수백 MHz에서 실행됩니다.

이것은 당신이 정말로 원하는 것이지만 그것을 가질 수는 없습니다.

제 생각에 Cortex-A5는 ARM11을 대체 할 수 있도록 설계되었지만 전력 효율이 뛰어나고 현대적인 프로세스보다 훨씬 강력합니다. (참고 : Apple의 A5와는 아무런 관련이 없으며, 이는 특별한 Cortex-A9입니다.) 2009 년에 발표되었으며 실리콘은 "언제나 지금"기다리고 있습니다. 스마트 폰이 시장을 주도하고 더 강력한 A9와 이전 ARM11 사이의 시장을 강요하기 때문에 아무도이 프로세서를위한 범용 SoC를 아직 생산하지 않았습니다. 자세한 내용은이 토론을 참조하십시오. http://forum.beyond3d.com/archive/index.php/t-60145.html

보다 강력한 옵션

ARM11의 ARMv6은 조금 더 효율적이지만 더 강력합니다 (따라서 전력 예산이 절약되지 않을 수 있음). iPod Touch, Kindle 및 Zune뿐만 아니라 iPhone 3G와 같은 덜 오래된 스마트 폰에 전원을 공급하며 500-800 MHz에서 실행됩니다. 최신 아키텍처 인 ARMv7은 Cortex 시리즈입니다. Cortex-A8 및 -A9는 800MHz-1.2GHz의 최신 스마트 폰 및 태블릿에 전원을 공급하므로, 미니멀리스트 디자인을 목표로하는 경우 더 작고 느린 프로세서를 사용하는 것이 좋습니다. 이 프로세서의 와트 당 성능은 환상적이지만 ARMv5 부품 만 사용하는 것이 더 안전 할 것입니다.


2
참고 : Cortex-A5는 현재 배송 중이며 Atmel은 atmel.com/Microsite/sama5d3/…에 대한 Linux 지원을 제공한다고 주장합니다.
pjc50

10

Linux (uClinux)를 지원하는 일부 Cortex-M3 플랫폼에 대해서는이 사이트를 확인하십시오.

http://www.emcraft.com/

NXP의 LPC1788, STmicro의 STM32F2, Actel의 SmartFusion과 같은 Cortex-M3 MCU에서 uClinux를 성공적으로 실행하고 Freescale Kinetis, STM32F4 (두 개는 Cortex-M3이 아닌 Cortex-M4)를 추가로 지원하고 있습니다. .

사실, Linux (uClinux 포함)를 실행하려면 외부 RAM이 필요합니다. Cortex-M의 통합 SRAM은 초소형 Linux 구성에서도 충분히 크지 않습니다. 실제 구성을 위해서는 최소 4MB의 외부 RAM이 필요합니다. 사실, 응용 프로그램에 "기능"이 필요한 경우 Linux가 더 많은 기능을 지원하므로 더 적은 RAM을 추가 한 것이 유감입니다.

외부 RAM에 사용할 특정 장치와 관련하여 모든 장치는 특정 MCU에서 제공하는 외부 메모리 인터페이스로 정의됩니다. STM32F 및 SmartFusion은 SRAM 만 지원합니다. 6 ~ 7 달러에 16MB 70ns PSRAM (더 빠른 작동을위한 페이지 모드)을 얻을 수 있습니다. LPC1788은 더 빠른 SDRAM 메모리를 지원합니다. Kinetis K70은 DDR2 (64MB 장치의 경우 5 달러) 등을 지원합니다. 모든 메모리는 정적 시간에 단 uA 수준에서 전력을 소비합니다.

부팅 가능한 Linux를로드 할 것이 필요하지만 네트워크, SD 카드, SPI EEPROM, NOR 또는 NAND Flash 등이 될 수 있습니다.

전반적으로, 나는 리눅스가 Cortex-M3 디자인을위한 완전히 실용적인 옵션이라고 감히 이야기한다.

최신 정보

장치가 대부분 유휴 상태 인 많은 전력에 민감한 응용 프로그램이 있지만 실행시 더 작은 RTOS를 사용하여 달성하기 쉽지 않은 많은 작업을 수행 할 수 있어야합니다. 보안 연결, VLAN, TCP / IP 터널링, SNMP, SD 카드, USB 장치 / 호스트, WiFI 등 요구 사항 목록이 계속 이어집니다.

RTOS가 작 으면 일부 기능을 사용할 수 있지만 일부 기능은 제공되지 않습니다. 고객과 함께 점점 더 많이보고있는 것은 Cortex-M3을 사용하는 임베디드 디자인에는 이러한 고급 기능 중 하나 또는 두 개가 필요하지 않고 단일 장치에서 많은 기능이 필요하다는 것입니다. RTOS가 설계에 기성품이 필요한 모든 기능을 제공하더라도 온칩 메모리에 모두 적용하는 것은 어려운 일이 될 것입니다. 유씨 리눅스이든 아니든, 제 생각에 점점 더 많은 Cortex-M 기반 디자인이 외부 메모리를 사용하게 될 것입니다. 물론 디자인에 외부 RAM이 있으면 uClinux가 더 이해하기 시작합니다.

최근의 경험으로 Cortex-M이 제공하는 낮은 처리 성능 (리눅스 커널의 요구 사항과 비교하여 측정)에 대해 Freescale K70 MCU에서 uClinux를 활성화했습니다. 이것은 Cortex-M4 (Cortex-M3 plus 하드웨어 FP 및 DSP 장치와 동일)입니다. 2x8KB 온칩 캐시를 사용하여 고밀도 RAM (DDR2) 및 플래시 (NAND)에 대한 온칩 인터페이스. 120Mhz Cortex-M 코어, 150Mhz 부품이 곧 나옵니다.

Linux (uClinux)는이 장치에서 아름답게 실행됩니다. 'dhrystone'을 사용하면 250Mhz Freescale PowerPC 상자에서 얻을 수있는 약 50 %의 성능을 얻습니다. 빠른 부팅, 많은 RAM (TWR-K70 모듈은 128MB RAM 및 256MB NAND 플래시 제공), 네트워킹, JFFS2, 프레임 버퍼, SSH, HTTPD, Qt / E-이 모든 것은 K70에서 잘 작동합니다. 전반적인 사용자 경험은 MMU 전체 마이크로 프로세서의 일반적인 "임베디드 Linux"입니다.

다음은 Freescale Kinetis K70 Cortex-M4 MCU에서 실행되는 라이브 uClinux 세션 비디오에 대한 포인터입니다.

http://www.youtube.com/watch?v=UZjJrLG9CeA


5

외부 메모리 (RAM 및 플래시 모두)에 대한 지원이 없으면 언급 된 장치의 내장 리소스에 가장 작은 Linux 배포판 (예 : uclinux)조차도 넣을 수 없습니다.

이는 일반적으로 추가 칩을 연결하기 위해 32 비트 버스가 노출됨을 의미합니다. 그렇기 때문에 Linux를 실행하는 데 사용되는 메가 바이트 범위의 추가 RAM 및 플래시 칩이있는 Linux 단일 보드 컴퓨터 (SBC)를 보는 것이 더 일반적입니다. 나열된 마이크로 컨트롤러는 이것을 제공하지 않습니다. 내가 본 방식으로, cortex-m0 / m3은 8 비트 마이크로가 충분하지 않은 (또는 간신히) 충분하지 않은 애플리케이션에 더 적합합니다. 따라서 필요한 모든 리소스가 칩에 내장되어 있습니다.

이 질문에 더 잘 대답하려면 임베디드 리눅스의 요구 사항을 분석하는 것이 좋습니다. 이것은 일반적으로 부트 로더, 커널 및 파일 시스템에 적합 할 수 있으며 물론이를 실행하는 데 필요한 실제 사용자 응용 프로그램 및 라이브러리를 수용 할 수 있음을 의미합니다. 이를 종합하면 곧 유용한 기능을 수행하기 위해 몇 메가 바이트의 RAM과 플래시가 필요할 수 있습니다.


3

stm32에는 MMU가 없으므로 ucLinux를 사용해야합니다.

ucLinux 용 빠른 구글은 올바른 방향으로 당신을 보낼 것입니다. https://www.google.com/search?q=stm32+uclinux

그러나 다른 한편으로, 리눅스는 이런 종류의 작은 MCU에서 실제로 그렇게 유용하지 않으며 대부분 실행하기 위해서는 외부 램과 SD 카드가 필요합니다. 그리고 Rasperry PI와 같은 프로젝트에서 가격표가 마감되고 있으므로 필요한 것이 무엇인지 생각해야합니다.

다른 작은 OS가 더 나은 선택일까요? 심지어 당신은 리눅스를 어디에나 가지고있는 것이 좋다 ...


3

스마트 밋 머링과 같은 일부 저전력 애플리케이션이 있으며 실제로 Linux를 실행하는 외부 메모리와 함께 Cortex-M3을 사용하는 것이 유용합니다. 총 비용 (보드는 코어가 빠를수록 비용이 거의 들지 않음)이 아니라 에너지 소비 측면에서 생각하십시오.

배터리를 사용하고 대부분의 시간 동안 유휴 모드 인 경우 1 분 정도 측정을 한 다음 네트워크를 통해 전송하는 경우 Linux에서 TCP로 가져온 인프라를 사용하는 것이 좋습니다. / IP, 암호화 등

내장 된 세계 전시회에서 Pengutronix는 유휴 모드에있을 때 외부 RAM이 있고 전력 소비가 1.6mW 인 Cortex-M3에서 uCLinux를 실행하는 EnergyMicro의 프로토 타이핑 보드에서 Linux를 보여주었습니다. Energy Micro는 놀라운 저전력 Cortex-M3 및 M4 MCU 포트폴리오를 보유하고 있으며 RAM에서 코드를 실행하는 동안 32MHz에서 실행될 때 16mW의 전력이 필요합니다. 따라서 더 크고 빠른 프로세서가 에너지 예산에 맞지 않는 다양한 배터리 구동 장치에서 Linux를 사용할 수 있습니다. 반면에 당신은 이것들로부터 많은 처리 능력을 얻지 못할 것입니다 ...

따라서 기본적으로 배터리를 사용하고 많은 처리 능력이 필요하지 않은 경우 MMU가있는 더 큰 ARM 코어를 선택할 수 있다면 이것이 해결책이 될 수 있습니다.


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