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

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

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

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

Сообщение Alexey_N »

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

Сообщение Alexey_N »

2 Мяукните!

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

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

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

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

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

Сообщение BorisSPB »

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

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

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

Сообщение 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% (подкл. ОС).
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 606
Зарегистрирован: Вт июн 25, 2013 18:45:07

Сообщение 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 сырой это конечно печально, но вполне поправимо.
Вымогатель припоя
Аватара пользователя
Сообщения: 606
Зарегистрирован: Вт июн 25, 2013 18:45:07

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

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

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

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

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

Сообщение Alexey_N »

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

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

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

Сообщение scorpi_0n »

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

Сообщение baghear »

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

Сообщение Alexey_N »

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

Сообщение 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

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

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

Сообщение Alexey_N »

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

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

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

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

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

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

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

Сообщение Alexey_N »

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

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