|
STM8, кто нибудь использует? |
|
|
|
 |
Ответов
|
May 1 2010, 23:00
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Посмотрел я как компилируется моя функция разбора данных. Лучше всего повел себя космик! Для иллюстрации выдрал кусочек в отдельную функцию Код void Set12(u8_t id, u16_t v); void test_1(u8_t *ptr) { u8_t id, ext; ext = ptr[0]; id = ptr[1]; Set12((id >> 4) + ext*8, ptr[2] | ((id & 0x0F)<<8) ); } IAR что то перемудрил со сдвигами, даже разбираться в лом! Код \ test_1: \ 000000 9093 LDW Y, X 119 u8_t id, ext; 120 ext = ptr[0]; 121 id = ptr[1]; \ 000002 5C INCW X \ 000003 F6 LD A, (X) \ 000004 B700 LD S:?b0, A 122 Set12((id >> 4) + ext*8, ptr[2] | ((id & 0x0F)<<8) ); \ 000006 5F CLRW X \ 000007 41 EXG A, XL \ 000008 B600 LD A, S:?b0 \ 00000A 01 RRWA X, A \ 00000B A40F AND A, #0xf \ 00000D 02 RLWA X, A \ 00000E 58 SLLW X \ 00000F 58 SLLW X \ 000010 58 SLLW X \ 000011 58 SLLW X \ 000012 58 SLLW X \ 000013 58 SLLW X \ 000014 58 SLLW X \ 000015 58 SLLW X \ 000016 BF00 LDW S:?w1, X \ 000018 93 LDW X, Y \ 000019 1C0002 ADDW X, #0x2 \ 00001C F6 LD A, (X) \ 00001D 5F CLRW X \ 00001E 97 LD XL, A \ 00001F 01 RRWA X, A \ 000020 BA00 OR A, S:?b3 \ 000022 01 RRWA X, A \ 000023 BA00 OR A, S:?b2 \ 000025 01 RRWA X, A \ 000026 90F6 LD A, (Y) \ 000028 48 SLL A \ 000029 48 SLL A \ 00002A 48 SLL A \ 00002B B700 LD S:?b1, A \ 00002D B600 LD A, S:?b0 \ 00002F 4E SWAP A \ 000030 A40F AND A, #0xf \ 000032 BB00 ADD A, S:?b1 \ 000034 CC0000 JP L:Set12 123 } Райзонанс, много лишних пересылок. Код ; FUNCTION ?test_1 (BEGIN) ; Register-parameter ptr (XW) is relocated (auto) ; SOURCE LINE # 122 0000 89 PUSHW X 0001 89 PUSHW X ; SOURCE LINE # 125 0002 F6 LD A,(X) 0003 6B02 F LD (002H,SP),A ; [ ext ] ; SOURCE LINE # 126 0005 1E03 F LDW X,(003H,SP) ; [ ptr ] 0007 E601 LD A,(001H,X) 0009 6B01 F LD (001H,SP),A ; [ id ] ; SOURCE LINE # 127 000B A60F LD A,#00FH 000D 1401 F AND A,(001H,SP) ; [ id ] 000F 5F CLRW X 0010 95 LD XH,A 0011 BF03 F LDW ?CH.w,X 0013 1E03 F LDW X,(003H,SP) ; [ ptr ] 0015 B605 F LD A,?CH 0017 B703 F LD ?BH,A 0019 E602 LD A,(002H,X) 001B B704 F LD ?BL,A 001D BE02 F LDW X,?BH.w 001F 7B02 F LD A,(002H,SP) ; [ ext ] 0021 48 SLL A 0022 48 SLL A 0023 48 SLL A 0024 B703 F LD ?BH,A 0026 7B01 F LD A,(001H,SP) ; [ id ] 0028 4E SWAP A 0029 A40F AND A,#00FH 002B BB03 F ADD A,?BH 002D CD0000 F CALL ?Set12 0030 5B04 ADD SP,#004H 0032 81 RET Космик - лучший код. Код 477 021b _test_1: 478 021b 89 pushw x 479 021c 5203 subw sp,#3 480 00000003 OFST: set 3 482 ; 124 ext = ptr[0]; 483 021e f6 ld a,(x) 484 021f 6b02 ld (OFST-1,sp),a 485 ; 125 id = ptr[1]; 486 0221 e601 ld a,(1,x) 487 0223 6b03 ld (OFST+0,sp),a 488 ; 126 Set12((id >> 4) + ext*8, ptr[2] | ((id & 0x0F)<<8) ); 489 0225 a40f and a,#15 490 0227 1604 ldw y,(OFST+1,sp) 491 0229 97 ld xl,a 492 022a 90e602 ld a,(2,y) 493 022d 02 rlwa x,a 494 022e 89 pushw x 495 022f 7b04 ld a,(OFST+1,sp) 496 0231 48 sll a 497 0232 48 sll a 498 0233 48 sll a 499 0234 6b03 ld (OFST+0,sp),a 500 0236 7b05 ld a,(OFST+2,sp) 501 0238 4e swap a 502 0239 a40f and a,#15 503 023b 1b03 add a,(OFST+0,sp) 504 023d cd0000 call _Set12 506 0240 85 popw x 507 ; 127 } 508 0241 5b05 addw sp,#5 509 0243 81 ret Это только маленький кусочек. В общем на сейчас Космик выигрывает при функциях посложнее. Например в кусочке Set8((Id & 0x1F)+Ext*32,*ptr++); стал вызывать билиотечную функцию сдвига, космик и IAR обошлись без нее! У IAR возникают каие то артефакты!!! Про dec он вообще похоже не подозревает  Еще и такой код if (!--Len) return; скомпилировал как Код \ 0000A1 B600 LD A, S:?b8 \ 0000A3 ABFF ADD A, #0xff \ 0000A5 B700 LD S:?b8, A \ 0000A7 4F CLR A \ 0000A8 B100 CP A, S:?b8 \ 0000AA 2600 JRNE ??lb_3 \ 0000AC CC0000 JP L:??parser_3 Цитата К тому же IAR не использует стек, а использует виртуальные регистры. Что IMHO для этого ядра криво! Здесь я был не прав! Это здорово улучшаед код - особенно при использовании специфической адресации Indirect и Indexed Inderec - получаются аппаратные указатели.Так что когда IAR полечат от артефактов код у него будет хороший! Райзонанс тоже использует виртуальные регистры, А космик стек.
|
|
|
|
|
May 3 2010, 07:48
|
Местный
  
Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219

|
Да уж...  Сильно улучшает... if (!--Len) вообще можно реализовать одной инструкцией Код dec S:b8 jrne ??b3 ..... Или нет? PS: Видно первая версия еще очень сырая.
Причина редактирования: Совершенно бездумное цитирование!
|
|
|
|
|
May 3 2010, 14:58
|
Местный
  
Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219

|
Цитата(Xenia @ May 3 2010, 15:48)  Это очевидно. Большинство ошибок эффективно выявляются и устраняются только в процессе интенсивной эксплуатации большим количеством пользователей, как бы тщательно не тестировали продукт сами производители. А раз эта версия первая из вышедших на рынок, то погрешностей в ней можно ожидать много. Один номер версии о многом говорит - EWSTM8-1100 - нолик в миноре обычно не бывает, т.к. букве A соответствует единичка. Вскорости ждем следующую версию EWSTM8 за номером 1.20. Она уже объявлена к выпуску в ближайшие 2-3 месяца на японском сайте IAR - http://www.iar.com/website1/1.0.1.0/495/3/На английском такого упоминания нет. Там кое-что разобрать можно, даже не владея японским языком или перевести с помощью электронного переводчика. Спасибо!!! Будем ждать. Хотя я на сегодняшний день остановился на комплексе SVDT-Cosmic. Поскольку я пишу программы на ассемблере, то ассемблер у Cosmic мне понравился больше остальных.
|
|
|
|
|
May 3 2010, 16:29
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(Xenia @ May 3 2010, 20:01)  А разве есть разница на каком ассемблере писать?  Разница большая! Вот возьмите хотя бы IARовский ассемблер - там возможно использовать С препроцессор #ifdef #include и т.д. Возможности насписания макросов отличаются. Да и линкер все равно нужен. Если писать на асме - я бы выбрал IAR - хороший линкер, С препроцессор, мароксы обынчые для разных архитектур...
|
|
|
|
|
May 3 2010, 16:57
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(KRS @ May 3 2010, 19:29)  Разница большая! Вот возьмите хотя бы IARовский ассемблер - там возможно использовать С препроцессор 'С' препроцесср, на то он и препроцессор, что вещь совершенно независимая и способен обрабатывать любые тексты, включая не только любой ASM, но вообще литературные тексты. Другое дело, что у макроассемблеров бывает наворотов и много поболее, только едва-ли более одного из сотни асмописателей знают о них  .
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
Сообщений в этой теме
KRS STM8 Apr 13 2010, 11:27 zksystem Я пользую STM8, только CAN в них не юзал. Обидно ч... Apr 13 2010, 13:06 Pat Цитата(zksystem @ Apr 13 2010, 15:21) Я п... Apr 13 2010, 18:52  KRS Цитата(Pat @ Apr 13 2010, 23:07) Можно ли... Apr 13 2010, 20:02   sonycman Цитата(KRS @ Apr 14 2010, 00:17) Ну после... Apr 14 2010, 13:23  zksystem Цитата(Pat @ Apr 13 2010, 23:07) Можно ли... Apr 15 2010, 10:45 Xenia Цитата(zksystem @ Apr 13 2010, 17:21) Я п... Apr 16 2010, 12:53  KRS Цитата(Xenia @ Apr 16 2010, 17:08) Не рас... Apr 17 2010, 19:33   Xenia Цитата(KRS @ Apr 17 2010, 23:48) А кто ни... Apr 17 2010, 19:39    KRS Цитата(Xenia @ Apr 17 2010, 23:54) А вот ... Apr 17 2010, 19:58     Xenia Цитата(KRS @ Apr 18 2010, 00:13) Наскольк... Apr 17 2010, 20:04      KRS Цитата(Xenia @ Apr 18 2010, 00:19) А вы к... Apr 17 2010, 20:30       Xenia Цитата(KRS @ Apr 18 2010, 00:42) Лично мн... Apr 17 2010, 20:32        KRS Цитата(Xenia @ Apr 18 2010, 00:47) Не под... Apr 17 2010, 20:48         zltigo Цитата(KRS @ Apr 18 2010, 00:03) Она прос... Apr 17 2010, 21:05          KRS Цитата(zltigo @ Apr 18 2010, 01:20) по Ва... Apr 17 2010, 21:18   zltigo Цитата(KRS @ Apr 17 2010, 22:48) Какое же... Apr 17 2010, 20:13 delamoure Актуальность определяется целесообразностью примен... Apr 14 2010, 10:59 ukpyr Цитатакак дешовая замена AT90CAN64 или мелких STM3... Apr 14 2010, 11:37 KRS Цитата(ukpyr @ Apr 14 2010, 15:52) жаль g... Apr 14 2010, 13:02 Xenia Поглядела я на Instruction set этого STM8 - дерьмо... Apr 17 2010, 21:24 zltigo Цитата(Xenia @ Apr 18 2010, 00:39) Погляд... Apr 17 2010, 22:40  Xenia Цитата(zltigo @ Apr 18 2010, 02:55) А теп... Apr 18 2010, 01:18   _Pasha Цитата(Xenia @ Apr 18 2010, 04:33) Вот и ... Apr 18 2010, 03:57   zltigo Цитата(Xenia @ Apr 18 2010, 04:33) К тому... Apr 18 2010, 07:28    KRS Цитата(zltigo @ Apr 18 2010, 11:43) Разум... Apr 18 2010, 08:30     zltigo Цитата(KRS @ Apr 18 2010, 11:45) Есть пра... Apr 18 2010, 08:32   _Bill Цитата(Xenia @ Apr 18 2010, 05:18) Вся па... Apr 27 2010, 19:48 scifi Странный спор... Я-то по наивности думал, что в жи... Apr 18 2010, 08:34 zltigo Цитата(scifi @ Apr 18 2010, 11:49) Странн... Apr 18 2010, 09:11  Xenia Цитата(zltigo @ Apr 18 2010, 13:26) Да не... Apr 18 2010, 13:24   zltigo Цитата(Xenia @ Apr 18 2010, 16:39) Дело о... Apr 18 2010, 14:23    Xenia Цитата(zltigo @ Apr 18 2010, 18:38) А вот... Apr 18 2010, 16:04     Pat Цитата(Xenia @ Apr 18 2010, 18:19) уже по... Apr 18 2010, 17:28      WHALE Цитата(Pat @ Apr 18 2010, 21:43) Xenia не... Apr 18 2010, 17:49       Xenia Цитата(WHALE @ Apr 18 2010, 22:04) а вы п... Apr 18 2010, 18:30        WHALE Цитата(Xenia @ Apr 18 2010, 22:45) Я пола... Apr 18 2010, 18:44        zltigo Цитата(Xenia @ Apr 18 2010, 21:45) Я пола... Apr 18 2010, 19:35         Xenia Цитата(zltigo @ Apr 18 2010, 23:50) Да, с... Apr 18 2010, 20:05          Stanislav_S Хм.. пересменка говорите? Так вот китайское предст... Apr 19 2010, 07:41           zksystem Ну свет клином не сошелся на атмелах и микрочипах,... Apr 22 2010, 12:20 KRS Сходил я на семинар в Питере!
Из полезного - д... Apr 30 2010, 08:02 Stanislav_S Цитата(KRS @ Apr 30 2010, 13:02) Сходил я... Apr 30 2010, 09:24  KRS Цитата(Stanislav_S @ Apr 30 2010, 13:24) ... Apr 30 2010, 09:51 KRS Поставил я все 3 компилера.
Для начала решил посум... May 1 2010, 17:16 ukpyr интересно сравнить с avr-gcc и avr-iar по объему и... May 1 2010, 17:24 KRS Цитата(ukpyr @ May 1 2010, 21:24) интерес... May 1 2010, 18:09    KRS Цитата(_Bill @ May 3 2010, 18:58) Хотя я ... May 3 2010, 15:27     _Bill Цитата(Xenia @ May 3 2010, 20:01) А разве... May 3 2010, 18:28 KRS ассемблеры по возможностям примерно одинаковые... May 3 2010, 21:02 Xenia Только что (файл датируется 5 мая) IAR выложила се... May 8 2010, 09:24 KRS Цитата(Xenia @ May 8 2010, 13:24) Только ... May 8 2010, 20:45  zltigo Цитата(KRS @ May 8 2010, 23:45) Поддержка... May 8 2010, 22:27 guxa Цитата(KRS @ Apr 13 2010, 15:27) Наткнулс... May 14 2010, 10:04 KRS Цитата(guxa @ May 14 2010, 14:04) Скажите... May 14 2010, 11:50  Dog Pawlowa Вот CAN вам неймется, подскажите лучше, кто тела п... May 14 2010, 12:58   _Bill Цитата(Dog Pawlowa @ May 14 2010, 16:58) ... May 14 2010, 18:01    Dog Pawlowa Цитата(_Bill @ May 14 2010, 21:01) Делает... May 14 2010, 19:23 KRS Таблица прерываний находится в библиотеке, исходни... May 14 2010, 20:32 Dog Pawlowa Цитата(KRS @ May 14 2010, 23:32) Т.е. есл... May 14 2010, 20:49  KRS Цитата(Dog Pawlowa @ May 15 2010, 00:49) ... May 14 2010, 21:19   Dog Pawlowa Цитата(KRS @ May 15 2010, 00:19) ST навер... May 14 2010, 21:32  Т.Достоевский Цитата(Dog Pawlowa @ May 15 2010, 00:49) ... Jun 15 2010, 21:50 dimka76 А с программаторами для них как дела обстоят?
Есть... Jun 15 2010, 12:02 ZVE Бесплатного вроде как нет. Да и особо не нужно, та... Jun 15 2010, 18:08 Linker Лично меня заинтересовала заявленная устойчивость ... Jun 30 2010, 16:53 _Pasha Цитата(Linker @ Jun 30 2010, 19:53) Лично... Jun 30 2010, 20:38  Linker Цитата(_Pasha @ Jul 1 2010, 03:38) В каки... Jul 1 2010, 14:19 _Bill Цитата(Linker @ Jun 30 2010, 19:53) Хотел... Jun 30 2010, 23:25  IGK Цитата(_Bill @ Jul 1 2010, 02:25) ...Семе... Jul 1 2010, 05:50 Aner к каким еще перенапяжениям? к статике! Jul 1 2010, 14:22 topkin Цитата(Aner @ Jul 1 2010, 18:22) к каким ... Jul 2 2010, 04:22 Linker Цитата(Aner @ Jul 1 2010, 21:22) к каким ... Jul 2 2010, 17:18  IGK Нашел время осмотреть STM8S-Discovery :-)
Я до это... Jul 9 2010, 18:34   topkin Цитата(IGK @ Jul 10 2010, 06:34) Нашел вр... Jul 14 2010, 12:27    IGK Цитата(topkin @ Jul 14 2010, 15:27) У мен... Jul 14 2010, 18:18 pr2 Подскажите, где-то есть сейчас в наличии STM8S-Dis... Jul 14 2010, 01:40 Xenia Вчера вышел новый сервис-пак к EWSTM8 №3 (№2 пропу... Jul 14 2010, 12:19 KRS Цитата(Xenia @ Jul 14 2010, 16:19) Не пло... Aug 2 2010, 10:37 ведущий_специалист Цитата(IGK @ Jul 9 2010, 22:34) Нашел вре... Aug 2 2010, 17:58 e-serg Цитата(ведущий_специалист @ Aug 3 2010, 02... Aug 4 2010, 16:29 _Bill Цитата(ведущий_специалист @ Aug 2 2010, 21... Aug 5 2010, 06:14  Stanislav_S Цитата(_Bill @ Aug 5 2010, 10:14) У меня ... Aug 5 2010, 08:02   _Bill Цитата(Stanislav_S @ Aug 5 2010, 12:02) А... Aug 5 2010, 12:55 ukpyr а какой смысл в stm8s после появления stm32s100 (ц... Aug 4 2010, 17:04 topkin Цитата(ukpyr @ Aug 4 2010, 21:04) а какой... Aug 5 2010, 04:16 oll Т.е. обьясните спецы - с Дискавери идет все таки п... Aug 5 2010, 16:11 Stanislav_S Насчет дискавери сказать трудно, но могу сказать ч... Aug 6 2010, 09:03 pan_oleg День добрый.
Имею вопрос?
Кто-то уже внешние интер... Sep 15 2010, 12:24 dimka76 Цитата(pan_oleg @ Sep 15 2010, 16:24) но ... Sep 15 2010, 12:36  pan_oleg Цитата(dimka76 @ Sep 15 2010, 15:36) Так ... Sep 15 2010, 13:20 ArtemDement Коллеги, не подскажите, можно ли использовать STM8... Oct 22 2010, 17:34 ArtemDement Неужели нет никаких идей ? Oct 26 2010, 16:49
2 страниц
1 2 >
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|