реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> В IAR 4.20a, при старте программы с вектора сброса нужно ли очищать память SRAM (записью нулей) в контроллере?
Alex ma
сообщение Aug 19 2006, 06:35
Сообщение #1


Частый гость
**

Группа: Новичок
Сообщений: 81
Регистрация: 9-08-06
Пользователь №: 19 445



Например 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, после старта программы с вектора сброса. А нужно ли вообще?
Go to the top of the page
 
+Quote Post
big256
сообщение Aug 19 2006, 07:59
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 15
Регистрация: 9-08-05
Из: Киев-Борисполь
Пользователь №: 7 472



Цитата(Alex ma @ Aug 19 2006, 09:35) *
Проблема в том как запихнуть код очитки ОЗУ в IAR 4.20a, после старта программы с вектора сброса. А нужно ли вообще?


А смысл в этом то какой ?! Если у вас есть не инициализированые переменные они должны будут отинитится нулями(это сделает компилятор еслы ва конешно там не поставите ноинит smile.gif).
Чем вас не устривают "какието" значения в остальной части озу ?
Go to the top of the page
 
+Quote Post
Alex ma
сообщение Aug 19 2006, 15:51
Сообщение #3


Частый гость
**

Группа: Новичок
Сообщений: 81
Регистрация: 9-08-06
Пользователь №: 19 445



Раньше программировал на ассемблере, и один раз долго отлавливал глюк. Оказалось все просто, программа большая(относительно), проблема была и за инициализации переменной в ОЗУ нулями. Тут перешел на СИ CodeVisionAVR(Присматриваюсь к IAR). Действительно если, компилятор отслеживает инициализацию переменных, проблем быть не должно, в общем ассемблер заставляет очень осторожно работать с данными - начинаешь верить в чудеса, перешел на си сомнения остались. Привык просто видеть чистое ОЗУ. biggrin.gif
Go to the top of the page
 
+Quote Post
_Bill
сообщение Aug 19 2006, 16:42
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219



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

В соответствии со стандартом языка все статические переменные по умолчанию инициализируются нулями. Обычно это делается в модуле startup, или аналогичном.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 17:55
Рейтинг@Mail.ru


Страница сгенерированна за 0.01389 секунд с 7
ELECTRONIX ©2004-2016