Linux pada seri ARM Cortex-M3

29

Saya baru mengenal ARM dan sedikit bingung dengan semua seri yang berbeda.

Saya perlu membangun gateway daya rendah (ethernet, wifi ...), jadi saya kira korteks-M atau korteks-R akan menjadi titik awal yang baik. Tetapi tidak menemukan papan dev dengan mengatakan cortex-m3 (yang tampaknya cukup populer) mendukung linux.

Tampaknya mungkin linuxM3 , jadi saya bertanya-tanya mengapa tidak ada proyek linux di sekitar tempat tidur atau LPCXpresso misalnya?

Adakah yang bisa mengarahkan saya ke papan dev yang saya cari, atau menjelaskan kepada saya mengapa "cortex m" + linux tidak datang dengan lebih banyak jawaban?

jojo l'abricot
sumber
NXP memiliki beberapa dukungan linux untuk prosesor lain yang tidak yakin tentang itu.
kenny
2
Seberapa rendah daya yang dibutuhkan? Saya berhasil membangun sistem Linux penuh 1/2 watt berdasarkan Freescale iMX283. 1 / 2W selama beban normal tanpa Ethernet, 1W dengan Ethernet, <1,5W Ethernet dengan beban penuh ... Ethernet PHY adalah setengah daya sistem pada beban normal.
darron

Jawaban:

18

Mengenai ARM Cortex-M3:

Linux membutuhkan MMU (Memory Management Unit). ARM Cortex-M3 tidak memiliki satu. Tidak mungkin menjalankan kernel Linux arus utama pada ARM Cortex-M3.

Namun, ada varian kernel Linux untuk prosesor MMUless yang disebut uCLinux .

Linux on M3 Guide

Catatan Aplikasi ST di uCLinux

Namun, seperti yang telah dicatat oleh orang lain, Linux sepertinya tidak praktis pada M3. Ini tidak akan berjalan tanpa RAM eksternal. Saya percaya bahwa bagian Cortex-M3 terbesar hanya memiliki 1MB flash, jadi Anda mungkin akan membutuhkan penyimpanan tambahan juga.

Toby Jaffey
sumber
12

Cortex-M tidak sesuai dengan pekerjaannya, Anda membutuhkan ARM926EJ-S

Pencarian untuk "Cortex-M + Linux" tidak menghasilkan banyak jawaban karena Cortex-M tidak dirancang untuk Linux. ARM yang paling tidak kuat yang umumnya dianggap mampu menjalankan OS lengkap seperti Linux adalah seri ARM926EJ-S , yang menggunakan arsitektur ARMv5. Ini adalah prosesor klasik, dengan adopsi luas (ditemukan di banyak kotak NAS, ponsel pintar yang lebih tua, dan Chumby Classic) dan banyak dukungan, tetapi sedikit kurang efisien daripada penerusnya. Ini memiliki arsitektur ARMv5, dan berjalan pada beberapa ratus MHz.

Inilah yang benar-benar Anda inginkan, tetapi Anda tidak dapat memilikinya

Prosesor yang Anda inginkan, saya pikir, adalah Cortex-A5: Dirancang untuk menggantikan (dan hanya sedikit lebih kuat dari) ARM11, tetapi jauh lebih hemat daya dan pada proses yang lebih modern. (Catatan: Tidak ada hubungannya dengan Apple A5, itu Cortex-A9 khusus) Diumumkan pada tahun 2009, dan kami menunggu untuk melihat silikon "kapan saja sekarang". Belum ada yang memproduksi SoC untuk keperluan umum untuk prosesor ini, karena smartphone menggerakkan pasar dan pasar antara A9 yang lebih kuat dan ARM11 yang lebih lama tidak menarik. Lihat diskusi ini untuk lebih jelasnya: http://forum.beyond3d.com/archive/index.php/t-60145.html

Opsi yang lebih kuat

ARMv6 di ARM11 sedikit lebih efisien, tetapi juga lebih kuat (sehingga Anda mungkin tidak melihat penghematan dalam anggaran daya Anda). Ini kekuatan smartphone kurang lama seperti iPhone 3G, serta iPod Touch, Kindle dan Zune dan berjalan pada 500-800 MHz. Arsitektur terbaru, ARMv7, adalah seri Cortex. Cortex-A8 dan -A9 memberi daya pada smartphone dan tablet terbaru pada 800MHz - 1.2GHz, Anda mungkin ingin tetap menggunakan prosesor yang lebih kecil dan lebih lambat jika Anda menginginkan desain minimalis. Angka kinerja per watt dari prosesor ini luar biasa, tetapi mungkin lebih aman (dan tentu saja tidak akan terlalu rumit) untuk hanya menggunakan bagian-bagian ARMv5.

Kevin Vermeer
sumber
2
Catatan: Cortex-A5 sekarang dikirimkan, dan Atmel mengklaim untuk memberikan dukungan Linux untuk versi mereka: atmel.com/Microsite/sama5d3/…
pjc50
10

Silakan periksa situs ini untuk beberapa platform Cortex-M3 yang mendukung Linux (uClinux):

http://www.emcraft.com/

Kami berhasil menjalankan uClinux pada MCU Cortex-M3 berikut ini: NXP's LPC1788, STM32F2 milik STmicro, SmartFusion dari Actel, dan sedang dalam proses menambahkan dukungan untuk beberapa lagi: Freescale Kinetis, STM32F4 (keduanya lebih Cortex-M4 daripada Cortex-M3) .

Benar, Linux (termasuk uClinux) membutuhkan RAM eksternal untuk menjalankan - SRAM Cortex-M terintegrasi hampir tidak cukup besar bahkan untuk konfigurasi Linux yang sangat kecil; Anda memerlukan setidaknya 4MB RAM eksternal untuk konfigurasi praktis. Semakin banyak lebih baik, pada kenyataannya - jika aplikasi Anda membutuhkan "fitur", Linux memiliki dukungan untuk apa saja dan Anda tidak akan menyesal telah menambahkan lebih banyak RAM daripada kurang.

Sehubungan dengan perangkat tertentu yang digunakan untuk RAM eksternal, semuanya ditentukan oleh antarmuka memori eksternal yang disediakan oleh MCU tertentu. STM32F dan SmartFusion hanya mendukung SRAM; Anda bisa mendapatkan 16MB 70ns PSRAM (dengan Mode Halaman untuk operasi yang lebih cepat) seharga $ 6-7; LPC1788 mendukung memori SDRAM yang lebih cepat; Kinetis K70 mendukung DDR2 ($ 5 untuk perangkat 64MB), dll. Semua memori tersebut menarik daya hanya pada tingkat uA pada waktu statis.

Anda memerlukan sesuatu untuk memuat Linux yang dapat di-boot, tetapi ini bisa mengenai apa saja - jaringan, SDcard, SPI EEPROM, NOR atau NAND Flash, dll.

Secara keseluruhan, saya berani mengatakan bahwa Linux adalah pilihan yang sangat praktis untuk desain Cortex-M3.

Memperbarui

Ada banyak aplikasi yang peka terhadap daya di mana perangkat Anda idle hampir sepanjang waktu, namun saat berjalan, ia harus dapat melakukan banyak hal yang tidak mudah dicapai dengan menggunakan RTOS yang lebih kecil. Koneksi yang aman, VLAN, tunneling TCP / IP, SNMP, SD Card, perangkat USB / host, WiFI, dll dan daftar persyaratan berjalan dan terus.

Dengan RTOS yang lebih kecil beberapa fitur tersebut akan tersedia, beberapa tidak, namun itu hanya sebagian dari cerita. Apa yang kami lihat dengan pelanggan kami semakin banyak adalah bahwa desain yang disematkan menggunakan Cortex-M3 tidak hanya membutuhkan 1 atau 2 dari fitur-fitur canggih, mereka membutuhkan banyak dari mereka dari satu perangkat. Bahkan jika sebuah RTOS menyediakan semua fitur yang dibutuhkan oleh desain, memasukkan semuanya ke dalam memori on-the-chip akan menjadi tantangan. uClinux atau tidak, dugaan saya adalah bahwa trennya adalah semakin banyak desain berbasis-Cortex akan menggunakan memori eksternal. Tentu saja, begitu Anda mendapatkan RAM eksternal dalam desain Anda, uClinux mulai lebih masuk akal.

Mengenai kekuatan pemrosesan yang rendah yang disediakan oleh Cortex-M (yang diukur berdasarkan persyaratan kernel Linux), sebagai pengalaman baru-baru ini, kami baru saja mengaktifkan uClinux pada Freescale K70 MCU. Ini adalah Cortex-M4 (yang sama dengan Cortex-M3 plus perangkat keras FP dan unit DSP); antarmuka on-chip ke RAM high-density (DDR2) dan Flash (NAND), dengan cache on-chip 2x8KB. Inti Cortex-M 120Mhz, dengan bagian 150Mhz segera keluar.

Linux (uClinux) berjalan dengan cantik di perangkat ini. Dengan menggunakan 'dhrystone', kami mendapatkan kinerja sekitar 50% yang kami dapatkan di kotak Freescale PowerPC 250Mhz. Boot cepat, banyak RAM (modul TWR-K70 menyediakan 128MB RAM dan 256MB NAND Flash), jaringan, JFFS2, framebuffer, SSH, HTTPD, Qt / E - semua ini berjalan dengan baik di K70. Pengalaman pengguna secara keseluruhan adalah "embedded Linux" reguler Anda pada mikroprosesor MMU-penuh.

Berikut ini adalah penunjuk ke video sesi uClinux langsung yang berjalan pada Freescale Kinetis K70 Cortex-M4 MCU:

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

vladimir khusainov
sumber
5

Tanpa semacam dukungan untuk memori eksternal (baik RAM dan Flash), tidak mungkin Anda dapat memuat bahkan distribusi linux terkecil (katakanlah, uclinux) ke sumber daya bawaan perangkat yang disebutkan di atas.

Ini biasanya berarti bus 32-bit terbuka untuk menghubungkan chip tambahan. Inilah sebabnya mengapa lebih umum untuk melihat linux single-board-Computers (SBC) dengan RAM tambahan dan chip flash dalam kisaran megabyte yang digunakan untuk menjalankan linux. Mikrokontroler yang Anda daftarkan tidak menawarkan ini. Cara saya melihatnya, cortex-m0 / m3 lebih ditujukan untuk aplikasi di mana mikro 8-bit tidak akan (atau hampir tidak) mencukupi - sehingga semua sumber daya yang Anda butuhkan dibangun ke dalam chip.

Untuk menjawab pertanyaan ini dengan lebih baik, akan lebih bijaksana untuk menganalisis persyaratan untuk embedded linux. Ini biasanya berarti dapat memuat bootloader, kernel, dan sistem file - dan tentu saja aplikasi pengguna dan pustaka yang diperlukan untuk menjalankannya. Jumlahkan ini dan Anda akan segera melihat bahwa Anda mungkin memerlukan beberapa megabita RAM dan Flash untuk melakukan sesuatu yang bermanfaat.

Jon L
sumber
3

Tidak ada MMU pada stm32 sehingga Anda harus menggunakan ucLinux.

Google cepat untuk ucLinux akan mengirim Anda ke arah yang benar. https://www.google.com/search?q=stm32+uclinux

Tetapi di sisi lain, Linux tidak terlalu berguna pada MCU kecil semacam ini dan sebagian besar waktu Anda memerlukan ram eksternal dan kartu SD untuk menjalankannya. Dan kemudian penetapan harga ditutup pada proyek-proyek seperti Rasperry PI, jadi Anda perlu berpikir tentang apa kebutuhan Anda.

Mungkin OS lain yang lebih kecil adalah pilihan yang lebih baik? Bahkan kamu senang memiliki Linux di mana-mana ...

Johan
sumber
3

Ada beberapa aplikasi berdaya rendah seperti smart meetering yang memang berguna untuk menggunakan Cortex-M3 dengan Memori eksternal yang menjalankan Linux. Pikirkan bukan dalam hal total biaya (papan akan menelan biaya hampir sebanyak dengan Core lebih cepat) tetapi dalam hal konsumsi energi.

Jika Anda hidup dengan baterai, dan dalam mode siaga sebagian besar waktu, melakukan pengukuran mungkin setiap menit atau lebih dan kemudian mengirimkannya melalui jaringan, mungkin lebih baik untuk dapat menggunakan infrastruktur yang dibawa kepada Anda oleh linux untuk TCP / IP, enkripsi dll.

Pada Pameran Dunia yang dibenamkan tahun ini, Pengutronix menunjukkan linux pada papan prototyping dari EnergyMicro yang menjalankan uCLinux pada Cortex-M3 dengan RAM eksternal dan konsumsi daya 1,6mW saat dalam mode siaga. Energy Micro memiliki beberapa MCU daya rendah Cortex-M3 dan M4 yang luar biasa dalam portofolio mereka yang secara khusus dioptimalkan untuk aplikasi berdaya rendah yang membutuhkan Daya 16 mW saat menjalankan pada 32MHz saat menjalankan Kode dari RAM. Ini dapat mengaktifkan Linux pada berbagai perangkat bertenaga baterai di mana prosesor yang lebih besar dan lebih cepat tidak sesuai dengan anggaran energi Anda. Di sisi lain Anda tidak akan mendapatkan banyak kekuatan pemrosesan dari ini ...

Jadi pada dasarnya jika Anda menggunakan baterai dan tidak membutuhkan banyak daya pemrosesan, ini mungkin solusi untuk Anda, jika tidak, Anda mungkin memilih ARM Core yang lebih besar dengan MMU.

Beladau
sumber