;)
  thinkIT.ru — первый IT-портал города  
 
 
Первый IT-портал города
 
 
Почта:
Пароль:
    Забыли пароль?

Добавь thinkit.ru в свои сервисы закладок!



Add to Technorati Favorites


Теги

:) (18) HDD (12) IT (18) Microsoft (30) Upgrade (11) Windows 7 (11) apple (55) blog (22) hard (31) internet (73) iphone (48) linux (37) soft (53) thinkit (19) thinkit.ru (19) ubuntu (10) windows (33) www (12) Вист-Дон (38) Идея (13) КМ (16) Коралл-Микро (14) Медведев (11) ТТИ ЮФУ (14) Хочу КПК (11) ЮТК (16) акция (16) блог (32) выбор (20) гаджет (29) гаджеты (64) железо (91) интернет (90) компьютерные магазины (11) компьютеры (40) конкурс (23) магазины (31) магазины таганрога (26) нетбук (10) новости (42) ноутбук (61) офис плюс (20) покупки (62) провайдер (23) ремонт (21) сайт (18) таганрог (151) херня (29) цены (18) юмор (44)

Все тэги

  До-После. Не упусти шанс!



GGG Лого
GGG Лого

Рубрика: Железо

25
"Хозяйке на заметку"™

"Хозяйке на заметку"™


Крошка сын к отцу пришёл,
И спросила кроха:
"Папа, Бэйсик - хорошо,
а ассемблер плохо?"
©by Me

Автор: CCMauc | Добавлено: 10 Сентября, 2009 | Много комментариев | Просмотров: 816
Случилось мне работать, в не однократно уже упомянутой на этом портале, САО РАН, что в горах седого Кавказа. И вот, братья мои по паяльнику, сталкнулся я с неведомой ранее ерундой MicroChip PIC контроллер. Изначально программу под него предлагалось писать в среде разработки созданной самим MicroChip страшная, для рядового VB программиста, штуковина MPLAB IDE. Всем, впрочем хороша была эта среда, и эмулятор идиальный, и карта памяти процессора и т.д. и т.п. . Одна проблема, писать приходилось на чистом asm'е! Оно бы, наверное, даже ничего, если бы впереди у меня было лет 6-7 дабы выучить сей язык в идеал. Но чего-чего, а времени у меня было в обрез, и запарившись тупо выглядывать ошибку, ярко красными от напряжения и передозировки кофе глазами, в строках, типа:
"$004E    $1303            BCF    STATUS, RP1
$004F    $1683            BSF    STATUS, RP0
$0050    $0812            MOVF    PR2, 0
$0051    $3F01            ADDLW    1
$0052    $00F0            MOVWF    STACK_0
$0053    $01F1            CLRF    STACK_0+1
$0054    $1803            BTFSC    STATUS, C
$0055    $0AF1            INCF    STACK_0+1, 1"

я решил искать альтернативные пути. И нашёл! Моим спасением оказался продукт компании mikroElektronika - microC for PIC. И жить обладая данным компилятором стало намного легче. Немного официальщины:

microC - мощный инструмент разработки программ для PIC микроконтроллеров. Он сконструирован, чтобы обеспечить программисту наименее трудоемкие решения по созданию приложений для встраиваемых систем, без компромисса между производительностью и удобством отладки.

PIC и Си хорошо подходят друг другу: PIC - наиболее популярный 8-битовый микроконтроллер в мире, используемый во многих приложениях, и Си, высоко ценимый за свою эффективность, предоставляют реальную возможность для разработки встроенных систем. MikroC обеспечивает успешное сочетание развитой среды программирования (IDE), соответствующего ANSI компилятора, широкого набора библиотек для аппаратных средств, всесторонней документации и большого количества готовых к употреблению примеров.



Возможности

MikroC позволяет быстро разработать и внедрить сложные приложения:
Текст программы вводится с помощью встроенного редактора исходного кода (с помощью в коде и параметрах, контекстной подсветкой, автокоррецией, кодовыми шаблонами и т.п…)
Использование прилагаемых библиотек mikroC существенно повышает скорость разработки: сбор, хранение, индикация, преобразования и обмен данными. Поддерживаются практически все члены семейств P12, P16, и P18.
Проводник по коду (Code Explorer) позволяет оперативно контролировать структуру программы, переменные и функции проекта.
После обработки создаются откомментированный и читабельный файл на ассемблере и стандартный HEX файл, пригодный для использования всеми программаторами.
Встроенный отладчик позволяет проверять ход и логику исполнения программы.
После компиляции предоставляется полная статистика использования памяти, ассемблерный листинг, дерево вызовов функций и т.п…
Обеспечено достаточное количество примеров, которые можно расширять и использовать как составные части разрабатываемых проектов. Если нужно, можно копировать их в проекты целиком, для того они и включены в состав компилятора.
[Свиснуто отсюда]
Библиотек в данном монстре, действительно ОЧЕНЬ много, что значительно упрощает работу программиста, избавляя его от обязанности сначала писать, а потом, постоянно копипастить процедуры работы с MCU. Есть так же специальная возможность для извращенцев: писать на чистом asm'е или делать вставки в Сишный код.
Для тех, кто не дружет, или по каким-то причинам  не хочет дружить, с языком Си - компания microElektronika выпустила и другие компиляторы, такие как: microPascal и microBasic, а так же существуют различные из разновидности для разных типов микропроцессоров. Всю полезную информацию, а так-же цены на данные проекты можно узнать на официальном сайте. Сразу оговорюсь, что хоть данные компиляторы и платные, но существует бесплатный "демо" режим, в котором установлено ограничение на выходной HEX файл в 2000слов. Лично мне этого всегда хватало! Так-же все эти системы разработки снабжены ПО программатора, терминалом управления UART, эмулятором и многими полезными вещами.

Но, даже в этом, на первый взгляд идеальном, инструменте нашлись недостатки. А именно, отсутствие полноценной эмуляции работы микроконтроллера, по сему приходилось после каждого исправления в программе перезаписывать MCU, flash память коего имеет ограниченное число перезаписей, после чего она приходит в негодность и лишает программиста премии. И тогда я плотно засел за "бороздование" просторов Интернета (хотел написать с маленькой буквы, но вспомнил о новых правилах). И мои поиски не оказались безрезультатными, знакомьтесь: \Labcenter Electronics\ Proteus 7 Professional! Возможности данного продукта невероятно велики (как, в прочем и цена, £150.00 за Starter Kit)
Картинка 1 из 3668



Честно говоря, много про данный проект, я рассказать не могу. Использовал я его очень узко, в основном для того, что бы прикрутить к выходам PIC16F876A виртуальный осциллограф и посмотреть какой сигнал получается если я изменяю пару строк в программе. Знаю, только, что состоит сей чудный инструмент из двух частей ISIS - для разработки и эмуляции работы схемы (этакая виртуальная макетная плата), включающая в себя огромную базу данных с массой элементов, процессоров, микросхем и прочей нечисти; и ARES - программа переводящая схему ISIS в вид печатной платы (сюда я вообще не лазил, даже не спрашивайте).

Вот, по моему, всё. Надеюсь данная статья помогла Вам в каких-либо начинаниях (мне она помогла стать обладателем bluetooth гарнитуры Jabra). Если возникнут вопросы - пишите, постараюсь ответить. Спасибо за внимание, все свободны! :)

Теги: MicroChip, PIC, mikroElektonika, microC, microBasic, microPascal, Proteus, ISIS, ARES, MCU | Оценка: (8)

Комментарии:

николай николай | 11 Сентября 2009 00:06 | ссылка сюда
ну по моему опыту иногда и без ассемблера не обойтись, когда программа должна очень быстро работать.. но если скорость не критична то, и прочие языки подходят.
Сказанное больше всего подходит к микроконтроллерам. У них архитектура проще и они более предсказуемы.
Для процессоров типа core2duo уже не так все просто. Переписать функцию С на ассемблере и добиться прироста быстродействия уже не просто.
CCMauc CCMauc | 11 Сентября 2009 07:45 | ссылка сюда
Ну, я про микроконтроллеры и говорю. Быстродействие для моих работ не так уж и важно, а без данного компилятора я бы тратил намного больше времени! :)
Анонимность Серая Анонимность Серая | 11 Сентября 2009 11:56 | ссылка сюда
Николай, вы, наверное, не сталкивались с современными компиляторами C для микроконтроллеров. У них оптимизация уже работает на ура. Иногда даже приходится обходить ее при помощи всяких #pragma.

Маису respect.
/Eddy/
николай николай | 11 Сентября 2009 12:20 | ссылка сюда
может вы и правы, действительно давно не писал для контроллеров.
а статья и правда хороша.
Dan Dan | 11 Сентября 2009 09:18 | ссылка сюда
Мне тоже иногда приходится программы для микроконтроллеров писать (инфинион). Пишу на С, ибо время на разработку уменьшается в разы (в частности - ошибки легче искать, да и что там говорить - язык привычный). Ассемблер считаю возможным применять только в случаях, когда на быстродействие программы гораздо важнее времени на разработку.
iNik iNik | 11 Сентября 2009 09:56 | ссылка сюда
Круто, Майс! Аж радик с господином Пшехоповым вспомнился :)
А где применялись твои разработки?
CCMauc CCMauc | 11 Сентября 2009 10:40 | ссылка сюда
Ну... первый проект - это был микропроцессор управляющий приводами корректора фокуса N-1 БТА, ч/з RS232. А только вот этим летом закончил проект для УМУ (Универсальный Модуль Управления) более чем сотней устройств. :)
А г-н Пшехопов, был, есть и остаётся, зав. каф. моей кафедры... :)
Обидно то, что йа со своими знаниями, никому кроме САО, собственно говоря и не нужен! :(
Брэд Питт Брэд Питт | 11 Сентября 2009 11:21 | ссылка сюда
Сдается мне что ты не у тех людей спрашивал...
CCMauc CCMauc | 11 Сентября 2009 11:38 | ссылка сюда
Вероятно. Но компаса не хватает, откуда жеж я знаю у кого спрашивать, то. :)
Брэд Питт Брэд Питт | 11 Сентября 2009 11:41 | ссылка сюда
Попробуй начать с hh.ru
Анонимность Серая Анонимность Серая | 11 Сентября 2009 10:18 | ссылка сюда
помню несколько лет назад мне пришлось работать над программой для микроконтроллера - преобразователь 2х портов PS2 в USB (Этот чип даже стоял на некоторых материнках Jetway). Вообще программа была уже кем-то написана и в общем работала. Но был один глюк. Тестеры дали репорт, что в некоторых приложениях либо мышь либо клава не работают правильно. Долго выясняли, что это за программа (ибо повторить баг на месте не удавалось). В конце концов выяснили, что это wolfenstein. Оказывается в игре нужно одновременно двигать и мышью и одновременно стрелять с клавиатуры. Естественно в обычных условиях так не тестируют - пишешь текст - значит проверяешь порт клавиатуры. Двигаешь мышь - проверяешь порт мыши- и все ОК. Выяснилось, что когда идет одновременный прием символов с клавы и мыши программа просто не успевает все биты принять правильно. Пришлось полностью менять концепт программы (она и так была на ассемблере). Считали буквально каждую команду - контроллер был очень слаб. Только после этой переработки все заработало правильно. Так что без ассемблера иногда не получается.
iNik iNik | 11 Сентября 2009 10:22 | ссылка сюда
ого! Действительно серьезный баг поправили. А в джетвей отправляли репорт?
Анонимность Серая Анонимность Серая | 11 Сентября 2009 10:42 | ссылка сюда
jetway не могла выпустить материнскую плату без этого фикса, все стояло и все ждали нас когда пофиксим. никто кроме нас не смог
Anatoly Anatoly | 11 Сентября 2009 20:04 | ссылка сюда
недавно для развлечения делал таймер на AVR Atmel. Злобным рыбкам надо было 12 часов полноценного освещения и 12 часов отсутствия оного. Пошел в радиомагазин на Центральном рынке, прикупил у них микроконроллер за 50 р. Скачал pdf про него, оказалось у него нет даже ОЗУ, флеш на 512 байт. Скачал асм под линукс для него, программатор через LPT, все вбил в скрипт, запустил таймер... Отняло один день - вся разработка. Все под асмом, благо задача простейшая - релюшкой клацать раз в 12 часов. Короче, AVR - рулит! Си под него тоже есть, но мне асм больше нравится. Для короткой программы))))
Dan Dan | 12 Сентября 2009 09:25 | ссылка сюда
Здорово. Только вот если бы Вам пришлось писать для этого же контроллера алгоритм адаптивного управления приводом, или коммутацию каналов - было бы легче на С написать - быстрее и приятнее. При усложнении задачи асм становится все менее удобнее, по крайней мере для меня.
Anatoly Anatoly | 12 Сентября 2009 12:14 | ссылка сюда
для меня - чем длиннее текст на асме тем больше глаза замыливаются и перестаю уже что-либо понимать, как ни структурируй)))
Программу управления силовым шаговым двигателем писал для pic на асме, очень давно, но она примитивная была и все равно тогда еще хорошего Си не было для pic'ов :(
Самый классный асм что попадался - это для Analog Devices DSP. Там у них алгебраический синтаксис, например:
AR=AR-5;
и большие программы проще писать. На нем писал программу коммутации 12 каналов CAN и статистическую обработку данных станции радиоразведки. Потом когда выяснился 10-ти кратный запас по скорости, с облегчением переписал на C))))

А вот после питона на С или C++ уже тяжко писать. Жалко на микроконтроллерах полноценный питон невозможен :( Хотя люди уже работают в этом направлении...

Вообще, Питон - это Бейсик сегодня))))
bitterman bitterman | 12 Сентября 2009 04:47 | ссылка сюда
хм. сам пишу под атмеловский проц ) пишу, пишу. асмом пока не пахнет и слава богу :)
Anatoly Anatoly | 12 Сентября 2009 12:23 | ссылка сюда
мрачная статья про программирование микроконтроллеров - http://wasm.ru/article.php?article=onebyte
вообще рекомендую wasm.ru - лучший сайт на русском про асм для ПиСи
николай николай | 12 Сентября 2009 13:42 | ссылка сюда
А вот скажите господа, не возникало ли у Вас когда нибудь желание создать "свой" "другой" процессор?
Anatoly Anatoly | 12 Сентября 2009 14:32 | ссылка сюда
к любому процессору нужно еще масса всякого ПО - ассемблеры, компиляторы, отладчики и т.п. Создать свой процессор в FPGA проще чем написать среды разработки к нему
николай николай | 12 Сентября 2009 16:55 | ссылка сюда
Вы абсолютно правы! Действительно процессор без средств разработки не имеет смысла.
Этот аргумент, как правило, приводят все противники разработки какого либо нового процессора, особенно не совместимого с существующими. Конечно удобно находиться в тихой гавани существующего ПО, но ведь так америк не откроешь :-) . С другой стороны, конечно, так же не имеет смысла делать новый процессор основываясь на общеизвестных и проверенных принципах типа "регистры", "алу", "pipeline", MMU, и тому подобное. Я не отрицаю эффективности этой технологии, но уверен существуют новые приципы. Это как соревнование по прыжкам в высоту. Американец Дик Фосбери в 1968 году на Летних Олимпийских играх в Мексике с помощью нового способа прыжка (спиной к планке) выиграл золотую олимпийскую награду, установив новый олимпийский рекорд (2,24 метра). После этого новый способ прыжков "спинкой" стал применяться и другими спортсменами как более эффективный.
Dan Dan | 13 Сентября 2009 12:15 | ссылка сюда
Боюсь, что у нас сейчас нет культуры разработки и производства элементной базы.. это все равно, что на мебельной фабрике гитары делать (чем у нас десятилетиями и занимаются)..
николай николай | 13 Сентября 2009 12:43 | ссылка сюда
на самом деле есть масса примеров fabless companies. Например та же ARM Ltd персонально сама ни одного кристалла не изготовила. Тем не менее это не мешало ей разрабатывать и улучшать процессор. И лицензий они продали не мало.
http://ru.wikipedia.org/wiki/ARM
А средств разработки сейчас много и в том числе бесплатных много. Однако мне кажется начинать нужно с программных моделей. Например для начала писать только программный эмулятор. Потом попробовать для него сделать некую ОС и т.д. Только потом уже кодировать на verilog/VHLD
CCMauc CCMauc | 15 Сентября 2009 10:11 | ссылка сюда
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
(С)Bash.Org.Ru
Dan Dan | 15 Сентября 2009 11:57 | ссылка сюда
:)
Авторизуйтесь чтобы не быть Серой Анонимностью!
Играть в тетрис бесплатно он-лайн, без регистраций и смс =)
Тетрис на Thinkit.ru — Время играть в тетрис!

Играть в тетрис проще простого. Жмем на иконку и вперед.


Подпишись на thinkit.ru


Подпишись на наш RSS канал и читай thinkit.ru через твой любимый RSS-reader.


 

 
  CreativeCUBE - разработка и поддержка сайтовПроизводство и поддержка
cCube.ru
  При воровстве с этого сайта ссылка обязательна.
Copyright © 2008-2010 thinkit.ru
Связаться с нами