Установка тулчейна дла работы с ARM7/Cortex. Вводная часть.

Сначала несколько вводных замечаний.

1. Если по чесноку, то мне нужен тулчейн для работы конкретно с STM32. Никакие другие ARM-ы и Cortex-ы других производителей меня пока не интересуют. Я знаю, их (разных процессоров) — много, местами они даже лучше STM32, но в данный момент у меня под руками несколько штук STM32, которые я собираюсь «портить».

2. Меня не интересует стандартная библиотека периферии и библиотека ядра. Это, конечно, интересные штучки, но они почти полностью зарывают собой уровень железа (регистров), и фантастически мощно «взрывают» флешь-память.

Если вы находитесь на раннем этапе освоения МК и хотите написать простую прогу типа «поморгать светодиодом», то эти библиотеки сделают вам медвежью услугу. Вы, без сомнения, напишите и удачно зальете в проц такую прогу, но посмотрите на ее размер — 12 килобайт!!! Ахренеть сколько! А теперь попробуйте разобраться в этих 12 килобайтах — где что лежит, и какой кусок исходного кода в какие машинные команды откомпилировался.

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

Понятно, что библиотеки предназначены снизить уровень вхождения в высокие технологии. Но снижая этот пороговый уровень фирмы-производители МК с одной стороны увеличивают количество продаж (ведь микросхемы покупают еще больше народа, ибо с МК сейчас стало легче работать), а с другой стороны — уровень разработок и качество самих разработок резко идет вниз. Ведь сейчас открыт путь всяким недоинженерам, пионерам и прочим розовым кофточкам. Чувствуете душок Ардуинов?

Для сравнения — прога, написанная без этих библиотек имеет размер примерно раз в 100 меньший — всего лишь 150-200 байт. Как вы думаете, на сколько четче вы будете представлять себе работу МК, если вы просмотрите эти 200 байт кода после компиляции? А потом, допустим, что-нибудь поменяете в проге и снова откомпилируете. И снова посмотрите что во что откомпилировалось. Сможете ли вы также легко просмотреть 12 кБ кода?

Да, библиотеки — это вата! Вата, которая не позволит вам больно стукнуться. Но зато вы ничему и не научитесь. Эти библиотеки не снижают количество знаний для написания программ, и даже не повышают производительность труда программиста. На самом деле они подменяют одни сущности другими. И вы, вместо изучения работы регистров, будете вынуждены изучать структуры и функции этих библиотек. Вас мягко и незаметно отвели от истины и всучили в руки суррогат, заменитель. Теперь вас можно разводить на другие, более фильдеперсовые библиотеки.

Только не валите всё в одно ведро — стандартные Си-шные библиотеки — это одно, а эти библиотеки (о которых я говорю) — совершенно другое. И на мой взгляд, не очень нужное. Лучше потратьте свое время на изучение работы железа, чем на изучение работы библиотеки для работы с этим железом. Даже звучит как каламбур! Вы же не просто программист уровня 1С:бухгалтерии, вы — программист-железячник. Вам сам бог велел знать железо.

Философия взгляд: сжатый (архивированный) файл не поддается дальнейшему сжатию. Это все знают, доказывать не надо. Так и тут — работа с железом (с регистрами периферийных устройств) — это сложность. От нее никуда не денешься. Более того, вам, как программисту-разработчику, нужно уметь управлять этой сложностью, а не избегать ее. Невозможно уменьшить сложность путем замены ее другой сложностью. При замене одной сложности на другую в конечном итоге вы будете вынуждены изучать обе сложности. Просто подумайте на эту тему.

3. Я не утверждаю, что этот способ (который я собираюсь описывать дальше) установки тулчейна истинный и единственно правильный. К счастью, Линукс предоставляет огромнейшие возможности для творчества. Я устанавливал много разных тулчейнов, и я не могу выделить какой-либо из них как более правильный или более качественный. Они все хороши, они все работают. И этот — тоже. Рассматривайте его как еще один, ничем особо не отличающийся от других.

4. Я буду описывать установку на дистрибутив Debian Squeeze 6.0.6. У меня старенький комп с очень скромными возможностями (P4 2.4 GHz, 512 МБ), и работа современных дистрибутивов Ubuntu (с Unity) вызывают приступы уныния и чувство обреченности. Теперь не только Шindows, а уже и Ubuntu разводят тебя на бабки — сходи купи новое мощное железо и получи тоже самое, только с бантиками и бубенчиками. За понты надо платить! Но у меня за последние полгода-год у меня произошли финансовые перемены не в мою пользу, и это путь мне «заказан».

Старые добрые версии Ubuntu, которые прекрасно работали и работают на моем железе, либо уже закончили поддержку (10.10), либо скоро закончат (10.04 LTS). Поэтому я вынужден искать им замену.

Наиболее близкий дистрибутив — Debian Squeeze. Если Ubuntu 10.04 занимает примерно 150-170 МБ оперативы, а 12.04 — и того паче — более 250-300 МБ, то скромняжка Debian занимает 90-92 МБ. Работает приятно быстро. Свистелки-перделки-бантики-фантики — это всё никак не влияет на качество и скорость написания программ для МК, следовательно — «фтопку!»

Таким образом, разворачиваем тулчейн на Debian. Тот же, кто будет разворачивать тулчейн на Ubuntu, напишите в своих комментариях, я постараюсь добавить в текст публикации Ubuntu-шную специфику.

А теперь давайте приступим к делу!

Я ориентируюсь вот на это руководство «Programming STM32 F2, F4 ARMs under Linux: A Tutorial from Scratch»

http://www.triplespark.net/elec/pdev/arm/stm32.html

, но мы не будем четко следовать его курсом, а будем немного отклоняться. Но кто хочет плыть самостоятельно, я не возражаю! Двигайтесь вперед. Не важно где, не важно как. Важно что вы не стоите на месте.

Update 08.07.2013

Вот тут описан процесс установки тулчейна:

https://zhevak.wordpress.com/2012/10/16/установка-тулчейна-для-работы-с-arm7cortex-уст/

Другого описания я так и не сделал. Этим тоже можно пользоваться, только читайте до конца, там есть небольшая фича, которую нужно подправить. Сегодня я производил установку этого тулчейна, и хочу заметить, что эта фича всё ещё существует.

Advertisements

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s