Bộ vi điều khiển STM32F4xx có 128KB SRAM + 64KB CCM SRAM. CMM SRAM được kết nối với bus dữ liệu nên không thể sử dụng nó với DMA.
- Lý do để thêm SRAM bổ sung như CCM là gì?
- Liệu nó có tăng hiệu suất và nếu đó là lý do tại sao nó như vậy?
Bộ vi điều khiển STM32F4xx có 128KB SRAM + 64KB CCM SRAM. CMM SRAM được kết nối với bus dữ liệu nên không thể sử dụng nó với DMA.
Câu trả lời:
Lý do để thêm SRAM bổ sung như CCM là gì?
Cortex M3 và M4 Cores có 3 bus riêng biệt: Hướng dẫn, Dữ liệu và "Hệ thống". Một giao dịch trên một xe buýt sẽ không làm phiền các bus khác trừ khi truy cập cùng một thiết bị ngoại vi.
Bạn đã đề cập đến DMA. Bộ điều khiển DMA chỉ có thể truy cập RAM khi không có quyền truy cập đồng thời từ lõi M4 - và lõi có thể cần đợi quá trình chuyển DMA đang diễn ra để kết thúc. Vì vậy, RAM CCM có thể giúp tăng cả hiệu suất và độ trễ thấp hơn.
Không phải mã đó cũng có thể được thực thi từ SRAM (nhưng không phải CCM SRAM). Sau đó, bạn bão hòa AHB chỉ bằng cách tìm nạp các hướng dẫn Thumb2 32 bit. CCM có thể chịu một số căng thẳng từ Bus trong trường hợp này - việc tìm nạp trước sẽ phải chờ chuyển dữ liệu.
Hãy để tôi chỉ cho bạn chú thích AN4296 (cho STM32F3). Nó nói về CCM một cách chi tiết. Nó làm cho sự khác biệt giữa cấu hình Harvard và Von Neumann .
CCM được dự định chính xác để thực thi mã ở tốc độ tối đa. Đó có thể là xử lý ngắt, nhưng cũng có chức năng thông thường.
Có một ma trận xe buýt . Cả CCM và SRAM thông thường đều có kết nối với các bus dữ liệu và hướng dẫn. CCM không có kết nối với DMA vì nó dành cho mã, không được DMA xử lý. Nó cũng có tính năng bảo vệ ghi trên mỗi trang.
Suy nghĩ là lõi có thể tìm nạp mã từ CCM trong khi tìm nạp dữ liệu từ SRAM khác cùng một lúc. Các "bus" khác nhau được sử dụng song song, mang lại cho bạn hiệu suất tốt nhất. Nếu bạn tìm nạp mã và dữ liệu từ cùng một bộ nhớ, nó sẽ chậm hơn vì tranh chấp.
Một số STM32 có một thứ gọi là Máy gia tốc thời gian thực thích ứng (ART) . Đó là bộ đệm trên flash để bạn có thể thực thi "từ bộ nhớ Flash, với trạng thái chờ 0".
Thậm chí STM32 (F7) gần đây còn có bộ đệm L1 thực tế ở trên đó .