MPLAB C18 EEPROM initialization

Reply to
Alex Mogilnikov
Loading thread data ...
Reply to
Alex Mogilnikov
Reply to
Nickita A Startcev

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

2009 14:06:58 +0400:

SM>>> line #'s: 00000000 characteristics: C0000080

DO>> Что это за абракадабра и зачем она тут?

SM> дамп заголовка exe-шника. описание секции .bss

И зачем?

dima

formatting link

Reply to
Dmitry Orlov

Hello, Slav Matveev! You wrote in conference fido7.ru.embedded to Alexander Torres on Sun, 27 Sep

2009 14:13:37 +0400:

AT>> Сам отмотай назад, и ищи в своих пачкуляхз что тыт там бредил про AT>> ненадобность BSS?

SM> так научись обосновывать за базар и читать то, что написано, SM> а не что хочется прочесть.

SM> у меня bss не инициилизировалось за его отсутствием. как и SM> не передавались argc, argv, ennv в main.

Отсутствие bss - частный случай.

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

SM> так понятнее?

И это тоже частный случай.

SM>>> и не вижу никаких объективных препятствий что бы и во втором SM>>> случае было .zero 4 или .long 0

AT>> Я не понимаю о чем ты говоришь. пиши понятным языком.

SM> даже не зная ни одного ассемблера, из контекста понятно, что SM> первое это четыре нулевых байта, а второе sizeof(long) SM> байт, в которые записан (long)0.

Hичего не понятно, и кому, собственно нужно расшифровывать твою абракадабру?

dima

formatting link

Reply to
Dmitry Orlov

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

2009 14:53:37 +0400:

AM> Это какой-то ленивый компилятор. :) gcc даже при явной AM> инициализации нулем помещает переменную в .bss:

А как gcc сказать, чтобы он не обнулял при старте программы неинициализированные статические переменные? Лучше выборочно, но можно и все.

dima

formatting link

Reply to
Dmitry Orlov
Reply to
Alex Mogilnikov

Hello, Nickita A Startcev! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Sun, 27 Sep

2009 15:46:12 +0400:

DO>>>> Последний компьютерный (не embedded) DO>>>> стартап, что я видел, был для ДОС и там bss обнулялся в стартапе, DO>>>> и я уже плохо помню формат .exe (хотя когда-то и писал загрузчик DO>>>> таких файлов), но кажется там тоже не было предусмотрено DO>>>> возможности указывать какую область обнулять загрузчику.

NAS>>> Есть. можно. Можно указать секцию, которая занимает 0 байт в NAS>>> файле и N байт в памяти. Да, это ради экономии места на диске.

DO>> А она обнулялась?

NAS> Таки да.

Тогда дважды :)

DO>> Впрочем, какое это сейчас имеет значение.

NAS> Смотря что и куда эмбеддить.

Hу кому и зачем сейчас-то в ДОС эмбиддить?

dima

formatting link

Reply to
Dmitry Orlov
Reply to
Nickita A Startcev
Reply to
Nickita A Startcev
Reply to
Alexey Vissarionov

Hello, Nickita A Startcev! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Sun, 27 Sep

2009 20:06:08 +0400:

AM>>> Это какой-то ленивый компилятор. :) gcc даже при явной AM>>> инициализации нулем помещает переменную в .bss:

DO>> А как gcc сказать, чтобы он не обнулял при старте программы DO>> неинициализированные статические переменные? Лучше выборочно, но DO>> можно и все.

NAS> Для этого нужно асилить какую-то страшную абракадабру. NAS> Тебе это не подойдёт.

Hа самом деле, что удивительно, они это описали в документации, да еще и так, что это можно найти.

The ANSI standard requires that all objects with static storage duration that are not initialized explicitly are set to zero. With both the c018.o/c018_e.o and c018i.o/c018i_e.o start-up code modules, this requirement is not met. A third type of start-up module, c018iz.o and c018iz_e.o, is provided to meet this requirement. If this start-up code module is linked with the application, then, in addition to initializing idata sections, all objects with static storage duration that are not initialized explicitly are set to zero.

dima

formatting link

Reply to
Dmitry Orlov

Hello, Alexey Vissarionov! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Sun, 27 Sep

2009 21:55:44 +0400:

AM>>> Это какой-то ленивый компилятор. :) gcc даже при явной AM>>> инициализации нулем помещает переменную в .bss:

DO>> А как gcc сказать, чтобы он не обнулял при старте программы DO>> неинициализированные статические переменные? Лучше выборочно, но DO>> можно и все.

AV> Ты это... никому не говори, ладно? Есть такая функция - malloc()

Ты не понял о чем речь и бредишь. Hачиная с того, что надо выпить больше, чем способен принять мой организм, чтобы на PICах пользоваться динамической памятью, и заканчивая тем, что обсуждалась инициализация статических неинициализированных переменных. Под gcc тут понимается, сюрприз, subj, то есть mcc18.

dima

formatting link

Reply to
Dmitry Orlov
Reply to
Alexey V Bugrov

Hello, Alexey V Bugrov! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Sun, 27 Sep

2009 19:45:44 +0000 (UTC):

AVB> gcc к mcc18 не имеет никакого отношения и соответсвенно ничего

Интересно почему тогда он так на него похож.

dima

formatting link

Reply to
Dmitry Orlov
Reply to
Alexey V Bugrov
Reply to
Alexander Torres

Hello, Alexey V Bugrov! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Mon, 28 Sep

2009 07:15:39 +0000 (UTC):

AVB>>> gcc к mcc18 не имеет никакого отношения и соответсвенно ничего DO>> Интересно почему тогда он так на него похож.

AVB> Hичего общего. Ты вообще gcc пользовался?

Да, приходилось.

dima

formatting link

Reply to
Dmitry Orlov

Tue Sep 22 2009 15:46, Slav Matveev wrote to Kirill Frolov:

SM> в реальной жизни у меня был компилятор и линкер, но не было SM> библиотек, поэтому стартап я писал сам и main исключительно SM> дань уважения традициям. А поскольку задача была чистая

SM> start: SM> mov #1000,sp SM> jsr pc,_main

Э нееее. А что будет при return из main? А что будет при вызове exit? Hужно, между прочим, из return вызываеть exit, а оттуда всё записанное в atexit(3), и потом только _exit(). А abort() ? От которого никак не отвертеться, потому, что assert(). Это я сейчас какой-то разумный минимум вспомнил только. А environment -- так он через глобальную переменную может быть практически (argv вообще тоже...)

Reply to
Kirill Frolov

Tue Sep 22 2009 21:43, Nickita A Startcev wrote to Slav Matveev:

SM>> start: SM>> mov #1000,sp SM>> jsr pc,_main SM>> emt 377 SM>> .end start NAS> Обычно ещё BSS зануляют и стек настраивают.

Ещё как бы инициализируют .data (и конструкторы вызывают для си-два-креста). И это обязательно как бы. .

Reply to
Kirill Frolov

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.