Linux บนชุด ARM Cortex-M3


29

ฉันยังใหม่กับ ARM และค่อนข้างสับสนกับซีรีย์ที่แตกต่างกันทั้งหมด

ฉันต้องสร้างเกตเวย์พลังงานต่ำ (อีเธอร์เน็ต, wifi ... ) ดังนั้นฉันเดาว่า cortex-M หรือ cortex-R จะเป็นจุดเริ่มต้นที่ดี แต่ก็ไม่พบว่าบอร์ด dev ใด ๆ ที่พูดว่า cortex-m3 (ซึ่งดูเหมือนว่าจะเป็นที่นิยมมาก) รองรับ linux

ดูเหมือนเป็นไปได้linuxM3ดังนั้นฉันสงสัยว่าทำไมไม่มีโครงการ linux รอบmbedหรือLPCXpressoเป็นตัวอย่าง?

ทุกคนสามารถชี้ให้ฉันไปที่กระดาน dev ที่ฉันค้นหาหรืออธิบายให้ฉันทำไม "cortex m" + linux ไม่ตอบด้วยคำตอบเพิ่มเติม


NXP มีการสนับสนุนลินุกซ์บางอย่างสำหรับโปรเซสเซอร์อื่น ๆ ที่ไม่แน่ใจเกี่ยวกับอันนั้น
เคนนี

2
มันต้องใช้พลังงานต่ำแค่ไหน? ฉันจัดการเพื่อสร้างระบบลีนุกซ์ขนาด 1/2 วัตต์ที่มีพื้นฐานจาก Freescale iMX283 1 / 2W ในระหว่างที่โหลดปกติโดยไม่มีอีเธอร์เน็ต, 1W กับอีเธอร์เน็ต, <1.5W อีเธอร์เน็ตที่มีโหลดเต็ม ... Ethernet PHY คือครึ่งหนึ่งของกำลังไฟของระบบที่โหลดปกติ
darron

คำตอบ:


18

เกี่ยวกับ ARM Cortex-M3:

Linux ต้องการ MMU (หน่วยจัดการหน่วยความจำ) ARM Cortex-M3 ไม่มีหนึ่งเครื่อง เป็นไปไม่ได้ที่จะรันเคอร์เนล mainline บน ARM Cortex-M3

แต่มีความแตกต่างจากลินุกซ์สำหรับการประมวลผล MMUless เรียกuClinux

คู่มือ Linux บน M3

บันทึกการใช้งานของ ST ใน uCLinux

อย่างไรก็ตามอย่างที่คนอื่น ๆ สังเกตเห็น Linux ไม่น่าจะใช้งานได้กับ M3 มันจะไม่ทำงานหากไม่มี RAM ภายนอก ฉันเชื่อว่าแม้แต่ชิ้นส่วน Cortex-M3 ที่ใหญ่ที่สุดก็มีแฟลช 1MB เท่านั้นดังนั้นคุณอาจต้องการพื้นที่เก็บข้อมูลเพิ่มเช่นกัน


12

Cortex-M ไม่ได้ขึ้นอยู่กับงานคุณต้องการ ARM926EJ-S

การค้นหา "Cortex-M + Linux" ไม่ได้มีคำตอบมากมายเนื่องจาก Cortex-M ไม่ได้ออกแบบมาสำหรับ Linux ARM ที่มีประสิทธิภาพน้อยที่สุดโดยทั่วไปถือว่าสามารถใช้งานระบบปฏิบัติการอย่างเต็มรูปแบบเช่น Linux ได้คือซีรีย์ ARM926EJ-Sซึ่งใช้สถาปัตยกรรม ARMv5 นี่คือโปรเซสเซอร์คลาสสิกที่มีการนำไปใช้อย่างกว้างขวาง (พบได้ในกล่อง NAS หลายรุ่น, สมาร์ทโฟนรุ่นเก่า, และ Chumby Classic) และการสนับสนุนมากมาย แต่มีประสิทธิภาพน้อยกว่าผู้สืบทอด มันมีสถาปัตยกรรม ARMv5 และทำงานที่สองร้อย MHz

นี่คือสิ่งที่คุณต้องการจริงๆ แต่คุณไม่มีมัน

ฉันคิดว่าหน่วยประมวลผลที่คุณต้องการจริงๆคือ Cortex-A5: ออกแบบมาเพื่อแทนที่ (และเป็นเพียงเล็กน้อยที่มีประสิทธิภาพมากกว่า) ARM11 แต่ใช้พลังงานได้มากขึ้นและมีกระบวนการที่ทันสมัยยิ่งขึ้น (หมายเหตุ: ไม่มีอะไรเกี่ยวข้องกับ Apple A5 นั่นคือ Cortex-A9 พิเศษ) มีการประกาศในปี 2009 และเรากำลังรอดูซิลิคอน "ทุกวันตอนนี้" ยังไม่มีใครผลิต SoC สำหรับวัตถุประสงค์ทั่วไปสำหรับโปรเซสเซอร์นี้เนื่องจากสมาร์ทโฟนขับเคลื่อนตลาดและตลาดระหว่าง A9 ที่ทรงพลังกว่าและ ARM11 ที่เก่ากว่านั้นไม่น่าสนใจ ดูการสนทนานี้สำหรับรายละเอียดเพิ่มเติม: http://forum.beyond3d.com/archive/index.php/t-60145.html

ตัวเลือกที่มีประสิทธิภาพยิ่งขึ้น

ARMv6 ใน ARM11 นั้นมีประสิทธิภาพมากกว่าเล็กน้อย แต่ก็มีประสิทธิภาพมากกว่า (ดังนั้นคุณอาจไม่เห็นการประหยัดในงบประมาณพลังงานของคุณ) มันใช้พลังงานน้อยกว่าสมาร์ทโฟนเก่าเช่น iPhone 3G เช่นเดียวกับ iPod Touch, Kindle และ Zune และทำงานที่ 500-800 MHz สถาปัตยกรรมล่าสุด ARMv7 คือซีรี่ส์ Cortex Cortex-A8 และ -A9 กำลังเปิดตัวสมาร์ทโฟนและแท็บเล็ตล่าสุดที่ 800MHz - 1.2GHz คุณอาจต้องการติดตั้งโปรเซสเซอร์ที่เล็กลงและช้าลงหากคุณต้องการออกแบบที่เรียบง่าย หมายเลขประสิทธิภาพต่อวัตต์ของโปรเซสเซอร์เหล่านี้ยอดเยี่ยม แต่อาจปลอดภัยกว่า (และแน่นอนว่าจะซับซ้อนน้อยกว่า) เพื่อใช้ชิ้นส่วน ARMv5


2
หมายเหตุ: Cortex-A5 กำลังจัดส่งอยู่ในขณะนี้และ Atmel อ้างว่าให้การสนับสนุน Linux สำหรับเวอร์ชันของพวกเขา: atmel.com/Microsite/sama5d3/…
pjc50

10

โปรดตรวจสอบเว็บไซต์นี้สำหรับแพลตฟอร์ม Cortex-M3 ที่รองรับ Linux (uClinux):

http://www.emcraft.com/

เราประสบความสำเร็จในการรัน uClinux บน Cortex-M3 MCUs ต่อไปนี้: LPC1788 ของ NXP, STM32F2 ของ STmicro, SmartFusion ของ Actel และกำลังอยู่ในขั้นตอนการเพิ่มการสนับสนุนอีกสอง: Freescale Kinetis, STM32F4 (ทั้งสองนี้คือ Cortex-M4) .

จริง, Linux (รวม uClinux) ต้องใช้ RAM ภายนอกในการรัน - SRAM ที่รวมอยู่ใน Cortex-M นั้นมีขนาดไม่ใหญ่พอที่จะใช้งานได้แม้จะมีการกำหนดค่าลินุกซ์ขนาดจิ๋ว คุณต้องมี RAM ภายนอกอย่างน้อย 4MB สำหรับการกำหนดค่าในทางปฏิบัติ ยิ่งจริงแล้วยิ่งดี - ถ้าคุณต้องการแอปพลิเคชั่น "ฟีเจอร์" ลีนุกซ์สามารถรองรับอะไรก็ได้และคุณจะไม่เสียใจเลยที่คุณเพิ่มแรมมากกว่าเดิม

ในส่วนที่เกี่ยวกับอุปกรณ์เฉพาะที่จะใช้สำหรับ RAM ภายนอกนั้นทั้งหมดนั้นถูกกำหนดโดยอินเตอร์เฟสหน่วยความจำภายนอกที่จัดทำโดย MCU ที่เจาะจง STM32F และ SmartFusion รองรับ SRAM เท่านั้น คุณจะสามารถรับ PSRAM ขนาด 16 เมกะไบต์ 70 เมกะไบต์ (ด้วยโหมดหน้าเพื่อการทำงานที่รวดเร็วขึ้น) ราคา $ 6-7 LPC1788 รองรับหน่วยความจำ SDRAM ที่เร็วขึ้น Kinetis K70 รองรับ DDR2 ($ 5 สำหรับอุปกรณ์ 64MB) และอื่น ๆ ความทรงจำเหล่านั้นใช้พลังงานเพียงแค่ระดับ uA ในช่วงเวลาที่นิ่ง

คุณต้องการบางสิ่งในการโหลดลีนุกซ์ที่สามารถบู๊ตได้ แต่มันสามารถเกี่ยวกับอะไรก็ได้ - เครือข่าย, SDcard, SPI EEPROM, NOR หรือ NAND Flash เป็นต้น

โดยรวมแล้วฉันกล้าพูดได้ว่า Linux เป็นตัวเลือกที่ใช้งานได้จริงสำหรับการออกแบบ Cortex-M3

ปรับปรุง

มีแอพพลิเคชั่นที่ไวต่อการใช้พลังงานมากมายซึ่งอุปกรณ์ของคุณไม่ได้ใช้งานเป็นส่วนใหญ่อย่างไรก็ตามเมื่อใช้งานจะต้องสามารถทำสิ่งต่าง ๆ ที่ไม่ง่ายต่อการบรรลุผลโดยใช้ RTOS ขนาดเล็ก การเชื่อมต่อที่ปลอดภัย, VLAN, การขุด TCP / IP, SNMP, การ์ด SD, อุปกรณ์ USB / โฮสต์, WiFI, ฯลฯ และรายการข้อกำหนดต่างๆ

ด้วย RTOS ขนาดเล็กคุณสมบัติบางอย่างเหล่านี้จะพร้อมใช้งานบางอย่างไม่ได้อย่างไรก็ตามมันเป็นเพียงส่วนหนึ่งของเรื่องราว สิ่งที่เราเห็นกับลูกค้าของเรามากขึ้นเรื่อย ๆ คือการออกแบบที่ฝังตัวโดยใช้ Cortex-M3 ไม่เพียงต้องการคุณสมบัติขั้นสูงเพียง 1 หรือ 2 เท่านั้นพวกเขาต้องการสิ่งเหล่านี้จำนวนมากจากอุปกรณ์เดียว แม้ว่า RTOS จะให้คุณสมบัติทั้งหมดที่การออกแบบต้องการ แต่การยัดเยียดมันทั้งหมดลงในหน่วยความจำบนชิปก็เป็นสิ่งที่ท้าทาย uClinux หรือไม่ฉันเดาว่าแนวโน้มจะเป็นเช่นนั้นการออกแบบที่ใช้ Cortex-M มากขึ้นจะใช้หน่วยความจำภายนอก แน่นอนว่าเมื่อคุณได้รับ RAM ภายนอกในการออกแบบของคุณ uClinux ก็เริ่มเข้าใจได้ง่ายขึ้น

เกี่ยวกับพลังการประมวลผลต่ำจาก Cortex-M (วัดจากความต้องการของเคอร์เนล Linux) ซึ่งเป็นประสบการณ์ที่ผ่านมาเราเพิ่งเปิดใช้ uClinux บน Freescale K70 MCU นี่คือ Cortex-M4 (ซึ่งเหมือนกับ Cortex-M3 บวกกับฮาร์ดแวร์ FP และหน่วย DSP); อินเทอร์เฟซบนชิปกับ RAM ความหนาแน่นสูง (DDR2) และแฟลช (NAND) พร้อมแคช 2x8KB บนชิป แกน Cortex-M 120Mhz พร้อมกับชิ้นส่วน 150Mhz ที่จะออกมาเร็ว ๆ นี้

Linux (uClinux) ทำงานได้อย่างยอดเยี่ยมบนอุปกรณ์นี้ เมื่อใช้ 'dhrystone' เราจะได้รับประสิทธิภาพประมาณ 50% ที่เราได้รับในกล่อง Freescale PowerPC ขนาด 250 เมกะเฮิร์ตซ์ การบูทเร็ว, RAM จำนวนมาก (โมดูล TWR-K70 ให้ 128MB RAM และ 256MB ของ NAND Flash), ระบบเครือข่าย, JFFS2, framebuffer, SSH, HTTPD, Qt / E - ทั้งหมดนี้ทำงานได้ดีบน K70 ประสบการณ์การใช้งานโดยรวมคือ "ลินุกซ์ฝังตัว" ของคุณบนไมโครโปรเซสเซอร์ MMU เต็มรูปแบบ

นี่คือตัวชี้ไปยังวิดีโอของเซสชัน uClinux สดที่ทำงานบน Freescale Kinetis K70 Cortex-M4 MCU:

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


5

หากไม่มีการสนับสนุนหน่วยความจำภายนอก (ทั้ง RAM และ Flash) เป็นไปไม่ได้ที่คุณจะสามารถจัดวางลินุกซ์ขนาดเล็กที่สุด (เช่น uclinux) ลงบนทรัพยากรที่มีอยู่ในอุปกรณ์ดังกล่าวได้

โดยทั่วไปหมายถึงบัส 32 บิตถูกเปิดใช้งานเพื่อเชื่อมต่อชิปเพิ่มเติม นี่เป็นสาเหตุที่พบเห็นได้บ่อยกว่าในการดู linux single-board-computer (SBC) พร้อม RAM และ flash chip เพิ่มเติมในช่วงเมกะไบต์ที่ใช้เรียกใช้ linux ตัวควบคุมขนาดเล็กที่คุณระบุไว้ไม่ได้เสนอสิ่งนี้ วิธีที่ฉันเห็น cortex-m0 / m3 นั้นมีความหมายมากกว่าสำหรับแอพพลิเคชั่นที่ไมโคร 8 บิตจะไม่พอเพียง (หรือแทบจะไม่พอ) - ดังนั้นทรัพยากรทั้งหมดที่คุณต้องการจะถูกสร้างไว้ในชิป

เพื่อตอบคำถามนี้ให้ดีขึ้นควรวิเคราะห์ความต้องการสำหรับลินุกซ์ฝังตัว โดยทั่วไปหมายถึงความสามารถในการปรับให้พอดีกับ bootloader เคอร์เนลและระบบไฟล์ - และแน่นอนว่าแอปพลิเคชันผู้ใช้จริงและไลบรารีที่จำเป็นในการเรียกใช้ รวมสิ่งนี้แล้วคุณจะเห็นว่าคุณอาจต้องใช้ RAM สักสองสามเมกะไบต์และ Flash เพื่อทำสิ่งที่มีประโยชน์


3

ไม่มี MMU ใน stm32 ดังนั้นคุณต้องใช้ ucLinux

Google ด่วนสำหรับ ucLinux จะส่งคุณไปในทิศทางที่ถูกต้อง https://www.google.com/search?q=stm32+uclinux

แต่ในทางกลับกันลีนุกซ์นั้นมีประโยชน์ไม่มากนักสำหรับ mcu ขนาดเล็กชนิดนี้และส่วนใหญ่เวลาที่คุณต้องการ ram ภายนอกและการ์ด SD เพื่อให้ทำงานได้ จากนั้นราคาตั๋วจะปิดตัวลงในโครงการต่างๆเช่น Rasperry PI ดังนั้นคุณต้องคิดเกี่ยวกับความต้องการของคุณ

บางทีอีกระบบปฏิบัติการขนาดเล็กเป็นทางเลือกที่ดีกว่า แม้เจ้าจะดีใจที่ได้มี Linux ทุกที่ ...


3

มีแอพพลิเคชั่นที่ใช้พลังงานต่ำเช่น smart meetering ซึ่งเป็นประโยชน์อย่างยิ่งในการใช้ Cortex-M3 กับหน่วยความจำภายนอกที่ใช้ Linux คิดว่าไม่ใช่ในแง่ของค่าใช้จ่ายทั้งหมด (บอร์ดจะมีราคาใกล้เคียงกับ Core ที่เร็วกว่า) แต่ในแง่ของการใช้พลังงาน

หากคุณใช้งานแบตเตอรี่จนหมดและเป็นโหมดที่ไม่มีการใช้งานเป็นส่วนใหญ่การวัดอาจใช้เวลาทุกนาทีหรือมากกว่านั้นจากนั้นทำการส่งผ่านเครือข่ายอาจเป็นการดีที่คุณจะสามารถใช้โครงสร้างพื้นฐานที่นำมาให้คุณโดย linux สำหรับ TCP / IP, การเข้ารหัส ฯลฯ

ในงานแสดงนิทรรศการโลกที่ฝังตัวในปีนี้ Pengutronix ได้แสดง linux บนบอร์ดต้นแบบจาก EnergyMicro ที่ใช้ uCLinux บน Cortex-M3 พร้อม RAM ภายนอกและการใช้พลังงาน 1.6mW เมื่ออยู่ในโหมดไม่ได้ใช้งาน Energy Micro มี Cortex-M3 และ M4 MCU พลังงานต่ำอย่างไม่น่าเชื่อในพอร์ทโฟลิโอที่ออกแบบมาเป็นพิเศษสำหรับแอพพลิเคชั่นที่ใช้พลังงานต่ำซึ่งต้องการพลังงาน aprox 16mW เมื่อทำงานที่ 32MHz ในขณะที่เรียกใช้รหัสจาก RAM สิ่งนี้สามารถเปิดใช้งาน Linux บนอุปกรณ์ที่ใช้พลังงานแบตเตอรี่หลากหลายซึ่งโปรเซสเซอร์ที่ใหญ่กว่าและเร็วกว่าไม่เหมาะกับงบประมาณด้านพลังงานของคุณ ในทางกลับกันคุณจะไม่ได้รับพลังการประมวลผลมากมายจากสิ่งเหล่านี้ ...

ดังนั้นโดยทั่วไปหากคุณใช้แบตเตอรี่และไม่ต้องการพลังการประมวลผลมากนักนี่อาจเป็นคำตอบสำหรับคุณถ้าไม่ใช่คุณอาจเลือกใช้ ARM Core ขนาดใหญ่กว่าด้วย MMU


2

ฉันเชื่อว่ามีผู้จำหน่าย Cortex-M3 สองสามรายที่เสนอบันทึกแอปพลิเคชันเกี่ยวกับการใช้รสชาติที่ไม่สะดุดของ Linux ( uCLinux ) ที่ทำงานบนข้อเสนอผลิตภัณฑ์ของพวกเขา ฉันเชื่อว่า ST Micro มีข้อเสนอบางอย่าง ฉันกำลังทำงานกับActel / ไมโคร SmartFusion (Cortex-M3 + FPGA ผ้า) ที่มีเอกสารการใช้งานรูปแบบไฟล์ PDFชี้ไปที่การเสนอขาย Emcraft

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.