Bạn có hai tùy chọn.
- Sao chép chúng như bạn đề xuất, biên dịch với
pc relative
.
- Sử dụng tệp trình liên kết với địa chỉ tải/chạy khác.
Một bản sao đơn giản sẽ chỉ hoạt động nếu các thường trình không sử dụng bất kỳ địa chỉ tuyệt đối tuyệt đối. Nó có thể tốt nếu họ sử dụng địa chỉ tuyệt đối tuyệt đối vì tôi đoán bạn sẽ để lại một bản sao trong RAM tiêu chuẩn. Tuy nhiên, điều này có thể không nhận được toàn bộ lợi ích của số TCM
.
Với tập lệnh liên kết, bạn có thể chỉ định một vị trí LOAD
và RUN
khác.
sections {
.text { *(.text); } >FLASH
.tcm {
*(.tcm);
} >TCM_MEM AT>FLASH
.data { *(.data); } > RAM
.bss : NOLOAD { *(.bss); } > RAM
}
Lưu ý đặc biệt AT>FLASH
.
Xem thêm: gnu linker map file... và nhiều nội dung khác trên luồng ngăn xếp. Các Gnu Ld manual có thông tin trên LMA
phần (LOAD địa chỉ). LMA
của bạn sẽ là flash, nhưng VMA
(RUN địa chỉ) sẽ là TCM. Liên kết thủ công ở trên cũng cho biết cách sao chép. RAM
, FLASH
và TCM_MEM
được xác định với thông tin ld MEMORY, tùy thuộc vào địa chỉ dành cho bảng của bạn. Tất cả điều này sẽ được ghi lại trong một tập tin MAP
. Đảm bảo tạo tệp MAP
và kiểm tra các địa chỉ để kiểm tra lại tập lệnh ld
của bạn.
Trường hợp thứ 2 cũng yêu cầu bản sao (lúc khởi động hoặc ít nhất trước khi sử dụng chức năng TCM
đầu tiên). Tuy nhiên, trình biên dịch có thể sử dụng địa chỉ tuyệt đối tuyệt đối và chúng sẽ nằm trong bộ nhớ TCM
. Ngoài ra, bất kỳ chức năng nào trong chính DRAM
đều có thể gọi trực tiếp chức năng TCM
. Với trường hợp đầu tiên, bạn phải sử dụng các con trỏ hàm để gọi mã số TCM
. Nếu bạn muốn các biến số toàn cầu được đặt trong bộ nhớ này, bạn có thể sử dụng các thuộc tính để đặt chúng trong các phần khác nhau và sử dụng gnu ld để đặt chúng một cách thích hợp.Tôi nghĩ rằng có ITCM
và DTCM
? Vì vậy, có thể điều này không áp dụng cho bạn, hoặc bạn cần hai phần.
Tập lệnh trình liên kết tổng quát hơn và sẽ hoạt động tốt nhất nếu bạn đặt chức năng phức tạp trong TCM
. Chỉ cần sử dụng -fpic
, v.v. và sao chép có thể khiến mọi thứ hoạt động nhanh chóng, đặc biệt nếu bạn chỉ có một hàm pure
.
Nguồn
2013-02-28 17:51:13
này rất hữu ích, nhưng tôi không nghĩ rằng nó sẽ đặt các chức năng trong TCRAM là OP được yêu cầu. Điều này sẽ đặt chức năng vào ram một cách khá dễ dàng, nhưng nó sẽ không hiệu quả lắm và tùy thuộc vào kích thước thường lệ, nó có thể thực sự chậm hơn so với thực thi từ flash (do chi phí cuộc gọi). Vì vậy, điều này sẽ chỉ hữu ích tùy thuộc vào ** tại sao ** bạn cần phải đặt dữ liệu trong RAM (không phải là TCRAM theo OP); ví dụ SMC. –