ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
25 апреля
772626
Adept (04.08.2017 15:18 - 15:43, просмотров: 2834)
дефайны для управления памятью при сборке проекта. всё жизнь жёстко прописывал адреса переменных в деф-файлах, и начальные адреса области памяти для библиотек (при этом порядок подключения библиотек важен, т.к дефайны записывались "цепочкой"/ захотелось странного красивого, чтобы библиотеки можно было подключать где и как угодно, без ручных правок адресов. При этом задумка была, чтобы переменная "OS_memory_END" была как бы "динамической", переопределяемой в каждой библиотеке примерно так: в главном файле, инклюды: ... #include "system_def.inc" #include "i2c_lib.inc" #include "LCD_lib.inc" #include "FSK_lib.inc" и т.п. ... (это для файла "system_def.inc") #define OS_memory_end 0x2500 (это для файла "i2c_lib.inc") #define i2c_memory OS_memory_end+1 ... ... здесь дефайны адресов переменных в инкрементальном формате (+1 от предыдущего адреса) ... #define i2c_memory_end .... #undef OS_memory_end #define OS_memory_end i2c_memory_end (это для файла "LCD_lib.inc") #define LCD_memory OS_memory_end+1 ... ... здесь дефайны адресов переменных в инкрементальном формате (+1 от предыдущего адреса) ... #define LCD_memory_end .... #undef OS_memory_end #define OS_memory_end LCD_memory_end и.т.д, до бесконечности :) однако при попытке реализации такого механизма - AVR-ассемблер при сборке проекта в 7-й студии вываливается с ошибкой ("задача завершена" и т.п....) причём, если заменяю в последних строчках (#define OS_memory_end) определение явным ислом, а не ссылкой на предыдущее определение, то всё компилируется нормально :(( чудеса, да и только. Надеюсь не очень сумбурно изложил :)) кто-нибудь знает как красиво реализовать механизм распределения памяти между библиотеками в ассемблерном проекте??
...делать нужно так, как нужно. А как ненужно - делать не нужно (С) Винни-Пух :)