Очередная дискавери. Уже хачу!

ARM7, ARM9, ARM11 etc.

Re: Очередная дискавери. Уже хачу!

Сообщение Dmitry__ » 27 ноя 2012, 16:01

ваууууууу :friends:
Когда забрать можно? скока денег?
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Очередная дискавери. Уже хачу!

Сообщение elmot » 27 ноя 2012, 16:17

забирать-то когда хошь. деньги ща посчитаю.
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: Очередная дискавери. Уже хачу!

Сообщение elmot » 27 ноя 2012, 23:57

Все, больше нету плат.
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: Очередная дискавери. Уже хачу!

Сообщение Dmitry__ » 28 ноя 2012, 03:14

Ждем новых анонсов :roll: :beer:
Уже подкрутил демку и проверил гир, впечатления положительные, по характеристикам лучше гира в дроне. Пойду флудить в свою тему :P
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Очередная дискавери. Уже хачу!

Сообщение Dmitry__ » 04 дек 2012, 21:07

Написал asm поигралку для этой STM32F3-Discovery :crazy:
Ваши эти армы - рекламная афера, ппц.

поигралку написал по мотивам SysTick_Example
Размер оригинала:
Код: Выделить всё
  1 746 bytes of readonly  code memory
     90 bytes of readonly  data memory
  1 080 bytes of readwrite data memory

поигралка:
Код: Выделить всё
     832 bytes of readonly  code memory
     40 bytes of readwrite  data memory


Стмовский CMSIS - быдлокод полнейший.
Работа с GPIO:
настройка пина: 376 тактов
установка пина: 16 тактов
инверсия пина:19 тактов
Это avr на 8 мгц. :)

Если управлять GPIO из асм методом "Bit Banding" (CMSIS не имеет этого), то на частоте 72 МГц выполнит их за 80 нс. по нынешним временам - медленно. Простая 10 мипсовая пикина делает это за 100 нс. 40 мипсовая PIC33f за 25 нс.
Неоторым программерам "Bit Banding" вынесет мозг, тогда остается стандартный способ установки бит, а это > 180 нс. :o
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Очередная дискавери. Уже хачу!

Сообщение dccharacter » 04 дек 2012, 23:31

void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
/* Check the parameters */
assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
assert_param(IS_GPIO_PIN(GPIO_Pin));

GPIOx->BSRRL = GPIO_Pin;
}

????????????????

void GPIO_ToggleBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
/* Check the parameters */
assert_param(IS_GPIO_ALL_PERIPH(GPIOx));

GPIOx->ODR ^= GPIO_Pin;
}

???????????????
???????????????

А еще можно DMA использовать, чтобы ногами дергать.
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Очередная дискавери. Уже хачу!

Сообщение elmot » 04 дек 2012, 23:32

при правильно заданных опциях ассерт превращается в ничто.
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: Очередная дискавери. Уже хачу!

Сообщение Dmitry__ » 04 дек 2012, 23:44

они выкл. по умолчанию.
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Очередная дискавери. Уже хачу!

Сообщение dccharacter » 04 дек 2012, 23:45

Ну а так чего? Прямая работа с регистрами, чем тебе цмсис не угодил?
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Очередная дискавери. Уже хачу!

Сообщение Dmitry__ » 04 дек 2012, 23:50

а ты сделай и пройдись дебагером :)
Самый быстрый "Bit Banding" это три 16-битных инструкции, примерно 6 тактов.
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Очередная дискавери. Уже хачу!

Сообщение dccharacter » 04 дек 2012, 23:51

Я не умею
Почему вот это "плохой" битбанг: GPIOx->BSRRL = GPIO_Pin; ???
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Очередная дискавери. Уже хачу!

Сообщение Dmitry__ » 05 дек 2012, 00:06

dccharacter писал(а):Почему вот это "плохой" битбанг: GPIOx->BSRRL = GPIO_Pin; ???

это компилится в:
Код: Выделить всё
    0x80002bc: 0x490c         LDR.N     R1, ??DataTable13       ; GPIO_PORT
    0x80002be: 0xf20f 0x0234  ADR.W     R2, GPIO_PIN            ; 0x1000200 (16777728)
    0x80002c2: 0xf851 0x1020  LDR.W     R1, [R1, R0, LSL #2]
    0x80002c6: 0xf832 0x0010  LDRH.W    R0, [R2, R0, LSL #1]
    0x80002ca: 0x6188         STR       R0, [R1, #0x18]

;In section .text, align 4, keep-with-next
;??DataTable13:
0x........         DC32     GPIO_PORT

Т.е чтоб установить пин, надо потратить 20 байт и 8 тактов :)
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Очередная дискавери. Уже хачу!

Сообщение elmot » 05 дек 2012, 00:26

а если оптимизацию включить?
Кста, я не совсем прав - cmsis это не только стартовалка. В то же время - рассматриваемый код - это все-таки Std Periph Lib.
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: Очередная дискавери. Уже хачу!

Сообщение Dmitry__ » 05 дек 2012, 00:28

опс, это с указателем на светодиод.
Если просто установить бит, то:
Код: Выделить всё
  GPIOB->BSRR |= 0x00000001;
    0x80001e6: 0x4828         LDR.N     R0, ??DataTable3_3      ; GPIOB_BSRR.BR0
    0x80001e8: 0x6801         LDR       R1, [R0]
    0x80001ea: 0xf041 0x0101  ORR.W     R1, R1, #1
    0x80001ee: 0x6001         STR       R1, [R0]
\??DataTable3_3:
\   00000000   0x48000418         DC32     0x48000418

14 байт, 6 тактов
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Очередная дискавери. Уже хачу!

Сообщение dccharacter » 05 дек 2012, 00:31

А тут (я не понимаю):

GPIO_SetBits:
08000ef4: push {r7}
08000ef6: sub sp, #12
08000ef8: add r7, sp, #0
08000efa: str r0, [r7, #4]
08000efc: mov r3, r1
08000efe: strh r3, [r7, #2]
364 GPIOx->BSRR = GPIO_Pin;
08000f00: ldrh r2, [r7, #2]
08000f02: ldr r3, [r7, #4]
08000f04: str r2, [r3, #16]
365 }
08000f06: add.w r7, r7, #12
08000f0a: mov sp, r7
08000f0c: pop {r7}
08000f0e: bx lr
375 {
GPIO_ResetBits:
08000f10: push {r7}
08000f12: sub sp, #12
08000f14: add r7, sp, #0
08000f16: str r0, [r7, #4]
08000f18: mov r3, r1
08000f1a: strh r3, [r7, #2]
380 GPIOx->BRR =
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Пред.След.

Вернуться в ARM

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5