LINUX.ORG.RU

разработка для ARM

 , , ,


2

4

мне тут люди не сговариваясь советуют купить и использовать для своих целей STM32F4DISCOVERY, в связи с чем у меня вопрос, а какими средствами мне вести под него разработку? как пользоваться дебагом? какую литературу читать если в ARMе я не в зуб ногой?

я так понимаю, что данная демоплата не предполагает установки linux на нее, но это мне пока и ненужно. более того, для того чтобы получше изучить архитектуру, абстракции в виде операционной системы или ЯПВУ мне будут только мешать.

а еще я боюсь, что я куплю ее и мне будет на выбор или уродливая IDE под оффтопик или еще более уродливая IDE на java, после чего я плюну и выброшу все в окно.

хочется няшности: vim, ANSI C, gcc, gdb, assembler конечно.

аппликэйшн у меня будет примерно вот такой:
http://ru-radio-electr.livejournal.com/1047113.html
http://nowere.net/b/res/82734.html

я чувствую себя нубом задающим тупые вопросы. я даже не представляю себе примерный ассортимент ARM based MCU, потому что их делает кто не попадя и называет как хочет. или я не прав?

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

пусть даже описание будет достаточно поверхностным, это даже лучше, потому что теретический бэкграунд у меня есть, главное чтобы я пошел по принципиально проходимому пути.

живу на gentoo, так что можете сразу советовать оверлэи и тулчейны

кроме того я совершенно не вцепился мертвой хваткой в данную конкретную плату или в ARM вообще, может быть MIPS даже интереснее будет?


что именно разрабатывать собрался? просто попробовать как оно, поучить асм, и т.п.? любой девайс на андроиде с подходящим процом, и в путь. SDK есть, поддерживает и ARM и MIPS.

upd: ooops. извиняюсь, не сходил по линкам. задача подразумевает нечто другое, тут я не помогу.

waker ★★★★★
()
Последнее исправление: waker (всего исправлений: 1)

кстати, а что не так с гетеродинированием? БПФ+сдвиг дадут тот же резултат, потому что в пространстве частот умножение сигнала на частоту эквивалентно свертке спектра с импульсной функцией, находящейся на данной частоте, то есть сдвигу?

prischeyadro ★★★☆☆
()

к вышесказанному добавлю, что драйвер отладчика stlink (того, что на этой плате) есть в оверлее stuff. По моей просьбе добавил один хороший человек

feofan ★★★★★
()
Ответ на: комментарий от feofan

жаль только, что не в одном оверлее нет свежего eclipse cdt...

feofan ★★★★★
()

тулчейн прекрасно собирается crosstool-ng, gdb работает с помощью https://github.com/texane/stlink/

В этой http://www.libopencm3.org/wiki/Main_Page библиотеке есть примеры кода, скрипты для загрузчика, etc.

Библиотеки от ST тоже собираются gcc, но готовых мейкфайлов для этой борды в комплекте нет.

AptGet ★★★
()
Ответ на: комментарий от prischeyadro

эквивалентно свертке спектра с импульсной функцией, находящейся на данной частоте

вот этого не понял. какая может быть импульсная функция в частотном домене? и как импульсная функция может находится на какой-то частоте, если она по определению занимает весь спектр?

а по сути вопроса - да, разность между частотами спектра остается той же, а вот отношение меняется в разы.

вот копипаста:

один очень важный момент. после смесителя, кажется, не сохраняются гармонические соотношения. т.е. если на входе у нас 30 и 40 кГц составляющие, относящиеся как 3 к 4, то при частоте гетеродина в 25кГц, на выходе мы получим в нижней половине 5 и 15кГц, что соотносится как 1 к 3.

n0153
() автор топика
Ответ на: комментарий от AptGet

теперь касаемо сабжа

тулчейны и отладчики это все хоршо. но нужно еще чтиво, преимущественно про сам ARM.

что читать?

желательно, конечно, чтобы в чтиве было разжевано все на примере опенсорсной среды разработки

ну или просто голая теория отвязанная от конкретного инструментария

или, если быть честным, лучше может начать на оффтопике и потом переползти на линукс?

n0153
() автор топика
Ответ на: комментарий от n0153

ну, начинать надо с книжки ARMARM, потом читать даташит на проц.

slapin ★★★★★
()
Ответ на: комментарий от n0153

Нет вообще никакой разницы под какой системой девелопить под микроконтроллеры. Если тебе под Линуксом стремно - сиди под виндой. Там тулзы все те же самые. Ну или укради IAR, под ним говорят нашему разработчику проще - можно вопросы задавать на сахарах с электрониксами. Некоторые, вон, под Linux девелопят не слезая с винды вообще, и даже удаленно не заходят. В эмбедке это модно.

slapin ★★★★★
()
Ответ на: комментарий от n0153

Тут http://www.st.com/internet/mcu/product/252140.jsp?redi=no даташиты, в гугле можно найти «The Definitive Guide to the ARM Cortex-M3», там про железо с примерами на ассемблере и сверхкраткое описание работы с GNU тулчейном. Но к M4 немного не подходит.

AptGet ★★★
()
Ответ на: комментарий от slapin

Ну или укради IAR, под ним говорят нашему разработчику проще

Врут. Там даже автокомплита нет. Если брать винду - стоит попробовать Coocox - бесплатную среду на базе эклипса от китайских братьев. Но в нем тоже не хватает гибкости. Наш отдел готовится к переходу на линукс и эклипс (для него есть плагин GNU ARM)

feofan ★★★★★
()
Ответ на: комментарий от n0153

Читать стоит reference manual и даташиты на конкретный камень и переферию. Этого достаточно.

feofan ★★★★★
()
Ответ на: комментарий от n0153

Преобразование Фурье синуса является дельта-функцией.

Если у тебя есть синус с частотой \omega, то его преобразование Фурье - дельта-функция, находящаяся в пространстве частот на частоте \omega.

Понял насчёт соотношений - видимо, остаётся тебе грануляризацию делать.

prischeyadro ★★★☆☆
()

может лучше выбрать здесь что нибудь на базе Cortex? После покупки получишь тулчейны, примеры, даташиты, есть форум где разработчики и пользователи помогут. Я сам там брал 9260, до сих пор жива, уже диодами ее облепил, подумываю что бы с нее замутить. Позже возьму себе платку с NOR-flash.

splinter ★★★★★
()
Ответ на: комментарий от n0153

тулчейны и отладчики это все хоршо. но нужно еще чтиво, преимущественно про сам ARM.

Не нужно. Читай доки к библиотеке периферийных компонентов от STM и примеры программ, заглядывая в даташит. Примеры идут в комплекте с библиотекой.

prischeyadro ★★★☆☆
()
Ответ на: комментарий от splinter

может лучше выбрать здесь что нибудь на базе Cortex?

там как я понял на них линуксы ставяться, а это мне совершенно не нужно в данном конкретном случае. потом - может быть.

n0153
() автор топика
Ответ на: комментарий от prischeyadro

то есть вы мне предлагаете абстрагироваться от архитектуры и тупо фигачить на Си?

а это правильно, начинать с высокого уровня и не знать ассемблера?

нашел вот это, правильно?: http://www.st.com/internet/mcu/product/252140.jsp

n0153
() автор топика
Ответ на: комментарий от n0153

Да, предлагаю тупо фигачить на Си. Но меня слушать необязательно, это вопрос холивара.

Если раньше с МК не работал - начинай с ассемблера, но лучше на АВР, там и ядро проще, и периферия проще. Напиши бегущий огонь на светодиодах и переходи на следующий уровень. Для образования в самый раз. Если работал и учил какой-нибудь ассемблер - сам поймёшь, даст ли тебе изучение ассемблера при переходе на новую архитектуру что-то полезное или нет.

prischeyadro ★★★☆☆
()
Ответ на: комментарий от prischeyadro

изучал AVR ассемблер, однако все что успел сделать, это помигать светодиодами через rs232 с компа. как-то просто так получается, что то применить негде, то программатора под руками нет. он не так уж кисло стоит, а компов с LPT у меня почти никогда не бывает.

то есть если я сейчас все-таки буду пробовать делать то что задумал на AVR - мне придется покупать программатор за 50 баксов, а это дороже чем демоплата с армом и дебагером, так что я очень крепко задумался.

тем боле арм это так актуально, вроде бы, а AVR кажется уже не в моде.

а где взять эти библиотеки и документацию к ним? только на диске с платой, я подозреваю?

а как эти библиотеки лицензируются?

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

интересно же.

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

n0153
() автор топика
Ответ на: комментарий от n0153

MIPS не предназначен для микроконтроллеров, в отличие от кортексов М-серии.

Библиотеки лицензируются под WTFPL-совместимой лицензией.

Найти их можно по твоей же ссылке, если ткнуть в кнопку «Design Support» и промотать вниз, до раздела «Firmware» - «STM32F4 DSP and standard peripherals library».

prischeyadro ★★★☆☆
()
Ответ на: комментарий от prischeyadro

да, я уже слил этот архив, распаковал и с ужасом пролистываю исходники.

а как мне собрать их?

взять эти исходники и по аналогии с тем что я найду здесь(http://www.libopencm3.org/wiki/Main_Page) написать мэйки?

кстати они пишут: You will need an installed ARM toolchain to build the library and the example applications. We recommend using summon-arm-toolchain to create one, this is the toolchain most developers use. We may not be able to help you with problems related to other toolchains.

если большинство девелоперов его юзают и это настолько критично что они не смогут мне помочь если у меня другой тулчейн, то почему его тут никто не упомянул?

думаете они преувеличивают?

вообще все проясняется потиху. я как-то не заметил сперва ссылку на libopencm3

n0153
() автор топика
Ответ на: комментарий от n0153

Я самым первым ответом дал ссылку на руководство по установке и настройке тулчейна.

prischeyadro ★★★☆☆
()

Присоединюсь

Я в своем проектике хочу использовать STM32, но, естественно, без «discovery». Нашел что-то про внутрисхемное программирование через какой-то преобразователь сигналов (что-то там с буквой J).

Вроде даже писали, что в линуксе работает, но я только историю успеха с эклипсом нашел. Понятное дело, этим УГ я пользоваться не собираюсь (у меня geany), так что хотелось бы услышать историй успеха (желательно — со ссылками на схемы, а то мне что-то в ЖЖшке никаких схем так и не показали, а сам я ничего путного не нагуглил — только подсоединение с вышеупомянутым «J», а хочется без сторонних железок).

Eddy_Em ☆☆☆☆☆
()
Ответ на: Присоединюсь от Eddy_Em

JTAG? Без него можно только загружать в память МК программы по UART, отлаживать (брейкпойнты, пошаговая отладка, просмотр/изменение и т.п.) не получится. Для JTAG придется покупать/собирать (весьма нетривиально) адаптер. Я, например, использую китайскую подделку J-LINK за $20 с aliexpress.

Схемы адаптеров (кроме самого J-LINK: http://de1fer.ru/?p=146) я особо не видел, ибо там все копирасты.

Отладка обычно работает по схеме (для быдлядских кейлов и всяких иаров): IDE -> велосипед-прослойка -> Драйвер -> JTAG адаптер -> Процессор.

Нормальные адаптеры умеют работать по схеме: IDE -> GDB -> <типа сеть> -> GDB Server (поставляется производителем адаптера) -> Драйвер -> JTAG адаптер -> Процессор.

Соответсвенно, если есть родной GDB сервер у адаптера, или он поддерживается OpenOCD (по сути - открытый универсальный сервер для различных адаптеров) то дебажится всё это дело обыкновенным gdb. В качестве IDE чаще используют Eclipse, т.к. он умеет нормально настраивать GDB.

Вот, например, стандартный gdb-скрипт для загрузки программы в память stm32 (адаптер - J-LInk): https://gist.github.com/3262976

P.S. Сам я использую cmake в качестве системы сборки - весьма удобно: https://github.com/ObKo/stm32-cmake

Kosyak ★★★★
()
Ответ на: комментарий от Kosyak

JTAG?

Ага. Отладка мне нафиг не нужна, я никогда ею не пользуюсь: написал программку, загрузил в чип, включил железяку. Работает как надо — ОК, не работает как надо — продолжаю ковырять код.

Схемы адаптеров я особо не видел

Жаль. Ладно, куплю JTAG. Лишь бы он надежно в линуксе работал.

https://github.com/ObKo/stm32-cmake

Ага, находил я и такое.

Ну, раз все просто, то такой вопрос: что за утилита используется для прошивки МК через JTAG? И нет ли каких подводных камней в самодельной внутрисхемной прошивке?

P.S. Я еще погуглю: можно ли собрать нормальный самодельный внутрисхемный программатор на каком-нибудь PIC с USB.

Eddy_Em ☆☆☆☆☆
()
Последнее исправление: Eddy_Em (всего исправлений: 1)
Ответ на: комментарий от Eddy_Em

В STM32 есть бутлоадер, которым можно шить через обычный USART. Некоторые крутые МК могут шится через USB (подключаются как Mass Storage).

Ну, раз все просто, то такой вопрос: что за утилита используется для прошивки МК через JTAG?

Не знаю, есть ли такие программы, в крайнем случае, можно заливать через GDB :)

P.S. Я еще погуглю: можно ли собрать нормальный самодельный внутрисхемный программатор на каком-нибудь PIC с USB.

Есть достаточно простые схемы на FT2232, вроде такого:http://www.joernonline.de/contrexx2/cms/index.php?page=126

Kosyak ★★★★
()
Ответ на: комментарий от Kosyak

Вообще, самые простые и удобные jtag'и - как раз на ft2232. J-LINK'и OpenOCD поддерживаются не все, последнюю прошивку так никто поддержать и не осилил. Простой модуль на ft2232 сделать в домашних условиях - пара часов. Если не на соплях - 2 вечера. Деталей там на $10-20

slapin ★★★★★
()
Ответ на: комментарий от Kosyak

В STM32 есть бутлоадер, которым можно шить через обычный USART. Некоторые крутые МК могут шится через USB (подключаются как Mass Storage).

Надо будет полюбопытствовать.

в крайнем случае, можно заливать через GDB

Что-то до такой жести доходить не хочется.

Есть достаточно простые схемы на FT2232

Спасибо. Посмотрю завтра на работе.

Eddy_Em ☆☆☆☆☆
()
9 октября 2012 г.
Ответ на: комментарий от Kosyak

Получил сегодня железо: макетку STM32-P103 и ST-LINK. Вот только не получается ничего залить: при запуске st-util на ST_LINK'е светодиод меняет цвет с красного на оранжевый, но вылезает ошибка — и тишина.

Не могу нагуглить, в чем беда.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Kosyak

Оказывается, одного только питания от ST-LINK не хватало (несмотря на то, что светодиод питания горел). Подключил питание от USB — смог прошить:

st-flash write stm32vldiscovery-linux-template.elf  0x08000000
2012-10-10T10:49:27 INFO src/stlink-common.c: Loading device parameters....
2012-10-10T10:49:27 INFO src/stlink-common.c: Device connected is: F1 Medium-density device, id 0x20036410
2012-10-10T10:49:27 INFO src/stlink-common.c: SRAM size: 0x5000 bytes (20 KiB), Flash: 0x20000 bytes (128 KiB) in pages of 1024 bytes
2012-10-10T10:49:27 INFO src/stlink-common.c: Attempting to write 99280 (0x183d0) bytes to stm32 address: 134217728 (0x8000000)
Flash page at addr: 0x08018000 erased
2012-10-10T10:49:31 INFO src/stlink-common.c: Finished erasing 97 pages of 1024 (0x400) bytes
2012-10-10T10:49:31 INFO src/stlink-common.c: Starting Flash write for VL core id
2012-10-10T10:49:31 INFO src/stlink-common.c: Successfully loaded flash loader in sram
 96/96 pages written
2012-10-10T10:49:39 INFO src/stlink-common.c: Starting verification of write complete
2012-10-10T10:49:41 INFO src/stlink-common.c: Flash written and verified! jolly good!
Теперь буду разбираться, почему ни хрена не мигает.

Eddy_Em ☆☆☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.