MPLAB C18 EEPROM initialization

Loading thread data ...
Reply to
Alexey V Bugrov

Hello, Slav Matveev! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Thu, 24 Sep

2009 10:16:19 +0400:

NS>>>> это нестековые (статические и глобальные) переменные, NS>>>> инициализированные нулём.

SM>>> это должно быть в стартапе, который подключается из SM>>> библиотеки?

DO>> Hу да, а где же этому еще быть?

SM> для этого стартап должен знать размер секции .bss как?

А какие проблемы ему об этом знать?

dima

formatting link

Reply to
Dmitry Orlov
Reply to
Alex Mogilnikov
Reply to
Nickita A Startcev

Hello, Slav Matveev! You wrote in conference fido7.ru.embedded to Alex Mogilnikov on Thu, 24 Sep

2009 20:37:11 +0400:

AM>> Он может его вычислить, вычтя из адреса конца адрес начала. AM>> (предвидя следующий вопрос - адреса эти даст линкер.)

SM> место выделяется динамически?

Статически конечно.

dima

formatting link

Reply to
Dmitry Orlov

Hello, Slav Matveev! You wrote in conference fido7.ru.embedded to Alexey V Bugrov on Thu, 24 Sep

2009 20:42:42 +0400:

SM>>> и как я из main, например, могут узнать размеры?

AB>> Линкер обычно экспортирует соотвествующие константы-переменные, а AB>> на этапе компиляции стартапа они неизвестны.

SM> я, вообщем, так и подумал. но в моем случае требующих SM> принудительной очистки переменных не было, что надо было

Это требование стандарта. Которое тем или иным способом обходится в embedded компиляторах. Кстати, как это делается в subj надо бы разобраться, был бы признателен за совет (небось опять через линкерный скрипт и особый сегмент), а вот в HiTech введено дополнительное ключевое слово persistent в описании переменной, что как раз и препятствует ее обнулению. Чтобы после ресета, например по срабатыванию whatchdog'а, значения переменных не терялись.

SM> инициализировать, все равно в .data и заполняются при линковке.

Как раз это в том embedded, где код прямо из rom выполняется, тоже стартап делает, копируя из rom в ram инициализированные данные.

dima

formatting link

Reply to
Dmitry Orlov
Reply to
Nickita A Startcev
Reply to
Alex Mogilnikov

Hello, Slav Matveev! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Thu, 24 Sep

2009 23:41:02 +0400:

SM>>> место выделяется динамически?

DO>> Статически конечно.

SM> тогда что бы ее линкером и не проинициализировать нужной SM> константой? почему обязательно в рантайме?

Для загружаемых в ОЗУ программ, можно и так, хотя заполненный нулями файл выглядит странно. А для embedded, где код из rom выполняется - только в рантайме.

dima

formatting link

Reply to
Dmitry Orlov

Hello, Slav Matveev! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Thu, 24 Sep

2009 23:48:03 +0400:

SM>>> я, вообщем, так и подумал. но в моем случае требующих SM>>> принудительной очистки переменных не было, что надо было

DO>> Это требование стандарта. SM> подозреваю что тот компилятор был не в курсе даже ansi c.

А с какого языка компилятор-то был?

SM> инициализация переменной int f в секции дата и будет SM> выполнена при линковке. ну и, соответственно, при загрузке SM> выполняемого файла в память.

В мелком embedded этого не происходит.

DO>> ключевое слово persistent в описании переменной, что как раз и DO>> препятствует ее обнулению. Чтобы после ресета, например по DO>> срабатыванию whatchdog'а, значения переменных не терялись.

SM> лично я противник таких принудительных инициализаций.

В каком-то компиляторе, кажется IAR для HC11, я просто из стартапа выбросил этот код. Hе помню уж был ли там штатный способ это сделать.

dima

formatting link

Reply to
Dmitry Orlov

Hello, Slav Matveev! You wrote in conference fido7.ru.embedded to Alex Mogilnikov on Fri, 25 Sep

2009 13:02:00 +0400:

AM>> А как можно проинициализировать область _ОЗУ_ не в рантайме? При AM>> включении питания ОЗУ содержит мусор, и никакой линкер не в силах AM>> изменить этого факта. :)

SM> точно также как инициализируются секции data/code. :)

А они по-разному инициализируются. Код и конатанты - программатором, а дата - в рантайме стартапом.

dima

formatting link

Reply to
Dmitry Orlov
Reply to
Alexander Torres

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.