Làm thế nào để chương trình kiểm tra xem nó có chạy trên 512MB RPi không?


12

Các 512I RPI có sửa đổi bảng khác không?

tức là, bạn có thể nhìn vào bản sửa đổi /proc/cpuinfođể xác định xem bạn có 512MB RPi không?

Nếu không thì cách dễ nhất để kiểm tra là gì?


Lưu ý rằng cuối cùng bạn không thể làm được gì nhiều với kiến ​​thức, trừ khi bạn đang viết một công cụ để thay đổi các tệp khởi động hoặc chỉ đơn giản là muốn thông báo cho người dùng những gì họ có hoặc nếu cấu hình khởi động hiện tại của họ đang tận dụng tối đa phần cứng. Một chương trình ứng dụng trên ARM trong nhân Linux thực sự không thể sử dụng bộ nhớ thêm trừ khi được mã khởi động GPU cấp.
Chris Stratton

Câu trả lời:


10

Như bạn đã nói, cat /proc/cpuinfo | grep Revisionlệnh sẽ cung cấp cho bạn sửa đổi bảng. Xin lưu ý rằng sửa đổi là một giá trị thập lục phân. Để hiển thị tương đương thập phân, hãy chạy lệnh này printf '%d\n' 0x#, trong đó #giá trị thập lục phân được hiển thị với lệnh trước đó.

Theo biểu đồ sau, các mã 13 , 1415 là viết tắt của bảng 512 MB .

Model and revision                                          Decimal code(s)     Hexadecimal equivalent
Model B Revision 1.0                                        2                   0x2
Model B Revision 1.0 + ECN0001 (no fuses, D14 removed)      3                   0x3
Model B Revision 2.0                                        4, 5, 6             0x4, 0x5, 0x6
Model B Revision 2.0 (512 MB)                               13, 14, 15          0xd, 0xe, 0xf

Nguồn: Tài liệu cộng đồng Element14


1
Hãy nhớ rằng điều này có thể thay đổi trong tương lai. Tôi chắc chắn rằng các mã 13,14,15 sẽ luôn có nghĩa là bạn có 512 MB RAM nhưng có thể có các mã khác. Và sau đó, không nên giả sử tất cả các mã> 13 có 512MB vì ​​chúng ta không biết điều đó có đúng không. Vì vậy, nó không nên được sử dụng trong các kịch bản, vv
Krzysztof Adamski

1
Pi của tôi được đựng trong một hộp có nhãn dán ghi "RAM 512MB" bằng chữ lớn nhưng /proc/cpuinfonói Revision : 0005. Tôi đang khởi động từ một hình ảnh 2012-09-18-wheezy-raspbian.ziptừhttp://www.raspberrypi.org/downloads
RedGrittyBrick

@RedGrittyBrick: Điều tương tự đối với tôi. Tôi vừa nhận được Pi của mình ngày hôm qua và theo blog chính thức , tôi có phiên bản RAM 512 MB (tôi có thể thấy "4G" trên chip). Nhưng cat /proc/cpuinfotrả về bản sửa đổi 5. Không phải bản sửa đổi được viết cứng trong SoC sao? Raspian có cần cập nhật để "nhận diện" phiên bản RAM 512 MB không?
Morgan Courbet

@Morgan: Giống như của bạn, chip hàng đầu (RAM) trên CPU trên Pi của tôi được đánh dấu Samsung K4P4G324EB và thông tin của Samsung xác nhận đây là "128Mx32" = 4 GBit = 512 MB. Tôi đã đọc một mục diễn đàn ở đâu đó đề xuất cập nhật chương trình cơ sở (tôi đoán đây là một trong các tệp trên thẻ SD)
RedGrittyBrick

@RedGrittyBrick: Bây giờ tôi có Revision: 000f. Có lẽ là gần đây dist-upgrade.
Morgan Courbet

7

Trong một hệ điều hành hiện đại như Linux, điều bạn thực sự cần kiểm tra là dung lượng bộ nhớ đã được cung cấp cho mục đích sử dụng chung; có thể ít hơn tổng số vật lý được cài đặt. Vì vậy, ví dụ, pi 512 MB chạy cài đặt dành cho 256 MB sẽ không cung cấp bộ nhớ đó cho bạn.

Sau đó, trên pi còn có vấn đề nữa về việc phân tách bộ nhớ CPU và bộ nhớ GPU - một thứ gì đó ít hơn bộ nhớ hiện tại thậm chí sẽ có sẵn để sử dụng CPU ARM vào thời điểm Linux khởi động, vì quá trình khởi động GPU đã sẵn sàng đã yêu cầu một số tiền đáng kể khi xác định tệp start.elf được sử dụng.

Để trả lời câu hỏi trực tiếp, dòng đầu tiên /proc/meminfohoặc freelệnh sẽ cho bạn biết tổng thể bộ nhớ vật lý có sẵn cho Linux.

Bao nhiêu bộ nhớ có sẵn cho một ứng dụng nhất định lại phức tạp hơn - kernel, bộ đệm và các ứng dụng khác sẽ yêu cầu bộ nhớ. Và mặc dù có lẽ không được sử dụng phổ biến với thẻ SD là "đĩa" duy nhất, phân vùng trao đổi có thể khiến bộ nhớ ảo khả dụng vượt quá RAM vật lý.

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.