gahcep

16 января 2017, Владивосток, Россия

# Понедельник 56 твитов

Привет! На этой неделе с вами C++ embedded dev в Imaging (digital cameras) Сергей Даниельян @gahcep. Недавно еще и PTL одного из проектов.

3:54

Попробую в паре твитов о компании и чем занимаемся: но хотелось бы шире описать область (для буд. вопросов и обсужд.)

3:55

Основное направление деятельности компании - разработка решений в сфере Imaging - по сути это digital cameras для разл. игроков на рынке ...

3:56

... (Action Cameras, Car DVR и VR). Фишка - нетривиальные решения ( одновременные видео стримы, взаимод. между камерой и моб. устройствами)

3:56

Мы являемся оф. партнером Ambarella и на базе SoC от нее и собственного SDK в разумные сроки стараемся дать законченное решение под ключ.

3:57

Для примера, есть даже своя IQ (Image Quality) лаборатория, Computer Vision отдел, а также Electrical и Mechanical инженеры.

3:57

Я же в системной разработке кроссплатф. компонент на С++ (входят в наш SDK). Участвую в различного рода задачах связанных с Linux/RTOS

3:59

Рассказ будет о разном, в том числе о С++ (как же без него), ARM архитектуре (если будет интересно), Linux (конечно же), кросс-компиляции...

4:00

... коснемся нашего dev env, различных policy (код и процесс разработки), нашей билд системе (в рамках NDA) и что будет вам интересно.

4:01

Наибольший интерес, я надеюсь, вызовут описания проблем (технических, организ.) связанных с миром embedded разработки именно в нашей сфере.

4:02

К сожалению, я жестко связан NDA и самые вкусности не смогу рассказать, но, думаю все равно будет интересно.

4:03

Фух, с intro закончил ;) В общем, давайте знакомится, пишите вопросы. Как раз определимся с тем кому что интересно и интересно ли вообще.

4:05

Что будет наиболее интересно?

4:07
@backendsecret не лучшее время выбрал для интерактива)

Да, часовые пояса никто не отменял... Ну ничего, я терпеливый) twitter.com/adukv/status/8…

4:11

Note: прошу не заменять равнозначно #embedded в Imaging на понятие IoT. Это все же разные области, хотя IoT в некоторых проектах есть.

5:24

Кстати, следили за CES недавней? Что больше всего порадовало? Как вам Snapdragon 835?

5:27
@backendsecret Linux/RTOS это soft RT? А кроме Linux какие-нибудь RTOS используете?

Нет, RTOS и Linux - отдельные OS работающие на разных ядрах. RTOS - проприетарная, Linux строится через buildroot с… twitter.com/i/web/status/8…

7:43
@backendsecret Что там в мире embed актуально в роли IDE? CLion используют в качестве C++ ide?

Если код пишешь, то в основном vim/emacs/atom/sublime, если баги чинишь, инвестигейт кода, то тут либо vim/emacs+uc… twitter.com/i/web/status/8…

10:11

Кстати, относительно новая штучка для Code Investigate появилась - несколько человек у нас вроде пощупали даже coati.io

10:14
@backendsecret Что там в мире embed актуально в роли IDE? CLion используют в качестве C++ ide?

Ну и как бы embed разный бывает. Много задач на поиск багов, инвестигейт. Бывает 80% времени ищещь багу в video фло… twitter.com/i/web/status/8…

10:20
@backendsecret приходится ли писать ARM-специфичный код? Скорость работы железок устраивает? В общем интересно про железку и cross compile

Лично мне нет, разбираться много в существующем - да. С каждым новым релизом от вендора, правим lds, размеры partit… twitter.com/i/web/status/8…

10:29
@backendsecret приходится ли писать ARM-специфичный код? Скорость работы железок устраивает? В общем интересно про железку и cross compile

Некоторые алгоритмы пишутся с использованием #ARM #Neon если скорость нужна. Некоторые пакеты строятся с опциями дл… twitter.com/i/web/status/8…

10:31

Расшифрую немного: TL - team lead; PTL - project team lead; PM - program manager; SSP - System Support Package; BSP - Board Support Package

10:33
@backendsecret ну и да, ещё интересно пробовали ли llvm, плюсы, минусы, подводные камни :)

К сожалению, нет. Самому интересно поиграться с llvm, но пока руки не дошли. twitter.com/alexanius/stat…

10:35

3/3. Есть PM. Он рулит проектами и PTL'ми. Отдельно QA - но там похожий принцип. Ну и я не касаюсь топ менеджмента. Тут думаю у всех одно.

10:45

2/3. Есть другие инженеры, они в camera application домене - пилят конечное приложение. У них свой руководитель (PTL).

10:45

1/3. Немного по инж. организации: есть инженеры заточенные на SDK и они делятся на домены (still, video, etc). У них есть руководитель (TL).

10:45
@backendsecret жги про arm's, интересно.

Споки, все будет :) twitter.com/dixie_fl47l1n3…

11:18
@backendsecret мне интересны вопросы автоматизации, построения релизных циклов, тестирования в embedded.

Все что смогу в рамках этого формата и NDA, расскажу (если успею ;) twitter.com/dixie_fl47l1n3…

11:19
@backendsecret ещё интересно послушать как устроены обновления, что делаете с базами в продакшен прошивках и тд

Хороший вопрос. Firmware update - тема интересная. Взял на заметку, расскажу немного. Тут кстати и ARM приплести мо… twitter.com/i/web/status/8…

11:26
@backendsecret а чем отличаются SSP от BSP? И можно пару слов про системы сборки, что за buildroot, слышал про всякие yocto и т.д.

Начну с SSP/BSP, а потом пару слов про остальное ;) twitter.com/dixie_fl47l1n3…

13:29

7/7. Есть также термин #MSP (Middleware SP) - набор специфичных либ/API/примеров, например, все что связано с медиа либо периферией

13:30

6/7. #SSP также часто может включать примеры работы с API от вендора, какие-нибудь законченные приложения, тесты.

13:30

5/7. #SSP (System SP) - сложнее. Обычно включает в себя гораздо больше. В нашем случае, это системные либы (IPC, USB stack, DSP microcode).

13:30

4/7. Или например, работаешь с DMA_CHANNEL_CNT и на одной борде это макс. 4 канала, на другой - 2, хотя сам чип может 16 максимум.

13:30

3/7. Грубо, подключив #BSP, ты юзаешь, BASE_PERIPH_ADDR как есть, не придавая значения, что на борде А - это 0xABC, а на борде B - это 0xFED

13:30

2/7. То есть ты не паришься конкретным адресом вот той шины либо смещением UART0 (который на разном железе может быть разным).

13:30

1/7. #BSP (Board SP) - поддержка конкретного железа/борды. Абстракция от самого низкого уровня либо уровня перед ним.

13:31

Вообще в плане BSP и библиотек для работы с чипами, меня реально вставил ASF (#Atmel Software Framework) asf.atmel.com/docs/latest/cm…

13:39

#ASF имеет гармоничное и разумное разделение по уровням функционала (boards,drivers,components и т.п.). Легко юзать в том же Atmel Studio.

13:41

Только внимательно, тот же слой DMA в ATF немножко бажный ;) pic.twitter.com/ek9b7YwsEN

13:43
@backendsecret то есть все эти *SP - это условные названия для различных абстракций? Реализацией может быть как документация так и либы?

Все же BSP более устаканенное понятия и зачастую это все же набор либ/файлов/классов. Нет, документация может являт… twitter.com/i/web/status/8…

13:45
@backendsecret Ооокей, становится яснее :)

Например, на рисунке ниже, слой boards входит в BSP. А вот относить те же drivers - уже вопрос. Остальные *SP - ven… twitter.com/i/web/status/8…

13:50
@backendsecret с чем связано, что некоторые бренды не выдают документацию на чипы, даже 2-3 поколения от текущих? Например silabs

2/2. Главных факторов неск-ко: 1) Конкуренция (ибо в доках много тех инфы) 2) Защита репутации (дают тем кто точно… twitter.com/i/web/status/8…

13:56
@backendsecret с чем связано, что некоторые бренды не выдают документацию на чипы, даже 2-3 поколения от текущих? Например silabs

1/2. Хор. вопрос. Это "стандартное поведение" IP (Intel. Prop.)-имущих. Во-первых, дают, но своим партнерам: разные… twitter.com/i/web/status/8…

13:56
@backendsecret ну не все самсунги, да :) Мне надо было в пределах 1к штук :( Может есть какие-то посредники через которых можно получать?

Ох, сомневаюсь что получится. Посредник дорожит своими отношениями с вендорами (кто вас знает, может раскроете инфу… twitter.com/i/web/status/8…

14:12
@backendsecret с чем связано, что некоторые бренды не выдают документацию на чипы, даже 2-3 поколения от текущих? Например silabs

С японцами вообще круто - могут просто не дать и все тут. Аргументируй, плюйся, итог один - нет доки, нет контракта… twitter.com/i/web/status/8…

14:14

4/4. Отличия между системами сборки в том, что одна акцентирует внимание на доступносте и простоте, другая - на мощи кастомизации.

14:39

3/4. Что можно кастомизировать? Да что угодно: 1) cross toolchain 2) libstd: newlib вместо glibc 3) тип rootfs или свой пакет/rule добавить

14:39

2/4. То есть X собирает для вас: cross-toolchain, rootfs, kernel, bootloader. cross-toolchain чтобы на x86 собрать OS для ARM.

14:40

1/4. Совсем крако про buildroot/openembedded/yocto. Позже - подробнее. Все перечисленное позволяет вам собрать ваш собственный образ OS.

14:40
@backendsecret @alexanius а как вы играетесь(хотите поигиаться) с llvm/clang?

Поиграться - в смысле поизучать и разобрать пресловутые "compile-time, link-time, run-time, and idle-time" оптимиза… twitter.com/i/web/status/8…

15:26
@backendsecret @alexanius а как вы играетесь(хотите поигиаться) с llvm/clang?

Касаемо #clang - поизучать его инфру по типу GCC Internals gcc.gnu.org/onlinedocs/gcc… twitter.com/_alekum_/statu…

15:27
@backendsecret можно будет потом отдельно пару слов, как во все это попасть? Что где вводное почитать, какую борду… twitter.com/i/web/status/8…

Конечно можно, добавил в свой TODO на эту неделю ;) twitter.com/dixie_fl47l1n3…

15:39

Итак, первый день закончен (сорри, мне бай-бай скоро :). Не переключайтесь.

15:40

Ну и напоследок, ссылочке на youtube канал одного интересного перца - там про дизайн PCB, немного про DDR, и разное youtube.com/user/matarofe

15:42

# Вторник 48 твитов

Всем доброго! Поскольку вчера закончили тяжелыми темами, начну этот день с тем полегче. Прежде всего, итог голосования

4:24

Так, потер случайно poll :). На первом месте C++, затем процесс, затем ARM/GCC и совсем неинтересно про buildroot. В целом пропорция ясна

4:27

Про инж. орг.: часть инженеров заточены под что-то спец. Кто-то саппортит и поднимает сенсора, кто-то работает NAND, кто-то эксперт в USB

4:29

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

4:29

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

4:29

Ну что, все проснулись? :) Давайте немного о процессе и тулах. А чуть позже расскажу про всякие EVT/PVT и этапы разработки embedded

7:04

Как у вас с коммуникациями в команде? У нас Skype - чаты разной направленности. Ну и ножками иногда, если вопрос серьезный.

7:04

Пробовал продвинуть Slack, но он не вписался в требования менеджеров (флоу общения с клиентами). С заказчиками - GoTo Meeting или кастомное

7:05

Кратко по нашему CM,CI. Да есть, нет, не устраивает во многом, но "так исторически сложилось".

7:05

CI: QuickBuild/Proofbuild с кастомной надстройкой (верификация HW/SW билдов - regression, unit-testing, sanity, boot).

7:05

Repo: SVN (когда то был Perforce), люди разбавляют #git локально. Пробовали уйти, пока не решились.

7:06

Wiki на базе redmine, review board для ревью, тикеты в JIRA. Кстати, ничего удобнее Atlassian не видел. Дорого, но стоит своих денег.

7:06
@backendsecret уйти от использования #git ??

Наоборот, от svn. Наследие большое и все сложнее решиться. twitter.com/BesseIFunction…

7:26
@backendsecret у нас успешно используют slack. А ещё иногда телеграмм, для маленькой команды

А какие сценарии работы? private rooms? Дорого выходит на команду? Что с видео-звонками? twitter.com/BesseIFunction…

7:27

Кстати, меня тут на модный wire.com переманивают. Но что-то сыроват, хотя ребята активно работают судя по github.

7:28
@backendsecret скайп - это ужас. У нас слак.

О да, учитывая что у кого-то Linux, у кого то Win на которой он сломался. Ужас - еще мягко. twitter.com/aeon_666/statu…

7:42

3/3. Управление доступом очень примитивно, неудобство отслеживания интеграций , скучаем по P4 shelve perforce.com/perforce/r15.1…

7:42

2/3. Неконсистентность: одни и те же вещи ведут себя по-разному в разных контекстах. Проблем. области: externals, eol-style, symlinks, patch

7:42

1/3. Для тех кому интересны причина того что нас не устраивает svn (разных - разное, но в целом солянка такая):

7:43
@backendsecret про ценник не знаю, его просто купили на всех, как я поняла. Видео кажется нет, не пользуюсь. А чаты командные есть, все ок

Ну вот на самом деле, он не очень дешевый если в команде более 30-50 человек. Я предлагал для всех - free, и только… twitter.com/i/web/status/8…

8:12
@backendsecret тариф бесплатный интеграций полторы (kapacitor двум людям в личку гадит), на историю пофиг, видеозвонки не котируются особо.
8:31
@backendsecret эх, десктопный клиент пилят на electron, тяжеловат конечно, особенно в сравнении с недавно зарелизенным клиентом Telegram

Меня доставила их заскок на private. Почему нет статуса в app: github.com/wireapp/wire-d… twitter.com/grim_juz/statu…

8:33
@backendsecret и iOS позволяла бы "вот ему, ему и ему, а еще боту, если он пишет про то, то и то" будить меня ночью, я был бы счастлив)

Вот мне любопытно стало, а где у вас такой флоу? Рабочий? Или для удобства? twitter.com/strizhechenko/…

8:39

Неб. оффтопик: несколько каналов для slack польз. : dist-sys.slack.com hangops.slack.com devopschat.slack.com #devops #DistSys

8:40

Кстати, печаль и ужас, так и не нашел вменяемых каналов по embedded/fpga/pcb/c++. Подсобите, если знаете...

8:41
@backendsecret ну, как по мне on-call engineer должен иметь доступ до кого-то, кто может помочь, если ночью не может справиться с проблемой.

Да, в таком случае, я соглашусь. Если поделитесь хаками либо ботами рульными, буду признателен ;) twitter.com/strizhechenko/…

8:43
@backendsecret slack, hipchat + helpdesk для несрочных вопросов
8:45
@backendsecret @strizhechenko telegram.me/proembedded из этого списка github.com/A-gambit/aweso… - не?

К сожалению, уже шерстил, нет ничего по тематике... twitter.com/hatarist/statu…

8:47
@__pewpew__ @strizhechenko @backendsecret встряну в тред. Есть такой зверь как about.mattermost.com типа self-hosted слацк
9:17
@backendsecret отвечай себе на твит плз иначе по ленте расползается

Ох, извиняюсь, сделаем. twitter.com/ruxeg/status/8…

10:56

Всем спасибо за ответы, давайте двинемся дальше ;)

14:50

Стадии которые проходит устройство от закл. договора и до выпуска (generic пример с оглядкой на #Imaging область)

14:51

@backendsecret ST1. Заинтересованность: понравились заказчику (конферен.), референс (или редирект) от вендора, продолж. сотрудничества

14:53

@backendsecret ST2. SOW: оценки, подписание конктракта, согласование требований, milestone schedule, evaluation. In charge: RM, разработчики

14:57

@backendsecret ST3. Подписание контракта и начало работ. Начальная фаза на железе вендора, постепенно получаем кастомерское. Всегда мало HW

14:57

@backendsecret ST4. Кастомерское HW. Итерируемый цикл: DevBoard/EVT/DVT/PVT с разработкой и постоян. тестированием (ручное, автоматизация)

14:58

@backendsecret ST5. Наладка сборки, Mass Production. Доставка первых образцов VIP кастомерам.

14:58

В теории EVT (engin. valid.) - обкатка HW, DVT (design VT) - проверка на соответствие требов., PVT (prod. VT) - стабилизация и фикс багов.

14:59

@backendsecret На практике, все формал. Часто на фазе PVT могут вносить изм. в PCB, а на MP менять линзу. Или на PVT вдруг материал на зам.

14:59

Беря во внимание набор HW что присутствует на типичной #action #camera (GNSS, Wi-Fi, Bluetooth, IMU) ...

15:00

@backendsecret можете представить в какой ад может превратиться отладка и стабилизация всего разнооборазия (перегрев, повыш. частота DRAM)

15:00

Посоветую довольно подробную и интересную статью как раз с обзором всего #embedded #LifeCycle blog.bolt.io/the-illustrate…

15:02

Отдельным вопросом стоит QA. Здесь и классика (sanity, regression, ручное) и board-specific (boot, stress-тестирование подсистем) и HW-spec.

15:33

Как тестируют Wifi, GNSS, IQ камеры и прочее железо? Тут NDA, но для любозн. ищите по keywords: Chamber (audio/gps), Light Box/ Black Box.

15:33
@backendsecret @_komaz купить, чтобы проверить работоспособность на своем гавнокоде? нет

Мне на тот момент связки vim/tmux/uctags/ctrlp/ranger/YCM было за глаза чтобы не покупать что-то для какого теста.… twitter.com/i/web/status/8…

16:04

В общем, про процесс очень кратко расписал. Если (и что) интересно, задавайте вопросы. Завтра по C++, GCC, а то приуныли что-то ;)

16:12

Напоследок, пара ссылочек. blog.acolyer.org - автор выделяет интересные с его точки зрения paper и описывает их на plain english

16:18

Канал на youtube - PapersWeLove. Авторы наиболее рульных paper приглашаются для презентации своей работы youtube.com/user/PapersWeL…

16:25

# Среда 42 твита

Всем доброго утра. Буду делиться разным, пишите любые вопросы, комментарии. Касаемо и не очень C++!

6:27

Про нас. Юзаем и С и С++. Также есть небольшие части на perl, python. Ну и bash/BAT куда без них. #cpp #cpp11 #embedded

6:27

Ядро и все базовое пишется либо на C, либо на C++03 либо C++11. Преобладает уже C++11.

6:28

Если что-то кастомное и специфическое для проекта, то пишут на С++14. Сам сижу на С++11.

6:31

Свой Code Style, ревью проходит в том числе и на соответствие ему. Не всем по духу, но лучше чем не иметь вовсе.

6:38

Для embedded C/C++ советую посмотреть на #MISRA C и MISRA C++ стандарты programmingresearch.com/coding-standar… #cpp

6:39

Из С++11 юзаем почти все, кроме atomics, regexp, threads. Любим move semantics, lambda. #cpp11

6:49
@backendsecret бесплатная версия не хранит историю, это не удобно

Согласен, но у нас для важных вещей есть Wiki, а в чатике - рабочие сиюминутные вопросы. Либо запрос по оборудовани… twitter.com/i/web/status/8…

7:11
@backendsecret std::atomic у нас тоже используют

Спасибо за дополнение, не знал :) twitter.com/nikitamalyavin…

7:12
Коллега рассказывает об интересностях нашего воркфлоу.
Подписывайтесь, задавайте вопросы!
#rhonda #embedded twitter.com/backendsecret/…

Поддерживаю, в рамках NDA, но вкусняшки у нас есть ;) twitter.com/nikitamalyavin…

7:16

Для потоков/локов юзаем свою кросс-платформ. имплементацию - там три части: #POSIX (#Linux), #RTOS примитивы и Win

7:17

Кстати, по поводу #GDB и удаленной отладки, советую вот эту статью коллеги: habrahabr.ru/post/274179/ #debugging

7:27

@backendsecret Поскольку это платный стандарт, коллеги посоветовали глянуть на codingstandard.com/section/index/ #cpp #cpp11

7:59

Касаемо шаблонов - пользуем довольно активно, но без фанатизма. Да, variadic template юзаем #cpp #dev

8:43

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

8:44

Хорошие C++ FAQ лежат тут: isocpp.org/faq github.com/isocpp/CppCore… #cpp

8:45

Частые баги/косяки на ревью - инвалидация итераторов, велосипеды когда можно заюзать <algorithm>. Неверная испол. erase/remove идиомы

9:54

Сам недав. сглупил - const map в хедере прописал. Хедер включается далеко не один раз ;) Как следствие, копирование и аллокации в разные TU

10:09
@backendsecret ну это было с появления шаблонов. Неужели ничего не поменялось за это время?Лет 10 не интересовался C++, а там все по-старому

Так это вполне обоснованное поведение. Ну то есть, все оки, просто при отгрузке иногда "лишний" код надо убрать в о… twitter.com/i/web/status/8…

11:36
@den4ikbyte @backendsecret это позволяет сгенерировать наиболее эффективный код для данного типа

Все так, напр. для пользователя А код раздут всего двумя типами (int, bool), для пользователя B всеми (напр. + stri… twitter.com/i/web/status/8…

14:18

На некоторых проектах юзаем #PlantUML - для генерации схем и диаграмм. Кстати, весьма удобно для #Doxygen документации.

14:20

Плюс #PlantUML в том что он текст. - можно дифы генерить и наблюдать развитие проекта. В vim плагин github.com/aklt/plantuml-… например

14:24

Хорошая тема: #const #correctness Ставим везде где reasonable. Дает защиту от изменений + документирование. Bitwise vs. Logical constness

14:29

На тему логической vs битовой константности #cpp можно почитать тут isocpp.org/wiki/faq/const…

14:31

У комп. есть свои extensions. gcc.gnu.org/onlinedocs/gcc… Чтобы строить ANSI C, напр., можно заюзать '-pedantic' флаг. То есть C99 vs GNU99 #GCC

14:35

Да, важный момент! C и C++ - два разных языка. Факт. На эту тему отличнейшая! презен. от Dan Saks youtube.com/watch?v=D7Sd8A…

14:44

То что допиливать Open Source приходится, наверное и так понятно. Например: habrahabr.ru/post/249991/ #OpenOCD #baremetal

15:38

online compilers: мне нравится godbolt.org, коллега пощупал разные: htrd.su/wiki/zhurnal/2…

15:40

Подвожу под более хардкорные вещи. Для начала моя статья (базовое) о memory layout codingfail.com/cpp-internals-… как строить, что на выходе.

15:42

Оффтоп: сейчас с вот этим чудом разбираюсь: ATSAMB11 - Cortex-M0. Если есть коллега по "счастью", отзовись ;) Погов… twitter.com/i/web/status/8…

16:01

Важно! Есть фичи языка, есть compiler-specific поведение, есть особенности платформы, а есть #ABI (Application Binary Interface)

18:14

Если кратко, ABI - low-level интерфейс взаимодействия app и OS: objects aligment/size, functions calling conventions, object files layout

18:15

#ABI делится на две "части": общая (generic/common) и Processor Supplement (ps, учитывающая конкретную арх.) - Intel 386 / AMD64

18:30

Продолжу по #ABI. System V ABI - является как бы базой которую юзают Linux/BSD и от которой отрастают ps. Не относится к Win.

18:41

#ABI. Было довольно гиморно в свое время разобрать что актуальное, что нет и с чего начать и читать так чтобы было последовательно. Ловите:

18:42

@backendsecret 1. Generic Old System V ABI :: Generic Part (gABI) --- sco.com/developers/dev…

18:43

@backendsecret 3.2. Intel 386 psABI supplement --- github.com/hjl-tools/x86-…

18:44

@backendsecret 4. AMD64 (x86-64) psABI --- github.com/hjl-tools/x86-…

18:45

Читайте, комментируйте, задавайте вопросы! А я все. Завтра будет интересно. Не переключайтесь, я спать.

18:48

Напоследок, акки людей на которые стоит подписаться точно: worth reading: @arne_mertz @meetingcpp @supahvee1234 awesome accounts #dev #cpp

18:51

# Четверг 28 твитов

@backendsecret у тебя случайно нет канала в Телеграме?

Вот чего нет, того нет twitter.com/tair_rhyme/sta…

13:41
@backendsecret Расскажи, как разработчики на С справляются без ООП=)

Хорошая тема, Никита. Но я еще даже не начал про C++) twitter.com/nikitamalyavin…

13:43
@ru_Parallels @habrahabr а вы считали сколько пришло с @backendsecret ?
13:43
@nikitamalyavin @backendsecret Нормально справляются)

Подробности в студию! Хоть пару слов twitter.com/webholt/status…

13:44

Да, кстати, всем привет. Сегодня я запозднился из-за работы. И первая ласточка будет вопросом.

14:10

Кто нибудь юзал атрибут/секцию ramfunc при работе с #embedded? Интересны реальные кейсы. Нужна чтобы положить функ. из ROM в RAM.

14:19

@backendsecret Сам если честно вообще ни разу не юзал. Вроде как TI, IAR и GCC саппортят. Для #ARM можно #Interrupt vector table перекинуть

14:19

Старый добрый main, который entry point (на самом деле нет) содержит не только argc и argv, но еще что-то... #cpp #dev

15:22

@backendsecret но и не portable, но присутствующий envp (environment) ине очень явный auxv - #ELF #Auxiliary Vectors

15:28
@backendsecret ещё env. Или кроме этого ещё что-то есть? В дюбом случае это задаётся abi

Все верно. В данном случае ELF описание которого входит в ABI twitter.com/alexanius/stat…

15:29

С помощью #ELF Auxiliary Vectors процессы получают инфу от ядра: смотрим #VDSO (дальше станет яснее зачем я это упомянул)

15:32

Как смотрим зависимости бинарей или либ? ldd -v или readelf -d #linux #cpp #dev pic.twitter.com/oDiZiuigpd

17:18

Строим простой C++, смотрим через ldd зависимости. Видим разное. Всякие libstdc++ libm libc пропускаем (C/C++ runtime), а вот дальше круче

17:22

@backendsecret libgcc_s - это #GCC имплементит ариф. операции типа умн. или деление + работа с floating points + разное.

17:35

@backendsecret /lib64/ld-linux-x86-64.so - собственно, сам ELF линкер (ld.so для a.out). На моей оси ссылка на /lib64/ld-2.21.so

17:37

@backendsecret Ну и linux-vdso.so (на некоторых системах linux-gate.so) - инфа бинарю передается через уже упомянутый auxv, а суть в ...

17:38

@backendsecret ... уменьшении оверхеда когда app очень часто вызывает какой-гибудь syscall (чаще всего речь о получении тек. времени).

17:39

@backendsecret Делается это самим ядром - каждый процесс получает этот виртуальный *.so к себе в память + адреса рандомятся (security)

17:41

Пару ссылочек на эту тему: man7.org/linux/man-page… 0xax.gitbooks.io/linux-insides/… #vdso #linux #ld #gcc

17:43

Кстати, советую вот эту книгу github почитать - пишет awesome @0xAX 0xax.gitbooks.io/linux-insides/ #linux

17:44
@backendsecret Что значит "на самом деле нет"? Понятно, что-то вызывает main, это что-то тоже откуда-то вызвано и так далее. Так где начало?

libc вестимо. Этому будет посвящена часть времени тут, но можете пока глянуть на __libc_start_main и crt*.o объектн… twitter.com/i/web/status/8…

18:09
@backendsecret Что значит "на самом деле нет"? Понятно, что-то вызывает main, это что-то тоже откуда-то вызвано и так далее. Так где начало?

Вообще то соврал немного. Не совсем libc :) и скажем, в целом можно без нее и обойтись. Чуть позже обо всем этом. Е… twitter.com/i/web/status/8…

18:13

Давайте попробуем собрать наш app "каноническими" командами cpp (preprocessor), cc1 (compiler), as (assembler) и ld (loader) #gcc

18:37

@backendsecret
#preprocessor: cpp -time -v example.c > example.i
#compiler: cc1 -ansi example.i
#assembler: as --64 -o example.o example.s

18:40

@backendsecret #linker ld -dynamic-linker ld-linux-x86-64.so.2 -o example crt1.o crti.o crtbegin.o -lc example.o crtend.o crtn.o

18:42

@backendsecret Ну вот и все, на выходе работ. app. Note: пути должны быть верные. Подробнее о последней стадии позже.

18:43

Напоследок мысля. undefined behavior типа i = ++i; (ну спрашивали вас такое ведь?) выявлять легко если знать про Sequence Points #cpp

18:56

Чуть не забыл. C++ Weekly with Jason Turner youtube.com/user/lefticus1 Выпуски не однотипные и все интересные #cpp

19:14

# Пятница 16 твитов

@backendsecret ...которые deprecated с C++11.

Ну как бы не deprecated, просто по другому называют. Типа слишком сложно для понимая twitter.com/feelthefrog/st…

3:47

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

13:19

Хочется чего-то универсального? Конкуренцию #Raspberry сложно составить. Третий еще не заказал. Cortex-A53. Ням raspberrypi.org/products/raspb…

13:24

@backendsecret Очень давно работал с такой бордой - тоже популярная: beagleboard.org Строил на OpenEmbedded для нее.

13:25

Начать просто. Куча tutorial от производителя (точно для Raspberry есть). Читаем, строим, заливаем образ (+ядро) на flash, прошиваемся

13:28

Себе недавно купил вот эту железку (Cortex-A9), свободы не супер много. Тот же uboot сложно последней версии взять. starterkit.ru/html/index.php…

13:29
@backendsecret @Raspberry_Pi orange pi же, если графика сильно не нужна.
13:31
@backendsecret @Raspberry_Pi java для неё в каком состоянии сейчас?
13:32

Важно понять чего хочется. Если поиграться, то самый простой и популяр. Если с AV - мощнее + in/out специф. Если экзотики - FPGA борду

13:35
@backendsecret @Raspberry_Pi А odroid c2?

Вот краем только слышал. Чем лучше Raspberry? В чем фишка, так сказать? twitter.com/aurvedr/status…

13:38

А, ну и мой perfecto: parallella.org #FPGA + Cortex. Второй удобен для "позапускать ОСи"

13:40
@backendsecret у меня такая, но глубоко не копаюсь. Надо бы ядро пересобрать чтобы LXC заработал, но я пока не знаю… twitter.com/i/web/status/8…
13:46
@backendsecret мощный CPU, гиг eth и не на шине usb, 2 Гб ОЗУ и разъем под eMMC (быстро читает и пишет), вот только ядро 3.14
13:48
@backendsecret да и жрет вроде меньше по питанию

А вот это очень нуно, особенно в тенденциях современного мира - везде 4K, стриминг. Юзаем LPDDR + режимы сна CPU (н… twitter.com/i/web/status/8…

13:51

Кстати, очень важный (если не самый) момент - выбор батареи. Понять что это, зачем и как можно тут batteryuniversity.com/learn/

14:11

Тви, а кто подскажет плату на которой периферия классная? GNSS, IMU разные (acceler., gyro)? Или строго модулями к сущест. добивать?

14:13

# Воскресенье 31 твит

@backendsecret начать то ясно. А чем закончить можно?
10:22

Для Raspberry можно спокойно тестить на qemu, так как почти все раскопано и зареверс. Один минус - GPU binary blob.

11:25

Raspberry интересен наличием GPU, но вроде нет борды с GPU но без закрытых blob'ов.

11:32
@backendsecret с каких точек зрения для вас это минус?

Только с одной - я не могу увидеть исходные коды и понять как оно работает на низком уровне. twitter.com/astarasikov/st…

11:33

@backendsecret @astarasikov конечно есть бинарник и всегда можно почитать асм ... как вариант. Касаемо GPU, сталкивались с чем-то похожим?

11:38

Попытка сделать open source firware для VideoCore чипа rasp pi news.ycombinator.com/item?id=127429…

11:39
@backendsecret не смотрел конкретно rPI. но такая проблема есть много где-что делают стартовые бутлодеры.на многих SoC их и сдампить нельзя.
11:44

Кто что думает про Эльбрус? То тут то там ведомственные службы совершают переезд с IBM на Эльбрус.

12:04

Для тех кто не в теме: elbrus.ru/arhitektura_el… youtube.com/channel/UC6pnR… (акк разраба)

12:09

@backendsecret Обеспечение защищенного исполнения программ на языках С и С++ #cpp mcst.ru/files/511cea/8… страницф 200

12:33
@backendsecret а сам то что думаешь? ;)

На самом деле я рад за ребят. Да, дорого, да, юрикам только, да, специфика (VLIW). Но радует что арх. своя; интерес… twitter.com/i/web/status/8…

14:14
@backendsecret была б возможность его руками потрогать-поковырять самому, было бы что сказать, но цены же..

Цены имхо норм для малосерийного производства. И вроде у них где-то доступ был... или послышалось ;) twitter.com/last_khajiit/s…

14:15
@backendsecret вы имеете в виду хостинги на эльбрусах с виртуалками, в которых можно вообще потыкаться?)

Было бы круто такое иметь), но автор заикался про shared доступ. Был ли он доступен для всех или для огран. круга л… twitter.com/i/web/status/8…

14:20

Позволю себе немного основ. Дополняйте если что. Обобщенно boot sequence выглядит так (каждая "ступень" может быть опц. либо многосоставной)

14:23

@backendsecret microcode (тот самый binary blob) -> bootstrap (bst) -> bootloader (bld) -> user binary (u-boot для дальн. инита, kernel)

14:24

@backendsecret И bst и bld могут иметь stages. На одной из стадий инит DDR/SDRAM, на другой может инит network для загрузки очер. бинаря

14:25

@backendsecret Специфика у каждой борды/вендора, читаем доки на чип + мануал к борде. Прим. boot sequence для R-Pi: elinux.org/RPi_Software#O…

14:27

Ссылочка на неплохой гайд по #GCC от Brian Gough: tfetimes.com/wp-content/upl… также не забываем про gcc.gnu.org/onlinedocs/gcc…

14:32

Микро-гайд как отстроить свой kernel, rootfs, cross-toolchain используя (или нет) #buildroot (легко заменяем на аналоги, но принцип тот же).

15:21

@backendsecret Кратко, кросс-компиляция: строим компил. (BUILD system) который на HOST сис-ме будет строить для TARGET платформы.

15:21

@backendsecret Звучит сложно, но чаще всего BUILD равно HOST. Подробнее на отлич. ресурсе - en.wikipedia.org/wiki/Cross_com…

15:22

@backendsecret При исп. buildroot можно отстроить дефолтный кросс-комп., можно добавить внешний (как из репо, так и вручную отстроенный)

15:22

@backendsecret Для #ARM я советую оптимизированный и performance-improved от Linaro. linaro.org/downloads/

15:22

@backendsecret Разницу между arm-linux-gnueabihf и, напр., aarch64-linux-gnu читаем в оф. FAQ wiki.linaro.org/WorkingGroups/…

15:23

@backendsecret Строим кросс-компилятор Linaro с помощью wiki.linaro.org/ABE pic.twitter.com/QhryAf9vpx

15:24

@backendsecret Качаем buildroot c buildroot.org/download.html, распаковываем. Строим для, скажем, versatile ARM (arm926).

15:25

@backendsecret Надо дать знать ядру и buildroot конфигурацию борды и misc настроек pic.twitter.com/lXhLomQVYi

15:25

@backendsecret На выходе, zImage (ядро), и rootfs. Может быть слиш. кратко и непонятно, но пути обозначены. Читаем команды, меняем опции

15:26

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

16:20

Спасибо @dcromster за предоставленную возможность. Спасибо всем кто был заинтересован. Не забываем подписываться на @gahcep

16:20

Напоследок, неоднозначная, но жизненная статья про нас, embedded разрабов. (Автор НЕ я, маты +18) medium.com/russian/%D0%BF…

16:20

www.youtube.com

github.com

other