Страница 90 из 130

Re: Программирование STM8

Добавлено: Вт авг 13, 2019 07:58:49
dosikus
[uquote="jcxz",url="/forum/viewtopic.php?p=3681732#p3681732"]А после года - что?[/uquote]

Снова регистрируй. Лицензия не разовая, но с привязкой к железу, но без ограничений на кол-во.
А интерфейс там был какой-то вырвиглаз.
Интерфейс у STVD , космик лишь компилятор.
Да не спорю, но даже на сейчас единственный рабочий вариант, с отладчиком и вменяемым компилятором...

Re: Программирование STM8

Добавлено: Вт авг 13, 2019 08:10:57
ПростоНуб
dosikus, ну уж точно не единственный. SDCC еще с 3.7 стал вполне конкуретноспособным. А 3.9 по ряду параметров даже лучше Cosmic.
Просто многим лениво прикручивать его и отладчик к своему любимому IDE самостоятельно.

Re: Программирование STM8

Добавлено: Вт авг 13, 2019 08:18:08
Z_h_e
Установил IAR новый. Забросил старый проект (я хотел на основе его сделать другой), и создал новый. Глянул диззасмблер на ответственные по скорости участки кода, буквально пару мест. Так там и инструкции inc mem есть и функция заинлайнилась. Возможно у меня так компиллилось раньше из-за того что проект перетянут из IAR версии 2 или чего-то там нарукожопил или все вместе.

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

Re: Программирование STM8

Добавлено: Вт авг 13, 2019 08:32:13
dosikus
ПростоНуб, SDCC вообще не вариант ни разу, сырое г.

Re: Программирование STM8

Добавлено: Вт авг 13, 2019 09:02:03
ПростоНуб
dosikus, Вы часом не ксендз? Или поп? Вроде только они способны заявить догму, не приводя вообще никаких аргументов )))
Я бы не писал про SDCC, если бы сам с ним не работал. Определенная сырость наблюдалась до версии 3.6 включительно. После 3.7 SDCC вполне приемлем для использования. И я вижу в нем немало плюсов, по сравнению с Cosmic, при компиляции для STM8. Сравнительное тестирование, надеюсь, сами нагуглите. А открытый код и возможность написания собственных патчей уже очень многого стоит.

Re: Программирование STM8

Добавлено: Вт авг 13, 2019 10:29:39
dosikus
Мне ваши звания ни к чему, и пишу лишь о том что пользую. Вот когда оно вылезет хотя бы к уровню космик, тогда и поговорим.
Боюсь только тогда мне уже STM8 и на не нужны будут...

Re: Программирование STM8

Добавлено: Вт авг 13, 2019 11:12:33
Мурик
dosikus писал(а):Мне ваши звания ни к чему, и пишу лишь о том что пользую.
А все что не пользуете по вашему мнению г..но? :)))
dosikus писал(а):Вот когда оно вылезет хотя бы к уровню космик, тогда и поговорим.
Сначала попользуйте чтобы сравнить. :)))

Re: Программирование STM8

Добавлено: Вт авг 13, 2019 13:20:39
dosikus
Мурик, у тебя всегда отсутствовала логика напрочь.
Если бы я не пользовал SDCC так и не писал бы о нем.
Не понятен здесь лишь только твой вброс - ни стм8 ни космик ни SDCC ты не знаешь от слова совсем, однако влезть со своим обычным срачем ты влез...
Потом как обыкновенно побежишь стучать администрации- меня обидели...

Re: Программирование STM8

Добавлено: Вт авг 13, 2019 14:12:12
Мурик
dosikus писал(а):ни стм8 ни космик ни SDCC ты не знаешь от слова совсем
Почему вы так решили?
То что я не обсуждаю на форуме STM8 не значит что я с ними не работал.

Re: Программирование STM8

Добавлено: Вт авг 13, 2019 15:47:13
jcxz
[uquote="dosikus",url="/forum/viewtopic.php?p=3681839#p3681839"][uquote="jcxz",url="/forum/viewtopic.php?p=3681732#p3681732"]А после года - что?[/uquote]
Снова регистрируй. Лицензия не разовая, но с привязкой к железу, но без ограничений на кол-во.[/uquote]
И нафига такое счастье??? Я эту лицензию месяц или два ждал. И так каждый год что-ль? :shock:

[uquote="dosikus",url="/forum/viewtopic.php?p=3681839#p3681839"]Да не спорю, но даже на сейчас единственный рабочий вариант, с отладчиком и вменяемым компилятором...[/uquote]
Если размер флеша МК <= размера пробной версии с ограничением по размеру кода - то это и есть правильный рабочий вариант.

Re: Программирование STM8

Добавлено: Вт авг 13, 2019 16:05:31
dosikus
Какой месяц? В будни - час , два отсилы.

Re: Программирование STM8

Добавлено: Вт авг 13, 2019 18:16:18
Chettuser
Я лицензию получил через 2 или 3 часа после запроса. В рабочий день. Сделал ради любопытства - у меня нет STM8.
Собственно вопрос завис:
Изображение

Немного офтопа:
СпойлерПочему выбрал эту среду - да потому что маленькая, и вроде отладчик работает. Столкнулся с тем, что отладчик в последнем Атоллике у меня не работал совсем с достаточно известной проблемой ("Failure at line 13..."), о чем есть соответствующая тема на форуме Атоллика, но никто там так и не нашёл толковой причины её возникновения. Работает только одна из предыдущих версий 9.0.2. Очевидно, это связано с драйверами и версией gdb-сервера. Пытался привязать к последней версии Атоллика предыдущий gdb-сервер, не вышло - что то они там накрутили.
Emblocks/Embitz благополучно сдох, и поддержки новых камней более не предвидится.
IAR... Keil... хмм... не люблю толстый софт.
Выбрал на пробу этот (IDEA CXM...), но вот засада - нет поддержки новых камней. Интересует серия G.

Re: Программирование STM8

Добавлено: Ср авг 14, 2019 06:20:42
oleg110592
в последних проектиках, типа "курятник", для STM8S003 и N76E003 использую SDCC - вполне устраивает. Размер прошивки несколько больше, похоже оптимизатор хуже, но можно самому пооптимизировать, хотя флэша в обоих микроконтроллерах с головой.
С битами SDCC да делает по тупому, типа:

Код: Выделить всё

    PB_DDR|=(LED);
    ldw x, #0x5007
    ld  a, (x)
    or  a, #0x20
    ld  (x), a
но подключаешь pip файлик и все в порядке:

Код: Выделить всё

    PB_DDR|=(LED);
    bset 0x5007,#5
http://www.count-zero.ru/2018/stm8_assembler/

Re: Программирование STM8

Добавлено: Ср авг 14, 2019 06:57:37
jcxz
[uquote="dosikus",url="/forum/viewtopic.php?p=3682089#p3682089"]Какой месяц? В будни - час , два отсилы.[/uquote]
Видимо мне не повезло и все были в отпуске. :dont_know:

Re: Программирование STM8

Добавлено: Ср авг 14, 2019 11:18:15
dosikus
[uquote="Chettuser",url="/forum/viewtopic.php?p=3682157#p3682157"]Я лицензию получил через 2 или 3 часа после запроса. В рабочий день. Сделал ради любопытства - у меня нет STM8.
Собственно вопрос завис:[/uquote]

Речь именно о стм8...

[uquote="oleg110592",url="/forum/viewtopic.php?p=3682300#p3682300"]N76E003[/uquote]
А здесь только кайло, и паки под них и отладка...

Re: Программирование STM8

Добавлено: Чт авг 15, 2019 17:48:19
Z_h_e
Доброго времени суток.
Вопрос опять по IAR.
Вот код входа в обработчик прерываний

Код: Выделить всё

   \                     _interrupt_14:
   \   000000 8A           PUSH      CC
   \   000001 84           POP       A
   \   000002 A4 BF        AND       A, #0xbf
   \   000004 88           PUSH      A
   \   000005 86           POP       CC
   \   000006 3B ....      PUSH      S:?b3
   \   000009 3B ....      PUSH      S:?b2
   \   00000C 3B ....      PUSH      S:?b1
   \   00000F 3B ....      PUSH      S:?b0
   \   000012 3B ....      PUSH      S:?b7
   \   000015 3B ....      PUSH      S:?b6
   \   000018 3B ....      PUSH      S:?b5
   \   00001B 3B ....      PUSH      S:?b4
Сначала выполняется странное действо через стек по сбросу бита 6 регистра статуса, который всегда имеет значение 0 . Затем на стек сбрасываются охрениард виртуальных регистров и ни один в обработчике не используется. Оптимизация на максимуме. Я знаю что для GNU AVR есть макрос который создает обработчик без сохранения регистров, есть ли в IAR такая возможность? Я кроме вот этого ничего не нашел, может опять в книге вижу фигу?

Код: Выделить всё

For example:
#include <iostm8s208mb.h>
#pragma vector = UART1_R_RXNE_vector  /* Symbol from I/O */
 __interrupt void MyInterruptRoutine(void)
{  /* Do something */} 

Re: Программирование STM8

Добавлено: Чт авг 15, 2019 18:33:04
Chettuser
[uquote="dosikus",url="/forum/viewtopic.php?p=3682460#p3682460"]Речь именно о стм8...[/uquote]
Именно о ней, просто из любопытства попробовал получить файлик. :)

Re: Программирование STM8

Добавлено: Пт авг 16, 2019 15:07:45
jcxz
[uquote="Z_h_e",url="/forum/viewtopic.php?p=3683265#p3683265"]Сначала выполняется странное действо через стек по сбросу бита 6 регистра статуса, который всегда имеет значение 0 . Затем на стек сбрасываются охрениард виртуальных регистров и ни один в обработчике не используется.[/uquote]
Видимо у Вас в коде ISR все эти регистры используются. Или где-то в ISR есть вызов функции, который невозможно заинлайнить. А значит - компилятор, согласно соглашениям вызова, должен сохранить все регистры, которые не сохраняются вызываемой функцией (scratch registers). Что он и делает.
И любой компилятор, следующий аналогичным соглашениям вызова, должен так делать. Хоть IAR, хоть GCC - он тут не виноват.
Чтобы избавиться от этого (если это из-за функции) дайте возможность заинлайнить функцию компилятору. Или вообще от неё избавьтесь.
Если в IAR-е есть возможность компиляции всего проекта как единого файла, то так тоже можно сделать: так компилятор должен заинлайнить даже функцию, находящуюся в другом си-файле (не помню только - есть такой ключ в IAR for STM8 или нет?).

[uquote="Z_h_e",url="/forum/viewtopic.php?p=3683265#p3683265"]Я знаю что для GNU AVR есть макрос который создает обработчик без сохранения регистров, есть ли в IAR такая возможность?[/uquote]
А при чём тут AVR? Тема вроде про STM8... :dont_know:
Можно сделать ISR без сохранения регистров (на асме), только это приведёт к потенциальным багам из-за порчи регистров в прерывании.

Добавлено after 3 minutes 54 seconds:
[uquote="Z_h_e",url="/forum/viewtopic.php?p=3683265#p3683265"]Я кроме вот этого ничего не нашел, может опять в книге вижу фигу?[/uquote]
Всё есть в мануале. Раздел называется "Calling convention".

Re: Программирование STM8

Добавлено: Пт авг 16, 2019 15:24:19
Z_h_e
Я написал что не используются. Я уже написал на асме обработчик и это решило проблему нехватки времени реакции на внешнее воздействие. Но если обработчик оставлять на асме, придется переписывать его, чтобы избавится от магических цифр. Например пока не знаю в асме обратиться к полю структуры без использования смещения. Но это вопрос о другом.

Avr не при чем.

Re: Программирование STM8

Добавлено: Пт авг 16, 2019 15:47:08
ПростоНуб
[uquote="jcxz",url="/forum/viewtopic.php?p=3683840#p3683840"]компилятор, согласно соглашениям вызова, должен сохранить все регистры, которые не сохраняются вызываемой функцией (scratch registers). Что он и делает.[/uquote]
Прошу прощения, но в STM8S все регистры (кроме, само собой, SP) при прерывании сохраняются в стек аппаратно, вне зависимости от компилятора и того, используются ли эти регистры или нет.
Соответственно, команда IRET загружает все регистры из стека обратно.