Нужно написать на ассемблере на stm32f4discovery
- Сообщения: 782
- Зарегистрирован: Вт апр 26, 2011 18:37:06
По одной дисциплине в институте мне нужно написать любую (!) программу на ассемблере для любого микроконтроллера. Вот ушел у меня взгляд на плату, которая давно лежит и более-менее работает на С. Я сижу на Linux+Eclipse. Можно использовать другие средства. Как можно создать на ассемблере проект, где об этом почитать? Ну то есть задача сводится к тому, чтобы на каком-нибудь мк, который поддерживает stlink, реализовать устройство с прошивкой на асм, лучше, конечно, использовать возможности платы.
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
- Реклама
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Вы хоть определитесь, что устройство делать должно.
Вот, например - работает, но ничего не делает
Вот, например - работает, но ничего не делает
Код: Выделить всё
L1:NOP
B L1
Все будет только лучше, в крайнем случае - хуже.
- Сообщения: 671
- Зарегистрирован: Вт июн 29, 2010 12:31:49
Типа FFT
Вычисляет амплитуду сигнала определённой частоты в попугаях, при уходе частоты попугаев будет меньше.
Возможностей платы тут нет, зато есть возможности самого камня - используется FPU для взятия квадратного корня.
По поводу ссылки, данной выше. У меня в кейле асм-файлы имеют расширение *.s. Хотя может он и *.asm понимает.
Возможностей платы тут нет, зато есть возможности самого камня - используется 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- Сообщения: 535
- Зарегистрирован: Вт авг 28, 2012 22:21:33
Для начала все же лучше определиться, какой конкретно алгоритм/программу/функцию хочется реализовать. Потом надо определиться с помощью каких инструментов это будет реализовываться, ибо что-то мне подсказывает, что GCC'шный ассемблер может отличаться от родного ARM'овского. Или нет? Подправьте меня, если я ошибаюсь - никогда не пользовался Eclipse+GCC.
А пока получается "хочу того, не знаю чего".
А пока получается "хочу того, не знаю чего".
- Реклама
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Автор, похоже забил, еще по теме: http://teplofizik.diary.ru/?tag=1082057
- Сообщения: 782
- Зарегистрирован: Вт апр 26, 2011 18:37:06
Да можно вообще для начала ограничиться выводом на порт 1. Там в первом проекте пока увидель только компилятор от Keil vision, сейчас еще почитаю по ссылкам. А ладно, я знаю, как прошить stm32f2-discovery на Linux, теперь вопрос в создании файла elf с помощью asm, вот я пока не знаю, реализуемо ли это на Linux, это красивее звучит. Так на ассемблере я писал для masm32 под ноут, а с asm под stm тоже буду разбираться.
Вообще дальнейшим шагом хочу вбить в память реализацию сигнала, типа ее принимает микросхема, это сигнал с частотой допплера, и схема будет частотомером с выводом на дисплей допплеровской частоты. Вот тут и fft тогда, как первый шаг, поможет.
Вообще дальнейшим шагом хочу вбить в память реализацию сигнала, типа ее принимает микросхема, это сигнал с частотой допплера, и схема будет частотомером с выводом на дисплей допплеровской частоты. Вот тут и fft тогда, как первый шаг, поможет.
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
- Сообщения: 782
- Зарегистрирован: Вт апр 26, 2011 18:37:06
http://www.terraelectronica.ru/idea.php?ID=374 Сам для себя пишу ссылку, так как не дома:) Там в тулчейне есть компилер асм, другое дело настроить и откомпилировать хотя бы без IDE все, пока не могу понять это. А ссылки с программами супер, последняя вообще, cейчас шарюсь по проектам:)
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
чтобы настроить и откомпилировать хотя бы без IDE надо использовать cmake
http://we.easyelectronics.ru/STM32/ispo ... nukse.html
http://we.easyelectronics.ru/STM32/ispo ... nukse.html
Не обязательно. Достаточно одного gcc
cmake - для сборки сложного проекта (с библиотеками, кучей файлов)
cmake - для сборки сложного проекта (с библиотеками, кучей файлов)
- Сообщения: 782
- Зарегистрирован: Вт апр 26, 2011 18:37:06
Блин, сейчас попробовал, пока кота за хвост тяну:) Буду дальше разбираться, но может объясните тогда еще другой путь? У меня пока не получилось скомпилировать с нуля свой проект с библиотеками, а пустой получилось, на С на Eclipse, уже сколько пробовал, все работает. А на Eclipse что нужно переделать, чтобы тот же самый рабочий проект, работающий, например, только с одним пином микросхемы, переписать на ассемблере и скомпилить? Я так понял, что для ассемблерских файлов компилятор GCC?
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Да, только сборка с поддержкой cortex'ов с системой команд thumb. Это всякие тулчейны, например Sourcery CodeBench Lite Edition.Я так понял, что для ассемблерских файлов компилятор GCC?
Вот почитайте: http://www.robocraft.ru/blog/ARM/653.html
- Сообщения: 782
- Зарегистрирован: Вт апр 26, 2011 18:37:06
Блин, я хз пока, решил компилить проект для eclipse с помощью cmake, по этой самой ссылке http://we.easyelectronics.ru/STM32/razr ... ocd_2.html, так вот, у меня 4xx, а не 10x плата, поэтому пытался переписать адреса и тп. Вот не знаю, где именно ошибку допустил, может компилятор не тот, но пока логи таковы:
А так норм?
Короче остановился на том, что из примера (если я правильно понял, что это пример), я скопировал все файлы, запустил Cmake, он вообще не ругался, но проекта я так и не получил. Либо не понял, где он.
Еще скажу, что у меня до этого были на компе тулчейн и либа stm32. Версии могут не совпадать. Хотя вроде просто тулчейн не нашел, но я, вроде, сам адрем тот прописал. Ваши предположения?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!
А так норм?
Мне еще и main.c надо в проект добавить?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
Короче остановился на том, что из примера (если я правильно понял, что это пример), я скопировал все файлы, запустил Cmake, он вообще не ругался, но проекта я так и не получил. Либо не понял, где он.
Последний раз редактировалось kras Чт ноя 08, 2012 15:51:03, всего редактировалось 2 раза.
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Да, конечно. Хотя я сам не пробовал ни разу работать с ассемблером на STM32Мне еще и main.c надо в проект добавить?
Вот, полностью по вашей теме: http://we.easyelectronics.ru/AVR/assemb ... r-gcc.html
- Сообщения: 782
- Зарегистрирован: Вт апр 26, 2011 18:37:06
О, там по ссылке можно справочник по командам еще дня 2 читать:)
Короче остановился на том, что из примера (если я правильно понял, что это пример), я скопировал все файлы, запустил Cmake, он вообще не ругался, но проекта я так и не получил. Либо не понял, где он.
Зато у меня провал, когда в eclipse продую сделать Import, пишет, в какую бы папку внутри проекта не зашел, что нет данных для импортирования
Короче остановился на том, что из примера (если я правильно понял, что это пример), я скопировал все файлы, запустил Cmake, он вообще не ругался, но проекта я так и не получил. Либо не понял, где он.
Зато у меня провал, когда в eclipse продую сделать Import, пишет, в какую бы папку внутри проекта не зашел, что нет данных для импортирования
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Вы хотите за час всё сделать? Тема довольно обширная. Курите ссылки, пробуйте, анализируйте, и всё получится. 
- Сообщения: 535
- Зарегистрирован: Вт авг 28, 2012 22:21:33
Как вариант предлагаю следующее:
1. Скачиваем крякнутую Keil MDK-ARM, которая из коробки делает все и без проблем.
2. Читаем ARM'овские документы про набор команд Cortex-M и вообще про ARM'овский ассемблер. Я запустил первый проект через несколько часов, а более-менее разобрался - за несколько дней.
3. ...
4. Профит!
1. Скачиваем крякнутую Keil MDK-ARM, которая из коробки делает все и без проблем.
2. Читаем ARM'овские документы про набор команд Cortex-M и вообще про ARM'овский ассемблер. Я запустил первый проект через несколько часов, а более-менее разобрался - за несколько дней.
3. ...
4. Профит!
- Сообщения: 782
- Зарегистрирован: Вт апр 26, 2011 18:37:06
Keil можно параллельно, но я не хочу пока полагаться на Windows или эмуляторы, хочу чистый Linux, а у меня времени разобраться еще 1.5 месяца есть. А у меня еще одна проблема. Ну насчет нее я уже пытался соображать, пока слабо мне. Вот есть в Software Center сборка Eclipse Indigo. В свое время я установил ее. Она заглючила: проект не открывается, плагины отображаются, но использовать их при создании проекта нельзя и тп. Не знаю, что за лага такая, но о ней много написано в нете. Я пробовал удалить ее, пробовал вручную удалить все плагины, но пока все тщетно, программа даже при переустановке остается глюкнутой.
Проблема в том, что пока я нашел только такое решение: снести стандартно/через консоль, удалить еще пару файлов и установить с сайта релиз. Так и сделал, работает, но старая программа просто работала, наверное, по-другому, релиз с Software Center остался мертвым у меня. Вот теперь предложение: установить keil. Я не хочу исползовать эмулятор Windows, поэтому решил попробовать ARM Development Studio 5. Там Eclipse, который, видимо, устанавливается, как старая версия, которая у меня глючила! Вот установил я ее, лицензию ввел, создал новый проект из небольшого выбора (что сначала показалось странным), и проект не открывается. Думаю, это точно тот старый глюк;(
Проблема в том, что пока я нашел только такое решение: снести стандартно/через консоль, удалить еще пару файлов и установить с сайта релиз. Так и сделал, работает, но старая программа просто работала, наверное, по-другому, релиз с Software Center остался мертвым у меня. Вот теперь предложение: установить keil. Я не хочу исползовать эмулятор Windows, поэтому решил попробовать ARM Development Studio 5. Там Eclipse, который, видимо, устанавливается, как старая версия, которая у меня глючила! Вот установил я ее, лицензию ввел, создал новый проект из небольшого выбора (что сначала показалось странным), и проект не открывается. Думаю, это точно тот старый глюк;(
Последний раз редактировалось kras Пт ноя 09, 2012 07:57:53, всего редактировалось 3 раза.
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
- Сообщения: 782
- Зарегистрирован: Вт апр 26, 2011 18:37:06
А можно где-нибудь наиболее популярно прочитать, из чего состоит devkitpro ARM (http://sourceforge.net/projects/devkitpro/) и зачем нужны его либы и другие части, как подготовить комп, чтобы его установить? Я попробовал, по getting started на оффициальном сайте, но у меня чего-то не смогло установить и я так и не разобрался. С самого начала консоль написала, что не знает команду usr/bin make like make (примерно, просто я уже закрыл консоль).
И еще сколько читаю, так и не могу понять, зачем нужны Cortex M4 и тп, если ARM11 самый сильный? Или архитектуры по производительности отличаются? Ну ценовой фактор, может быть, понятен, то есть для оптимальных решений. А вот если у меня денег неограничено, а я хочу самый передовой, чтобы изучить именно лучшую модель, чтобы она мало мощности потребляла относительно AMD или Intel, то это ARM11?
И еще сколько читаю, так и не могу понять, зачем нужны Cortex M4 и тп, если ARM11 самый сильный? Или архитектуры по производительности отличаются? Ну ценовой фактор, может быть, понятен, то есть для оптимальных решений. А вот если у меня денег неограничено, а я хочу самый передовой, чтобы изучить именно лучшую модель, чтобы она мало мощности потребляла относительно AMD или Intel, то это ARM11?
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Во-первых, что вы зациклились на этих IDE? Напишите пока проект без использования всяких рюшек и библиотек, с использованием текстового редактора и компилятора.
Во-вторых, не путайте процессор (ARM11) и контроллер (Cortex M4). Это разные вещи.
Во-вторых, не путайте процессор (ARM11) и контроллер (Cortex M4). Это разные вещи.


