Linux trên dòng ARM Cortex-M3


29

Tôi mới sử dụng ARM và hơi bối rối với tất cả các dòng khác nhau.

Tôi cần xây dựng một công suất thấp cổng (ethernet, wifi ...), vì vậy tôi đoán một cortex-M hoặc cortex-R sẽ là điểm khởi đầu tốt. Nhưng nó đã không tìm thấy bất kỳ bảng dev nào với việc nói một cortex-m3 (dường như khá phổ biến) hỗ trợ linux.

Có vẻ như linuxM3 có thể , vì vậy tôi tự hỏi tại sao không có dự án linux xung quanh một máy nghiền hoặc LPCXpresso chẳng hạn?

Bất cứ ai có thể chỉ cho tôi đến bảng dev tôi tìm kiếm, hoặc giải thích cho tôi tại sao "cortex m" + linux không bắt đầu với nhiều câu trả lời hơn?


NXP có một số hỗ trợ linux cho các bộ xử lý khác không chắc chắn về cái cụ thể đó.
kenny

2
Làm thế nào thấp nó cần phải được? Tôi đã quản lý để xây dựng một hệ thống Linux đầy đủ 1/2 watt dựa trên Freescale iMX283. 1 / 2W trong khi tải bình thường không có Ethernet, 1W với Ethernet, Ethernet <1.5W với đầy tải ... Ethernet PHY bằng một nửa công suất hệ thống ở mức tải thông thường.
darron

Câu trả lời:


18

Về ARM Cortex-M3:

Linux yêu cầu MMU (Đơn vị quản lý bộ nhớ). ARM Cortex-M3 không có. Không thể chạy kernel Linux chính trên ARM Cortex-M3.

Tuy nhiên, có một biến thể của nhân Linux cho bộ xử lý MMUless được gọi là uCLinux .

Hướng dẫn về Linux trên M3

Ứng dụng của ST Lưu ý về uCLinux

Tuy nhiên, như những người khác đã lưu ý, Linux dường như không thực tế trên M3. Nó sẽ không chạy nếu không có RAM ngoài. Tôi tin rằng ngay cả những bộ phận Cortex-M3 lớn nhất cũng chỉ có flash 1 MB, vì vậy bạn cũng có thể sẽ cần thêm dung lượng lưu trữ.


12

Cortex-M không phù hợp với công việc, bạn cần ARM926EJ-S

Một tìm kiếm cho "Cortex-M + Linux" không đưa ra nhiều câu trả lời vì Cortex-M không được thiết kế cho Linux. ARM mạnh nhất thường được coi là có thể chạy hệ điều hành đầy đủ như Linux là dòng ARM926EJ-S , sử dụng kiến ​​trúc ARMv5. Đây là một bộ xử lý cổ điển, với sự áp dụng rộng rãi (nó được tìm thấy trong nhiều hộp NAS, điện thoại thông minh cũ và Chumby Classic) và rất nhiều hỗ trợ, nhưng nó kém hiệu quả hơn một chút so với những người kế nhiệm. Nó có kiến ​​trúc ARMv5 và chạy ở tốc độ vài trăm MHz.

Đây là những gì bạn thực sự muốn, nhưng bạn không thể có nó

Bộ vi xử lý mà bạn thực sự muốn, tôi nghĩ, là Cortex-A5: Được thiết kế để thay thế (và chỉ mạnh hơn một chút so với) ARM11, nhưng hiệu quả năng lượng cao hơn và trên quy trình hiện đại hơn. (Lưu ý: Không liên quan gì đến A5 của Apple, đó là Cortex-A9 đặc biệt) Nó được công bố vào năm 2009 và chúng tôi đang chờ đợi để thấy silicon "bất kỳ ngày nào bây giờ". Vẫn chưa có ai sản xuất SoC cho mục đích chung cho bộ xử lý này, bởi vì điện thoại thông minh thúc đẩy thị trường và thị trường giữa A9 mạnh hơn và ARM11 cũ hơn không hấp dẫn. Xem cuộc thảo luận này để biết thêm chi tiết: http://forum.beyond3d.com/archive/index.php/t-60145.html

Tùy chọn mạnh mẽ hơn

ARMv6 trong ARM11 hiệu quả hơn một chút, nhưng cũng mạnh hơn (vì vậy bạn có thể không thấy bất kỳ khoản tiết kiệm nào trong ngân sách năng lượng của mình). Nó cung cấp năng lượng cho các điện thoại thông minh cũ ít hơn như iPhone 3G, cũng như iPod Touch, Kindle và Zune và chạy ở tốc độ 500-800 MHz. Kiến trúc mới nhất, ARMv7, là dòng Cortex. Cortex-A8 và -A9 đang cung cấp năng lượng cho điện thoại thông minh và máy tính bảng mới nhất ở tốc độ 800 MHz - 1,2 GHz, bạn có thể muốn gắn bó với bộ xử lý nhỏ hơn, chậm hơn nếu bạn đang hướng tới một thiết kế tối giản. Số hiệu suất trên mỗi watt của các bộ xử lý này là tuyệt vời, nhưng có thể an toàn hơn (và chắc chắn sẽ ít phức tạp hơn) khi chỉ sử dụng các bộ phận ARMv5.


2
Lưu ý: Cortex-A5 hiện đang được vận chuyển và Atmel yêu cầu cung cấp hỗ trợ Linux cho phiên bản của họ: atmel.com/Microsite/sama5d3/ Lỗi
pjc50

10

Vui lòng kiểm tra trang web này để biết một số nền tảng Cortex-M3 hỗ trợ Linux (uClinux):

http://www.emcraft.com/

Chúng tôi đã chạy thành công uClinux trên các MCU Cortex-M3 sau: LPC1788 của NXP, STM32F2 của STmicro, SmartFusion của Actel và đang trong quá trình thêm hỗ trợ cho một vài thứ nữa: Freescale Kinetis, STM32F4 (hai loại này là Cortex .

Đúng, Linux (bao gồm uClinux) yêu cầu RAM ngoài để chạy - SRAM tích hợp của Cortex-M không đủ lớn ngay cả đối với cấu hình Linux siêu nhỏ; bạn cần ít nhất 4 MB RAM ngoài cho các cấu hình thực tế. Thực tế càng tốt hơn - nếu ứng dụng của bạn cần "tính năng", Linux có hỗ trợ về mọi thứ và bạn sẽ không hối tiếc vì bạn đã thêm nhiều RAM hơn là ít hơn.

Đối với các thiết bị cụ thể được sử dụng cho RAM ngoài, tất cả được xác định bởi giao diện bộ nhớ ngoài được cung cấp bởi một MCU cụ thể. STM32F và SmartFusion chỉ hỗ trợ SRAM; bạn sẽ có thể nhận được PSRAM 16 MB 70ns (với Chế độ trang để hoạt động nhanh hơn) với giá 6-7 đô la; LPC1788 hỗ trợ bộ nhớ SDRAM nhanh hơn; Kinetis K70 hỗ trợ DDR2 (5 đô la cho thiết bị 64 MB), v.v ... Tất cả những ký ức đó đều tiêu thụ năng lượng ở mức uA ở thời điểm tĩnh.

Bạn cần một cái gì đó để tải Linux có khả năng khởi động, nhưng đây có thể là bất cứ thứ gì - mạng, SDcard, SPI EEPROM, NOR hoặc NAND Flash, v.v.

Nhìn chung, tôi dám khẳng định rằng Linux là một lựa chọn hoàn toàn thiết thực cho thiết kế Cortex-M3.

Cập nhật

Có rất nhiều ứng dụng nhạy cảm với năng lượng trong đó hầu hết thời gian, thiết bị của bạn không hoạt động, tuy nhiên, khi chạy, nó cần có khả năng thực hiện nhiều điều mà sẽ không dễ dàng đạt được khi sử dụng RTOS nhỏ hơn. Kết nối an toàn, đường hầm Vlan, TCP / IP, SNMP, Thẻ SD, thiết bị / máy chủ USB, WiFI, v.v. và danh sách các yêu cầu được bật và tắt.

Với một RTOS nhỏ hơn, một số tính năng sẽ có sẵn, một số thì không, tuy nhiên nó chỉ là một phần của câu chuyện. Những gì chúng ta đang thấy với khách hàng ngày càng nhiều là các thiết kế nhúng sử dụng Cortex-M3 không chỉ cần 1 hoặc 2 trong số các tính năng nâng cao đó, họ cần nhiều trong số chúng từ một thiết bị. Ngay cả khi một RTOS cung cấp tất cả các tính năng mà một thiết kế cần có sẵn, việc nhồi nhét tất cả vào bộ nhớ trên chip sẽ là một thách thức. uClinux hay không, tôi đoán rằng xu hướng sẽ là ngày càng nhiều thiết kế dựa trên Cortex-M sẽ sử dụng bộ nhớ ngoài. Tất nhiên, một khi bạn nhận được RAM ngoài trong thiết kế của mình, uClinux bắt đầu có ý nghĩa hơn.

Về khả năng xử lý thấp do Cortex-M cung cấp (được đo theo yêu cầu của nhân Linux), như một kinh nghiệm gần đây, chúng tôi vừa kích hoạt uClinux trên Freescale K70 MCU. Đây là một Cortex-M4 (giống như Cortex-M3 cộng với các đơn vị FP và DSP phần cứng); giao diện trên chip với RAM mật độ cao (DDR2) và Flash (NAND), với bộ nhớ cache trên chip 2x8KB. Lõi Cortex-M 120Mhz, với các bộ phận 150Mhz sắp ra mắt.

Linux (uClinux) chỉ chạy tốt trên thiết bị này. Sử dụng 'dhstallone', chúng tôi nhận được khoảng 50% hiệu suất chúng tôi nhận được trên hộp PowerPC 250Mhz. Khởi động nhanh, nhiều RAM (mô-đun TWR-K70 cung cấp 128 MB RAM và 256 MB NAND Flash), mạng, JFFS2, bộ đệm khung, SSH, HTTPD, Qt / E - tất cả điều này chỉ chạy tốt trên K70. Trải nghiệm người dùng nói chung là "Linux nhúng" thường xuyên của bạn trên bộ vi xử lý đầy đủ MMU.

Đây là một con trỏ tới video của phiên uClinux trực tiếp đang chạy trên Freescale Kinetis K70 Cortex-M4 MCU:

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


5

Nếu không có một số loại hỗ trợ cho bộ nhớ ngoài (cả RAM và Flash), bạn không thể phù hợp với cả bản phân phối linux nhỏ nhất (giả sử, uclinux) cho các tài nguyên được tích hợp trong các thiết bị được đề cập.

Điều này thường có nghĩa là một bus 32 bit được hiển thị để kết nối thêm chip. Đây là lý do tại sao phổ biến hơn khi thấy các máy tính bảng đơn linux (SBC) có thêm RAM và chip flash trong phạm vi megabyte được sử dụng để chạy linux. Các vi điều khiển bạn đã liệt kê không cung cấp điều này. Theo cách tôi thấy, cortex-m0 / m3 có ý nghĩa nhiều hơn đối với các ứng dụng mà micro 8 bit sẽ không (hoặc hầu như không) đủ - do đó tất cả các tài nguyên bạn cần đều được tích hợp vào chip.

Để trả lời tốt hơn câu hỏi này, sẽ là khôn ngoan khi phân tích các yêu cầu cho linux nhúng. Điều này thường có nghĩa là có thể phù hợp với bộ tải khởi động, kernel và hệ thống tệp - và tất nhiên là ứng dụng người dùng thực tế và các thư viện cần thiết để chạy nó. Tổng cộng điều này và bạn sẽ sớm thấy rằng bạn có thể cần một vài megabyte RAM và Flash để làm bất cứ điều gì hữu ích.


3

Không có MMU trên stm32 nên bạn phải sử dụng ucLinux.

Một google nhanh chóng cho ucLinux sẽ gửi cho bạn đi đúng hướng. https://www.google.com.vn/search?q=stm32+uclinux

Nhưng mặt khác, Linux không thực sự hữu ích với loại mcu nhỏ này và hầu hết thời gian bạn cần ram ngoài và thẻ SD để chạy. Và sau đó pricetag đang kết thúc các dự án như Rasperry PI, vì vậy bạn cần suy nghĩ về nhu cầu của bạn là gì.

Có lẽ một hệ điều hành nhỏ hơn là một lựa chọn tốt hơn? Ngay cả bạn cũng có Linux ở khắp mọi nơi ...


3

Có một số ứng dụng năng lượng thấp như đáp ứng thông minh trong đó thực sự hữu ích khi sử dụng Cortex-M3 với Bộ nhớ ngoài chạy Linux. Hãy suy nghĩ không phải về tổng chi phí (Các bảng sẽ có giá gần bằng với lõi nhanh hơn) mà về mức tiêu thụ năng lượng.

Nếu bạn hết pin và ở chế độ không sử dụng hầu hết thời gian, thực hiện phép đo có thể mỗi phút hoặc lâu hơn và sau đó gửi nó qua mạng, có thể sử dụng cơ sở hạ tầng do linux cung cấp cho bạn cho TCP / IP, mã hóa, vv

Trong Triển lãm Thế giới nhúng năm nay, Pengutronix đã cho thấy một linux trên bảng tạo mẫu từ EnergyMicro chạy uCLinux trên Cortex-M3 với RAM ngoài và mức tiêu thụ 1.6mW khi ở chế độ không tải. Energy Micro có một số MCU Cortex-M3 và M4 công suất thấp đáng kinh ngạc trong danh mục đầu tư của họ được tối ưu hóa đặc biệt cho các ứng dụng năng lượng thấp cần công suất 16mW khi chạy ở 32 MHz trong khi thực thi Mã từ RAM. Điều này có thể kích hoạt Linux trên nhiều thiết bị chạy bằng pin, nơi bộ xử lý lớn hơn và nhanh hơn không phù hợp với ngân sách năng lượng của bạn. Mặt khác, bạn sẽ không nhận được nhiều sức mạnh xử lý từ những ...

Vì vậy, về cơ bản nếu bạn đang sử dụng pin và không cần nhiều năng lượng xử lý thì đây có thể là một giải pháp cho bạn, nếu không bạn có thể chọn một ARM Core lớn hơn với MMU.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.