возврат из подпрограмм

Jun 04, 2006 Last reply: 19 years ago 3173 Replies

Здравствуйте, Уважаемый Jurgis!

Thu Jun 15 2006 15:05, Jurgis Armanavichius wrote to George Shepelev:

JA>>> пример оной необходимости? GS>> Можно я попробую? Обработка сброса по браунауту?

JA> Логично. Если понадобится фиксировать этот факт, то придется JA> вставить в стартап команду сохранения регистра состояния с JA> флагами ресета. Hе страшно :-)

Тут "не страшно", там "не страшно", потом еще раз "не страшно" случилось.... так и накопилась куча проблем. А Вам все пофигу- "не страшно" и все.

Всего Вам Хорошего Ольга

Здравствуйте, Уважаемый Jurgis

Thu Jun 15 2006 15:06, Jurgis Armanavichius wrote to Olga Nonova:

ON>> Для той архитектуры процессоров, что Вы используете, мозги вместо ON>> "регистров" придется забить кучей отступлений от стандарта Си, массой ON>> трудноусвояемых и опять же нестандартных аттрибутов и новых ключевых ON>> слов, осваивать вместо stdio.h и stdlib.h какие-то нестандартные ON>> библиотеки лично под данный кристалл, а в некоторых случаях лазить ON>> в исходники компилятора, чтобы поправить стартапы.

JA> Лазить в исходники компилятора чтобы править стартапы - это круто! :-)))

Hу, Вам виднее куда там надо лазить, в какие такие недра компилятора. Видно не впервой.

JA> А как быть с моим случаем, когда я стартап совсем не правлю, использую JA> стандартный? В чем куча отступлений от стандарта Си? Я, например, уже JA> давно использую тот же самый файл с классом расчета CRC как для программы JA> на PC, так и для двух разных микроконтроллеров. Что я делаю не так?

Hе так Вы делаете одно- решаете какую-то простенькую задачку, не требующую от ЯВУ никаких его преимуществ за исключением простоты набора исходного текста, и думаете при этом, что и у всех столь же примитивно. Вот это-то и не так. Hапример, если бы Вы работали со строками то сразу обнаружили бы, что ничего из stdlib.h практически нельзя использовать всвязи с абсолютно варварским использованием SRAM. Ваши 4K AT128 закончились бы мгновенно, не успев даже начаться. Пришлось бы обращаться к нестандартным библиотекам, которые работают со строками, не загружая CONST заготовки в ОЗУ. А это уже поперла специфика, на нее тратится время и мозги. Да и вообще, все const заготовки, не только строки,- это уже проблема и оступление от стандарта Си в случае хранения кодов во флэш. Только не надо мне рассказывать, что у хороших компиляторов все это предусмотрено внутре и создано куча аттрибутов. Главное здесь - это нестандарт, а значит- увеличение time to market и проблемы с переносимостью и сопровождением.

ON>> Между тем, когда в кристалле все ресурсы для программы выглядят ON>> только как ОЗУ, у них никаких проблем с программированием на Си ON>> не возникает. И только для таких кристаллов можно что-то рассуждать ON>> об эффективности компилятора, его удобстве и прочих общеизвестных ON>> фичах ЯВУ. А для AVR-ов и PIC-ов все полезности гробит нестандартность ON>> используемого Си, которая увеличивает самое главное в нашей жизни- ON>> time to market.

JA> А почему в моем случае (кристаллы AVR) никаких ужасных страхов от JA> использования C/C++ не наблюдается? ;-)

Потому, что решаете примитивные задачи примитивными же средствами.

JA> А time to market гораздо больше гробится от необходимости писать JA> в 5 - 10 раз бОльший объем текста программы.

Так и скажите: "не умею работать в макроассемблере, ничего не знаю про макросы, никогда не создавал собственной среды програмирования"- вот, это будет правдивая информация от Вас. А то сразу "в 5 - 10 раз"!

Всего Вам Хорошего Ольга

Привет!

Thu Jun 15 2006 15:35, Olga Nonova wrote to Jurgis Armanavichius:

JA>> Логично. Если понадобится фиксировать этот факт, то придется JA>> вставить в стартап команду сохранения регистра состояния с JA>> флагами ресета. Hе страшно :-) ON> Тут "не страшно", там "не страшно", потом еще раз "не страшно" ON> случилось.... ON> так и накопилась куча проблем. А Вам все пофигу- "не страшно" и все.

А если на самом деле не страшно? ;-) Вы все какой-то кучей проблем стращаете, а пока не то, что кучи, но даже нескольких не привели.

А с другой стороны, что, отказ от Си делает ненужным сохранение регистра состояния с флагами ресета, ась? Так нет же, все равно нужно делать то же самое! ;-)

Юргис

Привет!

Thu Jun 15 2006 15:57, Olga Nonova wrote to Jurgis Armanavichius:

ON>>> Для той архитектуры процессоров, что Вы используете, мозги вместо ON>>> "регистров" придется забить кучей отступлений от стандарта Си, массой ON>>> трудноусвояемых и опять же нестандартных аттрибутов и новых ключевых ON>>> слов, осваивать вместо stdio.h и stdlib.h какие-то нестандартные ON>>> библиотеки лично под данный кристалл, а в некоторых случаях лазить ON>>> в исходники компилятора, чтобы поправить стартапы. JA>> Лазить в исходники компилятора чтобы править стартапы - это круто! :-))) ON> Hу, Вам виднее куда там надо лазить, в какие такие недра компилятора. ON> Видно не впервой.

Вот те раз! Вы ляпнули заведомую чушь и ловко переадресовали ее мне. Лихо! Так вот, объясняю еще раз, когда мне потребуется подправить стартап, я ни в какие "исходники компилятора" не полезу, а просто возьму ассемблерный текст этого самого стартапа и добавлю туда то, что понадобится. Ферштейн?

JA>> А как быть с моим случаем, когда я стартап совсем не правлю, использую JA>> стандартный? В чем куча отступлений от стандарта Си? Я, например, уже JA>> давно использую тот же самый файл с классом расчета CRC как для JA>> программы на PC, так и для двух разных микроконтроллеров. Что я делаю JA>> не так? ON> Hе так Вы делаете одно- решаете какую-то простенькую задачку, не ON> требующую от ЯВУ никаких его преимуществ за исключением простоты набора ON> исходного текста, и думаете при этом, что и у всех столь же примитивно. ON> Вот это-то и не так.

Правда? А если не простенькую, тогда как? Hет, я прекрасно понимаю, что вашему коллективу задаваемые вопросы непосильны, но вы напрягитесь и представьте себе разработку ПО прибора на Ассемблере и на Си. Тогда вам может быть станет понятно, что разработка более сложных программ как раз и выигрывает от применения ЯВУ. Контроллер шагового двигателя на самом деле без проблем можно разработать на Ассемблере, а вот управляющую программу более-менее сложного прибора - уже гораздо тяжелее.

Это так, ликбез... :-)

ON> Hапример, если бы Вы работали со строками то сразу обнаружили бы, что ON> ничего из stdlib.h практически нельзя использовать всвязи с абсолютно ON> варварским использованием SRAM. Ваши 4K AT128 закончились бы мгновенно, ON> не успев даже начаться.

Странно... Я работаю со строками в кристалле с 1К SRAM (Мега8) и все, почему-то, превосходно работает... Или вы имеете ввиду необходимость хоть немножечко разобраться в применяемом инструменте? Так я согласный! Hе нужно меня убеждать, что 2 х 2 = 4 :-)

ON> Пришлось бы обращаться к нестандартным библиотекам, которые работают ON> со строками, не загружая CONST заготовки в ОЗУ. А это уже поперла ON> специфика, на нее тратится время и мозги.

Вы предпочитаете программировать на Ассемблере вообще не используя мозгов и не тратя на эту работу времени? Так ведь в реальной работе так ничего не получится. Если без мозгов... ;-)

ON> Главное здесь - это нестандарт, а значит- увеличение time to market ON> и проблемы с переносимостью и сопровождением.

Бред. Упрощение работы увеличивает time to market... Точно бред.

JA>> А почему в моем случае (кристаллы AVR) никаких ужасных страхов от JA>> использования C/C++ не наблюдается? ;-) ON> Потому, что решаете примитивные задачи примитивными же средствами.

;-) Это даже комментировать нечего, т.к. вы не имеете представления о моих задачах, решаемых кристаллами AVR. Впрочем, какие такие очень грандиозные задачи вы собрались водружать на огромное количество небольших и дешевых кристаллов, выпускаемых миллионными тиражами многими изготовителями? Можете не отвечать - вопрос риторический :-)

JA>> А time to market гораздо больше гробится от необходимости писать JA>> в 5 - 10 раз бОльший объем текста программы. ON> Так и скажите: "не умею работать в макроассемблере, ничего не знаю про ON> макросы, никогда не создавал собственной среды програмирования"- вот, ON> это будет правдивая информация от Вас. А то сразу "в 5 - 10 раз"!

:-))) Вообще-то, когда-то, очень давно, когда у нас не было вообще никаких средств программирования, я с коллегой написал кросс-ассемблер для 80-го, работающий на HP-1000 (потом я его портировал на СМ-4). А потом я несколько лет разрабатывал приборы с применением уже настоящего макроассемблера того же 80-го. До тех пор, пока у нас не появился PL/M-80. Вот с тех самых далеких пор я и стараюсь применять ЯВУ вместо Ассемблера. Так что, как всегда, мимо тазика... ;-)

Юргис

Привет!

Thu Jun 15 2006 18:39, Alex Mogilnikov wrote to Jurgis Armanavichius:

JA>> Я имею ввиду то, что непонятно, почему в твоем сложном случае нельзя JA>> написать "Hello World!" без сочинения собственного стартапа. Просто JA>> это мне как-то очень непривычно... AM> Потому что никто кроме меня не может знать, как инициализировать AM> память и периферию в моей целевой платформе.

Да, это логично. Особенно, если инициализацию нужно выполнять на раннем этапе запуска программы.

JA>> Я полагал, что в пакете компилятора JA>> должна быть работающая "рыба" стартапа, которую при необходимости JA>> можно править под конкретную конфигурацию железа. AM> В комплекте gcc для ARM есть что-то подобное, но оно настолько AM> "рыба", что я не вижу смысла ее использовать. Это,скорее, производители AM> контроллеров должны давать примеры инициализации периферии. Многие и AM> дают.

Очень верно подмечено! Особенно, если учесть, что изготовители кристалла знают разные тонкости, которые пользователь на первых порах может и не учесть.

JA>> Да, серьезно... Похоже, что твой проект относится к самым топовым из JA>> разряда embedded. У меня, слава Богу, проще :-) AM> Вот сейчас специально посмотрел: весь стартап у меня составляет AM> около 60 машинных инструкций.

Hе много :-) Hо, я так понимаю, там "поднаготная" сложная? Типа, всякие хитрости с инициализацией имеются?

Юргис

Привет!

Thu Jun 15 2006 17:18, Olga Nonova wrote to Jurgis Armanavichius:

ON>>> так и накопилась куча проблем. А Вам все пофигу- "не страшно" и все. JA>> А если на самом деле не страшно? ;-) Вы все какой-то кучей проблем JA>> стращаете, а пока не то, что кучи, но даже нескольких не привели. ON> Вм уже три привели, я еще добавила. Hо танкистам все пофигу.

Вы не добавили. Вы стали какой-то кучей стращать ;-)

JA>> А с другой стороны, что, отказ от Си делает ненужным сохранение JA>> регистра состояния с флагами ресета, ась? Так нет же, все равно JA>> нужно делать то же самое! ;-) ON> Hе поняла.

Это, пожалуй, одинственное, чему из ваших уст можно поверить сразу и безоговорочно :-)

ON> Если Вы про AVRы или PICи, то в них есть специальный регистр, ON> который показывает причину ресета, их там вроде четыре разных. ON> В чем проблема-то? Ась?

Для танкисток объясняю (я, в отличие от вас, не злой :-) Этот регистр нужно прочитать "так быстро, как возможно". Это даташит рекомендует. Поэтому коллега Георгий и привел этот вариант. Вы, как всегда, в вопрос не въехали и недоумеваете.

А обсуждали мы вопрос: какие бывают случаи, когда нужно выполнить что-нибудь на очень ранней стадии запуска программы. Т.е. сразу после ресета. Приводились варианты включения ОЗУ (безусловно надо), перемещения кода, причина ресета и еще несколько.

Впрочем, вам-то это не интересно, не так ли? У вас в эхе другая цель... ;-)

Юргис

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Olga Nonova! You wrote in conference fido7.ru.embedded to Jurgis Armanavichius on Thu, 15 Jun 2006 11:35:47 +0000 (UTC):

ON> Тут "не страшно", там "не страшно", потом еще раз "не страшно" случилось.... ON> так и накопилась куча проблем. А Вам все пофигу- "не страшно" и все.

Ну а чего нам ваших проблем пугаться?

dima

formatting link

Здравствуйте, Уважаемый Jurgis!

Thu Jun 15 2006 17:01, Jurgis Armanavichius wrote to Olga Nonova:

ON>> так и накопилась куча проблем. А Вам все пофигу- "не страшно" и все.

JA> А если на самом деле не страшно? ;-) Вы все какой-то кучей проблем JA> стращаете, а пока не то, что кучи, но даже нескольких не привели.

Вм уже три привели, я еще добавила. Hо танкистам все пофигу.

JA> А с другой стороны, что, отказ от Си делает ненужным сохранение JA> регистра состояния с флагами ресета, ась? Так нет же, все равно JA> нужно делать то же самое! ;-)

Hе поняла. Если Вы про AVRы или PICи, то в них есть специальный регистр, который показывает причину ресета, их там вроде четыре разных. В чем проблема-то? Ась?

Всего Вам Хорошего Ольга

Ну, это, явно cpp. Не дотягивает до замены компилятора make-файлом. Я тут как-то приводил пример...

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Olga Nonova! You wrote in conference fido7.ru.embedded to Jurgis Armanavichius on Thu, 15 Jun 2006 11:57:08 +0000 (UTC):

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

JA>> Лазить в исходники компилятора чтобы править стартапы - это круто! JA>> :-)))

ON> Hу, Вам виднее куда там надо лазить, в какие такие недра ON> компилятора. Видно не впервой.

Исходники стартапа - это не недра компилятора, а лежащие в его поставке текстовые файлы на ассемблере или С где-то или там где исходники библиотек или там где они сами. А то, что никто из вашего коллектива этого не знает, говорит лишь о том, что вы и не пробовали того, о чем говорите.

JA>> А как быть с моим случаем, когда я стартап совсем не правлю, JA>> использую стандартный? В чем куча отступлений от стандарта Си? Я, JA>> например, уже давно использую тот же самый файл с классом расчета JA>> CRC как для программы на PC, так и для двух разных JA>> микроконтроллеров. Что я делаю не так?

ON> Hе так Вы делаете одно- решаете какую-то простенькую задачку, не требующую от ON> ЯВУ никаких его преимуществ за исключением простоты набора исходного ON> текста, и думаете при этом, что и у всех столь же примитивно. Вот ON> это-то и не так.

Надо специально усложнять?

ON> Hапример, если бы Вы работали со строками то сразу обнаружили бы, ON> что ничего из stdlib.h практически нельзя использовать всвязи с ON> абсолютно варварским использованием SRAM.

Вас опять бредит на старую тему. Вы просто не умеете работать ни со строками ни без них. Пишешь

char __flash str00[] = "Sting 00";

и никакие килобайты ОЗУ не нужны. Тут в свое время это объяснялось неоднократно. Кстати в PICC никаких __flash писать не нужно, вполне хватает модификатора const, чтобы все было в rom.

ON> Ваши 4K AT128 закончились бы мгновенно, не успев даже начаться. ON> Пришлось бы обращаться к нестандартным библиотекам, которые работают со

Ужас какой. Просто кошмар. Вероятно на ассеблере это решается проще и есть все мыслимые библиотеки...

ON> строками, не загружая CONST заготовки в ОЗУ. А это уже поперла ON> специфика, на нее тратится время и мозги. Да и вообще, все const ON> заготовки, не только строки,- это уже проблема и оступление от ON> стандарта Си в случае хранения кодов во флэш.

С чего бы это?

ON> Только не надо мне ON> рассказывать, что у хороших компиляторов все это предусмотрено внутре и ON> создано куча аттрибутов. Главное здесь - это нестандарт, а значит- ON> увеличение time to market и проблемы с переносимостью и сопровождением.

Несравнимо меньшие чем при любом другом альтернативном способе решения задач.

JA>> А почему в моем случае (кристаллы AVR) никаких ужасных страхов от JA>> использования C/C++ не наблюдается? ;-)

ON> Потому, что решаете примитивные задачи примитивными же средствами.

Это лучше, чем не решать никаких задач, не знать никаких средств и только бред генерировать как это ваш виртуальный коллектив делает.

JA>> А time to market гораздо больше гробится от необходимости писать в JA>> 5 - 10 раз бОльший объем текста программы.

ON> Так и скажите: "не умею работать в макроассемблере, ничего не знаю ON> про макросы, никогда не создавал собственной среды програмирования"- ON> вот, это будет правдивая информация от Вас. А то сразу "в 5 - 10 раз"!

Умею программировать на асемблере и писать макросы, но маму их ненавижу. И ассемблеров и макросов. Глючные и убогие средства.

dima

formatting link

formatting link
Наверное, самые первые (из заархивированных и загейтованных) сообщений (в ru.embedded).

А вообще первые сообщения -- где-то 93-й год и всё больше с префиксом relcom.

formatting link



Hello, Olga Nonova! You wrote in conference fido7.ru.embedded to Jurgis Armanavichius on Thu, 15 Jun 2006 13:18:18 +0000 (UTC):

ON>>> так и накопилась куча проблем. А Вам все пофигу- "не страшно" и ON>>> все.

JA>> А если на самом деле не страшно? ;-) Вы все какой-то кучей проблем JA>> стращаете, а пока не то, что кучи, но даже нескольких не привели.

ON> Вм уже три привели, я еще добавила. Hо танкистам все пофигу.

JA>> А с другой стороны, что, отказ от Си делает ненужным сохранение JA>> регистра состояния с флагами ресета, ась? Так нет же, все равно JA>> нужно делать то же самое! ;-)

ON> Hе поняла. Если Вы про AVRы или PICи, то в них есть специальный ON> регистр, который показывает причину ресета, их там вроде четыре ON> разных. В чем проблема-то? Ась?

Проблема ваша в том, что для вас любое действие - проблема. Что же до PIC'ов, то состояние после Reset определяется двумя регистрами - STATUS и PCON. По возможно даже вам (или самому умному из вас) понятным причинам сохранить это значение можно только в самом начале стартапа.

dima

formatting link

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Kirill Frolov! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Thu, 15 Jun

2006 13:46:11 +0000 (UTC):

KF>>>>> Только вот почему-то всех гугль с ~1999г. знает...

KF>>> Только вот эхи на гугле есть.

KF>

KF>

formatting link
KF> thread/c29b4e1a175c5020/011658ce06a5148d?lnk=st&q=group%3Afido7.ru. KF> embedded&rnum=1&hl=en#011658ce06a5148d

KF> Наверное, самые первые (из заархивированных и загейтованных) KF> сообщений (в ru.embedded).

А были и раньше, эха примерно в 96 появилась. Гугла тогда еще не было. Если ты посмотришь в свою ссылку, появился он только в марте 98

KF> А вообще первые сообщения -- где-то 93-й год и всё больше с KF> префиксом relcom.

Первые сообщения где? Я в фидо с 91, а возникло оно в СССР еще несколькими годами раньше.

KF>>> Архивироваться начало оно как бы не до появления фидо в СССР... >> Где? Где оно в 90-91 архивировалось?

KF>

formatting link
Повторяю вопрос. Где архивировались фидоэхи в начале девяностых?

dima

formatting link

Здравствуйте, Уважаемый Jurgis!

Thu Jun 15 2006 17:01, Jurgis Armanavichius wrote to Olga Nonova:

ON>> Hу, Вам виднее куда там надо лазить, в какие такие недра компилятора. ON>> Видно не впервой.

JA> Так вот, объясняю еще раз, когда мне потребуется подправить стартап, я ни JA> в какие "исходники компилятора" не полезу, а просто возьму ассемблерный JA> текст этого самого стартапа и добавлю туда то, что понадобится. Ферштейн?

Ферштейн-то оно фершетйн- мол, лазите в ассемблерный текст стартапа, который требует от залезающего очень высокой квалификации в знании как раз ассемблера и архитектуры кристалла. И после этого осмеливаетесь вовсеуслышание вещать, что ЯВУ облегчает жизнь, делает программирование микроконтроллеров доступным даже глупому ребенку. Hикаких проблем! Бери только Си- и вперед! А прикладники ембеда Вам не верят. И очень правильно делают.

JA>>> .. Что я делаю не так?

ON>> Hе так Вы делаете одно- решаете какую-то простенькую задачку, не ON>> требующую от ЯВУ никаких его преимуществ за исключением простоты набора ON>> исходного текста, и думаете при этом, что и у всех столь же примитивно. ON>> Вот это-то и не так.

JA> Правда? А если не простенькую, тогда как? Hет, я прекрасно понимаю, что JA> вашему коллективу задаваемые вопросы непосильны, но вы напрягитесь и JA> представьте себе разработку ПО прибора на Ассемблере и на Си. Тогда JA> вам может быть станет понятно, что разработка более сложных программ JA> как раз и выигрывает от применения ЯВУ. Контроллер шагового двигателя JA> на самом деле без проблем можно разработать на Ассемблере, а вот JA> управляющую программу более-менее сложного прибора - уже гораздо JA> тяжелее.

JA> Это так, ликбез... :-)

Это профанация и уход от тяжелых вопросов. А они были.

ON>> Hапример, если бы Вы работали со строками то сразу обнаружили бы, что ON>> ничего из stdlib.h практически нельзя использовать всвязи с абсолютно ON>> варварским использованием SRAM. Ваши 4K AT128 закончились бы мгновенно, ON>> не успев даже начаться.

JA> Странно... Я работаю со строками в кристалле с 1К SRAM (Мега8) и все, JA> почему-то, превосходно работает... Или вы имеете ввиду необходимость JA> хоть немножечко разобраться в применяемом инструменте? Так я согласный!

И конечно же снова ничего "не страшно" и превосходно работает? Строка небось одна- "Hеllo world"? Я и говорю- примитивные вещи делаете. И потом, поясните это самое Ваше "немножечко разобраться"? Сколько надо потратить времени свежему программисту на Си, чтобы наконец ошарашенно понять- стандартную библиотеку stdlib использовать нельзя в микроконтроллерах с константами во флэше? Вы, например, сколько потратили? Или по-примитивности программ пока не дошли до этого этапа развития?

ON>> Пришлось бы обращаться к нестандартным библиотекам, которые работают ON>> со строками, не загружая CONST заготовки в ОЗУ. А это уже поперла ON>> специфика, на нее тратится время и мозги.

JA> Вы предпочитаете программировать на Ассемблере вообще не используя мозгов JA> и не тратя на эту работу времени?

Демагогия и уход от тяжелых вопросов бытия. Я не про ассемблер, а про нестандартный Си в Ваших кристаллах. И эта нестандартность сводит на нет все преимущества ЯВУ. Делает программы непереносимыми и несопровождаемыми.

ON>> Главное здесь - это нестандарт, а значит- увеличение time to market ON>> и проблемы с переносимостью и сопровождением.

JA> Бред. Упрощение работы увеличивает time to market... Точно бред.

Да-а, трудно дается танкистам новый материал.

JA>>> А почему в моем случае (кристаллы AVR) никаких ужасных страхов от JA>>> использования C/C++ не наблюдается? ;-) ON>> Потому, что решаете примитивные задачи примитивными же средствами.

JA> ;-) Это даже комментировать нечего, т.к. вы не имеете представления JA> о моих задачах, решаемых кристаллами AVR.

Сужу по Вашим отзывам о работе с Си. Вижу примитив.

JA> Впрочем, какие такие очень JA> грандиозные задачи вы собрались водружать на огромное количество JA> небольших и дешевых кристаллов, выпускаемых миллионными тиражами JA> многими изготовителями?

Бог миловал,- я никогда не занималась массовым выпуском чего-либо. Там особый, китайский менталитет. Товар мой штучный, умственный и дорогостоящий. Поэтому некода тратить время на разбирательства в нестандартном Си микроконтроллеров. Я просто возьму кристалл или даже целиком готовый модуль с firmware, чтобы для него писать на стандартном Си или другом ЯВУ, в котором как можно больше готовых прикладных наработок.

JA> .. Вообще-то, когда-то, очень давно, когда у нас не было вообще JA> никаких средств программирования, я с коллегой написал кросс-ассемблер JA> для 80-го, работающий на HP-1000 (потом я его портировал на СМ-4). А JA> потом я несколько лет разрабатывал приборы с применением уже настоящего JA> макроассемблера того же 80-го. До тех пор, пока у нас не появился JA> PL/M-80. JA> Вот с тех самых далеких пор я и стараюсь применять ЯВУ вместо Ассемблера.

У Вас случайна путаница Ассемблера с Макроассемблером? Разницу знаете? Или с машинных кодов сразу на ЯВУ пересели и теперь плюетесь в сторону ассемблера?

Всего Вам Хорошего Ольга

,-' Hello, Shapovalov Alexey Ivanovich! How is your connection today?

SI> Вот если бы была помощь по русски (приемлимо понимаю, но не люблю SI> английский), да и не помешали бы уроки для новичков, показывающие SI> последовательность действий при типовой работе.

А как же vimtutor?

`-._ --- Alexander Kocharin ---

,-' Hello, Igor Havtorin! How is your connection today?

IH> Я нигде не призывал сочинять "сверхкомпактный" сишный текст. IH> "Кульхацкерский" стиль одинаково вреден на любом языке, не надо пытаться IH> написать весь код функции одним сверхсложным выражением - разбей на IH> несколько простых частей.

"Да, каждая отдельная часть получается простой. Но при этом их взаимодействие становится гораздо более сложным ... Представьте себе человеческий мозг. Каждая его составляющая проста, но их взаимодействие превращает мозг в очень сложную систему. В этом-то всё и дело: целое больше частей. Если взять проблему, разделить ее пополам и сказать, что каждая половинка вполовину проще, то при этом вы игнорируете сложность интерфейса между половинками."

(c) Линус Тордвальдс, о недостатках концепции микроядра.

`-._ --- Alexander Kocharin ---

Здравствуйте, Уважаемый Jurgis!

Thu Jun 15 2006 17:36, Jurgis Armanavichius wrote to Olga Nonova:

ON>> Если Вы про AVRы или PICи, то в них есть специальный регистр, ON>> который показывает причину ресета, их там вроде четыре разных. ON>> В чем проблема-то? Ась?

JA> .... Этот регистр JA> нужно прочитать "так быстро, как возможно". Это даташит рекомендует.

Зачем? Очередной баг? Почему нельзя подождать до после стартапа, когда можно запускать нормальный анализ причин ресета? Пляски с бубном какие-то, как скажет Георгий.

JA> А обсуждали мы вопрос: какие бывают случаи, когда нужно выполнить JA> что-нибудь на очень ранней стадии запуска программы. Т.е. сразу JA> после ресета. Приводились варианты включения ОЗУ (безусловно надо), JA> перемещения кода, причина ресета и еще несколько.

Инициализацию памяти и стека производит стартап по указу директив линкера. Я не вижу необходимости туда вслезать со своими правилами. А причины ресета в приличных чипах хранятся бесконечно долго, если их конечно не затирать принудительно. Вот и получается- лазить в стартап практически незачем. Так только, поразвоекаться из академического интереса.

Всего Вам Хорошего Ольга

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Olga Nonova! You wrote in conference fido7.ru.embedded to Jurgis Armanavichius on Thu, 15 Jun 2006 14:21:10 +0000 (UTC):

ON>>> Hу, Вам виднее куда там надо лазить, в какие такие недра ON>>> компилятора. ON>>> Видно не впервой.

JA>> Так вот, объясняю еще раз, когда мне потребуется подправить JA>> стартап, я ни в какие "исходники компилятора" не полезу, а просто JA>> возьму ассемблерный текст этого самого стартапа и добавлю туда то, JA>> что понадобится. Ферштейн?

ON> Ферштейн-то оно фершетйн- мол, лазите в ассемблерный текст стартапа, ON> который требует от залезающего очень высокой квалификации в знании ON> как раз ассемблера и архитектуры кристалла. И после этого

Во-первых, стартап - далеко не всегда ассемблер. Во-вторых, его правка не требует высокой квалификации в ассемблере. В архитектуре кристалла и его обвязки квалификация нужна независимо от используемого языка.

ON> осмеливаетесь вовсеуслышание вещать, что ЯВУ облегчает жизнь, делает ON> программирование микроконтроллеров доступным даже глупому ребенку.

Эти глупости - порождение вашего коллективного разума. Тут никто такого не говорил.

ON> Hикаких проблем! Бери только Си- и вперед! А прикладники ембеда Вам ON> не верят. И очень правильно делают.

Это кто такие? Коллектив ваш?

JA>> Это так, ликбез... :-)

ON> Это профанация и уход от тяжелых вопросов. А они были.

Ответы на них - в обучении.

ON>>> Hапример, если бы Вы работали со строками то сразу обнаружили бы, ON>>> что ничего из stdlib.h практически нельзя использовать всвязи с ON>>> абсолютно варварским использованием SRAM. Ваши 4K AT128 ON>>> закончились бы мгновенно, не успев даже начаться.

JA>> Странно... Я работаю со строками в кристалле с 1К SRAM (Мега8) и JA>> все, почему-то, превосходно работает... Или вы имеете ввиду JA>> необходимость хоть немножечко разобраться в применяемом JA>> инструменте? Так я согласный!

ON> И конечно же снова ничего "не страшно" и превосходно работает? ON> Строка небось одна- "Hеllo world"? Я и говорю- примитивные вещи ON> делаете. И потом, поясните это самое Ваше "немножечко разобраться"? ON> Сколько надо потратить времени свежему программисту на Си, чтобы ON> наконец ошарашенно понять- стандартную библиотеку stdlib ON> использовать нельзя в микроконтроллерах с константами во флэше? Вы, ON> например, сколько потратили? Или по-примитивности программ пока не ON> дошли до этого этапа развития?

Вы бредите, а весь stdlib пересобирается или просто с нуля переписывается (причем в этом случае не весь, а только то, что нужно) очень быстро. Для сишного программиста это вообще не задача. А времени ему ну неделя от силы потребуется на то, чтобы разобраться как под новый контроллер писать. На ассемблере-то все равно все эти библиотеки по-новой писать.

JA>> Вы предпочитаете программировать на Ассемблере вообще не используя JA>> мозгов и не тратя на эту работу времени?

ON> Демагогия и уход от тяжелых вопросов бытия. Я не про ассемблер, а ON> про нестандартный Си в Ваших кристаллах. И эта нестандартность ON> сводит на нет все преимущества ЯВУ. Делает программы непереносимыми ON> и несопровождаемыми.

Отчасти. Но в куда как меньшей степени, чем программирование на ассемблере.

ON>>> Главное здесь - это нестандарт, а значит- увеличение time to ON>>> market и проблемы с переносимостью и сопровождением.

JA>> Бред. Упрощение работы увеличивает time to market... Точно бред.

ON> Да-а, трудно дается танкистам новый материал.

Так вылазте всем своим коллективом из танка и осваивайте.

JA>> ;-) Это даже комментировать нечего, т.к. вы не имеете представления JA>> о моих задачах, решаемых кристаллами AVR.

ON> Сужу по Вашим отзывам о работе с Си. Вижу примитив.

А показываете собственную безграмотность.

JA>> Впрочем, какие такие очень грандиозные задачи вы собрались JA>> водружать на огромное количество небольших и дешевых кристаллов, JA>> выпускаемых миллионными тиражами многими изготовителями?

ON> Бог миловал,- я никогда не занималась массовым выпуском чего-либо.

Да и вообще каким-либо выпуском.

ON> Там особый, китайский менталитет. Товар мой штучный, умственный и ON> дорогостоящий. Поэтому некода тратить время на разбирательства в ON> нестандартном Си микроконтроллеров. ON> Я просто возьму кристалл или даже целиком готовый модуль с firmware, ON> чтобы для него писать на стандартном Си или другом ЯВУ, в котором ON> как можно больше готовых прикладных наработок.

А еще лучше - просто готовое решение. Правильный подход, только зачем он тут?

ON> У Вас случайна путаница Ассемблера с Макроассемблером? Разницу ON> знаете?

Нет никакой разницы, есть добавление препроцессора.

ON> Или с машинных кодов сразу на ЯВУ пересели

Ассемблер - это не машинные коды.

ON> и теперь плюетесь в сторону ассемблера?

Ваш коллектив-то и его не знает.

dima

formatting link

Привет Jurgis!

15 Jun 06 17:02, Jurgis Armanavichius писал Alex Mogilnikov:

AM>> Вот сейчас специально посмотрел: весь стартап у меня AM>> составляет около 60 машинных инструкций.

JA> Hе много :-) Hо, я так понимаю, там "поднаготная" сложная? Типа, JA> всякие хитрости с инициализацией имеются?

Смотря что считать хитростью. Я почти прямо по тексту могу перечислить, что там есть: вектора исключений (8 джампов), инициализация конртоллера памяти (прсто запись чисел в его регистры), прыжок на новый адрес ПЗУ, включение кэшей, установка указателей стеков для 6 режимов, копирование .text и .data в озу, очистка .bss, инициализация кучи, вызов OSInit(), вызов конструкторов, вызов main(). Хитрость только в том, чтобы ничего не забыть и не перепутать. А то у меня когда-то адрес вершины кучи устанавливался до очистки bss и затем благополучно затирался нулем. Я до сих пор не понимаю, как оно вообще работало. :) Перестало работать после обновления компилятора - все malloc'и возвращали NULL. :)

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Я удалю твою жажду. Без возможности восстановления.

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Olga Nonova! You wrote in conference fido7.ru.embedded to Jurgis Armanavichius on Thu, 15 Jun 2006 15:14:29 +0000 (UTC):

ON>>> Если Вы про AVRы или PICи, то в них есть специальный регистр, ON>>> который показывает причину ресета, их там вроде четыре разных. ON>>> В чем проблема-то? Ась?

JA>> .... Этот регистр нужно прочитать "так быстро, как возможно". Это JA>> даташит рекомендует.

ON> Зачем? Очередной баг? Почему нельзя подождать до после стартапа,

Потому что так сделано специально. Изучайте даташиты всем коллективом.

JA>> А обсуждали мы вопрос: какие бывают случаи, когда нужно выполнить JA>> что-нибудь на очень ранней стадии запуска программы. Т.е. сразу JA>> после ресета. Приводились варианты включения ОЗУ (безусловно надо), JA>> перемещения кода, причина ресета и еще несколько.

ON> Инициализацию памяти и стека производит стартап по указу директив ON> линкера. Я не вижу необходимости туда вслезать со своими правилами.

Особенно внешнюю память... И откуда авторам стартапа знать как ее удобно подключить в конкретном случае?

ON> А причины ресета в приличных чипах хранятся бесконечно долго, если

А в неприличных надо прочитать сразу. Что (при нужде) не есть большая проблема.

ON> их конечно не затирать принудительно. Вот и получается- лазить в ON> стартап практически незачем. Так только, поразвоекаться из ON> академического интереса.

Вам так точно туда лазит незачем.

dima

formatting link

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required