|
|
  |
Проектирование ПО для микроконтроллеров |
|
|
|
Nov 22 2008, 12:21
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(Purposeful @ Nov 22 2008, 13:17)  развитие программирования под МК сильно отстает от развития программирования для ПК. Это две большие разницы. Нельзя сравнить инфузорию с кольчатым червем по уровню IQ Цитата Мне пришлось переписывать программу товарища который очень любил GOTO Я, может, провоцирую, но это голословные утверждения, потому что, возможно, Вы что-то невероятно упростили, а товарищ, писАвший код до Вас, заботился прежде всего об эффективности своего труда. А как иначе? Экономический эгоизм, понимаш
|
|
|
|
|
Nov 22 2008, 14:33
|
Частый гость
 
Группа: Свой
Сообщений: 119
Регистрация: 16-07-07
Из: Тула
Пользователь №: 29 160

|
когда пишу код для МК, стараюсь следовать принципам все-таки экстремального программирования. так, как Кент Бек нас учит http://www.books.ru/shop/books/27070 . В своё время работал в компании, где следуют этим принципам, нашел что все весьма разумно устроено. Это идеология программирования, ориентированная на клиента, конечного потребителя. К сожелению, не все эти принципы можно легко реализовать для микроконтроллеров: в частности, мне не встречалось еще приложения для unit testing кода микроконтроллеров. Опять же, трудно следовать этим рекомендациям, когда в изделии используется МК, все ресурсы которого полностью задействованы. А слышать от программиста "это сложно" и "этого в тз не было" - действительно весьма печально...
|
|
|
|
|
Dec 8 2009, 09:32
|
Участник

Группа: Свой
Сообщений: 60
Регистрация: 8-11-05
Пользователь №: 10 602

|
Этап проектирования при разработке ПО должен обязательно включаться при разработке довольно "сложного" программного обеспечения (определения "сложный" это понятие очень растяжимое), а так же при разработке ПО группой разработчиков. Для программы выводящей на экран слово "Hello world" и программы для управления одним светодиодом этап проектирования можно опустить))))
|
|
|
|
|
Dec 8 2009, 16:52
|

Гуру
     
Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954

|
Цитата(Andron_ @ Dec 8 2009, 16:44)  как показала практика, привычка не писать проекты ПО и документацию выливается в кучи проблем... Основная - крайне затрудненный процесс модификации. Эта привычка, имхо, выработалась из-за нехватки времени на проектирование в современных условиях: контракты заключаются, как правило, на год, и разбивать проектирование на этапы с оформлением по каждому этапу (эскизный проект, технический, рабочий) документации - непозволительная трата времени. Поэтому, проектирование - в один этап: техно-рабочий проект. Программы должны иметь достаточное количество комментариев, а их текст - документ (или даже этого не имеете). Цитата(Andron_ @ Dec 8 2009, 16:44)  вторая - невозможность повторного использования кода, написанного другим программистом... Это - жадность собственников предприятия, желающих один раз заплатить и пользоваться, пользоваться, пользоваться... Если программа написана для "изделия А", это не значит, что можно без зазрения совести использовать её в "изделии Б"! Цитата(Andron_ @ Dec 8 2009, 16:44)  третья, которая видимо будет позже - проблемы с сертификацией ПО. Ну, мне бы Ваши проблемы... Если это - криптографическая защита, то заказчик серьёзный, и он (заказчик) проплатит и эскизный проект, и технический, и выпуск документации, которую у Вас и примет. В остальных случаях: сертификация ПО - дело добровольное (ну, за исключением игровых автоматов  ).
|
|
|
|
|
Dec 8 2009, 17:27
|
.NET developer
  
Группа: Свой
Сообщений: 218
Регистрация: 20-10-07
Из: Новосибирск
Пользователь №: 31 532

|
Цитата Это - жадность собственников предприятия, желающих один раз заплатить и пользоваться, пользоваться, пользоваться... Если программа написана для "изделия А", это не значит, что можно без зазрения совести использовать её в "изделии Б"! если предприятие выпускает изделия A, B, C, D, E, F, в каждом из которых присутствует один-два-три ATmega, которые обмениваются данными с использованием протокола FOO, а также есть программисты R, S, X, Y, Z, которые из-за вышеозначенной причины каждый сам выдумывает свою реализацию протокола FOO; это называет не жадность, а пустая трата времени каждого из программистов. И если программа была написана для изделия "А", и полностью является собственностью предприятия, то она _должна_ быть использована в изделии "Б", если условия позволяют. Цитата Ну, мне бы Ваши проблемы... Если это - криптографическая защита, то заказчик серьёзный, и он (заказчик) проплатит и эскизный проект, и технический, и выпуск документации, которую у Вас и примет. В остальных случаях: сертификация ПО - дело добровольное (ну, за исключением игровых автоматов ). не все так радужно...
|
|
|
|
|
Dec 8 2009, 18:35
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Во читайте и просвещайтесь Embedded_systems_architecture.pdfАрхитектуру к коде на 40 Кб действительно найти трудно. Это термин для техники посложнее с применением осей и строннего middleware. Нынче для 32-х разрядных микроконтроллеров почти каждый разработчик IDE предлагает элементы собственной архитектуры. Более того в разделе про ARM-ы большинство серьезных тредов затрагивают архитектуру, потому что это сверхважный вопрос. Ошибешься в архитектуре и можешь потерять год а то и больше. Просто архитектурой там это не называют, ну не знает народ что это так называется. Цитата(Purposeful @ Nov 21 2008, 21:38)  Уважаемые коллеги, скажите может я ошибаюсь и эта архитектура вовсе не нужна (ведь оно и так все работает)? А может кто чего-нибудь подскажет?
|
|
|
|
|
Dec 9 2009, 07:11
|

Гуру
     
Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954

|
Цитата(Andron_ @ Dec 8 2009, 20:27)  ... это называет не жадность, а пустая трата времени каждого из программистов. И если программа была написана для изделия "А", и полностью является собственностью предприятия, то она _должна_ быть использована в изделии "Б", если условия позволяют. Да - пустая трата времени. Но, это - недоработка руководства предприятия. Если была поставлена задача: "Разработать программу обмена по протоколу ... для изделия А", то применение этой программы в других изделиях - нарушение прав автора (программиста). А, вот, если " ... для изделий типа А и последующих, использующих протокол...", то и программист (хороший программист), напишет программу легко встраиваемую в другое изделие, но и его труд должен быть оценен соответственно.
|
|
|
|
|
Dec 9 2009, 07:31
|
Частый гость
 
Группа: Свой
Сообщений: 151
Регистрация: 21-02-06
Пользователь №: 14 561

|
Цитата(Purposeful @ Nov 21 2008, 22:38)  Особенно тяжело с людьми которые ранее писали на Ассемблере и их заставили писать на С. ...еще сложнее с людьми которые застряли на Ассемблере и мотивируют это исключительностью Ассемблера. Цитата(aaarrr @ Nov 21 2008, 23:03)  Скажите, а как оператор goto (кстати, вполне легальный, чего никак не могут понять составители школьных программ, исповедующие метод copy-paste) может помешать правильному проектированию ПО? Несколько другой уровень "проблемы". На самом деле может повлиять. Дело в том что владение определенным языком накладывает отпечаток на логику мышления и соответственно способы и подходы к решению задачи. Это из личного опыта. Впрочем замечу что лингвисты говорят о том же. И потом применение goto во всем мире считается плохим тоном. При использовании языков высокого уровня пратически в любом случае можно избежать применения goto. А вот что касается Ассемблера, увы без goto он же jmp ни как. Но опять же Ассемблер не совсем язык.
|
|
|
|
|
Dec 9 2009, 07:47
|
Гуру
     
Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136

|
Цитата(aaarrr @ Nov 21 2008, 23:03)  Скажите, а как оператор goto (кстати, вполне легальный, чего никак не могут понять составители школьных программ, исповедующие метод copy-paste) может помешать правильному проектированию ПО? Ясно как. Оператор goto может заменить все операторы цикла (for, do, while), а также множество вызовов функций. Если начать заниматься такими заменами, то структурированность программы пострадает, мягко говоря. Я вижу только одно приличное применение для goto: выход из глубоко вложенного цикла. Кстати, кажется в Java специально для этого несколько расширили функцию оператора break по сравнению с Си.
|
|
|
|
|
Dec 9 2009, 09:42
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(AlexandrY @ Dec 9 2009, 12:28)  Ну почему же. За goto в С-и прочно закрепилась одна утилитарная функция - это переход к exit point в функциях с обязательным эпилогом, например с освобождением памяти. Большинство юзают это часто и с удовольствием. Еще одна - в protothread под GCC. Замена switch(pc) на Код if(pc != NULL) goto *pc; //..................................... Label: pc = &&Label; Да и вообще при мультитредовом программировании без идина goto - никуда
|
|
|
|
|
Dec 9 2009, 12:01
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
По хорошему программирование для микроконтроллеров и для PC не отличается. Просто в программировании для контроллеров много случайных людей. Типа электронщиков, которые тянут смежную область, не в состоянии овладеть суммой знаний, которой обладает действительно программист. Есть, конечно, и упертые ассемблерщики, которых становится все меньше и меньше. А автору хочу посоветовать спокойно подобрать коллектив, раз уж есть такая возможность
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Dec 9 2009, 12:18
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Да точно, в кооперативных механизмах многозадачности без goto невозможно обойтись ибо нельзя трогать стек. Цитата(_Pasha @ Dec 9 2009, 11:42)  Еще одна - в protothread под GCC. Замена switch(pc) на Код if(pc != NULL) goto *pc; //..................................... Label: pc = &&Label; Да и вообще при мультитредовом программировании без идина goto - никуда
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|