Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: В IAR 4.20a, при старте программы с вектора сброса нужно ли очищать память SRAM (записью нулей) в контроллере?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
Alex ma
Например CodeVisionAVR,если проект создается в Wizarde, добавляет код очистки ОЗУ:
CLEAR SRAM
000024 e080 LDI R24,LOW(0x400)
000025 e094 LDI R25,HIGH(0x400)
000026 e6a0 LDI R26,0x60
__CLEAR_SRAM:
000027 93ed ST X+,R30
000028 9701 SBIW R24,1
000029 f7e9 BRNE __CLEAR_SRAM
В принципе и добавляет код очистки рабочих регистров:
CLEAR R2-R14
00001e e08d LDI R24,13
00001f e0a2 LDI R26,2
000020 27bb CLR R27
__CLEAR_REG:
000021 93ed ST X+,R30
000022 958a DEC R24
000023 f7e9 BRNE __CLEAR_REG
Проблема в том как запихнуть код очитки ОЗУ в IAR 4.20a, после старта программы с вектора сброса. А нужно ли вообще?
big256
Цитата(Alex ma @ Aug 19 2006, 09:35) *
Проблема в том как запихнуть код очитки ОЗУ в IAR 4.20a, после старта программы с вектора сброса. А нужно ли вообще?


А смысл в этом то какой ?! Если у вас есть не инициализированые переменные они должны будут отинитится нулями(это сделает компилятор еслы ва конешно там не поставите ноинит smile.gif).
Чем вас не устривают "какието" значения в остальной части озу ?
Alex ma
Раньше программировал на ассемблере, и один раз долго отлавливал глюк. Оказалось все просто, программа большая(относительно), проблема была и за инициализации переменной в ОЗУ нулями. Тут перешел на СИ CodeVisionAVR(Присматриваюсь к IAR). Действительно если, компилятор отслеживает инициализацию переменных, проблем быть не должно, в общем ассемблер заставляет очень осторожно работать с данными - начинаешь верить в чудеса, перешел на си сомнения остались. Привык просто видеть чистое ОЗУ. biggrin.gif
_Bill
Цитата(Alex ma @ Aug 19 2006, 18:51) *
Раньше программировал на ассемблере, и один раз долго отлавливал глюк. Оказалось все просто, программа большая(относительно), проблема была и за инициализации переменной в ОЗУ нулями. Тут перешел на СИ CodeVisionAVR(Присматриваюсь к IAR). Действительно если, компилятор отслеживает инициализацию переменных, проблем быть не должно, в общем ассемблер заставляет очень осторожно работать с данными - начинаешь верить в чудеса, перешел на си сомнения остались. Привык просто видеть чистое ОЗУ. biggrin.gif

В соответствии со стандартом языка все статические переменные по умолчанию инициализируются нулями. Обычно это делается в модуле startup, или аналогичном.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.