- Vote on answer
- posted
14 years ago
MPLAB C18 EEPROM initialization
- Vote on answer
- posted
14 years ago
- Vote on answer
- posted
14 years ago
- Vote on answer
- posted
14 years ago
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
- Vote on answer
- posted
14 years ago
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
- Vote on answer
- posted
14 years ago
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
- Vote on answer
- posted
14 years ago
- Vote on answer
- posted
14 years ago
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
- Vote on answer
- posted
14 years ago
- Vote on answer
- posted
14 years ago
- Vote on answer
- posted
14 years ago
- Vote on answer
- posted
14 years ago
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
- Vote on answer
- posted
14 years ago
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
- Vote on answer
- posted
14 years ago
- Vote on answer
- posted
14 years ago
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
- Vote on answer
- posted
14 years ago
- Vote on answer
- posted
14 years ago
- Vote on answer
- posted
14 years ago
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
- Vote on answer
- posted
14 years ago
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 вообще тоже...)
- Vote on answer
- posted
14 years ago
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 (и конструкторы вызывают для си-два-креста). И это обязательно как бы. .