2010-08-10 13 views
7

Trên STM32F103, việc xóa một trang flash mất 20 mili giây, trong đó cốt lõi ngăn tôi lại. Nó không rõ ràng từ hướng dẫn lập trình ST PM00042 Flash cho dù lõi luôn luôn gian hàng khi xóa một trang flash hay chỉ vì các luồng lệnh nằm trong bộ nhớ flash (trong dự án của tôi) và FPEC (giao diện bộ nhớ flash)) đang bận và không thể tìm thêm hướng dẫn.Ngăn xếp lõi Cortex-M3 STM32F103 trong khi xóa trang flash vì FPEC đang bận và không thể tìm thêm bất kỳ hướng dẫn nào từ flash?

Một cách khác để đặt câu hỏi này là "sẽ chạy mã lập trình flash của tôi từ RAM tránh gian hàng xóa trang flash?".

Xin cảm ơn,

Trả lời

6

Tôi tin rằng trong khi lập trình flash, mọi nỗ lực truy cập vào flash sẽ chặn CPU. Vì vậy, những gì bạn muốn làm là đảm bảo rằng các mã quan trọng (có thể ngắt xử lý, kicker watchdog, vv) có thể được chạy ra khỏi bộ nhớ RAM trong một hoạt động chương trình. Quay lại đầu trang | Lần cuối cùng tôi sử dụng STM32 (có lẽ ~ 2 năm trước) đó là chính xác những gì tôi đã làm.

Vì vậy, chỉ để được rõ ràng, để trả lời câu hỏi ở phần cuối của bài viết của bạn:

Một cách khác để hỏi câu hỏi này được "sẽ chạy chương trình flash của tôi mã từ RAM tránh những trang flash tẩy xoá gian hàng? ".

Tôi tin câu trả lời là "không". Việc đặt trình điều khiển lập trình flash không quan trọng đến mức nào, điều quan trọng là mã của bạn là gì trong khi thao tác xóa/chương trình đang diễn ra. Nếu CPU cố gắng truy cập flash trong một hoạt động, thậm chí để đọc hướng dẫn cho chương trình của bạn hoặc đọc một bảng các hằng số, tôi tin rằng nó sẽ dừng lại.

Tôi biết thực tế rằng đây là cách đèn flash NXP hoạt động trên các UC ARM của họ, nhưng tôi cũng muốn trích dẫn câu & câu cho STM32. Đối với một số lý do, hướng dẫn lập trình flash có vẻ là không có sẵn ngay bây giờ, nhưng tôi thấy các ngôn ngữ sau đây trong một tài liệu tương tự (PM0068, tôi tin rằng):

Một hoạt động bộ nhớ flash liên tục sẽ không chặn CPU càng lâu vì CPU không truy cập vào bộ nhớ Flash.

Nếu một thao tác đọc/ghi [để đèn flash] được bắt đầu trong lập trình, (BSY thiết lập bit), các quầy hàng CPU cho đến khi lập trình bộ nhớ flash chính liên tục kết thúc.

+0

Tuyệt vời, cảm ơn. Những gì tôi đang làm tại thời điểm này đang cố gắng tải mã vi phạm vào RAM để thử điều này. Tôi sẽ cho bạn biết làm thế nào tôi giá vé. Tôi chỉ muốn PM00042 là rõ ràng như PM bạn báo giá ... –

+0

PM00042 đã biến mất - hãy thử tìm kiếm PM0056 hoặc PM0063. Bạn cũng có thể truy cập trang web ST, tìm phần STM32 và tìm tài liệu "Hướng dẫn lập trình". –

Các vấn đề liên quan