А, в этом смысле...
Что ж, на данный момент симулятор устроен так, что подменяет расчётными значениями реальные коды АЦП и уставки сравнения ШИМов. В целях ускорения, это сделано не через ИФ-ы, а через дефайны. Поэтому вот так.
А, в этом смысле...
Здравствуйте.Disona писал(а): ↑30 июл 2020, 11:08Здравствуйте.Илья! писал(а): ↑30 июл 2020, 01:21В продолжение темы по проекту ПО для контроллера 1921ВК035.
Правильно ли я понимаю, что и программу и данные вы размещаете во внутренней флэш памяти программ, откуда они загружаются во внутреннее ОЗУ память программ или программа выполняется из флэш? А во внешней флэш памяти данных храните отредактированные значения параметров, которые потом при загрузке программы и данных из флэщ ПП присваиваются переменным? А дефолтные значения переменных из кудэдита хранятся во внутренней флэш памяти программ?
Если это так, то подскажите пожалуйста как отключить возможность сохранения параметров в драйвере CANOpen, для того, чтобы работать без внешнего чипа флэщ памяти.
И еще, подскажите пожалуйста, как оценить объем занимаемой памяти проектом, чтобы понять впишется ли разработанное ПО в 64 кБ? В файле Debug/*.map есть строчки .debug_frame .... - это оно?
Благодарю.
Если я правильно понял, вы говорите про проект MotorControlDemo для 035.
Вы всё описали верно:
1. Программа хранится во внутренней Flash, и оттуда же выполняется, так как ОЗУ очень мало для хранения функций. В принципе есть возможность разместить часть функций в RAM и копировать их туда из Flash, но опыт показывает, что смысла в этом особо нет. Программа из Flash выполняется в большинстве случаем так же быстро, как и из RAM. Это связано с архитектурой микроконтроллера.
2. Значения параметров словаря CANopen "по умолчанию" хранятся во внутренней флеш.
3. Значений параметров словаря, которые пользователь изменил и хочет сохранить, хранятся во внешней памяти.
Логика загрузки этих параметров такая: при инициализации, драйвер CANopen считывает значения из внешней памяти. Помимо самих значений хранится ещё и контрольная сумма. Если количество требуемых для словаря значений и их контрольная сумма сходятся, то драйвер записывает в параметры эти загруженные значения. Если нет - либо изменился словарь и количество параметров в словаре теперь не такое, как в памяти, или память пуста и не сходится контрольная сумма - драйвер загружает значения по умолчанию из внутренней Flash.
4. Если вы хотите работать без внешней памяти, то нужно в файле "SM_NET.c" найти в функции "SM_NET_Init" строки для инициализации CANopen драйвера и присвоить переменной " co1_vars.settings.LoadParamsFromUserMemory_ena" значение "0". Тогда значения параметров всегда будут загружаться "по-умолчанию".
Вы также можете подчистить всё, что связано с модулем "UserMemory", если у вас сильно не достаёт памяти под ваш проект. Это файл для работы с I2C памятью на плате MotorControlBoard035. Но на внешнюю память ещё кое-что завязано, например ведение логов аварий. Если у вас внешней памяти нет, то и смысла в этом модуле тоже нет, но придётся повозиться, чтобы аккуратно всё подчистить. Возможно проще будет просто закомментировать содержимое некоторых функций.
5. Что касается размера программы, то он печатается в консоли после окончания сборки:Нужно сложить значения для секций .text и .data - получите размер вашего проекта. Bss, если я правильно помню, во Flash памяти не занимает, но лучше это проверить. Вот в примере под спойлером во flash занято 56008 + 9304 = 65312 байт, или 0xFF20.Развернуть
Добрый вечер.Анатолий К.! писал(а): ↑01 дек 2021, 13:11
Здравствуйте.
Тоже в проекте на 035-ом нет памяти. Почистил как было предложено.
Теперь в Unicon не подгружаются значения по умолчанию.
Что я мог сломать? и может кто-то проверял такой вариант работы? Поделитесь пожалуйста подробностями если работает.