LINUX.ORG.RU

Избранные сообщения qub

Linker Script для STM32

Форум — Science & Engineering

Как известно, чтобы что-то собрать под STM32 нужен linker script для соответствующего микроконтроллера. Можно, конечно, открыть даташит и написать вручную, но это слишком скучно. Можно тырить из чужих проектов готовые скрипты, но это тоже не мой метод.

В конце-концов linker script для всех STM32 одинаковы почти полностью, отличаются только размерами ROM и RAM (а ещё у некоторых STM32 есть несколько блоков RAM). А у меня есть железное правило - «если у тебя в программе дважды встречается один и тот же код - вынеси его в отдельную функцию, чтобы он встречался один раз». В данном случае можно написать шаблон linker script с символьными именами вместо чисел (типа RAM_SIZE, FLASH_SIZE и т. д.), а затем уже при компиляции прогонять шаблон через cpp, объявив нужные параметры МК.

Вопрос в том, где эти параметры взять. Ну не вручную же вести БД в 21-ом веке! Первое что пришло в голову - у STMicroelectronics есть сайт. Там есть онлайн каталог с характеристиками микроконтроллеров. Немного времени и я уже могу скачать в JSON-формате список микроконтроллеров с их характеристиками в локальный файл (чтобы не качать его при каждой компиляции проекта). А ещё написал утилиту, которая парсит этот файл и выдаёт все нужные мне характеристики - Flash, RAM, и версию ядра ARM (чтобы делать параметры компиляции типа -mcpu=cortex-m3).

А в итоге получил непонятный баг - тестовая программа делала HardFault при любом обращении к стеку. В итоге оказалось, что у старших моделей STM32 память состоит из двух регионов - нормальная и CCM (с меньшим временем ожидания чтения, зато недоступная для DMA). Скажем, у STM32F407 первый регион 128 КБ и начинается с адреса 0x20000000 (как и у всех других STM32), второй регион начинается с адреса 0x10000000 и длится 64 КБ. А в каталоге, разумеется, указываются общий размер ОЗУ. И получилось, что я объявил в linker script, что RAM у меня 192 КБ, а не 128, что не было верно. А стек, как известно, находится в конце RAM. Ну и получил обращение по несуществующему адресу.

Проблема осложняется тем, что размер CCM не указан в каталоге, который я использовал, а также нет какого-либо явного закона (типа CCM_SIZE = 1/3 * RAM_SIZE, если у нас STM32F4 - CCM имеют не все STM32F4, зато его же имеют и некоторые STM32F3).

Решение проблемы - нужен другой каталог микроконтроллеров. Где его взять?

Пока на примете есть только эта штука - https://github.com/libopencm3/libopencm3/blob/master/ld/devices.data

Насколько хорошим решением будет использовать данный каталог? Что насчёт лицензии и использования в своём проекте? Возможно, вы знаете более хорошие машиночитаемые каталоги характеристик микроконтроллеров?

 ,

KivApple
()

STM32 I2C

Форум — Science & Engineering

Написал вот такой класс для работы с модулем I2C на STM32:

https://github.com/KivApple/ControllerFramework/blob/a07c28b93f160b2f1fddaf07...

https://github.com/KivApple/ControllerFramework/blob/a07c28b93f160b2f1fddaf07...

Используются примитивы BinarySemaphore и Mutex от FreeRTOS (простейшие C++ обёртки), поэтому вряд ли проблема в них.

Для теста общаюсь с MPU6050. Делаю следующие операции:

Прочитать регистр 0x75 (по факту отправка 1 байта, а потом приём 1 байта)
Записать 0 регистр в регистр 0x6B (по факту отправка 2 байт)
Прочитать 16-битный регистр 0x3B (по факту отправка 1 байта и приём 2 байт)
Подождать полсекунды и повторить

В настоящий момент код вроде как отлично работает, однако для этого мне пришлось добавить отключение тактирования модуля I2C после каждой операции и включение его лишь непосредственно перед ней. Без этого при компиляции с -O2 через какое-то время работы происходила ошибка чтения 16-битного регистра и после этого ни одной успешной операции.

Мне такой подход не нравится, потому что я не смогу добавить поддержку режима slave (модуль же отключен всё время, пока не передаёт с режиме master). Что я делаю не так?

 ,

KivApple
()

Накопились вопросы по «умному дому»

Форум — Talks

Вразнобой, так сказать, как буду вспоминать.

Первое, самое актуальное. Скриптовая логика. Я так пока и не пришёл к единому подходу, как возвращать и анализировать логические значения. Был бы какой-нибудь «Forth командной строки», нормально взаимодействующий с Linux-окружением, было бы проще. Но приходится работать в контексте bash'а.

Например, статус «допустима ли концентрация CO2». Очевидное решение — возвращать после проверки «0» или «1»:

#!/bin/bash

[ $(hall_co2) -ge 1100 ] && echo 1 || echo 0


И проверять соответствующим образом:
#!/bin/bash

. $(dirname $0)/../init

if [ "$(is_hall_co2_notice)" == "0" ]; then
    exit
fi

once_per 10 check-co2-hall-notice send-to-telegram "В зале душно: $(hall_co2) PPM."


Можно возвращать пустое значение и проверять по -z/-n, но тогда теряется единообразие с командами, возвращающими целые значения. Жаль, что bash не считает «0» за false.

Но, с другой стороны, если возвращать статус, то можно было бы писать короче и логичнее, например:

is_hall_co2_notice || exit


Я пока, как в примере выше, вывожу «0» или «1», но не считаю этот вариант удобным :-/

 

KRoN73
()

На чём в 2017/2018 году делать «умный дом»?

Форум — Linux-hardware

Используя какие решения вы сделали или планируете сделать ваш умный дом? Интересуют даже небольшие практичные проекты, какие платки, датчики, модули, питание, реле и прочие железки используете?

Я уже понял, что делаю неправильно и запутался, потому что не учёл опыт других, а просто тупо по каталогам заказываю на первый взгляд подходящие датчики, модули и т.п.

Взять те же доплеровские датчики HB100, которых я прикупил 20 штук, но оказалось, что к ним нужен операционный усилитель (предусилитель выходного сигнала), а мне даже этот термин не знаком, куда там паять самому такой.

Или вот думал закупаться ESP8266, а потом узнал про ESP32. Или про то, что большая часть ардуинок дохнет на холоднее -20C' и т.п.

Прошу тех, кто относится ко мне негативно или надоели мои темы — тоже высказаться, как будто авторство у топика другое, спасибо.

P.S. ниже пояснил и дал список того, что в моём понимании «умный дом», требуемого и желаемого.

 , , , ,

Bruce_Lee
()

Ищу приложение для книг

Форум — General

Есть куча книг рассортированных по папкам. Есть ли какая нибудь программа которая бы проиндексировала названия, показала пути расположения файлов, может теги позволяла бы вводить?

Кто что использует?

dima81
()

Новые веяния по госрегулированию интернета

Форум — Talks

Москва. 20 декабря. INTERFAX.RU - Физическое лицо, имеющее СМИ или ресурс в интернете и получающее средства из-за рубежа, может быть признано СМИ-иноагентом, заявил «Интерфаксу» глава комитета Госдумы по информационной политике, информационным технологиям и связи Леонид Левин.

«Иностранное СМИ или физлицо, признанное СМИ-иноагентом в РФ, должно создать юрлицо, в обратном случае согласно предлагаемому законопроекту в качестве одной из мер к представляемому им ресурсу может быть применена блокировка», - добавил Левин.

http://www.interfax.ru/russia/592634

 ,

wieker
()

LibreOffice выбирает нового маскота

Форум — Talks

Стена текста: https://design.blog.documentfoundation.org/2017/09/28/libreoffice-mascot/

Голосовать тут: https://survey.documentfoundation.org/665628

Вариантов оче много, а еще голосовалка тормозит.

 , ,

entefeed
()

Вышел симулятор электроники Ngspice-27

Новости — Open Source
Группа Open Source

Ngspice — консольный симулятор электронных схем, использующий формат списка цепей (netlist) SPICE-3f5, совместимый с большинством проприетарных SPICE-симуляторов. Ngspice позволяет моделировать электронные схемы в статическом режиме, во временной и частотной области, производить спектральный анализ, шумовой анализ, анализ нелинейных искажений.

17 сентября вышла очередная версия программы — Ngspice-27. С момента предыдущего релиза прошло три года. Функциональные возможности программы устоялись, поэтому улучшений немного. Список изменений следующий:

  • добавлены таблично задаваемые элементы XSPICE;
  • добавлены функции постпроцессора, улучшающие экспорт результатов моделирования, в том числе из цифровых схем XSPICE;
  • улучшена реализация моделей МДП-транзисторов HiSIM и BSIM;
  • добавлена поддержка OpenMP для моделей транзисторов BSIM;
  • добавлены новые математические функции и системные переменные;
  • исправлены ошибки, обновлена документация.

В качестве графического интерфейса для Ngspice можно использовать KiCAD (последние версии) и Qucs-S, либо экспортировать нетлист из gEda или Eagle. Полный список возможных GUI для Ngspice смотрите здесь: http://ngspice.sourceforge.net/resources.html.

>>> Подробности

 , , ,

DarthVadimius
()

Поясните за Open Gapps

Форум — Mobile

Не хочу тащить много всего, поэтому почитал про micro, nano, pico и т.д..

Везде пишут, что есть Google Play services. А будет ли сам маркет? Ибо я не видел нигде его упоминания.

Можно ли не ставить гугловский установщик приложений?

В идеале вообще хочется собрать такой набор: маркет, сами сервисы (чтобы приложения все работали) и ютуб (всякие NewPipe убогие и неполноценные). Маркет только для приложений - музыка в казахии недоступна, а книги и фильмы я покупать там не собираюсь.

Android 7.1.2, чистый (относительно) - Resurrection Remix, официальная сборка, не васянская с 4pda.

 , , ,

ozz_is_here
()

Новые фичи в nEMU

Форум — Development

nEMU — это ncurses-интерфейс к QEMU, упрощающий создание, настройку и управление виртуальными машинами.

Пока не хочу релизиться, но делюсь с целью дополнительного тестирования.

В master доступны новые фичи:

* импорт OVA/OVF.
* полноценные снепшоты (необходима версия qemu-2.11.0 с патчем, который лежит в исходниках nEMU (patches/qemu-qmp-savevm-2.11.0.patch).)
* новое меню действий над гостевой системой.
* возможность поставить гостевую систему на паузу.
* исправлено много ошибок.

Для Gentoo доступен live-ebuild (pkg/linux/gentoo/nemu-9999.ebuild)

Код доступен на bitbucket: https://bitbucket.org/PascalRD/nemu

 , ,

pascal
()

Время последнего посещения отображается неправильно

Форум — Linux-org-ru

Навеяло темой birdie. Считаю, что ситуация, когда пользователь вводит свой юзернейм, пароль, и от его имени публикуется сообщение, но время последнего посещения не обновляется — семантически неправильная.

 

buddhist
()

безопасное извлечение устройств (возможно ли в mc?)

Форум — General

Умеет ли mc безопасно извлекать устройства, как это делает Far?

 

srgslogin
()

SPB: разработчик под микроконтроллеры (STM32, TMS570, SPC5x)

Форум — Job

Разработка ПО для контроллеров, разработка самих контроллеров (автомобильная тема)

Требования:

  • опыт работы с аналогичными задачами – от 3-х лет;
  • желательно знание автомобильных интерфейсов CAN, LIN, J1939 итд
  • знание С
  • знание алгоритмов и структур данных
  • знание особеностей MCU stm32f4. Плюсом будет знание tms570
  • знание переферии: SPI, I2C, DMA, PWM etc
  • знание сред разработки (Eclipse, Code Composer Studio, Simulink) и контроля версий (git)
  • микропроцессоры и микроконтроллеры (любые, чем больше, тем лучше)

Обязанности:

  • разработка встраиваемого ПО
  • отладка и тестирование ПО в лабораторных условиях и на реальных объектах;
  • взаимодействие с другими разработчиками в группе (аппаратной и программной частей);

Большим плюсом будет опыт в ISO26262 и MISRA Условия:

  • гарантии по ТК РФ (полностью белая компания);
  • медицинская страховка, корпоративная мобильная связь;
  • офис - п. Ольгино. Прямо напротив платформы
  • Удобный офис
  • Печеньки

Пишите - romanov@charge.auto

 ,

vromanov
()

А есть ли в фаерфоксе способ сделать запись макроса?

Форум — Talks

В частности, у меня есть аддон, который добавляет в меню фичу быстрого сохранения рисунка в дефолтную директорию. Я хочу, чтобы после отработки этого аддона сразу вызывалось закрытие текущей вкладки.

 , ,

next_time
()

Мультиплексирование /dev/ttyS

Форум — Development

Как подключиться к одному ttyS двумя процессами для чтения?

 ,

panzerito
()

Спец. CAD для вело-фанатов

Форум — Talks

Знаю что тут много людей увлекаются велосипедами, поэтому увидев такое не смог пройти мимо и не поделиться

http://rattlecad.sourceforge.net/index.html

В общем специальный софт для проектирования велика своей мечты. Всё как надо: чертежи, расчёты,обвес, 3D, скрипты. С открытым кодом и для разных платформ.

rattleCAD is free and a openSource software project. rattleCAD supports bespoked bicycle frame builders with a fully parametric bicycle model inside. rattleCAD guides you through the design process by configure the base geometry before refining the bicycle frame itself. Based on this refinement rattleCAD creates workshop drawings including the main miters of round tubes and settings for different frame jigs. rattleCAD also provides a set of components to build a bicycle mockup and supports different export formats to print and reuse all drawings generated inside rattleCAD. rattleCAD uses XML file format to store project information and SVG file format to represent single components to mockup your bicycle. This components library can be extended to your own needs.

 , rattlecad

MKuznetsov
()

Нубский вопрос про соль

Форум — Talks

При написании всяких админок рекомендуют добавлять так называемую соль, чтобы сбрутить пароль, вытащенный из базы, было сложнее. Но вот в некоторых CMS (кажется в друпале это было, точно не помню) соль указывается в конфиге, и я так понимаю, подразумевает возможность смены. И вот этот момент я не понимаю. Оно там есть, чтобы указать раз и навсегда? Или всё-таки нет?

И насколько важна соль? Ну я про то, что рано или поздно всё равно можно подобрать правильный пароль, который окажется с этой самой солью, а потом второй, третий, и получится некий шаблон. Да, не на домашних компьютерах конечно, но вопрос чисто теоретический. Вопрос снят, это я туплю.

 

ozz_is_here
()

Скачать всю музыку VK. Ищу решение

Форум — General

В следствии скоровременного облома с API, ищу решение.
Треков скачать нужно много и не по одному,а все разом. С сохранением названий (Artist - track)
Гуи не обязателен. Аддоны к ФФ предлагают только по одному.
Желательно к Arch.
Думаю полезно будет всем.

 , , ,

DeepDlueIV
()

Нужен ли в 2017-м UPS для сервера?

Форум — Talks

Всё никак не могу решить проблему с UPS для домашнего сервера. Нормальный (APC SMT750i) стоит дороже сервера, ненормальный боюсь ставить во избежание возгорания (24/7 возможно без людей дома это опасно) и неприемлемого шума. Мой внутренний перфекционист негодует от одной мысли о том, что у работающего сервера может вырубить свет (и тут даже не «может» а «будет», т.к. свет несколько раз в месяц вырубают и это тогда, когда я замечаю) и что там останется в файловой системе, в рабочих файлах программ вообще фиг его знает. Вроде как люди стараются писать код так, чтобы всё нормально было, но как ни крути это нештатная ситуация и на 100% нормально вряд ли будет.

Есть ли какой-то относительно дешёвый и безопасный способ обеспечить питание 100-ваттного сервера хотя бы секунд на 10 (не надо мне здоровые аккумуляторы, которые могут час держать питание, требований к аптайму у меня нет)? Или не заморачиваться и считать, что шансов получить проблемы на ровном месте нет? На сервере CentOS 7 + XFS, но в целом пофиг.

 ,

Legioner
()

Ищу CAM для домашнего ЧПУ станка

Форум — Desktop

Привет, ЛОР.

Мне скоро должна приехать новая игрушка: китайский конструктор ЧПУ станка под названием CNC3018. Управляющая плата от китайцев работает на Grbl. Вполне возможно, что я заменю плату на что-нибудь другое.

Собираюсь фрезеровать на нем печатные платы и резать лазером тонкую фанеру. Платы проектирую через kicad. Фанеру пока не раскраиваю ни в чем, но скорее всего буду делать это через inkscape и самописные скрипты для генерации svg, но вы можете посоветовать более подходящий для этого софт. Еще я умею делать трехмерные модели через freecad.

Собственно, буду рад, если кто-нибудь посоветует свободного CAM софта для генерации g-code под это дело. Я нагуглил такую ссылку http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Cam, но у меня же уйдет куча времени чтобы изучить и попробовать весь софт из этого списка. Нужны истории успеха и советы, основанные на личном опыте. Кто чем пользуется?

 , ,

Deleted
()