Trích:
Nguyên văn bởi nghean
Em đã thử khai báo
float __attribute__ ((space(psv), address (0x0200)))
Sin[2001];
bởi vì đang cần tính các giá trị sin sau mới đưa vào bảng
nhưng khi biên dịch báo lỗi
Link Error: Could not allocate section .data_0x200 at 0x200
Link Error: Could not allocate program memory
vậy có cách nào khai báo môt mảng như trên tính các giá trị rồi lưu vào ROM k anh?
cảm ơn anh
|
Để lưu bảng vào flash, các phần tử của bảng phải là hằng số vào thời điểm biên dịch mã nguồn. Do đó, bạn nên dùng một công cụ khác để tạo ra bảng giá trị trước (Excel chẳng hạn), rồi copy các giá trị đó vào khai báo bảng hằng số của bạn.
Trong khai báo trên, bạn đã bỏ mất từ khóa const, do đó thông báo lỗi đầu tiên cho thấy trình biên dịch thông báo không thể cấp phát bộ nhớ dữ liệu cho bạn ở địa chỉ 0x200 (vì trình biên dịch hiểu là bạn cần RAM cho 2001 ô nhớ kiểu float, bắt đầu ở địa chỉ 0x200).
Thân,