Кто-то любит пирожки, а кто-то - нет.


В кейле создаём новый проект под плату STM32F4Discovery:

1. Project -> New project.
Выбираем папку и называем проект. Сохраняем.
2. Предлагают выбрать микроконтроллер. Окай.
В папочке ST ищем STM32F407VG и выбираем (он на плату вбубенен). Если его нету -- обновите Кейл.
3. Он предложит скопировать файл инициализации. Да, пусть копирует, он нужен.
читать дальше

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

UPD от 22.04.2013: могут быть проблемы с драйерами, в частности в Windows 8. чтобы всё установилось, надо в меню выбора режима загрузки (которое вызывается после биоса по F8) отключить проверку цифровой подписи. Возможно, есть иные пути решения проблемы, я не в курсе. В ХР такой проблемы нет точно.

Следующее >>

@темы: arm, электроника, stm32f4discovery, stm32

Комментарии
22.01.2013 в 10:41

Кто-то любит пирожки, а кто-то - нет.
Если вам нужно именно ANSI как кодировка редактора, то существует патченная библиотечка Кейла, которая позволяет видеть вместо кракозябр буквы (за исключением Ё, про которую забыли что ли).
22.04.2013 в 13:15

последовательный мини-курс был бы крайне интересен, если еще актуально)
22.04.2013 в 13:37

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

А конкретнее?) Язык Си в контексте МК, асм в контексе МК, работа с МК в принципе, всё равно какой язык (тогда Си) или ещё что?)
22.04.2013 в 13:50

и правда, невнимательность - мой конек)
было бы полезно программирование на си, в контексте кортекса 4го. если будут отступления в сторону общих принципов работы МК - буду весьма признательна, нет - сама постараюсь постепенно разобраться)
спасибо!
22.04.2013 в 14:09

Кто-то любит пирожки, а кто-то - нет.
Гость, окау, я попробую, хотя и не писал ничего такого раньше.
23.04.2013 в 10:27

Кто-то любит пирожки, а кто-то - нет.
Хм, в методичках обычно начинают всё от печки, с устройства МК, математики и логики, системы команд, а только потом идёт собственно работа с конкретным МК. Пока, наверное, нет смысла это переписывать. Начать с ядра, хм.
23.04.2013 в 15:12

и еще, в какой среде вы работаете?
23.04.2013 в 16:39

Кто-то любит пирожки, а кто-то - нет.
whitemind, в данном случае в Кейле (Keil uVision 4), проекты маленькие даже в триальном режиме работают. Переписывать на gnu надо если только ассемблерные файлы, да и то там команды те же, может что формат файла несколько отличается (я где-то писал об этом). Сишники же должны завестись с любым компилятором.
08.05.2013 в 11:36

Как можно съесть слона? По кусочку за раз
нужен кому-нибудь последовательный мини-курс по си/асму в принципе, в контексте сей платы?

в контексте КАКОЙ платы?

и, собственно, чем же отличается си для вообще любой платы/MCU? ;)
08.05.2013 в 11:51

Кто-то любит пирожки, а кто-то - нет.
DAndy_13, stm32f4discovery =) Я сделал пометку сейчас, да. Хотя в тегах есть, да и заголовок намекает.

В общем-то, ничем, но си достаточно низкоуровневый язык, чтобы код от одного МК можно было бы вот так сразу запустить на другом. Да и новичкам, возможно, вот так сразу и непонятно, а что писать-то? Если брать курс для винды какой-нибудь или линукса, так там всякие файлы, сокеты, консоль, API, вообще какая-то муть, и как это всё барахло может пригодиться в мире МК? То есть я знаю, что может, но это вовсе не очевидно. Фиг ты каким-нибудь sprintf светодиодом поморгаешь (хотя, можно, конечно), да и даже для этой платы чтобы получить вывод printf и иже с ними надо сделать ряд действий и настроек, о которых и не догадаешься вот так и добавить некоторый код. А иначе или зависнет в заглушках библиотеки, или нет, но результата тоже не будет. Есть же особенности, и не обойтись простым:


Хотя, конечно, у меня затруднения в связи с тем, что я не знаю, с чего начать и что там должно быть ^^"
08.05.2013 в 12:07

Как можно съесть слона? По кусочку за раз
эх...
жаль, что stm32f4discovery...

а я уж думал, что собрата по разуму встретил - хотел спросить про FSMC с внешней памятью
а на этой плате оно не выведено
08.05.2013 в 12:19

Кто-то любит пирожки, а кто-то - нет.
DAndy_13, на этой да, но я на STM32F207-SK что ли (не помню точное название) внешнюю память запускал, игрался.
08.05.2013 в 12:31

Как можно съесть слона? По кусочку за раз
ОК. ну а вдруг ;)

смотри
ситуация такая:
- есть SRAM, подключено к FSMC
- есть LCD, также подключено к FSMC
- работа каждого проверена по отдельности
- всё пашет отлично, но... занимаем CPU

дабы избежать бессмысленной загрузки проца заряжаю DMA на вычитку из SRAM в LCD и... выводится не весь обьём (((
08.05.2013 в 12:40

Кто-то любит пирожки, а кто-то - нет.
DAndy_13, ага, представляю, да.

Обрывается что ли? Хотя могу представить, сколько там данных. Если правильно помню, поток может за один запуск скопипастить до 64 килобайт данных (2 байта там что ли под размер)? Оо
08.05.2013 в 15:02

Как можно съесть слона? По кусочку за раз
данных там 150k ровно )))
LCD 320*240 точек
цветной - т.е каждая точка = 2 байта

во внешнем SRAM лежит фрэйм буфер, с которым работают все функции отрисовки (графические примитивы и прочее)

>Обрывается что ли?
пока ХЗ, что происходит...
08.05.2013 в 15:17

Кто-то любит пирожки, а кто-то - нет.
DAndy_13, тут минимум три зарядки DMA надо делать (150/64=2.3). Правда, они будут разного размера... Или четыре одинаковых по 38400 байт (1/4 экрана) в каждой передаче.
Хотя чего это я, никто ж не запрещает гонять данные шириной 16 или 32 бита? Тогда можно и в две, и в одну передачу влезть, если экран имеет не восьмибитную шину данных.

Ну, что с флагами потока, сколько данных он должен был передать (в посылках/байтах), что там осталось после завершения? Но да, если передаётся побайтно, то и не должно передаться всё целиком.
08.05.2013 в 15:22

Как можно съесть слона? По кусочку за раз
хм...
откуда взялась цифра "64 килобайт данных" ?

*ушёл курить даташит
08.05.2013 в 15:33

Кто-то любит пирожки, а кто-то - нет.
DAndy_13, я немного ошибся, 65 с копейками тысячи посылок (2^16 - 1) в одном потоке. Там есть поле количества, оно размером два байта. И есть флаги, управляющие размерами данных приёмника/источника.
DMA_SxNDTR — Number of data items to transfer (0 up to 65535).

Если передаётся за раз по байту, то как раз 64 килобайта и получается. Если передаём по 16 бит за раз, то 128 килобайт максимум. Ну а если по 32 бита, то всю четверть мегабайта можно переправить, один раз настроив DMA. Иначе придётся запускать несколько раз, чтоб передавать по частям...
08.05.2013 в 15:43

Как можно съесть слона? По кусочку за раз
teplofizik, от я балбес...

я как раз и заряжаю DMA_InitStructure.DMA_BufferSize = 320*240 (слов)
т.е. выходит 76800 -> и в итоге вижу 76800 - 65535 = 11265 точек (или почти 36 строк на LCD)

надо попробовать поставить размер item-а в u32
08.05.2013 в 16:06

Кто-то любит пирожки, а кто-то - нет.
DAndy_13, я так сразу и подумал =)

Если экран умеет 32 бита получать, то пожалуйста =) Главное, не забыть разделить количество правильно:
DMA_InitStructure.DMA_BufferSize = sizeof(Framebuffer) / sizeof(uint32_t);

BufferSize — это не размер буфера однако ж, а количество элементов. SPL такой SPL.
08.05.2013 в 19:30

Как можно съесть слона? По кусочку за раз
teplofizik, да, так и есть
вернулся домой, проверил u32 транзакции - всё ОК
спасибо за наводку!
08.05.2013 в 23:18

Кто-то любит пирожки, а кто-то - нет.
DAndy_13, ну и замечательно =)
02.10.2013 в 02:51

И курс по ассемблеру для М3 пожалуйста.
02.10.2013 в 08:53

Кто-то любит пирожки, а кто-то - нет.
Гость, в пределах обычных команд, не расширений (FPU/DSP), всё то же самое. Вот в M0 уже много-много чего нет. Вот широко известная картинка, коя есть во всех презентациях про новые контроллеры от ST:


Фиолетовым отмечены новые команды, добавившиеся в ядре M4. Практически все из них относятся к rкомандам DSP (цифровая обработка сигналов, векторные инструкции и типа того). Расширения для работы с плавающей точкой указаны внизу. Всё остальное — точно такое же. Отличия будут относиться к контроллерам, а не ядру. Адреса периферии, флаги и т.д, но это всё по аналогии можно подглядеть в даташите.
Да и нет у меня платы с контроллером на базе CM3, только CM0 и CM4...