Search
Write a publication
Pull to refresh
2
0
Send message

Где хранятся ваши константы на микроконтроллере CortexM (на примере С++ IAR компилятора)

Reading time18 min
Views24K
Я обучаю своих студентов работе с микроконтроллером STM32F411RE, на борту которого имеется аж целых 512 кБайт ROM и 128 кБайт ОЗУ
Обычно на этом микроконтроллере в ROM память записывается программа, а в RAM изменяемые данные и очень часто нужно сделать так, чтобы константы лежали в ROM.
В микроконтроллере STM32F411RE, ROM память расположена по адресам с 0x08000000...0x0807FFFF, а RAM с 0x20000000...0x2001FFFF.

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

class WantToBeInROM
{
private:
  int i;
public:
  WantToBeInROM(int value): i(value) {}
  int Get() const
  {
    return i;
  }
};

const WantToBeInROM myConstInROM(10);

int main()
{  
  std::cout << &myConstInROM << std::endl ;
}

Вы тоже можете пробовать ответить на вопрос: где лежит константа myConstInROM в ROM или в RAM?

Если вы ответили на этот вопрос, что в ROM, поздравляю вас, на самом деле скорее всего вы не правы, константа в общем случае будет лежать в RAM и чтобы разобраться, как правильно и законно расположить ваши константы в ROM — добро пожаловать под кат.
Читать дальше →

Несколько недорогих способов улучшить свой цифровой быт*

Reading time23 min
Views50K
*слоган одной очень известной торговой онлайн-площадки: Smarter Shopping, Better Living!

Нашалившего ребёнка родители теперь ставят в тот угол, где нет WiFi — из эфира одной популярной радиостанции

Помню, когда я пару лет назад покупал очередной смартфон, то слегка удивил консультанта своей методикой выбора устройства: сперва нашёл у известного производителя аккумуляторов варианты с самой большой ёмкостью, и уже по ним смотрел совместимый смартфон. Объясняю консультанту: «нет, спасибо, чехол мне не нужен, я меняю крышку заднего отсека… Потому что когда батарея сдохла, уже не важно, сколько там ядер и какая версия Android...»

DISCLAIMER: автор выражает благодарность советской спичечной промышленности за эталон 5см (плюс-минус 1мм по ГОСТ 1820-2001), но никак не аффилирован с торговой маркой «Балабановские Спички»; все появления означенной марки в кадрах непреднамеренны.
Чтобы поднять читателю настроение, автор придумал каждому изделию шуточное название и perk на манер популярной компьютерной игры Fallout, специально для Geektimes.

Энергия правит этим миром, и пока ключевой фактор прогресса потребительской электроники — ёмкость носимой в кармане батареи. Вот и я смотрю на свой цифровой быт через призму удобной электрификации гаджетов. И пока учёные изобретают топливные элементы (а венчурные фонды считают потенциальные прибыли), вспомним более традиционные способы улучшения своей цифровой жизни, и заодно посмотрим на некоторые забавные аксессуары.

Итак, сколько плохих кабелей micro USB вы выбросили за последние пару лет? Лично я уже штук пять. А как понять качество кабеля, если заряд идёт, видимых повреждений нет, да и разъёмчик хорошо сидит? Как комфортнее электрифицировать гаджеты в автомобиле, в самолёте, в лесной глуши и на горной вершине?
Читать дальше →

Допустимые и недопустимые контакты металлов. Популярные метрические и дюймовые резьбы

Reading time8 min
Views188K
Электронику часто называют наукой о контактах. Многие знают, что нельзя скручивать между собой медный и алюминиевый провода. Медная шина заземления или латунная стойка для платы плохо сочетаются с оцинкованными винтиками, купленными в ближайшем строительном супермаркете. Почему? Коррозия может уничтожить электрический контакт, и прибор перестанет работать. Если это защитное заземление корпуса, то прибор продолжит работу, но будет небезопасен. Голая алюминиевая деталь вообще может постепенно превратиться в прах, если к ней приложить даже низковольтное напряжение.

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

В советских ГОСТах было написано почти всё о допустимых контактах металлов, но если изучение чёрно-белых таблиц из 1000 ячеек мелким шрифтом утомляет, то правильный ответ на «медный» вопрос — нержавейка, либо никелированная сталь, из которой, кстати, и сделан почти весь «компьютерный» крепёж. В эпоху чёрно-белого телевидения были другие понятия об удобстве интерфейса, поэтому для уважаемых читателей (и для себя заодно) автор приготовил цветную шпаргалку.

И, раз уж зашла речь о металлообработке, заодно автор привёл таблицу с популярными в электронике резьбами и соответствующими свёрлами, отобрав из объёмных источников наиболее релевантное по тематике портала. Не все же здесь слесари и металлурги, экономьте своё время.
Читать дальше →

Прецизионное литьё мягким силиконом в домашних условиях, с помощью 3D-печати

Reading time14 min
Views40K
Одни люди страдают от фетишизма, но другие им наслаждаются, как православные фермеры на пасху — похмельем. А почему нет? «С утра выпил — день свободен», — гласит известная поговорка. Вот и автор относится ко второму типу, наслаждаясь инженерным фетишизмом по полной программе. Но во всём нужны мера и здравый смысл.

Данная статья про то, каких успехов можно добиться при использовании «непечатных» материалов, на старенькой «Пруше», без всяких выкрутасов и специальных экструдеров. В качестве use case автор задвинулся на многодисковой системе и решил максимально увеличить плотность установки «шпинделей» с одновременным уменьшением вибраций. В борьбе за миллиметры понадобилась пара дюжин абсолютно одинаковых мелких деталей с допусками 100мкм из очень мягкого и «тянучего» материала. Впрочем, если уважаемый читатель уже забыл про HDD, как про страшный сон, вообще абстрагируйтесь от use case и обратите внимание на нюансы литья, там тоже бывает нескучно.

По мнению автора, потребительские виброгасящие решения имеют скорее психологический эффект, чем метрологический. Почему? Наверное, из-за тугой резины, передающей большую часть энергии пульсаций на корпус. Поэтому для автора было очень важно измерить результаты описанного здесь технологического процесса хоть и любительскими, но объективными средствами. Чудес не произошло, но где-то треть отыграть удалось.

Что касается силикона, его часто ассоциируют с материалом самих форм для отливки, а не отливаемым изделием. Литьё в формы вообще — дело довольно нудное занимательное, но автор в любом случае разбавляет историю инженерным трэшем для развлечения публики.
Читать дальше →

Сохранение игры в Unity3D

Reading time19 min
Views170K
Иногда сохранения просто не подразумевает жанр... Если вы пишете не казуалку под веб и не беспощадный суровый рогалик, без сохранения данных на диск не обойтись.
Как это делается в Unity? Вариантов тут достаточно — есть класс PlayerPrefs в библиотеке, можно сериализовать объекты в XML или бинарники, сохранить в *SQL*, можно, в конце-концов, разработать собственный парсер и формат сохранения.
Рассмотрим поподробнее с первые два варианта, и заодно попробуем сделать меню загрузки-сохранения со скриншотами.

Будем считать, что читающий дальше базовыми навыками обращения с этим движком владеет. Но при этом можно не подозревать о сущестовании в его библиотеке PlayerPrefs, GUI, и ещё в принципе не знать о сериализации. С этим всем и разберёмся.
А чтобы эта заметка не стала слишком уж увлекательной и полезной, ориентирована она самый неактуальный в мобильно/планшетно/онлайновый век вариант — сборку под винду (хотя, конечно, более общих моментов достаточно).

  • Кстати, пару недель назад на Хабре была статья, где автор упомянул, что Unity3D проходят в курсе компьютерной графики на кафедре информатики питерского матмеха. Занятный факт, немало говорящий о популярности движка.
    Хотя насколько это в целом хорошая идея — на мой взгляд, тема для дискуссии. Может быть, обсудить это было бы даже интереснее вопросов сериализации =)

Пройти на следующую локацию

Аппаратный bit banding CortexM3/M4(ARM), архитектура ядра, ассемблер, С/C++14 и капля метапрограммирования

Reading time9 min
Views25K

Введение


Внимание, это не очередная «Hello world»статья о том как помигать светодиодом или попасть в свое первое прерывание на STM32. Однако, я постарался дать исчерпывающие объяснения по всем затрагиваемым вопросам, поэтому статья будет полезна не только многим профессиональным и мечтающим стать таковыми разработчикам (как я надеюсь), но и начинающим программистам микроконтроллеров, так как тема эта почему-то обходится стороной на бесчисленных сайтах/блогах «учителей программирования МК».

image
Читать дальше →

Artificial neural networks explained in simple words

Reading time7 min
Views4.6K
image

When I used to start a conversation about neural networks over a bottle of beer, people were casting glances at me of what seemed to be fear; they grew sad, sometimes with their eyelid twitching. In rare cases, they were even eager to take refuge under the table. Why? These networks are simple and instinctive, actually. Yes, believe me, they are! Just let me prove this is true!


Suppose there are two things I’m aware of about the girl: she looks pretty to my taste or not, and I have lots to talk about with her or I haven’t. True and false will be one and zero respectively. We’ll take similar principle for appearance. The question is: “What girl I’ll fall in love with, and why?”


We also can think it straight and uncompromisingly: “If she looks pretty and there’s plenty to talk about, then I will fall in love. If neither is true, then I quit”.


But what if I like the lady but there’s nothing to talk about with her? Or vice versa?

Read more →

Об инженерном подходе замолвлю я слово

Reading time10 min
Views23K
Привет, Хабр.

Этим расслабленным воскресным вечером мне бы хотелось поговорить на две темы, отчасти взаимосвязанные — о том, что такое и как вообще выглядит инженерный подход в разработке электроники, а также как и зачем писать на Хабр статьи про эту электронику так, чтобы они были приятны и понятны всем.

Навела меня на эту мысль фраза в сегодняшней статье — «Под катом многабукав, но будет инженерненько»; к сожалению, не только под катом не было инженерненько, но и вообще в очень большом проценте статей по теме «как я сделал девайс», публикуемых в последнее время на Хабре, нет ничего инженерного.

Почему?

Потому, что у любого инженера — как и у программиста, врача, юриста и вообще любого профессионала — есть базовая методология работы, без соблюдения которой деятельность из профессиональной превращается в бессистемные метания. Точнее, даже не методология — к методологии мы можем отнести аджайл, ТРИЗ и вот это вот всё, оно у каждого своё — а грубая стратегия, которую можно записать в несколько шагов.

Итак, что же это применительно к электронике?
Читать дальше →

Горький урок отрасли ИИ

Reading time5 min
Views53K
Об авторе. Ричард Саттон — профессор компьютерных наук в университете Альберты. Считается одним из основателей современных вычислительных методов обучения с подкреплением.

По итогу 70-ти лет исследований в области ИИ главный урок заключается в том, что общие вычислительные методы в конечном счёте наиболее эффективны. И с большим отрывом. Конечно, причина в законе Мура, точнее, в экспоненциальном падении стоимости вычислений.

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

Стремясь к улучшению в краткосрочной перспективе, исследователи пытаются применить человеческие знания в предметной области, но в долгосрочной перспективе имеет значение только мощность вычислений. Эти две тенденции не должны противоречить друг другу, но на практике противоречат. Время, потраченное на одно направление, — это время, потерянное для другого. Есть психологические обязательства инвестировать в тот или иной подход. И внедрение знаний в предметной области имеет тенденцию усложнять систему таким образом, что она хуже подходит для использования общих вычислительных методов. Было много примеров, когда исследователи слишком поздно усваивали этот горький урок, и полезно рассмотреть некоторые из самых известных.
Читать дальше →

Что не нужно делать, если у вас украли телефон

Reading time7 min
Views236K
Ранее каждый раз, когда я видел сообщения о том, что у человека украли телефон, то всегда задавался вопросом: а зачем? Ну, серьезно, зачем воруют смартфоны если:

  • его можно отследить по IMEI, а смена IMEI явно не бесплатна;
  • на телефоне могут быть установлены блокировки, снять которые так же не бесплатно;
  • есть приложения с режимом «Антивор», которые передают фото, видео и аудио;
  • даже встроенные возможности Android (и, полагаю, iOS) имеют функцию геолокации пропавшего устройства;
  • устройство может иметь особые приметы, которые довольно сложно устранить «бесплатно»;
  • наверняка где-то рядом есть камеры видеонаблюдения, свидетели и т.п.;
  • при продаже краденного за него сложно будет выручить большую сумму денег.

Осознавая все это, я действительно не понимал, для чего же воруют телефоны, если, по сути, их легко найти, а денег на этом не заработать? Не понимал до 8 февраля 2019 года, пока у меня у самого не украли телефон.
Читать дальше →

11 вопросов, которые нужно обсудить до начала работы

Reading time5 min
Views19K
Мало кто думает о разрешении или предотвращении конфликтный ситуаций в процессе сотрудничества до их возникновения. Очень часто к проблемам и порче отношений приводят не какие-то непримиримые разногласия и даже не способность каждой из сторон выполнять свои обязательства, а простые недомолвки, разный взгляд на “значения по умолчанию”. Этот небольшой чеклист позволит вам избежать множества проблем при работе.

1. Какую работу требуется выполнить


Не просто в общих чертах, а подробно. Важно, чтобы обе стороны одинаково понимали что нужно сделать и что будет являться результатом сотрудничества. Чем подробнее, тем лучше. Важно зафиксировать объем.

Если договоренностей нет, то разбежности в толковании объема ведут к недовольству и конфликту. Один считает, что работа выполнена не полностью, другой же наоборот, считает, что сделал уже больше оговоренного и его обманывают.
Читать дальше →

Отучаемся от токсичных практик на код-ревью

Reading time9 min
Views43K

Код-ревью частенько порождают споры. При подготовке лекции «Отучаемся от токсичного поведения на код-ревью» на конференции AlterConf я была готова услышать кучу возражений и критики. Но совершенно не ожидала, что сообщество настолько поддержит идею. Я предполагала сопротивление, но сообщество очень доброжелательно и с одобрением приняло меня. 

Меня попросили поделиться слайдами, но теперь я подумала, что слайды сами по себе малополезны и вырваны из контекста: им не хватает объяснений. Поэтому решила опубликовать эту статью. Позже организаторы конференции выложили видеозапись.
Читать дальше →

Самые нестрашные яды

Reading time26 min
Views115K

И снова привет, %username%!

Спасибо всем, кто оценил мой опус «Самые страшные яды».

Было очень интересно почитать комментарии, какими бы они ни были, было очень интересно отвечать.

Я рад, что «хит-парад» понравился. Если он не понравился — ну что ж, я сделал всё, что мог.

На написание второй части меня вдохновили именно комментарии и активность.

Итак, представляю очередную смертельную десятку!
Читать дальше →

Говорят, выучить Python и стать программистом легко. Правда?

Reading time11 min
Views235K
image

Работать в ИТ — круто, но путь в индустрию может быть совсем не таким, как описывают родители или преподаватели в школе. На биржах труда ищут мобильных разработчиков, девопсов, бэкендеров и фронтендеров, но где эти профессии в списках специальностей классических вузов?

Мы запускаем цикл статей в которых подробно расскажем о каждой профессии через опыт людей. В первом выпуске обсуждаем Python-разработчиков. Свои истории рассказали Артем Сухаренко и Данила Лобанов. Они пришли в профессию совсем недавно, но успели набраться опыта в других сферах. А экспертом выступил Алексей Петренко — декан факультета Python в Geekbrains.

Мы поговорили о том, что нужно знать перед обучением, чем хорош и плох язык, что трудного ждет в обучении и на чем стоит сосредоточиться; какие профессии и деньги сулит знание языка, как готовиться к первым собеседованиям и многое другое.
Читать дальше →

Как бесплатно автоматизировать мониторинг госзакупок

Reading time4 min
Views28K
Скажу сразу, статья скорее техническая, это инструкция.
Но начну с истории.

Сейчас я работаю на компанию со 100 процентным государственным участием, учредитель — одна уважаемая госкорпорация.

Год назад я запустил здесь новый процесс — участие в госзакупках. Да — да, вот так бывает, госкомпания не участвовала в госзакупках.

Попытки запустить это были, но безуспешные.

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

Я был в недоумении некоторое время, пока не решил перезапустить этот процесс, выпросив оплатить аккаунт на Контур.Закупках.

Всё настроил и стал мониторить сам. Находил конкурсы отдавал в отдел продаж, завертелось, закружилось.

Людям нравится когда что-то происходит. Отдел продаж загорелся.

Если кратко описать, что нужно, чтобы запустить процесс участия в госзакупках, то вам надо:
1. Настроить мониторинг госзакупок
2. Чтобы кто то отбирал проекты, понимая ФЗ и читая все требования. Убирать лишнее.
3. Вести учет состояния проектов в едином интерфейсе.
4. Готовить заявку на участие в конкурсе, понимая структуру вашей цены
5. Иметь аккаунты на электронных торговых площадках (ЭТП)
6. Уметь писать жалобы в ФАС на снос конкурсов (юрист)
7. Проводить аналитику своего, извиняюсь, рынка
Читать дальше →

Как решить «Сапёра» (и сделать его лучше)

Reading time6 min
Views51K

«Сапёр» (Minesweeper) — это простая игра с простыми правилами, однако некоторые её конфигурации создают любопытные трудности. В этой статье мы создадим солвер «Сапёра» с увеличивающейся сложностью, и поразмышляем над тем, как меняется динамика игры при постепенном повышении уровня помощи. В конце мы разработаем новый вариант игры с гораздо более интересным геймплеем.

Локальные рассуждения: ноль соседних мин


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

Такое рассуждение совершенно локально: для принятия решения о следующем действии учитывается информация только одной клетки.

Сложно придумать ситуацию, в которой игра стала бы хуже без этой автоматической помощи. Попробуйте сыграть в такую игру, чтобы получить представление о том, как она проходит без автоматического открытия клеток [в оригинале статьи все примеры интерактивны]
Читать дальше →

Микробиота. Как заботиться о бактериях кишечника

Reading time5 min
Views20K
Мы с Атласом уже рассказали, как работает микробиота, какие бактерии живут в кишечниках россиян и как микробиота влияет на развитие заболеваний. Сегодня делимся информацией, как заботиться о бактериях кишечника, чтобы оставаться здоровым.


Автор иллюстраций Rentonorama
Читать дальше →

Как не врать с помощью статистики: основы визуализации данных

Reading time6 min
Views24K


Не раз слышал мнение, что задача аналитиков — показать откровенно «грустные» цифры таким образом, будто всё идет по плану. Возможно, где-то так и происходит, но в геймдеве всё наоборот. Нам надо представить максимально объективные данные, чтобы в проекте принимались правильные решения. И сделать так, чтобы эти данные были поняты.

Часто это сложнее, чем привирать с помощью красивых графиков.

Поэтому я собрал несколько базовых принципов визуализации, которые применяю в работе (список источников в конце). Пригодится, если вы пишете отчеты, готовитесь к презентации или просто хотите донести смысл каких-то цифр. Главное: чтобы сделать хороший график, не нужно быть талантливым художником или виртуозно владеть matplotlib/ggplot2. Поехали.
Читать дальше →

Советские мечты о будущем

Reading time9 min
Views94K


Помните очаровательного котика, которые чихал в заставке советского мультфильма? Мы помним, и нашли его — вместе с ворохом другой рисованной фантастики. В детстве она пугала и обескураживала, поскольку поднимала серьезные, взрослые темы. Настала пора пересмотреть старые мультфильмы, чтобы узнать, о каком будущем мечтали в той стране.

Information

Rating
Does not participate
Registered
Activity