Trước khi bạn có thể bắt đầu thực thi mã từ RAM ngoài, trước tiên bạn phải khởi tạo FSMC và sao chép mã của mình vào RAM đó, do đó bạn phải khởi động từ flash. Một tập lệnh liên kết được viết đúng (với phần mã bổ sung được liên kết tại địa chỉ chính xác nhưng được đặt trong flash, như phần .data) sẽ giúp ích rất nhiều. Bạn sẽ có thể đánh dấu các chức năng bạn cần đặt trong RAM bằng thuộc tính phần chính xác . Sau khi FSMC được khởi tạo, sao chép phần đó vào RAM giống như cách .data được sao chép trong mã khởi động của bạn. Tất cả những gì còn lại là gọi các chức năng RAM của bạn theo cách thông thường.
Lưu ý hai vấn đề nghiêm trọng khi chạy từ SRAM bên ngoài:
Nó sẽ chậm thôi. Giống như 6 ... chậm hơn 8 lần so với chạy từ flash hoặc thậm chí SRAM nội bộ theo điều này . Kiến trúc vi điều khiển này đơn giản là không được tối ưu hóa cho loại sử dụng này .
Một số chip STM32 có lỗi silicon trong đó FSMC truy cập bởi hai chủ xe buýt làm hỏng chip. Điều này về cơ bản sẽ ngăn cản bạn sử dụng DMA. Điều này liên quan đến phiên bản STM32F103 Y IIRC, có lẽ các chip khác cũng vậy.
Vì vậy, tôi sẽ không làm điều này cá nhân. Một lần nữa tôi phải nhắc lại trên trang web này rằng vi điều khiển! = CPU ngay cả khi đó là ARM.