fk0, легенда (24.04.2014 10:08 - 10:32, просмотров: 167) ответил Лагунов на а вот - "Простой старт STM32+CooCox IDE+ST-Link". Есть мнение?
Выглядит лучше. Хотя насколько я понимаю, там из полезного только одна вещь: gdbserver для stlink. Тебе по сути нужен stlink чтобы программировать flash и gdbserver чтобы после программирования отлаживать из gdb (многие IDE на самом деле лишь хгуёвая обёртка вокруг gdb). Потом нужен сам gdb для ARM и gcc как компилятор. Ещё GNU Make чтоб автоматизировать сборку. Вот это реальный комплект софта нужного для работы.
gcc (а также binutils и прочее из его состава) и gdb можно нагуглить в виде готовой сборки под windows. Для linux можно собрать самому (для виндов тоже можно, но муторно крайне).
Далее алгоритм обычный. Пишем Makefile минимальнейший. В нём пара правил. Первое -- как из *.c файла получить *.o файл (для данной платформы, например cortex M3, значит нужны ключи -mcpu=cortex-m3 -mthumb. Второе -- как из нескольких *.o получить *.elf. Тут нужны ключи задающие скрипт линкера, библиотеки и т.п. Возможно третье -- получить *.hex из *.elf (для программирования в flash).
Пишем программу на C, хоть hello world. Компилируем. Если используется C библиотека -- нужно написать функции прослойки между C-библиотекой и ОС (или сразу железом, ведь ОС нет). Типа read, write и т.п.
Утилитой от STlink программируем flash. Потом запускаем gdbserver, потом запускаем gdb filename.elf. И отлаживаем в gdb. Там нужно наверняка сбросить/остановить/запустить программу через monitor <command>, где command разные в разных gdbserver... Читай инструкцию.
Итого что изучать: 1) как происходит процесс компиляции (с какими опциями вызывать компилятор, какие стадии компиляции есть), 2) как написать простейший Makefile (на первое время вместо Make можно написать батник вызывающий компилятор с нужными опциями -- но это для очень мелких проектов только), 3) как запрограммировать flash, 4) как отлаживать: здесь нужно уметь работать с "монитором" (gdbserver), с его командами (их там меньше десятка нужных), и как работать с самим gdb. Да, возможно монитор (gdbserver) сам умеет программировать flash, что немного упрощает жизнь.
Конечно IDE многое автоматизирует. Вплоть до нажал кнопку -- оно тебе шаблон проекта. Нажал другую -- скомпилировало и в flash прошило. Нажал третью -- уже отлаживает. И в отладчике тоже всё мышкой. Но это не так хорошо как кажется. Во-первых пользуясь плодами такой автоматизации ещё больше запутаешься и никогда не поймёшь, как оно работает на самом деле. Во-вторых ровно в том виде, как это всё делает IDE -- оно подходит только для проектов уровня hello world, для более сложных нужно изменять массу опций в разных местах и для того вообще нужно знать как оно внутри работает. А изучить как оно работает внутри наблюдая за IDE и изучая крыжики в гуях -- невозможно (точно также как невозможно в совершенстве освоив все кнопки пульта от ТВ понять как собственно работает телевизор, да и у разных моделей телевизоров пульты разные, что ещё больше запутает). Да и средства отладки предлагаемые IDE обычно красиво сделаны но по возможностям уступают ручной работе в gdb. Не даром во многих IDE есть окно для ввода команд gdb вручную.
Да, ещё нужен редактор текста программ. Совершенно не обязательно писать текст, отлаживать, программировать flash -- всё в одной программе... Нужно вообще уметь пользоваться многозадачным компьютером и работать во многих программах одновременно. Уметь вводить команды в консоли (cmd.exe, bash в linux). Для виндовса перестать все программы разворачивать в полный экран (иначе больше одной не видно), отключить всплывание окон по клику мыши (Tweak UI -- иначе невозможно работать с перекрывающимися окнами), включить следование фокуса ввода (клавиатуры) за мышью (TXmouse, Tweak UI)...
Для программистов нужен специфичный редактор с основными следующими функциями, в порядке важности:
* работа с несколькими файлами одновременно;
* функция разделения экрана на 2 половины (split) для одного файла и для двух разных -- обязательно (смотришь в одной декларацию функции, в другой половине пишешь вызов, например).
* функция вывода текущего номера строки.
* функция отмены (undo), многоуровневая.
* удобный поиск и замена в тексте файла (по регулярном выражениям);
* подсветка синтаксиса;
* быстрый переход к декларации/определению символа (поддержка ctags) и возврат обратно;
* bookmarks, чтоб запомнить позицию, а потом вернуться к ней.
* функции перехода к парным скобкам;
* поиск по группе файлов в проекте, хотя можно тупо grep'ом или find.exe искать -- внешними программами... лучше в редакторе.
Выбор тут разнообразный. Встроенные в IDE редакторы обычно средненькие. Развесистая клюква с классами, символами, списками файлов и прочая ерунда скорей не нужна и если нужна то для копания чужих больших проектов. Для своих достаточно ctags. Слишком умный анализ исходников (а-ля Eclipse) тоже плох (в исходниках могут быть ошибки и глупо, что из-за этого перестаёт нормально работать редактор, да и настраивать его под каждый проект утомительно).
Что обычно пользуют. Да не знаю даже. Классика жанра, что в мире есть два редактора: Vim и Emacs. А остальное жалкие поделки. Из поделок вспоминается FTE, jedit, programmers notepad... я уж не в курсе. Второй десяток лет только Vim.
[ZX]