Bellek boyutu için önişlemci sabiti var mı


13

Derlemelerim mevcut flash / program alanına bağlı olarak bazı kodları hariç tutmak istiyorum. Bir kütüphane demo kodunda kullanılmak üzere destekliyorum. Halihazırdaki çözümüm #ifdef işlemci tipi kullanmaktır. Ama daha genel olmak istiyorum ve tüm çeşitli fişleri belirtmek zorunda değilim. Bunun yerine, mevcut boyutu belirten bir ön işlemci sabiti olması iyi olurdu.

Gcc ve / veya avr-gcc'de yeterince akıcı olmadığımda, yığının başlangıcını ve sonunu tanımlayanlara benzer bazı sabitler bulmayı bekleyebilirim.

Durum örneği. Hem UNO'da hem de Leo'da 32K Flash var. Ancak Leo'nun çekirdek kütüphanesi USB desteği için 4K kullanıyor ve bu da sadece 28K kullanılabilir. Kütüphanem'in demosu UNO'da azami düzeye çıktı ve mevcut program alanına göre otomatik olarak kırpmak istiyorum.


Bunu yapan programlar gördüm, ancak bulamıyorum
TheDoctor

Yanıtlar:


10

io__.hMikrodenetleyicinizin dosyasını bulun , bulunduğu Linux'ta /usr/lib/avr/include/avr, Windows'ta biraz benzer bir konumda olacaktır.

Aşağıdaki bölüme ilerleyin /* Constants */. İlgilenmeniz FLASHENDgereken bir tane olmak üzere orada tanımlanmış birkaç ilginç makro var . Örneğin aşağıdaki gibi kullanabilirsiniz:

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

#endif
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.