24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Ибо не нашел. Здесь мы будем обсуждать микроконтроллеры с этой потрясающей новой современной архитектурой. Только C/C++, IAR/GCC, никаких майкрософтских потуг.
Сам я столкнулся с ней на работе, уже полгода пишу под SAM3 и ATSAM91. Все нравки, внезапно стало доставлять. Планирую накатить линукс и сам собрать ядро.
>>187085 под cortex-m (микроконтроллеры, linux не запустить) есть, под cortex-a (процессор вроде того, что в телефоны с ведроидом ставят) - будет дороже, от 25$
>>187078 Завод , Россия мухосрань, зарплата 30-40к, ибо я инженер-программист и оче мал стаж, года нет даже. Конкретно я делаю коммутацию, что-то типа свитча. >>187087 Gcc вроде, но я собираю в iar. Он очень уебищен, но вроде по отзывам оптимизация лучше, чем в гсс.
Алсо, в некотрых at91, что на пикче, нет пзу и крайне мало озу, все рассчитано на внешнюю память.
>>187098 >>2015 >>использовать на микроконтроллере крестопарашу вместо божественной джавы >Ох уж эти говнокодеры-студентик О! Любители кофематов подтянулись. Почему джава тормозит? Просто оперативки добавить, ага? Если ты пишешь на джаве, это ещё не значит что она самая заебательская для встроенных систем. Для каждой задачи есть свой инструмент. Я тебя с джавой к промышленным контроллерам не подпущу не под каким соусом. Максимум для джавы -- платёжный терминал, дак и то, драйвера для железа писать на сях. Так что, угомонись.
>>187103 >джава >2015 >тормозит Ох уж эти студентики с их говнокодом >максимум для джавы Напоминаем о том что божественная джава - стандарт в энтерпрайзе, части мобильных устройств, части смарт карт. Не бойся, спермопердоля, скоро твой потешный пердоси и из МК выпрут.
>>187154 > Не бойся, спермопердоля, скоро твой потешный пердоси и из МК выпрут. Дурачок. Выпрут С, как же, потом ещё ассемблер выпрут и останется на контроллерах только джава и машинный код, а разработчики джавы будут машкод ебашить напрямую.
>>187130 >поясни выгоду при использовании DMA память-память и при прямом копировании около 32Б данных Выгоды не вижу. Инициализация DMA больше времени займёт.
>>187170 >Пердоля, твой недоассемблер за пределами системной разработки ненужен. Конечно, выпрут У тебя, уёба, действительно только стоковое железо, и ты, уёба, не разрабатываешь железо своё, потому ты так и думаешь, а зря. Железа бывает всякого и много, и его постоянно разрабатывают, и в каждой конкретной реализации пишут драйвера, что не редкость. И пока твои синьоры не напишут их, ты будешь дрочить, ибо сам ничего не можешь. Так что, настанет время, когда джава макакеров станет столько, что твоя ценность упадёт чуть ниже чем уровень плинтуса, но зато, вас будет много, есть с кем пообщаться. А боги асма и С будут надсмехаться над вами и вашей джавой. Кстати, С-шники и сегодня получают на вашем уровне, что же будет дальше?
Пердолюсь с STM32F429I-DISCO платой. Недавно решил прицепить камеру к DCMI и через DMA гнать кадры в память, затем по SPI выводить на дисплей (жаль что у DCMI и LTDC конфликт выводов). Все это делалось в Keil и STM32Cube последней версии. Собственно все работает, только как-то долго обновляется изображение на дисплее (в примере, которым вдохновился все работает норм, но там используется StdPeriph, вместо божественной HAL либы). Сейчас думаю наладить отправку изображения на дисплей тоже через DMA, только хз как оно в SPI будет слать массив картинки rgb565 320x240px. Есть тут кто делал что-нибуть подобное? Вызов типа этого выполняется, возвращая, что все ок, но дисплей никак не реагирует: HAL_SPI_Transmit_DMA(&hspi5, (uint8_t)frame_buffer, (uint16_t)(IMG_ROWSIMG_COLUMNS));
>>187173 >джавамакакеров >С-богов Пердоля, а с чего ты взял что я не знаю си?))) >НИНУЖЕН СТОНИШЬ Напоминаем пердоле о том что з/п джава девов - одна из найбольших в индустрии. Продолжаем зоонаблюдения за манямирком спермопердоли-сидауна
>>187281 Я понимаю, что ты не съебёшь просто так. Но взываю к разуму, коле ты такая умная джава-макака, твоя джава не везде актуальна, свет на ней клином не сошёлся, и не сойдётся. Алсо, если бы твоя собственная ЗП была бы хоть сколько-нибудь значимой в индустрии, ты бы не тут сидел... Вангую, что ты джуниор, и пришёл сюда повыёбываться, но ты ошибся, ни какой джавятиной тут не пахнет.
>>187281 студент максималист итт, джаву не любят хотя бы за то что нет управляемости кодом, в любой момент может проснуться уборщик мусора и начать убирать все что видит. А если в этот момент какая нибудь хуйня с двигателем произойдет? нужно очень быстро отреагировать, но вот хуй там сборщик мусора ничего не дает сделать. И таких задач очень много в реальном мире, это тебе не формочки пилить для офисных клерков. Ты просто тупой студент и не понимаешь, что есть разные задачи. Я и сам не буду писать на С/С++ десктопную часть решения для построения графиков или вывода еще какой нибудь хуйни, а возьму няшный C#. Но писать код под МК на чем то кроме С/С++ это бред.
>>187272 Что-то у меня не получается с этой hal библиотекой дисплей запустить. Светится белым и все, сука такая. Можешь какую ссылочку подкинуть, где написано про инициализацию и работу с этим дисплеем или показать свой код?
Сап, нанонимусы. Помогите с DMA. Есть некий модуль на плате, который подключен к МК по EBI (ШД, ША, управляющие), и регистры этого устройства для мк видны как оперативка. Вот.
Задумал я тут записывать всякую хрень в модуль по ДМА, тип память-память. Разовый трансфер выполняется норм, все работает, нарушений нет, но блядь, не мк не знает, что трансфер окончен, ибо модуль не пересылает специализированный сигнал. Или я не знаю, как это делается. В даташите мк в регистры ДМА из чего-то эдакого можно вписать только адрес источника/приёмника, а настроить управление окончания трансфера нельзя. Стандартные компоненты мк типа уартов-спиаев и прочего говна сообщают, видимо, об окончании. Хотя об этом в дш явно об этом не указано, при трансфере периферия-память ты указываешь айди периферии.
Так вот, что делать? Отлавливать прерывания от того внешнего модуля и говорить ДМА, что трансфер окончен? А это ли не нарушит всю выгоду ДМА?
>>187272 проблема халовской библиотеки в том, что я например настраиваю SPI через ХАЛ. вроде бы в кубе все пины должны настроиться и в свойствах куба эти пины настраиваются . а на деле в проекте пины не настраиваются. хотя в кубе настроены. это пиздец, я ебал. в кубе эти пины настроенный уже а в готовый проект не добавляются.
>>187403 после создания проекта в коде могут быть вполне детские ошибки. выше описал.
>>187438 DMA сам прекрасно знает, когда происходит окончание передачи. Как правило, у МК есть обработчик прерываний для DMA. И да, у DMA должен быть флаг Transfer Complete (TC), по которому можно отлавливать окончание передачи.
Анон, прости за тупой вопрос, но выполняемая программа же всегда располагается в оперативной памяти? Т.е. например при включении устройства выполняются инструкции из бут секции с минимальным конфигом и перекачкой из пзу в озу? Или есть варианты погрузки кода из медленной памяти, подключенной, например, по spi?
>>187629 У контроллеров типа STM32 программа как правило выполняется из FLASH памяти, хотя есть возможность и из оперативки. Если используется операционная система, то как правило они все копируют в оперативку. В общем, зависит от конкретного проекта
>>187123 Как частоты настраивал? APB1 prescaler какой? Ну и помни, что у таймеров на шине APB1 у STM32F1 (может и на APB2 тоже, не помню точно) частота в два раза выше, чем у периферии. Поэтому делители надо рассчитывать с учётом удвоенной частоты. Ну а ещё поля Period и Prescaler структуры TIM_BaseTypeDef типа uint16_t, если не ошибаюсь, хотя сейчас уточню в своих проектах.
>>187485 >а на деле в проекте пины не настраиваются. хотя в кубе настроены. это пиздец, я ебал. в кубе эти пины настроенный уже а в готовый проект не добавляются. Вот поэтому и надо пользоваться SPL вместо куба. У меня на работе два прогера пишут под SPL, один - под куб. При этом SPLщики не чураются для быстрого прототипирования и проверки функционала накидать за пять минут болванку на кубе, потом уйти делать по-уму под SPL. В то время как прогер, пишущий под HAL вечно охуевает то от багов в библиотеке, то от отсутствия или устаревшей документации, то от несовместимости разных версий HALа между собой. Ну и плюс много неочевидных мест.
У кого-нибудь был опыт с подключением внешней SDRAM к STM32F429 по FMC? Настроил тайминги, проинициализировал так, как написано в рефренс мануале на STM32F4 и даташите на саму память, контроллер нормально её адресует, может даже записать туда одну двухбайтную переменную и она не испортится, если её тут же считать. Но вот если попробовать записать и считать массив - то в памяти будет записан только последний байт массива, причём записан обширно, в диапазоне адресов байт так на 200. Burst отключен, документации по FMC толком нет, гугл выдаёт только обсасывание примеров для дискавери и один форум, где всё на китайском.
>>187806 >Но вот если попробовать записать и считать массив - то в памяти будет записан только последний байт массива, причём записан обширно, в диапазоне адресов байт так на 200. Код сюда давай, ты, наверно, объебался с указателями.
То тоже случается обсерушен. Прерывания в это время я выключаю (в errata сказано, что разрешённые прерывания могут портить чтение/запись в память на некоторых ревизиях процессора).
>>187806 С таймингами объебался, ящитаю. Плюс, когда я настаивал на атмеловском, я указывал, что нехуй ждать сигнала nwait. Т.е. вероятно есть регистр с настройками работы
>>187483 частоту кварца корректно задал, даже замерял на ноге A1 частоту процессора, как заюзать systick? не подскажешь? >>187801 в RCC_CFGR_PPRE1 стоит 0x04 значит, по datasheet "100: HCLK divided by 2" таймер висит на RCC_APB1
>>187848 А почему просто не задаёшь <...>.Tim_ClockDivision = TIM_CKD_DIV2, например? Да и делитель частоты лучше сделай в виде макроса, или посчитай чуть выше.
>>187056 (OP) Продолжение ардуино даунов, я у мамы паграмист я умею паграмировать плис.Азаза у меня отладочная за 500 бачей.Гляди те, я делаю пищалку на макросхеме с 500000 мультиплексоров.Ахахахъхяъ
>>188635 >С чего начать осиляторство? Проще ли писать под ОС на МК чем на "голом" железе как диды? Дальше то чё делать собрался? Я вот пишу под линукс на атмеловском ARMе. И под FreeRTOS на STM32, который тоже ARM. Под линухой не могу решить задачу подачи на выход кратковременного импульса строго заданной величины, не залезая на железный уровень, а под STM32 могу, ибо уже на железе работаю. Вопрос в том, какая стоит задача на будущее. Ну как нубу, я бы посоветовал для начала в железе поковыряться, чтобы понимать что и к чему, а потом бы на высокий уровень полез, учитывая специфику борды. Если бы спросил в /pr/, то я бы начал спрашивать, нахуя тебе железо, если под всё есть драйвера (но это правда только для /pr/, а тут аноны некоторые свои устройства собирают, к которым драйверов нет).
>>188659 >Под линухой не могу решить задачу подачи на выход кратковременного импульса строго заданной величины, не залезая на железный уровень, а под STM32 могу, ибо уже на железе работаю. Кстати, почитай про PRUSS в AM335x биглбоновских, если еще не встречался, - такая-то годнота, не нужен дополнительный МК/ПЛИС для realtime задач на линупсе.
>>188635 >С чего начать осиляторство? Проще ли писать под ОС на МК чем на "голом" железе как диды? На железе начинать писать строго обязательно для понимания сути происходящего. Освой хотя бы основы CMSIS (хотя регистроёбство многие недолюбливают, предпочитая какой-нибудь HAL), разберись что и как работает, напиши что-нибудь на циклах и прерываниях. А потом уже можешь к ОС переходить.
Сап, анон. Столкнулся с необходимостью консольной компиляции в gcc флешлоадера. Примеры есть, вся хуйня есть. Но что-то бинарник большой, 37КБ при sram в 32. Вопрос: с оптимизацией -Os компилятся только те функции библиотек, которые я использую? Есть флаги, которые нахуй трут весь текст (в библиотеках много вывода лога по уарт)? Знаний о флагах компиляции мало.
Поделитесь опытом, кто запиливал общение между двумя контроллерами STM32 по SPI в режимах Master <-> Slave. Как я понял, в SPI, в отличие от того же уарта, нельзя отослать сразу несколько посылок, не дожидаясь ответа. Так как же наиболее правильно организовывать пересылку пакетов (штук десяти 16-битных посылок, например)? Как правильно прикрутить DMA чтобы не заниматься рутиной, пердолингом и синхронизацией на мастере?
>>189237 Есть небольшой пример, но очень сложно мне сейчас проверить работоспособность, нет логического пробника и второго контроллера. В программе Master, для тестов сейчас, я замкнул MOSI и MISO вроде данные передались в Reciever_SPIBuffer. Попробуй протестировать вместе со slave http://pastebin.com/2AeACbgB - Master http://pastebin.com/dU3NaKTw - Slave
в Datasheet написано какие каналы DMA отвечают за какую периферию
>>189297 Спасибо. У меня поначалу не завелось по два DMA, вместо данных приходил мусор. Потом разобрался, оказалось, что обязательно надо было делать подтяжку при настройке пинов MOSI, MISO и SCK.
>>190050 Разбираюсь же, будьте вы людьми. На самом деле, нужно всего лишь правильно оформить секцию специфического старта, но копаться в талмудах линуксобояр крайне не хочется.
Поцаны-ребята, если я умею в программирование мкк, что нужно читать, чтоб хотя бы понять принцип того как работает линукс на плисе, как засунуть туда линукс, куда сувать код и и прочие финтиклюшки.
>>190133 лучше разберись с ПЛИС, сначала, и пойми что это, как там реализовывают другие процессоры. ПЛИС это не МК, это, простыми словами, набор логических микросхем.
>>190258 это и на авр/ардуино можно запилить, если подключить внешний цап, но получится в любом случае хуита уровня 3-долларовых плееров с китая, так что смысл такое делать отсутствует
>>190258 Можно попробовать использовать MP3 микросхему, например VS1053 там есть подключение по spi. она будет у тебя для декодирования музыки. а для работы с flash и экраном у тебя будет МК.
>>189236 > с оптимизацией -Os компилятся только те функции библиотек, которые я использую? если при компиляции ты не сделал статическую линковку (напр. флаг -static), то да.
>Есть флаги, которые нахуй трут весь текст (в библиотеках много вывода лога по уарт)? флагов точно нет. Возможно, существуют другие способы, но всё полностью зависит от библиотеки.
да и что-то я не понял >Но что-то бинарник большой, 37КБ при sram в 32. Ты собрался грузить весь бинарник в озу? Нахуя?
>>190264 Почему отсутствует? Мне вон нравится мультибитные ЦАПы, но их в готовых решениях раз два и обчелся, и те сделаны из говна и палок, с ценником как у ушатаной иномарки. >>190351 >VS1053 Почитал описание, годная штука, даже вроде как умеет во флак с плагинами, плюс имеет выход на внешний ЦАП. Как я понял с этой микрухой мне и арм особенно не нужен, подойдет какая нибудь средненькая ардуина, по крайней мере для них продаются платы расширения с этой микросхемой.
>>190128 так же как и на обычном контроллере. Сначала поебись с обычным МК и Линуксом. К слову сказать на Марсаходе есть цикл статей о том как впердолить линукс в ПЛИС.
А поясните за серии STM32F2 и STM32F3. Чем они лучше/хуже F1 и F4 соответственно? Какие подводные камни? Наслышан о том, что в F3 куча каких-то проблем и багов, и поэтому эти серии редко используют. Так ли это?
Аноны, выручайте. Есть старый ненужный планшетик Amazon kindle fire. Хочу использовать его в качестве полигона для изучения всякого низкоуровневого погроммирования. Подскажите с чего начать. Скомпилить туда себе u-boot? Сразу ядро линукса слишком хай-левел, как по мне? Если что, там стоит TI Omap 4430, флеш-память какая-то на 8 гигов и 512 оперативки DDR2. Сорри, если сумбурно изложил, полный нуб в кодинге под железо есть опыт андроид и веб разработки 3 года.
>>190517 ну хуй его знает, система на кристалле жи наверное есть задачи где в ПЛИС надо запихать красногалзое поделие. Это иногда даже удобнее, если руки из правильного места растут все в одну ПЛИСку запихать. Хотя бы в учебных целях поебаться с этим надо. По мне некоторые вещи удобнее учить все таки на ПЛИСках, в контроллерах все спрятано в регистры, а когда реализуешь на ПЛИСке хотя бы какой нибудь интерфейс то уже действительно понимаешь что и как работает. Хотя сейчас есть же SOC микрухи с уже готовым процессорным ядром, и танцы с бубном не нужны.
Кто нибудь знаком с такой хуйнёй как ENC28J60? зависает после некоторого времени работы в рандомное время может через два дня может через час, а может и сразу, что ей надо, вообще? Говорят в интернете проверять флаги, ну проверяю сделал задачу проверки флагов, один хер, могут флаги не поменяться, а адаптер виснет, индикаторы не горят, задачи vTask_uIP_periodic(void pvParameters) и vTask_uIP(void pvParameters) как крутятся, так и крутились
>>190704 Самое мудрое - вести некий лог или выводить куда-либо состояние. Также, очевидно, срабатывает некое прерывание (программное или железное), при его срабатывании стоит зажечь индикатор например, чтобы хотя бы понять, куда идти
в стандартной STM32F100 при запуске таймера срабатывает прерывание, хотя срабатывать должно только через некоторое время при переполнении. Может кто-то сталкивался? А то похоже предстоит долгое штудирование мануала по таймерам
[code] RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM15, ENABLE); TIM15->PSC = 24000 - 1; // Настраиваем делитель что таймер тикал 1000 раз в секунду TIM15->ARR = 1000 ; // Чтоб прерывание случалось 2 раза в секунду TIM15->DIER |= TIM_DIER_UIE; //разрешаем прерывание от таймера
но библиотека в целом хуёвая, постоена по принцепу лижбы ета хуета хоть как нибудь работала, динамическая семантика, использование языка Си как Си с класами, активно используюется препроцесор
В общем, забил я тогда на проблему, она не была настолько глобальной, затикал временно от RTC и дело с концом. А вот дальше проблема лавинно начала нарастать. Сейчас разобрался, т.к. вообще прифигел, настраивая ШИМ на таймерах. Проблема была вот в чем: Кварц микроконтроллера (HSE) у меня был 12 Мгц. По стандартной настройке в system_stm32f10x.c прописан параметр PLLCLK = HSE * 9 = 72 MHz (там расчитано на то, что вы поставите кварц 8Мгц). И, это означает, реальная выдаваемая частота МК выходит 108Мгц, Т.к. внешний кварц (мой 12Мгц) умножается на множитель 9. Мне необходимо было просто поменять множитель PLL. c 9 на 6, что я и сделал. Вот скрины, приятно смотреть.
>>197517 Шапускаю швой швабодный шпутник. Швабодный обмен информацией и вообще, швабодка. Основные будут на орбите геостационарной, а на средней и низкой будут ретрансляторы, которые смогут переключатся в основной режим. Почти, что, проект по обеспечению всей Земли интернетом.
>>206389 Ищи на свой процессор Programming manual(технические характеристики, инструкции), Reference Manual (описание регистров), User Manual (библиотека SPL), Datasheet (распиновки, электрические характеристики). Лучшего не найдешь. Вся эта поебота в инете - полный шлак: 1. GPIO бывают нескольких типов, а какие - погуглите. 2.вот здесь я приведу работу периферии X, бит а отвечает за то и это, b за это и то, с - да хуй знает, я не разобрался, но если не поставить не работает. Если хотите поуглите. 3.Дальше я поставлю комментарии в работе программы, как и что настраивается но что я не знаю, комментарии ставить не буду и умолчу. Надеюсь погуглите сами.
Друзi! Шо вы думаете о моем желании приобрести новый продукт фирмы ST - STM32F469? У него MIPI интерфейс, что позволит подключать дисплейчики от китайфонов и прочих мобил. Осталось только дождаться пока доллар опустится хотя бы до 40, а то договасто, 20.56$ в дигикее.
Здесь спрошу, пожалуй. JTAG везде один и тот же? Подойдет ли дешевый USB-JTAG, про который написано, что он для Altera (с Ебэя, ессно) для работы с остальными МК?
>>210251 не покупай такой - этих поддельных Альтер 10 штук разных видов в одинаковом корпусе. проблемы с поддержкой обеспечены, не говоря уже о работе в линуксе
Есть плата STM32F429I-DISCO 180MHz и камера OV7720, которая подключена к ней по DCMI и которая, к сожалению, не умеет в jpeg сжатие, поэтому я делаю его на STM. Достал энкодер отсюда: https://github.com/mitchd/vt-fox-1 . Но он какой-то медленный, Y'CbCr фрейм 320x240 сжимает за 85мс, RGB565 с предварительным преобразованием в Y'CbCr за 105мс. Это нормально или можно все-таки значительно быстрее жать?
>>210774 Там внутри термоусадки железка от разъема. >>210745 Я надеялся, что будет 40-50мс, видел какой-то проект, где тоже на stm32f4 320x240 сжимают в jpeg и передают на пеку с 20фпс.
>>210797 >Я надеялся, что будет 40-50мс, видел какой-то проект, где тоже на stm32f4 320x240 сжимают в jpeg и передают на пеку с 20фпс. Ну значит у тебя алгоритм неочень. Попробуй векторные операции заюзать.
>>210807 Не знал, что у Cortex-M4 есть SIMD инструкции. Я писал в основном для 1986ВЕ1Т и совсем немного для STM32F1. >>210797 Но все равно это SIMD совсем не то что в x86. Максимум что можно использовать - что-то вроде SMMLA (умножение со сложением). Перемножений потребуется (320 240 16) * 3 = 3.6 млн. Не так уж много, но потом еще кодирование методом Хаффмана потребует довольно много операций (затрудняюсь оценить порядок).
Есть тут обладатели raspberri pi? Накатите пожалуйста https://www.offensive-security.com/kali-linux-arm-images/ и подключитеь по ssh с логином и паролем root\toor и скажите зайдет ли. Потому что везде написано что логин\пароль root\toor, но когда я ввожу это, у меня access denied, я уже заебался, не представляю что тут я делаю не так и я ли делаю.
>>210832 Сложно что-то говорить не видя кода (да и видя тоже), проверь, грамотно ли ты используешь память: все буфера и массивы нужно по максимуму реюзать, избегая malloc-ов, не делаешь ли ты одну и ту же работу по 2 раза: по возможности кэшируй промежуточные вычисления.
>>211008 Это как раз главный её недостаток. Под прыщеARM opencv работает на ура, проверено™, а вот под Cortex-M4 я уже давно хочу её собрать да попробовать что там можно сделать на 256кб RAM, да никак руки не доходят.
>>211017 Да нет смысла ее собирать, она даже под мощные мобильные процы не оптимизирована для ARM. Опун сурс нужен, чтобы посмотреть детали реализации, скрытые константы там, удачные решения, и все то, чего нет в статьях. Библиотека эта громоздкая, и всегда она будет избыточной.
>>212395 > Не для того ни для другого нет SDK в свободном доступе, ни на торрентах? Нет, разумеется. Дают только после подписки кучи всяких Non Heterosexuality Agreement, а поскольку в розницу (или даже мелким оптом) такие камни не продают, то и пиратить SDK никому не нужно.
>>212405 > Нахуй тогда нужен проц Для белых людей из промышленности, а не для всяких гаражных ниггеров.
>>212514 >Non Heterosexuality Agreement Тонко ты, лол. Не сразу вчитался. Ладно. Но там же есть ссылка на чекаут через payal? Разве я не смогу купить одну штучку? Или смогу? Вот ссылки на всякий их софт: https://developer.qualcomm.com/download/software
Ты уверен, что ты не заблуждаешься? Даже Datasheet на их проц в свободном доступе есть.
даташыт неполный, софт в свободном доступе неполный все огорожено анальными заборами купить можешь, можешь скачать и наслаждаться анальными утехами если гаражный негр, полный сдк только для белых людей
>>187272 О, брофист. У меня такая проблема, при включении тактирования порта А (любой пин) при прошивке Keil выдает ошибку и плата зависает, оживает только если стереть флеш в ST Visual Programmer. Это я обнаружил когда пытался в ЦАП. При этом все остальные порты работают нормально, заменю в коде например GPIOG на GPIOA - и все, пиздарики. Не было у тебя такой проблемы? Я чего-то не понимаю? Плата бракованная?
Где найти примеры на кортех3 на стм32? везде срачи spl vs hal. СПЛ говорят ст забросило, пилит ХАЛ. Но ХАЛ пиздец как перегружен. Есть нормальная книжка по программированию на CMSIS?
Не могу решить проблему с SPI. Есть ESP8266 с распаянным HSPI и код ArduCAM, котрый по SPI передает JPEG с камеры на ESP и стримит в веб. Я пытаюсь в цикле передавать с ESP на STM32 1 байт с задержкой в 1 сек, но он приходит с каким-то кривым сдвигом. Передаю 0xAA (10101010), а получаю: 1) 00101010 2) 00010101 3) 00001010 4) 10000101 5) 01000010 6) 10100001 7) 01010000 8) 10101000 9) 01010100 - этот байт приходит сразу же после 8-го, без задержки Потом снова 1 и так по кругу.
>>212746 Не совсем понял о чем ты, но проблема разрешилась - собрал с нуля проект с подключением вручную StdPeriph по одному мануалу с ютуба, теперь ошибки не выдает. Жаль что в пятом кейле нету СтдПерифа в списке либ к плате по умолчанию Отсюда начался срач SPL vs HAL?
>>212665 Отвращение к CMSIS было настолько сильно, что я в итоге написал свою либу с нуля по даташитам. Только то что мне нужно. Причем в процессе написания растет понимание, так что может когда и не в падлу будет этот смсись снова поковырять если очень припрет.
>>212726 Стандартные: ГПИО, УАРТ, АЦП, возможно парочку примеров с ДМА, чтобы понять плюсы его использования. Может быть есть какой-то аппнот, где расписано использование всей этой переферии с примерами кода (так у АВР сделано, очень понравилось - сразу все вкурил)
>>212854 Очень хороший примеры, правда на немецком языке, переведи на русский. А если не хочешь переводить с немецкого, возьми оттуда примеры и почитай USER MANUAL на микроконтроллер, там написано про SPL. Можно еще попробовать логическим анализатором посмотреть через симулятор, что там происходит. http://www.diller-technologies.de/stm32.html
Я немецкого не знаю. Но с SPI+DMA мне это это помогло.
>>212695 Что ты блядь куда передаешь? Твой пост нечитаем. Могу сказать, что интерфейс SPI простой как плуг, если ты нуб, то гугли статьи общего характера на хабре/гиктаймс, если какая-то конкретная проблема, то внятно всё опиши.
>>212876 А что ты хочешь понять по DMA? В cлучае SPI ты с DMA напрямую не взаимодействуешь. То есть DMA регистры не нужно трогать. Просто устанавливаешь бит "включить DMA на tx rx". В отличие например от I2C или DAC. Хотя наверное cмсись от тебя эти подробности все равно прячет в своих хитровыебанных структурах. Аппнотов море на английском.
>>212963 Вообще нет, фигню, сказал точно также для SPI нужно конфигурить, по крайней мере для f4
Two DMA requests are configured: • DMA2_Stream2 for SPI1_RX: this stream is configured to be the highest priority in order to serve in time the SPI1 received data, and transfer it from the SPI1_DR register to the SRAM buffer. • DMA2_Stream3 for SPI1_TX: this stream transfers data from the SRAM buffer to the SPI1_DR register.
>>212963 >А что ты хочешь понять по DMA? Да не, спасибо, я уже допетрил как оно работает. Я тогда еще подключал ILI9341. А это я просто кинул мануальчик где я научился работать с DMA.
>>213078 Ну из ILI9341 я много выжать не смог то ли контроллер нужен другой то ли дисплей, хз что. 0.7 без DMA 11-12 c DMA. stm32f103. Кот вылизывал, по-всякому. Выше, ну никак. что ты юзал?
>>213345 А чем вы fps меряете, аноны? Я когда с параллельным интерфейсом возился, то мерял только скорость полного заполнения экрана, что мне кажется самый медленный тест. У адофрукта демка рисует всякие линии да кружочки. Параллельный конечно просто летает, даже 8 бит. 2"4 240x320 fillscreen меняет цвет экрана мгновенно, даже для глаза незаметно. Так потом тоскливо с SPI only работать.
>>214370 Keil ноорм синтаксис имеет, сам лично в иаре работаю. На самом деле, берёшь любую иде, и настраиваешь компилятор/линковщик/ассемблер gcc, хули как маленький. У иара и кейла свои компиляторы, говорят, лучше, чем гцц собирают.
>>214381 Хули доебался, долбоеб? В >2016 под арм писать на асме является верхом долбоебизма и никому не нужно. Во-вторых, подобия cmsis выпускают всякие атмелы, заточенные под себя; при разборе, эти библиотеки, на деле, являются тупо значениями регистров и всякой настройкой ДМА. Нахер городить свой огород, когда нормальные программисты сделали эффективную открытую реализацию? Короче, пошел нахуй, тебе не рады, въеби говна, школьник с авр
>>214403 >>214403 > писать на асме является верхом долбоебизма сказано было для ARM
ты не добьешься быстрой работоспособности и отказоустойчивости программы если на пишешь на асме для ARM. Компилятор си сделает всё равно лучше и надежнее.
с хуя ли такие заявления? некоторые вещи вполне можно прописывать на асме и это вполне профессиональный приём, именно потомучто компилятор не всё может оптимизировать, и я могу написать оптимальней а ты нет, потомучто ты ардуинщег мхаха
нет ну НА САМОМ ДЕЛЕ я конечно потролил, cmsis получше всяких ордуин и я тоже пользуюсь этой поделкой криворуких индусов, но не потомучто она пиздец какая эффективная, а потомучто у меня нет времени переписывать нормально это говнище
>>214414 Похоже, кто-то не знает директив компилятора для си, которые показывают, как оптимизировать код. Более того, любой армо-господин знает ассемблер. В-третьих, частенько многие задачи арм инициализации-обработки являются впихиванием значения х в адрес y, что, очевидно, на асме никак не улучшишь. Иди жпио настрой на уарт, долбоеб, сделай очередную миллиардную хуевую реализацию без стека.
не ДСП а NEON а ты уже на третьем курсе? уже все флаги выучил? ясно всё с тобой профессионал теперь уёбывай и немешай школьникам писать на асме в ардуиностудии
Как в редакторе кейла пройти к определению переменной/функции? Обычно зажимаешь контрл и щелкаешь мышкой по переменной/функции. Здесь не работает. Как?
>>214414 >с хуя ли такие заявления? С того что все давно написано и отлажено и не 1 раз. > у меня нет времени переписывать нормально это говнище И знаний. Охуеть, пришел какой-то и начал рассказывать что сейчас напишет CMSIS лучше, а ЕГО код на асме у него будет работать быстрее, ну может и будет, если светодиодом поморгать. А реализуй-ка ты там протокол - да обосрешься, переполнишь стек и схватишь HardFault. >потролил Сам использует, сам тролит. Да ты, походу, ошибся тематикой.
>>214363 CoIDE ацкое говно. То есть нормально сперва как легковесный эклипс. Но глюкавый сука. Так что юзаю эклипсе и хайль. Это две противоположности. Кайл использую для маленьких проектов, быстро поднял, запустил, потом закрыл нахуй. Эклипсь удобен, но монстр. А еще в кайле редактор полное безнадежно унылое говно. Зато отладчик супер. Кому что
>>214414 Двачую про cmsis. Жуткая хуйня но лучше ничего нет. К ней пилят всякие надстройки, что наверное заебись с тз самого писателя, так как это он же писал и знает что да так. А остальным придется еще и с его кастомной хуйней разбираться, и все равно вель придется рано или поздно в cmsis смотреть, потому что нихя это не black box. Я свое написал, но не надстройку, а по спекам. Но так делать тоже хуево, ибо "неправильно", только как хобби, а остальным блять марш cmsis или HAL учить.
>>214498 >>214498 А батарейки то хорошие или китай. У них небось емкость маленькая да и при таком токе они наверняка будут разряжаться в момент. Может лучше LiPo??? Проблема правда, что нужно до 5v тогда регулировать
>>214506 Не понял, какой тебе еще контроллер? В смысле как 5v получить из твоих батареек? Они у тебя 3.7? Можно наверное еще один v регулятор, но хз может headroom не хватить если особенно подсядут. Надо пробовать. Главное не пытайся резисторами делить.
>>214573 Что это за дичь с ценниками, купил у местных барыг клон стлинк v2 и f103 суммарно за 500р, тренируйся до усрачки. А еще продает cortex-M0 в корпусе TSSOP-14 за 50/штука, такая то вкуснятина.
>>214606 > купил у местных барыг клон стлинк v2 и f103 суммарно за 500р Мне кажется, что тут пиздежом завоняло на пол треда. Или покупал в бородатом 2013-14. Я вот дискавери ф429зит за 1100р купил, хуле.
Вы че охуели за такие деньги покупать. Можно же микро ардуинку за копейки, стереть нахуй bootloader и просто использовать как арм. Своих можно кнопочек и лампочек навешать. Бакса 3 наверное на ебае.
>>214636 Ну ебта 429 хоть и дорого но вещь! И там небось дохуя наворотов, LCD, всякие датчики хуяччики годнота! А это сраная f103 там же нет нихуя и 1.5 тыщи???
>>214646 Да нормально. Я у китайцев брал просто ГОЛЫЕ чипы f103. Это пиздец я такого никогда не видел, они пришли голые корпуса, просо завернутые в ЦЕЛЛОФАН. Но ничего запаял, работает! А уж если платку взять за 3 бакса и к ней stlink программатор тоже стоит копейки. jlink чуть дороже. Пацаны вы че, охуели столько денег тратить.
Это конечно не 429 но тоже годнота. И недорого. Я никаким травлением не занимаюсь, а просто покупаю адаптеры QFN -> DIP + обычные дешевые платки и все на проводочках. Получается некрасивая но работоспособная махараечка за смешные деньги.
>>214647 > А что не так, я же не про атмегу говорю, а про stm32f103c8 Всё так, просто Шеппель и слыхом не слыхал про нашу сингуль-хроматронную оптику эта платка никакого отношения к «ардуинам» не имеет, что бы там не писали китайские продавцы-сеошники на ебэе и алиэкспрессе.
>>214660 Хуй знает, я ни разу рил ардуино не щупал, а что делает платку "ардуиной"? Я ее использовал исключительно как голый арм. Но там же usb разъем, наверное есть ардуинский bootloader и перемычки откуда загружаться и тп. Чего там принципиально нет, чтобы не считаться минимальной ардуинкой?
> Чего там принципиально нет, чтобы не считаться минимальной ардуинкой? Того, что она не совместима (ни программно, ни аппаратно) с отладочными платами (включая клоны) от «Ардуино». Разве что вкрячить туда STM32Duino, но так любую плату на STM32 можно ардуиной назвать.
>>214675 >Потому что у микроконтроллера есть USB2.0 на кристалле, а фабричный загрузчик есть у любого STM32
Ну разумеется, и почему на основе такого чипа можно нельзя сделать ардуино совместимую плату, прошив туда правильный загрузчик, например?
>не совместима (ни программно, ни аппаратно) с отладочными платами
Вот тут я ничего не могу сказать, так как никогда ардуино не пользовался. Что мешает энтузиастам запилить такую совместимость? Есть же какие-то Maple IDE. И что значит несовместима на аппаратном уровне, в смысле всякие GPIO pins не совпадают? То есть под совместимостью ты имеешь ввиду, чтобы можно было компилить и запускать сто тыщ мильонов существующих "скетчей" без каких либо изменений?
Короче я заморочился, сходил на github посмотрел на этот maple. Во-первых, оказывается эти китайские трехдолларовые платки с ебая и есть клоны maple, который видимо обанкротился. И понятно почему. Слишком там дохуя мороки, многое недоделано, надо напильником доводить и ПОНИМАТЬ что ты делаешь, так что ардуинщикам это нахуй не уперлось. А те кто знает что делает, нахуй ему вообще это говно, проще напрямую. Может быть есть какая крощечная ниша для в меру продвинутых ардуинщиков, которых пугает cmsis и им хочется продолжать использовать свой любимый язык ардуино и им не впадлу кое-где пины подправить и кроме нескольких либок типа wire и servo им ничего не надо. Эдакий sandbox недоарм без кайлов и cmsis.
Хуяссе, почему-то я был уверен что есть какое-то официальное хуилоново, или как его, для арм.
>>214675 >Того, что она не совместима (ни программно, ни аппаратно) с отладочными платами (включая клоны) от «Ардуино» Вапщето ардуино это просто надстройка над cmsis. Чего бы ему не быть совместимым?
онлайн компилятор, офлайн компилятор можно прикрутить, онлайн сообщество
куча разных годных и неочень библиотек, попытка запилить HAL, в целом сорт ардуины, но поддерживается продвинутое байтоёбство, работа на прерываниях, использование DMA, даже есть RTOS
в целом годная штука, правдо разбор исходников в некоторых местах выявил сильно ардуино-индуский стиль програмирования
согласен, но примеры от производителя не охватывают все типы извращений которые можно проделывать с их восхитительными девайсами, и производители не быстро правят косяки котрые изредка имеею место быть, а в mbed можно нарыть различные извращения и воркароунды
>>215143 Это да. Один SPL от ST чего стоит уже (SPL обновляется быстрее чем документация) и файлов-то некоторых нет, о которых они пишут в своей документации, а примеры вообще, хер пойми как сделаны, файлы от примеров не подходят к SPL. Приходится править.
Хочу к smc подключить дисплеи с параллельной шиной щитай, как оперативка. Какой нужен обвес на линии, чтобы все было заебись, не было наводок и скорость была норм? Текущая реализация блядь это пиздец с шиной 30 сантиметров вкупе с 220В фазой, мягко говоря, плохая, и при работе на дисплее вполне реальные галка. Я не по схемоте, я программист, но блядь тот, кто будет это говно разрабатывать, в схемоте еще хуже меня.
>>215256 >Я не по схемоте, я программист, но блядь тот, кто будет это говно разрабатывать, в схемоте еще хуже меня. А конечное устройство получится еще хуже чем ты описал.
>>215256 Вешай свой контроллер к дисплею, от него RS485 интерфейса микросхему, можно и без гальванической развязки (MAX485, ADM485), а потом через 485й управляй. Медленнее, но 220В рядом не так сильно сказываются. Либо сам кабель экранируй.
>>215383 >RS485 А что если в шине сделать в 2 раза больше проводов, передавать дифференциальный сигнал, как на RS-485, а на обоих концах - дешифраторы на логике?
>>215419 Информация, экран не нуждается в постоянном оьновлении. Я просто хотел видосики запилить, сливать буфер кадра по дма. Можно даже двойную буферизация, ороро.
Короче, будем перекатываться на миландровский ве91т, пущай развивается электроника в России. Я доволен, проц вполне норм
Народ, я тут помиргал светодиодом на АВР-ке, сделал энкодер с движка от дисковода и датчиков Холла из кулеров. В общем ненапряжно вник в контроллер и стало мне МАЛОВАТО функционала и я приобрел платку stm8l-discovery, дабы насладиться мощью АРМ. И ожидаемо соснул. Есть, что нибудь русское, почитать, поучить, а?
>>215586 Ты чтобы помигать светодиодом и поиграться с датчиками Холла ты покупаешь stm8l-discovery. Ну не пустая ли трата денег и сил? Лучше бери ATmega8 или ATtiny2313 для таких дел.
>>215569 > миландровский Любопытно, не знал. Можешь пояснить за их микроконтроллеры. MDR32F9Q2I - это аналог STM32 M3? Совместим ли он в плане программирования, или нужны особые библиотеки программатор окрашенный в хохлому?
>>215852 Касательно сравнения с конкурентами - хз, у меня опыта мало. В целом неплох: атмеловский sam3s и медленнее, и периферии поменьше. Ядро после пллов на 80мгц ебашит, всякие модные ДМА и прочее. Кристалл большой, да, раза в два больше площадь, чем у конкурентов, техпроцесс не как у тайванцев, зато есть ебучая военная и космическая приемка, метал-керкмические корпуса и позолота, выглядит внушительно.
Хал потихоньку пилят, уже мало чем отличается от конкурентов, есть примеры, собранные под кейл, иар, гцц, вся настройка и конфиги линковщика и флешлоадера, для безпроблемного переката с буржуйщины.
Еррата правда большая пиздец, но это просто слишком мало проц обкатан.
Помимо кортекса м3, есть м4ф и а1 - послабее, но и меньше/дешевле.
>>215955 >Хал потихоньку пилят, уже мало чем отличается от конкурентов, есть примеры, собранные под кейл, иар, гцц, вся настройка и конфиги линковщика и флешлоадера, для безпроблемного переката с буржуйщины. Оно в открытом доступе?
>>216145 Очевидно, что у них нет витрины с этим говном, все ориентировано на фирмы. Но есть путь: тупо написать в миландр, сказать, что ты сиартапер-эмбеддер, частный разработчик, и запросить образец. Возможно, даже бесплатный. Общайся, срсли
>>216145 >>216158 Написал им, чтобы были поосторожней. Халявщики с Двачей решили запустить свои липкие лапки в электронные закрома Родины. Не бывать этому!
>>216169 Это нормальная практика, знакомый кун получил в свое время образцы альтеровских ПЛИС, тупо написав им. А хули, надо же как-то свое говно двигать
Анон, я впервые столкнулся с задачей, когда нужно сделать табличную функцию на 12кб. ARM Cortex-M3, 96кб оперативы. В принципе можно и там держать массив, ничего страшного же? Какие подводные камни?
>>216364 никаких абсолютно, твой выбор. хоть во флеше, если read only, хоть в раме. и главное в отличие от всяких атмелов не нужно никаких безумных макросов. ибо hybrid harvard, linear address space, оперативка с 0x20..... флеш 0x80.... так же мапится в нуль
>>212803 >Не совсем понял о чем ты думаю, что ты переводишь весь порт во вход или выход а так как на нём висит СТЛИНК то он сразу же отваливается и программатор теряет связь с камнем.
>>212556 У меня была потрясающая проблема, что волею случая пин дисплея был заведен на цлк-аут, а в конфигах тактировки забыл указать байпас мод, так как стоял генератор. В итоге при подключенном дисплее контролер подыхал, так как ожидал резонатор, а получил хуй.
>>187272 Поковыряй хал, посмотри конфигурацию скорости в соответствие с даташитом, сделай тупейшую портами ио инициализацию, и посмотри, как сбрасывается дисплей
>>187438 >а настроить управление окончания трансфера нельзя ну да блять, конечно. Ищи внимательнее что-то типа Transfer size, то есть сколько элементов нужно переслать
Сап анчоусы. Пытаюсь настроить свою stm32f429 на PLL от HSE, прошу советов мудрых inb4 сосни-ка хуйца
От HSE работает. От PLL с таким кодом http://pastebin.com/7m1XzuyF не работает. Внешний кварц 8 Мгц, PLL=(HSEPLLN)/(PLLMPLLP) По идее итоговая должна стать 116Мгц
>>217087 У меня плата почему-то зависает. Мб дело в том что флеш не успевает за такой частотой, но на сайтах где идет базовое описание PLL ни слова об этом.
Счастливые владельцы stm32f429i-discovery, у вас при рисовании через emWin работает многослойное отображение? У меня почему-то не работает 0 слой, только 1.
>>217281 > GUI_Clear(); > рисует дефолтную картинку Чота я совсем не понял. Закинул я свою 429 в дальний угол. Когда получу чорный пояс по сям, достану.
>>217247 Не видел код, но вангую, что отрисовка подобна фотошопу: есть слои, есть текущий слой, в котором ты выполняешь граф. операции. Ищи команду смены слоя
Так-то если брать ассемблер, то на х86 на фпу очевидный инт на флоат, если брать архитектуру с хитровыебанными командами, то очевидное использование команд, наиболее подходящих. Если фпу нет, то ебаный флоат будет каким-то пидорством представлен
>>217667 Разобрался с прескейлами, как днище записывал не в тот регистр, хех. Но все равно не заработало, пока задержку флеша не сделал, хз как у >>217091 на 180 флеш без задержек работал.
>>217867 Он написал про 180 без задержек - такое возможно только если камень на 180, на флеш через делитель (который AHB prescaler). Можно и на 180 гонять флешь, но без задержек он не будет работать.
ребят, помогите. отладочная плата stm32vl discovery. не работает ацп. написал программу, которая читает напряжение с потенциометра и шимом регулирует яркость светодиода на основе этих значений. тупо не заходит в прерывания ацп. гляньте код и скажите в чем проблема
Аноны выручайте. СИтуация такая. Я пока нуб в микроконтроллерах, но хочу научиться и мой, скажем так, наставник посоветовал изучить простенькие китайские микроконтроллеры для игрушек всяких и тд. Не просто так, я буду пытаться разрабатывать всякую сувенирную продукцию и поэтому нужен дешевый контроллер. Что посоветуете?
>>218449 по сути один котроллер под разные цели. Для начала хотелось бы запилить что-то типа китайского фонаря который будет реагировать на движение-при раскачивании будет издавать звук +реагировать на уровень освещенности и изменять режим подсветки светодиодов-переливаться, мигать и тд
Анон, я пишу под ARMы уже года три или четыре, но в основном какое-то неинтересное говно. Сейчас на текущем месте работы тухляк, и я подумываю о том, чтобы съебать в другое место. Смотрю требования к разработчикам ПО для встраиваемых систем, а там требуют знания принципов RTOS, знание архитектуры ARM7/9/11 ли других процов и т.д. Что вы можете посоветовать почитать хотя бы по архитектуре ARM7, например? Так как не требовалось, я много чего до сих пор не знаю. Всякие MMU, защищенные режимы и т.д., зачем это нужно и как используется. Ну и по RTOS то же самое. Где-то еще и пишут в обязанностях разработку драйверов для устройств, вот это для меня вообще темный лес.
>>218450 Скажем так, если ты не собираешься выходить выше уровня микроволновок, стиралок, сувениров, детских игрушек - то выбирай Sonix (Sn8p2501bpb), AVR (tiny13, atmega16, tiny2313). Если ты хочешь двигаться дальше в этом направлении просто поверхностно изучи AVR, мигни диодиком, свяжись по USART с компом, пойми как работает сам контроллер и изучи асм. Это для меня было 3-4 месяца. Дальше изучай ARM, например Cortex-m3 это ST (stm32f10x) или NXP (LPC176x), таким образом будешь двигаться по ARM, и дойдешь до более совершенных армов, т.к. базовая архитектура будет ясна.
>>218454 Да, и хочу сказать что изучая такие архитектуры как sonix, pic, avr, не забывай что они все имеют свою архитектуру, и каждый раз пересаживаясь с одного проприетарного контроллера на другой тебе надо изучать полностью его архитектуру, т.к. они совершенно разные, изучая NXP после ST у меня больших проблем не взоникло, а вот ST после AVR - честно говоря, я не сразу въехал (ну еще учитывая что он сам по себе сложнее). вот тут пишут: >>188758
>>218467 Ты сначала возьми AVR, то для чего ты описал, МК вполне подойдет. Все, о чем я тебе писал стоит от 15р. до 150р. для китайского фонаря пойдет AVR tiny13, atmega16, tiny2313, для последнего есть документация в инете на русском, а все эти три МК отличаются периферией и количеством ног. Все равно тебе нужны будут внешние датчики.
Господа, как правильно гуглить библиотеки, реальные или хотя бы на метакоде, с описанными структурами регистров и базовыми функциями? Гугл запрос типа x library, x source нечего не дает
>>218554 И какую ты хату считаешь нормальной? У нас тут лес дешевый (на самом деле нет), а кирпич дорогой. Вот и приходится в таких жить. Я правда отбился от рук, не хочу жить как диды завещали, и въебал себе котел.
>>218575 Я не шучу, я реально в избе живу. Чо смешного то? Я реально собираюсь автоматизировать отопление, работу наружного освещения, охрану, вентиляцию, контроль насоса скважинного, дренажи и т.д. Да и не с дискавери буду делать, а на стм32ф429зит, а дисплейчик подключать через SPI, чтоб ноги не тратить на параллельный ргб. Так что пройди нахуй, дорогой анонимас.
>>218579 >Так что пройди нахуй, дорогой анонимас. Я не он, но пообщаться готов. Ты даже себе не представляешь, как ты себе голову ебёшь в данный момент. Ты ведь ещё не понимаешь, что каждая из твоих систем (отопление, наружное освещение, охрана и т.п.) должны быть независимыми и надёжными, а вместе их может объединять МОЗГ, но он должен жить отдельно, чтобы при нарушении работы не вешать всё вокруг. На одном 32F4 ты этого делать явно не будешь, ибо дорого...
>>218585 > ибо дорого... Но я уже приобрел его. И не дорого, 920р. Конечно я не буду все вешать на один контроллер. Он и будет МОЗГОМ, а всю чОрную работу будет делать мелочевка по 5 копеек, типа stm8s003k, stm32f103, stm32f401, stm8s003f, атмеги в конце-концов.
>>218589 Ок. Выкладываю всю подноготную. Я старый-престарый хуй, во время строительства своего домишки, решил максимально его автоматизировать, чтоб на пенсии жмакать в экран своего говнопланшета, а у бабки вода горячая в душе отключалась бы. Радиогубительством занимался в далеком детстве, почти собрал с одноклассником компуктер "Радио-86РК", добывая на него детали из станков ЧПУ производимых нашим местным военным заводом, за что были пойманы и в виду малолетства и чистосердечного раскаяния были осуждены на 5 лет условно с выплатой родителями по 150к тех еще рублей( это я к тому, что не жалейте денег на личинусовские хобби, а то они пойдут разбирать Эльбрусы за 400к). Долго не держал в руках паяльник (лет 20), а тут решил тряхнуть стариком, купил ебучий дискавери и все пошло кувырком. Чем дальше я лез в эти дебри, тем больше понимал насколько отстал и дабы не объебаться с инфраструктурой, напихал в свою избу 2 упаковки витухи cat 5e. Так что радиоинтерфейсами страдать не буду, а использую чота вроде rs485. Вот.
Почему же? Например в кессоне скважинном, мне надо померить температуру, давление в экспансомате, записать это на флешь и заснуть пока старшой не попросит ему отдать эти данные. Зачем туда ARM городить? Я в терре stm8l151c4 жменю на 300р купил, надо же их использовать.
>>218561 > сравнивает кирпич с бревном > считает, что кирпич лучше Не лучше! У меня охрененный деревянный дом, дед построил в 50х. Есть печь, руssкая, которая и как плита, и как ебаная батарея, и как рассадник котов. Главное, нужно следить и ухаживать за домом, а также жить в нем
>>218607 Я сейчас, пока строюсь, живу в избе примерно 1905 года постройки. Это пздц, хотя за 5 (планировалось пару лет, но йобанные деньги не хотят зарабатываться в нужном количестве) лет привык. >>218608 Возможно, я пока как ребенок, тыкаю примеры, вдупляюсь в этот мозголомный HAL, схемотехникой пока не занимался.
Вкачусь в тхреад. Где найти подобные гайды dmilvdv.narod.ru/AT91SAM9260/intro.html по адаптации линукса под конкрентый контроллер, про BSP, DeviceTree, BoardFile и прочие необходимые вещи? Правую железку не заводил еще - как минимум DataFlash через sam-ba можно прошить-зачитать - уже что-то, как и работа phy. Сношаю гугол как bootstrap и u-boot готовить и не особо то успешно. На левой - только из STM32-Cube FreeRTOS + LwIP запущен - только на пинги отвечает.
Не пошел в Аудуино так как там вообще уровень дтского сада. Спрошу тут. Что можно сотворить на arm, конкуренто способное и прибыльное? Надоело мигать светодиодом оброабатывать видоопоток и сигналы с ультразвуковых датчиков дальность и угол излучателя, фурье, подобность функций и прочий шлак
Какой нехороший человек делал bootstrap-1.6? Мало того что там свежая версия компилятора вклеивает 24 байта своего мусора с указанием кем и когда было скомпилено, так еще и в 6 векторе пишет 0 длину/заглушку-вектор и загрузчик только 32 байта бутстрапа читает и в sam-ba вываливается. Приходится вручную править собранный бинарник чтобы указать независимо от реального размера читать 4К кода. Завис сегодня на запуске u-boot + dm9161 в MII. Физика верная, линк ловит на 100, MDIO-MDC работает, в ответ тишина, на аппаратном лупбэке видно что что-то шлет, когда компом цепляюсь - ничего не могу поймать. U-Boot> setenv ethaddr 02:03:04:85:06:07 U-Boot> setenv ipaddr 172.16.0.89 U-Boot> ping 172.16.0.89 macb0: Starting autonegotiation... macb0: Autonegotiation timed out (status=0x7849) macb0: link down (status: 0x7849) ping failed; host 172.16.0.89 is not alive U-Boot> <INTERRUPT> U-Boot> ping 172.16.0.89 macb0: Starting autonegotiation... macb0: Autonegotiation complete macb0: link up, 100Mbps full-duplex (lpa: 0xc5e1) Using macb0 device Abort ping failed; host 172.16.0.89 is not alive
>>220328 Проверь размер кучи (heap), анон, в файле конфига линкера. >>220670 Кортекс - ядро арма, которое покупают у внезапно ARM ltd. Вокруг типовой обвес, разводка и производство, все м настолько тупо, что может любой студент /ра/дист сделать.
У нас в России аж две мегаизвестных компании также делают процы на м3 и м4ф. В перспективах ашки, но пока дораха.
.note.gnu.build-i - эта гадость мешала, а так - оно верно все собирало, за исключением одного 00000000 04 00 00 00 14 00 00 00 03 00 00 00 47 4e 55 00 |............GNU.| 00000010 29 58 18 26 e9 db 53 09 5c 97 05 09 c8 dd 49 6a |)X.&..S.\.....Ij| 00000020 e7 2f f9 51 00 00 00 00 00 00 00 00 00 00 00 00 |./.Q............| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00200000 0d 00 00 ea 05 00 00 ea 05 00 00 ea 05 00 00 ea |................| 00200010 05 00 00 ea 05 00 00 ea 05 00 00 ea 05 00 00 ea |................| 00200020 fe ff ff ea fe ff ff ea fe ff ff ea fe ff ff ea |................| 00200030 fe ff ff ea fe ff ff ea fe ff ff ea d4 d0 9f e5 |................|
по адресу 0х14(00200014) - полная хуита вместо FF 0F 00 00 - поэтому загрузчик ничего не читал.
Сейчас проблемка с I2C - банальные LM75 и 24C04 невидятся.
Может есть профи которые подскажут как завести такую память ? nand: device found, Manufacturer ID: 0x2c, Chip ID: 0x44 nand: Micron MT29F32G08CBADA3W nand: 4096MiB, MLC, page size: 8192, OOB size: 744 nand: No oob scheme defined for oobsize 744 ------------[ cut here ]------------ kernel BUG at drivers/mtd/nand/nand_base.c:3925!
Сам камень(at91sam9260) по даташиту держит память до 16гБит, а тут в 2 раза больше + страницы по 8 КБ. Мелкую память оно нормально хавает, но мелких флешек откуда ее сдернуть в промышленных масштабах нету. Jan 1 00:01:01 deb kernel: nand: device found, Manufacturer ID: 0xec, Chip ID: 0xdc Jan 1 00:01:01 deb kernel: nand: Samsung NAND 512MiB 3,3V 8-bit Jan 1 00:01:01 deb kernel: nand: 512MiB, SLC, page size: 2048, OOB size: 64 Jan 1 00:01:01 deb kernel: Bad block table found at page 262080, version 0x01
>>220979 Анон, я почти с тем же мк ебался совсем недавно. Вкрадцыи, не читая тебя: размер образа бинарника, зашитого во внешнюю флеш, равен оперативке минус несколько килобайт железного загрузчика. Короче, для at91sam9x25 при 32К sram прошивка должна быть 24 КБ. Об этом есть одна строка в даташите, в секции с загрузчиком.
Тут вроде в посте у тебя типа не определилась флеш. Решение до жопы простое: пересобери ебиную либу, вписав типовую строку со своей памятью и ее вендором; поройся в либах
/ collect all uninitialized .bss sections / .bss (NOLOAD) : { . = ALIGN(4); _sbss = .; (.bss) _ebss = .; } } end = .; / define a global symbol marking the end of application /
>>221038 Почти угадал, но проблема в другом - сам бутстрап должен быть менее 4К размером. У меня же выходил размер овер 2 мегабайта из-за информационной секции. Обрезка секции strip-ом - уменьшает размер и сборка по прежнему нерабочая. Снимал обмен логическим анализатором - только тогда заметил что длина загрузчика не указывается. Подправил руками бинарник и заработало. U-boot завел, ядро грузит по tftp, корневую фс по nfs тоже грузит, работать более-менее можно.
>пересобери ебиную либу, вписав типовую строку со своей памятью и ее вендором Зачем ? память то опознается. Если гуглить по "oobsize 744" - не каждый камень его держит, насильный перевод в коде на oobsize 128 - все засрано что или блок мертвый или ецц не сходится, заканчивается память под бэдблоки, далее обычная разгрузка и в /dev/mtd пустота, хотя в ядре есть описание пары разделов.
Ребя, я начинающий погромист контроллеров и у меня есть вопрос о структуре программ. В универе мне сказали что main'е надо только инициализировать контроллер, а вся работа контроллера выполняется в функциях обработки прерываний. На работе же мне сказали, что ещё можно в обработчиках прерываний устанавливать нужные флаги, а обрабатывать их уже в main'e. Поясните как правильней.
>>221170 Я пишу все структурами. И указателями на функции. Так как сказали тебе первые. Без фанатизма, не использовать дохуя структур и не таскать где не попадя, иногда легче вызвать функцию. Оверинжиниринг ни к чему. Но в прерывание программа должна быстренько зайти, переключить флаг (как сказали вторые) и выйти, чтобы, если у тебя не накопилось много прерываний, они по быстрому переключаются и выходят и освобождают стек.
>>221170 второй вариант. Основной медленный поток программы крутится в майне, в прерываниях ставишь флаги. Так проще тестировать, не нужно ебаться с многопоточностью и защитой данных, медленные потоки внутри прерываний не будут наслаиваться друг на друга.
Дополню, что тебе сказали немного разные вещи. Первые, наверное, имели ввиду, что можно делать while(1); после инициализации и реагировать только на прерывания. Это хорошо, если прерывания короткие. А если есть нужда в длинных задачах то лучше сделать как сказали 2-е. Но Main должен быть пустой никаких программ не должно быть(ну, или по-минимуму), только переменные указатели на функции или, если тебе нравится, просто вызовы функций. Структуры с указателями на функции: в начале заводим наши переменные(или структуры с описанием всего и инициализируем): гироскоп1, лампочка1, panasonic и пр.
Никакой охуеть большой кучи в майне не должно быть, иначе это полет фантазии. Через месяц запутаешься. Лучше программу разбить на логические структуры: Все что касается, например, датчика 1 - в один файл, датчик 2 - другой файл, файл инициализации 3-й файл.(В main только всё в кучу собираешь.) И там, в файлах, лучше никаких привязок к переменным все переменные должны храниться в Main. Функции должны быть гибкими, и при вызове этих функций они меняют только данные в той переменной, или структуре, в которой указали. Таким образом main является хранилищем всех переменных и связующим звеном. Как сказал >>221193 делаешь все задачи др. за др. я делаю тоже так же. И как только выставился флаг меняется просто поведение задачи.
>>221220 Да я в курсе. Хорошо, не всех переменных поголовно. Статусные переменные, например датчиков хранятся в их файлах. Main только принимает данные по вызову функций.
>>221561 Не, ну все равно почитать стоит, не ради программирования на АСМ, а хотя бы чтоб понять как этот АСМ там работает. Кстати,>>221284 , ты можешь почитать вот это, про AVR, переведенный Datasheet. http://kazus.ru/forums/showthread.php?t=284 (ссылка для скачивания ниже).
>>221829 Переводчику заебись в гуглтранслейте перевёл одну буку, остальные одно и тоже, а в портфолио напишет дохуища технической литературы перевёл. Пидоры они.
>>221860 Учебники нужны для того чтобы на доцента или профессора ВАК подавать, надергуют хуйни из пиндоских учебников и даташитов и профессорами становятся, а людям они нахуй не всрались, только вымер бумаги.
>>221860 >>221865 Датащиты датащитами, а все мы начинали с учебников. Нормальный учебник - это расшифровка датащита устройства и не всегда конкретного, иногда рассказывают абстрактно, чтоб читатель понял что к чему. Это сейчас я беру любую микросхему, и на основе полученных знаний из учебников я понимаю как и что там работает. Но в начале, например, я, не сразу понял организацию микропроцессора, там рассказывается как он устроен как таковой: здесь память, здесь регистры, здесь контроллер прерываний. Это слишком много незнакомой справочной информации, тем более сразу. А почему именно так устроено и никак по другому, никто там не говорит. Все равно что электронику учить с книг Тицце и Шенка или вообще со справочника, как бы всё с низов рассказывают и подробно, но, блин, все равно, непонятно.
>>221887 толсто или не знаешь какое оно это обучение. Как это обычно - после получения прав за неделю сам научишься Все эти сранные учебники лютое говно, как и инструкторы вождения и теория в автошколе
>>187130 Зависит от шины и как memcpy работает. Если уебищно по слову копирует, а ты делаешь memcpy((char )buf1, (char )buf2, sizeof(N)), то он и будет побайтово херачить: сместил байт, записал 4, 3 отбросил, снова подвинулся.
>>187056 (OP) Сап парни, разбираюсь с HAL возникла проблема при попытке завести SPI. С помощью этого кода я пытаюсь оживить SPI1 __SPI1_CLK_ENABLE(); hspi1.Instance = SPI1; hspi1.Init.Mode = SPI_MODE_MASTER; hspi1.Init.Direction = SPI_DIRECTION_2LINES; hspi1.Init.DataSize = SPI_DATASIZE_8BIT; hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH; hspi1.Init.CLKPhase = SPI_PHASE_2EDGE; hspi1.Init.NSS = SPI_NSS_SOFT; hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_64; hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; hspi1.Init.TIMode = SPI_TIMODE_DISABLED; hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLED; hspi1.Init.CRCPolynomial = 7; HAL_SPI_Init(&hspi1); вроде бы все норм, но не знаю как включить его с помощью бита SPE. В SPL это делалось через SPI_Cmd. А как сделать в HAL'е? На данный момент просто тупое вбиваю его через SPI1->CR1 |= SPI_CR1_SPE;
>>223405 Подразумеваю, но я не си-бог, чтобы знать, как оно собрано в ядре линукса, например, на аимах. Но факт, анон, память-память на х86 нет, только периферия.
>>223418 >память-память на х86 нет Ну а кагбе как ты его сделаешь и в чём будет принципиальная разница если это сделает ЦП? DMA с устройств хорош тем что не надо постоянно синхронизироваться с устройством, чтобы читануть оттуда наполнившийся буфер.
наверно потомучто рынок микроконтролеров намного меньше чем те куски рынков которые есть у лидеров, нет никакого смысла захватывать непрофильных аутсайдеров, ктомуже микроконтролеры это зашквар
>>223744 Ты посмотри дома соотношение микроконтроллеров и процессоров. Телек, радио, машинка, микроволновка, некоторые холодильники, да даже пульты для телеков, практически каждый прибор, имеет в себе микроконтроллер. Даже в самом компьютере найдется место для него.
все эти микроконтролеры нихуя нестоят, сравни цену с процессором, накрутки на ёбо процессоры охуенны а себестоимость такаяже, объём рынка определяется не только количеством но и ценой, если лидеры не хотят заниматься этим зашкваром значит они это уже всё посчитали, или у вас диваных экспертов с пультами от телевизоров другие цыфры?
>>223924 Что ты мне хочешь доказать? Есть DSP embedded-процессоры и микроконтроллеры, специально выпускаемые для работы со звуковыми, медицинскими, автопром и пр. устройствами где нужно быстрое реагирование. Интел и AMD туда не лезет. Это специальная ниша, это совсем другие процы. Майкрософт, к примеру тоже хотел охватить необъятное, например, делал программные фаерволлы (ISA SERVER), Нокиа делала что-то вроде чекпоинта. Но обосрались, потому что у каждого своя ниша. И нахуя? Если это заботы Juniper, Cisco, CP? Чего с ними тягаться? инбифо: >intel edison >Intel Quark процессоры для встраиваемых систем.
>>223989 О чем вообще разговор? О том что у вас используется или почему интел не захватил рынок микроконтроллеров и процессоров для встраиваемых систем?
>>224155 Ну на российском интернете свет клином не сошелся. Тем более везде так, любители кроме этого ничем не занимаются, я думаю везде так. А более продвинутых ты не видишь, т.к. они работают а не в интернете пишут. Помигать диодом, подключить датчик света, подключить сервопривод, это всё для начинающих и просто их много.
>>224193 Лел, я конечно тугой, но в споры пустился уже не я.
Вот ещё вам тугой вопрос: китайские ЦП для телефонов намного дешевле того же STM. Тот же арм по сути. Явно позволяет ещё и гигабайты памяти легко подключать, да в целом мощнее если даже игры тянет. Одна беда: нет доков и туторов, и видимо с портами ещё проблема будет.
Ну вот например MT6572, я могу купить за 500р на али. STM за такие деньги можно купить наверное только серии STM32F1.
Не пробовал никто ещё использовать вместо тяжёлой серии F4 китайский мобильный кремний?
да ты явно упорот, этоже cortex-a с модемом и еще кучей барахла, к нему обвес нужен нехилый, жрет он побольше и доки хуёвые, тут ситуация как с ардуиной, да ты можешь взять чип значительно дешевле и мощнее но хули ты с ним делать будешь без среды разработки?
>>224866 Но в пересчёте цены на производительность и возможности явно получше же, да? Я не думаю что F4 серия жрёт меньше, а модемы, да и хуй с ними, выкинуть пару чипов из обвязки и пусть себе без них работает. И что там с ардуиной кстати? Если не касаться софтопроблем, насколько дешевле выходят сами чипы?
>>224862 >Ну вот например MT6572, я могу купить за 500р на али Если разработаешь схему, разведешь pcb, то будет еще один одноплатник типа raspberry или banana orange.
>>224881 А какие сейчас цены на распберри и прочее? Есть смысл? Я слышал краем уха что дороговато выходит, около 3-4к рублей. Но их там наплодили уже хуеву гору, вероятно и убер дешёвые варианты есть. Я не занимаюсь этим, не ориентируюсь совсем, что там как сейчас?
>>224884 А чем можно флопсы замерить? У меня вот есть ведроид, и есть дискавери с STM. Есть какие-нибудь бенчмарки на сишечке? Чтобы скомпилять со всеми возможными оптимизациями, запустить и замерить время.
Кажется понял всё. Смысла нет, так как тот же allwinner h3 идентичный по параметрам, док дохуя, такой же mali400 gpu на борту, только это уже превратили в orange pi и сделали нормальную периферию без лишних модемов и прочего.
По производительности с кремнием такое дело, что удельная производительность (флопсы/цена) сильно падает с понижением класса устройства. То есть чтобы рендерить что-нибудь или видео обжимать лучше раскошелиться на сервер на зионах. Класс ниже это обычный пека. Ещё ниже это платы на атомах. Дальше спектр малинкоподобных плат. Дальше уже микроконтроллеры. То есть собирать кластер микроконтроллеров абсолютно бессмысленно и подбирать их нужно впритык к потребностям, чтобы в один контроллер влезло всё сразу.
>>224867 >Но в пересчёте цены на производительность Да я лучше заплачу на 300 р. больше, чем буду ебаться с говном без доков. Есть же TI или Analog Devices. Разница в цене это и есть оплата за техподдержку и документацию.
>>224890 >То есть чтобы рендерить что-нибудь или видео обжимать лучше раскошелиться на сервер на зионах. Есть такое понятие как оптимизация. Это означает как бы ты не гнался за гигагерцами процессор может просто не осилить твою задачу. Пример: процессор выполняющий операции умножения в один такт, но с меньшей частотой может выполнять операции умножения быстрее чем всякие гигагерцовые без аппаратного умножения, так как тот будет многократно складывать и терять такты.
>>224932 Ну всё не так просто. Мы слишком слабо информированы насчёт устройства конкретных процессоров чтобы утверждать наверняка. Мне кажется что умножение всё-таки в современных процессорах таки быстрое. Насколько помню, там что-то вроде школьного "в столбик". Строки можно параллельно посчитать, а следующими тактами просуммировать. Сомневаюсь что например в видеокартах это как-то иначе работает. В процах внутри умножители частоты могут стоять в любом месте.
>>224928 Ну так-то да. Но всё-таки цена тоже многое решает. Например ту же малинку никто бы не покупал если бы она не перевешивала по цене. Никому не интересно навороченные малинки, приближающиеся по возможностям к пека, но вот когда выходят совсем дешёвые платы, сразу ажиотаж.
>>224933 >Мы слишком слабо информированы насчёт устройства конкретных процессоров чтобы утверждать наверняка. Вы - да, мы - нет. >Насколько помню, там что-то вроде школьного "в столбик". Похоже, но не совсем. Посмотри как работает современное АЛУ. Есть АЛУ для работы с плавающей точкой.
>>224935 Я-то думал мы о целочисленном умножении. Ну да ладно. Для меня в принципе не новость что далеко не все операции однотактные. Ну кроме всяких экстремальных RISC процессоров. Но вот например в случае зиона частота (хотя в последнее время уже латентность, а не частота) оперативки намного ниже частоты проца. И тут какбе хуй знает где у него реально будет ботлнек. Те же видеокарты, в них ядер много, но они простые как пять копеек, да, вероятно они умножают за такт и работают на частоте пониже, но они обрезаны оче сильно, ветвления всё. И насчёт вы да мы нет я готов поспорить, ибо внутри это умножение может произойти за множество внутренних тактов, при том что внешне был всего один.
>>224936 Да о целочисленном сложении, а плавающая точка просто как пример что и такое бывает АЛУ. >внутри это умножение может произойти за множество внутренних тактов, при том что внешне был всего один. Да так и есть. Я просто говорю о том что есть инструкции, без которых, какая была бы частота, проц может обрабатывать всё равно не быстро. Вот пример оптимизации Nvidia Quadro - вроде быстрая для работы, а для игор не подходит.
Ананас, вот смотри, говнокодил я под армы в кейле и в ус не дул, а теперь мне говорят, мол, хуйня это всё - Кейл свой код добавляет в проект, так что нинужно. И библиотеки не нужны, ебашь всё сам. Инициализация периферии и работа с ней - понятно всё, заголовочные с регистрами тоже понятно, к тому же никто не мешает посмотреть в похожих/таких же точных процессорах. Но вот чего я не пойму пока - как работает стартап-файл, и что в него писать? Вот хочу я сам целиком проект сделать, как написать стартап?
>>225040 Кейл там начальную инициализацию проводит вроде и (про крайней мере, если использовать rtx) вызов своей какой-то функции __main(), а после уже вызывает мою. Откуда конпелятор будет знать, что программа должна начать выполнение с этого кода?
>>225072 Коллега, который давал задание. Алсо, сейчас глянул - там вроде ничего лишнего нет, инициализация написана на C и просто вызывается перед __main(). Но вопрос мой остается - откуда я должен взять инфу о том, как выглядит стартап-файл? Вот если у меня кроме IAR нет нихуя под рукой, там же в ней самой вроде ничего нет.
>>225074 >как выглядит стартап-файл? Нахуя их вообще писать? Тебе программисты всё написали, а в stm32fxxx.h там почти одни дефайны, нихуя там в код не лезет, а какой-то коллега-юзер который просто берет то, что дают, говорит что инженеры сделали неправильно.
>>225077 Ну погоди, а если у меня нет готовых библиотек? В том же IAR нихуяшеньки нет ведь. Я, видимо, чего-то не понимаю с этим стартапом. В iar размер стека и кучи настраивается в конфигурации проекта, тогда, получается, стартап-файл можно вообще выкинуть?
>>225096 Если нет готовых библиотек то их должен тебе дать производитель контроллера. Или можно посмотреть Datasheet и там написаны все адреса, дальше делаешь дефайны и вот ты написал. Без CMSIS ты должен будешь работать с голыми регистрами, дефайны - это просто приведение соответствий для программиста. Ни в какой код эти дефайны не компилируются. В IAR не работал, но > размер стека и кучи настраивается в конфигурации проекта Всё что настраивается где-то оно в воздухе не висит, оно тоже куда то всё пишется, разве нет?
Если хочется поебаться. Вот асм код майна: AREA |header code|,CODE,READONLY ENTRY EXPORT __main __main
RCC equ 0x18
main
MOV32 R0, RCC MOV R1, #1 STR R1, [R0] END
В любом случаем, нужен SystemInit, core_cm3, stm32f10x.h Или подключай их или на асме пиши инициализацию.
>>225068 Это должен знать линковщик. Читни доки гцц, особенно асм и линкер. Там вкрадции написана вся суть в общем. Линковщик знает, что нужно начинать с асмофайла стартапа, так как ты руками указываешь его
Посоны, а есть подробный, не самый нубовый гайд как (с помощью желательно генты и crossdev) на gcc и официальных заголовках от st таки замигать светодиодами? Я попердолился, почти получилось, но сборка очень увесистая выходит и не мигает, только первое включение/выключение происходит.
>>225113 Благодарствую. >>225116 Что такое макросы и как с ними работать я знаю. Вопрос был про стартап. >Всё что настраивается где-то оно в воздухе не висит, оно тоже куда то всё пишется, разве нет? Да, у IAR это конфигурационный файл в папке с проектом, в котором написано сверху капсом "НЕ ВЛЕЗАЙ, УБЬЕТ!" В кейле это в стартапе настраивалось. Для сравнения в Atmel Studio по-моему вообще в дикие ебеня надо лезть, чтобы задать руками размер стека/кучи. Но там тоже был какой-то стартап на асме написан. Глянул у коллеги проект - там ничего такого нет, о чем написано тут >>225113. Получается, стартап - опциональный файл, и на него можно положить болт? Но его можно использовать, если программа лежит во внешней памяти, чтобы загрузить её в sram, например? >>225445 В чем аноны пишут/отлаживают под мк тогда?
>>226314 Для СВЧ мы обычно отступали от полосков 2-3 ширины полоска, дальше была сплошняком земля с частыми отверстиями переходными в шахматном порядке на обратную сторону, которая тоже целиком была залита землёй. Но это во всяких аналоговых схемах. А вот решетку такую я нигде не видел ещё. Да и вообще за ЛУТ у нас обоссывают, даже если для нч.
>>226405 Ну тазик с каустикой и УФ-лампа для засветки фоторезиста условно тоже может быть у всех. >>226305 Но ведь погонная индуктивность и результирующий импеданс такой сетки будет больше.
>>226289 >А в чем проблемы? Встречал объяснение, что на больших участках со сплошным заполнением принтер, пользуясь особенностями зрительного восприятия человека, хитрит и набирает меньше тонера.
>>226304 Предположу банальную экономию меди там, где полигон по каким-то причинам всё-таки нужен.
>>226426 >банальную экономию меди там, где полигон по каким-то причинам всё-таки нужен. Наркоман? По-твоему, медь на полигон наносится, а не стравливается со сплошного слоя? Экономят как раз травильный раствор, и для этого иногда все промежутки между проводниками заполняют медью, насколько это возможно. Ну и ещё баланс меди на внутренних слоях МПП выполнять надо для лучшей межслойной адгезии, там тоже заполняют свободные от проводников участки полигонами, которые не подключены ни к чему. Причём обычно там применяют "сетку наоборот" для минимизации роста паразитной емкости, то есть массив разделённых медных квадратиков с протравленной между ними сеткой.
>>226405 Я тоже не понимаю, чем ЛУТ плох для всякой хуйни в домашних условиях. Почему-то считают все, что даже макетка лучше, чем ЛУТ. А на макетке иногда какая-то хуйня лютая творится - прилепили GPS/ГЛОНАСС модуль туда и поставили рядом батарейку. Я так обрадовался, что с батарейкой не надо полчаса ждать после включения, пока он положение определит своё, а позже оказалось, что батарейка там была не припаяна никуда. Как он при этом работал - хер знает, лол. >>226415 Нет, в лаборатории СВЧ. >>226430 Не на глазок, но меня тоже удивляло, что всегда расстояние между полоском и земляным полигоном 2 ширины полоска, а если плата позволяет, то 3, а не какое-то определенное значение из того же AWR, например. А вообще я к СВЧ мало отношения имею, по большей части пишу под мк, но когда-то было дело.
>>231916 > из него можно зделать компьютер > И ебашить в четвёртый фоллач на максималках. Блядь, школьники уже даже про педивикию не знают? > слышал > сосед сказал когда я у него хуй сосал > слухи ходят https://geektimes.ru/post/93210/
>>235732 Ну извЕни. Юниксы на системах без MMU в принципе живут (наиболее известные примеры: микрософтовский Xenix и RetroBSD — современный порт 2.11BSD на PIC24), но OCHE KHUEVO.
>>235771 проще чем ипаться с установкой люниха. >>235768 Швед Люникс Торвальдс изобрел люних в 1991 для х86. Сильно юних хотел на своем 386-ом, а был только МС-ДОС. Следуя пути финского студента проще для этого контроллера с АРМ написать ОСь с юних идеалогией.
Да кстате в 2010 вроде был наш русский выпускник уральской школы Попов, он тоже свою ось написал с офисом и антивирусом. Но ФСБ быстро почикали гения и превратили все в банальную комедию. Все блядь засекречено со времен совка, потому и развития никакого нет.
Господа, подскажите ньюфагу, собрался вкатываться в этот ваш арм inb4: выкатывайся нахуй, какой из стульев выбрать STM32F407G-DISC1 или STM32F429I-DISC1? Какие подводные камни?
да плохое, поддкржка посикса при прочих равных условиях потребут увеличение потребляемых ресурсов, если нужен посикс то лучше тогда взять ос где это действительно хорошо реализовано в томже линуксе
>>236011 >на чем пишешь На хелловорлдах ЛОЛ. Если серьезно, то все эти CMSIS, HAL или SPL библиотеки - и есть примеры кода работы с железом. Использовать их "как есть" можно лишь в учебных целях.
>>236035 вся эта стм си поебень меняется год от года, а асм и понимание внутреннего железа дает ясность в голове. причем можно понимать тащемта пик16 или 18 и быстро вникать тащемта в стм8. читнуть дашит и все, ну на край програмер мануал
Самый оптимальный вариант на данный момент времени это ПЛИС. Все адекваты пересели уже. Сам программируешь себе железо и программируешь на это железо ОС.
>>236068 Месяц назад мигал светодиодом, сегодня обновил проект через STM32CubeMX, функции VPC месяц назад назывались иначе и в параметрах передавались не структуры а указатели только. Буду задрачивать асму
>>236072 Не имеет смысла. Любой настоящий разработчик под арм знает даташит периферии, но зачем писать на асме, когда придуман си и хал? В хале самый периферийный низ есть по сути запись числа в регистр модуля, и выигрыш по скорости работы, если этот код написать на асме, нулевой.
И си, при этом, ускоряет разборку, и за t времени на Си ты напишешь и отладишь более качественно, чем на асме
>>236233 это не фраза, дебил, это предложение. Для контролера среднего уровня вполне достаточно ассемблера, для МС-ДОСа достаточно ассемблера, и на асме программы понятнее. Для модулей ядра ОС Виндовс и Линупса оптимально использование Си.
ПриФФки все в этом чятике. Хочу собрать свою мигалку светодиодом на МК. Но вот незадача, у меня отсутствует программатор. И из этого вытекает два тупых вопроса. А) Есть ли какие-то проги эмуляторы програматоров, чтобы просто припаять проволки от USB к ножкам МК Б) Как отреагируют в магазе, если я попрошу у них подшится и если положительно, то за какую плату.
>>236254 Ну вот например мне дали найти ошибку в работе мышки, мозг которой был написан другим человеком на асме. Сидел два дня в поиске проблемы, полностью изучил асмо-код. Что тут можно сказать? Если бы код был на си не было компилятора под архитектуру, сам его написать я не смогу, на поиск проблемы было бы затрачено раза в 4 меньше времени, да и разработчик врядли бы допустил этот баг. Выигрыш от асмы взачастую в размере прошивки, а не в скорости работы, а нахрен нам делать 1кб асмокода вместо 2 кб сишного, когда памяти на 16?
>>236471 вот в этом и проблема, то что ты ничего сложного и не разрабатывал. Где нужно что то отлаживать тестировать, когда несколько человек работает над проектом и тут ты понимаешь зачем тебе IDE и зачем нужен Си. Но с видом экспеперта делаешь заявления типа(думаю это ты написал): >Для контролера среднего уровня вполне достаточно ассемблера, для МС-ДОСа достаточно ассемблера, и на асме программы понятнее. Для модулей ядра ОС Виндовс и Линупса оптимально использование Си. Так же как и анон выше говорил что HAL ему не удобный, еще как удобный если ты понимаешь Си и в состоянии читать на английском. За 5 минут копания в библиотеке можно въехать чего они там поменяли. Ассемблер это лишнее байтоебство, на котором надо сделать пару упражнений и отложить в сторону. Тем более для АРМок где памяти куча обычно. К слову сказать компиляторы достаточно хорошо все сейчас компилят и код получается не таким уж и раздутым, сомневаюсь что если ты будешь писать на АСМе что то то большое у тебя получиться в лучшем случае на 10-20% меньше.
>>236483 пpoeбaл диск с сорцами, все на двд сбрасывал винты сериалами забиты Кстате какое ИДЕ можешь посоветовать, какое самое годное для работы с STM8 В обычной жизни доставляло NetBeans
>>236489 >пpoeбaл диск с сорцами, все на двд сбрасывал винты сериалами забиты понятно. >Кстате какое ИДЕ можешь посоветовать, какое самое годное для работы с STM8 ну у нас юзают IAR, вполне себе норм
Не понимаю споров ASM-vs-C. Привыкнув к АСМу ты становишься узким специалистом, и хуй перекатишься на другое ядро, 8051->PIC ->AVR->etc. Да хоть бы и между arm и thumb уже сложно будет переключаться. Будете долго смотреть в систему команд, а на Си дело делать можно сразу.
>>236691 Мне Пистон больше доставляет, жду время когда портируют на ардуино. На интел эдисоне питон стоит и больше смотреть на Си не могу. Да и Си на самом деле от ассемблера не далеко ушел.
>>236719 >199 баксов >>236717 >22килорубля Вы вообще охуели там чтоли? Пиздец пиздец!1 Я до сих пор помалкивал, но теперь не могу. Ну нахуя вам эти vendor-locked STM8, AVR или PIC ? Ведь есть же Арм и Кортекс. С которыми, когда хочешь, перекатываешься между конкурентами: AT91 -> LPC -> KINETIS -> STM32 -> SAM3/4, а инструменты JTag-адаптеры, компиляторы, IDE остаются. Вы вот скажите, что в этом STM8 есть, чего нету в младшем Cortex M0 STM32 ?
>>236819 >Берешь Дискавери за тыщу и радуешься Да! Но что заставляет людей обращать внимание на эти AVR/PIC/STM8 или другое восьмибитное говно? >>236811 Что сказать-то хотел?
>>236824 Простота. Ресурсов хватает для применения в довольно серьезных поделках. Непонятна ценовая политика производителей, когда 32-битный MK ARM стоит дешевле 8-битного. Я вот понабрал себе всех мастей, но пока мозгов хватает "разобраться" с AVR, потом перешагну на STM8, а потом дойду (надеюсь) до stm32f429 и собранной на ней дискавери.
>>236825 >Простота. Ресурсов хватает Микроконтроллеры это проц плюс периферия. Работа с периферией везде одинаковая: пишешь настройки в регистры - ведешь обмен данными через другие регистры, и возможно получаешь переходы на функции прерываний. Хочешь сказать, от процессорного ядра зависит сложность освоения или сложность разработки? Мне приходилось применять микроконтроллеры семейства i8051, и на мой взгляд ARM/CortexM нисколько не сложнее. Плюс вижу в том, что освоив однажды программирование процессорного ядра ARM, становится возможным выбирать между изделиями любого производителя. >Я вот понабрал себе всех мастей Но ведь для каждого семейства нужно будет покупать/паять программаторы, искать компиляторы и среды разработки, осваивать. Это требует времени и сил. Смысл в этом могу разглядеть только один - расширение кругозора, туризм, развлечение. Типа "а сейчас сходим посмотрим как там в мире stm8".
господа, подскажите нубу-тянке. была плата stm32f407discovery, сделала прошивку, все пашет, збс. Сейчас закупили stm32f407disc-1 блеат, так я их даже прошить не могу! драйвера может нужны другие? или st link v2 не годится? Сорян если туплю
>>236899 посмотрела, дело реал не в stlink. разъем раздроченый был просто. Но теперь проблемка похуже. платка заводится от юсб, лампочки мигают вся хуйня, режими переключаются, переношу на макетную плату, где питание 5В напрямую подается, нихера не пашет..http://forum.easyelectronics.ru/viewtopic.php?f=35&t=26853&p=450407 вот как тут все прям, откусила резистор к херам, не помогло
>>236921 нет! мне что то кажется на stm32f103 прошивка косячная забита. прифигачила на nrst и Vdd rc-цепочку, теперь кое как пашет, но конечно надо чтобы импульс прямоугольный был
>>187056 (OP) Ананасы, хочу прикупить себе Beaglebone black на что-то подороже денег не хватает, хотя очень хочу купить какую-то DSP-платку с кучей разной периферии, чтобы в полной мере обмазываться матаном и дрочить, однако увидел, что есть еще модификация Green Wireless, в которой нету нахуй не нужного hdmi, зато есть беспроводные интерфейсы. Единственным минусом есть то, что платы разводит какая-то непонятная фирма seeed studio. Кто-нибудь покупал у них платы? Какого они качества? Стоит ли покупать этот Green Wireless вместо менее функционального, но гарантированно качественного Black от Texas Instruments?
Если я сделаю отдельный тред, где я на stm32f030 буду ваять самодельные часы с блекджеком и шлюхами с постоянным отписыванием своей бесполезной деятельности - как быстро меня забанят и тред потрут? Стоит это говно вываливать сюда тогда сразу?
>>238624 Тогда ебашь в отдельном треде и моли мочу шоб не потерла. Или обзови тред - "Свистелки и перделки молодых и дерзких" и пусть там аноны хвастаются своими йоба-махарайками.
>>238624 Дублируй и там и там. Регистрироваться пять минут, на wordpress.com себе стандартный блог заведи. Или вообще на ЖЖ лол. В соцсетях обычно тонет.
Пацаны, вот есть камера, которая по выходящему с нее клоку в 24 МГц выставляет параллельно байт данных. Как оценить необходимое быстродействие МК для того, чтобы получить с неё кадр? Получается, что на каждый такт с камеры мк должен выполнить операцию считывания и записи этого байта плюс инкрементировать указатель на следующий элемент. Но там же ещё по несколько тактов на прочую хурму уйдёт. Выходит, что понадобится МК с частотой раз в 10 больше, ведь так?
Анон, вкатываюсь из ньюфаг-треда. Хочу замутить часики прикольные. Есть тёплый ламповый дисплей и контроллер PIC18F252. А вот чего нет - так это желания читать тонну мануалов. Помоги мне разобраться со всем этим: контроллер - как проверить его, живой или нет. Где поискать туториалы для нубов? С какой стороны вообще начать программировать эту штуку?
Стоить разбираться с Дуал_АЦП, или тупо две отдельных ноги с разными АЦП и так норм? Как вообще грамотно с двух источников одновременно сигнал оцифровывать?
>>240757 Одну студию только знаю MSVS, кстате На ютабе один вадим в своих видио Keil и stm32cubemx студией называет, возможно так и есть По PIC есть книжка Санчоса 2007 года лютая годнота
>>187056 (OP) Хочу купить stm32 discovery и программировать его, сидя дома перед компьютером. У меня, кроме пеки, ничего нет- ни проводов, ни паяльника, ни резисторов. Сейчас нахожусь в дс, но скоро уеду обратно к себе в мухосрань, там это все сложнее достать. Что нужно купить, чтобы без проблем собирать различные девайсы? Каких-то практических целей не преследую, просто хочу научиться работать с микроконтроллером.
Только смотри не перепутай, если на периферии стандартная гребенка контактов (как на самой дискавери), то провода female-female нужны, иначе не сунешь палку в дырку.
>>242172 >программатор с USB Зачем? Коннекторы - это если ты периферию какую-нибудь захочешь подключить к дискавери, если хочешь только с самой дискавери работать тебе ничего кроме мини-юсб не надо. Как бичпакет - открыл и готово.
>>242172 Если будешь использовать дюпоны - тебе придется купить несколько планок PLS/PBS, по крайней мере чтоб не паять саму дискавери, к ним же тогда есть смысл взять несколько макетных досок. В случае с дюпонами лучше бери полный набор MM,FM,FF 120шт суммарно, так получишь универсальность. Но это всё опционально, самое простое чего тебе будет достаточно - моток мгтф-а 0,2мм , кусачки маникюрные с фикспрайса, банка лти/глицерин, пос61 и эпсн ватт на 25 с набором напильников. можешь взять термоусадки подходящего размера. Кроме того, имеет смысл раздобыть USB-UART переходник. мимокатился
>>242174 О какой периферии идет речь? Порты ввода/вывода, АЦП, счетчики и так на плате есть. Вообще я бы хотел побольше возможностей опробовать. Провода, паяльник или еще что-то не проблема купить.
>>242180 Ну, любая хуйня для АЦП/ЦАП (фотодиод, светодиод, лазер, датчик температуры etc), сегментные дисплеи, дополнительные кнопочки или даже клавиатуры, подключение FTDI как сказал >>242176-анон, ибо прошивать это хорошо, но знать интерфейс еще лучше и наверняка ты захочешь связь контроллера со своим приложением на компьютере, через юарт это проще всего Миллион всего можно подключить к контроллеру.
>>242192 Алсо, я начинал именно с 429, до этого вообще не программировал контроллеры. Да, местами надо мозг включить, зато потом охуеешь от того, что смог.
>>242181 Пакеты основных элементов продаются где-нибудь? Или пойти в радиомагазин и набрать что приглянется? >>242189 Получается можно или контроллер сразу дорогой взять, либо взять попроще, но датчики и кнопочки отдельно докупить?
>>242194 Можешь взять плату с кучей периферии, там будут кнопочки с диодами и всякой лабудой, но все равно захочется подключить то, чего не будет на плате (те же шаговики), просто придется меньше паяльником орудовать.
Итого: 1) STM32F429 - 30 баксов и с дисплейчиком 2) Провода dupont разные 3) USB-UART переходник 3) Паяльник и сопутствующие товары 4) Двигателей и датчиков на свой вкус Магазины в дс посоветуете? Я пока гуглил несколько раз на Чип и Дип натыкался, там норм? Если для начала без паяльника брать, то тогда имеет смысл что-то кроме контроллера покупать?
Знаком с аналоговой электроникой и жёсткой логикой, знаю си. Нормально ли вкатываться в армы в частности и микроконтроллеры вообще, купив платку вроде http://m.ebay.com/itm/201414966215?_mwBanner=1 и запилив на них, скажем, электронные часы? in4b: бери ардуину Или без опыта с avr вкатиться нереально?
>>242903 Ну я серьёзно же. Хочется вкатиться в микроконтроллеры. Логично начать с эдакого хеллоуворлда, интересного ещё и практическим результатом никсиклок на 176й логике хоть и справляется с отсчетом времени, отображением секунд, энергонезависимостью и наличием будильника, но второй раз пилить антуражный девайс начала 80-х о 18-ти микросхемах уже не хочется. вопрос в том, что если плата с мелким армом стоит копейки, стоит начинать осваивать микроконтроллеры прямо с арма, иди шансов нет, и нужно сперва идти через атмеги/пики/ардуино?
>>242904 Есть все шансы, начинание сразу с Cortex-M3 будет лучше, чем с АВР про PIC'и вообще забудь Качаешь Keil + CubeMX, читаешь статьи новее 2013 года. Про SPL забудь, CMSIS оче долго и нудно, пригодится но не сразу. Потом, когда ограничения 64кб тебе будет уже не хватать можно прекатиться на STM32SW или другое эклипс поделие, ну или найти кейген на кейл.
>>242905 Я тут мимо проходил, как раз вопросы есть. Задача - вкатиться в ARM. Для начала помигать светодиодом. Далее - написать прогу, принимающую по уарту и отсылающую модифицированную инфу по другому уарту. Дано - я, немного могущий в C. Плата NUCLEO-F103RB. KEIL, который мне не понравился. CooCoX+GCC, который мне более-менее понравился. Вопросы: CooCoX или пытаться осилить KEIL? Какие библиотеки использовать? CubeMX годен?
>>243030 CubeMX годен, настройка тактирования и HAL проект для кейла из коробки. Кококс хоть и бесплатен, но мне не понравился. Кейл прильстил реальной простотой и неперегружнным интерфейсом. Ну и возможности отладки с литературой в соседней вкладке просто шикарны. Самое сложное в кейл это понять, что его не надо осиливать. Сгенил в CubeMX проект, открыл в кейл и работаешь уже в нем, как в любой другой ИДЕ. Ну мб пару вопросов встанет с отладчиком, который ищутся на ютубе/интернете на каждом шагу.
Я тут один пердолюсь с cmake + qtcreator + gcc? Терпеть не могу графические менюшки, потом хуй пойми что откуда взялось и какие там умолчания. Научился одной хуйне - перекатился в другую - все совсем иначе.
>>243257 Я два раза заказывал, первый раз долго шла и потерялась, вернули деньги. Заказал у другого китайца, шла тоже больше месяца, написал продавцу, говорит, потерялась, возвращает деньги. Нашел на olx, продавец тормоз, наложенный платеж не подходит, на карточку деньги принять боится, только личная встреча, послал нахуй. Тут же всплыла на аукро, заказал, завтра будет наконец. Длинный путь переката с пиков в стм, сцуко.
>>243257 Тебе от китайского продавца сообщение «Sorry, friend, но я такой хитрожопый, что отправил тебе посылку без трека, хотя обещал ChinaPost Registered» приходило? Ну или просто в описании метода доставки была какая-то поебень вроде ChinaPost Small Packets? Если да, то не удивляйся — безтрековая доставка из Китая это лотерея: может идти пару недель, а может полгода (или вообще пропадёт где-то по пути).
>>243393 >Тебе от китайского продавца сообщение «Sorry, friend, но я такой хитрожопый, что отправил тебе посылку без трека, хотя обещал ChinaPost Registered» приходило? Нет, такого не приходило. Вообще сообщений не было.
>>243406 Она где-то между таможней и сортировочным центром. Может, на складе отгрузки таможни. А может и на складе приема сортировки неотсканенная валяется. А может еще где.
Друзья, хочу научиться прогать мк. Начну именно с ARM(есть необходимость). Но плату лень паять, а программатор лень покупать. Вот нашел Iskra Neo ATmega32u4. Прогается череp usb кабель. Можно на нем поучиться? Светодиодиком моргнуть для начала, потом посложнее. Только там не совсем C++, а какой то упрощенный. Я ведь в правильный тред попал. Меги это ARM а не AVR? Я новичок и в голове у меня каша. Но не хочу начинать с чего попроще типа пиков. C++ я немного знаю и чуть знаком с ассемблером, но специфику программирования мк пока не очень понимаю. Если та плата говно и моча посоветуйте с чего начать.
>>243443 Меги - это АВР. Для совсем ньюфага сойдёт. Научишься мигать светодиодами и читать даташит. Разберешься с регистрами и зачем они. Если пишешь на С, то разницы именно в проце ты не заметишь при перекате, а вот переферия будет совсем другая, так что не задрачивай её особо. Она не только между семействами разная, но и сами наборы для каждого чипа разные, именно по этому их такой зоопарк. Из знакомства с аврками ты должен осилить идею, а потом перекатишься как сможешь себе позволить.
>>243481 Неа, я функциональщик и пишу на scheme. А ARM заказал, потому что раньше доставляло писать на асме, вскрывать крэкми и дергать функции ядра. Хочу подергать прерывания микропроцессоров теперь.
>>243484 Помогите обезьяне ничего не спалить. По формуле при силе тока 5 В и рассчитанном на 20 мА диоде сопротивление должно быть 240 ом, так? А если выходное напряжение 3.5 В, то должно хватить 175 Ом. Таких резисторов мне хватит?
>>243489 Там уже есть пара светодиодов, на плате, хватит, чтобы помигать. Я сегодня, как пришла плата, поморгал сразу 167 светодиодами. Мне понадобится. Перекат с пиков состоялся. Но покопавшись в даташитах, я, признаться, охуел мощно.
>>243489 По опыту 20 ма и современный светодиод превращается в ебаный прожектор выжигающий глазки прямо до задней стенки черепа. Ставлю 3 килоома и все норм. Можно смотреть.
>>243515 Просто нынешние светодиоды чудовищно эффективны по сравнению с АЛ307 всякими, для заметного глазу свечения типа индикации вкл/выкл им иногда достаточно микроампер. NumLock ебучий лаком закрашиваю.
>>243509 >По опыту 20 ма и современный светодиод превращается в ебаный прожектор выжигающий глазки прямо до задней стенки черепа Охуенно же. Лишь бы не сгорал.
Такс такс такс анончики, сделали плату на работе arm926. Оче собираюсь накатить линукс, в основном из-за драйверов, сети и ссш. Правильно ли я понимаю, что мне стоит собрать ядро линукса под свои нужды?
>>244946 Пойди, пожалуйста, нахуй. Вопросы из разряда "у меня есть ёба, что на ней сделать годного?" являются крайней формой идиотизма. Надо выбирать контроллер под задачу, а не наоборот. Но ответ на твой вопрос есть: используй его для того, для чего его уже использовали. Вангую, что в твоём случае это а-ля сигнальный процессор. Но я тебя сразу предупреждаю -- ты заебёшься учить всё то, что нужно для его использования, ибо тема весьма специфичная и ты должен заранее понимать, к чему ты идёшь и как ты этого будешь достигать. А в науку тебе и тебе подобным могу сказать: бери задачу, ищи под неё исполняющий механизм, актуальный на сегодняшний день и доступный тебе "здесь и сейчас", а потом эту задачу решай. У меня, к примеру, лежит PicKit2 и несколько их контроллеров. Я на них кодил под ассемблером и под C. Дак вот, на данный момент я уже несколько лет как работаю с STM32 по долгу службы, и это PIC-говно я готов выкинуть нахуй, ибо дорого, уёбищьно и нахуй не нужно, если только придётся кодить под существующий проект, и то задумаюсь, надо ли это мне, может проще сделать плату-переходник STM32-PIC.
Поцаны, помогите, я тупой:( Купил STM32F4, спиратил софт отсюда: https://rutracker.org/forum/viewtopic.php?t=2305709 думал по гайдам потихоньку разобраться что к чему по этим http://microtechnics.ru/stm32-uchebnyj-kurs-keil-sozdanie-proekta/. А там и версия у keil-а другая и библиотеки качать надо и все равно в этих библиотеках нет тех файлов, что на скринах. Как кароче эту штуку запустить? Может на ютубе есть что-то годное? для даунов Алсо, я в английском слабо шарю.
Пришла STM32VL DISCOVERY и периферия. Хочу начать программировать.
1. Какую срезу разработки выбрать? 2.Устанавливал CooCox, но не разобрался, как подключать библиотеки, необходимые для разработки под мою STM. На маленьком чипе маркировка STM32 F103C8T6, но в CooCox такого чипа нет, а есть чип похожей модели. Нужных библиотек в настройках проекта не оказалось. Что выбрать для программирования именно этой STM?
>>246211 >Насколько знаю, там только активный проект прошить можно после компиляции. Для готовых прошивок можно STM32 ST-LINK Utility применить. Подробнее можно? Вот я скомпилировал проект в релизе, но кнопка прошивки в Tools, также якобы доступная по F6, не появилась. Способов сделать проект активным, похожих на "сделать проект главным" в сишных IDE, не вижу, в контекстном меню нихуя нет.
>>246358 Алсо, что означает Debug Server is closed/terminated, debug session will stop? Это из-за того, что плата не подсоединена, или надо запускать какой-то демон для дебага?
Господа, есть гуру программирования на HAL для STM32? Не могу понять логики работы функций через прерывания, интересует именно I2C - в каком порядке и при каких условиях идет, например, передача?
>>247603 >>248994 На таких контроллерах прошивка заливается стандартным житагом и остается там после выключения. Тут как бе вопроса как такового и нет.
Uboot умеет в NOR/NAND флеш. В нем прописаны тайминги для флешки. Есть стандартные команды nand write/read/erase.
Образ кернела предварительно заливается через tftp в ddr, а потом записывается в nand: есть команда tftp в uboot.
В самом uboot есть параметр bootcmd где прописывается что-то вроде: nand read 0x90000000 0x100000 0x300000 и bootm 90000000 - считать начиная с 100 блока нанд (нанд видится блоками по 128кб - 0x20000 * 100 = 0xC80000) 0x300000 байт и поместить в DDR по адресу 0x90000000. С bootm 90000000 - начать загрузку kernel с адреса 90000000
В моем случае и uboot и линукс загружаются по tftp без мозгоебли с флеш. Сам контроллер умеет загружаться по ethernet.
Гугли arm u-boot user guide и arm uboot flashing tools.
Работаю с STM32F407ZG DISCOVERY. При переключении пинов фронт занимает ~500мкСек. При запуске идентичной программы уже на Olimex E407 время установления фронтов занимает 50нС. В чем может быть проблема?
>>249346 Универсальный программатор стоит как боинг. Определись, что ты хочешь программировать. Судя по запросу нихуя ты ещё не хочешь, даже не понимаешь специфики. Контроллеры, как правило ARM архитектуры, они программируются через Jtag и SWD. Если говорить про "микрухи", которые микрухи памяти, то тут много вариантов, и программатор стоит дорого. Ты - хуй.
>>249349 >STM32 Тогда без разговоров бери STM32DISCOVERY демо плату, там тебе будет и SWD и контроллер на поиграться. Стоят они адекватных денег. Сразу F4 не бери -- заебёшься, начиная хотя бы с трёхсотой, чтобы уж совсем низко не падать. Пересесть с F3 на F0 всегда сможешь. Я по работе начинал с STM32F373, но для себя начал работать с STM32F030, ибо они стоит 50 Р за корпус, проблем при пересадке нет. Однако, F4 уже шагнула вперёд, там немного другие принципы программирования и работы с ними. Учиться лучше на F3 и ниже, а после этого тебе и F4 будут по плечу...
Как можно слезть с keil/iar/прочего под шиндоус? В чем писать, чем и как компилить, как заливать? Это вообще возможно? Желательно опенсорс. Несколько лет писал всякое мелкое дерьмо под армы и атмелы, и всегда пользовался этими средами, теперь хочу менять работу, а на меня там как на ебанутого на собеседовании поглядели - ты что, и скрипты линкеру ни разу не писал? и далее по списку.
>>249357 Да. У самого такая валяется, но в качестве программатора не использовал пока ни разу. У них на сайте документ UM0919: >2.2 Embedded ST-Link >The ST-Link programming and debugging tool is integrated on the STM32 value line >Discovery. The embedded ST-Link can be used in 2 different ways: > to program/debug the MCU on board > to program/debug an MCU in another application board using a cable connected to SWD connector CN2. >For information about debugging and programming features refer to ST-Link UM0627. Открывай UM0627 с их сайта и раскуривай. Если плату usb-разъемом от себя повернешь, то слева коннектор 4х1 как раз SWD.
>>249366 >Как можно слезть с keil/iar/прочего под шиндоус? Собственно с открытыми средами разработки проблем нет, просто их все надо настраивать на работу с той или иной конфигурацией. С компиляторами/линкерами тоже проблем нет, GCC умеет в арм. Открытая версия драйвером под Liunx для ST-LINK есть, но с ней, видимо, придётся потрахаться. Из того, что я читал о их реализации, ясно что внутренная структура ST-LINK весьма, эмм, специфична. Atollic True Studio кстати бесплатная, но не помню, открытая ли.
>>249391 А под шиндоус открытые драйвера есть? Я только помню, что давно когда-то на работе накатывал на комп паленый segger, чтобы использовать паленый китайский ноунейм программатор. Получается, подойдет любая среда, к которой можно прикрутить gcc для арма? А процесс отладки непосредственно в мк как при этом выглядеть будет?
>>249366 >Как можно слезть с keil/iar/прочего под шиндоус? В чем писать, чем и как компилить, как заливать? Это вообще возможно? Желательно опенсорс. Несколько лет писал всякое мелкое дерьмо под армы и атмелы, и всегда пользовался этими средами, теперь хочу менять работу, а на меня там как на ебанутого на собеседовании поглядели - ты что, и скрипты линкеру ни разу не писал? и далее по списку. Eclipse.
>>249195 >В чем может быть проблема? Скорее всего в железе: - Посмотри, что там у тебя на пине сидит; - Попробуй выводить на пин другого порта; - Прочисти контакты со спиртом; - Смотри питание микросхемы во время переключения пинов.
>>249397 >А под шиндоус открытые драйвера есть? Не слышал, но если есть по Linux, то можно адаптировать и под винду. Вот только зачем, если ST и так предоставляет драйвера? >>249397 >Получается, подойдет любая среда, к которой можно прикрутить gcc для арма? GCC то можно к любой среде прикрутить, а вот как будет отладка работать -- для меня большой вопрос. На уровне breakpoint-ов и простых watch-ей, думаю, проблем нет, а таких плюшек как, например, регистры, память, live-watch и прочее из IAR, сомневаюсь.
Суп господа, обоссыте нюфаню по делу за архитектуру приложения. Хочу сделать прибор для замера ИК излучения с удаленной передачей. Датчик: таймер инициирует считывание с I2C. Прерывание I2C складывает данные в буфер. Колбэк I2C вызывает передачу данных по SPI. Параллельно идёт лог в UART всех действий. Приемник: SPI складывает полученные данные в буфер и вызывает передачу в UART. Делать все планирую на F030F4 + NRF24L01, питание от 18650.
>>249408 >прибор для замера ИК излучения с удаленной передачей Нахуя такой зоопарк протоколов? Поясни задачу нормально, что такое замер ИК я не понимаю. И "удалённую передачу" ты по какому протоколу гонять собрался?
>>249414 замер ик-спектра будет с помощью датчика tsl2561(I2C), удаленная передача с помощью NRF24L01(SPI), уарт для диагностики. Протокол скорее свой, велосипедный или упрощенное подобие modbus.
>>249432 Ну, то что ты описал про программу похоже на правду. Но дьявол, как всегда, кроется в деталях. Как я понимаю, у тебя будет основной цикл бегать в int main(), и из него будет вызываться всё остальное, а интервалы между замерами будут выверены таймером, т.к. остальное уже в цикле основной программы не имеет временной привязки.
>>249418 У меня тот тексановский st-util бинарь, что гуглится, нормально работать не хочет, пришлось собирать из исходников Еще рабочую, но с другим выводом версию можно выковырять из visualgdb
>>249508 >на чистых прерываниях без какого-либо кода в главной петле программы Это плохая идея. Прерывание должно обрабатываться быстро. Всю остальную обработку нужно передавать из прерывания в основной код, ты это делать собираешься, или как?
>>249512 >В чем риск заключается? Можно заказывать и у китайцев. Мне вот пофиг, на 100-200 р дешевле у дяди Ляо, или здесь и сейчас в Промэлектронике, например, купить. Но здесь и сейчас у локального (я именно про Промэлетронику говорю) мне нравится больше, т.к. если что я воспользуюсь гарантией. Впрочем, если не насиловать выводы, всё будет хорошо.
>>249645 >порядок вызова определяется через колбэки Ты чё там, обосрался??? Начальник!!! Начальник!!! Этот пидор обосрался!!! Я с ним тут сидеть не буду!!!
>>249366 Я пристастился к QtCreator + Cmake QtCreator - быстр и всё есть Cmake - Не могу в голый Makefile, тоесть могу что-то поправить, но не с нуля зебенить. В симэйке есть свои заёбы, и много, но я однажды запердолился, чтобы и в прыщах и в сперме собиралось и теперь ненарадуюсь ФУНКЦИОНАЛУ Как выше писали, ГЦЦ отлично собирает под армы, гдб отлаживает у меня J-link с али. Линкер-шкрепты то еще веселье, но по большей части всегда есть примеры или прям готовые для твоего камня помню, как в перый раз с ними пердолился пик стронгли релейтед, но это не под арм.
>>249397 >А процесс отладки непосредственно в мк как при этом выглядеть будет? Для моего J-link'а скачал какой-то китайский бинарь, который прикидывается GDB-сервером и слушает порт, далее из ИДЕ настраиваешь подключаться к этому порту и всё взлетает. Говорят можно так же через openOCD, но там вроде не работает SWD
>>249397 >А процесс отладки непосредственно в мк как при этом выглядеть будет? Ну в камне же есть спец модуль, с которым ты общаешься через JTAG/SWD, он имеет власть над процом и системной шиной, по команде отладчика он стопорит прцессор, может читать любой байт из памяти, даже IO правда это не всегда имеет смысл, и содержимое любого регистра.
>>249875 >QtCreator С Qt, надеюсь, только название общее? Алсо, я походу вообще неправильно понимаю, что такое make, и зачем им пользуются. >ГЦЦ отлично собирает под армы, гдб отлаживает А что насчет просмотра состояния регистров проца? Можно, конечно, по адресу в окне memory смотреть - когда кейл тупил для какого-то nxp-шного мк, я так делал, но это пиздец просто как неудобно. >Для моего J-link'а скачал какой-то китайский бинарь Пердолинг и недели поиска или всё гораздо лучше? >Ну в камне же есть спец модуль, с которым ты общаешься через JTAG/SWD Да это я знаю, меня интересовало, как с этим всем будет работать среда и сможет ли вообще. Я пока не настолько хорошо пишу, чтобы не отлаживаться внутри процессора вообще.
>>249916 >С Qt, надеюсь, только название общее? Нет, это ИДЕ специально для Qt написанная на Qt >А что насчет просмотра состояния регистров проца? Можно, конечно, по адресу в окне memory смотреть - когда кейл тупил для какого-то nxp-шного мк, я так делал, но это пиздец просто как неудобно. Пик релейтед, правда это не арм, но в арме так же
>>249923 >Eclipse Сидел на нём, но марс оказался слишком забагован и тормознут и я дропнул.
>>249004 Спасибо, но вопрос уже проработан. Микроконтроллер - atmel at91sam9x5. Этот выблядок не имеет пользовательской пзу и имеет 16кб озу, и поэтому приходится изъебываться с помощью т.н. SAM-BA, утилита атмела для работы с их платами. Также людьми и атмелом был разработан бутстрап это ультралегкая программа, выполняемая из озу мк, которая подготавливает плату и загружает юбут.
И ядро, и юбут, и бутстрап, и дтб, и даже образ фс (я взял тупо buildroot), я загружал в nand через эту самбу.
>>249916 make - стандартная программа линуха, которая выполняет файл makefile. В нем, в свою очередь, описано как, где, зачем, кем будет собираться твоя программа. Там описаны файлы, библиотеки для сборки, флаги компилятору, линковщику и т.д.
Язык, на котором все это описано, сложен и не интуитивен, поэтому люди используют различные генераторы типа cmake, которым ты почти человеческим языком указываешь сборку, а он уже лепит makefile. Очевидно, что мейкфайл, грубо говоря, схож для арма и х86, для винды, линукса, для питона и cpp.
QtCreator - среда, которую пилили для фреймворка Qt. Но он оказался настолько легок и функционален, что на нём стали писать программы, в которых совсем нет Qt и qmake. Нормальная навигация по коду, всяческий рефакторинг напрочь отобьет уебищный богомерзкий иар. Есть гайды по настройке QtCreator для арм. По схожей настройке ты хоть для пиков сможешь писать.
>>250084 Плохо объясняешь. Make это программа-менеджер компиляции, позволяющая автоматически разрешать порядок зависимостей при сборке и не пересобирать то что уже собрано.
>на котором все это описано, сложен и не интуитивен Неправда. Задаются цели (это обычно имена файлов, но могут быть и нефайловые phony-цели), для достижения цели пишется последовательность действий, например вызов компилятора. Стоит учитывать что это не башскрипт, здесь каждая строка работает изолированно, как отдельный башскрипт, и переменные работают чуть иначе. Зато например можно делать wildcard цели, вместо прописывания действий каждому файлу.
Make позволяет там где можно компилировать в параллели, если вызывать его через make -jN, где N максимальное количество потоков.
Я бы так примерно разложил: для совсем простых хелловорлдов компилятор можно вызвать руками, для проектов сложнее писать мейкфайл, для совсем сложных проектов генерировать из cmake. Отдельная пляска начинается при портировании приложения на разные платформы, там уже требуются configure скрипты, которые кстати тоже можно генерировать, cmake вроде с этим может совладать тоже.
>>250115 >там уже требуются configure скрипты, которые кстати тоже можно генерировать, cmake вроде с этим может совладать тоже. Cmake - это замета автотулзам так-то, он умеет всё, что умеют они и понятнее по синтаксису. Алсо есть еще плюхи, вроде скачивания либ прямо из гита в процессе сборки и их подключение к проекту. Например, в прыщах у меня есть либа libpthreads, а вот в сперме надо скачать и собрать libpthreads-win32 и статически прилинковать к проекту.
>>250084 >В нем, в свою очередь, описано как, где, зачем, кем будет собираться твоя программа. То есть, по сути, это как настройки сборки проекта в IDE, только без IDE, так? Про QtCreator понял, спасибо. Обязательно попробую, только я из постов выше так и не усвоил, есть ли необходимые драйвера и прочие инструменты для шиндоус? GDB тот же по-моему только для linux имеется.
>>250139 > То есть, по сути, это как настройки сборки проекта в IDE, только без IDE, так? Безусловно, но сверх того еще всяки плюхи. Но главное не это! В makefile ты можешь написать совершенно любую логику, тогда как в настройках иде она весьма ограничена разрабом иде. Алсо, как ты собрался переносить сборку с одной пеки на другую? В ридми напишешь: настройки проекта->парамеры кококомпилятора->поставит галку тут тут и тут? Ну ты понял.
>>250185 Сегодня немного постиг doxygen. Вышел на него после долгого гугла визуализации классов, в любом виде, не только uml. Есть какие-либо альтернативы? Doxygen справился отлично, но это не его прямая задача
>>250345 Я как-то пытался заставить себя пилить документацию на нем, роаботает конечно охуенно, но надо моч в его разметку, и самое главное не лениться это делать. Ни кто не оценил и времени делать так везде нету.
Хочу прошить STM32VL Discovery. Использую Keil и ST-Link. Прошивку ST-Link обновил, подключаю его к STM32 четырьмя кабелями SWDIO, GND, SWCLK и 3.3V питание. Почему-то прошить никак не получается.
Проект скомпилировался и получился файл Main.axf, который весит дохуя, и маленький hex-файл.
Сначала я пытался прошить при помощи ST-Link Utility. Открыл в ней hex-файл, подключил в один USB стм, в другой - ST-Link, но при попытке приконнектиться возникает ошибка пикрелейтед.
Когда пытался прошить через Keil и нажал Download (F8), получил ошибку Error flash download failed - couldnot load file Main.axf.
Что я делаю не так? И как прошить только код, а не все говно, которое лежит в axf-файле?
>>250408 Так у тебя не с прошиванием а коннектом похоже проблема. Если все правильно соединено, должен добиться коннекта через stlink. А потом лучше все делать в хайле. Создаешь проект, настраиваешь тип программатора, например stlink, там прописываещь тип соединения sw. Пишешь код, компилишь, запускаешь. Он сам знает что какой бинарник прошивать, не надо это вручную делать
>>249366 Я на виндах пользуюсь и хайлем и эклипсом. Хайль шустрый и хороший отладчик, но во всем остальном хуета. Эклипс наоборот, медленый монстр, но охуенен как редактор и отладчик там годный. Да, в отличие от кeil, gcc требует скриптов к линкеру, но в 99% случаев тебе их писать не придется, просто берешь готовые. Это пидоры типа двачеров просто опустить тебя заходели. Большинство ембедщиков хуй тебе с нуля линкер скрипт напишут, ибо нахуй не нужно. Максимум подправить размеры памяти, стека и тп. Если конечно бутлоадер будешь писать, или зачем-то нужно чтобы код во флеш не с нулевого сектора загружался (чтобы например настройки сохранять в начальных секторах небольшого размера), то тогда да. Что касается отладчиков под эклипсом, я пользуюсь и seggerом (в эклипсе напрямую) и stlink - через Open OCD и чуток настройки подправить.
>>250084 Ну нахуй в 2016 писать руками мейкфайлы. Не нравится keil или eclipse, есть еще Atollic studio, или emblocks, или этот... миниатюрная копия эклипса, маленький но придурковатый, вылетел из башки. Короч все они умеют сами makefile генерить, зачем этот мазохизм.
>>249397 >подойдет любая среда, к которой можно Нет, заебешься ты "любую среду" под себя затачивать. Бери готовую интегрированную среду с поддержкой arm - eclipse+arm плагин, или atollic studio и тп. Там все будет и компиляция и прошивка и отладка.
Господа, есть Parallel Output ADC, то есть когда по внемешнему клоку на ногах D0..Dn выставляются биты семпла. Дак вот, а сможет ли STM32 легко и непринужденно тактировать АЦП и читать семплы, с буферизацией, типа по прерыванию получать указатель на заполненный массив сэмплов. Или придется вручную дергать ногой, считывать состояние ног данных, складывать в массив?
>>250493 Ну вообще да, быстро, АЦП 10 МГц может держать. Как-то грустно прям, думал можно это все переложить на периферию а ресурсы проца только на обработку тратить.
>>250498 Ну вообщем да, АЦП - AD9220, по фронту input clock на ногах BIT1-BIT12 собственно выставляет биты сэмла, плюс еще есть нога переполнения OTR. Вот как раз хотелось-бы таймером тактовать clock и опрашивать ноги BIT АЦП, на основании которых формировать значение сэмла. >>250501 у STM32 есть свой ADC? Частота дискретизации низкая. AD9220 думаю получше встроенного будет и по другим параметрам.
>>250420 >Так у тебя не с прошиванием а коннектом похоже проблема. Если все правильно соединено, должен добиться коннекта через stlink Что могло пойти не так? Я соединил соответствующие выводы на программаторе и плате, снял перемычки, жал даже резет, но не работает.
>>250507 Трудно сказать. Давай какие нибудь пикчи - как надо, как соединял. У меня где-то валяетс discovery если найду посмотрю, но вроде там все просто - соединил и работает.
>>250506 А вижу, у тебя 10msps а в STM32 2.4msps. Но если ты будешь 12 пинов в ручную читать и в массив складывать, то насколько это замедлит? Посмотри на DCMI или FSMC.
>>250547 Мне кажется ты по какому то сложному пути пошел. Сейчас выудил свою дисквари из кучи мусора, воткнул mini usb и все заработало, см пик. Никаких перемычек никогда не трогал.
>>250551 Теперь я отключил mini usb дискавери, и он получает питание и данные только от ст линка. В настройках хайля ст линк определился. Когда жму F8 Download, один раз возникла ошибка internal error, а сейчас no target connected.
>>250556 Ты все делаешь чтобы максимально заебаться. Подключаешь внешний stlink, и грузишь отдельно hex файл, вместо того чтобы просто воткнуть провод в дискавери, написать пару строк хело ворлд и запусть свой проект и все. Пять минут.
>>250506 Открою секрет. Идешь на форум st и там всегда в углу сидит старый азиатский дед из "Матрицы". Забыл как его там звали, но на st он кажется cleve1. Он охуенен и все знает. Я всегда к нему пристаю. И этот вопрос там тоже обсуждался. У меня в голове куча бредовых проектов, но как только я разбираюсь КАК нужно делать, у меня тут же пропадает интерес, так что ни один не сделал. Например цифровой осциллограф на ёбагерцы. Окозывается они пилятся на суперскоростных ADC, которые не один контроллер не в состоянии читать. Между ними нужно сажать FPGA. И вообще, даже для более низких скоростей, как у тебя, STM32 архитектура не предназначена для параллельного синхронного ВВОДА (вывод есть, через FCMS или как эта хуета называется).
>>250561 >Между ними нужно сажать FPGA. Да, изначально делал на FPGA, но сейчас опять присматриваюсь к STM32, из-за наличия dsp, ну и допилить что-то свое гораздо проще. Единственное, что пока останавливает - если допустим разогнать до 100МГц, и читать данные на 10МГц, то на обработку одного сэмла остается всего 10 тактов... Но чую, что я где-то обосрался в рассуждениях. >И этот вопрос там тоже обсуждался. Может тогда ссылочку скинешь? >STM32 архитектура не предназначена для параллельного синхронного ВВОДА А как же AN4666.
>>250609 >AN4666 ебаать, сложна! не знаю, может в том обсуждении на форуме имелось ввиду что штатных методов нет, а через такое изъебство возможно, хз. сцылку не дам, это был рандом поиск по форуму на st, уже не помню как нашел. пили как написано, чо.
>>250619 >пили как написано, чо. Таки да, только там тактирует передающий, а мне нужно чтобы тактировал принимающий, но ладно, буду разбираться. Единственное, что еще волнует - производительность. Мне например нужно понять потянет ли arm_fir_decimate_fast_q15 с заданным количеством коэфиициентов поток данных в 10MSPS. Есть какой-нибудь инструмент для оценки перфоманса или вручную замеры делать придется?
>>250950 Гугл говорит что можно, но поверь моему опыту, лучше 1 раз купить программатор с СВД и отлаживать как белый человек, чем ебаться с УАРТом и принтфами
Карач я ньюфаг в ARM'ах. Накидайте литературы, чтобы после изучения я мог охуенно прогать под эти процессоры. Я быдлокодер, и несколько лет дрочить транзисторные усилители и фильтры мне лень, зато нравится реверсить хеллоуворлды под ARM в ида про и таким образом медленно осваивать ассемблер.
>>250976 пиздос, хотел линк из форума запостить, ни хуя не дает, сделал тайни урл все равно не дает - тайни урл латинницей это слово из спам листа оказывается. теперь линки внешние нельзя постить вообще?
>>250976 О еще раз спасибо. Где-то видел, что GPIO через DMA можно только в режиме "память память" без вкусностей типо цикличного чтения. А тут действительно GPIOC->IDR как адрес периферии используется. Тогда уж и дабл буфферинг можно и прикрутить или прерывание на халф трансфер.
>>250982 И не забудь что тебе DMA2 надо. И если у тебя семпл рейт мегагерцы, то про прерывания на таких скоростях забыть нужно наверное. Прерывания даже порядка единиц микросекунд это уже скучно.
Где можно почитать про соответствие номеров и названий пинов на плате stm32vl discovery и их программным номерам, которые я использую в коде, типа GPIO_Pin_9?
>>250984 >И не забудь что тебе DMA2 надо. Ну да, уже понял. DMA1 что-то там не хватает. У меня еще такой вопросик. В примере один таймер сконфигурирован Input Capture, а второй Output Compare и типо надо их ноги соединить. То есть Output Compare генерит меандр, а Input Capture по фронту инициирует DMA транзакцию. А мжет ли Output Compare таймер инициировать DMA транзакцию, то есть одним таймером и АЦП тактовать и одновременно инициировать чтение значений ног, которые АЦП выставляет по фронту?
>>251068 С дивана, могу ошибаться У таймера там есть некие ивенты, их можно отправлять ДМА-контроллеру, так было в моём проекте на стм32ф103. Почитай датаЩИТ
>>251068 >мжет ли Output Compare таймер инициировать DMA транзакцию, Да, может
• Interrupt/DMA generation on the following events: – Update: counter overflow/underflow, counter initialization (by software or internal/external trigger) – Trigger event (counter start, stop, initialization or count by internal/external trigger) – Input capture – Output compare
Output compare mode:
Sends a DMA request if the corresponding enable bit is set (CCxDE bit in the TIMx_DIER register, CCDS bit in the TIMx_CR2 register for the DMA request selection).
>>251068 >одним таймером и АЦП тактовать и одновременно инициировать чтение ХЗ как он там задумали в этой рацухе, но ведь неспроста у них два таймера, один тактует другой читает, в этом у них вся соль.
>>251083 Ок, спасибо бро. >>251087 Ну возможно DMA-запрос выполняется раньше чем выставляется уровень на ноге (не знаю, можно ли такую инфу нарыть в даташите), плюс задержка самого тактируемого устройства = нестабильность при работе на высоких частотах. В принципе тоже можно тоже развести ногу тактирующего таймера на клок АПЦ и на ногу Input Capture таймера. Может действительно так даже лучше будет.
>>251124 Я просто подумал, что раз нет внешней хардверной синхронизации, то могут быть глюки связанные с асинхронностями. А в принципе может не все так страшно. Тебе ж не нужно гарантировать, что каждое чтение соответствует именно предшествующему такту. В худшем случае один семпл может считаться повторно. Главное же чтобы все ебошило непрерывно без затыков с приемлемой скоростью. (Если я правильно понимаю все архитектуру).
>>251133 Ну вообщем платы приедут - буду экспериментировать, направление куда рыть понятно. У меня еще пара вопросов. Вот я допустим читаю в память GPIOA->IDR, но пины PA0, PA1 заняты какой нибудь периферией, что будет в соответствующих позициях бит, нули? Или может вобще не взлетит и надо обязательно 8\16 пинов как GPIO_Input помечать? И относительн среды разработки - я смотрю trueSTUDIO не балуют тут, но ведь годнота-же, бесплатная без ограничения на размер кода, CubeMX экспортирует, ST-LINK поддерживает, текстовый редактор весьма неплохой. Есть какие-то объективные причины Keil использовать?
>>251192 Не понял вопроса, какой переферией. Что угодно может быть, 0 или 1. Зависит как пины сконфигурированы. Если код твой, тебе решать чем пины будут заняты и как они сконфигурены и что ты на них повесил. Если это только не особые пины какие-нибудь типа SWIO. Среда вопрос субъективный. Не слушай никого. Попробуй что тебе понравится.
>>251192 Покажи скриншотами как ты открываешь CubeMX проекты в truestuido и проводишь отладку с брекпоинтами, ничего не понял как в этом разбираться. В том же кейл все интуитивно понятно.
>>251198 >>251205 Ну отлично, главное что работать будет. Маской\сдвигом значение сэмпла сегда получить можно. >>251208 File->Import->General->Existing Project into Workspace и выбираешь директорию с исходниками, которые Cube сгенерил. Процесс отладки примерно такой-же как и в дргугих средах, ничего вроде необычного.
Как связать stm32vl discovery с виндой? Хочу запилить криптопроцессор, т.е. на вход стм с винды передаются данные, а возвращается результат хешфункции или блочного шифра. С чего начать написание драйвера?
>>251275 Ты имеешь ввиду USB драйвер для программатора что ли? Ему то нужно будет свой драйвер пилить, если он будет через USB с контроллером общаться. Это гимор. Проще через UART + FT232
>>251372 А я не понимаю тебя. Если на контроллере UART, то в него включается железка FT232 которая включается в PC шные USB. На PC драйвер FT232 (не VCP). Вот это я называю простым вариантом. А ты про что?
Они написаны для другого чипа, поэтому я скачал документацию для своего: www.st.com/resource/en/datasheet/stm32f100v8.pdf
Но в этом даташите нет таблички как на пикрелейтед, которая приводится в статье. Где мне взять нужную документацию, чтобы можно было заставить работать следующий кусок кода?
>>251654 >у тебя ж там даже ссылка на него в этой статье прямо над твоим пиком Тогда я не понимаю, что я сделал не так. Диод подсоединил к ножке PC0, которая управляется портом C. Конфигурирую этот порт как здесь: https://ideone.com/3YmRVz
>>251659 На каком скрине? Я показал функции инициализации из своего проекта. Они не компилируются на идеоне, потому что там не поддерживается компиляция под микрухи.
>>251660 Понятно, я не знаю что такое идеон и зачем он компилирует, когда тебе просто нужно было код показать. init_led выглядит странно. где определено GPIO_CRL_MODE0_1?
>>251676 не бзди, разница не принципиальная, некоторые вещи типа таймеров вообще без изменений, gpio немного подругому например, clock намного изъебистее, но тебе то какая разница, не сложнее, просто чуток по другому. а так все тоже самое, либы, принципы, среда, и четверг.
>>251677 а тогда шикарно.Мнеб еще в аналог вкатится и будет ништяк просто, потому что бесит:здесь не знаю, тут схему рассчитать не могу и поэтому кидаю на эту задачу МК(хотя там реально туфта наподобие генератора треуголного сигнала или хитрой схемы на одном-трех транзисторах), поэтому на stm перешел и вот как выкрою время-буду заниматься, но рассчеты в аналоге все так же неосилятор(в ньюфаг тредах читал книги до первых упражнений-не осилил и утонул).
>>251693 Это значения битов в регистре CR. На пике из референс что ты запостил. На каждый пин четыре бита. Два бита CNF два бита MODE. Так как у тебя нулевой пин тебе надо MODE0 и CNF0.
>>251699 Ну я тоже если выбирать между аналогом и контроллерами, мне проще запрограмить. И то и другое интересно, но аналог безусловно намного сложнее. Это как олдфаги, которые учились ездить на разъебаном стике с убитым сцеплением, а тут тебе дают коробку автомат и оно само едет.
Вот сегодня пришла STM32F3-DISCOVERY Все как этот анон насоветовал>>249353 и это по сути мой первый шаг в освоении программирования микронтроллеров допустим, кабель тоже нашелся А что делать дальше? Какие гайды, мануалы, что нужно на компьютер скачать нужна какая то прошивка или что? Как прошивать?
>>251989 Ставь keil или что тебе больше нравится. Там весь софт\драйвера для прошивки\отладки уже должен быть. Аноны, а кто-нибудь с SIMD инструкциями заморачивался? Читал на каком-то форуме типо в лоб переписал что-то там, в итоге скорость просела из-за перегона данных между памятью-регистрами, или типо того.
У меня есть stm32vl discovery. Имеется ли возможность с нуля на чистом winapi напердолить к этой плате драйвер для управления через usb, или кроме как запитать и прошить через usb больше ничего нельзя делать?
>>252125 >что значит "управление через usb"? обмен данными с твоим софтом работающим внутри stm32? Да. Например, хочу, чтобы моим софтом внутри стмки можно было управлять, подавая сигналы при помощи драйвера.
>>252277 Посмотри в сторону HID пока данных немного тебе хватит с головой. Плюсы: Не нужны дрова - они стандартные в любой оси есть Простая реализация со стороны пеки - юзал libusb, работает, доебаться не к чему Со стороны СТМки юзаешь готовый драйвер, останется только правильно заполнить дискрипторы, с чем я и пердолился большую часть времени.
>>252300 Мне драйвер самому нужно написать, готовын решения не нужны. Хочу все с нуля зделать на WinAPI. Хочу прокачать скилс в написании дров и железе.
>>252317 Ты выбрал хороший способ заебаться! Читай application notes от ST. Возможно это все завернуто в примеры для USB в CMSIS. Там есть пример кода внутри STM32 и примеры драйвера для виндов кажется.
>>252458 - это не я >>252360 писал, но идею поддерживаю. Ты обучишься линуксовской базе и драйверам быстрее, чем будешь переть по виндотеме. Оно же все онально огорожено и нативно
Может есть профи которые подскажут как завести такую память ?
ну давай приступим отбросим документированные и недокментированные нахуи и просто вазамним себя богами что нам надо писать? додик? всеже есть 7 уровневая модель бытия кузубова такоа знаеш философа? он ее пытался реализовывать на канальном уровне кстати модель знаний нехуевая очень и проста для понимания на первом уровне биты - тое ты должен каждый бит отлавить етими ебаными транзисторами ну или оптронными ключами не суть важно ... второй уровень канальный устойчивые сигналы сформированные в пакеты ты должен перенаправлять... 3 уровень программный здесь наши синеглазые и никто кроме их. 4 уровень интерфейсов - функций здесь синеглазые спорят с механиками логики - каму ты нахуй нужен шизик со сваей пид функцией? 5 уровень тут манагеры на своем пхп и прочей хуете на шестом уровне наши девачки уже обученные фотошопу и 3дмаксу и мае вопщем ляпают контент... на 6 уровне на 7 уровне и это все называеца законценная функциональная модель конечного девайса - продукта для хомячков
>>252549 Даташиты. Что то хуйня, что эта. Мк, обычно имеет определённые ножки (адрес, данные, управление) и очевидную аппаратную поддержку. Работает тупо, мк выставляет адрес, стробирует, считывает, что с нанда, что с ддр. Если ее почему-то нет, пытаться поднимать дрочкой жпио ддр не стоит, это глупо.
>>252569 Ну где-то надо еще указать тип памяти и тайминги, мб частоту завести с кристалла, возможно (как на оп-пике) сделать инициализацию, да и при программировании знать и учитывать диапазоны адресов, а так да, все тупо. Ну и, естественно, необходимо правильно развести оперативку, там своя история там одинаковая длина дорожек и подтяжка, я ее не знаю
>>252569 Короче пишу как есть: если нанд или рам подключены не правильно, или их нет вовсе, а ты пытаешься с них считать, то операция пройдет без ошибок, просто ты считаешь мусор
>>252562 Подключал НАНД к PICу через ЖПИО, было дело. Однако это медленно. С ДДР - хз скорее всего и вовсе невозможно. Нужен спец-блок - контроллер памяти.
>>253037 купил два таких кольца, думал поуправляю AVRкой, не пинайте меня - хуй!Там длительность сигналов около 150 нано секунд. НАНО. Я разогнал мегу до 20 мегагерц и писал на асме без вызовов подрограмм, только sbr и cbr, ели включал нужный свет, об регулировании и речи не могло быть.
Анон, скажи пожалуйста, нужен любой мощный (принципиально важно) процессор, на котором можно запустить линуху. Из всех вроде arm самые топовые.
Охлаждение сделаю, цена не так принципиально (желательно до 3k). Требуется на оочень нагруженный проект по вычислениям. Микрокомпьютеры не пойдут (хотя арм от малины можно, только документации нормальной по типу stm так и не нашел.)
Память должна быть выносной, порты usb (еслии3.0, то шикарно), gpio
>>253418 >только документации нормальной по типу stm так и не нашел. В смысле не нашел? Идешь на http://infocenter.arm.com/help/index.jsp Открываешь Cortex-A7 MPCore processors и хуяришь, хуяришь, хуяришь...
>>253418 >Требуется на оочень нагруженный проект по вычислениям Вычисления или реакция? какие вычисления? объем? купи mini-itx и i5 на него, если нету ограничений по питанию и объему - переварит что угодно при должной оптимизации алгоритмов.
>>253554 В чем помощь? Типо использование одной инструкции дает более комактный но менее производительный код? А в случае -O3 развернет в две инстркуции, которые на 1 цикл быстрее отработают?
ADC+DMA скидывает семплы в буфер, по заполнению буфера\половины буфера, выкидывается прерывание. Цикл в Main молотит данные из этого буфера. А вот собственно как в обработчике прерываний сигнализировать, типо "бери в работу первую\вторую половину буфера"? Через глобальную переменную с тремя состояниями, "данных нет", "есть данные в первой половине буфера", "есть данные во второй половине буфера". Типовая задача же, кто как реализует?
Ананасы, помогите! 1. Пропала вся периферия в меню View->System Viewer 2. На неподключенных входах АЦПа прыгают байты, но при подключении AUX кабеля от телефона там просто нули.
>>187056 (OP) люто-бешено проебался и понял что не хавтает портов уже в середине проекта. прошу помощи: необходимо использовать spi программны, т.к. порты на которых spi1 контроллера уже занят . помогите советом как реализовать clk на обычно порте программно на stm32f030. хотел же блядь брать stm32f103 сука. оебят выручите плиз
>>259598 Только вчера пилил програмный I2C, работает. SPI проще же там сигналы однонаправленые. Поищи либу не обязательно даже для стмки и перепиши кусочки где запись/чтение пинов. Однако есть одно существенное НО. Скорости от такой схемы не жди.
>>259664 Имею дело с 1986ВЕ1Т. Обычный ARM-микроконтроллер, не лучше и не хуже множества других. Розничная цена К1986ВЕ92QI около 800р, аналогичные STM32 у нас в розницу продаются за 250р. Поэтому целесообразность использования их в самоделках сомнительна. Хотя, стоимость деталей в любой самоделке часто намного больше стоимости микроконтроллера, поэтому может и есть смысл их использовать.
>>259744 Юзал freemodbus на всех своих подельях и не арм тоже. Там есть порты на разные контроллеры и на армы тоже. Возможно придется написать колбэки для 1. Инициализация/сброс таймера 2. Чтение/запись UART 3. Обработчики перываний UART и таймера Они все очень простые, смотри примеры.
Конкретно скинуть не могу рабочий проект, да и реализация сильно завязана на остальные части проекта, понять примеры будет много проще.
>>259710 Использовал все кроме CAN, USB и ethernet. >Какие ощущения от сего поделия? По набору периферии мало отличается от других микроконтроллеров, разве что I2C иногда не хватает. Errata по объему не отличается от каких-нибудь STM32.
>>259763 Тут вот какая хрень. Я юзал только Slave, однако в одном проекте у меня был Nuttx на STM32F103 и там несколько проапгреженая версия freemodbus с поддержкой Master, в ридми написано, что мастер взят из https://github.com/armink/FreeModbus_Slave-Master-RTT-STM32
Отпал JTAG на Атмеле at91, армчик, утилиты не хотят коннектить устройство, получают кривой ответ от мк. Программатор - сеггеровский жлинк, рабочий, да и тыкал двумя разными. Контроллер работает, по дебаг-порту пишет лог... Рентгеном проверяли, не было непропаянных шаров, там все спаяно норм. Дорожка тоже не битая, не было кз по жтагу, он тупо отказал в момент отладки (правда, я отлаживал и зашивал бутлоадер).
Может ли быть проблема внезапно быть в прошивке? Ну типа волею случая в первой инструкции лочит жтаг. Прошивка в spi-флешке.
Ананасы, существуют ли вообще в природе нормальные, мощные (например, где-то на уровне Exynos5422, который в ODROID XU4) арм-одноплатники без ебучего нахуй мне не нужного GPU и с относительно большим количеством периферии? Бюджет - желательно не больше 100$.
>>261443 Че за грибы бля. Бутлоадер в атмеге записан. Внутренняя память внутри. Есть способы её расширения внешним чипом, но не все атмеги это умеют. Или ты про другое?
>>261498 >>261443 просто хочу разобраться как там бутлоадер устроен ковыряясь в старых андроидофонах что у меня лежат. И по возможности накатить туда что то типа арчлинупса.
Я гуглил про те вопросы что сейчас ниже спрошу. Инфа очень размытая в инете может у кого есть годная инфа про архитектуру андроидофонов буду рад почитать.
1) Как происходит разблокировка бутлоадера. Да я знаю что некоторые производители предоставляют возможность по адб разлочить, мне интересно какой принцип. Типа мы по адб связываемся с процом ведроида, и выставляем там какой нибудь бит посредством команды fastboot oem unlock?
2) Куда зашит сам бутлоадер, в отдельной ром микрухе? Или внутри самого проца? Получаеться чтобы перезаписать ром мне надо что то процу сказать?
3) Где лежит раздел /boot/ как я понял там находится ядро линупса андроидного? И к нему можно получить доступ если разлочить бутлоадер. Они лежат в одной ром памяти? Или это две разные физические микросхемы?
3) Что представляет собой внутренняя память андроида? встроенная память по типу sd карты?
4) Раздел / корень андроида, если его рутануть, это раздел /data/ или раздел /system?
>>261624 Благородным делом занимаешься Антон, жаль не могу помочь ни чем. Сколько ебли с той же оранжевой пи, а уж про рандомный планшет и говорить не чего. Не подьемное дело
>>261633 может я нивтом треде? типа увидел арм типа написано но тут типа слишком низкоуровнево и на уровне железа токо помогают? может где есть операционных систем и архитектуры тред?
>>261633 может я нивтом треде? типа увидел арм типа написано но тут типа слишком низкоуровнево и на уровне железа токо помогают? может где есть операционных систем и архитектуры тред?
>>261664 Присоединяюсь к этому антону. Могу порекомендовать найти и поковырять аппараты Sony 2012 года, тк на них утекли доки и полный набор исходников (там еще был срач, что какой-то тип не хотел накатывать защищенный правом драйвер на BT и пытался родить решение сам).
>>261624 У тебя же на картинке верная схема. Я сейчас расскажу про оп-пик. Бутлоадер пацаны дома используют u-boot лежит в 0 адресе памяти, например, nand. Проц имеет т.н. bootstrap программу - набор команд по простейшей инициализации всей памяти на борту. Потом этот бутстрап делает опрос памяти (сначала с spi, потом nand, i2c, mmc), он ищет особый заголовок (20 байт каких-то там чисел и размер прошивки в байтах). Находит заголовок, и загружает в свою маленькую внутреннюю оперативку код, как раз уже загрузчик u-boot.
U-boot загружает ядро с той же нанд флешки. Кернел уже инициализирует фс с тем учетом, что на флешке уже есть инфа и нужно начало выбрать смещенное.
Нормой хранить загрузчик и ядро на разной памяти. Ю-бут мощный, от тебе и с интернета ядро загрузит.
Я хз как точно сделан загрузчик в телефоне, вероятно, что есть загрузчик загрузчика , который лежит в пзу чипа, чтобы в случае проблем с нанд флешкой можно было бы полностью записать туда систему. И этот первичный лоадер как раз может контролировать разблокировку лоадера.
Привет анон. заказал пикрелейтед. это STM32F103C8T6 Как заливать в неё код? знаю можно через usb uart, но какой? знаю, что можно прошить загрузчик, чтобы потом по распаянному usb можно было, если есть такой, кинь соус на него, в гугле не нашел. Я ньюфаг, перехожу с arduino на st
>>262119 >знаю можно через usb uart, но какой? Через любой с уровнями 3,3В Что-нибудь на PL2303, CP2102, FT232 и подобных. Подойдет даже из ардуино, если там уровни 3,3В. Для загрузки используется программа: http://www.st.com/en/development-tools/flasher-stm32.html
Ночи. Есть спаянная плата радара, есть прошивка. Вопрос, как её туда впихнуть и что для этого использовать? Анон, твоя помощь весьма кстати З.Ы. Допиливаю ссыль до кучи на весь проектик https://github.com/Ttl/fmcw2
>>262136 > Нет смысла. Купи лучше J-link, сможешь пошагово выполнять программу на микроконтроллере. Джва килобайта sram этому. Без отладчика тяжело крупные проекты пилить, иногда оно тупо не запускается, будто сжег все, а с отладчиком всегда моно найти траблу. Да и не дорогое удовольствие совсем.
>>262193 Сириусли, ты, значит, собрал это поделье, а как прошиться подумал в последнюю очередь? >jtag не подключен Ты что, расчитываешь, что она без пердолинга возмет и заработает? >uart0 я не нашел Стандартный загрузчик не заюзаешь >есть юсб Может у этого проца есть загрузчик с него? >есть spi флешка U3 Вангую, что проц может грузиться из неё, но опять же как должен быть сформирован образ - хз
Господа, не сочтите за труд. Вы тут разный скарб покупаете регулярно, где берете? Я вот себе хочу МАЛИНКУ прикупить, дома серверок поставить для личных нужд. Сначала хотел пойти на АМПЕРКУ и купить за семь тысяч коробку с МАЛИНКОЙ и другой поебенью, но мне кажется, что руснявые наебывают с ценой. У них коробочек аж восемь сотен стоит, сука. А на Али сходил прицениться - там цены будто случайно выставляют, абсолютно одинаковые коробки с малиной могут быть и за две с половиной, и за четыре. Что посоветуете? Если кто-то брал МАЛИНКУ на Али и может посоветовать, я буду только рад.
>>262446 Прости, у меня глаза разбегаются. Что заказывал? У него есть набор, чтобы собрать и сразу поставить? Ну, сама МАЛИНКА, БП, карта памяти, кажется.
>>262445 Если тебе нужен лишь хеадлесс сервер, то посмотри OrangePi или NanoPi они дешевле и вполне себе юзабельны с Armbian. Однако если хочешь использовать gpio/камеру/прочие низкоуровневые функции или же мультимедиа приложения (plex, retropie, итд) бери малинку без вариантов. >>262446 Малинки настоящие, бп и карты памяти китайские. >>262447 Бери голую малинку, с качестве БП сгодится фирменный телефонный зарядник на 2А, карту samsung evo+ лучше купить в рознице. >>262457 Посылки дороже 5$ как правило китайцы шлют с треком/отслеживанием их доставляют до отделения, а домой тебе приносят извещение. Посылки без трека кидают прямо в ящик.
>>262499 Никакую. Хватит симулятора в IDE. В симуляторе только периферия обычно не соответствует реальности. А изучение ассемблера и изучение работы с периферией это не одно и то же.
>>262508 Мне ядро изучать надо Linux. Надо конпелировать ядро, чтобы ставить свое оптимальное ядро на платы. С какой платы лутше начинать? Распбери пай на китае заказал уже, зря наверное
Господа, кто пишет под кортексы STM на линукс? Какими средствами пользуетесь, а то у меня SW4 работает просто через жопу и хочу понять, один ли я такой невезучий.
>>262470 >>262446 Здоровья вам, незнакомцы. Заказал на Али МАЛИНКУ в наборе только с нужными мне компонентами, а не как у руснявых с кучей рассыпухи без задач, блять. Еще заказал Ардуино, но ее пока не выслали. >>262645 Просто в хуй дунь, мразь.
Есть у кого-нибудь опыт сборки юбута? У меня SPL не загружает сам юбут, точнее, не срабатывает функция выполнения с загруженного. Плата кастомная, отлаживаюсь через gdb.
>>262750 Если у тебя JTAG, то не должно быть проблем найти почему не грузится, а так тоже интересно как оно там всё собирается у людей, может скоро пригодится. Алсо, в u-boot'e же дохрена всего, можно-ли как-то поднять своё приложение поверх него? Типо использовать его либы и интерфейсы?
>>262750 Есть опыт. Кристалл - SoC? FPGA+ARM? Что за плата? Какой проц? SPL в ддр лежит? Уточняй параметры. Навскидку советую проверить в s_init: включается ли ддрка. Смотри config.h. для твоей платы environment - че там в параметрах накрутил. Я обычно собираю убут в config_minimal и вручную инициализирую интерфейсы.
> Алсо, в u-boot'e же дохрена всего, можно-ли как-то поднять своё приложение поверх него? Типо использовать его либы и интерфейсы? Можно. Команда source <addr>. Но зачем? 99% Задач убута - врубить периферию и выполнить bootm для загрузки линукса или что у тебя там. Городить там что-то свое никому нахер не нужно.
> Если у тебя JTAG, то не должно быть проблем найти почему не грузится Действительно, никаких проблем, если бы не -Os
TI эмбед-инженегр в треде. С AlteraIntel фпга тоже немножно работал.
>>264511 > Действительно, никаких проблем, если бы не -Os Я уже и с -Оs придрочился отлаживать. Да, половины переменных не видно, да шагает хуй пойми как, выбора не было, только боль и страдания.
> Можно. Команда source <addr>. Но зачем? 99% Задач убута - врубить периферию и выполнить bootm для загрузки линукса или что у тебя там. Городить там что-то свое никому нахер не нужно. За тем, когда линукс избыточен, а в у-буте уже достаточно всего. И не через команду, а на этапе кококомпиляции прилепить к нему своё приложение.
>>264511 Раскидай за камни олвинер, распери или вообще хуй86. Хочу потеребить кортексы, но смущает очень малая информация о том, как писать модули ядра на линукс и вообще поддержка от производителей.
>>264541 > За тем, когда линукс избыточен, а в у-буте уже достаточно всего. И не через команду, а на этапе кококомпиляции прилепить к нему своё приложение. Насчет прилепить хз, но никто не мешает разместить отдельно скомпиленный код в nand/загрузить по тфтп и дать команду go <addr>. Насчет source напутал - эта скрипт выполняет. А go - выполняет код. Если от убута нужно только включить периферию, то в конце s_init() функции пихай свой код и не еби голову. Но имхо, это пиздец, какое извращение. Лучше из убута надергать код, где выставляются регистры девайсов в свое приложение. http://www.denx.de/wiki/view/DULG/UBootStandalone - тут про загрузку отдельных приложений.
Что за камень хоть? И что плата делает?
>>264543 > смущает очень малая информация о том, как писать модули ядра на линукс и вообще поддержка от производителей. Написание модулей аналогично написанию на десктоп: пишешь, добавляешь printk, компилишь, делаешь insmod и крашишь систему смотришь, что в dmesg свалилось. Если производитель уже написал тебе API для работы с нужными девайсами (они в arch/arm/mach-<имя твоей платформы>), то заебца. Если нет, то берешь даташит на проц и в модуле сам инициализируешь значения регистров.
По камням: Пох на камень, важна архитектура и обвес SoC. Смотри arm a8/a10: cubieboard с олвином, raspberry с бцм - твой выбор. Жирный обвес = один раз купишь и на 10 лет наиграться хватит: и диодами поморгаешь, и линукс накатишь, и со звуком поиграешься, и вообще в космос слетаешь.
>>264511 Я накатил юбут, спасибо за ответ. Сейчас возникла другая проблема - юбктовская функция get_ram_size() получает только 32мб вместо 256. Кристалл - atmel at91sam9x25 (серия МК at91 на ядре arm926ejs). Оперативка - micron mt48lc16m16 (sdr, это как ddr, только single, 0:12 row, 0:9 column).
Проблема вот в чем: при записи в 0 адрес ram (не считая смещения 0x20000000 микроконтроллера), инфа записывается и в 0 ячейку и одновременно в 0x08000000 адрес , аккурат в 32х мегабайтное смещение. Да, инфа валидная, записывал через жтаг, проблема повторяется со всеми адресами подряд... Видно, будто ножки спаялись вместе, но на рентгене все было нормально, а прозвонить не получится, tp нет и корпуса с выводами вниз. Тайминги настраивал и всячески крутил, в т.ч. понижая и повышая, в целом уменьшал скорость работы sdr, переписывал и четко следовал даташиту по инициализации контроллера оперативки, но все равно определяет неверно. В чем может быть проблема, я непонимат
>>264793 > четко следовал даташиту по инициализации контроллера оперативки Скорее всего что-то упустил, потому что похоже, что в контроллере неправильно указаны размер шины адреса/конфигурация и количество банков именно для твоей микрухи памяти. У меня давно была такая фигня, правда на другом процессоре. Тоже сначала думал, что ноги спаялись, оказалось, что один бит в конфигурационном регистре недоглядел
>>264801 Боюсь, что все верно, потому что сам на это грешил. Перепроверил раз 10, на всякий случай выставлял неверные значения. Более того, атмел статью выпускал с конфигурацией той же памяти (столько же банков, та же модель, только тайминги чуть ниже) с мк моего семейства at91. Не помогло.
Я грешил на гонку на линии (автор схемы мог выровнять их), но вроде как сильно увеличенные тайминги должны были решить длину.. Да и до этого адреса оперативка работает.
>>264817 > Я грешил на гонку на линии (автор схемы мог выровнять их), но вроде как сильно увеличенные тайминги должны были решить длину.. Да и до этого адреса оперативка работает. Та не, если бы это были гонки, то память бы просто работала хреново, а так у тебя она же нормально работает, это явно что-то в адресе. Проверь по схеме, правильно ли шина адреса подключена и шина выбора банка
>>264820 > Алсо, сколько ты получаешь денег? :3 Когда разбирался с адресацией sdram, а это было примерно в 2009, получал примерно 8к, лол. Сейчас, после налогов, 90
>>264793 > micron mt48lc16m16 > получает только 32мб вместо 256 Чувак, я вспомнил, память у них считается в битах, а не в байтах. То есть там 256 мегабит, что как раз равно 32 мбайт. Посмотри датащит на память, там написано в начале > The 256Mb SDRAM is a high-speed CMOS, dynamic random-access memory containing 268,435,456 bits. И конфигурация 16m16 как раз означает 16 миллионов 16-битных слов. Так что всё нормально
>>264793 >Проблема вот в чем: при записи в 0 адрес ram (не считая смещения 0x20000000 микроконтроллера), инфа записывается и в 0 ячейку и одновременно в 0x08000000 адрес
Повторение значений очень похоже на то, что в конфиге убута ты неверно указал размер памяти, подключенной к chip select-у. Насчет 32 МБ, а не 256 уже сказали. Попробуй в качестве эксперимента указать 16 МБ в DDRSDRC. Проверяй NR ака row bits.
> Я грешил на гонку на линии (автор схемы мог выровнять их), но вроде как сильно увеличенные тайминги должны были решить длину.. Да и до этого адреса оперативка работает.
Гонки на линиях вроде только в ддр3 начинаются ибо частоты на порядок выше, не? Их легко избежать, снизив частоту до минимально поддерживаемой чипом. Снижай клок с контроллера до минимального.
>>264825 >>264822 Ууух блят аноны давно такого баттхерта не было. Действительно, 256 мегабит, а не мегабайт. Аштрисет от своей невнимательности и тупости. Дааа блин. Спасибо, ребята, оно все работало правильно, теперь перепишу конфиг юбута
Собираюсь обмазаться RTOS, так получилось, что первый кандидат у меня RTX-Kernel от Keil (задача допилить старый проект), поэтому хочу прояснить для себя: RTX-Kernel был под MDK-ARM v4, а под MDK-ARM v5 сейчас что-то новое? Есть ли смысл разбираться со старым или лучше сразу начать новый?
Сап. Не могу врубиться, можно ли сделать на attiny85 (digispark), с помощью V-USB, USB to Serial преобразователь? Нужен софтварный Serial, туда просто ретранслировать данные с USB, только вот с реализацией не могу разобраться...
>>187056 (OP) Антон, моргающий диодами на еду. Подскажи, реально ли мимохую вкатится в сферу?
Давно занимаюсь на уровне мелкого любительства, очень люблю это. Хочу полностью уйти в это, но я не гений и боюсь без профильного буду послан на хуй. С чего мне правильно будет начать? Какие знания и на каком уровне НЕОБХОДИМЫ, а какие желательны?
>>267216 >очень люблю это Значит всё получится >но я не гений и боюсь без профильного буду послан на хуй Это тебе не теоретическая физика. Задачи в принципе на уровне ПТУ, никаких многоэтажных дифуров и прочей хуйни, нормально в-общем, это лишь ремесло >С чего мне правильно будет начать? Какие знания и на каком уровне НЕОБХОДИМЫ, а какие желательны? Да везде по-разному кончено. Но С конечно же знать необходимо. Ну и архитектуру, примерно как работает вся эта хуета, даже не знаю, чего добавить. Бери короче и пиши что-нибудь, по ходу наберешься опыта и знаний. Лучше всего танцевать от задачи, а не от теории
>>267272 Ты может не правильно меня понял, анон, в перечисленное тобой я уже умею, в той или иной степени. Меня интересует как вкатится в профессиональную область. Что потребуется там? Какие знания требуются, что бы устроится мартышкой на подсосе? Где искать такие фирмы?
>>267278 >Какие знания требуются, что бы устроится мартышкой на подсосе? Ну я нашёл НИИ рядом со своим универом, пришёл студентом и сказал, возьмите меня, правда я низуя не умею. Там уже набирался опыта за еду, ребят спрашивал, что да как, потом перекатился в нормальную контору
>>267285 >Что хотели? Да ничего не хотели. Вообще были немного удивлены, что я сам пришёл (я на 5 курсе был). Я просто прошарил, что рядом есть контора, которая занимается тем, что мне интересно и пришёл. >Что спрашивали? Была у них стандартная методичка с вопросами. В основном по интерфейсам, сетям, FPGA, процессорам. Я наверное ответил на пару вопросов из 20. Но сказал, что сильно хочу вкатиться, и мне поверили > Всем ли устраивал? Ну формально ничем не устраивал, лол > Были ли трудности? Было пиздец сколько много новой информации. Было трудно читать всё на английском, лазия в словарь за каждым словом из документации, а там сотни страниц. Просто голова пухла от этого всего. Пару месяцев ходил как зомби блять. Но с другой стороны, я вообще не тогда знал ничего
Вообще, в таких государственных совковоподобных НИИ за работу почти нихуя не спрашивают. Там в основном функция у работника - майнить человеко-часы, чтобы побольше бабла можно было распилить под определённый проект. Бывали случаи, когда крупные конторы толпами набирали студентов под распильный проект. Зарплата соответствующая. У меня было что-то вроде 4к на полставки, но это было давно, и вместе с повышенной стипендией хватало на пожрат. Но есть плюс в том, что у них дохуя аппаратуры, даже довольно современной, и людей, которые что-то шарят (процентов 30% от всего персонала, остальные - пиздец никакие), у которых можно что-то спросить.
Но сейчас я вижу самый лучший вариант старта - устроится интерном в какую-нибудь западную, ну или нашу понтовую и коммерчески успешную контору. Но это трудно. Зато очень хороший старт
>Тебе самому макака бесплатная не нужна? Нет, нам нужны теперь хорошие специалисты на высокую зарплату
>>267288 >Я про перекат в нормальную контору =). Про НИИ так и думал. Я там пару лет позадрачивал, набрался опыта немного, разобрался что к чему, а потом - в нормальную. Увидел объявление в интернете, там были требования, в которых я уже после НИИ хоть что-то понимал. Написал, договорились на собеседование. Пообщались, позадавали мне всякие вопросы про архитектуру процессора, про ядро, кэши, ДМА, память, оптимизацию. По языку Си вроде даже не задрачивали, по крайней мере ебанутых вопросов в стиле "разбери, что делает этот говнокод" не было. Что-то ответил, что-то не ответил. Но даже про то, что не знал, пытался логически рассуждать и на ходу догадаться до правильного ответа. Это, кстати, было высоко оценено и понравилось будущим коллегам. Ну немного про системы контроля версий, которыми в НИИ естественно никто не пользовался, лол. Еще, могу ли я хоть что-то понять на английском, а я уже тогда довольно бегло читал техническую документацию, но это даже не проверяли. Ну потом перезвонили, озвучили сумму и условия, и я согласился (еще бы)
>В контексте выше смотрится особенно весело. В сегодняшнюю нормальную, не в НИИ, как ты уже понял
>ПС Изучение ПЛИС это "не плохой бонус", "желательно" или "обязательно"? Ну если будешь писать прошивки для ПЛИС, то обязательно, лол. Вообще, плисоводов традиционно мало требуется
>>267290 >Ну если будешь писать прошивки для ПЛИС, то обязательно, лол
Ну, я думал, что все хотят что бы и жнец и швец и на херу сидец.
>Пообщались, позадавали мне всякие вопросы Бумаги о образовании? Вообще насколько с этим строго и насколько обращают внимание? Если не по себе, то м.б. коллеги есть без бумаг о профильном, а то и вообще вышки.
>>267295 >Ну, я думал, что все хотят что бы и жнец и швец и на херу сидец. Не, успешные конторы потому и успешные, что в них есть разделение труда. Мне, например, никогда не приходилось лезть в ПЛИС или в верилог. В свою очередь, плисоводы никогда не лазят в мой код, и это прекрасно >Бумаги о образовании? Вообще насколько с этим строго и насколько обращают внимание? Вообще походу всем насрать. Нужны были только в отделе кадров, такие правила российского законодательства. Короче, в мой диплом никто и не заглянул, просто сняли копию и засунули в папку с документами в отделе кадров > Если не по себе, то м.б. коллеги есть без бумаг о профильном Не знаю, что ты подразумеваешь под "профильным образованием". Есть у нас всякие. Ну вроде инженеров-строителей по образованию или там инженеров-нефтяников нет. Кончено, диплом магистра в computer science даёт преимущество, но скорее только в знаниях, и не является обязательным > а то и вообще вышки Да вроде все с вышкой, я особо не интересовался
>>267301 После таких постов чувствую себя на днище. Сам себе и плисовод и быдлокодер и схемотехник и на пеку обслуживающий код ебашу. И всё это за 18к в мухосрани. Одно отрадно: ни кто не подгоняет. Если лень одолела - могу и нулевую поскролить и хуи попинать.
>>187056 (OP) Есть одна йоба, с которой нужно оцифровать до десятков миллионов отсчетов без потерь с частотой выборки около 1мгц, после чего их неспешно слить по любому удобному протоколу на пекарню для дальнейшей обработки. Возможно ли реализовать подобное малой кровью (с точки зрения железа, не влезая в разводку и производство кастомых плат с bga, трассировку дифпар и тому подобного), например, на paspberry pi или подобной девборде? Или только хардкор с топовыми армами или на плисах?
>>268121 >десятков миллионов отсчетов 1МГц это ~мбайт данный в секунду в твоем случае только АЦП+ПЛИС+FRAM+ARM для управления и выкачивания данных из памяти.
>>268129 FRAM таких объемов если и существует, то слишком дорогая.
Хватит микроконтроллера с SDRAM. Возьми STM32F429 Discovery или перерисуй оттуда проверенную схему. Вот только не понятно, будет ли нормально DMA складывать отсчеты во внешнюю память. Возможно окажется проще передавать напрямую, смотри как сделано в airspy mini.
>>268121 > Есть одна йоба, с которой нужно оцифровать до десятков миллионов > отсчетов без потерь с частотой выборки около 1мгц, Пфф, я такое на stm32f4discovery с сетевой платой делал. У меня еще и стек tcp/ip одновременно работал, и передавал я всё это по сети на комп. Делал двойную буфферизацию через ДМА и передавал примерно по 500 16-битных отсчетов за раз. Ничего, естественно, не терялось >>268129 > в твоем случае только АЦП+ПЛИС+FRAM+ARM Сразу видно попильщика из совкоподобного НИИ. И 5 человеко-лет на это всё, да? Чтобы если пилить так миллионами
>>268141 >Ничего, естественно, не терялось Что ж, спасибо, буду смотреть сюда, если не пошлю всех нахуй. >Сразу видно попильщика из совкоподобного НИИ. Лол, ты угадал. Предлагают пилить на девборде на fpga c pci-e, и писать данные без буферов непосредственно в память пекарни. Подумалось, что если не пиздят что такое вообще возможно, то может и распберри пи потянет. я ноль в цифре, но предложение запилить 32-битную параллельную шину с гальванической развязкой кажется маразмом, проще же взять какой-нибудь уже развязанный эзернет или сделать на уарте.
>>268143 Все же проще взять discovery с SDRAM и передавать по UART. С tcp/ip без опыта можно долго ковыряться, а UART заработает сразу. Когда заработает вариант с UART, можно будет что-то посложнее сделать.
>>268149 > С tcp/ip без опыта можно долго ковыряться Кстати да. Я использовал связку lwip + freertos, которую предлагали ST в своём CubeMX. Так вот, там нашлось несколько багов в драйвере ethernet, в связке lwip и freertos выделялась память не размера структуры, а размера указателя на структуру, то есть всегда 4 байта, лол, а еще не было полноценного драйвера для ацп с двойной буфферизацией, пришлось немного самому писать. Не знаю, как сейчас, но тогда пришлось подебажить и покодить
Тред еще жив? У меня вопросы. Нужно ли что-то делать для конфигурирования пина в качестве альт.функции TIM2_CH1? В даташите написано "floating input", который по идее стоит с ресета и так. Значит его можно использовать одновременно и как обычный импут и как capture? Пишется ли что-нибудь в GPIOx_IDR если использую альтернативную функцию и флоатинг инпут?
>>273609 Нет, я вроде переключал именно на функцию входа таймера. Сам подумой, у него внутри же мультиплексор подключен, который к нужной переферии его подключает
Арманы, есть среди вас адепты test-driven-development? Как автоматизируете тестирование? Вот есть у меня проект, есть юнит-тесты, есть бенчмарки. Лучшее, что я делаю пока это ручной запуск с чтением результатов тестов в отладчике из глобальных переменных или в виде текстового отчёта по уарту, ещё хз что из этого большее уродство; хотя второй вариант в принципе можно адаптировать под окончательную победу в виде включения в пайп jenkins, например, или хук в гите, выделить экспериментальный образец устройства и подключить к девелоп-серверу; но всё равно какой-то пиздец. Может есть эмуляция какая программная, типа как для ПЛИС?
>>268121 >>268129 >это ~мбайт данный в секунду Т.е. ADC 1msp и данные 8мбит? Бле, так это грамотно запрограммированные stm32f103 -SPI- enc28j60 справятся. Без всяких lwip/freertos.
я не понимаю, помогите. Как нормально подключить CMSIS в iar? Гайды из гугла какие-то ебанутые, мол накидайте миллиард файлов всяких разных в папку с проектом, ну я накидал их и ничего не работает. Что делать?
>>274130 Я делал по этому гайду и вроде бы заработало как надо, но когда я захотел свой проект создать у меня нихуя не получается, хотя я пытаюсь так же все эти 100500 файлов в проект запихнуть
>>273875 > Может есть эмуляция какая программная, типа как для ПЛИС? У тебя же есть уже юнит тесты, не совсем понял, что ты собираешься эмулировать? Не знаю, поможет ли, но посмотри googletest - универсальный фреймворк для тестирования
А так, ну натрави ты дженкинс на свой репозиторий, пусть кажлый час проверяет новые коммиты, и если они есть, то пусть билдит и запускает, а потом отчет присылает тебе по емаил или даже складывает в базу данных. Очень удобно, можно баги писать не думая, все равно потом быстро узнаешь, что не так. Тем более, дженкинс - очень гибкая вещь, можно как угодно настроить. Сделать отдельные задачи на билд, бенчмарки, юнит-тесты, строить зависимости между задачами, использовать результаты одной задачи как вход для другой
> выделить экспериментальный образец устройства и подключить к девелоп-серверу; но всё равно какой-то пиздец. Ну да, всё так, никакого пиздеца, а наоборот, очень удобно, особенно когда много народу работает над проектом > в виде текстового отчёта по уарту Чем тебе уарт не угодил? Вполне неплохой вариант. Главное руками ничего не запукать - только автоматизация
Я чет охуеваю. Сделал програмку, запилил условие для проверки:
if (TIM1->ARR == 9999) { GPIOB->BSRR |= (1<<1); } if (TIM1->CNT > 11000) { GPIOB->BSRR |= (1<<0); }
И зажглись ОБА выхода. Как такое может быть? Насколько я понимаю счетчик тупо не может выйти за пределы ARR, но он каким-то образом вышел. Что за хуйня?
>>274769 И прескалер почему-то не вбивается. Точнее вбивается, но не работает. 1000 импульсов дают 13-микросекундный импульс и при TIM1->PSC=71; и при 710 и вообще любом.
>>274824 Честно говоря, выглядит как ёбаный стыд. Например, SD-слот есть, а SDIO-периферии нет. Вообще странный подход. Единственный плюс древнего говна STM32F103 -- низкая стоимость. Зачем его обвешивать такой еболой? Чисто "для обучения"? Ну так имхо взял бы лучше пикрелейтед за полторыевры копейки.
>>274577 >что ты собираешься эмулировать Cortex-Mх ядро же. Одно дело юнит-тесты проходят скомпиленные моим gcc для моего core-i7 и в принципе несколько другое дело - arm-none-eabi-gcc и stm32fхх, например. Например, если где-то по недосмотру использовался int вместо более строгого int32_t.
>пусть кажлый час ... билдит и запускает Ну так-то можно, но ведь же количество перепрограммирований флеш-памяти ограничено :3
>Чем тебе уарт не угодил? Ну хотя бы тем, что в очередном проекте свободного уарта в устройстве может и не найтись. Я вот и подумал, что раз уж всё равно SW-интерфейс всегда задействован хотя бы для прошивки, может по нему же и тест-репорты выкачивать, это наверняка делается, надо копаться в gdb или openocd, но на то и тред, чтоб спросить, может найдётся кто сразу в нужном направлении пнёт, может уже готовые есть примеры, статьи или даже утилиты.
>всё так, никакого пиздеца Ладно, спасибо за доброе слово, пока пусть остаётся уарт с автосборкой на коммит в develop и/или master.
>>274841 > Cortex-Mх ядро же Вроде qemu умеет, но я не запускал > Ну хотя бы тем, что в очередном проекте свободного уарта в устройстве может и не найтись Так, подожжи. Если у тебя может не найтись свободного порта, то это предполагает, что твоё устройство активно связывается с внешним миром. Поэтому, если работу ядра процессора еще можно эмулировать, то эмуляция ядра + периферия + внешние события - это даже чисто теоретический ад. Там только проект эмулятора сложнее самого устройства будет > Ну так-то можно, но ведь же количество перепрограммирований флеш-памяти ограничено :3 У тебя код всегда напрямую с флеша исполняется? Может там есть instruction ram, откуда исполняется код? Тогда отладчиком можно прогрузить только его > всё равно SW-интерфейс всегда задействован хотя бы для прошивки, может по нему же и тест-репорты выкачивать, это наверняка делается Я делал такое в keil, там что-то просто сильно было Глянь вот это https://mcuoneclipse.com/2016/10/17/tutorial-using-single-wire-output-swo-with-arm-cortex-m-and-eclipse/amp/ Правда тут только про jlink, но смысл описан понятно
Новыйпидор в треде. Поясните, возможно ли вообще переслать аудио-файл с ПК на СД-карту контроллера? В гугле все только запись текста тестируют. Ещё один раз про картинку попалось, но там она тоже не готовая была, а на ходу создавалась. И ещё, мне в примерах часто попадается запись в регистры в шестнадцатеричном формате и я практически никогда не могу разгадать, что там за херня происходит. Сам пишу через структуры либо биты двигаю. Вот, например: PORTD->ANALOG &= 0xFF93; У меня есть генератор кода под мой контроллер, и я знаю, каким именно портам какая функция отводится, но когда я выбираю то же самое в генераторе, мне выдает совсем другие цифры. В общем, я вообще не представляю как эту шестнадцатеричную лабуду расхлёбывать.
>>273875 >Арманы, есть среди вас адепты test-driven-development? Как автомати Как ты вкатывался в ТДД? Как вообще в ымбыдеде юнит-тесты организовать? Есть ли примеры опенсурсных проектов, покрытых тестами?
Котаны, есть один STM32F103C8 в виде Pinboard II c STM32 модулем и я хочу вкатиться в его программирование. С чего начать? AVR 8-бит и MSP430 знаю, а вот к ARM никак не могу подступиться.
>>275525 >AVR 8-бит и MSP430 знаю, а вот к ARM никак не могу подступиться. Берёшь и ПРОСТО пишешь код. Какая нахуй разница, какая архитектура. Ты же на ассемблере пишешь.
>>275623 Тут просто нужна сноровка и привычка, которые придут быстро и безболезненно, но только при способности внимательно читать (доки, примеры) и аккуратно писать. А то знаю одного весьма опытного на 8-битных атмегах и способного иликтронщика, который неделю ебался с I2C, обмазавшись осциллографом и стандартом интерфейса, но в итоге оказалось, конечно, что просто невнимательно прочитал пару страниц из референц мануала.
>>275952 так-то сейчас 21й век. для AVR есть отличная Atmel Studio для MSP430 зачётный Code Composer Studio а для arm какие-то глючные костыли, а не нормальные IDE
>>275965 > >>275952 >так-то сейчас 21й век. >для AVR есть отличная Atmel Studio >для MSP430 зачётный Code Composer Studio >а для arm какие-то глючные костыли, а не нормальные IDE
О себе. Гуманитарий. О токе знаю только то, что нельзя спицы в разетку вставлять. Благодаря ардуине удалось стать немного программистом и инженером, принес на пары в универ, подмигиваю диодом одногруппницам, говорю что взорвется. Хихикают.
Вкатывальщик в треде. Аноны, подскажите с какой платы лучше начать еблю с микроконтроллерами, то на али слишком большой выбор(f0-f4, l серия, или там разница только в размере памяти и частоте?). Кстати, что делать, после того как научился моргать светодиодом? Есть какие-нибудь полезные учебные проекты(как на ардуино умный дом, или метеостанция)? Решил заняться, тк интересна архитектура процессоров, до этого долго ебался с асмом и писал разные эмуляторы. Или для изучения архитектуры процессоров лучше выбрать другой путь, а не ебаться с железками? Алсо, подскажите годных книг по архитектуре(таненбаума уже пролистал)
>>275999 > Вкатывальщик в треде. Аноны, подскажите с какой платы лучше начать еблю с микроконтроллерами, то на али слишком большой выбор(f0-f4, l серия, или там разница только в размере памяти и частоте?). Кстати, что делать, после того как научился моргать светодиодом? Есть какие-нибудь полезные учебные проекты(как на ардуино умный дом, или метеостанция)? Решил заняться, тк интересна архитектура процессоров, до этого долго ебался с асмом и писал разные эмуляторы. Или для изучения архитектуры процессоров лучше выбрать другой путь, а не ебаться с железками? Алсо, подскажите годных книг по архитектуре(таненбаума уже пролистал)
Протошилд ардуиновский для начала. А лучше полноценную макетку с дырками под пайку и пару катушек монтажного провода. Для конца и далее - тестолит, лазерный принтер, глянцевая фотобумага, ламинатор (желателен), дремель или самопальный сверлильник с цанговым патроном под микросверла.
>>276005 >>276001 Стоит почти как stm32f4discovery, но в отличие от discovery это совсем уж пустая плата.
>>275999 >Или для изучения архитектуры процессоров лучше выбрать другой путь, а не ебаться с железками? Алсо, подскажите годных книг по архитектуре(таненбаума уже пролистал) Не знаю что ты понимаешь под архитектурой. Если хочешь понять что там внутри процессора, то учиться программировать микроконтроллеры бесполезно. Лучший способ понять как работают процессоры - это сделать процессор в симуляторе самостоятельно. Для погромистов есть даже игрушка nand2tetris с убогим HDL-языком.
>>275999 >для изучения архитектуры процессоров лучше выбрать другой путь, а не ебаться с железками? this Про архитектуру с этими метеостанциями хуй чего узнаешь, сишечка она везде сишечка. Я бы порекомендовал копать в сторону FPGA+softcore, типа бомжоальтера с ебэя и Nios II (есть даже бесплатно же оффициально). Захуярь туда своих инструкций, добавь каких-нибудь шин, поэкспериментируй. Потом запили свою архитектуру уровня /ra/. Прикрути для неё бэк-енд к gcc. Вот ты и вкатился, велкам.
Без знаний основ цифровой электроники за FPGA браться не стоит. Нужно хотя бы знать что такое триггеры, комбинационные и последовательностные устройства, иметь представления как там суммируются задержки. А этих знаний у тебя, судя по этому вопросу, нет.
>типа бомжоальтера с ебэя и Nios II Nios я бы не советовал, поскольку его внутренности практически не видны. Да и разбираться придется больше с тем на какие кнопки в IDE нажимать, чтобы оно заработало.
>Потом запили свою архитектуру уровня /ra/. С этого стоит начать, разумеется после изучения основ цифровой электроники и верилога. Написать на верилоге простенький процессор можно за день. Плату с ПЛИС покупать не обязательно, все это симулируется.
>Прикрути для неё бэк-енд к gcc. По моему это совсем сложно, для меня так вовсе наверное не реально. Максимум можно какой-нибудь лисп или форт для самодельного процессора сделать.
>>276078 >Этого будет достаточно, чтобы устроиться в условный интел/амуде на джун/мидл позицию? Смотри требования по вакансиям. Как минимум еще необходимо владеть методами верификации.
>>276083 > Nios я бы не советовал, поскольку его внутренности практически не видны. Да и разбираться придется больше с тем на какие кнопки в IDE нажимать, чтобы оно заработало. Что тумаешь по поводу openrisc и симулировать его на verilator? Вообще можно тогда ничего не покупать
>>276083 >Без знаний основ цифровой электроники за FPGA браться не стоит Ну я читал книги по компьютерной архитектуре, там эти вещи описывались, плюс немного схемотехники и булевской алгебры знаю. Думаю, за некоторое время смогу осилить. Энивей, идея написать свою архитектуру под проц звучит очень уж заманчиво. >Nios я бы не советовал, поскольку его внутренности практически не видны Почему это плохо? Я же не собираюсь туда паяльником лезть >С этого стоит начать, разумеется после изучения основ цифровой электроники и верилога Есть какая-нибудь классика по этой теме? >Плату с ПЛИС покупать не обязательно, все это симулируется. Симуляция офк круто, но когда перед тобой реальная железка, то на душе как-то поприятнее >По моему это совсем сложно Ну для llvm это точно возможно сделать за разумное время >методами верификации Можно поподробнее плз
>>276087 >openrisc Это не то с чего следует начинать, если хочешь разобраться с основами. На гитхабе хватает намного более простых процессоров. Простой синтезируемый процессор на верилоге - это не более 150-300 строк.
>verilator Не пользовался, но для него даже нормального GUI нет, наверное и с остальным не лучше. Стоит взять modelsim, можно даже бесплатно из quartus webpack. Но ПЛИС - это не набор совсем уж простейших вентилей, это скорее набор небольших 3-5 входовых ОЗУ и триггеров, с добавлением блоков двухпортовых ОЗУ побольше. Ты можешь на верилоге описать трехпортовые ОЗУ, но поскольку таких блоков в ПЛИС нет, то они будут синтезироваться из триггеров и займут много ресурсов.
В любом случае, пока не изучишь основы цифровой электроники, браться за FPGA нет смысла.
>>276091 > Не пользовался, но для него даже нормального GUI нет, наверное и с остальным не лучше Зря ты так, им пользуется очень много компаний с известными именами, потому что он позволяет получать довольно быстую cycle-accurate модель. Всё потому что он переводит модель с верилога на кресты, а потом это можно откомпилировать и получить экзешник с твоей моделью. А gui ему не за чем, он генерирует времянку, которую потом открываешь gtkwave. Ну и дебажить можно как обычное приложение любым удобным способом
Как понять, что orange pi lite включился? Монитора с hdmi у меня нет. Включая питание — ничего не происходит. Нажимаю на кнопочку включения — ничего не происходит. Поискал ревью на ютьюбе, нашёл одно, там при подключении горели светодиоды, а у меня нет. Пиздец?
Алсо, если вставить в плату флешку, то флешка при подключении питания горит, но всё равно сомневаюсь на счёт исправности.
>>276682 Записываешь образ на флешку, втыкаешь через ethernet в роутер и включаешь. DHCP в роутере должно выдать устройству IP, который можно посмотреть в веб-интерфейсе роутера. Если роутера нет, то скорее всего придется ставить DHCP сервер на компьютер или подключаться через UART. Все, IP есть и можно подключаться через ssh.
У меня orange pi нет и не было, но могу предположить что светодиод может контролироваться операционной системой и в зависимости от дистрибутива может быть отключен.
>>276610 >Colink Проблема в этом. Ты бы еще попробовал JTAG из FT2232H сделать.
> но могу предположить что светодиод может контролироваться операционной системой Ну не знаю, это как-то дико. Тащемта сейчас у меня на флешке дебиан, это первое что под руку попалось, сейчас попробую их дистрибутив взять.
>>277283 > без использования таймеров Почему такое условие? Работать будет как говно при таком подходе в любой реализации, а "калибровать" заебёшься, а для отладки и для релиза будут разные реализации (либо будешь хуярить `__asm("")`), а при смене, скажем, умножения PLL нужно будет всё делать заново.
Всего-то надо один раз аккуратно написать модуль, рабтающий на таймере (можно 16-битном, переполнения отслеживать и "складывать" в старшие 16 бит, это на самом деле самая геморройная часть), который при инициализации вычисляет задержку на вызов `delay()` (скажем, в цикле вызывает 1000 раз `delay(1)`, потом по таймеру определяет фактически прошедшее время, среднюю задержку запоминает и впоследствии для всех вызовов её учитывает). И таким модулем можно будет пользоваться хоть с -O0, хоть с -O2, хоть с HSI, хоть с HSE+PLL, точность выходит обычно в 1-2 такта.
>>277460 Достаточно просто знать сколько тиков в одной микросекунде. Использование HAL накладывает какие-то ограничения на изменение и использование Systick?
>>277739 >Достаточно просто знать сколько тиков в одной микросекунде. Только если устраивает систематическая ошибка в "плюс" (задержка на вызов функции, возврат из неё, вот это всё).
>Использование HAL накладывает какие-то ограничения на изменение и использование Systick? Какого HAL? Если ты про STMовский, то да, он сам использует этот SysTick для отслеживания таймаутов операций, более того - с помощью прерываний, т.е. про прецизионность и детерминированность собственного `delay()` можно забыть.
>>277745 >Какого HAL? Если ты про STMовский, то да, он сам использует этот SysTick для отслеживания таймаутов операций, более того - с помощью прерываний, т.е. про прецизионность и детерминированность собственного `delay()` можно забыть. Мерсибо. Бредить в этом направлении прекращаю.
Перекатываю с ньюфаг-треда: Посоны, почему периоды моей мигалки разные? В keil5 - 10.5us, а логический анализаторsaleae logic analyzer 24mhz 8ch показывает 15.79us, кто из них пиздит? Алсо, смотрел уарт логическим анализатором - скорость показывает правильно.
>>277782 Тебе нужно задуматься о том что показывает Keil и что показывает LA. И значение какого именно параметра твоего микроконтроллера Keil-у неизвестно.
Задумываться о том что именно ты измеряешь, чем, и что именно означает результат этого конкретного измерения этого конкретного параметра этим конкретным прибором - вообще полезно
} Процессор выполняет определенное количество определенных команд, которые в свою очередь выполняются за определенное количество тактов. Даже не знаю что тут должно отличаться ирл от симулятора, частоты-то одинаковые.
>>277811 >Процессор выполняет определенное количество определенных команд, которые в свою очередь выполняются за определенное количество тактов. Если у тебя Cortex M0 без пайплайна, то это, хотя и очень грубо, но более-менее верно. Но дело даже не в этом. Что по твоему мнению означает слово выполняются? После того как ты подумаешь и ответишь на этот вопрос, задай себе следующий - в чем разница между значениями слова "команда выполнена для Keil и LA? В качестве подспорья приведу аналогию - выражение взрыв сверхновой* отличается для самой этой звезды и для наблюдателя, скажем, с Земли?
>>277830 Спасибо, что-то где-то про такое читал, только ничего не понял, вроде предвангователь следующей инструкции. То есть для точной задержки можно использовать только таймер, как писал анон выше?
>>277750 Во-первых, случай "переполнения" отработан некорректно: если `fv < 0`, то условие `while(...)` выполнится, скорее всего, сразу же, никакого ожидания не будет, т.к. новое значение `fv` будет вообще больше, чем `LOAD`. Чтобы починить, нужно сделать код совсем нечитаемым говном, из-за 24-битности этого сиськотика.
Во-вторых, есть хренова тьма "накладных" задержек, причём размер большинства из них сильно зависит от конкретного компилятора, концертных его опций, а также контекста вызова функции и, наверное, состояния конвейера: 1) время на вызов функции, если она не заинлайнится (а может местами инлайниться, а местами нет); 2) время на загркузку констант в регистры, типа адреса `SysTick` и `TICKS_IN_US` (может требоваться, а может и нет, если вызовы идут подряд); 3) время на загрузку значения `VAL` (может быть 2 такта, а может быть и 1, если функция заинлайнена и предыдущий вызов тоже `ldr`); 4) реализация блока `if(...)` может быть через бранчи (и тогда будет плавающее количество тактов в зависимости от (не)выполнения условия) или через условное выполнение (как решит конпелятор); 5) значения переменных могут храниться в памяти или в регистрах (как решит конпелятор); 6) ещё, наверное, куча всего, чего я не знаю.
Не говоря уже о том, что вся эта пурга наложится на механизм загрузки инструкций из флеш-памяти, размер соответствующего буфера, конкретная частота (твой стм тянет до 72 МГц, но его флеш-память только 24 МГц).
Короче, для совершенно конкретных условий (компилятор, опции, частота, конкретная программа) ты можешь подобрать пару констант таким образом, чтобы задержка приводила с точностью до нескольких тактов к ожидаемой паузе, в конкретном месте программы. Но стоит изменить что угодно или вызвать функцию из другого места, и результат поплывёт.
>>277811 Согласно документации `nop` не обязан приводить к задержке, якобы ядро может выбрасывать его из конвейера (хотя лично я с таким поведением не сталкивался); эта инструкция нужна для выравнивания кода в памяти.
>>277996 >с точностью до нескольких тактов к ожидаемой паузе И ты забываешь что изменение логического уровня на одном из выводов МК происходит совсем не мгновенно.
>>278042 нет ты Под "подобрать" я имею ввиду добиться , скажем, от кода `set_pin(1); delay(1); set_pin(0);` длительности импульса 1 микросекунда, скажем, по осциллографу, то можешь быть уверен, что вызов функции длится ровно микросекунду, и совершенно не важно, какую задержку дают порты, хоть час, важно лишь что она не зависит от выставляемого уровня.
>>278050 Тааак, падажжи ёбана, чего-то я хуйню сморозил. Конечно, от задачи зависит; и если задача - дрыгать ногами с заданными интервалами, то всё так, хотя "истинная" задержка будет хз какой, тут вообще слишком много факторов: режим работы порта, ёмкость нагрузки етц. Но я вообще изначально не про порты думал, а про что-то типа
>>278109 >"истинная" задержка будет хз какой, тут вообще слишком много факторов: режим работы порта, ёмкость нагрузки Начинаешь догадываться, похвально.
>>278165 nop'ы не предназначены для задержек и могут их производить или нет в зависимости от реализации и/или ситуации, см. instruction cost в доках от ARM. Вообще, заебал. Если заморочиться с минимизацией задержек и сделать напрямую, т.е. GPIOA->BSRR = PIN; delay(...); GPIOA->BRR = PIN; то ситуация будет эквивалентна работе со счётчиком таймера в программном плане на 100% (запись в волатильный регистр - то же, что чтение из него), т.е. калиброванная по таймеру задержка будет корректной и для работы с выводом; а в аппаратном плане - с точностью до таймингов, приведённых в даташите, что для stm32f1xx составляет 5 нс. Ты из-за 5 нс мне тут мозги ебёшь?
Судя по всему, embedded-тред, бывший здесь пару лет назад - всё, так что спрошу здесь. Хочу заказать оценочную плату из пиндосии https://store.ti.com/Tiva-C-LaunchPad.aspx , и как-то так получается, что она с доставкой - 20 баксов, т.е. примерно 1200 рублей, а на али такая же - от 1400 рублейс бесплатной доставкой. Тут где-то наебалово?
>>278301 У TI если хорошо попросить, отладки бесплатные. Но насчет Tiva лучше сразу почитать errata и заплакать. Как оно у них не летало, так и не летает. Баг на баге.
>>278304 Вообще, я её для этого курса заказывать собрался, бо там на её всё завязано. https://courses.edx.org/courses/course-v1:UTAustinX+UT.6.10x+1T2017/info Но раз так, то, пожалуй, просто проделаю то же на имеющейся у меня STM32F3 Discovery Понятно, что код будет другой, ну да и йух с ним. А хорошо попросить - это наобещать закупку крупной партии для продукта/учебного заведения?
Аноны, помогите. Пытаюсь прошить stm8s103f3, но нихуя не получается. Программка примитивнейшая чтобы тупо зажечь светодиод.
#include "stm8s.h"
int main() { GPIOB->DDR |= (1<<5); GPIOB->CR1 |= (1<<5); GPIOB->CR2 |= (1<<5); GPIOB->ODR |= (1<<5); while (1) { asm("nop"); } } Прошиваю ST visual programmer, пишет
< File successfully loaded. File Checksum 0x731B > Programming PROGRAM MEMORY area... Cut Version and Revision of device: 1.2 < PROGRAM MEMORY programming completed. > Verifying PROGRAM MEMORY area... Cut Version and Revision of device: 1.2 < PROGRAM MEMORY successfully verified.
Но нихуя в итоге не работает, светодиод не зажигается. В чем проблема?
>>278839 Светодиод там низким уровнем зажигается вроде бы. Также для инициализации имеет смысл использовать библиотечные функции. #define GPIO_LED GPIOB #define PIN_LED GPIO_PIN_5 GPIO_Init(GPIO_LED, PIN_LED, GPIO_MODE_OUT_PP_LOW_SLOW);
>>278985 Для мигания светодиодами практически все равно какой микроконтроллер.
>>279106 Это не так, если сравнивать самые дешевые микроконтроллеры, то разница будет максимум в 2 раза. Даже если есть какая-то разница в цене, то что нужно делать, чтобы она была существенной? Серию из нескольких тысяч махараек, в которых кроме микроконтроллера только корпус и пара светодиодов?
>>278995 Многие микроконтроллерные задачи сводятся практически к миганию светодиодами, например часто от микроконтроллера требуется только инициализация каких-то микросхем по I2C и конфигурация FPGA.
>>279014 >>279015 Но один и тот же объём работ за 1 секунду stm32l выполнит при более низкой частоте, чем stm8l. Так что потребление не аргумент, если только речь не идёт о чём-, что спит 99% времени.
>>279022 Ай ну что за еботня. Вот ты в наносекундах скажи время реакции stm8l на некоторое событие. 16МГц, это значит неопределённость от 0 до 63 нс просто из-за тактовой частоты, что вдвое больше, чем для stm32l. Далее, в системах реального времени важно гарантированное худшее время, а не детерминированность в принципе. И если реакция на событие сколь-нибудь нетривиальна (ну, там, включая пачку 32-разрядных умножений, скажем), то STM8L среагирует гарантированно и детерминированно -- медленно.
>>279123 Специально для этого ti придумала сопроцессор ввода-вывода, pru subsystem. Работает на 200 МГц, нет пайплайна, инструкции за 1 такт, внешние пины воткнуты прямо в регистр ядра
>>279123 >один и тот же объём работ за 1 секунду stm32l выполнит при более низкой частоте, чем stm8l. Серьезно? stm32 быстрее сложит два 8-битных числа чем stm8?
>Так что потребление не аргумент, если только речь не идёт о чём-, что спит 99% времени. Если чему-то важно потребление, оно обычно как раз и спит 99% времени. Кстати, за сколько там просыпается твой STM32?
>>279123 >гарантированно и детерминированно -- медленно И что характерно, STM32 с отключенным даже только кэшем (с неотключенным worst case будет еще хуже), сделает это настолько же медленно - только при этом еще и будет больше жрать и дороже стоить, и места больше занимать.
>>279123 > Ай ну что за еботня. В какой момент земляне все проебали? Как диды умудрялись летать до Луны на контроллерах с ферритовой памятью, а теперь нам подавай стм32 для мигания светодиодом и то он не успевает вовремя?
>>279170 >>279180 Кажется, я догадался. Ты неверно понимаешь это самое "worst case" и что означает "средняя скорость конвейера". Это вовсе НЕ среднее значение по времени. Будто работающий контроллер может по некоему пуассоновскому процессу изредка "спотыкаться" - хуй там. "Среднее" - оно по множеству различных реализаций различных алгоритмов. Можно специально искусственно написать код, который будет постоянно сбрасывать конвейер, но если конкретный код работает за определенное время, то он так всегда и будет работать. Вероятности, случайность, эти твои 0.000001% "худшего", относятся к случаю, когда ты берешь архитектуру м3 еще до ознакомления с задачей, вот тогда есть небольшая вероятность, что случится худшее и задача окажется медленно решаемой на конвейере. К детерминизму выполнения заданного кода это не имеет отношения.
>>279156 > Для чего "для этого"? Для кастомной периферии, для жесткого реалтайма > Чем оно лучше CPLD? Ну "лучше" - понятие слишком широкое, и им не стоит бросаться в обществе уважающих себя инженеров. Но основные преимущества такие - это один корпус, а не два, и cpld ты не сможешь подключить напрямую к ddr памяти, нужен всё равно какой-то интерфейс к хосту
>>279254 >cpld ты не сможешь подключить напрямую к ddr памяти, нужен всё равно какой-то интерфейс к хосту Не вполне понял что ты хотел сказать. Внутри микроконтроллера статическая память. Через FSMC можно подключить SDRAM и CPLD одновременно.
>>279351 Сначала говорили о другом: >>278985 >Посоны, зачем нужен stm8 при наличии stm32?
>а ddr3, не микроконтроллер, а арм процессор с линуксом К чему по твоему там обычно подключаются параллельные NAND флешки? Там обычно два интерфейса внешней памяти, к одному из которых можно подключать не DDR память. Конкретно в этих TI с DDR3 >>279152 имеется два интерфейса памяти. Ну и DDR3 является синхронной динамической памятью, то есть SDRAM.
>>279267 Судя по всему это разные аноны, один любитель TI >>274377 и другой с боязнью конвейеров >>279012
>>279369 > Сначала говорили о другом Я мимопроходил и увидел, что идёт обсуждение дрыгания ногами, пайплайна, реалтайма и всего прочего. Передо мной тоже вставали такие задачи, и я перерыл кучу инфомации, перечитал много мануалов, а такие вопросы как задержка между instruction fetch стадии и появлением сигнала на ноге далеко не на первой странице мануала написаны, приходится долго вчитываться. В итоге остановился на техасовской Ситаре, и это довольно универсальное решение, к тому же времени на разработку новой периферии значительно меньше уходит. Может, я кому-то сократил много времени и денег, рассказав о такой штуке > один любитель TI >>274377 Да, в том треде тоже я писал, я походу один на всей доске про эту систему прошарил
Поясните за разницу меджу уткой Nucleo и Discovery.
Хочу взять на F413 (f0 и f1 уже заказал с али от lc-tech) .
Есть куча ардуинской обвязки (обменял у коллеги на пиво) - лучше для совместимости брать nucleo? Хотя про диско пишут, что там ардуино-совместимые пины.
Чем-то кроме формфактора с экраном и цвета они отличаются? Есть какие-нибудь неочевидные киллер-фичи?
Анон, порекомендуй годных книг про arm cortex-m, да и о программировании микроконтроллеров/embedded вообще. Таких, чтоб давали базу и раскрывали суть, вроде K&R для C, Thinking in java для жабы, zen of assembly language для x86 асма, dive into python для пайтона, sicp ну ты понел.
Уровень в прикладной разработке у меня относительно высокий, а во встроенную/мк только вкатываюсь.
>>279437 Для них самые годные книги Reference manual и Data sheets, беллетристики особо нет Вот эта понравилась Valvano J. - Embedded Systems. Real-Time Operating Systems for Arm Cortex M Microcontrolle - 2017
>>279437 >Уровень в прикладной разработке у меня относительно высокий, а во встроенную/мк только вкатываюсь. >>279464 >Можно программировать микроконтроллеры на маке? Не много ли там пердолинга? Спрашиваю, т.к. почти все туториалы под шиндоус Смуззихлёбы обезумели.
>>279498 >>279464 >Можно программировать микроконтроллеры на маке? Для мака есть те же самые GCC и eclipse. Поэтому проблемы могут быть только с отладчиком. >т.к. почти все туториалы под шиндоус Действия по установке всего этого под линуксом и виндовсом практически не отличаются, могу предположить что для мака все аналогично.
>>279505 >проблемы могут быть только с отладчиком OpenOCD должен запуститься без проблем, плагин для эклипса имеется. У меня вот тулчейн QtCreator+GCC+OpenOCD, выбирал с критерием кроссплатформенности, но по факту ей и не пользуюсь.
Итак, ARM-бояре, я триггернулся на <$10, IoT, 1GHz, Pi и заказал на Али этот самый Orange Pi 2G-IOT. После того как проспался и поостыл, начал задумываться, - Ну нахуя!!? Порывшись на Официальном(tm) сайте и не найдя нихуя толкового, решил обратится к Двачу. С чего начать-то? Это же нихуя не Ардуинка, а практически аналог моего первого компа собранного в 2003. Кто работал с Апельсинками энтими?
>>280380 Русскоязычное коммьюнити очень даже, один из главных пилильщиков Armbian под эти Оранжи наш человек. Но общаются конечно на английском потому что зачем же и ради чего сокращать размер коммьюнити отсечением от него всех кто русского не знает?
>>280375 > Orange Pi 2G-IOT Че за ебала такая? Что за rdamicro, первый раз вообще слышу. На неё хоть линукс есть в сорцах, хотя бы для виду. А драйвера? А закрытые прошивки для модулей gsm и gps? Потому что работать там врядли что-то будет. Что ты вообще с ней делать будешь, там же ни документации, ни аппнотов, ни сорцов? Взял бы лучше за 60 баксов beaglebone, так у тебя бы шикарнейшая поддержка была от ti, всегда рабочий и свежий линукс, куча примеров и проектов. Вот тут реально можно изучать и въезжать в тему на хороших примерах
>>276682 Нужна была sd карта. Теперь красный светодиод горит но горит только он, зелёный нет. Орандж не работает с медленными картами? У меня микрософт от этих анальных ограничений, скажите что это не так.
>>280442 > Взял бы лучше Возьму если приспичит. > А закрытые прошивки для модулей gsm и gps? ЖПС на ней нет, а ждя ЖСМ, - думаю он выложит попозже. На старые апельсинки на гитхабе хватает всякого.
>Браслет собран на основе чипа Nordic 52832. >Нордик для легкой разработки сделал готовый режим обновления ПО чипа — DFU. >Как раз недавно на браслет пришло обновление. вот линк кому интересно >В гугл плэй есть приложения от фирмы Нордик, возможно кто то достаточно разбирается что бы порыться в ПО >https://mysku.ru/blog/china-stores/50839.html
Сап, антон, внезапно на голову свалилась плата sam v71 xplained ultra пикрилейтед Я вообще плисоёб, и с МК почти не сталкивался, но в целях проф. роста решил заняться. Что можно интересного собрать на такой плате? Что почитать можно по этому МК?
Part I: Assembly as a Language 1: Introduction 2: GNU Assembly Syntax 3: Load/Store and Branch Instructions 4: Data Processing and Other Instructions 5: Structured Programming 6: Abstract Data Types
Part II: Performance Mathematics 7: Integer Mathematics 8: Non-Integral Mathematics 9: The ARM Vector Floating Point Coprocessor 10: The ARM NEON Extensions
Part III: Accessing Devices 11: Devices 12: Pulse Modulation 13: Common System Devices 14: Running Without an Operating System
Работающие программистами/разработчиками, подскажите, пишите ли Вы код, используя HAL или что-то другое? Если я начал осваивать arm (stm32f4discovery плата) после 8-битных AVR, мне нужно сразу учиться на HALе? В интернете есть целый курс уроков, в которых используют HAL.
>>281778 У меня была такая ошибка. Пишут, что она появилась в 4.20 версии куба http://www.openstm32.org/forumthread4668. Так используют ли HAL несмотря на такие баги люди, для которых это работа, а не хобби? Или Вы сами все настраиваете, как в avr (TIMSK = (1<<TOIE1);).
>>281779 > Так используют ли HAL несмотря на такие баги люди, для которых это работа, а не хобби? Как раз таки его и используют. Поэтому еще везде пишут в требованиях "умение разбираться в чужом коде,читать документацию" как раз и для этого тоже. Потому что делать нехуй каждый раз часто используемые куски заново писать. А насчет багов - обычно это можно быстро раздебажить и исправить. Но для новичка лучше всё самому ручками по мануалу писать. Чтобы понимать, как там что работает. К hal нужно придти, самому понять, зачем он нужен и захотеть его использовать
>>281779 Обновил Куб до 4.20.1 - да, действительно, этот баг поправили. Я, сцуко, "счастливый" - только STM32 начал изучать и сразу напоролся на баг Куба. Всю башку себе отъебал, пока понял, что Куб гонит.
>>281850 > да-да! начинать нужно с машинный кодов, никакого ассамблера! Тоже неплохо денёк поковыряться в опкодах, понять, что это такое, какая у них структура и т. д. >>281851 Моё имхо, если хочешь прям хорошо разбираться, нужно начинать писать без куба. Долго, муторно писать по мануалу свою инициализацию всей хуйни. Вот когда ты сможешь писать свой рабочий код, но тебе будет впадлу это делать, это значит, что ты созрел до куба, и после этого момента, ты его будешь использовать легко и непринужденно, и сам быстро находить в нём баги. Если же тебе не охота лезть в дебри, то можешь сразу использовать куб, но будь готов, что он может работать немного не так, как ты предполагаешь, и тебе придется либо самому всё-таки погружаться в специфику железа, либо гуглить по форумам, что да как
>>281886 > Долго, муторно писать по мануалу свою инициализацию всей хуйни. так и делаю в иаре, только работа с регистрами, только хардкор, никаких стд-либов и периферал-либов.
Ананасы, подскажите где про асм для М4 почитать?петухабр читал, ни хуя не понял CMSIS нихуя не понятно, HAL дохуя писать, один макрос пол-экрана занимает. SPL нормально, но некоторые функции очень медленные ибо везде обертки, ассерты, typedef'ы Решил заняться этой хренью, потому что прочитал, что некоторые инструкции недоступны в сях, операции вроде 64 = 64+32*32 за 1 такт и прочую хрень. естесна, буду делать вставки в сях, ибо весь ниасилю
>>282665 >прочитал, что некоторые инструкции недоступны в сях, операции вроде 64 = 64+32*32 за 1 такт это где такую хуйню несут? ЯП тут вообще не при чем, дело в конпеляторе, и слабо верится, что что-либо современное не может в такую примитивную инстракшн-левел оптимизацию. Дрочил несколько раз критичные куски кода на асме, обскакать gcc -O3 так и не удалось. Имхо асм оправдан только когда важно иметь кусок кода, работающий одинаково независимо от компилятора и его опций. Так-то в CMSIS сишные обертки на все инструкции прописаны.
>>282668 Это я читал, так ни хрена и не понял. Где нормальные описания команд? Где написана структура асм файла? Названия аргументов вроде Rd, Rn, Rm, <op2> мне ни фига не говорят. Видимо нужно учить основы асма с нуля. Спасибо хоть за мануал по NVIC
>>282674 >обскакать gcc -O3 так и не удалось. Я только один раз переписывал на ассемблере кусок кода для cortex-M1, по сравнению с -O3 кейла, был прирост скорости на четверть. Точно не помню, но вроде бы прирост был из-за того что мне удалось распихать все часто используемые переменные в регистры. Так что такой оптимизацией стоит заниматься только в крайнем случае.
>>282684 > Где нормальные описания команд? Они там и есть "нормальные", вплоть до инстракшн-кост, чего тебе не хватает? >Где написана структура асм файла? В документации на компилятор жи. Ты чем бинарник собирать и линковать собрался? Вот там и наисано.
>>282688 Чего-то слабо верится, оптимально распихивать переменные по регистрам -- это то, что первым делом умеет любой компилятор, их изначально для того и создавали, задача для компьютера элементарная. Ну или -О3 у кейла значит что-то другое, например минимизацию размера бинарника.
>>282743 >первым делом умеет любой компилятор Если эта оптимальность зависит от входных данных, то оптимизировать сможет только тот кто знает статистические характеристики этих данных.
>>282750 >>282749 В кейле таких параметров нет, в нем есть только -Otime И вывод другой: если хочешь скорости, бери другой микроконтроллер, чуда оптимизации не будет.
>>282847 Запускается таймер, считающий до 50 мс. В цикле проверяется статус кнопки, если она сбрасывается (происходит дребезг), то таймер обнуляется и увеличивается счетчик. Цикл крутится, пока не апдейтнется таймер (дойдет до 50 мс) или счетчик досчитает до 1000000. Счетчик нужен на случай, если пользователь сумеет отпустить кнопку раньше, чем 50мс.
>>282848 > таймер (дойдет до 50 мс) или счетчик досчитает до 1000000 Я чот условие цикла не вдуплил, оно "TRUE" пока TIM2->SR (что это, 50мс?) И(!!!) k<100000.
>>282859 >TIM2->SR (что это, 50мс?) Это флаг апдейта. Там восклицательный знак стоит, т.е. условие TRUE, пока флаг апдейта НЕ выставлен. >И(!!!) k<100000. Да, все верно. Когда счетчик станет больше, условие перестанет выполняться.
>>282839 Ерунда какая-то. Запускается этот кусок кода по какому условию? А если у тебя несколько кнопок? При переходе на другой микроконтроллер будешь переписывать целиком? Дребезг контактов проявляется и при отпускании кнопки. Типовой алгоритм подавления дребезга выглядит как-то так: if (вход) { if (счетчик == макс) { выход = 1; } else { счетчик++; } } else { if (счетчик == 0) { выход = 0; } else { счетчик--; } }
>>282896 >по какому условию? По нажатию кнопки. >А если у тебя несколько кнопок? И что? GPIOA->IDR & btn условие проверяет конкретную, нажатую кнопку. >Дребезг контактов проявляется и при отпускании кнопки. А это неважно, потому что первый же фронт будет сигнализировать об отпущенной кнопке.
>>283070 >>283073 Таки рекомендую использовать SPL. Причина: такие конструкции как #define IS_GPIO_MODE(MODE), ассерты бьют по рукам за неправильную инициализацию. В том же CMSIS названия регистров - обертки над числами, и АНВ2 насрать, что ты пихаешь в него бит от АНВ1 - для компилятора это просто число. В SPL такая штука не прокатит. Про хал не знаю, не пробовал. Притом использование в одном исходнике и CMSIS, и SPL считается дурным тоном.
Аноны, мучительно перелезаю с AVR на ARM - где почитать на русском языке про таймеры STM32. Пиздец, столько наворочено, что в башку не помещается. Простейшая задача - хочу считать таймером нажатие кнопки.
>>283073 >>283077 Точно, поправил. Но все равно не работает, теперь первое значение 1D0, а потом так же 20-28. Уже и предделитель, и количество сэмплов менял.
Сначала я вообще CubeMX открыл и все наконфигурировал, но он выплюнул столько кода, что я решил делать все сам. SPL не по хардкору, писать напрямую в регистры гораздо интереснее, плюс проект не хотел компилироваться, когда я SPL в кеил добавил.
>>283086 Лучший источник информации — даташиты. Прочитываешь весь раздел по таймерам и ищешь те функции, которые тебе нужны. Можно поискать переводы на русский, вот тут, вроде, много чего описано: http://chipspace.ru/stm32-general-purpose-timers-1/ .
>>283104 > Точно, поправил. Но все равно не работает, теперь первое значение 1D0, а потом так же 20-28. Уже и предделитель, и количество сэмплов менял.
> Сначала я вообще CubeMX открыл и все наконфигурировал, но он выплюнул столько кода, что я решил делать все сам. SPL не по хардкору, писать напрямую в регистры гораздо интереснее, плюс проект не хотел компилироваться, когда я SPL в кеил добавил.
Во первых, есть ли у тебя тру компилер arm-none-eabi-gcc? Spl поддерживает. Во-вторых, лучше поставить кокос 1.7.х. Он специализируется на стмах, нет ограничения кода, халявный. Инклюдишь библиотеки одним щелчком мыши, прототипы функций с докладным описанием смотришь там же. И документацию на cmsis найти гораздо труднее.
>>283104 >Лучший источник информации — даташиты. Да всё понятно про даташиты, но всё же - как считать, используя HAL, значения счётчика TIM2? Захожу по нажатию кнопки в прерывание по нужному фронту - всё ок, а значения счётчика получить не знаю как...
>>283160 void TIM2_IRQHandler(void) { cnt = __HAL_TIM_GET_COUNTER(&htim2); HAL_TIM_IRQHandler(&htim2); } По нажатию кнопки приходит в прерывание, но cnt не увеличивается.
>>283162 Попробуй напрямую к регистру TIM2_CNT обратиться. И вообще, кинь весь код. Одна функция ничего не даёт. Не выходит - гуглишь RM0090 и читаешь доку от ST. извините за много сообщений, постоянно новое в голову приходит
>>283158 У меня стандартный, стоит ставить? Переход с ардуино на регистры был непрост, теперь еще и компилятор отдельный указывать. Я все еще хочу обойтись без SPL. Хотя, если ее использование увеличивает размер кода так же, как и CMSIS, то можно попробовать.
>кокос Читал, что серьезные дядьки в нем не пишут. Плюс официальный сайт лежит уже, судя по форумам, продолжительное время, что не говорит в его пользу.
>И документацию на cmsis найти гораздо труднее. Я из него пока только setInterrupt() использую, потому что не нашел, как это через регистры делается, лол. Документация даже на сайте кейла есть, http://www.keil.com/pack/doc/cmsis/General/html/index.html .
>>283160 Так написал бы сразу, что с HAL, а то склаждывается впечатление, что ты совсем ничего не знаешь.
>>283161 Ты, наверно, предположил, что у меня discovery? Я себе купил вот такую плату: http://www.ebay.com/itm/272501820584 , она и дешевле, и меньше, а для выхода логический анализатор есть.
>>283177 Компилястер стоит ставить - оптимизация классная, spl тоже стоит по вышеизложенным причинам. >серьёзные дядьки Серьёзные дядьки названия регистров не путают и вообще, пишут на асме. Для быстрого старта рекомендую кокос. И тот сайт, ссылка на который несколькими постами выше.
>>283164 >RM0090 Это не катит. У меня STM32F103C8T6 - курю UM1850 >И вообще, кинь весь код. Одна функция ничего не даёт. Чертова спаморезка не даёт код выложить :-О
>>283177 >Так написал бы сразу, что с HAL, а то склаждывается впечатление, что ты совсем ничего не знаешь. Да я практически ничего и не знаю, что касаемо STM32 - после AVR очень сложно.
>>283193 Я лучше словами. К TIM2 на CHANNEL3 я подключил кнопку. По нажатию на кнопку попадаю в прерывание. Это всё работает. Как мне в прерывании, используя HAL, получить значение счётчика TIM2? Хочу знать сколько раз нажималась кнопка.
>>283236 я по ходу туплю с непривычки. TIM2. Тактирую от входа TIM2_ETR (pull_up, опускаю на землю кнопкой) Должен от нажатия кнопки счётчик увеличиваться?
>>283264 >>283264 >и читаешь тики За тики должны быть нажания кнопки. Нет?
>Если будет ругаться пробуй без __ спереди Не, нормально. Только не растёт счётчик от нажатий. Понятно, что я могу настроить прерывания по паданию уровня и в нём увеличивать счётчик. С этим я разобрался. Хочется считать импульсы таймером.
>>283269 Get counter - это получить время прошедшее с нажатия кнопки. Если хочешь считать нажатия, обьяви переменную и инкрементируй её во внешнем прерывании. И не мудохайся с таймерами.
>>283177 Хохо, наконец-то я догадался посмотреть регистры GPIO.
РЕГИСТРЫ ПЕРИФЕРИИ НЕ РАБОТАЮТ С ВЫКЛЮЧЕННЫМ ТАКТИРОВАНИЕМ.
Сегодня решил завести ЦАП, но не включил тактирование и думал, почему он не реагирует на запись. Потом посмотрел и точно, я в инициализации АЦП сначала выставляю аналоговый режим, а потом включаю порт A в RCC.
>>283297 > Мосье сидит на модеме 14400? Нет. Просто 6Мб сорсов в архиве для контроллера это убер-дохуя. Хотя потом посмотрел, ты туда и CMSIS и HAL и Аллаха заархивировал. Мне правда глубоко похуй, я просто мимокрокодил и ничем тебе помочь не могу
>>283306 > Ради чего мне из неё что-то вырезать? Нахуя мне рыть всю твою папку с проектом, чтобы найти код отвечающий за сраную кнопку? Ты еще и кейл с кубом туда заархивируй. Или весь системный диск. Хуле, инторнеты сейчас быстрые.
>>283317 зря ты так агришься, у стм бардак в либах и версиях, я сам предпочитаю держать фиксированную копию SPL/HAL для каждого проекта отдельно, лучше уж один и тот же баг в их либе пофиксить отдельно в каждом проекте, чем следить за сохранением совместимости всех проектов с очередной микроправкой.
>>283641 Он подключается через HDMI , и я так понял что всё что через HDMI подключается - работает везде. Это ведь так? И тачскрин подключается отдельно как-то?
>>283641 >>283816 Дисплей этот помимо того, что работает от HDMI, ещё и на GPIO садится (питание и тач-видимо). Если распиновка оранж пи и распберри одинаковая - то должно работать. Я с оранжпи не сталкивался, да и честно говоря не знаю, зачем говноклоны малинки вообще нужны.
>>284341 Если ты про режим, когда по внешнему сигналу значение счетчика копируется в другой регистр, основная причина в обеспечиваемой точности. Можешь ли ты сказать, сколько тактов будут выполняться предложенные тобой операции? А если в момент ожидания условия возникнет прерывание? Или ты собираешься еще и прерывания запрещать? Но тогда микроконтроллер не сможет выполнять другие задачи во время этого ожидания.
>>284367 >Можешь ли ты сказать, сколько тактов будут выполняться предложенные тобой операции? А не похуй на частоте 72мгц? Явно не больше микросекунды это будет
>>284367 >Но тогда микроконтроллер не сможет выполнять другие задачи во время этого ожидания. А нах какие-то еще задачи? микроконтроллер предназначен для выполнения одной задачи в 99% случаев
Существует ли способ, позволяющий DMA прибавлять значение к переменной вместо копирования? Хочу сделать фильтр среднее арифметическое для АЦП, а то при одиночных конверсиях показания крайне нестабильные. Сейчас единственным способом мне видится копирование значений в массив, потом их сложение и сдвиг вправо, но сложение 16 значений 86 тактов занимает, а все остальное прерывание 109.
>>284486 Насколько я знаю - нет. DMA просто копирует значение из регистра в память либо из памяти в память, ты даже не можешь тунелировать данные, чтоб через DMA с одного I2C на другой пересылать, только I2C - память - другой I2C
>>284490 Про периферию в даташите написано. Настроил, теперь надо как-то скорость увеличить. Continuous mode выполняется значительно быстрее, чем серия 8 одинаковых каналов, но в этом режиме срабатывает переполнение и данные не записываются.
>>284516 Поиграйся с burst режимом, хотя он нужен для передачи пакетов данных, а не для непрерывного считывания ацп, также ты можешь в прерывании обрабатывать ошибки в том числе overrun (возникает, если ацп конвертирует данные быстрее, чем их успевает считывать dma).
>>284525 Circular mode тут больше подходит, если я правильно понял его работу. Теперь у меня только одно прерывание по таймеру, где все выполняется, раньше еще от АЦП было. Только в режиме дебаггинга все значения за один шаг программы обновляются независимо от времени сэмиплирования, хотя счетчик тактов увеличивается на адкватные величины.
Аноны, моему другу очень понравилось программировать на asm для avr. У нас в университете был семестр микроконтроллеров, и мой дружок так упоролся, что решил лабы всем девчонкам просто так парни сами почти все сделали
Через два месяца у него др. Я думаю, может, купить ему что-нибудь помощнее atmega16?
Проблема в том, что я решал лабы на си и отладчиком пояснял преподу, что да как работает. Выебнулся, да - потому что преподаватель хотел, чтобы я на асме писал. Так вот, мой друг си не любит, и вообще от программирования не в восторге пытался заманить его изучать си шарп вместе с собой, да разные книжки по программированию читать. Несмотря на это, атмега с асмом ему понравилась. Понравится ли ему что-нибудь на более производительном арме?
Хочу купить девборд, программатор и рассыпухи до кучи
>>284967 Дело в том, что на асме дальше лаб особо не уедешь. Он охуеет писать и потом отлавливать дохуища багов с утечками памяти в более менее серьезном приложении.
>>284968 Думаю, сразу stm32 взять. Мощности больше, цена та же. Единственное, чего бы хотел попросить - ссылку на годный diy-набор, потому что те, что я нашёл - лютая хуета. Думаю, нужно купить маленький oled-дисплей, динамики, диоды, рассыпуху (резисторы, конденсаторы, катушки), плату для травления Хочется как можно меньше паять, потому что в наличии один здоровый батин паяльник
>>284982 Так это даже хорошо, может, насчёт писать код на С. Некрасиво решать за друга, но я хочу себе союзника
>>285003 Да, можешь взять STM32F103C8T6 и заодно попроще 20-ногую STM32F030F4P6. Но я б еще взял STM32F030C8T6, мне он даже больше чем STM32F103 нравится, да нету USB и батарейного питания для внутренних часов (которые все равно отстают и надо дрочиться с регистром подстройки), зато в 2 раза больше таймеров, что для меня обычно важнее в большинстве задач.
>>285030 Если плата чуть шире, то похоже дырки должны точно совпадать с дип40 пинами. Блин, как это называется? Буду гуглить даташит. Эта штука точно подойдет в один девайс, прямо в сокет.
Armщикам по масти, вэбмакакам по пасти, господа. Приобрел китайскую ардуиноподобную платку с стм32 на борту, вроде даже подружил с ардуино ИДЕ, но хочется освоить IAR, нет ли гайда годного на эту тему (или не стоит вскрывать эту тему?), короч буду очень признателен.
>>285135 я только из-за кейла и сижу под виндой, потому что 10 из 10 идешка с отладкой, навигацией по статусам регистров, просмотром памяти во время отладки и прочими ништяками, она даже лучше чем AtmelStudio для avr
>>285157 Первые 3 пикчи - кейл (2 и 3 в режиме отладки), я обвел интересные инструменты, но их там в несколько раз больше вплоть до софтверного осцилографа, который во время отладки будет рисовать че там на входе/выходе ножек. 4 пикча - STM Studio, отдельный интсрумент для отладки с визуализацией данных, очень удобно если надо проверить стабильность работы чего-нибуть (например как часто i2c отпадает или датчик отправляет неверный CRC, просто запускаешь, добавляешь переменную и через некоторое время смотришь график с провалами)
>>285160 Ты так пишешь, будто всего этого в других IDE нет. А все это, кроме разве что STM Studio, имеется даже в эклипсе в виде плагинов.
>>285135 Отладка под линуксом ничем не отличается от отладки под виндовсом при использовании gcc. Для GNU GDB есть разные gdb-сервера для разных отладчиков. OpenOCD - поддерживает много разных, и есть проприетарные st-util и J-Link GDB. И все они работают почти одинаково под разными операционными системами.
Так анон. Хочу вкатиться в эти ваши микроконтроллеры. Начать хочу с футсвича для компа. Типа кнопки, которые нажимаются ногой, но для компа как нажатия на клавиши.
http://www.ebay.com/itm/321569700934 Вот к этой хреновине нужен конвертер usb<->uart? Кроме этой платы, диодов и диодов, что еще нужно, чтоб начать пользоваться?
>>285767 >а хал - говно. Поясни плз. Мимо 2 года уже использую хал, некоторые девайсы на нем работают с нагрузками 220, управляют симисторами и т.д. Все это время никаких нареканий. Фо фан делал обработку изображения с камеры и типа слежение за объектом заданного цвета, работало как часы. Код писать на нем очень приятно, при этом не раз лазил в исходники хал, там все написано четко и красиво.
>>285768 >четко и красиво По мне так нихуя не красиво и много какого-то лишнего говна внутри. Наличие поллинга в обработчиках прерываний -- это вообще пушка по-моему да и вообще именно обработчики прерываний мне там больше всего не нравятся. Да, с ним писать намного проще, потому что зачастую можно даже мануал не открывать на камень, но случись чего разобраться в этой куче будет тяжелее, чем в их старом spl, который тоже был не конфета. Хер знает, насколько четко оно работает, но мне кажется, что любая более простая либа типа libopencm3 будет работать быстрее, и в ней будет проще ковыряться, если возникнут какие-то проблемы.
>>285770 Ниразу не видел поллинга в халовских функциях обработки прерываний, как минимум в таймерах, I2C, UART, SPI для последних версий F0 и F1 (в них больше всего ковырялся) их точно нет. Там просто набор проверок с выставлением флагов в регистры и вызовом __weak методов. Есть while в методах типа HAL_UART_Transmit, но они там и должны быть, потому что это не передача через прерывание или DMA. Про отладку я вообще молчу, достаточно взглянуть на метод и сразу понятно где ставить точки остановки и какие переменные мониторить, потому что нормальные названия + комментарии.
>>285770 Всё правильно говоришь. Также хал - это оверхед (тяжеловесная ебола, всё-таки); это высокая нижняя граница сложности (weak-callback меня не пугают, по сути те же irq-handler, но они не нужны в простейших задачах, а хал бывает только с ними); это баги (sdio под STM32L правил весьма основательно); это уродливый DSL (микс из __MACROSOFF(hyoba) и HAL_YOBA_Off(&hyoba)); ну много ещё вопросов к халу, его архитектуре и документации. Но вот для больших проектов с FreeRTOS, USB-CDC, SDIO+FAT32, RMII+LwIP и т.п. я бы настоятельно рекомендовал именно HAL и именно в связке с Cube. Охуительно упрощает.
>>285774 Еще забыл упомянуть главную фишку в виде возможности легкого переноса кода с одного ядра на другое, пару раз сталкивался, когда писал что-то на F0, а потом переносил на F1 из-за не хватки периферии или памяти, перенос занимал от силы 5-10 минут.
>>285774 >Там просто набор проверок с выставлением флагов в регистры Сейчас работаю с f7, там в SPI в цикле проверяются флаги, по-моему это не норм. По крайней мере в железе там был косяк: в режиме слейва как будто в какой-то момент клок проебывался. Данные принимались, но флаг bsy в периферии не сбрасывался, он у меня так и оставался в этом цикле крутиться. Колбэк по tx/rx complete предполагает конец передачи, по факту же он вываливается туда по мере опустошения fifo, то есть, передача еще идёт, и отключать периферию нельзя. Да, насчет комментариев не могу поспорить, но есть слабо описанные места, наприме, usb device. Ковырять его тяжко. С другой стороны, писать всё это самому было бы гораздо хуже. >>285776 С точки зрения переноса хал действительно очень крут, тут не поспоришь. >>285775 >Охуительно упрощает. Упрощает, но вопрос в том насколько он будет медленнее работать, чем что-нибудь куда более лёгкое? Есть ли вообще какие-то альтернативы, кроме libopencm3 и старого spl? Короче, на работе встал вопрос ребром на эту тему. Я не хочу изобретать велик и не считаю, что монструозность хала сильно снизит производительность, хоть он мне и не очень нравится. С дургой стороны альтернативы две: писать самому и убить кучу времени на отладку, либо взять что-то лёгкое и низкоуровневое типа libopencm3, но я и другие разработчики в отделе никогда ей не пользовались, и если накидаю говна в проект, то вряд ли меня за это поблагодарят. Вот я и думаю, что делать.
>>285777 >Сейчас работаю с f7 У меня похожие проблемы были пару лет назад с F4 (я тогда на нем делал обработку изображения с камеры и были проблемы с DCMI, пришлось поковыряться и поправить ручками), тут ничего не поделаешь баги в любой области присутствуют (посмотри на тот же ESP32, помимо багов в железе, часть которых исправлена в новой ревизии, присутствуют еще и в их SDK + сам SDK не полный, как и мануал на периферию, который допиливают на коленке). Но их в любом случае правят, хал для F4 который был до какого-то времени с багами стал все-таки стабильным, тоже самое будет и с F7 со временем.
>>285777 >вопрос в том насколько он будет медленнее работать По-моему такие вот нагруженные периферией проекты - это всяко сплошные DMA, где всех вычислений - парсинг да простая логика, т.е. без какого-то жёсткого реалтайма, потому и хал допустим. При этом делал однажды проект USB-осциллограф с параллельным логированием на microSD с FAT и россыпью медленных датчиков на i2c и spi, так вот безотносительно производительности я просто не представляю, как бы я заебался без куба, скорее всего просто даже не взялся бы начинать. Ну а куб - это только хал. другое дело, что такие вещи надо на малиноподобной хуйне делать, а не стм32
>>285779 DMA действительно упрощает работу в плане быстроты чтения данных, а если надо кучу всякого говна слепить в единое целое, то в любом случае нужна RTOS. Ну и не стоит забывать, что даже самый медленный STM32 это 48МГц, что в 3 раза быстрее среднестатистической Атмеги с 16МГц, на таких частотах можно уступить парой циклов в пользу быстроты и простоты написания кода.
>>285778 >их в любом случае правят Вот поясни, как с этим быть вообще? Запилил я проект на хале, нашёл там пару багов, пофиксил. Стм выпустили новую версию, где что-то пофиксено. Мне что в такой ситуации делать? Обновляться или нет?
>>285781 Я б обновил, это ж просто уровень абстракции, перегенерил проект в кубе, скомпилировал, если надо переименовал функции и все работает. Но при этом я б не гнался за новыми версиями, если все норм работает на старой, они в основном для новых МК типа F7 и могут содержать потенциальные баги, после "оптимизации" общих методов, для их совместимости со всеми ядрами.
>>285783 Вот в том-то и вопрос; на переименования похуям, а вот не нахватаешься ли новых багов и не откатишь ли собственные изменения не понять, так что вынь да положь регрессионное тестирование. Как было просто при коммунизме SPL.
>>285784 Я сейчас сижу на кубе 4.19 (4.20 был с багом инициализации чего-то там, который поправили в 4.21, но мне и на старом норм) и последними FW для F0 и F1, которые последний раз обновлялись в конце и начале 2016 соответственно. Пока не сталкивался вообще ни с какими багами, работал со всей периферией, кроме разве что CAN.
>>285779 DMA везде используется, где только можно, это даже не обсуждалось. Жесткого реалтайма в проекте вроде как нет, поэтому мне кажется, что хал там применим будет. Мне вообще кажется, что при использовании freertos с его переключениями и прочей малафьей пытаться угнаться за тактами убрав хал -- бессмыслица. Да и вообще стоит ли пытаться выиграть 10 строк кода на проце с частотой 216 МГц? Ладно, спасибо, аноны, буду пытаться настаивать на использовании хала. >>285784 Можно посмотреть на предмет исправления известных тебе багов. Если ничего не изменилось, то и смысла обновляться может не быть. Так или иначе когда периферию поднимаешь, пишешь ведь какие-то тесты, чтобы понять, что всё верно работает. Можно в отдельной ветке обновить либы, погонять тесты, если ничего не отвалилось еще помимо старого, то оставить, в противном случае просто забить хер до выхода следующей версии. Но просто так херачить новую либу в проект не надо, я как-то раз много времени потратил на поиск и исправление косяка в i2c. А в старой все как часы работало.
>>285777 >либо взять что-то лёгкое и низкоуровневое Можешь еще посмотреть в сторону этой штуки: STM32Cube Low-Layer Application Program Interface (LL API)
Я правда ей никогда не пользовался и ничего не могу сказать, но она позиционируется как облегченная версия хала для высокой производительности, что-то среднее между регистродрочем и абстракцией. Также его можно использовать вместе с хал.
Котаны, помогите. Решил слезть с блядоардуино. Заказал у пиздогазых пикрелейтеды. Программатор именно с такой распиновкой. Собстенно, подключил 2, 4, 8 и 8-й выходы программатора на IO, GND, CLK и 3,3 выходы платки соответственно. В кубике выбрал STM32F103C8T6. PC13 - output. Собрал в кокосе стандартный блинк. Все компилится. Заливаю прошивку - и нихуя! Причем, пробовал заливать и через STM32 ST-LINK Utility. Что-то туда заливается, т.к. если в ST-LINK Utility слелать Erase а потом залить кокосом - то там появляется что-то. Кодяра лупа ниже. Что я делаю не так?
>>286183 Аноний, спасибо, в кейл все гуд - завелось с полтычка. Алсо, правильно ли я понимаю, что HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET); устанавливает пин не в HIGH, а в то значение, которое было сконфигурено в кубике в GPIO Output Level?
>>187094 Пришёл сюда узнать об этом. Об AT91, досталась парочка, посмотрел у китайцев цена минимум за шт. 250, решил поехать мозги. Смотрел смотрел - Flash и еепрома нуль, как и куда прошивать его?
>>187094 Пришёл сюда узнать об этом. Об AT91, досталась парочка, посмотрел у китайцев цена минимум за шт. 250, решил поехать мозги. Смотрел смотрел - Flash и еепрома нуль, как и куда прошивать его?
Помогите советом. Хочу подключить беспроводной геймпад Logitech F710 к stm32f4discovery. Нужно обрабатывать нажатия всех кнопок и движения стиков. При подключении к компьютеру геймпад определяется как HID-совместимый игровой контроллер. Правильно ли я понял, что мне нужно настроить на stm32-плате USB host? Как потом отследить нажатия кнопок? Где можно про это почитать, по какому запросу искать? Спасибо!
Двач, поясни плиз. Для инициализации ножек своей дискавери юзаю SPL с их ебучими структурами и прочим. так вот, понадобилось мне прихуярить 1-wire свой, немного отличающийся от далласа (DHT22). Так вот, насколько это всё хуёво и насколько проще и быстрее это с CMSIS? (т.е. мне недо быстро посадить ножку на минус, а через микросекунду уже настроить её на вход). ардуинопараша вроде mbed не катит. Ньюфаг, с ардуино не знаком.
>>287117 Поидее ты можешь настроить ножку open drain и включить подтяжку вверх/вниз, чтоб не переключать ее режим работы, тогда можно по ней и передавать данные и читать.
>>187056 (OP) Вопрос к знатокам. С помощью куба забахал проект с lwip и freertos, прописал пути в эклипсе, начинаю компилировать. вылезает пикрил. если приглядеться, то можно увидеть, что в описании ошибки указан путь STM32F4xx_HAL_Diver. Понятное дело, что он неправильный, но почему то поиск объектного файла происходит по нему. создается нормальный объектный файл по нормальному пути. кто и почему коверкает мои пути? у меня такой искаженный путь нигде не фигурирует
Блэть, парни, посоветуйте нормальный курс по проганью STM32. Какие не находил статьи - нигде адекватно не расписывают что к чему. Тупо показывают, как надо сделать, чтоб в такой IDE с таким проектом плата замигала лампочкой. Как? Почему? Что происходит? По минимуму объяснений. А приходится срочно вкатываться в MCU. Что почитать-то?
>>288624 Если бы ты осилил учебник по Си, у тебя бы осталось два вопроса: какой кнопкой компилировать и где документация на микроконтроллер. Те статьи которые ты находил, как раз про то "какой кнопкой компилировать".
>>288633 в даташитах все расписано тащем то. Как че конфигурировать, а если не можешь читать даташиты на английском то надо заходить с другого конца к проблеме ииииииии учить английский.
>>288638 Не, с даташитами как раз проблем нет. Просто концепция в целом не осознаётся на 100%. Сложно сформулировать в чём именно мне не хватает знаний, но подошедших уроков найти не смог.
>>288640 >>288633 Тогда перед учебником по Си прочти эту книгу для школьников. >МК STM Я бы не сказал, что STM в чем-то существенно отличаются от других микроконтроллеров.
>>288640 P.S. >>288641 Хорошо. Спрошу иначе. Есть пример программирования контроллера с момента создания проекта до момента прошивки с более/менее полным пояснением каждого действия?
>>288642 Смотря что понимать под более/менее полным пояснением. В книге >>288641 объясняется что такое процессор, память, как происходит управление периферией. Остается только изучить Си. Не зная что ты осилил, трудно советовать что-то конкретное. Например, что тебе не понятно в примере https://github.com/kcuzner/stm32f103c8-blink/blob/master/src/main.c ?
>>288624 Если имел опыт с AVR, то никаких проблем не должно воникнуть, вся периферия работает так же (дрыганье ножками, прерывания, АЦП, таймеры, ШИМ, ...), только их больше и у некоторых появился расширенный функционал (передача данных черех DMA, интерфейсы для памяти и дисплеев, 2-х канальный АЦП со всякими плюшками, применимыми для DSP и т.д.).
Прогать можно используя CMSIS, либо HAL (SPL устарел и не поддерживается на новых камнях). Я предпочитаю HAL, так как с ним быстрее генерить пустой проект с инициализированной периферией и есть возможность быстро перенести проект с одного камня на другой, остается лишь писать сишный код. Подавляющее большинство примеров написаны с использованием SPL либо HAL, что упрощает поиск инфы, если что-то не получается.
Вобщем не вижу никаких проблем во вкатывании, если имел опыт работы с 8-битными МК, другое дело вкатываться в контроллеры типа ESP32, который китайцы поленились сделать на ядре Cortex, а даташит ограничивается лишь общим описанием того как работает та или иная периферия. Хорошо хоть для SDK состряпали доки.
>>288661 Я правильно понимаю, что CMSIS - это менее абстрактная и более низкоуровневая библиотека, а SPL и HAL - аналоги по этому критерию и более высокоуровневые, чем CMSIS? Мне сейчас самому надо определиться на чём начинать.
>>288863 В первом приближении CMSIS - это описание регистров периферии. Другими словами CMSIS - это прямой доступ к регистрам периферии. Соответственно, если ты осилил Си и документацию микроконтроллера, ты автоматически осилил CMSIS. Если ты не смог осилить Си и/или документацию микроконтроллера, у тебя получится освоить HAL только на уровне копипаста и прочего ардуинства.
В любом случае для начала тебе требуется понять как процессор взаимодействует со своей памятью и периферией, а это доступным языком изложено в >>288641 После этого тебе будет необходимо осилить Си. Причем при программировании микроконтроллеров не используются какие-либо особенности языка Си, не изложенные в учебниках. Рекомендую один из этих двух учебников: 1) Керниган Б.В. Язык программирования С. 2) Подбельский В.В. Программирование на языке Си. Если бы ты не поленился и хотя бы бегло прочел >>288641 , а потом прорешал бы примеры из учебника по Си, то множество всяких глупых вопросов наверняка бы не возникало.
>>288878 Ок, спасибо. КМК архитектуру на уровне юзера я понимаю, т.е. когда смотрю примеры на CMSIS вопросов по работе регистрами не возникает. Скажем так: основным вопросом было то, что я не знал, с какой стороны взяться за изучение. Сейчас, когда худо-бедно начал, вопросов меньше.
>>288861 Ну тогда придется поднапрячься если захочешь писать с CMSIS, проще б было начать с 8-битных МК AVR типа Atmega16, у них неплохой набор периферии, можно дебажить и смотреть что происходит в регистрах, если есть необходимость разобраться как что-работает. У STM32 референс мануалы на 1000+ страниц, сразу охуеваешь от количества информации. У AVR мануалы в 3-4 раза меньше, по ним легко прогать и изучать как работают всякие базовые штуки типа таймеров, ШИМ, АЦП и т.д.
>>288888 Как недавно перебравшийся с AVR, скажу, понятного разбора архитектуры ARM сейчас по горло. Все таки перелезая с архаичных avr происходят некоторые разрывы шаблона.
1) Основ электроники, хотя бы до транзистора. 2) Основ цифры 3) Общей архитектуры МК 4) Покупки макетной платы 5) Конкретной архитектуры вместе с ассемблером. 6) СИ А дальше сам уже будешь понимать. Главное не лезь в пердуины.
>>288907 3, 5 - не нужно. 1, 2 - достаточно знать что есть цифровой и аналоговый сигнал + зачем нужны резисторы, транзисторы и конденсаторы. 4, 6 - пожалуй хватило бы только этого.
Практическое знание ассемблера нахуй не нужно, только зря потратишь время на изучение этих ебучих микрокоманд, чтоб забыть их через пару месяцев. Архитектура МК тоже не несет никакой пользы, ну знаешь ты что там есть блок памяти какого-то размера, мультиплексоры и еще всякая хуита, но при написании программ ты даже не вспомнишь об этом.
Интересно кем работают или что делают те, кто советует дрочить архитектуру МК и ассемблер, наверное уженестуденты каких-ниубть тех. вузов, в которых им забивали мозги устаревшим дерьмом
>>187056 (OP) Хочу вкатиться в ARM, у меня есть плата STM32VL, но я не умею пользоваться даташитом. Посоветуйте статей, где бы параллельно с написанием кода велась работа с даташитом типа "А эта константа имеет такое значение, потому что в даташите в такой-то главе такой-то порт расположен по такому-то адресу".
Столкнулся с тем, что трЪ-stm'щики кроют хуями HAL и SPL. Понятно, что каждый, кто прохавал проганье с регистров, получает +5 к ЧСВ, но всё же есть конструктивные аргументы в пользу отказа от библиотек? Видел комменты, мол, библиотеки ограничивают гибкость работы. Но в чём заключается это ограничение понять не могу.
>>288966 HAL по сути надстройка над CMSIS, которая наоборот добавляет гибкости, потому что ты можешь претаскивать куски кода с одного камня на другой, не тратя кучу времени на переписываенрие CMSIS функций к КАЖДОЙ инициализации, вызову, обработке и т.д. Хз почему все так рьяно дрочат на CMSIS, ведь он не дает никаких преимуществ, только гемор с запоминанием важных кусков кода и постоянным лазанием в референс мануал.
>>288995 А по моему разницы по трудозатратам почти нет, потому что обычно код инициализации периферии намного меньше остального кода программы.
>>288938 >достаточно знать что есть цифровой и аналоговый сигнал + зачем нужны резисторы, транзисторы и конденсаторы. Для программирования микроконтроллеров самих по себе, даже это не нужно. Но для разработки более-менее сложных устройств с микроконтроллерами этого не хватит. >Практическое знание ассемблера нахуй не нужно С этим скорее соглашусь. Но некоторые подробности будет не лишним знать, например наличие/отсутствие аппаратного умножения, деления и прочего. >Архитектура МК тоже не несет никакой пользы Как минимум, без поверхностного понимания не получится понять откуда берется выравнивание данных. Знания о том как работают всякие процессоры помогут при программировании ПЛИС.
>дрочить архитектуру МК и ассемблер Достаточно для расширения кругозора почитать >>288641 или что-нибудь подобное.
>>289002 >Для программирования микроконтроллеров самих по себе, даже это не нужно. Отчасти да, но часто приходится между МК и подключаемым девайсом лепить всякие элементы: транзисторы для управления 12/24В нагрузкой, резисторы и конденсаторы на I2C шину, делитель для АЦП и т.д. по мелочи.
Многое зависит от того, какими навыками обладает вкатывальщик, изучал он радиоэлектронику или программирование в универе:
>Но некоторые подробности будет не лишним знать Для радиоэлектронщика - да, для программиста так себе инфа в конечном итоге, на многих ИТ специальностях есть курс по комплюктерам и их процессорам, где рассказывается про устройство внутренней памяти, конвееры и прочее. >помогут при программировании ПЛИС Это уже совсем другая категория разработки устройств, чаще крупный проект богатого заказчика, для вкатывания и разработки чего-то своего МК получше выглядят. А поверхностное понимание, при необходимости, можно получить, прочитав за вечер пару статей по устройству и работе тех же AVR, которые очень хорошо разжеваны. На самом деле достаточно знать как работают регистры, оба типа памяти, тактирование (считай таймеры, шим, вочдоги) и аналоговое преобразование, все остальное это цифровые интерфейсы "высокого уровня", для которых нужно больше знать программирование, чем работу МК. >почитать >>288641 Я открыл в середине и осили только пару глав, не могу в эти сокращения на русском, в англоязычной документации по МК как-то все понятнее и привычнее.
Считаю что лучше все-таки поиграться для начала с AVR, по статьям в инете либо по книге пикрилейтед. Я больше предпочитаю статьи, потому что изучал так пхп, питон, руби и после 6 лет работы, когда все это заебало так же изучал Си и AVR а затем перекатился на STM32, никаких проблем во время их изучения не возникало, особенно если у тебя под рукой есть отладчик, который при любых непонятках позволяет во всем разобраться самому.
>>289002 > код инициализации периферии намного меньше остального кода программы Дело не только в инициализации, но и во всех обращениях к портам, регистрам таймеров, шинам данных, оработках прерываний и тому подобного. Используя HAL их не надо искать и переписывать по всему проекту, потому что написанный код будет совместим с любым другим камнем STM32, можно написать проект на STM32F1 и потом за 5-10 минут перенести его весь или частично на STM32F7.
>>288966 Конкретно с HAL/SPL проблема одна единственная: их писали рукожопые индусы. Но, поскольку писать на чистом CMSIS что-то сложнее морганияя светодиодами это тот ещё чемпионат по фигурному зигхайлю, то все плюются но пользуются, дорабатывая напильником.
P.S. Ну или не пользуются, а берут какой-нибудь opencm3 или HAL от ChibiOS.
>>288938 >4, 6 - пожалуй хватило бы только этого. Для помограть диодом да.
1, 2 - достаточно знать что есть цифровой и аналоговый сигнал + зачем нужны резисторы, транзисторы и конденсаторы.
Диоды, стабилитроны, тиристоры, индуктивности.... А так же знать как они работают, иначе, даже сраный силовой ключ не сделаешь.
>3, 5 - не нужно. Кроме попсы описанной в туториалах нихуя не изучит, будет сидеть каждую детскую проблему решать на форумах. Никто не говорит, что надо все вызубрено знать, но некий сферический вакуумный перемалыватель команд надо. Нужно знать так, что бы в если потребуется, в конкретной можно было разобраться.
>>288940 Просто изучить архитектуру любого попсового контроллера.
Поясните про все эти ARM'ы, SoCи, стоящие в смартфонах, роутерах и всем таком. Я правильно понимаю, что практически это как бы аналоги десктопных камней от интел/амд? Т.е. вокруг камня собирается базовый набор периферии (озу-пзу-дисплей-управление), в камень заливается типовой загрузчик, который грузит с флешки, на которую заливается некий базовый дистрибутив линукса в качестве ОС, который впоследствии допиливается доп. софтом и драйверами. Однако все же не могу найти инфы, как такое смахараить с нуля? То есть собрать некую минимальную платформу, на которой, грубо говоря, запустить тетрис. Или же продаваемые малинки и их аналоги - это и есть такие минимальные платформы?
Господа хорошие, не обоссывайте. Вкатываюсь в ARM, купил себе плату NUCLEO-F446RE. Нагенерировал под себя инициализацию в CUBE и попробовал отправить в уарт массив чисел. Ожидаемо соснул хуйца, так как подключаю переходник USB-UART и в терминале мне ничего не приходит. Почему?
>>292618 вот и все. предыдущий пикрил - собственно код, который я туда добавил. больше ничего. ловить пытаюсь преобразователем USB-UART на микросхеме pl2303. пользуюсь терминалом с остроумным названием Terminal. драйверы все в порядке, прошивается нормально (дополнительно после отправки дрыгал светодиодом - он благополучно дрыгался). терминал работал нормально (подключал SIM800L). я уже не знаю на что грешить.
>>292872 Условно - есть задача сделать достаточно сложный девайс. Надо сделать это сейчас с перспективой дальнейшей работы с STM32. Посмотрел на HAL и огорчился - проинициализировал все в Cube, написал прошивку - не влезло в контроллер. Тыкался в SPL и не понял толком - поддерживается ли он до сих пор или ST занимается сейчас только HAL? CMSIS - вообще не догнал как с ним работать, а нормальных обучалок не нашел. Во все вникал только читая сами либы, а это долго. Вопрос в том, есть ли какое-нибудь развернутое руководство к действию?
>>292884 > не влезло в контроллер Как бы у ST есть контроллеры с 2Мб на борту. Может тебе призадуматься об использовании малины/апельсины для таких йоба-проектов?
>>292913 Больше вопросов вызывают библиотеки HAL, подключение которых по моему мнению раздувает объем прошивки. Плюс надо уместиться в минимальное пространство и минимальное потребление. Вдобавок я не понимаю как HAL работает, а читать код и комментарии к нему дело неблагодарное. User manual на самом деле догадался искать нашел только сейчас, но там, вроде только описание структур и функций, а не то, как оно работает.
>>292919 >библиотеки HAL, подключение которых по моему мнению раздувает объем прошивки Думаю при включении оптимизации компилятора всё будет неплохо. >>292884 >Вопрос в том, есть ли какое-нибудь развернутое руководство к действию? Я не видел. Скажи, хоть, какой контроллер. У тебя каша в голове. SPL и HAL -- это ПО одного уровня. Мне HAL нравится меньше, ибо частенько работает с указателями и достаточно громоздкий, однако при ужимании прошивки и SPL тоже требует частичного переписывания, по моему мнению, но значительно меньшего. CMSIS -- это приблуда от ядра Cortex (Cortex Microcontroller Software Interface Standard), она сама по себе SPL и HAL не заменяет. CMSIS присутствует в проектах как с SPL, так и с HAL (после куба). Задавай вопросы, постараюсь помочь, мимо инженер-программист-электронщик 4 года в эмбэде.
>>292919 >читать код и комментарии к нему дело неблагодарное Алсо, ты не поверишь, но в эмбэде тебе не только читать код и комментарии приходится, но ещё и понимать как железо работает. Иногда индусы херню пишут в HAL-е, например... Да и разрабы камня тоже часто упускают важные моменты в документации по периферии, так что приходится пробовать опытным путём с использованием осциллографа (хотя сегодня то я понимаю, что можно было и без него, на голом камне). Так что если ты хочешь положится на софт, тебе не в эмбэд надо... >>292924-кун
>>292884 >CMSIS - вообще не догнал как с ним работать Тогда тебе для начала необходимо ознакомиться с >>288641 или чем-то подобным, даже если будешь использовать высокоуровневые библиотеки.
>>292924 >У тебя каша в голове. Ты не представляешь насколько ты прав. Подскажи литературу, может блоги лол, сколько ни смотрел - дилетанты одни их пишут чтобы степ-бай-степ раскурить что к чему. Вообще для чего нужен и нужен ли CMSIS и можно ли обойтись без него?
>>292936 >Вообще для чего нужен и нужен ли CMSIS и можно ли обойтись без него? Это база, применимо к CMSIS для STM32 и любых ARM контроллеров. Заморачиваться не стоит, ибо один хуй придётся, но лучше применительно на практике. Может и не придётся. Ребята, которые приходят в эмбэд, либо приживаются, либо нахуй идут... Литературы не подскажу, ибо сам начал работать с IAR Embedded Workbench for ARM. Пробовал всякие Atollic True Studio, не впечатлило. В любом случае, тебе надо понимать, как работает железо, иначе никак. Я думал, что за меня всё сделали, пользуйся и не бухти, но хер там плавал... Если ангельский не разумеешь -- вон их профессии, проверено. Напарник меня устраивал на нынешнюю работу, сам по пизде пошёл, ибо не разумел ангельского. А я читаю маны как сказки детям на ночь, и всё разумею. Увы, нужна квалификация. Но, чем смогу -- помогу. Задавай вопросы, если чё...
>>292936 >Вообще для чего нужен и нужен ли CMSIS и можно ли обойтись без него? Извини, я тебе не ответил. Не обязательно нужен, но рано или поздно ты на это выйдешь.
>>292936 Почему игнорируешь >>292928 ? В этой книге рассказывается о том что такое процессор и как он взаимодействует с периферией. Рассказывается доступно, для школьников. После прочтения этой книги вопрос "что такое CMSIS?" может возникнуть только при нулевых знаниях Си.
>>292970 Значит либо там ничего не рассказывали, либо ты все прослушал, либо ты не знаешь Си. Иначе это: >CMSIS - вообще не догнал как с ним работать никак не объяснить, т.к. CMSIS это всего лишь прописанные адреса регистров периферии (в первом приближении). Поэтому можно подумать что ты не понимаешь как ядро взаимодействует с периферией или не знаешь Си.
>>293001 Если программировать на Си, то все различия в программировании любых микроконтроллеров сводятся практически только к разной периферии. А периферия у STM8 и STM32 похожая.
Ребятки, у кого какой опыт в скриптовании голых контроллеров типа православного stm32f103c8t6? Т.е. задача ясная: есть девайс с хорошо определённым "железным" окружением, но блядски плавающей "логикой", ну не переделывать же ему прошивку постоянно - хочется иметь возможность иметь 90% хард-кодед функционала, который точно всегда нужен и оставшиеся 10% ммммакисмально легко и быстро подправлять "по месту". Я так понимаю, диды тут использовали Forth. Сам сейчас сажусь за изучение Lua/eLua. Другие слова мне в голову не приходят, так что параллельно вот на харкачик заглянул ответы спросить.
>>293241 >православного stm32f103c8t6 Это не православный микроконтроллер. Православный микроконтроллер это К1986ВЕ92QI.
>ммммакисмально легко и быстро подправлять "по месту". Все равно для изменения программы требуется компьютер, чем тогда поможет луа? >диды тут использовали Forth. Нет. Forth в общем случае является скорее компилируемым чем интерпретируемым. И писать на нем не быстрее чем на Си.
>>293274 Не, о том чтобы интерпретатор встроить речи не идёт. Т.е. в случае луа - одна виртуальная машина, без лексера/парсера/конпелятора. Как в общих чертах я это вижу: быдлокодится простой загрузчик байт-кода в известную область флеш-памяти, из которой тот и исполняется виртуальной машиной; загрузчик можно сделать например через UART или SPI (Wiznet/Enc28j60 или даже карточка SD); конечно, это по сути будет тот же swd самопальный, но предполагается, что профит будет именно в том, что самая переменчивая нагруженная логикой часть прошивки будет на гибком скриптовом языке, а не на топорной няшносишечке, причём корректность логики будет элементарно тестируемой на компе разработчика. Разве так нигде не делают?
делают конечно? всякая хуета типа nodemcu, в ПЛК вместо программ используют всякие МЭК 61131-3, но это тред про ARM а значит только хардкор и байтоёбство, так что уёбывай
>>293311 >загрузчик можно сделать например через UART или SPI (Wiznet/Enc28j60 или даже карточка SD) Там и так есть SWD/JTAG и встроенный загрузчик через UART, зачем делать еще один с той же функциональностью? Только для того чтобы каждый раз не перепрошивать неизменяемую часть и сэкономить на этом секунду? >на гибком скриптовом языке Чего гибкого в луа? Какой-нибудь питон на компе еще можно назвать гибким благодаря множеству модулей. При этом из Си несложно макросами сделать простенький forth. >причём корректность логики будет элементарно тестируемой на компе разработчика. Будто на Си это нельзя.
Не слушай поехавших, которые поносят HAL, просто они не осилили понятие абстракции и зачем она нужна, ведь этому не учат в их быдло техникумах. Им проще хуесосить то чего они не понимают, чем принять тот факт, что это всего лишь удобный инструмент.
>>293700 >Не слушай поехавших, которые поносят HAL, просто они не осилили понятие абстракции и зачем она нужна, ведь этому не учат в их быдло техникумах.
Двачую. Сам начинал ещё с AVR и PIC на ASM, потом начал работать с C. Параллельно программировал под Linux (там было чистое ООП). Потом, когда начал работать c STM32 понял, что наелся битоёбства.
Когда сейчас всякие интересные личности рассказывают охуительные истории про то, как охуенно быть байтослесарем, мне становится смешно. Ещё лет 15-20 назад я бы мог это понять, но не сейчас. Сейчас программировать в стиле "внук допишет" при таких вычислительных мощностях означает исключительно одно - ты тупо не впишешься в рынок. Кому нахуй нужно, чтобы ты писал на CMSIS месяц то, что я могу написать на HAL за неделю и при этом получить много плюшек в плане переносимости и прочего, при этом потери в памяти и производительности у меня никак не будут фатальными. Напомню, что у серии F4 частота от 80МГц у самых начальных моделей до 180 МГц у топовых при 64КБ-2МБ флеша и 32КБ-384КБ оперативной памяти. Я просто физически не вижу смысла тратить много времени на слишком низкоуровневую ерунду. Времени жалко.
Короче, разобраться с азами конечно нужно, чтобы не стать макакой, не понимающей что такое бит. Но всю жизнь вариться в этом дерьме я смысла не вижу.
ты просто непонимаешь кайфа от продвинутого хардкорного байтоёбства
если тебе нужно быстренько заебенить хуету уровня китай+ конечно нужно зашквариться в IDE + анальные библиотеки, но в ни нет души они неправаславны и ибически анальны
>>293827 >ты просто непонимаешь кайфа от продвинутого хардкорного байтоёбства
Я бы так не сказал. Когда я был юн и мне казалось, что жизнь продолжается бесконечно, я кайфовал от байтоебства, всячески изъебывался, чтобы выжать дополнительный процент и так далее. Потом меня заебало. Сейчас же я не вижу в этом смысла. Хочется больше попробовать, больше сделать. Вычислительные средства позволяют. Олимпийские дисциплины, аля игра в 58 байт меня не интересуют. Кому-то интересно изъебываться и колупать свою девятку в гараже, а кто-то загоняет свою бнв в автосервис, чтобы ему колеса накачали. А цель одна - ездить. Каждому своё, короче.
Насчет души в библиотеках - ну как тебе сказать. Когда-то я думал абсолютно так же, когда программировал под десктопные системы на C++. Когда пересел на Python, у меня возникло странное ощущение. Что вроде да, он медленнее. Но я могу сосредоточиться на решении самой задачи, а не на приспособлении своих инструментов к задаче. И решить задачу гораздо компактнее, и разработать её в гораздо меньшие сроки. А время - деньги.
Хотя в целом, одно другого не отменяет. Узкие моменты в Python можно реализовать вставками С++, с STM то же самое.
>>293861 Тут не столько желание зарабатывать, сколько желание работать с новыми штуками. Понимаешь, какое дело. Кто-то покупает у дедов бесконечные КТ315 и делает светодиодные мигалки на мультивибраторе годами, или какие-нибудь некро-К155-микросхемы и из них чего-нибудь городит, вроде реле времени. Но блядь, время то идёт! Можно всё сделать проще, миниатюрнее, купив у китайцев за бесценок всё, что угодно! И пока ебёшься со старьём, со старыми технологиями, со старыми деталями, время-то тикает.
15 лет назад я мог предполагать, что один чип, который влезет мне на ноготь большого пальца, за 3 доллара, сможет скопировать с маленькой флешки данные и запулить TCP пакетом в Ethernet без обвязки? Нет. Это были какие-то абстракции. Которые уже несколько лет назад как осуществились.
Технологии бегут так быстро, что охуеть можно, и надо успевать. А то навыпускают чипов на 5 гигагерц и 1гб ром/рам за доллар, а ты до сих пор будешь как "правый" (радикальный консерватор, скорее) делать всё на ASM\без пиздатых библиотек, не используя и 10% возможностей.
Короче, байтоёбство - это нужно и здорово на начальном этапе, но самое главное - вовремя соскочить и пойти дальше, иначе застрянешь там надолго.
Как всешда одна и та же бредятина, как будто и не было ничего дельного в русском нете. Переливание говна успешных программистов из пустого в порожнее. Только капча забавная в этот день
>>293463 > какой IDE лучше для нюфага «линух популярнее»(ц) В том смысле, что скорее всего очередное пособие «моргаем светодиодом за пять минут» будет написано про связку Eclipse+gcc.
>>293868 >какие-нибудь некро-К155-микросхемы Попробуй заменить своим STM32 хотя бы К155ИЕ7.
>Кому нахуй нужно, чтобы ты писал на CMSIS месяц то, что я могу написать на HAL за неделю Твои программы на 90% состоят из инициализации периферии? Это наверное довольно простые программы, без каких-либо сложных алгоритмов.
Привет, армач. Есть одно устройство, в составе которого AT91SAM9260-QU в качестве процессора и MT48LC16M16A2TG-75 в качестве ОЗУ. Работает устройство под линуксом с ядром 2.6.22. Нужно снять дамп ОЗУ. Как это можно сделать?
Анонасы, есть ли смысл покупать ардуино, если уже пробовал играться с стм32ф103? Светодиодом моргал, таймер и шим запустил. Едут с китая стм32ф4, 1602, 2812B, 7-ми сегментники и гироскопы. Может ли мне ардуина дать больше чем стм32ф4 или ф7?
>>294361 >Может ли мне ардуина дать больше чем стм32ф4 или ф7? Так сильно орнул с этого, что наверное даже сосед услышал, который в этот момент стену сверлил.
И чего получается, ардуина не нужна? Там же скетчи, шилды, комьюнити, вот это все. Просто стартер кит ардуины стоит 32 доллара с али + к нему ещё лежит набор 37in1 около 13. На офсайте стм 32F746GDISCOVERY стоит 55 бачей. Что брать?
>>294418 Ну для каких-то элементарных задач ардуино подойдет, но серьезных проектов ты на ней не склепаешь. >Просто стартер кит ардуины стоит 32 доллара Нафиг ты стартер киты покупаешь-то? Отдельно все дешевле стоит же.
>>294428 Я пока просто вкатиться хочу, поэтому мне нужно говна кучу и разом. Но я так понимаю по тредам, что вместо ардуины лучше ф103 брать. Я и ардуину хотел-то только потому, что много о ней читал когда не знал про стмки, а с avrdude многого не достиг. Сейчас же пришел к мысли, что хочу ардуину не для проектов, а просто чтоб была, и решил узнать у опытных арм-господ, есть ли смысл в это влезать.
Олсо есть вопрос, с самого st.com можно что-нибудь заказать? Или только через дистрибьютора? Просто цены на 10-20 долларов разнятся.
>>294429 >32F746GDISCOVERY Это, как и F4, для всяких задач с обработкой аудио/видео с использованием DSP, охуенного многослойного графического интерфейса и прочих штук для которых требуются производительные вычисления.
Аналог пердуины - STM32F030 (20/32/48/64 ноги)
F103 если тебе нужен нормальный USB и часы реального времени с питанием от батарейки
F2/F3 для всяких специфических штук с параллельными АЦП для обрабоки сигналов, подключением памяти по FSMC и т.д.
На али отладочных плат как говна (даже всякие 144-ногие F4 по 16$). Купи себе F030 и F103 - их тебе хватит с головой.
Есть еще STM8, но это для поехавших долбоебов и STM32L где требуется реально низкое энергопотребление (наноамперы в режиме сна и микроампера в работе)
>>294471 Мне, как человеку, который 10 лет писал на C++, ПХП, Руби и Питоне, С и любые либы к нему кажутся простыми как палка. К тому же STM либы написаны разрабами с учетом тонкостей архитектуры их камней в отличии от говноподелий пердуино комьюнити, где их пишут реально индусы, не делающие даже элементарных код ревью на банальные ошибки переполнения стека или бесконечных циклов. Асм же удел прошлого (когда нужно было экономить память, оптимизировать чего-то там чтоб вписаться в параметры МК) и является бесполезным в наше время, когда МК 50-70 МГц с кучей памяти стоят 1-2$, имеют кучу плюшек, которые раньше даже представить не могли (DMA, FSMC, DCMI, DSP, аппаратные графические модули и прочее) и всем этим желательно рулить через RTOS. Он годится только в исторически-образовательных целях помигать светодиодом или передать чего-нибудь по I2C.
>>294488 Не надо ко мне на Вы, мне 27 лол. Просто заебало работать на всяких хуесосов и тратить свое время, поэтому разарботал пару стабилизаторов (1/2 канала) и пид регулятор с управлением симисторами. Всякие челики с заводов по производству ПЭТ бутылок покупают в основном (потому что работает лучше чем то, что они покупали у местных производителей) ну и просто рандомы. На очереди 8-и канальный стабилизатор, чтоб выйти на производителя термопласт автоматов (они тоже закупают говно у местных, собранное на пиках). Трачу времени 1-2 дня в неделю чтоб спаять все, фрезернуть отверстия в корпусе на чпу, напечатать вставки и кнопки на 3д принтере и отправить в магазин или сразу заказчику, такие дела.
>>294492 + еще вкатываюсь в IoT, уже пару месяцев работает дома монитор качества воздуха на ссаном ESP8266 (меряет температуру, влажность, CO2, VOC, пыль PM1.0/2.5/10.0, записывает логи на флешку каждую минут и выдает все через веб интерфейс в виде красивых графиков), сейчас переношу все это на нормальный контроллер ESP32 с RTOS на двух ядрах, автономным питанием и прочими плюшками.
>>294477 >когда нужно было экономить память Написал часть некоторой цифровой обработки сигнала на cortex-M1 с тактовой 140 МГц, т.к. было лень все делать на FPGA. Но микроконтроллер все-таки немного не успевает. По твоему я должен переделывать плату под более производительный микроконтроллер? Или переносить в FPGA? Так по моему быстрее этот кусок на ассемблере переписать, чем на верилоге.
>>294500 Соглашусь, ассемблерные вставки никто не отменял, но пердолить на нем весь проект - бред, тем более для всяких тривиальных задач с автоматизацией.
Интернет не читай@Вопрос задавай. Есть одна плата стм32ф103 и шаговик NEMA17, конкретнее 17HS4401S. Какой можно поставить между ними драйвер? Их вообще можно связать?
>>294522 Как вариант A4988, который ставят в дешевые 3д принтеры, но я б советовал DRV8825 - у него микрошаг выставляется до 1/32, он может выдать больше тока + имеет некоторые фишки, о которых можно прочесть в даташите.
>>294545 На таких платах можно сразу к МК, только аккуратно клей радиатор, чтоб не замкнуть контакты и разберись с потенциометром, который выставляет ток (в какую сторону крутить и до какого предела, про это все в инете есть) как вариант можно купить цифровой потенциометр, типа MCP444X, которому задаешь значение тока по I2C
Здравствуйте господа. Есть несколько манядевайсов. Соединенных по асинхронному последовательному интерфейсу. Мастер один (но было бы не плохо мультимастер).
Нужно разродится протоколом. И тут, я, откладывая это "на последок" как самое легкое, впал в ступор.
Сделать на отъебись не получится, вроде и CRC8 надо бы и инициализацию обмена слейвом хочется. Сел писать велосипед, понял что получится хуйня и пол года ошибки отлавливать потом.
Что изучить\запихнуть туда для этой цели? Не в ModBus же закатыватся на самом деле?
Котоны, помогите. Есть код на C, нужно скомпилировать под ARM архитектуру. Как это сделать? Нашел тулчейн arm-linux-gnueabi-gcc, но objdump по объектному файлу выдает архитектуру elf32-little.
Господа ARM-щики, объясните пожалуйста, чем плохи STM8? Почему они некоторыми господинами >>294431 считаются, что долбоебов?
Если мне нужно решать тривиальные задачи, вроде управления движком через I2C\UART, зачем мне брать STM32 если должно хватить STM8? С STM32 я поверхностно знаком, изучаю его. Решить эту задачу на F4-борде я могу. Но это нерационально в плане цены. А STM8 у меня только 103 плата валяется где-то, на AX купил когда-то за полбакса, но пока не колупал (программатор едет). Про разрядность и маленький объём понятно, но чем они настолько сильно отличаются, чтобы их применение было нецелесообразным? Вроде стм8куб даже завезли, на C можно программировать. В чем проблема?
Если gcc не поддерживает какую либо архитектуру то логично условно считать что данной архитектуры не существует? поэтому непонятно о чем идёт речь, stm8? но извените что это за неведомая ёбаная хуета?
>>294836 >Но это нерационально в плане цены. https://www.chipdip.ru/product/stm32f030k6t6-2 https://www.chipdip.ru/product/stm8l051f3p6 Аналогичный Cortex-M0 дороже всего лишь в полтора раза, при этом имеет некоторые преимущества: быстрее считает, есть JTAG/SWD, есть gcc. Кроме чуть меньшей цены, у STM8 нет преимуществ, а недостатки есть. По сравнению с ценой остальных деталей (хотя бы корпусом), разница в 26 рублей будет вообще незаметна. >на C можно программировать На C11 нельзя вроде как. К тому же в SDCC не все работает и он багнутый, а остальные компиляторы воровать надо.
>>294848 Можно найти 25 против 55 рублей, но абсолютная разница такая же.
Ну во первых, 25р, для какого нибудь маня-мелкосерийного устройства вполне себе деньги. Особенно, если компоненты остальные выходят в 25р то же. Во вторых корпус, STM32 резко увеличит размеры платы и может обязать делать 2х стороннюю, если не получится разгуляться по площади. (За исключением того, что ты скинул в том же TSSOP, но тут есть пункт 3) В третьих STM8 умеет питаться от 5В. Что иногда сильно облегчает жизнь и стоимость.
Так, что для некоторых случаев STM8 не лучше, но проще и имеет право жить. Что трудно сказать про всякие PIC\AVR
А так действительно STM8 не стоит того, чтоб сними возиться - в них все хуже (частота, разрядность ацп, памяти и периферии кот наплакал). Их есть смысл применять в серийном производстве, если тебе надо сэкономить пару рублей на елочных гирляндах, которые будут тебе собирать китайцы.
Спасибо за пояснения! Сейчас сам посмотрел повнимательнее на характеристики младших серий и понял, что STM8 того не строят, если нет крупного производства. Тогда буду колупать мелкие 32-разрядные.
>>294882 >если компоненты остальные выходят в 25р то же. Только если этих компонентов за 25 рублей не больше десятка. И найди мне нормальный корпус за 25 рублей. >Во вторых корпус, STM32 резко увеличит размеры платы Они есть в одинаковом корпусе, например TSSOP-20.
Как я заметил, тут многие что-то делают мелкими сериями, при этом стараясь сэкономить даже на микроконтроллере. Что делаете, если не секрет?
>>294883 >аналог F - STM8S То есть аналог STM32F1, STM32F2, STM32F3 и т.д. это STM8S? С чего бы это? В тех что я привел, хотя бы периферия аналогична. >разрядность ацп Где? У них одинаково максимум 12 разрядов. >Во-вторых, нашел где цены смотреть блядь Там хоть месяц ждать не надо.
>>294906 L (STM8 и STM32) - низкое энергопотребление у STM8S. STM8A - для машин, STM8S - общего назначения. У STM8S АЦП 10 бит. Как буд-то ты их будешь по 1шт в месяц заказывать.
>>294906 >Они есть в одинаковом корпусе, например TSSOP-20.
Нет 5В. А все вместе дает кумулятивный эффект, при не благоприятных обстоятельствах. Дороже сам контроллер, нужен DC\DC, нужна более детальная разводка и пошло поехало, в итоге уже не 25р а 125р.
>тут многие что-то делают мелкими сериями >Что делаете, если не секрет? Ничего, но я делаю всякую залупу, которую не купишь или купишь за слишком дохуя и делаю всегда с расчетом, что ее можно будет продемонстрировать и продавать. Людей делающих всякие часы, искренне не понимаю. Думаю не я один такой. А чем все компактнее и технологичнее выглядит, тем более презентабельно.
Маняфантазии? Наверно. Но заниматься разработкой залупы, кладя хуй на ее стоимость и технологичность по мне так хуита, сразу -50% челенджа.
>>294917 В общем, если компилить бинарник на убунте с этими флагами, то на плате при запуске пишет "not found". Если компилить с флагом -static, то пишет "illegal instruction".
Вообще, утилита file показывает по скомпилированному бинарнику следующее: "test_arm: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, for GNU/Linux 3.2.0, BuildID[sha1]=034430c17b1ac94f8d8c3cf45c913691ba66b730, not stripped ". Также, у меня есть бинарник, который работает на этой плате, информация по нему следующая: "ctrl: ELF 32-bit LSB executable, ARM, version 1 (ARM), dynamically linked, interpreter /lib/ld-uClibc.so.0, not stripped ".
Как мне скомпилировать свой бинарник, чтобы вывод file по нему был такой же? Я так понимаю нужно использовать тулчейн uClibs? А то я использую arm-linux-gnueabi-gcc.
>>294947 Тулчейн собрать не получилось, но я скачал готовый для ARM. Теперь у меня есть файл root_fs_arm.ext2, на котором я снова застрял. В мануале написано следующее:
Download root_fs_i386.bz2 from uclibc.org bunzip2 root_fs_i386.bz2 mkdir root_fs su root mount -o loop root_fs_i386 root_fs chroot root_fs /bin/su -
Проблема возникла на последнем шаге, на команду "chroot root_fs /bin/su" - терминал говорит " chroot: failed to run command ‘/bin/su’: Exec format error ". Гугл говорит что это из-за разницы в архитектурах систем и т.д. У меня на виртуалке убунту x64, что мне сделать чтобы оно заработало?
>>294948 Так, решил проблему с помощью qemu. Скомпилировал бинарник, теперь вывод file у него такой: "test_arm: ELF 32-bit LSB executable, ARM, version 1 (ARM), dynamically linked, interpreter /lib/ld-uClibc.so.0, for GNU/Linux 2.0.0, not stripped ". Однако запускаться на целевой системе он все равно не хочет: "./test_arm: can't resolve symbol '__uClibc_start_main'". Я сейчас головой поеду.
Привет, Аноны! Я тут STM постигаю, и столкнулся с проблемой. Сгенерировал проект под HAL из-под куба под STM32F407. Проблема вот в чем - мне нужно вызвать небольшую задержку, в 5-10мс перед выходом из прерывания по кнопке. В дальнейшем сделаю либо на таймере, либо с железом немного пошаманю, но сейчас нужно сделать именно так. (Т.к. хочу разобраться, почему не работает). Вызываю HAL_Delay внутри прерывания и всё виснет намертво в цикле. Поставил приоритет SysTickTimer = 15 - ничего не изменилось, хотя в интернетах пишут, что должно.
Ничего не понимаю. Объясните, пожалуйста, как заставить это заработать.
>>295542 Я понимаю, что задержка в обработчике прерывания - это плохо и так далее. Но пока вся моя программа состоит из обработки одного прерывания и пустого цикла и я могу себе это позволить. И я хочу узнать, какого черта это не работает. Ведь здесь дело не в том, что задержка в прерывании это плохой тон, а в том, как правильно настроить приоритеты прерываний.
>>295565 Пробовал. Работает, как и должно работать.
Я хочу прикрутить энкодер к дев.борде и обрабатывать его топорно, прерыванием по спаду одного из выводов. Этот HAL_Delay нужен исключительно для того, чтобы убрать явление неопределенности при переключении. За один щелчок энкодера переменная, считающая щелчки, вместо 1 изменяется на 10-30.
>задержка в обработчике прерывания - это плохо и так далее
это плохо если ты продвинутый байтоёб и пишеш без всяких HAL, cmsis, cube и прочего дерьма, тогда можешь поругать себя и продолжать, всё будет работать как надо, но если ты сраный ардуинщег-библиотекарь то задежки в прерываниях не просто плохо а недопустимы
>>295608 >>295602 Разобрался. Тупо ошибся и в упор её не замечал в дальнейшем, даже стыдно признаться. Перепутал Preemption priority с Sub priority, когда выставлял биты приоритета. Сейчас всё работает как и хотел. Косячно, но работает. Больше мне и не требовалось от этой задачи.
>>295597 Я так и реализовал в итоге. Подумал, что так логичнее. Но хотел всё-таки узнать, как вызывать прерывание внутри прерывания. Не мог пропустить факт того, что я вроде как задаю приоритет прерывания, а он ни на что не влияет.
>>295608 Это понятно, Анон. Тут дело немного не в этом.
Сап, армач. Есть вопрос по светодиодам WS2812b. Я недавно занялся программированием под АРМ, в качестве подготовки к диплому, ну там светодиодом поморгал, ШИМ запустил, с EXTI поигрался. Недавно пришли мне 10 WS2812b и я попытался спаять свою первую махарайку. Нашел в гугле типичную схему подключения(пик 1), посмотрел как они распаяны на лентах, нарисовал свою плату в Eagle(пик 2), вытравил все и припаял как предписано(пик 3). Дальше скачал IAR'овский проект под ленту, который нашел на Ютубе, канал "Электроника в объективе", залил его на свой STM32F103 и нухуя не работает как в видео.
Дело в том, что диоды получают и напряжение и данные(пик 4), но не применяют их, только первый применяет цвет и дальше не двигается и не меняет его. Если выдергивать минусовой провод, то все 10 штук горят рандомным светом, каждый раз разным. До пайки компонентов, но после лужения я прозванивал все дорожки, после пайки компонентов я все мерил, дороги от кондёров, шины +5 и землю, между ними, сигнальные дорожки. Отдельно проверил конденсаторы, купленные в соседнем радиомаге - 104, как и нужно. Попробовал запитать плату не от 5В, а от 3,3В чтобы Vупр > 0,7*Vпит, та же хуйня. IAR'овский проект правда под старую версию, и при открытии требует обновить проект до новой. Аноны, что может быть за хуйня? Дорожки слиплись? Поставить IAR младших версий? Какие-то настройки IAR которые я проебал? Косяк в плате?
В-третьих, не помогать российским бизнесменам убивать рынок труда. Не стоит выкладывать в интернет готовые решения и подробную документацию и разжевывать все до состояния каши. Если вас заставляют писать документацию к вашему проекту или к части проекта, то не стоит разжевывать все такого состояния, чтобы понял первый встречный. Еще нужно создавать неформальные профсоюзы во всех городах, объединяться в Facebook Messenger, Google Hangouts, Google Plus, Signal, Tox, Jabber, группироваться по профессиям и проводить разъяснительные работы с идиотами, которые готовы бесплатно создавать продукты или оказывать бесплатные консультации ради стажа, лайков в карму, репутации и так далее. Нужно объяснять молодежи, что абсолютно любая работа на дядю должна оплачиваться. Также нужно коллективно осуждать тех, кто выкладывает на YouTube самоучители по диагностике и ремонту любых неисправностей материнских плат ноутбуков или диагностике жестких дисков, или профессиональному восстановлению данных, например. Нужно препятствовать опусканию любых инженерно-технических специальностей на дно и уничтожению рынка труда экономически безграмотными инженерами, которые хорошо разбираются в своих областях (электротехника, электроника, VHDL, сетевые протоколы, восстановление данных), но являются профанами в экономике и не понимают, что своими деяниями они уничтожают свою же профессию. Выкладывание максимально разжеванных материалов плодит дилетантов и мошенников на рынке труда, которые одновременно и позорят профессию, формируя общественное мнение о том, что типичный городской специалист в данной конкретной области - это мошенник, и сбивают цены на услуги, поскольку все клиенты начинают утверждать, что данная сложная работа должна стоить намного дешевле, "...потому что бизнесмен Васян вон за 270 рублей то же самое предлагает". Иначе вам придется тратить уйму времени на объяснение каждому клиенту того, почему после неудачного восстановления данных у Васяна вы не сможете ничем помочь.
В-четвертых, не раздавать направо и налево свои знания и опыт. Российские бизнесмены навязывают всем мысль о том, что профессионал должен активно делиться знаниями и обучать других, а иначе это не профессионал. Они заставляют профессионалов преподавать на организованных бизнесменами курсах для студентов или доучивать выпускников. Если инженер не особо усердно обучает других людей, то бизнесмен, умело дергая за ниточки самолюбия инженера, будет подкалывать его, что тот якобы испугался каких-то жалких студентов, конкуренции с их стороны. Вам нужно понять одну простую вещь: раздача ваших знаний и опыта - это инвестиция в ваше будущее со знаком "минус", даже если это обучение вам прямо сейчас бизнесмен очень хорошо оплачивает. Даже если 40% студентов последнего курса на конкретной кафедре - глупцы, то из оставшихся 60% студентов еще через 3 года 30% смогут успешно справляться с абсолютно любой работой младшего инженера, 20% - с инженерными задачами, требующими средней квалификации, а остальные 10% смогут успешно справляться с задачами старшего инженера на проекте, продавливая вниз цены на труд и наступая вам на пятки. А еще через 3 года некоторые из бывших студентов оставят вас позади. Поэтому преодолейте в себе гордыню и самолюбие, отбросьте мысли о вашей якобы незаменимости и прекратите дарить всем ваши знания и опыт, плодя молодых конкурентов и создавая для владельцев предприятий промышленную резервную армию труда (как ее называл Карл Маркс).
>>295854 Сразу чувствуется какой то манагер. Без опен сорс сообщества был бы такой пиздецовый застой, что страшно представить. Ну да, из 100 - 99 ардуинщеги. Кому нужен ардуинщег, его найдет и заплатит 270р.
ВОТ ЕСЛИ БЫ КОК ПОК ЗАКРЫТОСТЬ, ТО ЗА РАБОТУ УРОВНЯ АРДУИНА Я БЫ ИМЕЛ 1000000 БАКСОВ В ЧАС.
Но увы, не имеешь и не будешь. А профессиональные люди свое место найдут.
>>295904 Походу нету. Однотипное перепечатывание "уроков". На хаброгиктаймсе попадается пара статей, остальное пытался своим пропитым мозгом догонять, надоело, забросил свою стм32ф429i, скоро плесенью порастет. ПС. чота импортозамещение не работает, покупал ее за 1.2к, сечас 3+к
>>295932 > что там догонять? Вот если бы ты кодил только на Бейсике сидя за Robotron1715, потом 25 лет ебашил на стройке в паре парсеков от программирования, а потом тебе приспичило обтряхнуть старину и попробовать поиграться с современными железками, а тут йоба-битовые операции, инициализация тактирования на порядок больше чем ты за всю жизнь строк кода написал и прочие ништяки. На русском ресурсов чуть меньше чем нихуя. На тех которые есть все описывается по принципу: 2 + 2=4, а теперь вы поняли математику и давайте по быстрому разберем пару уравнений описывающих теорию струн.
>>295932 >>295926 >>295904 Единственный нормальный источник - это документация. Все эти статейки в во всяких блогах одинаково бесполезны вне зависимости от языка на котором они написаны. И как я понял, тот анон >>295854 предлагает не выкладывать документацию именно производителям микросхем. >Не стоит выкладывать в интернет готовые решения и подробную документацию
>>295941 Ну вот не скажи. Статейки помогают найти точку опоры, от которой можно уже двигаться. Да, ее можно найти и офф доках. Вот только что все эти офф доки, РМ и тысяча аппнотов.
такая хуета есть в любой профессии в любой стране, теже сервис центры, не в восторге от сраных ютуб блогеров, которые показывают как прожарить проц чтобы он еще пару недель/лет проработал, но обсирать ардуинщеков это не цель а процесс который просто доставляет, ктомуже правило гнобить новичков никто не отменял и это полезно иногда
Совок уже так обосрался. Сейчас же это просто маразм, доставшийся от совков - скрывать инфу изначально предназначенную для юзеров. Анон правильно сказал всё есть в доках. Смешно, Шариков дает советы вселенской глупости.
>>187056 (OP) Ткните меня в STM8-тред. Помню, что видел, а найти не могу. Утонул штоле? Там чювак знакосинтезирующий индикатор к стм-ке подключил и у него работал. Я бьюсь уже 15 секунд и никак.
>>295863 >Сразу чувствуется какой то манагер. Скорее неосилятор, который хочет, чтобы тот мизер знаний - который он имеет, приносил ему хоть какой-то доход. А для этого он предлагает сделать его мизер знаний конкурентноспособным, ограничив остальным доступ к информации.
Аноны, поясните за обучение. Купил я демоборд на стм32ф103, поморгал диодом, освоил таймеры и шим, ацп и внешние прерывания. Под диктовку подключил 1602 через I2C. Дальше мне их Китая приехали WS2812B и акселерометры, я смотрю как их подключить и нихуя не понимаю. Что почитать-посмотреть про DMA, SPI, CCR, FreeRTOS чтоб хотя бы представлять о чем идет речь?
>>296668 >Под диктовку подключил 1602 через I2C. Надеюсь ты понимаешь, что в этих дисплеях I2C приделан через дополнительную плату с микросхемой I2C-GPIO? Нужно было читать документацию на сам дисплей и на эту микросхему. >Что почитать-посмотреть про DMA, SPI, CCR, FreeRTOS чтоб хотя бы представлять о чем идет речь? Для начала нужно узнать какие интерфейсы у твоих светодиодов и акселерометров. Единственный нормальный способ это узнать - читать документацию. >WS2812B https://www.parallax.com/sites/default/files/downloads/28085-WS2812B-RGB-LED-Datasheet.pdf На четвертой странице нарисованы временные диаграммы. Какому интерфейсу из STM32 они соответствуют? Да никакому. Соответственно есть два варианта: 1) Светодиодом мигать умеешь? Вот и намигай в соответствии с этими временными диаграммами. Для задания задержек использовать таймеры. 2) То же самое, но с использованием ПДП.
>и акселерометры Разные акселерометры имеют разные интерфейсы. Неожиданно?
>>296613 В eclipse хотя бы рефракторинг имеется. Как IDE, eclipse по возможностям превосходит Keil. Кейловский компилятор вроде как лучше gcc, но какой смысл использовать его с эклипсом?
>>296682 >I2C приделан через дополнительную плату Знаю.
>Нужно было читать документацию Еужно. Потому, что я смог его запустить только от 16Мгц тактирования, на 72МГц дисплей не инициализируется. И хуй знает почему, хотя коэффициенты в функциях я менял.
>какие интерфейсы У акселерометра I2C - он MPU-6050. И когда я глянул проекты с ним, и как на комп снимать данные, я мягко говоря, охуел.
Вот и интересно, что дальше читать? Почему в примере с дисплеем биты двигают например? Как, какие и куда?
>>296704 >хотя коэффициенты в функциях я менял. Там два типа коэффициентов: 1) Для задания частоты I2C. 2) Для задержек самого дисплея. Если правильно выставляются заданные значения на выходе микросхемы I2C-GPIO, то первый тип коэффициентов установлен правильно. Для этой проверки хватит мультиметра или даже простого светодиода. Для проверки задержек второго типа потребуется осциллограф или логический анализатор, но можно просто внимательнее писать код. >Вот и интересно, что дальше читать? Только документацию. >Почему в примере с дисплеем биты двигают например? Как, какие и куда? Например, когда дисплей подключен по четырехбитному интерфейсу. Без схемы и кода можно только догадываться.
Если тебе непонятен какой-то код, то можешь дать на него ссылку, желательно со схемой.
>>187056 (OP) Что надо, чтобы прошить ARM проц от Atmel? Желательно любой. Понадобился мне двух-ядерный проц - надо записывать видео и звук одновременно. Но одноядерное говно не вывозит эту хрень.
>>297121 Атмел-микрочип ATSAM4C, два ядра Cortex®-M4(F). По моему процем можно назвать то у чего есть MMU. Разве у атмела-микрочипа есть такие двухъядерные?
>>297147 А документация на всю периферию полностью открыта или как в esp8266, где вроде бы до сих пор документация на DMA открыта лишь частично?
Насчет DMA, вот кусок из описания SPI Master драйвера: The spi_master driver allows easy communicating with SPI slave devices, even in a multithreaded environment. It fully transparently handles DMA transfers to read and write data and automatically takes care of multiplexing between different SPI slaves on the same master.
>>297152 Нет, просто не будут же тебе делать раздел о DMA, где будет описание отдельно для каждой периферии, логично, что его описание будет в разделе самой периферии.
>>297151 Это документация на API, а не микроконтроллер. Если брать тот же SPI, то можешь ли сказать на каких частотах входного сигнала гарантируется прием в режиме ведомого? >>297152 Вот этого удваиваю. >>297153 Это может быть логично только в документации на API. А если я захочу разгрузить DMA для чего-нибудь более критичного? Но документации то нет (возможно), соответственно никак не выйдет.
>>297156 >Какого хуя я должен все искать за тебя Потому что стал тыкать в API, который не имеет никакого отношения к вопросу >>297150 А мог бы просто сказать что в этот раз китайцы сразу открыли документацию на все кроме радиомодулей.
которая в свою очередь основана на инструментах из техаса (Texas Instruments Sitara)
Из годноты стоить отметить PRU-ICSS, два 32 битных 200Mhz встроенных risc ядра для кастомной переферии, только огорачает что 200Mhz хули так мало то блять
кто уже юзал? сколько светодиодов можно одновременно замигать?
>>297599 Нахер оно нужно? Все эти микро пк - тупиковая хуйня. Все эти малинки, апельсинки. Народ ставит туда дистры линуха, непонятно кем собранные, дабы с помощью GPIO мигать светодиодами и смывать бачок унитаза удаленно. Работать там нереально, если нужно что-то сложнее текстового редактора. Медиаплеер из этих девайсов тоже практически никакой.
ардуинщеги так и поступаю конечно, медиа плейир типа захуячить ашдимиай с андроидом или пидорой с дебианом, это нормально и охуительно, быдло спрос сбивает ценник на йобаштуки, китайцы с радостью штампуют всё что покупается, жаль что медленные атмеги всё ищо популярны, поэтому нужно гнобить ардуинщигов чтобы покупали йобоштуки и делать им всякие медиагавно проигриватели
я сам ядро сибираю для йобоштук, с реалтаймовыми расширениями и прочими ништяками, модули ядра у меня пока хуёво получаются, а вообще такие штуки норм когда нужно быстро блять, штука со спичечный коробок может одновременно держать тысячи соединений по https это охуенно же
бро, купи ещё одну, похуй что хуйня, можешь выкинуть нахуй или засунуть куда, просто купи они охуенны же, скочай пидору, там есть охуенные обои и медиаплейер
>>297599 Оверпрайс, как по мне. Понравился только тем, что у него есть немало HW интерфейсов.
>>297626 Ты использовал, или "не читал, но осуждаю"? Я вот использовал RPI1 и RPI3. Первый вкорячил в одну smart-home приблудину, которая написана на Python, кстати. Работает и нормально, хотя программа вышла тяжеловесной. GUI подтормаживал, конечно. А вот видео воспроизводит нормально через VLC. Медиаплееры пилили ещё на 1B и не жаловались. Аппаратное декодирование видео реализовано.
RPI3B уже работает очень здорово. Часто использую как UART терминал, или как I2C слэйв/мастер при работе с ARM-ами. Через Python в GUI, либо через терминальные программы. Понятное дело, что GPIO у RPI гораздо слабее, нежели у ARM. Это логично. Но у RPI есть SPI/(2)xI2C/(2)xUART, и есть GPIO, достаточный для управления с некритической точностью. GUI работает очень бодро. В третью кваку играл на максималках с FPS около 50. Ютубчик через браузер конечно в FullHD не покажет, но что можно хотеть за 35$? А дистров дохуя. Есть минимальные образы, где все пакеты сам сверху накидываешь, если так пичот от популярных дистров. Я же довольствуюсь Raspbian Lite.
>>297644 Для меня ардуино это вообще нонсенс. Единственная польза - огромное количество всевозможных датчиков и прочих приблуд, которые идут к ардуине.
>>297645 Ну смотри, если тебе надо заебашить разовому клиенту автоматизацию толчка. Есть вариант, сделать на твоем любимом МКнейм, потратив время на схему, изготовление и монтаж или взять, купить ардуину, купить расширения, написать код за денек (на си, не скетч) и получить деньги?
Не любил ардуину, пока не начал заваливаться из любительства в мелкосерийку. И заказчик рад, т.к. нет каких то уникальных частей, которые хуй найдешь если ты помрешь.
>>297599 >Из годноты стоить отметить PRU-ICSS, два 32 битных 200Mhz встроенных risc ядра для кастомной переферии Чем это лучше CPLD или пересылок DMA-GPIO? По моему всем хуже, бесполезная штука.
ну вообще в данном случае зависит от аргаизации шыны ну в данном случае реализация гавно конечо, но люди стремились сделость как можно лучше, щенок ибаный
>>297675 Еще раз спрашиваю, для чего нужно: >Из годноты стоить отметить PRU-ICSS, два 32 битных 200Mhz встроенных risc ядра для кастомной переферии Как пишет сам производитель, это сделано для мигания светодиодами. То есть для программной реализации разных интерфейсов. Но зачем? В простых случаях можно использовать DMA для пересылок между памятью и GPIO. Что-то более сложное целесообразнее делать на ПЛИС. С помощью мелкой CPLD можно мигать куда большим количеством светодиодов, причем еще и с большей частотой.
И этот ваш PRU-ICSS - шаг назад по сравнению с древними AT94K.
>>297692 >размер 5x5 см, 30$ где купить? Ты про https://beagleboard.org/pocket ? Но это же плата совсем без ничего, все равно придется к ней что-то припаивать. Причем плата OSD3358-SM-RED, на которой есть хоть какая-то периферия, стоит как аналогичная плата с Zynq. >должен сидеть на шине кортекса У большинства подобных процессоров есть шина для подключения параллельных флешек и SRAM. Можно устройства хоть на серии К155 вешать.
Кстати заметил что на digikey.com эту плату продают дешевле чем стоящий на ней OSD3358-512M-BSM.
>>297838 Нет, это максимум часть функций CPLD. С Zynq эти PRU сравнивать нет смысла, т.к. в самом простеньком Zynq есть 66 умножителей 25х18 разрядов, которые могут работать параллельно на частоте несколько сотен мегагерц. >Zynq насколько я знаю девборды в 100$ непомещаются Да, но это из-за того что для Zynq нет плат без ничего вообще, как >>297599 Но плата OSD3358-SM-RED на которой есть хоть какая-то периферия, стоит уже $200, так же как самые дешевые платы с Zynq, например http://store.digilentinc.com/zybo-zynq-7000-arm-fpga-soc-trainer-board/
Господa, подскaжите. Есть инструкция видa tst R1, R2 Где R2 = 0x1010 a для R1 три случaя 1. 0x1010 2. 0x1110 3. 0x1000
Кaкие флaги будут выстaвляться в результaте выполнения кaждого из случaев? Если есть кaкой-то онлaйн-эмулятор бaйтоёбствa, в котором можно нaблюдaть зa регистрaми было б ещё лучше. STM32F103C8T6
>>298248 http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0552a/BABIHJGA.html Эта инструкция выполняет поразрядное И, результат никуда не записывается. Флаг N устанавливается при отрицательном результате (старший бит - 1). Флаг Z устанавливается при нулевом результате. Флаг C может установиться только при использовании "Flexible second operand", которое у тебя не используется. Получается во всех случаях все флаги будут сброшены. Хотя может и ошибаюсь, давно не трогал ассемблер.
Онлайн эмуляторов не знаю, но все это неплохо симулируется в keil или IAR.
>>298303 Рассчитали в оном ещё 3 года назад. >>298313 Спасибо, я, в принципе сам разобрался. Меня беспокоил тот момент, что флаги, возможно, выставляются и при совпадении одного из битов. По факту же, успешными будут первые два случая, но при этом флаг Z будет сброшен, в третьем он будет выставлен. А я ставил переходы наоборот. Нашел это в книжке по ассемблеру х86, лол.
Аноны, как ебучий кеш тестировать? Всегда как-то в примерах он отключен был, а ща, в гитхабовской ветке Атмела, везде кеш прикручен, и у меня работает po pizde всё. Видимо, на кастомной плате оперативка не до конца верно настроена.
Алсо, Ваше, анонимусы, мнение о российских процах, особенно интересует Элкус и НИИЭТ.
>>299096 >С Элвисом случайно и спутал, бувае. Про Элвисы могу пояснить немного, благо на работе как раз используем один их старый процессор. Документация говно, несколько примеры на ассемблере, имеют "собственную" IDE с gccшными компиляторами. Вроде как сейчас отказались от собственной IDE и просто используют Eclipse с нескучными обоями. Ещё есть JTAG-дебагер, аж в двух исполнениях: LPT EPP и USB. USBшный с родной IDE так и не завёлся, LPTшный периодически вылетал, теряя связь с процом. Поэтому отладка более-менее возможна только с помощью их же консольной утилитки mdb. Хотя IDE все равно не нужны, настоящие кулхацкеры программируют в nano. В старых процессорах типа того, что мы используем ещё и не было третьего состояния для addr и data шин. Мне то похуй, а вот схемотехники ругались.
Короче после того, как мы перешли с TigerSHARCов и Blackfinов на элвисовские поделия, жить стало грустнее.
Есть такой вопрос. Имеется прошивка для проца Cortex M3. Надо в ней разобраться извлечь некотороые данные. В IDA кое как разобрался. Проблема в отыскании данных внутри прошивки. Например есть комманда LDR R1,=2000300 То есть когда проц запускатся в этой точке памяти хранится интересующая меня переменная. Однако вопрос -как отыскать ее в статической прошивке в iDA? Я так понимаю компилятор как-то размещает данные в прошивке в каком-то сегменте. Но как в этом сегменте отыскать?
>>299142 Старый Элвис на ваших кортексах? Там же житаг тоже купленный и, наверное, работающий. У нас использовали Миландровский ве1т, очень долго ебались ребята с и2с или spi, чем-то таким, оказалось, что проблема в ревизии была. Сырые они, слишком молодое производство, хотя у атмелов точно так же бывает. Сейчас прикрутили гсс с эклипсом к ве1т.
>>299185 С количеством ноликов ошибся, адрес вот такой LDR R2, =0x20000B9B >В самом начале это копируется в цикле Что то я такое предполагал. Но я думал,что все эти данные копируются одним блоком из одной точки памяти в другую. То есть из области flash в область RAM. А видимо для каждой объявляемой и инициализируемой переменной происходит отдельная операция записи. То есть видимо расположение данных в сегменте флеша не соответствет тому в каком порядке они будут в RAM.
>Либо можно считать ОЗУ с работающего устройства и добавить в секцию. Мне такая иде я приходила в голову. Я только не знаю точно как это сделать. Я предполагаю что например с Jlink'ом можно запустить какойто отладчик, но не знаю будет ли он работать не с соурсом,а с hex или bin
>>299242 Сам себе отвечу: HRTIM1 timer is made of a di gital kernel clocked at 144 MHz followed by delay lines. Delay lines with closed loop control guarantee a 217 ps resolution whatever the voltage, temperature or chip-to-chip manufacturing process deviation
>>299206 >Старый Элвис на ваших кортексах? Там же житаг тоже купленный и, наверное, работающий. Это у них последний проц с арм-ядром. До этого был MIPS пердолинг чем я по сей день и занимаюсь Вот буквально прямо сейчас, LPTшный jtag перестал определять процессор, просто вот С НИХУЯ. Ещё вчера вечером работал как надо. А мне нужно баг в программке найти, и вот хуй. Придётся сидеть и ждать, когда jtag внезапно начнёт снова работать ведь так уже было, лол.
>>299258 >LPTшный jtag перестал определять процессор, просто вот С НИХУЯ. Попробуй соединить корпус компьютера с землей платы. Мне это помогало для клона USB-Blaster. >на кастомной плате оперативка Какая оперативка? Отечественной SDRAM нормальных объемов вроде как нет, выходит статическая память?
>MIPS DSP в них не трогал? Мне интересны возможности DSP ядер в этих процессорах. Например декодер Витерби они с какой скоростью потянут?
Братаны, на руках случайно появился дев-кит с кортекс А9, как мне вкатиться в вашу парашу, до этого никогда не программировал МК. Знаю C++ с пар в универе.
>>299306 Зачем мне система команд? Ну изучу я это, угробив много времени, а потом окажется что оно и близко это не тянет. Мне нужно понять, стоит ли браться за изучение или целесообразнее продолжать все делать на воронежских ПЛИС.
Ты из какого НИИ им. тов. Подзалупкина вылез? Кому впёрлись твои расчёты когда у нас аппликашка календарика на мобиле загружает под 100% 4 ядра по 1.4Ггц просто красивенькими анимациями и полупрозрачными 3д переходами? Здесь другие ребята, анон, не стоит шутить про расчёты, это тебе не шиндоус 3.1, здесь абстрагируются по-крупному. Здесь пишут на языке богов, где любая сущность объект, где всё наследуется от всего, где просто хэллоуворлд может занимать тысячи строк кода и при внесении пары изменений в коде управлять заодно ядерным распадом в коллайдере, здесь шаблон погоняет кодогенерацией, здесь просто приложение с показом времени отжирает 2 гига оперативы на старте и занимает 500 мегабайт на диске. Тут используют Анриал Енджин только чтобы перемножать пару матриц в его математической библиотеке, здесь гарбадж коллектор трахают прямо в анус, создавая тысячи объектов в каждом кадре и не освобождая ручками ни один.
Забудь ты про свой найтивный код. Здесь совсем другая тема. Тут программируют совсем на другом уровне.
>>299319 я могу в байтоёбство, я работаю программистом-плис. >>299318 есть DS-5 Studio Altera Edition Я бы хотел накатить линукс, но почитав тред, понял, что анон советует сначала освоить bare-metal, понять структуру контроллера, а потом накатывать
привет, прошу помощи, с полного нуля(имея опыт, программирования, java,c) решил занятся этим делом и купил STM32F103C8T6, но гдето полгода бродил по различным сайтам в потугах хотябы лампочкой помигать, но раз за разом выполняя похожие действия ничего не получалось, я уже в отчаянии, может я просто не с того начал? подскажите что делать, мб есть статья на просторах иннета типо "как помигать лампочкой, пособие для аутистов"?
>>299791 пробовал прошивать в cocoox, iar, keil. и вроде все чудесно работало (ну в смысле подключение st-link -а видит)при прошивке ошибок никаких не выходило, а в конечном итоге ничего не происходит, скажу сразу, брал экзамплы, и если верить статьям экзамплы рабочие (залей и радуйся), я каким только светодиодом я мигать не пытался(ну всмысле и внешний подключал, и тот что на самой плате присутствует). короче диод на плате просто загарается при подключении питания, но не как не мигает.
Привет, Аноны! Мне мне нужно реализовать программную реализацию ликвидации дребезга контактов кнопки, подключенному к входу, по которому осуществляется прерывание. МК - STM32F407, использую HAL. Как это сделать? Я инициализировал таймер, настроил на 100 мс/прерывание. Дальше придумал вот что: Нажимаю кнопку -> идет прерывание по кнопке -> выполняю всё что нужно в обработчике прерываний и в конце включаю таймер и прерывания по нему и запрещаю прерывание по кнопке -> срабатывает прерывание по таймеру, разрешается прерывание по кнопке, выключается таймер и прерывание по этому же таймеру (спорный момент, так и не понял, как это реализовать, чтобы работало), потом происходит выход из функции обработчика прерывания -> ожидание нажатия кнопки.
Таймер хочу отключать после каждой обработки, чтобы он не смущал МК своими частыми ненужными прерываниями.
Но так ничего не работает. Вот кажется, что ошибка тупая, но в упор не вижу, но ничего не приходит в голову. Через HAL_NVIC_Dis(En)ableIRQ(TIM1_BRK_TIM9_IRQn); пробовал, тоже не получается.
>>299863 А что если реализовать по-другому? Если нажата кнопка, то запустить таймер и считать до 0.2 секунды например, если досчитал то сработало прерывание.
>>299863 Реализуется так же, как и для любых других МК: после срабатывания прерывания в переменной ставится флаг, что кнопка нажата, но не проверена и запускается таймер на 50-100мс, после которых проверяется, если кнопка все еще нажата - ставится флаг, что кнопка действительно нажата и выполняется действие.
флаг = 0
прерывание: флаг = 1 таймер = 0
таймер: если флаг == 1 и кнопка нажата и таймер >= 50 флаг = 2 таймер = 0 если флаг == 3 и кнопка НЕ нажата и таймер >= 50 флаг = 0 таймер = 0
Котаны, срочно нужна ваша помощь. Плата STM32F429I-DISC1 Когда подключаю к пека через порт USB-ST Link, всё работает замечательно. Но когда подключаю в розеку, программа не выполняется. Пробовал и свой код, и пример из Кейла, результат одинаков. Может надо переключить какую-то перемычку? Алсо, как правильно запитывать плату? То что я подключаю её в дебаггер для питания, это вообще правильно?
Кто знает как в HAL поморгать ws2812b используя связку дма+шим? В кубе включил четвертый таймер, выставил счёт до 90 без предделителя, это при частоте 72МГц получилось 800 кГц или 1,25 мкс, настроил шим выход на третий канал, подключил дма. В коде создал массив из 24 элементов uint32_t, пишу HAL_TIM_PWM_Start_DMA, в обработке прерывания дма ставлю остановку счета. По задумке первый диод должен загораться синим. В итоге нихуя. В дебаггере CCR3 таймера меняется, пятый канал дма работает. Где я мудак?
Хелп, гайз. Пытаюсь приклеить проект из CubeMX в EmBlocks 1.11, кое-как прилепил, в итоге сборка проходит без ошибок, а пересборка вываливает несколько несоответствий типов переменных. Сталкивался кто-нибудь? Офигел, кстати, от жирноты кода, генерируемого кубом, пустышка 30кило, когда в тех же условиях готовый семпл USB-HID от Raja весит около 24х. Пытаюсь хбох джой сделать, но местных правок дескрипторов в семпле Раджи недостаточно, а от попыток понять как сие инициализируется в базирующихся на MX 1,5 проектах мозги в трубочку сворачиваются.
>>300757 >EmBlocks Ни разу не трогал это. Но могу посоветовать попробовать тебе использовать мейкфайлы, генерируемые кубом. Или использовать https://github.com/ObKo/stm32-cmake
>>300782 Тащемта на бытовых МК никакой разницы маня, потому что uint8_t это переопределение типа unsigned char. Разница может быть только в системах, где char не является 8битным. А компилятор ругается, потому что ему положено, ведь язык Си со слабой типизацией и компилятору надо выплюнуть хотя бы ворнинг о том, что ты хуйню написал.
>>300800 Я всего-лишь присрал выхлоб куба к блоксу, а вы тут бучу подняли... Так-то итак понятно было, что типы разные, но вдруг это нормально. Раз уж в кубе такая хрень.
>>300789 >char - Contains at least the [0, 255] range c вики пытался скопировать и промахнулся? Это unsigned char. Он же uint8_t А char это -128 +127 на "at least" вообще насрать.
>>300949 >>300789 Вот открыл я стандарт C99 и ничего подобного не вижу: >An object declared as type char is large enough to store any member of the basic execution character set. If a member of the basic execution character set is stored in a char object, its value is guaranteed to be nonnegative. If any o ther character is stored in a char object, the resulting value is implementation-defined but shall be within the range of values that can be represented in that type. То есть возможная знаковость char-а определяется используемой кодировкой (исходников). А разрядность вообще нигде не прописана.
Но мне кажется что у того анона просто инклюдится что-то не то, тем более что это вылезает только при пересборке.
Кто-нибудь поднимал на мк usb хост для подключения к нему другого мк stm32 с запущенным на нём dfu? Не понимаю, что я делаю не так. Энумерация выполняется, но при попытке с хоста отправить какую-либо команду, дфу выставляет на шине stall, хотя вроде всё по их протоколу делаю.
>>300982 Нет, надо обратиться к услугам юриста, чтобы он растолковал что там за "аt least" и "large enough" в стандарте. Без этого даже не начинать код писать.
>>301035 >char - Contains at least the [0, 255] range Только это не из стандарта, а копипаста с лживой википедии. В стандарте ничего даже отдаленно похожего не написано.
Нужен WiFi мост (пушо WiFi уже есть по хате): что-то типа USB-UART переходника, чтобы команды и данные передавать с ПК на устройство и с устройства на ПК.
В навороченных 3D принтерах такая хуйня есть.
На чём можно запилить? Может какой WiFi модуль, вроде ESP8266 или похожий.
Как тяжело будет написать виндо-софт под это дело (аналог Putty для WiFi, например)?
>>301055 >аналог Putty для WiFi Ты придумываешь что-то странное. Putty и так умеет в telnet, ssh, rs-232. Может сделать ssh будет сложновато, но telnet сделать точно несложно. Ну и хватает готовых мостов uart-wifi и uart-ethernet.
>>301068 >Ты придумываешь что-то странное. Я просто не знаю, как реализовать то, что я хочу: а именно хотелось бы избавиться от проводов для своей приблуды. А то опять придётся лепить 232-ую микру.
>>301083 Хм, а вот это интерсная хуйня, первый раз слышу про нее. У меня есть парочка esp8266, у которых внутри какой-то экзотический core и писать под него ну его нах. Поэтому я планировал его использовать в AT mode, просто как UART. И подключать к STM32 так как пишу под него. А эта новая хуйня и есть STM32F4. Это же охуенно. Спасибо за линк. Весь вопрос - есть ли у них свой внутренний TCP стек как у ESP8266. Но должен быть.
>>301315 Ну я свои насущные проблемы +\- решил. Но есть несколько долгосрончых вопросов.
Запуск linux в приближенном к RTOS режиме или достойные RTOS на малину, с которыми не надо пердолится что бы запустить на всяких клонах малины.
Смогу ли я найти инфу в +\- разобранном виде по всяким серьезным интерфейсам (LVDS\NAND) линуксо библиотеки к ним? А то голые даташиты читать не охота, на это уйдет вечность.
Я начал ебать малину не ради смыва туалета с ПК, но планируется более серьезная задача, с которой самой по себе будет много ебли, добавлять уберпердоливание линукса, который я знаю почти не как - не очень охота.(тут имеется ввиду какие нибудь его глубокие ковыряния\пересборка\написание драйверов).
Зачем, у меня 3 отладки с ARM есть. А если серьезно, я не хочу растягивать на годы, а с ебля с своими драйверами на GPIO или еше что, я боюсь только этим и обернется.
>>301388 И какое же это гарантированное время? Как ты его посчитаешь? Как ты вообще сможешь гарантировать, что твой код выполнится за определенное время? Анонам в ЧПУ и 3Д тредах хватает времени реакции обычного виндовса. Ну будет у тебя под обычным линуксом время реакции не более 0,1 с с вероятностью 99,995%, тебе этого мало?
Привет, анон. STM32F429 (Discovery). Не могу понять, как рисовать на экране? Создаю массив с цветами для пикселей, оно один раз рисуется и всё. Когда изменяю массив, вызываю HAL_LTDC_Redraw - ничего не происходит.
>>301412 >Я двачер, я знаю, что тебе нужно больше тебя. Ну серьезно?
>И какое же это гарантированное время? Необходимо получить, обработать и переправить сигнал с интерфейса на интерфейс, за время не влияющее на время человеческой реакции. Т.е. наверно 10мс, м.б. меньше. Причем получать и обрабатывать надо в тысячу раз чаще, чем пересылать.
>>301433 > STM32F429 (Discovery) Мажор ебучий. Я только начал почитывать книги "Си на селе", "Программирование на Си в СССР", а он тут рисувать хочет. Да и вообще, этой йобы хватит ядерным реактором управлять.
>>301492 400мс время простейшей реакции. 100мс - замедление на 25%.
Какой нахуй 25 кадр? О чем ты вообще? Что твой мозг сам доводит их до беспрерывного движения ты не слыхал? А вставка картинок даже с 60 и больше герцами будет вполне себе заметна.
>100% не будет никогда. Ну давай еще в философию ударимся.
>Причем даже ардуина будет надежнее, хотя бы из-за меньшего количества деталей.
При этом тормознутее и реализация мульитзадачности отдельная ебля. А писать на CИ все что я хочу это вообще охуеешь.
>>301501 Ну мне на "работе" её дали. А хули, она же вроде на авито 1.5к стоит, не? >>301500 Там нет такого понятия как видеопамять, она общая. Но вообще да, как оказалось надо просто перерисовывать прямо тот массив по-пиксельно (но видимо ещё мемкопи работает хуйпойми как на этой железке). А вообще как мне подсказали, там у DMA есть функция сдвига массива.
>>301777 > просто перерисовывать прямо тот массив по-пиксельно Да ты ебанись. Там целая либа есть с рисовалками линий, кругов, квадратов, заливкой, прозрачностью, слоями, окнами, кнопками, графиками. > буду рисовать массив попиксельно Больной ублюдок
>>301780 Мне вот интересно, как ты битмапы этой либой собрался рисовать, тем более в реалтайме. >>301779 Ну в ChromeArt есть функция аппаратного скролла. Что тебе не нравится?
Реквестирую помощь с иаром, двач. На атмеловских либах проект РЕДКО улетает в software_fault_handler(), стек вызовов пустой, точнее, только этот хендлер содержит. Как правильно найти функцию, из которой эксепшон вылетел?
Аноны, посоветуйте, пожалуйста, интересную книгу для изучения STM32. Библиотека - HAL. Мануалы как-то тяжковато идут. Хотелось бы сначала чего-нибудь попроще, а потом и за мануалы взяться. Язык английский/русский, без разницы.
>>302247 narod stream иногда ересь полную гонит - я ему пару замечаний уже писал по поводу или явных ошибоки, или бессмыслицы. Но там дядька адекватный, в залупу не лезет
>>300757 Проект прилепил, три минимальных правки на дескрипторы и посылку данных сделал - контроллер инициализируется, но выпадает в hardfaul при отправке нужной строки. Пересоздал на всякий случай - один хер падает. Плюнул, перенёс https://github.com/alextrof94/STM32_CUBE_HAL_TRUESTUDIO_HID_XInput со всеми потрохами, собираю, запихиваю - да ёб её в рот, и тут зависон! Что я делаю не так? Перенос проще некуда - ручное указывание папок с инклудами, девайн контроллёра и использование сгенерированого кубиком .ld файла.
>>302247 >>302260 >>302288 Спасибо, Аноны. Narodstream знаю, пользуюсь им. Но я не люблю смотреть видеогайды, а статьи у него достаточно сумбурные. В общем, он мне понравился, но я хотел чего-то подобного, но получше. За книгу спасибо! Очень классная!
сап радиач! Осваиваюсь с stm32f105, наигравшись с более младшими моделями типо f072, 103 и т.п. Столкнулся с проблемой заливки прошивки через STM'овский бутлодырь по UART. Вроде как отличия от младших мк от ст в общем то и нету, стандартно: 1. BOOT0 на VDD 2. Reset 3. Льем прошивку посредством Demonstrator через USB-TTL. Да вот не тут то было... Demonstrator на отрез отказывается видеть МК. Пробовал различные скорости, менял таймауты, пропаивал контакты, пробовал другой адаптер USB-TTL. НИХУЯ. При этом, данный мк ДО заливки и отладки основной программы, на этой же самой макетке определялся без труда. На аналогичном камне, та же ситуация. До прошивки основной программы(через SWD, среда KEIL5, CUBEMX, ULINK2) он определялся, после работает только через отладчик, через бутлодырь не видится. В даташитах читал, что для работы DFU, прошивка через USB, CAN на Connectivity line МК тактируется от внешенго кварца, и он должен быть на 8 либо 25 Мгц, при загрузке по уарт тактируется от внутреннего на 8, я уже от безвыходки и тот и другой попробовал, результат: ничего. Каким хуем это происходит?! Возможно ли, что при работе через SWD бутлодер затерся? Или же проблема в том что в основной программе тактируюсь я от HSE 12МГц, и UART от PLL?
Есть тут те, кто сталкивался с SMBus протоколом на STM32 или вообще? Я делал связь между двумя STM по I2C, но там есть некоторые проблемы, с блокировкой шины слейвом, решил попробовать SMBus из-за наличия таймаута в режиме прерываний, по которому сбрасывается соединение + PEC и ALERT. Для мастера был пример и там впринципе все довольно просто (вызовы приема и передачи, как у I2C), но для слейва примера нету и вариант приема/передачи, как на I2C не работает: после подтверждения слейвом адреса он удерживает SCK до таймаута.
>>303833 >внешенго кварца, и он должен быть на 8 либо 25 Мгц, при загрузке по уарт тактируется от внутреннего на 8 Я понял не так. Делается попытка включить HSE, если включается то определяется относительно HSI к какой из стандартных частот ближе частота кварца. Если кварца нет, то загрузчик сначала подстраивает скорость UART по минимуму ошибок и только потом выдает готовность. BOOT1 не забыл подключить?
>>303954 Сейчас отпаял кварц, залил проект из CUBEMX с мигалкой, где тактирование от HSI. BOOT1 нога PB2 припаяна к земле. Мигалка работает, делаю ресет зажимаю BOOT0, мигать прекращает. Парралельно смотрю в ком порт адаптера usb-ttl туда ничего не приходит.
>>303955 >туда ничего не приходит. С чего бы должно что-то приходить пока оно не подстроит скорость? А скорость оно не подстроит пока не отправишь какую-то комбинацию достаточное количество раз. Как вариант можно не ресет жать, а питание передергивать. Я только так и делал (но не с STM32), потому что кнопки на ресете не было.
>>303959 на 115200 подключился через putty, просто по клаве постучал, в ответ приходит всякий мусор. Попробовал на разных скоростях подключиться через Demonstrator ничего не вышло..
>>303969 Уже блять реально всё перепробовал. Если uart1 проинициализировать сообщения отправляются и принимеются. Уже реально всё варианты перепробовал.
>>303833 Была как-то проблема с бутлоадером через usb. Он при перезагрузке перебирает интерфейсы по-очереди, поэтому проверь входные линии остальных возможных интерфейсов, они должны быть подтянуты.
>>304121 Проблема решались. Макетку я питал от того же самого usb-ttl. Попробовал запитать отдельно с БП, от переходника только RX TX подключил, все определилось и заработало.
void TIM4_IRQHandler(void) { TIM4->SR &= ~TIM_SR_UIF; GPIOA->ODR=GPIO_ODR_ODR3 & ~(GPIOA->IDR & GPIO_IDR_IDR3); return; Проблема в том, что ожидаю интервал между прерываниями в 768 тактов (16мксек, 48МГц/62500Гц), а получаю невменяемую хуйню. Где я проебался? Второй пик прямо на 0сек.
Ананасы, тихо вкатываюсь в STM32, и сразу оно меня пытается наебать.
Простейшая хуйня без HAL - работает, всё кристально понятно. Беру рантайм либы для 32F429 discovery, хочу ПРОСТО ПОДКЛЮЧИТЬ дисплей по SPI.
Оно вместе с дисплеем тянет кучу всякого говна, включая SPI (логично), DMA, DMA2D, RTOS и кучу прочей хуйни.
После добавления всего-всего попытка собрать проект, и сразу - хуй.
Получаю три десятка ошибок RTE\Graphics_Display\STM32F429ZITx\LCDConf.c(556): error: #20: identifier "LTDC_PIXEL_FORMAT_ARGB4444" is undefined Причина - дисплей опирается на либу LTDC (пикрил), которая подключена, в проекте файл есть (пикрил 2), определения констант там есть, толку - нет.
Что за хуйня. препятствующая вкатыванию? Это кривой HAL или мои кривые руки?
Отлично, нашел файл .h конфигурации HAL, там закомменчены модули DMA2D, LTDC и еще пару, несмотря на то, что в енвайронменте они есть.
Ок, раскомментил. Новая ошибка двойного определения обработчика прерывания систик, охуенно! Одна - в сгенерированной CubeMX рыбе, а вторая - в недрах библиотек.
Закомментил, закомментил, скомпилировался пустой проект. Залил - не работает нихуя, даже помигать светодиодом, лол. Порты, помеченные как output в CubeMX таковыми не являются, например. Потер тестовый проект, ушел спать. Нахуй такое говнокодие?
>>305571 >Это кривой HAL или мои кривые руки? На счет HAL не знаю, т.к. не пробовал. Но сейчас проблемы явно не в нем, а с руками. >в проекте файл есть (пикрил 2) Что-то я никакого файла не вижу. Это на кейловский device pack похоже. Проблема может быть из-за того что в этом девайс паке старая версия библиотеки, либо этот девайс пак неправильно работает или он просто не рассчитан на использование с кубом. По моему кейловский девайс пак нельзя использовать вместе с кубом, хотя бы потому что могут не совпадать версии.
Если бы ты пользовался CMake или просто make, то таких проблем точно не было бы.
Это конфигурация процессора через RTE_Device.h, где руками правишь конфигурацию периферии. Настраивать GPIO и таймеры там нельзя, но остальное - можно.
Как запустил - выяснил, что приложение падает в переполнение стека (дебаггер это хорошо), и скопировал RTE_Device.h с примера. Разницы между ними я не очень то нашел, но блядь заработало.
Будь в шоке и дальше, но на сюда я пришел из божественно простого avrasm и avrc, из леса понятных даташитов, без пердуинских библиотек.
А в среде стм32 мне немного неприятно.
Но это не по теме. Инициализация дисплея проходит, он чернеет, и дальше - нихуя.
Установка цвета, вывод текста - не происходит ничего.
Ладно, перекидываю все исходники из примера в свой проект, включая мейн.с
И... Нет отображения на дисплее.
Как так то?
В ходе экспериментов выяснил, что мой проект компилируется и линкуется любым компилятором, в т.ч. и GCC11, а пример, который работает, НЕ линкуется в gcc11 с таким матюком: .\Output\Example.axf: Error: L6242E: Cannot link object __gui_sprite.o__ as its attributes are incompatible with the image attributes.
Тихонько подозреваю что у меня все функции гуишной библиотеки заглушены.
>>305607 Вот это что означает? Да, сначала скачал, потом крякал.
>>305571 >>305675 Ояебу, у самого где-то пылится 429я в блистере, никогда не возникало с ней проблем при использовании куба+кейла. Дисплей как по FSMC так и по SPI работал без проблем с HAL либами, подключал к ней разные камеры по DCMI - тоже никаких проблем, а DMA так это вообще дар божий после 8-битных AVR. Но я в итоге заказал у китайцев кучу разных F0 и F1 20/48/64 и пару 100-ногих , потому что оригинальные платы обвешаны дисплеями и датчиками, которые в большинстве ситуаций нахуй не нужны и проще их на проводках цеплять.
>>305682 >файлов RHE? Где ты их увидел? >кейлокомпилятора >>305670 У них вроде как нет своего компилятора для армов. Хотя возможно какое-то участие в разработке armcc они принимают.
>>305709 RTE, прошу прощения. К примеру, здесь есть >>305626 Аттачится к любому проекту. >The Run-Time Environment (RTE) in MDK Version 5 enables you to use validated Software Components in your project. Я так и не смог понять, зачем мне этот рантайм.
>>305714 Это хорошо, но все равно непонятно кто именно теперь разрабатывает этот компилятор. Так то armcc можно скачать с arm.com отдельно от кейла.
>>305719 Это потому что >>305678 Так-то у них на сайте и в справке все это расписано. >Software Packs may be added any time to MDK-Core or DS-MDK making new device support and middleware updates independent from the toolchain. They contain device support, CMSIS libraries, middleware, board support, code templates, and example projects. И когда ты выбираешь в кейле свой микроконтроллер, автоматически подключается этот пак, как видно на твоих скриншотах. Наверное единственный способ не использовать этот пак, это http://www2.keil.com/mdk5/legacy либо использовать armcc отдельно от кейла. Тебе в: >либу LTDC (пикрил), которая подключена, в проекте файл есть (пикрил 2) ничего странным не показалось? Почему это библиотека вдруг подключается одной галочкой?
>>305737 Теперь arm == keil, у них даже в логотипах на сайте "arm" одинаковым шрифтом написано, ведь arm поглотил keil и сделал свой компилятор официальным для него со всей вытекающей поддержкой.
Спасибо, анончик, с паками и либами на меня более-менее снизошло просветление, разобрался.
Основная проблема вкатывания (а я только вкатываюсь) в STM32 это, сука, три разных подхода к написанию всего. Первые пишут в Standart Perefireal Library, и не пишут, что подход устарел, и даже повторить за ними какой-то пердолинг сегодня невозможно, ибо SPL уже не входит в стандартный пак.
Другие говорят HAL - говно, не предлагая ничего взамен, дрыгают регистрами.
Третьи запускают CubeMX, тыкают мышкой, не публику при этом даже исходников.
>>305853 > Первые пишут в Standart Perefireal Library, и не пишут, что подход устарел Моё мнение, надо выбрать один подход. Но если ты работаешь с Кубом, будь готов дёргать регистрами, ибо прерывания надо писать короткими, а не как в HAL-е. Если же быстродействие тебе не нужно, и всё, что ты делаешь -- термостатируешь чайники, тогда бога ради, HAL -- это твоё всё. Быстро и удобно. Моя практика показывает, что в более-менее серьёзных проектах приходится бороться за время выполнения, а значит придётся оптимизировать, т.е. отказываться от лишних абстракций в виде HALа, и даже SPLя, как ни странно.
>>305872 >отказываться от лишних абстракций в виде HALа, и даже SPLя, как ни странно Я тебе больше скажу, чтобы понизить частоту с 24 до 16 МГц, при этом уверенно ловить событие, мне пришлось банальный опрос внешнего порта переписать на ассемблере. Такой пердолинг нужен не каждому. Мне был нужен, дабы снизить потребление контроллера. Был вариант использовать NVIC и EXTI, чтобы ловить событие, но тогда, во первых, снизить частоту с 48 (максимума) удалось только до 24... Во вторых, при одной и той же частоте, программный опрос без использования NVIC и EXTI оказался энергетически эффективнее, потребление контроллера что-то в районе 3мА на фоне 5мА (при включенных NVIC EXTI).
Накатил lwip, хочу сделать нормальную отправку json браузеру. Как это сделать, не меняя http_server.c? Разработчики сделали ssi, но это какое-то говно. Собираюсь передавать статусы устройств.
Народ, есть ли у использования realloc какие-либо нюансы? Маллок отрабатывает нормально до конца кучи, реаллок же выделяет пока мк в хардфолт не свалится.
>>306851 >Народ, есть ли у использования realloc какие-либо нюансы? Маллок отрабатывает нормально до конца кучи, реаллок же выделяет пока мк в хардфолт не свалится. > >Кейл 5, стм32,
Расскажи ка мне, нахуя тебе там понадобилась динамическая память?
>>307051 >Обработка ответов по юарту. Есть идеи получше? Вообще, динамическая память, это плохой тон, ибо ресурсов отжирает кучу. Если у тебя не стоит более-менее нормальной ОСи, то в этом нет никакого смысла. Вангую, что у тебя не выше STM32F4xx, а значит и нормальной оси у тебя нет. Размещай буфер статически такого размера, чтобы тебе хватало. Всё равно у тебя длина ответа не произвольная.
>>307051 Фрагментации кучи не боишься? Вроде как любой аллокатор не может гарантировать что память со временем не фрагментируется полностью. >Есть идеи получше? Без понятия что за ответы тебе нужно обрабатывать, но наверняка можно обойтись каким-нибудь FIFO или стеком.
>>307086 >не выше STM32F4xx, а значит и нормальной оси у тебя нет. А на F7 значит есть? Там MMU есть что ли?
>>307086 >Всё равно у тебя длина ответа не произвольная На некоторые команды я имею примерное представление о длине ответа. Некоторые команды выдают списки зависимого от внешних условий количества строк. И ещё ответ, у которого в начале прописана длина входящих данных, может выпасть в любое время после инициализации. >>307089 >Фрагментации кучи не боишься? Подолгу там залёживаться не будет ничего, запросил, получил кучку строк, вывел на экран, юзер выбрал одну, сформировал из неё запрос и очистил всё сразу.
>>307089 >А на F7 значит есть? Там MMU есть что ли? На самом деле, вроде даже на 373 можно линух накатить (могу ошибаться), но на 4xx -- точно, у них уже имеется контроллер внешней памяти (а-ля твой MMU), встраивающий её адресно "внутрь" системы, что позволяет процессору не думать, что он работает с внешней памятью. Отсюда появляется возможность понавесить там туеву хучу оперативки и не заморачиваться с её выделением. Соответственно и какой-никакой бизибокс поставить, с менеджером памяти, планировщиком и куртизанками. >>307112 >ответ, у которого в начале прописана длина входящих данных, может выпасть в любое время после инициализации. Я вот что тебе скажу про передачу данных. TCP/IP придуман давно и не зря, так же как и RS-232. Я это к чему веду: длина пакета ограничена и не может превышать некоторого значения (это из TCP/IP), а так же существуют методы уведомления вашего собеседника о готовности к принятию новых данных (это от RS-232). Таким образом, всё же известна некоторая максимальная длина пакета. Вот её и надо статически выделить и использовать. Тебе товарищ выше про фрагментацию кучи всё правильно сказал... Даже если ты программируешь в реальной "ПИсюковой" системе, за такими делами лучше следить. Касательно "над UART" системой обмена сообщениями: ты сам определяешь протокол, или кто-то его за тебя определил. Невозможно не ограничивать размер сообщения практически, только теоретически. Поэтому проблема высосана из пальца. Задавай вопросы, аргументируй, спорь, если не всё понятно, я буду рад тебе помочь, Бро! Люблю людей ДУМАЮЩИХ!
>у них уже имеется контроллер внешней памяти (а-ля твой MMU) Ты все перепутал. 1) У STM32 (и других) контроллер внешней памяти есть почти во всех сериях, но только для многоногих (от 100 выводов) корпусов. Только со SDRAM они работают начиная с F4, но ничего не мешает приделать PSRAM хоть к стоногому STM32F103 и запускать там uclinux. 2) MMU не имеет никакого отношения к контроллеру внешней памяти. Это для организации виртуальной памяти, без которой нормальный линукс не работает. Почитай хотя бы википедию. 3) Хотя через контроллер внешней статической памяти можно цеплять память, чаще его используют для взаимодействия с периферией, например с дисплеем или ПЛИС.
>>307166 Отвечающее устройство - стороннего производства. RTS/CTS у него при должном подходе заводится, так что подумаю, как это можно использовать если вышестоящие согласятся использовать в проектах более чем 3 ноги, конечно, это разом решит чуть ли не половину проблем. Тут даже не в длине дело. При большом желании девайс может засрать всю память мк и не пукнуть. Я бы с радостью не использовал аллокейт, но в моих знаниях дыра, а аллокейт предоставляет довольно простой метод выдачи массивов под строки без возни с десятком указателей за присест. Если выделить статику под 5 строк максимальной длины - выйдет 10кб памяти, которая будет пустовать большую часть времени, при этом под случай с выдачей 20 относительно коротких строк он на подходит. Если же готовиться к 20 строкам - это, простите, уже 40 килобайт просранного места, к тому же, столько не будет в мк. Можно, конечно, парсить прямо в FIFO-буфере, отдавая указатели сторонним функциям, но тогда придется следить, чтоб сверху чего не прилетело. Так что я дунно, подвязываешь в одном месте - коптишь в другом. Пара советов были бы хороши, конечно.
>>307264 >Если выделить статику под 5 строк максимальной длины - выйдет 10кб памяти Ничоси! Это до 2048 символов в каждой строке??? С трудом представляю нахера такое кому-то надо (и, самое главное, нахера так убого сделано).
>>307318 >я все больше склоняюсь к применению управления потоком Но вот что я тебе скажу. Скорость по UART вероятно небольшая, и тебе, вероятно, надо не всю строку? Если так -- можно DMA и кольцевой буфер с обработкой по мере заполнения, либо вообще налету обрабатывать прерываниями, но это не так красиво.
Всем здравия! Вопрос такой: кто-нибудь делал временную синхронизацию с помощью GPS приемника и Raspberry? То есть используя сообщения NMEA и интерфейс PPS. Суть в том, что я не смог найти информацию будет ли данная синхронизация (например с помощью ntpd) мешать записи самих сырых данных с приемника с помощью например RTKLIB?
>>307710 Если в Raspberry есть два UART, то почему бы не соединить их входы вместе? Если UART один, то наверное можно через socat, но это вопрос наверное для /s/.
>>307712 Там просто от приемника идет только один USB провод. Слушай, что-то я совсем туплю сегодня. Можно же обычный разветвитель поставить. Приказать ntpd использовать данные с USB1, а через разветвитель подавать сигналы приемника на USB2 и с него записывать на флеш-накопитель.
Пф.. Что-то совсем от постоянного переедания мозги не работают. Спасибо анон.
Приветствую Армчан!) Чуть разобрался с таймерами STM32F030F4, pwm работает, но хочется большего. Можно без участия ядра застабилизировать частоту вращения допустим кулера получая от него период вращения с тахометра (1 или 2 имп на оборот) ? И если да, то усложнить - когда на переключении тахометра по фронтам и спадам висит борода?
>>308480 >без участия ядра застабилизировать частоту вращения допустим кулера Нет. Допустим один таймер в режиме ШИМ-выход формирует заполнение для питания, а другой в режиме PWM-input или CC-input, замеряет период вращения. То процессор, всё равно должен читать со входного таймера и корректировать выходной. Можно оптимизировать, обрабатывая это дело в прерывании по Update, а RepetitionCounter сделать таким, как вздумается, чтобы Update происходил не каждый Reset...
Со стороны контроллера тебе понадобится в зависимости от интерфейса дисплея GPIO с таймером / i2c / FSMC или как там его, LED модуль есть какой-то на старших чипах.
Главное - очень внимательно прочитать доку на дисплей, особенно пример конфигурации. По опыту, большая часть проблем - от криво прочитанного описания интерфейса. Перепутана модель, подтип 8080, неправильное питание - вот это все.
>>308765 К такой плате надо отдельно отладчик покупать. А вообще правильно говорили про нуклео, за примерно 2,2к берешь почти топовый камень без лишней обвязки, только кварц, сетка и юсб.
>>308767 Когда-нибудь отдельный отладчик все равно понадобится, а пользоваться отломанным от той платы ст-линком без корпуса по моему неудобно. Тем более китайский J-Link стоит недорого и поддерживает не только стм.
>>308765 Там шаг между выводами вроде бы 2 мм, а не 2,54 — очень неудобно будет.
Использую под линупсом arm-none-eabi и openocd. GDB выполняет step/next хуеву тьму времени (несколько секунд иногда), при этом в IAR такой хуйни на том же камне с тем же отладчиком не наблюдал. Если в gdb ставить брейк на следующую строку или просто переходить к строке с указанным номером (> u 42 например), то выполняется быстро. Ещё при step или next я вижу как openocd выводит значение PC при его каждом изменении. Гуглить не помогло, нашел только на форуме без ответа тред с такой же проблемой. Что я делаю не так, как ускорить отладку? Заёбывает ждать по полчаса.
сап, раданы, такой вопрос, удалось организовать обмен данными между ПК и stm32 посредством создания виртуального последовательного порта на базе USB (USB CDC Virtual com port).
Какой самый простой способ организовать такой же обмен данными, но на базе ethernet, т.е. по витой паре? В дальнейшем допились обработчик и делать что-то при получении каких то команд. Плата Nucleo-F767ZI, rj45 на борту.
>>309284 Самый простой способ это слать фреймы с собственным произвольным форматом. На компе для приема/передачи таких пакетов можно использовать pcap.
>>309284 Для начала тебе понадобиться сетевой стек. Под контроллеры довольно популярные uip и lwip. lwip мне нравится больше, под него есть годная документация и примеры, а также форум с баг-трекером и вопросами, очень выручал в свое время. Также у ST есть апноты с использованием lwip в разных режимах, типа TCP-серврер, TFTP и т.д.
Если хочешь обмениваться простыми сообщениями с ПК, то на контроллере подними TCP-сервер, на ПК сделай клиент на удобном ЯПе, подключайся к контроллеру и шли на него свои пакеты.
Сразу хочу предупредить про алгоритм Нейгла. Это такая штука, которая повышает КПД работы сети. Для этого она ждет пока накопится некоторое количество данных на передачу и только потом передает. То есть если твои пакеты будут мелкого размера, то они: а) не будут отправляться сразу; б) когда отправятся, они будут склеены в один большой пакет. Поэтому иногда его надо будет вырубать.
>>309303 Значит таки сервер поднять придется, хорошо, и да, я тоже смотрел в сторону LWIP. Отдельное спасибо за напоминания алгоритма Нейгла, для моих задач как раз принципиальна моментальная реакция МК на получаемые с ПК команд. Команды как правило не более 20 символов. Мог бы ты анончик, написать мне в телегу @krounis, дабы я не плодил треды и вопросы в дальнейшем?
>>309315 Для таких требований, кстати, лучше подходит USB hid. У него в отличие от CDC гарантированное время отклика, т.к. он работает на interrupt фреймах, при размере пакета от 32 байт - на USB fs
так блять кто сказал алгоритм Нейгла? это ёбаная хуета кототорую нужно постоянно отключать опцией nodelay? Нахуй это нужно применительно к микроконтролерам?
>>309324 согласен, но мне нужна передача именно по витой паре, т.к. пк и устройство на мк может находиться достаточно далеко друг от друга, USB такую длину не выдержит
>>308765 > в чем-то подвох? «2.0mm header pitch» Заебёшься искать подходящие ответные разъёмы. Плюс вставлять/вытаскивать их надо аккуратно — из-за трения оно получается очень тугое и можно легко ножки погнуть.
Есть Orange pi zero на armbian, я к нему прицепил дисплей на чипе ili9325, инициализировал и в терминальном режиме все работает как надо. Но мне нужно выводить на него изображения. Можно использовать утилиту fbi: sudo fbi -d /dev/fb8 -T 1 -noverbose -a 1-img.jpg А можно писать во фреймбуфер напрямую: tail --bytes 153600 img.565 > /dev/fb8 только картинка должна быть 16-битной и в формате RGB565. Но с цветами какая-то проблема, будто половина их съедается. Может проблема в битности, никто не знает? Второй пик для сравнения с оригиналом.
>>305872 А что насчёт libopencm3? Выглядит на первый взгляд неплохо -- нет монструозных обработчиков с опросами регистров, кучи обёрток и прочих прелестей hal'а, там вроде даже и обработчики прерываний самому писать придётся. Но при этом функций для работы с периферией достаточно. Чем-то на spl старый похоже, по-моему. Мне пока не доводилось использовать.
Почему передача по spi/qspi (на остальных не проверял) может завершиться с ошибкой dma, если код исполняется из sram? То же самое из внутренней флешки работает, а если линковать на ram, копировать туда при старте и исполняться оттуда, то в какой-то момент hal дёргает errorCallback, а в коде ошибки стоит ошибка dma. В документации ничего такого не нашёл касательно использования dma при выполнении из оперативки, что я не так делаю? Проц stm32f7.
>>187056 (OP) Начал ваять ЙОБУ на стм32а429 и ожидаемо обосрался. Подрубил SDRAM, LCD RGB666, собрался подрубать Ethernet, а тут вылезли конфликты пинов. Даже в RMII-режиме TX_EN либо конфликтует с В3-дисплея, либо с шиной данных SDRAM. Шо делать-тоооо?
>>309808 >Шо делать-тоооо? Пробуй разрешить конфликты, используй STM32CubeMX. Если не удаётся разрешить в выбранном корпусе -- бери корпус с бОльшим количеством ног.
>>309818 >с бОльшим количеством ног. Уже допер. 429ZIT уже лежит в коробке, а с большими ногами покупать надо. Захуярю пробу без Ethernet, подрублю ESP для сети. Следующую полоумную избу буду делать на более многоногом.
Аноны, кто-нибудь использует плюсы на микроконтроллерах? Почему-то часто слышал, что это не тру и вообще смерть мерзкая от них, а тут наткнулся на статью на embedded.com, там автор поясняет, что плюсов от плюсов больше, чем минусов, и вообще большую часть минусов можно обойти.
ST для части своих железок предоставляет X-CUBE-* пакеты; их принципиально возможно подцепить к STMCubeMX (чтобы хотя бы Middlewares можно было галкой включать) или все нужно руками рассовывать по проекту?
>>309838 Да я просто сидел на пропёрженной кафедре и писал простое говно под совсем простые мк, а сейчас ушёл в другое место, а тут и железки другие, и задачи другие, а я блять как только что с пальмы слез.
>>187056 (OP) Снова мудило с полоумной избой выходит на связь. Нашел два стула: 1. 180Махов, 176 пинов, 2Мб флеша 2. 216Махов, 208 пинов, но с 1Мб флеш ?
>>310042 >тебе такая частота для избы? RTOS шоб быстрый был. Есть еще материнка древнего промкомпа с РС/104, думаю может не ебать моск и на нем собрать. Спаять только дочерние платки, изучить х86 ASM + С++ и ну его нахуй эти контроллеры.
>>310045 Тебе для умного дома вайфик или блутус не нужен будет? Наверняка нужен будет. Почему не выбрал esp какой-нибудь новый? Там вроде весьма мощный камень, памяти на борту достаточно и прямо в чипе wifi и Bluetooth трансиверы. В библиотеках стек протоколов реализован даже, только там закрыто всё, как я понял.
>>310046 >Там вроде весьма мощный камень Мне нужен LCD-контроллер для управления 7" дисплеем + тачскрином. Вайфик и блютус даром не надь. Мне его главное к свитчу домовой сети подрубить.
Сап, Анон, есть ESP8266 Нужно прицепить к нему 3 rgb светодиода, без внешнего блока питания. Напряжение максимум 5V (вообще 3,7 от аккумулятора, ну да пофиг, плата под всё это будет напечатана, но не сильно больше esp по размерам. Так что контроллерами напряжения можно обмазаться). Какие светодиоды брать и как подключать?
Анон, срочно. Я прошу прощения, что забиваю тред таким мусором, просто обстоятельства на меня давят как стенки влагалища на головку младенца. Нужно сделать себе на коленке примитивный девайс, который будет играть роль ответной части при общении по эзернету через udp. То есть, я этот девайс подключаю к пекарне и оно может коннектиться и читать/писать в udp сокеты. Заскочил в магаз, взял NUCLEO-F746ZG. Я мог бы это сделать на ПЛИС, ибо есть какой-то милипиздрический опыт работы с LwIP под микроблейзом. Но разница в цене в 10+ раз. В общем, сейчас у меня есть F746ZG и ноут с xubuntu. Все это люто интересно, но сейчас просто нету времени на эксперементы. Какой путь наикратчайший?
Привет, аноны. Я тут пытаюсь подключить дисплей с параллельным интерфейсом к Orange Pi. Но что-то мануалов я не нашел. Реально ли написать драйвер для дисплея самому? В электронике не сильно понимаю, поэтому задаю такие вопросы. На пике распиновка дисплея, достаточно ли будет задействовать 8 пинов зеленого цвета и clk (питание и земля учитываетс, само собой) чтобы залить экран зеленым цветом с помощью небольшой программы на c?
>>310436 >достаточно ли будет NYET. Нужно будет задействовать цвета в режимах RGB 888 или 666 или 565, Vsync, Hsync, DOT_Clock, DE. Для попроще купи дисплей со встроенным контроллером.
>>310452 Есть дисплей на ili9325, он работает хорошо потому что под него были драйвера fbtft, но он маленький. Купил этот, думал раз интерфейс DPI, то он проще должен быть чем SPI. Но тут я обосрался. Я вообще думал что чтобы закрасить экран одним цветом, зеленым например, нужно на пины G отправить единицы, на R и B нули. Отправить кратковременную единицу на CLK и в этот момент данные с пинов цветов должны считаться и закрасить первый пиксель в зеленый цвет. А потом просто повторить эту операцию 480x272 раз. Я совсем далек от истины, да?
>>310453 > да? Да. Там идет последовательность считывания данных с RGB. Типа для 565 R3 R4 R5 R6 R7 G2 G3 G4.... ну ты понел. Плюс еще сколько-то строк пропускается сверху и снизу, и сколько-то пикселей пропускается справа и слева от кадра. Короче нужно читать даташит на дисплей. Я кстати такой-же жду, буду подрубать к STM32F429IIT. Там проще.
>>310966 Изучи ардуино библиотеки, там встречается много ооп, на крестах. А вообще, ооп на мк - зло, код раздувается и жрет много флеша, хотя в случае с стм32 - похуй, там и так флеша десятки-сотни кб, а то и несколько мб.
>>310966 Какие именно концепции ООП ты имеешь в виду? И какие микроконтроллеры? Маленькие или большие? Если маленькие, то лучше C.
Алсо, полезно понимать, что "использование объектов и подходов ООП" != "ООП и кресты". ООП можно делать на любом языке абсолютно. Просто некоторые для этого больше подходят.
Алсо, поинтересуйся, почему ядро Linux это очень большая и сложная программа написано на C. И что сказал Линус Торвальдс, когда кто-то предложил ему делать это на крестах.
>>310972 >Алсо, поинтересуйся, почему ядро Linux это очень большая и сложная программа написано на C.
Потому что кривое говно, с насранной поверх него плеядой катях поменьше. Когда 15 лет стабильно ноудрайверс нихуя не работает и нужно танцы с бубном - это диагноз.
> И что сказал Линус Торвальдс, когда кто-то предложил ему делать это на крестах.
Это когда ему про гит писали? Включил свой пердак в режим максимального форсажа, как обычно.
>>310972 >ООП можно делать на любом языке абсолютно. Можно, но зачем изобретать велосипед? Хочешь ООП - бери язык с готовыми конструкциями под это. Ведь у ООП вся суть - готовая высокоуровневость. И да, ООП имеет смысл, если разрабатываешь какую-нить RTOS под жирный мк с периферией, а под мелочевку (8 битные мк и иже с ними) это во многих случаях нерациональный подход.
>>310975 Да, про Git, я перепутал, думал, что про ядро.
On Wed, 5 Sep 2007, Dmitry Kakurin wrote: > > When I first looked at Git source code two things struck me as odd: > 1. Pure C as opposed to C++. No idea why. Please don't talk about portability, > it's BS.
YOU are full of bullshit.
C++ is a horrible language. It's made more horrible by the fact that a lot of substandard programmers use it, to the point where it's much much easier to generate total and utter crap with it. Quite frankly, even if the choice of C were to do nothing but keep the C++ programmers out, that in itself would be a huge reason to use C.
>>310978 >у ООП вся суть - готовая высокоуровневость Спешите видеть. Битоёбы рассуждают о высокоуровневости. >ООП имеет смысл, если разрабатываешь какую-нить RTOS под жирный мк с периферией RTOS и ООП, пиздец ты бредишь. Скорее ты хотел сказать, что без ОС нет смысла в ООП, ибо память туда сюда шатать надо, а для этого нужен контроллер пожирнее. >под мелочевку (8 битные мк и иже с ними) это во многих случаях нерациональный подход Как правило архитектура (разрядность, ага), объём ОЗУ, тактовая частота определяют применимость нормальной ОС и С++.
>>310972 > Какие именно концепции ООП ты имеешь в виду? Ну в основном к микроконтроллерам наверно применимо просто грамотное структурирование данных и функций для работы с ними или типа того, всё остальное уже, я думаю, второстепенно. >И какие микроконтроллеры? STM32 everywhere от f2 и до весьма жирного f7. >"использование объектов и подходов ООП" != "ООП и кресты" Так я же специально написал про концепции ООП, а не про c++ на микроконтроллерах и использование всей парадигмы целиком. >>310994 >Скорее ты хотел сказать, что без ОС нет смысла в ООП, ибо память туда сюда шатать надо Аллокаторов отдельно от ртос не существует разве? >архитектура (разрядность, ага), объём ОЗУ, тактовая частота определяют применимость нормальной ОС и С++ Насчет ос согласен, а плюсы можно использовать частично и обходить проблемы с динамическим выделением памяти. Во многом же реализация одного и того же на C и на плюсах после компиляции не сильно будет отличаться в объёме и в скорости выполнения. Но есть, конечно, и прямо противоположные вещи.
>>311005 Неплохо, спасибо. Надо почитать. Но вот меня это интересует еще в контексте микроконтроллеров. Стоит ли, и, если стоит, то как правильно описывать работу с внешней периферией структурами, пытаясь максимально абстрагировать один слой от другого? Прихожу к выводу, что чем универсальнее код, тем он становится больше, сложнее и неповоротливее, зато куда проще в конечном использовании на уровне уже самого приложения, так сказать, но со своими минусами, разумеется. Где-то ведь должна быть золотая середина?
>>311036 Я дроблю так: - хедер с макросами для дрыгания логическими сигналами в контексте схемы электрической принципиальной, типа PWR5V_ON, PWR5V_OFF - модуль с функциями конфигурации профилей IO, например настройка шин I2C, конфигурации аналогового тракта. Тут же обязательно функция начальной инициализации всех IO - набор модулей - протоколов. Например, 1wire, i2c (ненавижу ST-шный модуль, юзаю ногодрыг) - набор модулей для работы с перифеийными микросхемами. Типа контроллер батареи, флешка, акселерометр и т.д. - функциональные модули, соответствующие режимам работы прибора - архитектурные модули - тут уже в концепции ОС или твой циклы со свитчами
>>311138 Ну и я примерно также стараюсь разбивать код в проекте. Но вот если с интерфейсами типа uart или spi более-менее всё понятно, то как написать универсальную структуру/класс для использования таймера? Чтобы и шим, и всё остальное было. Или нет смысла писать универсально, и отдельно описывать структуру для, например, шим, отдельно для чего-то ещё? Алсо, вот если я на C пишу структуру, то тут всё понятно - в ней вместо некоторых методов будут указатели на функции, которые я буду подставлять уже в зависимости от реализации. Ну, например, для spi я в отдельных модулях пишу функцию, которая дрыгает нужным пином для CS, а сам модуль, в котором описана инициализация и остальная работа с spi про эти пины ничего не знает. Как быть в C++? Запихивать конкретные пины в реализацию класса явно плохая идея, а оставлять вместо методов указатели вроде как нарушает принцип инкапсуляции, если я правильно понимаю.
>>311397 >Запихивать конкретные пины в реализацию класса явно плохая идея, а оставлять вместо методов указатели вроде как нарушает принцип инкапсуляции, если я правильно понимаю.
Не надо указатели в данном случае. Это вообще хуета будет, а не ООП. Надо либо полиморфные методы, либо конфигурировать экземпляр класса перед использованием (в конструкторе или factory-методе или в builder'е). Либо применить паттерн "Template Method" (метод, использующий абстрактные методы данного класса, которые будут реализованы в производных классах). Либо ещё как-то.
Алсо, мне вот этот вот момент:
>Ну, например, для spi я в отдельных модулях пишу функцию, которая дрыгает нужным пином для CS, а сам модуль, в котором описана инициализация и остальная работа с spi про эти пины ничего не знает.
кажется каким-то подозрительным. Можно пример? Не надо полный код, дай интерфейс, в общих чертах.
Я бы, например, предложил сделать два класса: SpIDevice(piny, huiny) и SpiController(new SpiDevice(...)).
Т.е. ты абстрагируешь пины-хуины в SpIDevice и передаёшь его (уже сконфигурированным) для использования в контроллер, который его и юзает, ничего не зная о пинах, и дёргая его "среднеуровневые" методы. Т.е. Application --uses--> SpiController --uses--> SpiDevice --uses--> [hardware]
Алсо - нормальное ООП это не какие-то охуенные универсальные объекты, а наоборот - система хорошо структурированных специализированных объектов, использующих друг друга. Всё собирается как из кубиков, в том виде, в каком тебе надо в данном приложении. Это называется агрегация или композиция (это несколько разные вещи). И интерфейсы отдельно, а реализации - отдельно. Дальше - ты делаешь, например, серию factory-методов в каком-то классе, которые тебе возвращают один и тот же интерфейс, но с разными реализациями. Напр. ITimer с методами start() и onTick(...) и реализации YobaTimer, SukaTimer etc. А твой основной код юзает ITimer, и ему похуй на реализацию.
Алсо - делегирование очень полезный приём. Я бы сказал, один из основных. Погугли. Это если тебе надо обернуть чужой класс (закрытый, ты не можешь его переписать) или несколько классов в свой интерфейс.
Короче, сначала задрачивай ООП как таковое, базовые концепции, а не в применении к контроллерам. К контроллерам оно само потом применится. В качестве языка для подходов ООП как такового лучше всего использовать Java и материалы по ООП на Java.
Алсо, попробуй найди книжку "Объектно-ориентированный анализ и проектирование" Грейди Буча (это патриарх ООП). Это старая книжка, середины 90-х. Очень толковая книга и примеры там на C++. И в качестве предметной области, как раз, используется управление всякой фигнёй типа теплиц или лифтов. Не смотря на то, что книга старая, она весьма годная, т.к. рассказывает о подходах а не о кодировании. Есть ещё новая книжка с таким названием, продаётся сейчас. Но, там другой автор и я её не читал.
>>311407 Я посмотрю обязательно, но хотелось бы больше инфы собрать. Они действительно годно написаны по сравнению с hal от stm? У них вот тоже была попытка заключить всё в структуры, но вышло довольно хуёвенько как с точки зрения самих структур, так и с точки зрения реализации работы с периферией.
>>311412 > конфигурировать экземпляр класса перед использованием Ты имеешь в виду непосредственно в реализации класса это задавать? > метод, использующий абстрактные методы данного класса, которые будут реализованы в производных классах Думал над этим, но тоже странно получается - ты описываешь работу с spi, но для spi1 у тебя один класс-наследник, для spi2 - другой, так? > Можно пример? Ну наверно как-то так: https://pastebin.com/S5cbr2bj В таком случае получается нарушение инкапсуляции, но с другой стороны модуль не знает ничего про пины. С пинами пример не удачный, всё-таки, потому что пин можно передать в структуру. Ещё там нужен какой-то коллбек для сигнализации окончания передачи или ошибки, который уже может быть абсолютно разным в зависимости от наличия ОС и её реализации, вот как это организовать по-другому мне не понятно. > абстрагируешь пины-хуины в SpIDevice и передаёшь его (уже сконфигурированным) для использования в контроллер Ну, в принципе, можно их и объединить в один метод, один хуй spi связан неразрывно с CS, просто тогда эти пины будут храниться где-то в структуре самой, передаваться в виде аргументов в функцию инициализации, а знать про то, какие пины для этого используются, получается, будет уровень выше, который уже непосредственно с внешней периферией работает. Но это тоже странно выглядит, потому что чисто теоретически этому модулю вообще должно быть похрену по какому он интерфейсу подключен и вся эта кухня. > Всё собирается как из кубиков, в том виде, в каком тебе надо в данном приложении. Похоже, в этом и проблема, потому что у меня сложилось представление, что суть ООП в том, чтобы абстрагировать вещи друг от друга, но при этом написать их максимально гибкими и универсальными. То есть, на тот же таймер один класс как для измерения времени, так для периодических прерываний, так и для шим. Но когда я попытался продумать интерфейс, у меня закипела башка, потому что получается слишком сложно и дохуя всего. Выходит, лучше для каждого сценария использования лучше писать отдельную реализацию? > Есть ещё новая книжка с таким названием, продаётся сейчас. Но, там другой автор и я её не читал. Спасибо за совет, лучше возьмусь за неё, потому что плюсы и реализацию ооп в них я хотя бы немного знаю, а java видел одним глазом. На либгене нашёл аж три издания этой книги, и последнее 2008 года, но там помимо Буча есть другой автор. Второе лучше взять тогда?
>суть ООП в том, чтобы абстрагировать вещи друг от друга, но при этом написать их максимально гибкими и универсальными.
Нет. То, о чём ты пишешь, это, скорее, принципиальный подход к программированию вообще. А ООП - это способ реализации - того или иного подхода. Так вот, такой подход (писать один универсальный класс/функцию/метод/структуру) - хуёвый и затратный. Так лучше не делать. И начинающих специально учат не валить всё в одну кучу, а разбивать большие функции на более мелкие, например. Более того - ООП, как раз, и включает в себя инструменты, облегчающие написания узко-специализированного кода, но, без присущего использованию такого кода геморроя. Это - интерфейсы, наследование и полиморфизм. Т.е. ты пишешь _разные_ реализации, которые _ведут_себя_ одинаково. И это поведеие описано в интерфейсе или абстрактном классе. Более того, вся эта магия может быть спрятана в библиотеке, и снаружи это выглядит как некая универсальная вещь. Но, внутри будет куча специализированных объектов. Смотри исходники.
Если в двух словах - движок (рантайм) ООП незаметно жонглирует указателями на функции и структуры, создавая у тебя иллюзию, что всё работает само, что есть какие-то "объекты" и прочее, в этом смысл ООП.
Ещё надо сказать, что "ООП" тоже бывает очень разное. Раньше, в 90-е, был популярен подход "наследования". Использовалось множественное наследование (один класс наследует нескольким). Но, множественное наследование - зло (погугли, diamond problem etc). И когда появилась Java, то там специально отказались от него. Т.е. Java-класс может наследовать только одному классу, но, при этом, реализовывать несколько интерфейсов. Интерфейс в Java - это чистая абстракция поведения, без реализации. Вся реализация - в производных классах. Это сложнее писать, но, нет проблем, присущих множественному наследованию. Для упрощения используют делегирование - подход, облегчающий написание поддержки одним классом нескольких интерфейсов. Общий функционал выносят в отдельные классы, затем из внешних методов (реализующих интерфейс) дёргают внутренние экземпляры этих классов (делегируют им выполнение работы).
Так вот, классы-монстры, множественное наследование и т.п. - это подход 90-х. Сейчас мир стал гораздо более сложным и быстро меняющимся, и писать один класс на все случаи жизни - это больше не работает. Просто невозможно стало так писать. Сейчас - стараются писать "на интерфейсах" - чтобы можно было менять конкретные реализации, не трогая остальной код. Используют кучу мелких классов, работающих как кубики лего. Стараются, по возможности, делать методы "чистыми функциями" - без побочных эффектов. И т.д. Ключевые слова - "маленький", "лёгкий", "быстрый", "подвижный", "гибкий" и т.п. И при этом - используют несколько слоёв (уровней) абстракций. Т.е. код растёт не в "ширину", а в "глубину", как-то так. Это и даёт универсальность, но это немножко не та универсальность о которой говоришь ты.
Ты, насколько я понял, сишник? И плюсы не знаешь? Я бы, всё же, посоветовал (именно для тренировки) взять не C++, а Python, например. Не на голом контроллере, а на пк или на Raspberry Pi. Питон, по сути, это такой Си, но с ООП и динамический. И идеально интегрируется с сишными либами, специально для этого и задуман. Ты сможешь сам легко писать биндинги к нужным тебе либам, если их ещё нет. На контроллерах есть MicroPython, но, в продакшн его не используют, ибо сыроват, хотя х.з., может и начали уже. А в плюсах - высокий порог вхождения. И придётся бодаться с кучей вещей, не имеющих отношения к ООП.
Допустим, нам нужно читать текстовые (символьные) данные из разных источников. Например, с целью подсчёта количества символов. Источники - файл, строка в памяти, массив байтов, последовательный порт.
В Java используется такая абстракция как Reader (абстрактный класс - с частичной реализацией). И есть её реализации - FileReader, StringReader, InputStreamReader и т.д. В программе есть метод calcSymCount(Reader reader).
Как это работает (упрощённо):
//Из строки: int cnt = calcSymCount(new StringReader(myString));
//Из файла: int cnt = calcSymCount(new FileReader(new File(path)));
//Из массива байтов: int cnt = calcSymCount(new InputStreamReader(new ByteArrayInputStream(bytes), "utf-8"));
//Из порта: SerialPort com = portId.open(...); int cnt = calcSymCount(new InputStreamReader(com.getInputStream()));
Теперь, допустим, нам понадобилась буферизация. Мы просто оборачиваем объект reader в BufferedReader и всё:
int cnt = calcSymCount(new BufferedReader(new FileReader(new File(path))));
Для вывода данных - ровно то же самое, просто слово Reader заменяем на Writer, а Input на Output, и всё.
Попробуй представить, можно ли всё это сделать на каком-то одном универсальном классе?
>То есть, на тот же таймер один класс как для измерения времени, так для периодических прерываний, так и для шим. Так не делают, это же совершенно разные вещи. Смысл именно в том, что ты абстрагируешься от железяки, и смотришь на неё или как на измеритель времени или как на шим-контроллер. И классы отражают эти точки зрения.
Но, надо понимать, что ООП на контроллерах будет немножко не таким красивым, как на больших системах. Слишком много железной специфики, которая в больших системах абстрагирована в ос и драйверах. Соответственно, будет несколько коряво. И разбиение на компоненты надо делать несколько иначе и т.д.
>для spi1 у тебя один класс-наследник, для spi2 другой Я не работал с стм, но, если там разница не только в пинах и адресах, т.е. нельзя сконфигурировать, то да. Т.е. компоненты могут быть очень низкоуровневыми, и жёстко привязанными к конкретному контроллеру или семейству.
И, стоит подумать, нужно ли классическое ООП на контроллерах вообще? ООП не единственный способ грамотно структурировать код, и не бесплатный. Если набить в гугол "embedded oop development", то по первым трём ссылкам советуют не делать этого, лол. Есть, правда, другие результаты - погугли.
Это я к тому, что если реально надо высокоуровневость, то, может быть, просто использовать [микро]питон для скриптования сишных либ? Х.з., правда, как там с этим на STM.
И, в любом случае, не стоит начинать с написания собственных библиотек. Надо сначала писать код, использующий чужие, потом - читать исходники чужих, потом - пытаться писать свои.
Это, оказывается, вообще референсная платформа для него, лол - PyBoard сделан на STM32. Если не устраивают готовые абстракции железа - пиши свои биндинги через C API.
>>311529 >Ещё там нужен какой-то коллбек для сигнализации окончания передачи или ошибки, который уже может быть абсолютно разным в зависимости от наличия ОС и её реализации, вот как это организовать по-другому мне не понятно.
Это называется EventListener. По сути, это и есть callback, только в виде экземпляра класса. У тебя есть интерфейс или абстрактный класс SpiEventListener с абстрактным методом или методами, по числу нужных событий. Например onSpiTransmitEnd(), onSpiError() etc. Реализация этих методов будет разной в разных производных классах.
>>311545 >Ты, насколько я понял, сишник? И плюсы не знаешь? Под мк я только на C писал, на пк маленькие вспомогательные программки накидывал пару раз на плюсах, но в основном пользовался питоном. Но они были настолько маленькие и простые, что углубиться в ооп особо не удавалось - максимум я описывал один какой-нибудь класс для моего кастомного usb-устройства с методами для приёма-передачи данных по разным эндпоинтам и всё. Но по плюсам и питону я ещё пару книг вводных прочёл, так что кое-что знаю, но опыта почти нет, к сожалению. Под пеку не знаю, что писать, а вот на мк у меня есть пара задумок простеньких, которые я бы хотел реализовать постараться грамотно и неторопясь, а не быстрее-быстрее как получится, как обычно это на работе бывало. Хотя, bt, wifi и gps можно через uart подключить к пеке и также накидывать слой приложения так, чтобы низ от контроллера потом можно было прицепить. >MicroPython Слышал про него, но показалось, что там либы под одну лишь плату их собственную. Побоялся, что не осилю хал переписывать под свой проц и свою железку (хотя, с процом более-менее повезло, у меня тоже f4). И я вообще не въехал как это работает, тем более не догнал как это всё потом отлаживать кроме как выводом в uart/cdc. Без дебаггера можно тоже, но это геморно по-моему. >>311554 > Попробуй представить, можно ли всё это сделать на каком-то одном универсальном классе? Наверно, проблемно. Но вот calcSymCount получается как раз универсальным, потому что он может работать с разными объектами. Ладно, я, кажется, более-менее понял на организационном уровне. > абстрагируешься от железяки, и смотришь на неё или как на измеритель времени или как на шим-контроллер Выходит, класс в контексте периферии мк стоит рассматривать исключительно с точки зрения выполняемых им задач и при этом не обращать внимание на используемую аппаратную часть? То есть, если у меня есть универсальный какой-то йоба-блок, который может выполнять 10 разных функций, то лучше описать 10 разных классов (ну, возможно, с какими-то абстрактными, не важно) и не важно, что они один и тот же железный блок используют, но с разными параметрами инициализации? > Я не работал с стм, но, если там разница не только в пинах и адресах, т.е. нельзя сконфигурировать, то да. Не, там как раз суть в том, что разница только в адресах, пинах (cs так вообще софтварно можно дёргать, он тогда любым может быть) и прерывании в векторе. > Надо сначала писать код, использующий чужие Для stm32 кроме их весьма корявых либ я находил только libopencm3, но там по-моему структурированию и концепциям ооп особо время не уделяли. Попробую по совету анона посмотреть код в либах для ардуино, но я железо в глаза не видел, не уверен, что не потрачу слишком много времени на то, чтобы разобраться в коде. А вот микропитон можно попробовать поковырять.
>>311791 >лучше описать 10 разных классов Да, в этом и смысл. Насколько это затратно и т.д. - зависит от ситуации.
>но там по-моему структурированию и концепциям ооп особо время не уделяли Возможно, это потому, что чем больше ООП, тем оно дороже выходит в смысле ресурсов и производительности. Ну, и написать элегантную либу - это дорого и долго. А эмбед слишком быстро меняется, и люди там работают немножко не те, которые ценят элегантное ооп.
Алсо, в своё время видел сравнение быстродействия под виндой микрософтовских плюсовых либ и джавы (причём, той ещё джавы, начала нулевых). Оно было одинаковым. И нахуй эти плюсы?
>Под пеку не знаю, что писать Есть Raspberry PI и подобное - там вполне себе нормальный питон под линуксом. Инфы куча.
Про микропитон я почитал - он сырой ещё. И нормальную отладку ещё только пытаются запилить.
Я ещё думал про это, и пришёл к выводу, что нормально под контроллеры писать можно только на си или на некотором подмножестве плюсов - как в Ардуино. Так что тот, кто советовал читать исходники ардуино либ, был прав.
Ну, или уже под толстые контроллеры с линуксом - на чём хочешь.
Приветствую, господа. Хотелось бы изучить архитектуру ARM, программирование под нее и т.д, но не знаю с чего начать. В электронике и микроэлектронике тоже не силен, возможно начать стоит с этого. Можете предложить какие-нибудь книги или иные материалы по теме?
>>187056 (OP) Анон, начались пары по работе микропроцессоров в перемешку с программирование микроконтроллеров на С. Препод сказал, что разбираться будем с AVRовским. Подскажите минимальный набор деталей, чтобы вручную что-нибудь собрать. Пока в списке диоды, провода, программатор, atmega8a, датчики света, температуры и тд, макетная плата.
>>312149 Joseph Yiu - Definitive guide to the to the ARM cortex M0 рекомендовали где-то. Еще есть Bertolotti, Ivan Cibrario Hu, Tingting - Embedded software development. Можно ещё выборочно почитать digital design and computer architecture. Но я первые две только листал, а последняя не совсем про мк, но выборочно почитать стоит точно, чтобы понять, как устроено и как работает простейшее ядро проца. >>312163 Если не хочешь мудиться с usb-cdc, то советую ещё прикупить usb-uart на ft232. На али 250 рублей стоит, но при отладке бывает очень полезен в случаях, когда просто взять и поставить брейкпоинт нельзя. Есть bt/wifi/nfc модули, работающие на at-командах по уарту, если хочешь запилить беспроводную йобу. Вообще, смотря что ты хочешь собрать. Можно и набор адресуемых светодиодов закупить и остановиться на этом. А дальше пилить какую-нибудь подсветку для задней стенки монитора/светомузыку.
>>311813 > И нахуй эти плюсы? На ПК? Уже полно альтернатив на любой вкус и цвет, да, но тем не менее язык один из самых популярных до сих пор. А вот под мк кроме сырого micropython, javascript, закрытой java embedded, которую, как я понял, хуй получишь, кроме C и C++ ничего не остаётся больше. Может, именно в плюсах и смысла нет, потому что в контексте мк C++ - это C с классами, но я вроде изначально просто про концепции спрашивал, которые можно реализовывать на обоих языках. > Есть Raspberry PI и подобное - там вполне себе нормальный питон под линуксом. Из пушки по воробьям. Собрать макет - годится, но дальше уже нет (а тем более смысл собирать макет на питоне, если потом пилить то же самое на C/C++), тем более для устройства, работающего от батареи, а не от сети, точно не пойдёт. Ну и у пирога есть одна большая проблема - он быстро убьёт карточку, поэтому для начала придётся его пердолить, чтобы на карту записи почти не производилось во время работы. Да, статьи есть на эту тему, но желания обмазываться пока нет. > толстые контроллеры с линуксом В перспективе хотел бы, но пока что нет, к тому же цена у такой платы будет куда выше, да еще и придётся вкуривать линукс. Ладно, спасибо большое за ответы, анон.
Сап Анон. Есть железка на F105 STM'е, проект сгенерен кубом, работает как USB VirtualCOMPort-CAN-UART прозрачный адаптер. Есть гора старого софта, который работал с подобным адаптером собранным на AVR'ке+FT232, софт требует наличия сигнала CD (Carrier Detect) со стороны виртуального ком порта, иначе пакет закидывать в порт отказывается. Изучая кубовскую реализацию USB, стало ясно что поддержку нотификаций SERIAL_STATE нихуя не реализовали. Может кто мудохался, и дописывал в стеке от ST поддержку нотификаций?
Поясните за Mbed - это зашквар или нет? Хочу вкатиться в ARM на уровне хобби (профессия уже есть, лол).
Заодно, насоветуйте плату для знакомства. Выше пишут, что вообще лучше начинать с STM32 F3. Это так? Nucleo NUCLEO-F303K8 нормально? Что насчёт Cortex M0?
Алсо, реально ли использовать Mbed с голым nRF51822, например (после некоторого знакомства с предметом вообще)?
Чисто из академического интереса - интегрированный бутлоадер в stm32 принципипиально можно заменить своим, чтобы окирпичивать камни вызывать его через BOOT-пины?
есть микроконтроллер stm32f767zi на плате NUCLEO-F767ZI и OLED дисплей winstar'овский WEH001602AGPP5N00001 с контроллером WS0010 аналог HD44780 вроде. Никогда дисплейчик не подрубал, как быть? с чего начать? Может есть какая то система команд для управления им и вывода на него информации? мне нужен только текстовый режим, рисовать рандом пикчи нет необходимости
>>312441 > зашквар или нет Почему зашквар-то? Ну, если ты петушила-ардуинщик, который вообще не имеет представления о том, что делает, и только лепит готовые либы и решения, то наверно зашквар. А если нормально делать, то норм. Но не в качестве профессии, потому что на хуй никому не нужен будешь. > лучше начинать с STM32 F3 Я принципиальной разницы между f0/f1/f2/f3/f4/f7 не увидел, поэтому думаю, что начать можно с любого, это тебе не какой-нибудь многоядерный a15 с reference manual на 8к страниц. > насоветуйте плату для знакомства Чтобы меньше ебли было бери фирменную. Можешь взять с али китайщину, но ни схем не будет, нихуя вообще, но она дешевле (я на f4 с usb-разъемом, двумя кварцами, разъемом под microsd, и маленькой eeprom на борту взял за 700 с чем-то). Удобно еще когда на плате к самому мк заведён и распаян usb, на мой взгляд. Можешь поискать подешевле что-нибудь с самым простым камнем и минимумом обвязки, а то вдруг не понравится.
>>312552 спасибо, но мбед для меня еще более непонятен чем работа в том же кубе) плюс мбедед приложения не знаю как дорабатывать, ведь по ТЗ у меня не только подцепить дисплей задача
Существует ли в природе нормальные библиотеки низкого уровня для 32ухбитных контроллеров от Atmel? Я имею в виду что-то на подобии CMSIS для STM32. Где тупо есть для каждой переферии по файлу .c и .h. Подключаешь их к проекту и не ебешься. Ну никакого желания мучаться с ASF нет, а тупо регистрами пользоваться это крайний случай.
>>306851 Использую realolc, да. Только на атмеге. Кагбэ у меня там просто класс запилен. Есть функция, которой я сообщаю сколько байтиков нужно выделить. А внутри неё уже этот реаллок. Если количество байт в аргумент я сообщаю положительное (ну там парочка байт), то эта функция к тому же возвращает мне указатель как раз на то место где начало этих новых выделенных байт. Что оче удобно. Ещё у меня конструктор и функция free, вызывающая, собственно free() и ещё обнуляющая указатель на начало массива. Проблема фрагментации у меня пока не стоит, так как объекты (локальные) удаляются в порядке, обратном их созданию, но, впринципе если потребуется, то я в массиве просто прописываю ссылочку на дополнительно созданные байтики в его конце. >>307264 Нахуй это нужно? Кольцевой буфер запилил, та и всё. Плюс сигналы XOFF/XON можно отправить если он заполнится, до появления свободного места.
Сап, есть ли в треде люди шарящие в ARM чтоб поднять на нем некую систему складской автоматизации выдачи товара, по типу почтаматов но не совсем, есть некоторый проект реализовав который его можно успешно продавать. С меня все материальные затраты с вас помощь в программной составляющей проекта. Если есть авантюристы которые заинтересованы отпишитесь. Если че я в хохлоДС.
Что там с версиями - 8, 9.3, 9.4? Какая лучше? Инфа в интернетах есть, но противоречивая. Может быть, кто лично пользовался?
Цель - прошивка дешёвых китайских платок с nRF51822 и прочее.
На плате nRF51 DK стоит здоровенный чип Segger, я так понимаю, что это JLink и есть. Видел инфу, что для прошивки достаточно JLink'а за 13 долларов, а то, что выше по ссылке - это нужно для отладки.
Короче - просветите что это вообще за хуйня, в чём разница, какие подводные камни.
>>314012 Если честно - я не знаю, ибо в этой теме я ньюфаг. В тех примерах, которые я видел, nRF51 прошивали j-link'ом. Если его можно прошить st-link'ом с али, тогда j-link не нужен.
>>187056 (OP) В ньюфажном треде затруднились ответить на мой вопрос. Есть ли в природе русскоязычная документация на STemWin, BSP-драйверы и т.п. для STM32F4? В поиске вылазят малопонятные, обрывочные примеры. Может быть есть, что-нибудь подобное "STemWin на селе", "Справочник молодого BSP-шника"?
>>314839 RTOS нужны для обеспечения многозадачности в основном.
В самом просто случае без RTOS, например, если ты захочешь поморгать светодиодом раз в секунду, без прерываний по таймеру, твой МК будет сидеть и курить бамбук, смотря как тикает время и нихуя не делая. Это не круто, так как за эту секунду он мог бы сделать тонну полезной работы.
С RTOS вместо одного суперлупа у тебя будет набор тасков, каждый из которых выполняет одну определенную функцию независимо от других, то есть его можно гасить, будить, грамотно управлять ресурсами с помощью примитивов синхронизации типа семафоров и вообще делать вещи красиво.
Каждому из тасков выделяется свое время активности, и когда, например, один из тасков решил, что он завершил свой текущий цикл и будет ждать следующего, контекст переключится на таск, который готов к выполнению, вместо просиживания штанов.
>Эта хуйня (RTOS) мне будет полезна, чтобы ебли было как можно меньше?
Продублирую пост из пограмача, да простит меня Сварог.
Аноны, а есть кто зарабатывает этим ремеслом?
Ищу работу эмбедером, предложений очень мало, а те которые есть, это 20к в НИИ Исследования Пердежа после 3 месяцев испытательного.
Не то что бы я этим брезговал. Как раз таки я уже в таких местах пару лет и проработал, хочу двигаться дальше и заниматься более интересными проектами, но пока даже не понимаю куда.
не совсем занимаюсь ARM в полноценном смысле. Не так долго пишу на стм32 без выебонов и поддерживаю чужой код на 8мибитных авр. Получаю правда в своем городке 27к что не особо делает из меня советчика
>>315035 ну тут как повезет, думаю в этом плане пытаться залезть в компанию покруче. У меня начальство лояльное, а вот с разнообразием туговато. Только один чувак пытается добавлять новые фишки в проекте. И славу богу я работаю с ним
Сам я столкнулся с ней на работе, уже полгода пишу под SAM3 и ATSAM91. Все нравки, внезапно стало доставлять. Планирую накатить линукс и сам собрать ядро.