STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
Мяукните!
Открыл глаза
Сообщения: 63
Зарегистрирован: Пн апр 20, 2015 14:00:32
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение Мяукните! »

Да, мой сайт!
Реклама
Аватара пользователя
Alexey_N
Сверлит текстолит когтями
Сообщения: 1273
Зарегистрирован: Вт фев 01, 2011 17:56:40
Откуда: г. Жуковка, Брянская обл.

Re: STM32 новичку в ARM что к чему

Сообщение Alexey_N »

Спасибо вам :)) Он очень помог мне в это деле.
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
Реклама
Аватара пользователя
Alexey_N
Сверлит текстолит когтями
Сообщения: 1273
Зарегистрирован: Вт фев 01, 2011 17:56:40
Откуда: г. Жуковка, Брянская обл.

Re: STM32 новичку в ARM что к чему

Сообщение Alexey_N »

2 Мяукните!

Кстати, там на сайте все примеры на gcc as, я с него тоже начал, но так и не нашел как переносить команду на несколько строк? Просто бывают весьма длинные команды (например комбинация флагов) и код становится плохо читаемым без этого.
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
Аватара пользователя
Мяукните!
Открыл глаза
Сообщения: 63
Зарегистрирован: Пн апр 20, 2015 14:00:32
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение Мяукните! »

А у меня стоит перенос строк по границе окна, как-то и не заморачиваюсь. На арм-овский ассемблер я так и не нашёл документации, в принципе. Какие-то обрывки 20-летней давности..

И тут жизнь получила совершенно неожиданный поворот! Я сейчас жду beaglebone, что бы раскопать её аналогичным образом на ассемблере. Установил CCSv6 и обнаружил интересную штуку - TI arm compiler. Впервые о таком слышу. AM3359 мой первый камушек от ti, а там ещё совершенно улётный, одноцикловый PRU с приличным ассемблером. Но главное, к ним есть полноценная документация.

И вот очень эта штука меня заинтересовала, на предмет совместимости со всеми ARM камушками, а не только ti. Действительно, в составе CCS имеется набор файлов, с виду похожий на binutils. Это может иметь хорошее продолжение.
Вложения
TI binutils.png
(41.42 КБ) 263 скачивания
Реклама
Эиком - электронные компоненты и радиодетали
BorisSPB
Встал на лапы
Сообщения: 145
Зарегистрирован: Ср фев 01, 2012 10:55:53

Re: STM32 новичку в ARM что к чему

Сообщение BorisSPB »

Alexey_N писал(а):как переносить команду на несколько строк?
Надо воспользоваться g++ компилятором для ассемблерного файла, расширение у этого файла обязательно должно быть .S(именно большая S).
Тогда компилятор сначала прогонит исходник через препроцессор, а затем откомпилирует ассемблер. В этом случае разбиение строк работает обычным образом:

Код: Выделить всё

	blx	\
                   r0
Реклама
Аватара пользователя
Alexey_N
Сверлит текстолит когтями
Сообщения: 1273
Зарегистрирован: Вт фев 01, 2011 17:56:40
Откуда: г. Жуковка, Брянская обл.

Re: STM32 новичку в ARM что к чему

Сообщение Alexey_N »

2 BorisSPB
Спасибо за ответ. Попробую.
2 Мяукните!
Я вытащил из arm dev studio armasm.exe, но пока не изучал его. Сейчас fasmarm использую, в нем привычные возможности из x86 версии, но пока он сыроват, dwarf кривовато генерит. Все еще подумываю вернуться на gnu as, но отсутсвующий в нем препроцессор и необходимость использования сишного что-то не радует. С другой стороны, fasmarm не может сразу генерировать dwarf и bin (или hex), добавлять условное ассемблирование в него под разные форматы - извращение, поэтому использую objdump из gnu. В общем посмотрим, что лучше будет ...
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
Реклама
Аватара пользователя
Andrew Martin
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Вт июн 25, 2013 18:45:07

Re: STM32 новичку в ARM что к чему

Сообщение Andrew Martin »

Alexey_N писал(а):С другой стороны, fasmarm не может сразу генерировать dwarf и bin (или hex), добавлять условное ассемблирование в него под разные форматы - извращение, поэтому использую objcopy из gnu.
А gas вообще ничего не может кроме объектника генерить, который нужно ещё линковать в гнома для отладки, а потом конвертировать в хекс или бинарник для прошивки (если программатор не поддерживает прошивку эльфом) :)
Всё равно батник писать.

И почему это извращение? Изменяются всего несколько строк в шапке файла - и всё. Можно и условным ассемблированием сделать.
А чтобы не зависеть от секций (которых в bin просто нет) можно RAM вести так:

Код: Выделить всё

SRAM_POINTER = SRAM_START     ;в самом начале программы

virtual at SRAM_POINTER
start_data1:
var1 dw ?
var2 dh ?
.
.
.
.
.
end_data1:
end virtual

SRAM_POINTER = SRAM_POINTER + (end_data1-start_data1)

;и так далее

Вариантов масса.

То что fasmarm сырой это конечно печально, но вполне поправимо.
Аватара пользователя
Andrew Martin
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Вт июн 25, 2013 18:45:07

Re: STM32 новичку в ARM что к чему

Сообщение Andrew Martin »

Мяукните! писал(а):На арм-овский ассемблер я так и не нашёл документации, в принципе. Какие-то обрывки 20-летней давности..

В дистрибутиве Кейла есть справка по ARMASM/ARMLINK и т.д.
Но даже при этом он ужасен.
Меня сразу взбесил тем, что придрался к табуляции, притом ладно бы предупреждение (как например микрочиповский асм делает), а то ОШИБКА! :o
Еле понял в чём дело, сверяя свой исходник с аналогичным из примера...
Аватара пользователя
Andrew Martin
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Вт июн 25, 2013 18:45:07

Re: STM32 новичку в ARM что к чему

Сообщение Andrew Martin »

Сейчас fasm пошел по иному пути развития - классический вариант скорее всего забросят.
Батька Томаш решил развивать fasmg - это по сути ОЧЕНЬ навороченный препроцессор от фасма с многими дополнительными фичами.
На этот fasmg создаётся набор инкладов, с которыми можно его заставить генерировать файлы почти любого формата и, что самое главное, НА ЛЮБУЮ ПЛАТФОРМУ.
Уже есть инклады для AVR, 8051, и даже JVM.
Другое дело что набор обширный, а сложность инструкций ARM высокая, поэтому вероятнее всего fasmg и fasmarm будут жить и развиваться параллельно.
Аватара пользователя
Alexey_N
Сверлит текстолит когтями
Сообщения: 1273
Зарегистрирован: Вт фев 01, 2011 17:56:40
Откуда: г. Жуковка, Брянская обл.

Re: STM32 новичку в ARM что к чему

Сообщение Alexey_N »

2 Andrew Martin
Тут получается как: хотелось бы использовать что-то одно, но фасм не содержит дизассемблера и компилить fasm'ом приходится в dwarf, поскольку он нормально/читабельно дизассеблируется objdump'ом и из него можно получить bin.
Согласен с вами, что можно и таким образом бинарник вести, как вы предложили, поскольку препроцессор у фасма неслабый. Но опять же как потом с него получить нормальный листинг с указанием смещений инструкций?
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
Аватара пользователя
Мяукните!
Открыл глаза
Сообщения: 63
Зарегистрирован: Пн апр 20, 2015 14:00:32
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение Мяукните! »

Alexey_N писал(а):подумываю вернуться на gnu as
Возвращайтесь. Он на сегодня лучший. Отличный повод, что бы забыть всё остальное, освободиться так сказать!
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Re: STM32 новичку в ARM что к чему

Сообщение scorpi_0n »

Читаю и думаю. Вы что это всё серьёзно? На таких камнях на АСМе уже не пишут. Ибо никакого смысла в этом просто нет.
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Re: STM32 новичку в ARM что к чему

Сообщение baghear »

Знать asm конечно не помешает, при вкл оптимизации например, чтобы посмотреть что там натворил компилятор, но писать полностью проекты это через-чур.
Аватара пользователя
Alexey_N
Сверлит текстолит когтями
Сообщения: 1273
Зарегистрирован: Вт фев 01, 2011 17:56:40
Откуда: г. Жуковка, Брянская обл.

Re: STM32 новичку в ARM что к чему

Сообщение Alexey_N »

Мяукните! писал(а):
Alexey_N писал(а):подумываю вернуться на gnu as
Возвращайтесь. Он на сегодня лучший. Отличный повод, что бы забыть всё остальное, освободиться так сказать!
Не понял что вы хотели этим сказать. На сарказм похоже.
scorpi_0n писал(а):Вы что это всё серьёзно? На таких камнях на АСМе уже не пишут. Ибо никакого смысла в этом просто нет.
baghear писал(а):но писать полностью проекты это через-чур.
Серьезно, ничего сложного в асме нету (под win я тоже на асме программировал), с нормальным комментированием все отлично пишется, тем более, что это хобби.
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
Аватара пользователя
Andrew Martin
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Вт июн 25, 2013 18:45:07

Re: STM32 новичку в ARM что к чему

Сообщение Andrew Martin »

Alexey_N писал(а):Но опять же как потом с него получить нормальный листинг с указанием смещений инструкций?
Если дело только в этом - компилируйте бинарник с ключем -s, будет генерироваться файл отладочной информации. Натравливаете на него listing.exe и получаете листинг

Код: Выделить всё

                                                                _reset_handler:
                                                                	;Disable interrupts
000000C4: 72 B6                                                 	cpsid   iflags_i
                                                                	;Enable peripheral clock for GPIOA
000000C6: 11 48                                                 	ldr	r0,[.rcc_base]
                                                                	virtual at r0
                                                                	.rcc	RCC_TypeDef
                                                                	end virtual
000000C8: 42 69                                                 	ldr	r2,[.rcc.AHBENR]		
000000CA: 01 21 49 04                                           	ldbit	r1,RCC_AHBENR_GPIOAEN
000000CE: 0A 43                                                 	orrs	r2,r1
000000D0: 42 61                                                 	str	r2,[.rcc.AHBENR]
000000D2: 0D 48                                                 	ldr	r0,[.gpioa_base]

Аватара пользователя
Мяукните!
Открыл глаза
Сообщения: 63
Зарегистрирован: Пн апр 20, 2015 14:00:32
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение Мяукните! »

Alexey_N писал(а):Не понял что вы хотели этим сказать. На сарказм похоже.
До GCC я всё перепробовал. Остановился на gcc as. Это идеал. Главное ничего лишнего.
Аватара пользователя
Alexey_N
Сверлит текстолит когтями
Сообщения: 1273
Зарегистрирован: Вт фев 01, 2011 17:56:40
Откуда: г. Жуковка, Брянская обл.

Re: STM32 новичку в ARM что к чему

Сообщение Alexey_N »

Andrew Martin писал(а):Натравливаете на него listing.exe и получаете листинг
А этот listing.exe откуда брать?

2 Мяукните!
А fasmarm пробовали?
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
Аватара пользователя
Andrew Martin
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Вт июн 25, 2013 18:45:07

Re: STM32 новичку в ARM что к чему

Сообщение Andrew Martin »

Alexey_N писал(а): А этот listing.exe откуда брать?
Странно, программируя на фасме не знать таких вещей :?
В дистрибутиве FASM (обычном под х86) есть папка TOOLS/WIN32, в ней файл исходника LISTING.ASM. Компилируете его фасмом и получаете LISTING.EXE.

Плагины на Ольку вам известны? Например, fasolly?
Аватара пользователя
Andrew Martin
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Вт июн 25, 2013 18:45:07

Re: STM32 новичку в ARM что к чему

Сообщение Andrew Martin »

Мяукните! писал(а):Главное ничего лишнего.
Да уж, возможностями gas действительно не отягощен :)))
Аватара пользователя
Alexey_N
Сверлит текстолит когтями
Сообщения: 1273
Зарегистрирован: Вт фев 01, 2011 17:56:40
Откуда: г. Жуковка, Брянская обл.

Re: STM32 новичку в ARM что к чему

Сообщение Alexey_N »

Andrew Martin писал(а):Странно, программируя на фасме не знать таких вещей :?
Ну почему же, я, к примеру, никогда не пользовался тем, что в tools - не было необходимости, отладчика (OllyDbg) было достаточно. Но, буду знать теперь. Спасибо.
Andrew Martin писал(а):Плагины на Ольку вам известны? Например, fasolly?
Известно, что они есть, но никогда не пользовался.
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
Ответить

Вернуться в «ARM»