Автор Тема: Программирование под микроконтроллеры  (Прочитано 10294 раз)

Peter Almazov

  • Sr. Member
  • ****
  • Сообщений: 482
    • Просмотр профиля
Re: Программирование под микроконтроллеры
« Ответ #15 : Сентябрь 04, 2012, 07:07:36 am »
"Для меня предпочтительнее" - не показатель. Вы с ассемблерными людЯми пообщайтесь.

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Программирование под микроконтроллеры
« Ответ #16 : Сентябрь 04, 2012, 07:18:54 am »
А что говорить с этими пещерными людьми? Их учить современным языкам надо, а не подстраиваться под их корявые привычки...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Программирование под микроконтроллеры
« Ответ #17 : Сентябрь 04, 2012, 10:33:05 am »
На Обероне я не прям таки горю желанием писать, но это самый разумный выбор с чего начать (под него проще построить инструмент, народ его быстрее освоит).
У меня есть основания полагать, что Оберон вызовет отторжение.
Поясню на примере. Люди, пишущие на ассемблере никогда не будут обнулять область памяти так:
i:=0;
WHILE i <> Len DO
  M[i] := 0;
  i:=i+1;
END;
Они всегда будут делать это в таком стиле:
i:=Len;
P:=&M;
WHILE i-- <> 0 DO
  *P++ := 0;
END;
И будут не правы :-) Второй вариант будет работать так же, либо медленней на рассматриваемом типе процессоров. Если кто-то знает и умеет программировать на асме под x86 это еще не значит что он умеет программировать под msp430.

А вот
int sum;
int array[256];
for (int i=0; i<len; i++) sum = sum+array[i];
Будет работаеть действительно медленней чем:
int* p = array;
for (int i=0; i<len; i++) sum = sum + *(p++);
Но, повторюсь, конкретно на msp430. И грамотный ассемблерист/микроконтроллерщик это понимает. Поэтому если ему понадобится обнулить область памяти он не будет писать циклы, он напишет memset.

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

Цитировать
Здесь нужен только Си-образный язык.
Если использовать Си-образный язык то это тоже кончится плохо (если компилятор не оптимизирующий) :-)
« Последнее редактирование: Сентябрь 04, 2012, 10:35:14 am от valexey »
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Программирование под микроконтроллеры
« Ответ #18 : Сентябрь 04, 2012, 10:37:24 am »
А что говорить с этими пещерными людьми? Их учить современным языкам надо, а не подстраиваться под их корявые привычки...
Ты все же зря так. Знание асма/машкодов при программировании МК как минимум очень полезно.  Кроме того, иногда только на асме и можно что-то сделать, либо просто это получится сделать быстрее. Есть и такие задачи.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Программирование под микроконтроллеры
« Ответ #19 : Сентябрь 04, 2012, 10:57:53 am »
Ты все же зря так. Знание асма/машкодов при программировании МК как минимум очень полезно.  Кроме того, иногда только на асме и можно что-то сделать, либо просто это получится сделать быстрее. Есть и такие задачи.
Так я же и не говорю, что надо выбить из них знание ассемблера. Просто не надо подстраиваться под них, если есть более правильные пути.

А так я до сих пор помню, как в одной моей мелкоконтроллерной проге не хватало полмикросекунды (1 машинный цикл у 51 процессора) -- пришлось обработчик прерывания с сей на ассемблер переписывать...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Программирование под микроконтроллеры
« Ответ #20 : Сентябрь 17, 2012, 09:44:37 am »
Вот тут: http://habrahabr.ru/post/151587/ народ сравнивает качество сгенерированного кода разными компиляторами под AVR.

Самое смешное что автор статьи называет Wiring компилятором :-) Также он похоже не в курсе, что в Wiring по умолчанию gcc зовется с опцией -Os, то есть оно пытается сгенерить как можно более компактный код, пусть даже в ущерб производительности, отсюда и фрагментация тел функций (подозреваю что автор статьи не подозревает вообще о наличии у компиляторов опций).

То есть относительно десктопно-серверных программистов микроконтроллерщики довольно слабо таки ориентируются в современных ЯВУ и инструментарии. Они ближе к предметникам-непрограммистам (аля физики-химики) нежели к программистам-профессионалам.

PS. BASCOM-AVR - это Basic для микроконтроллеров. Весьма, как видим, эффективен. Вот тут про него была еще статья: http://habrahabr.ru/post/151544/
Y = λf.(λx.f (x x)) (λx.f (x x))

Peter Almazov

  • Sr. Member
  • ****
  • Сообщений: 482
    • Просмотр профиля
Re: Программирование под микроконтроллеры
« Ответ #21 : Сентябрь 26, 2012, 12:34:12 pm »
Не стал заводить новую тему.
Никлаус Вирт: искусство преподавания http://www.osp.ru/os/2012/06/13017106/