Нужно написать на ассемблере на stm32f4discovery

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Сообщение kras »

По одной дисциплине в институте мне нужно написать любую (!) программу на ассемблере для любого микроконтроллера. Вот ушел у меня взгляд на плату, которая давно лежит и более-менее работает на С. Я сижу на Linux+Eclipse. Можно использовать другие средства. Как можно создать на ассемблере проект, где об этом почитать? Ну то есть задача сводится к тому, чтобы на каком-нибудь мк, который поддерживает stlink, реализовать устройство с прошивкой на асм, лучше, конечно, использовать возможности платы.
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

Реклама
Опытный кот
Аватара пользователя
Сообщения: 838
Зарегистрирован: Вт апр 12, 2011 18:38:19
Откуда: с Земли

Сообщение coredumped »

Вы хоть определитесь, что устройство делать должно.
Вот, например - работает, но ничего не делает :)

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

L1:NOP
B L1 
Все будет только лучше, в крайнем случае - хуже.
Вымогатель припоя
Сообщения: 671
Зарегистрирован: Вт июн 29, 2010 12:31:49

Сообщение TripleKill »

Типа FFT :)) Вычисляет амплитуду сигнала определённой частоты в попугаях, при уходе частоты попугаев будет меньше.
Возможностей платы тут нет, зато есть возможности самого камня - используется FPU для взятия квадратного корня.

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

ExtractAmp   PROC

		MOV R8, #0
		MOV R9, #0
		MOV R10, #0
		MOV R11, #0
		
		
label0
		LDR R4, [R2,R3]
		
		LDR R6, [R0,R3]
		LDR R7, [R1,R3]
		
		SMLAL R8, R9, R4, R6
		SMLAL R10, R11, R4, R7
		
		CBZ R3, label1
		SUB R3, #4
		B label0
		
label1
        
		LSR R8, #4
		LSL R9, #28
		ADD R8, R8, R9
		
        LSR R10, #4
		LSL R11, #28
		ADD R10, R10, R11
		
		VMOV S0, R8
		VCVT.F32.S32 S0, S0
		
		VMOV S1, R10
		VCVT.F32.S32 S1, S1
		
		VMUL.F32 S0,S0,S0
		VMUL.F32 S1,S1,S1
		VADD.F32 S0,S0,S1
        VSQRT.F32 S0,S0
		
		BX  LR
		
		ENDP
По поводу ссылки, данной выше. У меня в кейле асм-файлы имеют расширение *.s. Хотя может он и *.asm понимает.
Реклама
Эиком - электронные компоненты и радиодетали
Вымогатель припоя
Аватара пользователя
Сообщения: 535
Зарегистрирован: Вт авг 28, 2012 22:21:33

Сообщение menzoda »

Для начала все же лучше определиться, какой конкретно алгоритм/программу/функцию хочется реализовать. Потом надо определиться с помощью каких инструментов это будет реализовываться, ибо что-то мне подсказывает, что GCC'шный ассемблер может отличаться от родного ARM'овского. Или нет? Подправьте меня, если я ошибаюсь - никогда не пользовался Eclipse+GCC.
А пока получается "хочу того, не знаю чего".
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

Автор, похоже забил, еще по теме: http://teplofizik.diary.ru/?tag=1082057
Реклама
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Сообщение kras »

Да можно вообще для начала ограничиться выводом на порт 1. Там в первом проекте пока увидель только компилятор от Keil vision, сейчас еще почитаю по ссылкам. А ладно, я знаю, как прошить stm32f2-discovery на Linux, теперь вопрос в создании файла elf с помощью asm, вот я пока не знаю, реализуемо ли это на Linux, это красивее звучит. Так на ассемблере я писал для masm32 под ноут, а с asm под stm тоже буду разбираться.
Вообще дальнейшим шагом хочу вбить в память реализацию сигнала, типа ее принимает микросхема, это сигнал с частотой допплера, и схема будет частотомером с выводом на дисплей допплеровской частоты. Вот тут и fft тогда, как первый шаг, поможет.
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Сообщение kras »

http://www.terraelectronica.ru/idea.php?ID=374 Сам для себя пишу ссылку, так как не дома:) Там в тулчейне есть компилер асм, другое дело настроить и откомпилировать хотя бы без IDE все, пока не могу понять это. А ссылки с программами супер, последняя вообще, cейчас шарюсь по проектам:)
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

чтобы настроить и откомпилировать хотя бы без IDE надо использовать cmake
http://we.easyelectronics.ru/STM32/ispo ... nukse.html
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Не обязательно. Достаточно одного gcc
cmake - для сборки сложного проекта (с библиотеками, кучей файлов)
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Сообщение kras »

Блин, сейчас попробовал, пока кота за хвост тяну:) Буду дальше разбираться, но может объясните тогда еще другой путь? У меня пока не получилось скомпилировать с нуля свой проект с библиотеками, а пустой получилось, на С на Eclipse, уже сколько пробовал, все работает. А на Eclipse что нужно переделать, чтобы тот же самый рабочий проект, работающий, например, только с одним пином микросхемы, переписать на ассемблере и скомпилить? Я так понял, что для ассемблерских файлов компилятор GCC?
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Я так понял, что для ассемблерских файлов компилятор GCC?
Да, только сборка с поддержкой cortex'ов с системой команд thumb. Это всякие тулчейны, например Sourcery CodeBench Lite Edition.
Вот почитайте: http://www.robocraft.ru/blog/ARM/653.html
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Сообщение kras »

Блин, я хз пока, решил компилить проект для eclipse с помощью cmake, по этой самой ссылке http://we.easyelectronics.ru/STM32/razr ... ocd_2.html, так вот, у меня 4xx, а не 10x плата, поэтому пытался переписать адреса и тп. Вот не знаю, где именно ошибку допустил, может компилятор не тот, но пока логи таковы:
cd /home/eugene/Desktop/project
root@eugene-R59P-R60P-R61P:/home/eugene/Desktop/project# cmake -G "Eclipse CDT4 - Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=<путь к файлу тулчейна> -DCMAKE_BUILD_TYPE=Debug ./
-bash: путь: No such file or directory
root@eugene-R59P-R60P-R61P:/home/eugene/Desktop/project# cmake -G "Eclipse CDT4 - Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=/home/eugene/CodeSourcery/Sourcery_CodeBench/bin/arm-none-linux-gnueabi-gcc -DCMAKE_BUILD_TYPE=Debug ./
CMake Error: Error in cmake code at
/home/eugene/CodeSourcery/Sourcery_CodeBench/bin/arm-none-linux-gnueabi-gcc:1:
Parse error. Expected a command name, got unquoted argument with text "ELF".
CMake Error at /usr/local/share/cmake-2.8/Modules/CMakeDetermineSystem.cmake:92 (MESSAGE):
Could not find toolchain file:
/home/eugene/CodeSourcery/Sourcery_CodeBench/bin/arm-none-linux-gnueabi-gcc
Call Stack (most recent call first):
CMakeLists.txt:2 (PROJECT)


CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_C_COMPILER_ENV_VAR
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_C_COMPILER
CMake Error: Could not find cmake module file:/home/eugene/Desktop/project/CMakeFiles/CMakeCCompiler.cmake
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_CXX_COMPILER_ENV_VAR
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_CXX_COMPILER
CMake Error: Could not find cmake module file:/home/eugene/Desktop/project/CMakeFiles/CMakeCXXCompiler.cmake
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!
Еще скажу, что у меня до этого были на компе тулчейн и либа stm32. Версии могут не совпадать. Хотя вроде просто тулчейн не нашел, но я, вроде, сам адрем тот прописал. Ваши предположения?

А так норм?
root@eugene-R59P-R60P-R61P:/home/eugene/Desktop/project# cmake -G "Eclipse CDT4 - Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=/home/eugene/CodeSourcery/Sourcery_CodeBench/bin/ -DCMAKE_BUILD_TYPE=Debug ./
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- The ASM compiler identification is GNU
-- Found assembler: /usr/bin/as
-- Loaded CMakeASMInformation - ASM support is still experimental, please report issues
-- Configuring done
CMake Error at CMakeLists.txt:84 (ADD_EXECUTABLE):
Cannot find source file "main.c". Tried extensions .c .C .c++ .cc .cpp
.cxx .m .M .mm .h .hh .h++ .hm .hpp .hxx .in .txx


-- Build files have been written to: /home/eugene/Desktop/project
Мне еще и main.c надо в проект добавить?

Короче остановился на том, что из примера (если я правильно понял, что это пример), я скопировал все файлы, запустил Cmake, он вообще не ругался, но проекта я так и не получил. Либо не понял, где он.
Последний раз редактировалось kras Чт ноя 08, 2012 15:51:03, всего редактировалось 2 раза.
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Мне еще и main.c надо в проект добавить?
Да, конечно. Хотя я сам не пробовал ни разу работать с ассемблером на STM32
Вот, полностью по вашей теме: http://we.easyelectronics.ru/AVR/assemb ... r-gcc.html
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Сообщение kras »

О, там по ссылке можно справочник по командам еще дня 2 читать:)
Короче остановился на том, что из примера (если я правильно понял, что это пример), я скопировал все файлы, запустил Cmake, он вообще не ругался, но проекта я так и не получил. Либо не понял, где он.
Зато у меня провал, когда в eclipse продую сделать Import, пишет, в какую бы папку внутри проекта не зашел, что нет данных для импортирования
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Вы хотите за час всё сделать? Тема довольно обширная. Курите ссылки, пробуйте, анализируйте, и всё получится. :)
Вымогатель припоя
Аватара пользователя
Сообщения: 535
Зарегистрирован: Вт авг 28, 2012 22:21:33

Сообщение menzoda »

Как вариант предлагаю следующее:
1. Скачиваем крякнутую Keil MDK-ARM, которая из коробки делает все и без проблем.
2. Читаем ARM'овские документы про набор команд Cortex-M и вообще про ARM'овский ассемблер. Я запустил первый проект через несколько часов, а более-менее разобрался - за несколько дней.
3. ...
4. Профит!
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Сообщение kras »

Keil можно параллельно, но я не хочу пока полагаться на Windows или эмуляторы, хочу чистый Linux, а у меня времени разобраться еще 1.5 месяца есть. А у меня еще одна проблема. Ну насчет нее я уже пытался соображать, пока слабо мне. Вот есть в Software Center сборка Eclipse Indigo. В свое время я установил ее. Она заглючила: проект не открывается, плагины отображаются, но использовать их при создании проекта нельзя и тп. Не знаю, что за лага такая, но о ней много написано в нете. Я пробовал удалить ее, пробовал вручную удалить все плагины, но пока все тщетно, программа даже при переустановке остается глюкнутой.
Проблема в том, что пока я нашел только такое решение: снести стандартно/через консоль, удалить еще пару файлов и установить с сайта релиз. Так и сделал, работает, но старая программа просто работала, наверное, по-другому, релиз с Software Center остался мертвым у меня. Вот теперь предложение: установить keil. Я не хочу исползовать эмулятор Windows, поэтому решил попробовать ARM Development Studio 5. Там Eclipse, который, видимо, устанавливается, как старая версия, которая у меня глючила! Вот установил я ее, лицензию ввел, создал новый проект из небольшого выбора (что сначала показалось странным), и проект не открывается. Думаю, это точно тот старый глюк;(
Последний раз редактировалось kras Пт ноя 09, 2012 07:57:53, всего редактировалось 3 раза.
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Сообщение kras »

А можно где-нибудь наиболее популярно прочитать, из чего состоит devkitpro ARM (http://sourceforge.net/projects/devkitpro/) и зачем нужны его либы и другие части, как подготовить комп, чтобы его установить? Я попробовал, по getting started на оффициальном сайте, но у меня чего-то не смогло установить и я так и не разобрался. С самого начала консоль написала, что не знает команду usr/bin make like make (примерно, просто я уже закрыл консоль).

И еще сколько читаю, так и не могу понять, зачем нужны Cortex M4 и тп, если ARM11 самый сильный? Или архитектуры по производительности отличаются? Ну ценовой фактор, может быть, понятен, то есть для оптимальных решений. А вот если у меня денег неограничено, а я хочу самый передовой, чтобы изучить именно лучшую модель, чтобы она мало мощности потребляла относительно AMD или Intel, то это ARM11?
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Во-первых, что вы зациклились на этих IDE? Напишите пока проект без использования всяких рюшек и библиотек, с использованием текстового редактора и компилятора.
Во-вторых, не путайте процессор (ARM11) и контроллер (Cortex M4). Это разные вещи.
Ответить

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