Để cho phép các truy cập chặt chẽ bộ nhớ đệm FPGA logic mềm đến số lượng mục bộ nhớ HPS phải có sẵn:
- Bảng trang MMU
- Cài đặt bảo mật NOC
- Cấu hình Bộ điều khiển bộ nhớ đệm CoreLink™ Cấp 2 L2C-310
- Tín hiệu dband AXI: cầu nối Axi_cache_security sóng
- AxC kiện và AxUser
- AXPROT
Bảng trang MMU
Bảng trang MMU phải được thiết lập để xác định khu vực bộ nhớ mục tiêu có thể cache được và an toàn hoặc không an toàn. Xem tài liệu về Linux và ARM để biết thêm chi tiết về thuộc tính phân bổ bảng trang MMU và Chế độ bảo mật (khu vực tin cậy).
- Bộ nhớ phải được đánh dấu là Phân bổ ghi lại (WBWA).
- Để bộ nhớ được truy cập từ ứng dụng không gian người dùng Linux hoặc Kernel, chế độ bảo mật phải không an toàn.
- An toàn nên được sử dụng để bộ nhớ được truy cập bởi một quá trình chạy ở trạng thái an toàn ARM (không nên nhầm lẫn với chế độ giám sát).
Bật chế độ bảo mật nếu CP15: SDR:NS = 1. Lưu ý: thanh ghi NS sẽ chỉ khả dụng ở chế độ giám sát viên.
Cài đặt bảo mật NOC
Mạng SoC Arria® 10 trên Chip iinterconnect(NOC) có thể cấu hình bằng tường lửa trên từng cầu nối và trong toàn bộ kết nối. Để cho phép truy cập qua cầu HPS
- Các tường lửa phải được cấu hình để cho phép giao dịch qua cầu nối
- Các điều khiển chính phải được đặt để cho phép/không cho phép truy cập an toàn
- Nếu máy chủ được đặt thành không cho phép truy cập an toàn, tất cả giao dịch sẽ được thay đổi thành trạng thái không bảo mật, có thể phá vỡ tính chặt chắn.
U-boot được tạo ra từ phần mềm SoC EDS phiên bản 16.0 trở lên vô hiệu hóa tường lửa NOC, nhưng đặt chính để không cho phép truy cập an toàn.
Để cho phép truy cập an toàn thông qua cầu FPGA2HPA:
Đặt thanh ghi fpga2soc_ctrl: allow_secure lên 1 (mặc định = 0, không cho phép bảo mật)
Cấu hình Bộ điều khiển bộ nhớ đệm cấp 2
Cấu hình Bộ điều khiển bộ nhớ đệm CoreLink™ Cấp 2 L2C-310
Nên dùng bit đăng ký điều khiển Aux [22]: Ghi đè thuộc tính dùng chung cho phép bit được đặt thành BẬT. Cài đặt này vô hiệu hóa các tối ưu hóa trong bộ điều khiển Bộ nhớ đệm L2, biến đổi một số truy cập không thể bộ nhớ đệm từ các lõi MPU hoặc cổng ACP thành các truy cập không được phân bổ bộ nhớ đệm và di chuyển điểm nhất trí từ SDRAM sang Bộ nhớ đệm L2. Sự thay đổi về điểm kết hợp có thể gây ra vấn đề nếu các bậc thầy truy cập SDRAM thông qua L3 hoặc cầu FPGA2SDRAM.
Tham khảo: Bộ điều khiển bộ nhớ đệm CoreLink™ Cấp 2 L2C-310, Bản sửa đổi: tài liệu tham khảo kỹ thuật r3p3 (ARM DDI 0246H (ID080112)): Phần 2.3.2 Thuộc tính Có thể chia sẻ.
Phần trên được đặt mặc định trong các phiên bản u-boot-socfpga mới nhất có sẵn từ https://github.com/altera-opensource/u-boot-socfpga
Điều khiển tín hiệu dband AXI từ Qsys: Axi_cache_security cầu nối
Cầu nối Axi_cache_security được sử dụng để điều khiển tín hiệu dầm bên AxCếch/AxUser/AxProt với các giá trị chính xác. Có thể tìm Axi_cache_security cầu nối trong ví dụ Arria cầu 10 https://www.altera.com/support/support-resources/design-examples.html
AxC kiện[3:0] tín hiệu d bên
Cài đặt AxC gấp [3:0] chính xác phụ thuộc vào cài đặt bảng trang MMU.
Xem Hướng dẫn tham khảo kiến trúc ARM® ARMv7-A và ARMv7-R (ARM DDI 0406C.c (ID051414) : Loại và thuộc tính bộ nhớ A3.5 và mô hình thứ tự bộ nhớ AxCthernet[1] phải là 1 để truy cập chặt chẽ.
Tham khảo: Bản sửa đổi MPCore® Cortex-A9™: Hướng dẫn tham khảo kỹ thuật r3p0 (ARM DDI 0407G (ID072711)): Cổng kết nối bộ tăng tốc 2.4
BỘ NHỚ ĐỆM AW®[3:0]
[3] - Viết allocable
[2] - Đọc allocable
[1] - Có thể bộ nhớ đệm
[0] - Có thể đệm
Giá trị ban đầu được đề xuất cho BỘ NHỚ ĐỆM AW®[3:0]
awc 0xF; Phân bổ ghi 4'b1111, Phân bổ đọc, Có thể đệm, Bộ nhớ đệm được
arc 0xF; Phân bổ ghi 4'b1111, Phân bổ đọc, Có thể đệm, Bộ nhớ đệm được
Lưu ý: Các cài đặt này nên được thay đổi dựa trên trường hợp sử dụng
AxUser[4-0] tín hiệu d bên
Tín hiệu AxUser được sử dụng để truyền thông tin bổ sung và cho các giao dịch ACP, chúng được sử dụng để truyền các thông tin có thể đệm ẩn trong và ngoài.
Người dùng AW®[3:0]
[0] - thuộc tính chia sẻ phải được đặt thành 1 để truy cập chặt chẽ
[3:1] - Không được SCU diễn giải là ACP không có chính sách bộ nhớ đệm nội bộ và được chuyển sang Bộ điều khiển bộ nhớ đệm L2 để sử dụng nếu bộ nhớ đệm được thiết lập ở chế độ độc quyền.
Tham khảo: Bản sửa đổi MPCore® Cortex-A9™: Hướng dẫn tham khảo kỹ thuật r3p0 (ARM DDI 0407G (ID072711)): Cổng kết hợp bộ tăng tốc 2.4,
Giá trị ban đầu được đề xuất cho AxUSER[4:0]
awuser = 0x1; 5'b00001
aruser = 0x1; 5'b00001
Lưu ý: Vào Arria 10, thuộc tính dùng chung AXI được liên kết nội bộ với "1" .
AxProt[2:0] tín hiệu dầm bên
AxProt chỉ định trạng thái an toàn của giao dịch và phải khớp với trạng thái bảo mật của bộ nhớ mục tiêu để đảm bảo đạt bộ nhớ đệm.
AW®PROT[2:0]
[2] - tải hướng dẫn
[1] - truy cập không an toàn
[0] - quyền truy cập đặc quyền
Giá trị ban đầu được đề xuất cho AxProt[2:0]
Cài đặt bảo mật bộ nhớ bảng trang MMU và cài đặt bảo mật CPU và trạng thái an toàn của giao dịch ACP phải khớp tất cả để đảm bảo bộ nhớ đệm được truy cập.
Một giao dịch ACP không an toàn đến một vị trí bộ nhớ an toàn được CPU truy cập trong trạng thái an toàn sẽ dẫn đến bỏ lỡ bộ nhớ đệm và truy cập trong mạch nhất.
Tóm tắt các kịch bản được hỗ trợ:
Không bảo mật
- Bảng trang MMU được thiết lập để xác định khu vực bộ nhớ mục tiêu là không an toàn
- Tường lửa NOC được thiết lập để cho phép truy cập không an toàn vào khu vực mục tiêu
- Cầu F2H thực hiện các truy cập an toàn hoặc không an toàn đến khu vực mục tiêu
An toàn
- Bảng trang MMU được thiết lập để xác định khu vực bộ nhớ mục tiêu là an toàn
- Tường lửa NOC được thiết lập để cho phép truy cập an toàn vào khu vực mục tiêu
- Cầu F2H thực hiện truy cập an toàn vào khu vực mục tiêu.