TGViewer
Channel Public Channel
VW Tooltips & works

VW Tooltips & works

@vw_tooltips

Embedded і трішки різного
Subscribers
128
Photos
118
Videos
23
Links
250

Showing posts older than #373 · Back to latest

Older Posts 18 shown
Post #372 395
Коробочка обрела домик, теперь живет в распечатанном корпусе
Post #371 451
Жду когда можно Yocto и Buildroot образы ставить на электросишки, х
Post #370 533
Для Qt Creator попозже докину инструкцию, тоже получилось запустить. Может в статью это вообще оформить?
Post #369 484
#embedded #cmake #vscode
Прикручиваем удаленную отладку к VSCode. ПО собрано с тулчейном buildroot-a
1. Для удобства работы пользоваться будем тулчейн-файлом, который генерируется buildroot-ом. Находится он где-то вот тут:
buildroot_out_folder/host/share/buildroot/toolchainfile.cmake
В моем случае это будет путь вида:

/home/valenti/Development/Embedded/exercise8/build_orange_zero_image/host/share/buildroot/toolchainfile.cmake
2. В VSCode настраиваем все, чтобы можно было работать с CMakePresets - файлами:
https://github.com/microsoft/vscode-cmake-tools/blob/main/docs/cmake-presets.md
3. Создаем себе пресет для кросс-сборки приложения:

{
"version": 2,
"configurePresets": [
{
"name": "buildroot_orange_pi_zero",
"displayName": "Orange Pi Zero buildroot custom toolchain",
"description": "Sets orangepi custom buiild toolchain",
"generator": "Unix Makefiles",
"binaryDir": "${sourceDir}/build/${presetName}",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"CMAKE_TOOLCHAIN_FILE": "/home/valenti/Development/Embedded/exercise8/build_orange_zero_image/host/share/buildroot/toolchainfile.cmake",
"CMAKE_INSTALL_PREFIX": "${sourceDir}/install/${presetName}"
}
}
]
}
4. Собираем, в теории сборка должна пройти безболезненно. По ходу докидываем в образ системы необходимые зависимости, собираем, повторяем до готовности образа. На всякий случай проверяем, как собрался итоговый образ
5. По окончанию сборки закидываем собранный бинарь на целевую железку.
6. Настраиваем в VSCode файл для запуска дебаггера:
Создаем launch.json и в него накидываем что-то вроде:

{
"version": "0.2.0",
"configurations": [
{
"name": "Test server ARM Orange Zero",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceRoot}/build/buildroot_orange_pi_zero/app_test_drogon_server",
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"miDebuggerServerAddress": "192.168.0.116:8876", // тут 8876 это порт, на котором будет поднят gdbserver
"miDebuggerPath": "/home/valenti/Development/Embedded/exercise8/build_orange_zero_image/host/bin/arm-buildroot-linux-uclibcgnueabihf-gdb",
"externalConsole": true,
"MIMode": "gdb",
"stopAtConnect": true,
"setupCommands": [
{
"text": "source /home/valenti/Development/Embedded/exercise8/build_orange_zero_image/staging/usr/share/buildroot/gdbinit"
},
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
}
],
"compounds": []
}

На целевом устройстве
запускаем бинарь с поднятым gdbserver-ом:

gdbserver :8876 app_test_drogon_server

В VSCode запускаем отладку по
F5 и смотрим в консоль отладчика:

T
hread 2 "DrogonIoLoop" hit Break
point
2,
 JsonCtrl::asyncHandleHttpRequest(std::shared_ptr<drogon::HttpRequest> const&, std::function<void (std::shared_ptr<drogon::HttpResponse> const&)>&&) (this=0x5b9920, req=..., callback=...) at /home/valenti/Development/Embedded/dragon_playground/main.cpp:18
18 spdlog::info("Handlded get request to json!");

Собственно, можем удаленно отлаживать

устройство
GitHub vscode-cmake-tools/docs/cmake-presets.md at main · microsoft/vscode-cmake-tools CMake Tools provides a robust, convenient workflow for CMake projects in VS Code. It simplifies configurations with CMake presets, supports IntelliSense and built-in debugging for CMake scripts, an...
Post #368 355
#embedded_linux #overlayfs
Добавляем overlayfs на чистый образ в buildroot:
1. Необходим патч на ядро. Выполняем:
 make menuconfig
Kernel->Custom Kernel Patches
Добавляем https://github.com/altera-opensource/linux-socfpga/commit/ec497e866a22c9b90e8600177a5a6b0c2dec6938.patch
2. Добавляем поддержку overlayfs:

make linux-menuconfig
File systems->Overlay Filesystem Support
(Можно включить все опции)
Device Drivers-> Device Tree and Open Firmware support -> Device tree overlays + Device tree Overlay ConfigFS interface
3. Сохраняемся, собираем образ, закидываем на SD карту

mount x /sys/kernel/config -t configfs
mkdir /sys/kernel/config/device-tree/overlays/foo
Получаем configfs
Источники:
https://joshis1.github.io/embedded_linux/2020/04/01/Linux-Device-tree-overlay.html
https://gist.github.com/mkresin/b987b98c41793143c4b0a49da60b275b#file-of-overlay-L4
https://github.com/altera-opensource/linux-socfpga/commit/ec497e866a22c9b90e8600177a5a6b0c2dec6938.patch
joshis1.github.io Linux Device tree overlay Shreyas Joshi blogging channel.
Post #367 322
#embedded_linux
Возможно кому-то это спасет немного нервов и времени. Наверняка, х
Задача- поднять драйвер термопары, которая есть в модулях ядра по SPI
Проблема- почему-то сыпалось постоянно, что занят Chip Select 0 для SPI1. Платформа- orange pi zero. В ходе ковыряния дошел до того, что в spidev это модуль, который позволяет обращаться к SPI из userspace. Как-то вот так. Что можно сделать - самый простой вариант -выкинуть его, т.к. SPI1 из userspace мне не нужен.
Как нашел:
https://wiki.st.com/stm32mpu/wiki/How_to_use_SPI_from_Linux_userland_with_spidev

&spi1 {
status = "okay";
temp-sensor@0{
compatible = "maxim,max6675";
reg = <0>;
spi-max-frequency = <4300000>;
spi-cpha;
};
// spidev@0 {
// compatible = "rohm,dh2228fv";
// reg = <0>;
// spi-max-frequency = <10000000>;

// };
};
А дальше - поправили dts,в случае orange pi zero - это будет BUILDROOT_BUILD_DIR/build/linux-5.10.10/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts
И


ma
k
e linux-rebuild
make

P
.
S. 
Н
а
счет
 mak
e
 linux-rebuild не уве
рен, скорее всего есть способ как собрать чисто DTS и собрать образ, чтобы не триггерить постоянно пересборку ядра
P.S.S. Так-то и на Phenom 965
make linux-rebuild
проходит достаточно быстро
А, и читать из термопары довольно удобно:

cd sys/bus/iio/devices/iio:device0/
cat in_temp_raw
Только потом полученное значение надо перегнать в нормальный формат
Post #366 356

Forwarded from федрольня

Post #364 449
#embedded_linux
Столкнулся с микропроблемой, что не мог сходу найти, где выбирать сборку драйверов, которые уже в ядре есть. Помогла эта статья:
https://habr.com/ru/post/448638/

В моем случае надо было включить в дерево сборки термопару и для поиграться решил докинуть еще пульсиоксиметр(просто посмотреть, как заведется)

make linux-menuconfig
Device Drivers->Industrial IO Support->Temperature Sensors->Maxim Thermocouple sensors

А дальше из этого слепить .fragment файл, который можно добавить:
make menuconfig
Kernel->Additional configuration fragment files

Не забыв про разделитель-пробел
Хабр Buildroot — часть 1. Общие сведения, сборка минимальной системы, настройка через меню Введение В данной серии статей я хочу рассмотреть систему сборки дистрибутива buildroot и поделиться опытом её кастомизации. Здесь будет практический опыт создан...
Post #363 471
Post #358 267
/me доволен 2021м годом
Всех с наступающими праздниками!
Post #355 227
Случился маленький праздник. Платки для долгостроя доехали:
Post #354 340
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →