Có hằng số tiền xử lý cho kích thước bộ nhớ


13

Tôi muốn các biên dịch của tôi loại trừ một số mã tùy thuộc vào không gian flash / chương trình có sẵn. Để được sử dụng trong mã demo của thư viện tôi hỗ trợ. Trong khi đó giải pháp hiện tại của tôi là sử dụng #ifdef của loại bộ xử lý. Nhưng tôi muốn nói chung hơn và không phải chỉ định tất cả các chip khác nhau. Thay vào đó, sẽ rất tuyệt nếu có hằng số tiền xử lý cho biết kích thước khả dụng.

Khi tôi không đủ thông thạo về gcc và hoặc avr-gcc, tôi có thể mong đợi tìm thấy một số hằng số tương tự với các hằng số xác định điểm bắt đầu và kết thúc của heap.

Ví dụ về trường hợp. Có phải cả UNO và Leo đều có 32K Flash. Nhưng thư viện lõi của Leo sử dụng 4K để hỗ trợ USB, kết quả chỉ có 28K. Bản demo của Thư viện của tôi gần như đã được tối đa hóa trên UNO và tôi muốn tự động cắt xén dựa trên không gian chương trình có sẵn.


Tôi đã thấy các chương trình thực hiện điều này, nhưng tôi không thể tìm thấy bất kỳ chương trình nào
TheDoctor

Câu trả lời:


10

Tìm io__.htệp cho vi điều khiển của bạn, trên Linux, nó được đặt trong /usr/lib/avr/include/avrWindows, nó sẽ ở một vị trí hơi giống nhau.

Cuộn xuống phần nói /* Constants */. Có một số macro thú vị được định nghĩa ở đó, FLASHENDlà một trong những macro bạn nên quan tâm. Bạn có thể sử dụng nó như ví dụ như sau:

#if FLASHEND > 0x8000
/* Include some extra code when sufficient flash is available. */

#endif
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.