chuỗi tuyên bố trong tôi (ở) R trong flash

7

7rots51

Guest
HI

Làm thế nào tôi có thể tuyên bố một chuỗi hoặc mảng các hằng số trong bộ nhớ của flsh MICROS avr với tôi (ở) R trình biên dịch Làm thế nào tôi có thể sử dụng chuỗi hoặc mảng trong chương trình??

Có vẻ như cách duy nhất để làm việc với đèn flash được lưu trữ là chuỗi pgmspace.h LIB, là nó đúng?

Kính trọng

 
sử dụng một cái gì đó như thế này:

__flash unsigned char SMS_PDU_START [] = "AT CMGS =";

Điều rất quan trọng để kiểm tra initializers nơi "tập hợp trong bộ nhớ flash" thuộc dự án / options / iccavr / mã.

Lưu ý rằng chuỗi sẽ được sao chép vào ram lúc chạy khi nó đang được sử dụng, nhưng chỉ có chuỗi hiện tại và không phải tất cả các chuỗi như là do các tùy chọn mặc định ...

Vì vậy, điều này giúp tiết kiệm rất nhiều ram.

lời chúc mừng tốt đẹp nhất

 
Liệu nó có nghĩa là con trỏ chỉ đến chuỗi sẽ được cấp phát và nội dung chuỗi sẽ được lấy từ đống tải trước khi thực hiện chương trình đạt đến điểm mà acces chuỗi đến sẽ được thực hiện?

 
Đó là những gì hướng dẫn sử dụng nói về việc này

DEFAULT DATA con trỏ
Tất cả các mô hình bộ nhớ có một con trỏ dữ liệu mặc định, như có thể thấy trong bảng
trên trang 14.
Trong thực tế, một con trỏ mặc định dữ liệu sẽ có một thuộc tính ngầm,
tùy theo mô hình bộ nhớ mà bạn chọn.Tất cả các đối tượng được xác định C
mà không có một thuộc tính rõ ràng có thể được trỏ đến bởi một con trỏ mặc định.
String literals rằng mặc định con trỏ dữ liệu phải có khả năng điểm đến không thể
được cho thuộc tính rõ ràng trong mã nguồn.Kể từ khi được literals chuỗi
Hằng số, nó sẽ được thực hiện để đặt chúng trong chỉ đọc bộ nhớ (flash
bộ nhớ) nhưng không có con trỏ mặc định có thể trỏ đến đèn flash.Vì vậy chuỗi
không được đặt trong flash theo mặc định.
Tất cả các mô hình bộ nhớ sử dụng một con trỏ dữ liệu mặc định được gắn với một dữ liệu
bộ nhớ không gian.Điều này có nghĩa là nó được biết đến tại thời điểm biên dịch
làm thế nào bộ nhớ sẽ được truy cập, do đó tiết kiệm kích thước mã.
Các AVR IAR C / EC biên dịch bình thường các bản sao dây từ đèn flash
dữ liệu trước khi bộ nhớ chính () được gọi, hoặc cho phép bạn đặt chúng ở bên ngoài
ROM (nếu có).Literals chuỗi khác có thể được đặt cách rõ ràng trong flash,
ví dụ như thế này:
__flash char str1 [] == "của tôi string";
Điều này đòi hỏi việc sử dụng các thói quen truy cập đặc biệt mà sử dụng đèn flash
gợi ý, thay vì các cuộc gọi chung loại thư viện C bình thường.Xem các chương
AVR thư viện công việc cụ thể.
-------------------------------------------------- ------
Nơi tổng hợp thu Initializers trong Flash Memory

Sử dụng tùy chọn này để đặt initializers tổng hợp trong bộ nhớ flash.Những cái này
initializers được, hoặc nếu không được đặt trong phân khúc const bên ngoài hay
trong phân đoạn khởi tạo dữ liệu nếu tùy chọn biên dịch-y cũng được
chỉ định.
Ví dụ:
void foo ()
(
char buf [4] == ('1 ',' d ',' g ',' t ');
...
)
Nói cách khác: Một initializer tổng hợp một mảng hoặc một struct là
dữ liệu liên tục được sao chép vào ngăn xếp động tại thời gian chạy, trong
trường hợp mỗi khi một chức năng được nhập.
Hạn chế của cách đặt dữ liệu trong bộ nhớ flash là nó phải mất nhiều thời gian hơn
để sao chép nó; lợi thế là nó doesn t chiếm bộ nhớ trong dữ liệu
không gian.

 

Welcome to EDABoard.com

Sponsor

Back
Top