Làm thế nào để tìm ra nếu một bộ vi xử lý đủ mạnh


9

Mọi người đều biết việc dễ dàng phát triển một bằng chứng về khái niệm cho một thiết bị nhúng trên rasbperry pi hoặc thậm chí là PC, mặc dù khi chọn một bộ vi xử lý cho sản phẩm của bạn, thật khó để chắc chắn rằng lựa chọn của bạn sẽ cho phép khái niệm của bạn hoạt động tối ưu

Tôi hiện đang có một dự án truyền phát phương tiện làm việc thành công trên raspberry pi, mặc dù pi rất to và cồng kềnh vì nó phù hợp như một thiết bị cuối. Ngoài ra, nó được tuyên bố rằng các thiết bị cuối là tùy chỉnh. Tôi đang gặp khó khăn trong việc tìm kiếm niềm tin vào bộ xử lý mà tôi có thể sử dụng.

Một quy trình tốt để tìm hiểu xem bộ xử lý có đủ mạnh để chạy ứng dụng của tôi không?

Về cơ bản yêu cầu của tôi là:

  • Máy chủ USB hoặc ngăn xếp TCP / IP nhúng để vận hành WiFi
  • Giao thức truyền thông I2S / PCM
  • I2C cho cấu hình ngoại vi

Tìm chip với những đặc tính đó rất đơn giản. Nó thực sự không thể đơn giản hơn. Vấn đề là có thể biết chip có đủ nhanh hay không, xử lý và vận hành khôn ngoan.

Tôi đã xem LPC4337 khá nhiều và tôi cảm thấy nó sẽ phù hợp mặc dù môi trường phát triển mang đến cho tôi khá nhiều rắc rối, vì lý do đó tôi vẫn đang tìm kiếm, dẫn tôi đến CC3200 từ Texas Cụ , mặc dù bộ điều khiển đó chỉ chạy ở 80 MHz và tôi không chắc liệu nó có đủ mạnh để truyền phát phương tiện theo thời gian thực hay không.

Một số bước để đảm bảo bộ xử lý đủ nhanh cho ứng dụng của tôi? Giống như làm thế nào để tôi biết nếu một bộ xử lý 80 MHz sẽ đủ tốt hay tôi cần một cái gì đó theo thứ tự 204 MHz hoặc thậm chí cao hơn?


1
Tôi nghĩ rằng bạn sẽ cần phải cung cấp các yêu cầu năng lượng là tốt.
kolosy

Điều này không trả lời câu hỏi của bạn, nhưng bạn có thể cân nhắc xem xét họ vi điều khiển PIC32MZ mới , có Flash gấp đôi (2MB) và gấp ba lần RAM (512K), cùng với máy chủ USB 2.0, I²S và năm I²C các mô-đun cho cùng giá với LPC4337. IDE (MPLAB X) và trình biên dịch miễn phí dùng thử, nhưng sau một thời gian dùng thử, bạn phải trả tiền cho trình biên dịch được tối ưu hóa nếu bạn muốn (trình biên dịch GCC chưa được tối ưu hóa vẫn miễn phí). Microchip có các thư viện miễn phí bản quyền cho ngăn xếp USB và TCP / IP.
tcrosley

2
Tôi nghĩ rằng một số có thể thiếu điểm của câu hỏi. Tôi không tìm kiếm một đề nghị của các bộ phận. Thật đơn giản để đảm bảo có đủ không gian trên chip hoặc các thiết bị ngoại vi thích hợp ở đó. Tôi đang tìm kiếm các tham số và các bước xử lý như một hướng dẫn để đảm bảo rằng tôi chọn một bộ xử lý đủ mạnh. Như trong tốc độ của nó.
Funkyguy

Nếu bạn không thể nói những gì bạn cần từ thông số kỹ thuật, bạn có thể đặt hàng mẫu và nguyên mẫu không?
Roger Rowland

@RogerRowland Tôi có thể mặc dù đó là một quá trình rất dài. Chắc chắn có một số cách để tìm thông số kỹ thuật tối thiểu cho một chương trình
Funkyguy

Câu trả lời:


5

Nó phụ thuộc vào mức độ tự tin của bạn. Tôi làm việc trong ngành vũ trụ và điều này thường đạt được thông qua cái mà chúng ta gọi là "ngân sách CPU, RAM, ROM". Một ngân sách, có thể là chi phí năng lượng hoặc bất cứ thứ gì khác, đang phá vỡ quy trình của bạn trong các mục có thể quản lý mà bạn có thể định lượng và tổng hợp tất cả chúng để có được nhu cầu tổng thể. Sau đó, bạn lấy một yếu tố an toàn phụ thuộc vào sự trưởng thành của dự án của bạn, giảm dần theo thời gian để tính đến sự tăng trưởng của nhu cầu. Ban đầu, nó phụ thuộc rất nhiều vào kinh nghiệm và sau đó được cải tiến theo thời gian khi các công nghệ được lựa chọn.

  • ROM tương đối dễ dàng. Bạn biết một ngăn xếp / thư viện / trình điều khiển chiếm khoảng bao nhiêu trong bộ nhớ ROM: do tác giả đưa ra hoặc bạn có thể biên dịch nó mà không cần tải lên. Con số đó có thể thay đổi rất nhiều mỗi khi bạn thay đổi mã của mình vì tối ưu hóa trình biên dịch.
  • RAM là rất nhiều khó khăn hơn. Một số công cụ trong môi trường phát triển tích hợp chuyên biệt cung cấp cho bạn ước tính thời gian chạy và tôi có thể thấy cách thực hiện việc này nhưng tôi không biết về bất kỳ công cụ chung nào - giả sử, được cung cấp bởi GCC (có ai biết khác không?). Đáng buồn thay, có vẻ như việc đếm các phần tử lớn nhất hoặc được phân bổ nhiều nhất trong mã của bạn (tính cho các biến số trọn đời).
  • CPU phức tạp hơn ở chỗ tùy thuộc vào kiến ​​trúc (CISC hoặc RISC), MIPS (Hàng triệu hướng dẫn mỗi giây, tỷ lệ thuận với tần số xung nhịp CPU) có thể hoặc không thể đại diện. Bởi vì nếu bạn có mã trong tay, bạn có thể chia phần quan trọng nhất thành các hướng dẫn và tính toán MIPS cần thiết theo yêu cầu về thời gian. Bất kỳ ngắt không bị vô hiệu hóa NÊN được coi là được kích hoạt tại thời điểm đó - luật của Murphy và tất cả điều đó.

Ở trên là cực kỳ khó để xác định chính xác khi nào bộ lập lịch khởi động, ngay khi bạn có các luồng (trừ khi các luồng được phân bổ thủ công cho các lõi) và hệ điều hành. Nó có thể được quản lý cho các mã vi điều khiển đơn giản, nhưng nó có đáng cho ứng dụng của bạn không?

Đây chỉ là sự tham gia của tôi: mặc dù tôi thiết kế các hệ thống tích hợp nhưng tôi không chịu trách nhiệm cho những ngân sách cụ thể đó (vốn là đầu vào cho tôi) và tôi thực sự rất thích biết những câu chuyện của các chuyên gia về điều đó.

Phụ lục: Với các hệ thống thời gian thực, thường dễ dàng hơn để đánh giá mức độ đầy đủ của hệ thống với nhiệm vụ thông qua thời gian lấy mẫu tối đa phụ thuộc vào độ trễ / độ trễ trong việc truyền thông tin trong suốt quy trình làm việc và thời gian tối đa được thực hiện bởi mỗi mẫu nhiệm vụ.


avrdudecó thể cung cấp các ước tính về mức độ RAM được lấy bởi các biến toàn cầu, nhưng bạn phải chạy nó với tùy chọn chạy khô vì về cơ bản đó là một công cụ tải lên.
felixphew

1
Phần khó nhất để ước tính IMO là sử dụng stack và heap. Hệ thống nhúng hiện tại của chúng tôi (HĐH độc quyền), chạy trên PIC32, thường có hơn 25 tác vụ đang chạy, nhiều trong số chúng cần một vài K heap trở lên khi chúng hoạt động. Bạn sẽ nhận được một vài trong số đó, cộng với việc sử dụng stack nặng và bạn có thể sắp hết RAM. Tôi vừa mới viết một thói quen đệ quy cách đây một tuần và phải rất cẩn thận trong việc sử dụng ngăn xếp biến cục bộ (không có mảng, v.v.)
tcrosley 23/12/14

Thú vị, cảm ơn. Bạn có ước tính dung lượng RAM được phân bổ bởi mã của bạn (phân tích mã hoặc công cụ cụ thể) hoặc bạn đo nó khi chạy? Đối với tôi, dường như MIPS khó ước tính hơn một chút vì không thể ước tính được từ việc phân tích mã mà không phá vỡ nó theo hướng dẫn, không giống như sử dụng RAM (có thể, không dễ). Các luồng làm cho công việc trở nên khó khăn hơn rất nhiều, nhưng có vẻ như phân tích CPU vẫn đòi hỏi nhiều bước hơn - nói chung đơn giản là ít vấn đề hơn. Bạn nghĩ sao?
Mystère

2

Tôi sẽ đơn giản hóa câu hỏi của bạn thành "Làm thế nào để tìm hiểu xem bộ vi xử lý có đủ nhanh không"?
Bạn cần xác định quy trình / thủ tục yêu cầu thời gian thực hiện nhanh nhất. Nếu bộ xử lý của bạn có thể thực hiện các hướng dẫn cần thiết trong thời gian nhất định hoặc ít hơn, thì nó đủ nhanh.
Hãy xem xét một ví dụ: Yêu cầu nhanh nhất của bạn là xử lý mất điện ngắt; điều này đòi hỏi 10.000 hướng dẫn để được thực hiện trong 10 mili giây. Bạn sẽ cần một CPU có ít nhất 1 MIP. Để chuyển đổi này thành "MHz", bạn cần biết số chu kỳ xung nhịp trên mỗi lệnh (cci). Giả sử là 10 cci, CPU của bạn sẽ cần chạy ở tốc độ 10 MHz hoặc nhanh hơn.


0

Nếu bạn đang tìm cách giảm chi phí BOM đôi khi các nhà sản xuất Thâm Quyến có một số ưu đãi đáng ngạc nhiên. Một ví dụ: Allwinner A10 có nhiều tùy chọn kết nối và sức mạnh tính toán hơn Raspberry Pi nhưng có lẽ sẽ rẻ hơn nếu được sử dụng trong thiết kế của bạn. Nếu bạn đang tìm kiếm với chi phí tương tự như Pi thì Allwinner A31s mạnh hơn 6-8 lần.

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.