CPU của ARM Cortex M có bị dừng trong quá trình tự lập trình flash không?


8

Hầu hết các MCU ARM Cortex M không có bộ nhớ EEPROM. Thay vào đó, dữ liệu liên tục có thể được ghi vào cùng một bộ nhớ flash cũng chứa chương trình.

  • Trạng thái của CPU trong quá trình xóa / ghi này là gì?
  • Nó có dừng lại không? Liệu nó có duy trì hoạt động bình thường?
  • Hành vi của CPU có phụ thuộc vào họ MCU cụ thể (ví dụ STM32, Kinetis L) được sử dụng không?

(Đối với một số người, điều này có thể trông giống như một câu hỏi ngu ngốc, nhưng PIC16 của Microchip tạm dừng CPU trong tối đa 40ms trong quá trình tự lập trình flash.)


Bạn có tham khảo về việc dừng PIC16 không?
Daniel Grillo

@Wouter Những cái nào? Bạn đã thử nó chưa, với một ngắt hoàn toàn được thực hiện trong RAM?
starblue

2
Trái với những gì tôi đã nhận xét trước khi đọc từ Người dùng của họ, các chip NXP dường như chỉ vô hiệu hóa giao diện flash trong Lập trình ứng dụng, do đó, một ngắt chạy hoàn toàn từ RAM có thể xảy ra trong thời gian xóa hoặc ghi Flash. Nhưng lãnh thổ phần lớn chưa được khám phá này, ví dụ, tôi có thể tưởng tượng các vấn đề về thời gian khi việc gián đoạn mất thời gian đáng kể, với hậu quả cho độ bền của Flash.
Wouter van Ooijen

Vâng, họ không có eeprom nhưng, trong tình huống này, một số Cortex-M như ST32 có đăng ký sao lưu mà bạn có thể lưu thông tin của mình trên đó và về PIC16, tôi nghĩ đó là một điều thú vị. vui lòng đề cập đến nguồn của bạn về PIC16. (Bảng dữ liệu?)
Roh

@Wouter Có, thời gian có thể là một vấn đề. Ngoại trừ LPC8xx, các lệnh IAP "Sao chép RAM sang flash" lấy tần số xung nhịp làm tham số, vì vậy tôi nghi ngờ chúng sử dụng vòng lặp trễ đơn giản.
starblue

Câu trả lời:


4

Hành vi của cốt lõi không phụ thuộc vào việc thực hiện. Flash không thể tách rời với lõi ARM và do đó, mỗi nhà cung cấp thực hiện nó khác nhau. Thông thường, trong quá trình xóa / ghi, người ta sẽ thực thi từ RAM và việc thực thi sẽ không bị ảnh hưởng.

Trên STM32, tôi tin rằng việc đọc từ gian hàng flash trong khi các chu kỳ xóa / ghi đang diễn ra. Điều này sẽ khiến việc thực thi của lõi bị đình trệ cho đến khi hoạt động hoàn tất. Với một số cấu hình flash, tôi tin rằng bạn có thể tiếp tục thực thi / đọc flash và nó sẽ chỉ bị đình trệ khi bạn truy cập vào phần flash mà bạn đang xóa / lập trình.

Tôi đã sử dụng các Cortex M khác trong đó bạn phải thực thi từ RAM trong khi sửa đổi nội dung flash nếu không bạn sẽ gặp lỗi xe buýt (và có thể xảy ra sự cố hệ thống nếu trình xử lý lỗi xe buýt / lỗi cứng của bạn bị flash). Một số micros với số lượng lớn flash thực hiện nó như hai mảng flash độc lập và những mảng này thường cho phép truy cập đầy đủ vào một ngân hàng trong khi hoạt động ở ngân hàng kia.

Bạn sẽ cần tham khảo tài liệu cho phần cụ thể của mình để xem các giới hạn thực thi trong khi sửa đổi nội dung flash.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.