IPB

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> отладка для stm8, stm8flash допиливание
_pasha
сообщение 20.10.2015, 17:35
Сообщение #1


тот самый
Иконка группы

Группа: Мод
Сообщений: 13003
Регистрация: 24.11.2009
Из: Харьковская обл., UA
Пользователь №: 25



Привет.
Начало тут http://electronix.ru/forum/index.php?s=&am...t&p=1374082

Кладу начальный вариант чуть доработанного флешера
Прикрепленный файл  stm8flash.zip ( 162,97 килобайт ) Кол-во скачиваний: 26

на рассмотрение публики и для замечаний и предложений

Плюхи:
1. Сброс проца по выходу. Ващета надо ключом, но пока безусловно.
2. Консольный режим для debug_printf
Подробнее
2.1. Где-то в мейкфайле
включаем -DDBGLEVEL=1
0 - ничего не выводит
остальные градации на усмотрение

2.2.А в это время где-то в хедерах girl_crazy.gif
Код
#if defined(DBGLEVEL) && (DBGLEVEL != 0)
extern void __debug(const char messg[]);
#define debug(n) __debug(n)
#else
#define debug(n)
#endif

2.3. А в это время где-то в коде girl_crazy.gif girl_crazy.gif
Код
#if defined(DBGLEVEL) && (DBGLEVEL != 0)
#define CON_SYMB (*(volatile char *)0x3FF)
void __debug(const char messg[])
{
    const char *p = messg;
    while(*p)
    {
        CON_SYMB = *p++;
        while(CON_SYMB) idle(); // не забываем объявить тело суперлупа
    }
}
#endif


2.4. Соображения, почему 0x03FF
при вызове main() SDCC - он же ж тупой, и это хорошо, поскольку он декрементировал стек на 2 clapping.gif
ящетаю, шо ето прекрасно.

2.5. Что мы хотим этим всем сказать. Все (или почти все) знают как работает дебажный printf под ITM у stm32
Теперь и у нас такая же фича, т.е.
2.5.1. Записали байт в 0x03ff
2.5.2. Подождали пока его обнулят извне
2.5.3. Повторили сколько нужно.
3. Юзабилити
Код
$ ./stm8flash
Usage: ./stm8flash [-d address][-c programmer] [-p partno] [-s memtype] [-b bytes] [-r|-w|-v] <filename>
Additional option -d - open debug console for use in swim
     and poll one byte at specified address

$ ./stm8flash -c stlink -p stm8s003 -d 03ff
Determine FLASH area
Now we in console mode ready to poll address 0x 3FF. Press any key to exit
ddebug is enabled.debug is enabled.debug is enabled.n
*Canceled*


Нелинуксоидов просьба не беспокоить
кстати, никогда не писал под макось. как там keypressed() сделать?

Форк грязный, медленный, но работает.
Велкам на Эльх или сюда для предложений куда его допилить.

4.Неустранимые вещи:
4.1. операции wotf rotf останавливают cpu. Таким образом, на быстродействие это все влияет не лучшим образом.
вернее, с rotf еще можно пошаманить, избавиться от лишних записей в обслуге debug module


еще забыл. добавил в валидные расширения hex-формата кроме *.ihx родной обычный *.hex, ибо это одуреть можно... ihx...
Перейти в начало страницы
 
+Цитировать сообщение
Harbinger
сообщение 21.10.2015, 7:56
Сообщение #2


посіпака Хунти
Иконка группы

Группа: Мод
Сообщений: 15350
Регистрация: 21.11.2009
Из: Киев
Пользователь №: 11



ihx == Intel HeX. smile.gif
Перейти в начало страницы
 
+Цитировать сообщение
_pasha
сообщение 21.10.2015, 8:44
Сообщение #3


тот самый
Иконка группы

Группа: Мод
Сообщений: 13003
Регистрация: 24.11.2009
Из: Харьковская обл., UA
Пользователь №: 25



Цитата(Harbinger @ 21.10.2015, 8:56) *
ihx == Intel HeX. smile.gif

ага, типа hex традиционно не Intel HeX girl_crazy.gif
---
попробовал самый тяжкий printf() - всего-то 2кб весит. Можно вообще без зазрения совести юзать. Это вам не АВР с тесными штанишками.

надо по debuglevel включать тяжесть оного.
зато как приятно, когда вообще ничего нет - а консоль ужо есть, скорость поднятия прерываний и прочего близка к скорости света girl_crazy.gif
Перейти в начало страницы
 
+Цитировать сообщение
_pasha
сообщение 10.11.2015, 10:08
Сообщение #4


тот самый
Иконка группы

Группа: Мод
Сообщений: 13003
Регистрация: 24.11.2009
Из: Харьковская обл., UA
Пользователь №: 25



Цитата
при вызове main() SDCC - он же ж тупой, и это хорошо, поскольку он декрементировал стек на 2

оказалось, что он ни разу не тупой.
просто создавать или нет переменную для возврата из main() он решает исходя из погоды на Марсе.
т.е. при появлении подозрительного вывода нужно это место зарезервировать
Код
int main(void)
{
  volatile int dummy;
// далее по коду
}

alcoholic.gif дурдом
т.е. sdcc обнаружил, что до возврата дело не дойдет, unreachable code написал.
но в прошлом проекте - было то же самое. хто ж оттуда выходит... а переменную таки создал
Перейти в начало страницы
 
+Цитировать сообщение
_pasha
сообщение 20.11.2015, 9:10
Сообщение #5


тот самый
Иконка группы

Группа: Мод
Сообщений: 13003
Регистрация: 24.11.2009
Из: Харьковская обл., UA
Пользователь №: 25



Не покидает желание запустить сабжа на малине.
Код
$uname -a
Linux raspberry 3.10.19+ #1 PREEMPT Tue Dec 3 19:11:42 MSK 2013 armv6l GNU/Linux

запустил под gdb
обнаружил пренеприятнейшую вещь
Код
while((c = getopt (argc, argv, "r:w:v:nc:p:s:b:d:")) != -1) {

оказалось что этот парсер по концовке выдает с = 0xFF и в
Код
switch(с)
он вываливался в default: и соответственно пишет usage тратата и exit -1
это говорит о том, что какого-то хера в тамошнем gcc char у нас по умолчанию unsigned alcoholic.gif
это пиздец. Сколько еще глюкавых программ из-за этого дебилизма - можно только догадываться.
подправил на signed char c - уже зашевелилось
Перейти в начало страницы
 
+Цитировать сообщение
Mr.Yuran
сообщение 17.3.2016, 16:27
Сообщение #6


Активный участник
***

Группа: Пользователи
Сообщений: 4564
Регистрация: 28.2.2015
Пользователь №: 1190



Паш, говорят, космик стал нахаляву smile.gif
Может, нуево уже, этот сдцц?
Цитата
New Cosmic CXSTM8 C-compiler completes free and unlimited development toolchain
Highly featured compiler supports entire STM8 family up to 128KB, with no restrictions on code size
Design-start investment cut to just $8 for STM8S-DISCOVERY kit hardware

Хотя третий пункт какой-то подозрительный

Сообщение отредактировал Mr.Yuran - 17.3.2016, 16:29
Перейти в начало страницы
 
+Цитировать сообщение
_pasha
сообщение 17.3.2016, 19:02
Сообщение #7


тот самый
Иконка группы

Группа: Мод
Сообщений: 13003
Регистрация: 24.11.2009
Из: Харьковская обл., UA
Пользователь №: 25



hi.gif
stm8 как таковые интересуют только в виде stm8s003. А для этого ведь все есть. Почти все. girl_crazy.gif
Осталось таки посидеть с вопросами шустроты консоли,
допилить stm8flash для stlinkv2
и чтобы на малине все работало

автор похоже подзабил на свое детище.

и к тому же космик от нормального Си без "плюшечек" еще дальше чем сдцц. Т.е. там тупая копипаста не проходит.
Перейти в начало страницы
 
+Цитировать сообщение
_pasha
сообщение 3.5.2016, 21:45
Сообщение #8


тот самый
Иконка группы

Группа: Мод
Сообщений: 13003
Регистрация: 24.11.2009
Из: Харьковская обл., UA
Пользователь №: 25



hi.gif
В общем, решил я задачку для stlinkv2
Гемора оказалось больше чем дофига. куча особенностей всяких. задолбало alcoholic.gif
Еще остался глюк. Подопытный камень как-то строго через раз пишет.
Раз стартует, раз - болт
Если не победю - выложу уже так как есть.
Перейти в начало страницы
 
+Цитировать сообщение
_pasha
сообщение 4.5.2016, 7:39
Сообщение #9


тот самый
Иконка группы

Группа: Мод
Сообщений: 13003
Регистрация: 24.11.2009
Из: Харьковская обл., UA
Пользователь №: 25



Прикрепленный файл  stm8flash.zip ( 109,17 килобайт ) Кол-во скачиваний: 24

вот промежуточная.

остальное позже

Перейти в начало страницы
 
+Цитировать сообщение
Burner
сообщение 7.5.2016, 13:07
Сообщение #10


Активный участник
***

Группа: шизо
Сообщений: 1409
Регистрация: 17.1.2010
Из: Винница
Пользователь №: 84



Паша, или мож., кто другой в курсе - какое у STM8S быстродействие, т. е. сколько MIPS, или сишных команд в секунду?
Как-то я прикидывал, у меня получалось порядка 1,5 MIPS на 16 МГц. Поэтому я был уверен, что максимальное быстродействие STM8 сильно ниже такового у AVR. Потом мне кто-то сказал, что STM8 намного быстрее 1,5 MIPS.
Кто-нить проверял время исполнения программ?
Перейти в начало страницы
 
+Цитировать сообщение
_pasha
сообщение 7.5.2016, 14:49
Сообщение #11


тот самый
Иконка группы

Группа: Мод
Сообщений: 13003
Регистрация: 24.11.2009
Из: Харьковская обл., UA
Пользователь №: 25



20DMIPS @ 24 MHz
вроде так у них написано
то бишь 13.3 на 16-ти
производительность ниже чем у авр, по идее, зато есть деление за 17 тактов и маленький контекст задачи.
их сложно сравнивать
Перейти в начало страницы
 
+Цитировать сообщение
ViKo
сообщение 7.5.2016, 16:11
Сообщение #12


cat maidanus (опозиціонер)
***

Группа: Пользователи
Сообщений: 6631
Регистрация: 19.4.2011
Пользователь №: 345



А что, мипсы - это сишные команды? От это твою мать...!
Если, все-таки, миллионы команд за секунду, то глянув в документацию и разглядев, за сколько тактов выполняется команда, может снизойти просветление мозгов.
Що, так и написано, DMIPS?

Сообщение отредактировал ViKo - 7.5.2016, 16:12
Перейти в начало страницы
 
+Цитировать сообщение
_pasha
сообщение 7.5.2016, 22:07
Сообщение #13


тот самый
Иконка группы

Группа: Мод
Сообщений: 13003
Регистрация: 24.11.2009
Из: Харьковская обл., UA
Пользователь №: 25



Цитата(ViKo @ 7.5.2016, 17:11) *
А что, мипсы - это сишные команды? От это твою мать...!
Если, все-таки, миллионы команд за секунду, то глянув в документацию и разглядев, за сколько тактов выполняется команда, может снизойти просветление мозгов.
Що, так и написано, DMIPS?

Цитата
0,29 DMips/Mhz
– similar to some well known 16-bit CPU
performance –
16Mips
at
16MHz


в первоисточнике. http://www.emcu.it/STM8/STM-STM8.pdf

т.е. кто то гдето ошибается.
но мне эти цифры ни о чем не говорят. я точно знаю, что можно делать на них а что нельзя, - оценивая систему в целом, как и большинство себе подобных.
Перейти в начало страницы
 
+Цитировать сообщение
Burner
сообщение 8.5.2016, 2:37
Сообщение #14


Активный участник
***

Группа: шизо
Сообщений: 1409
Регистрация: 17.1.2010
Из: Винница
Пользователь №: 84



Спасибо, это уже кое-что.
Цитата
А что, мипсы - это сишные команды?

Не-а. Кста, Ваш вопрос подтверждает одну мою догадку.
Перейти в начало страницы
 
+Цитировать сообщение
ViKo
сообщение 8.5.2016, 8:11
Сообщение #15


cat maidanus (опозиціонер)
***

Группа: Пользователи
Сообщений: 6631
Регистрация: 19.4.2011
Пользователь №: 345



Цитата(Burner @ 8.5.2016, 3:37) *
Кста, Ваш вопрос подтверждает одну мою догадку.

Что Дристоны != Мипсам? Да, это нужно крепко запомнить. laughter2.gif
Перейти в начало страницы
 
+Цитировать сообщение
Burner
сообщение 19.5.2016, 9:05
Сообщение #16


Активный участник
***

Группа: шизо
Сообщений: 1409
Регистрация: 17.1.2010
Из: Винница
Пользователь №: 84



Да на здоровье smile.gif. Но это Ваша догадка. В мою Вы даже близко не попали.
Перейти в начало страницы
 
+Цитировать сообщение
Mr.Yuran
сообщение 19.5.2016, 9:14
Сообщение #17


Активный участник
***

Группа: Пользователи
Сообщений: 4564
Регистрация: 28.2.2015
Пользователь №: 1190



А я был неприятно удивлен, сколько команд (и тактов) нужно СМ3 для цикла while(pause--){}
После МСПшки, где ещё пару нопов нужно свтавить, чтобы 5 тактов на круг

Сообщение отредактировал Mr.Yuran - 19.5.2016, 9:15
Перейти в начало страницы
 
+Цитировать сообщение
Burner
сообщение 19.5.2016, 10:08
Сообщение #18


Активный участник
***

Группа: шизо
Сообщений: 1409
Регистрация: 17.1.2010
Из: Винница
Пользователь №: 84



А СМ3 - это что?
И сколько тактов получилось на 1 цикл?
Перейти в начало страницы
 
+Цитировать сообщение
Mr.Yuran
сообщение 19.5.2016, 10:14
Сообщение #19


Активный участник
***

Группа: Пользователи
Сообщений: 4564
Регистрация: 28.2.2015
Пользователь №: 1190



Цитата(Burner @ 19.5.2016, 11:08) *
А СМ3 - это что?
И сколько тактов получилось на 1 цикл?

C[ortex]M3

delay(8000000) при 24МГц обеспечивал моргание (переключение) светодиода раз в секунду.

Сообщение отредактировал Mr.Yuran - 19.5.2016, 10:32
Перейти в начало страницы
 
+Цитировать сообщение
ViKo
сообщение 19.5.2016, 10:38
Сообщение #20


cat maidanus (опозиціонер)
***

Группа: Пользователи
Сообщений: 6631
Регистрация: 19.4.2011
Пользователь №: 345



У меня - 4 такта.
Код
#pragma push
#pragma O3
__forceinline void FourCycl_delay(uint32_t FC)
{
__asm {
LOOP:
    SUBS FC, FC, #1
    BNE LOOP
  }
}
#pragma pop


Цитата(Mr.Yuran @ 19.5.2016, 11:14) *
delay(8000000) при 24МГц обеспечивал моргание (переключение) светодиода раз в секунду.

И сколько это в тактах? 3, что ли?
Перейти в начало страницы
 
+Цитировать сообщение

2 страниц V   1 2 >
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 18.2.2018, 10:28