Tôi đang cố thực hiện một hàm từ RAM trên bộ xử lý Cortex-M3 (STM32). Chức năng này sẽ xóa và ghi lại đèn flash bên trong, vì vậy tôi chắc chắn cần phải có trong RAM nhưng làm cách nào để làm điều đó?Làm cách nào để thực hiện một hàm từ RAM trên Cortex-M3 (STM32)?
Điều tôi đã thử là: Sao chép hàm vào mảng byte trong RAM bằng memcpy (kiểm tra xem nó có được căn chỉnh chính xác không), thiết lập con trỏ hàm để trỏ tới mảng byte, sau đó gọi hàm (con trỏ) .
Điều này làm việc tốt cho 10 hướng dẫn (tôi có thể thực hiện theo trình gỡ rối) nhưng sau đó tôi gặp lỗi buss và bộ xử lý đặt lại. Lỗi buss xảy ra trên lần thứ hai đi qua một vòng lặp để mã nên được sử dụng tốt (vì nó hoạt động pass đầu tiên). Tôi nghĩ rằng việc truy cập RAM nhanh hơn sẽ tăng thời gian buss theo một cách nào đó ...
Dù sao có cách nào đúng để thực hiện việc này? Làm thế nào một tập tin phân tán trông giống như đặt một chức năng trong RAM tự động (Tôi đang sử dụng Keil uVision cho Cortex-M3)?
Edit: Thông tin thêm: toolchain: RealView MDK-ARM V 4.10 Compiler: Armcc v4.0.0.728 Assembler: Armasm v4.0.0.728 Linker: ArmLink v4.0.0.728 Processor: STM32F103ZE
Bit IMPRECISERR được đặt trong thanh ghi lỗi khi lỗi xảy ra.
Ummm Tôi nghĩ bạn nên đăng nhiều hơn hoặc ít hơn vào diễn đàn của nhà sản xuất vì bạn đang sử dụng phần cứng cụ thể, bạn có thể cung cấp thêm chi tiết, bạn đang sử dụng trình biên dịch nào, bạn đang gỡ lỗi như thế nào, bất kỳ mẫu mã nào * một * người có kiến thức có thể trả lời câu hỏi này, khác hơn thế ... – t0mm13b
@ tommieb75: Nhưng tôi thích các bạn nhiều hơn thế! – c0m4