Последние сообщения

Страницы: [1] 2 3 ... 10
1
Linux / Re: Кросс-компиляция
« Последний ответ от Александр Вчера в 13:28:01 »
Как насчет Raspberry Pi?
https://wiki.gentoo.org/wiki/Raspberry_Pi/Cross_building
В разных источниках рекомендуют
# crossdev -S -v -t armv6j-hardfloat-linux-gnueabi
и
# crossdev -S -v -t armv6j-unknown-linux-gnueabihfОднако в моем случае crossdev версии 20181202 выругался на параметр -v
* UNKNOWN OPTION: '-v'
Usage: crossdev [options] --target TARGET

Options:
    --b, --binutils ver      Specify version of binutils to use
    --g, --gcc ver           Specify version of gcc to use
    --k, --kernel ver        Specify version of kernel headers to use
    --l, --libc ver          Specify version of libc to use
                                Note: versions support depend atom syntaxes:
                                 e.g. ">=2.20" "~4.6.1" "=2.13.1-r3"
    -A, --abis abis          Specify ABIs to build, first one is the default
    --host-abi abi           Specify the ABI of the compiler itself
    --env env                Specify env settings for all packages (see below)
    --[bdgkl]env env         Specify env settings for binutils/gdb/gcc/kernel/libc
                                Note: make sure to quote: 'VAR="some value"\nFOO="cow"'
    -f, --force              I don't need a seat belt!
    -S, --stable             Use latest stable versions as default
    -C, --clean target       Uninstall specified target
    -P, --portage opts       Options to pass to emerge (see emerge(1))
    --with[out]-headers      Build C library headers before C compiler?
    --show-fail-log          If the build fails, dump the failing log

Overlay Options:
    -oS, --overlays list     Space delimited list of overlays to search
                                [default: `portageq repositories_configuration`]
    -oO, --ov-output path    Parent directory of overlay to write crossdev package links
                                [default: uses repo with name 'crossdev', or
                                 'cross-${CTARGET}', or falls back to first
                                 from --overlays list]
    -ob, --ov-binutils path  Overlay for binutils ebuilds [default: search]
    -od, --ov-gdb path       Overlay for gdb ebuilds [default: search]
    -og, --ov-gcc path       Overlay for gcc ebuilds [default: search]
    -ok, --ov-kernel path    Overlay for kernel ebuilds [default: search]
    -ol, --ov-libc path      Overlay for C library ebuilds [default: search]
    -ox, --ov-extra path     Overlay for extra packages [default: search]

Stage Options:
    -s0, --stage0            Build just binutils
    -s1, --stage1            Also build a bare C compiler (no C library/
                                C++/shared GCC libs/C++ exceptions/etc...)
    -s2, --stage2            Also build kernel headers
    -s3, --stage3            Also build the C library
    -s4, --stage4            Also build a full compiler [default]
                                (shared libs GCC/various lang frontends/etc...)

External Tooling Options:
    --show-target-cfg        Display target settings that crossdev will use
    --init-target            Setup config/overlay/etc... files only

Extra Fun (must be run after above stages):
    --ex-only                Skip the stage steps above
    --ex-gcc                 Build extra gcc targets (gcj/ada/etc...)
    --ex-gdb                 Build a cross gdb
    --ex-pkg pkg             Build extra packages (may be used multiple times)

Target (-t) takes a tuple ARCH-VENDOR-OS-LIBC; see 'crossdev -t help'

Без опции -v собрался
calculate /home/strange # crossdev -S -t armv6j-hardfloat-linux-gnueabi
-                                                                               
 * crossdev version:      20181202
 * Host Portage ARCH:     amd64
 * Target Portage ARCH:   arm
 * Target System:         armv6j-hardfloat-linux-gnueabi
 * Stage:                 4 (C/C++ compiler)
 * USE=multilib:          no
 * ABIs:                  default

 * binutils:              binutils-[stable]
 * gcc:                   gcc-[stable]
 * headers:               linux-headers-[stable]
 * libc:                  glibc-[stable]

 * CROSSDEV_OVERLAY:      /usr/local/portage-crossdev
 * PORT_LOGDIR:           /var/log/portage
 * PORTAGE_CONFIGROOT:    /
 * Portage flags:         
                                                                               
 * leaving metadata/layout.conf alone in /usr/local/portage-crossdev
                                                                               
 * Log: /var/log/portage/cross-armv6j-hardfloat-linux-gnueabi-binutils.log
 * Emerging cross-binutils ...                                            [ ok ]
 * Log: /var/log/portage/cross-armv6j-hardfloat-linux-gnueabi-linux-headers-quick.log
 * Emerging cross-linux-headers-quick ...                                 [ ok ]
 * Log: /var/log/portage/cross-armv6j-hardfloat-linux-gnueabi-glibc-headers.log
 * Emerging cross-glibc-headers ...                                       [ ok ]
 * Log: /var/log/portage/cross-armv6j-hardfloat-linux-gnueabi-gcc-stage1.log
 * Emerging cross-gcc-stage1 ...                                          [ ok ]
 * Log: /var/log/portage/cross-armv6j-hardfloat-linux-gnueabi-linux-headers.log
 * Emerging cross-linux-headers ...                                       [ ok ]
 * Log: /var/log/portage/cross-armv6j-hardfloat-linux-gnueabi-glibc.log
 * Emerging cross-glibc ...                                               [ ok ]
 * Log: /var/log/portage/cross-armv6j-hardfloat-linux-gnueabi-gcc-stage2.log
 * Emerging cross-gcc-stage2 ...                                          [ ok ]
calculate /home/strange #

2
Linux / Кросс-компиляция
« Последний ответ от Александр Вчера в 12:54:40 »
Для компиляции проектов под различные архитектуры требуются различные тулчейны.
Много хороших отзывов о crosstool-NG именно его я использовал при сборке тулчейна для компиляции проектов под ESP8266, в котором используется Xtensa – Tensilica’s L106.

Для работы, да и вообще для всего я использую дистрибутив GNU Linux Calculate Linux, основанный на Gentoo Linux.
crosstool-NG в портежах нет, зато из коробки есть другой инструмент - crossdev.
Устанавливается он просто
# emerge crossdev
https://wiki.gentoo.org/wiki/Crossdev
Далее с его помощью собирается тулчейн под ту или иную архитектуру
# crossdev -t архитектура

Подсказки можно найти
# crossdev --helpПодсказки по архитектурам
crossdev --target help
Для удаления использовать
#emerge --ask --depclean sys-devel/crossdev
Для STM32 требуется тулчейн arm-none-eabi
Его и соберем
calculate /home/strange # crossdev -t arm-none-eabi
-                                                                               
 * crossdev version:      20181202
 * Host Portage ARCH:     amd64
 * Target Portage ARCH:   arm
 * Target System:         arm-none-eabi
 * Stage:                 3 (C compiler & libc)
 * USE=multilib:          yes
 * ABIs:                  default

 * binutils:              binutils-[latest]
 * gcc:                   gcc-[latest]
 * libc:                  newlib-[latest]

 * CROSSDEV_OVERLAY:      /usr/local/portage-crossdev
 * PORT_LOGDIR:           /var/log/portage
 * PORTAGE_CONFIGROOT:    /
 * Portage flags:         
                                                                               
 * leaving metadata/layout.conf alone in /usr/local/portage-crossdev
                                                                               
!!! WARNING - Cannot auto-configure CHOST arm-none-eabi;
!!! You should edit
!!! by hand to complete your configuration.
!!!  No LIBC is known for this target.
!!!  No KERNEL is known for this target.
 * Log: /var/log/portage/cross-arm-none-eabi-binutils.log
 * Emerging cross-binutils ...                                            [ ok ]
 * Log: /var/log/portage/cross-arm-none-eabi-gcc-stage1.log
 * Emerging cross-gcc-stage1 ...                                          [ ok ]
 * Log: /var/log/portage/cross-arm-none-eabi-newlib.log
 * Emerging cross-newlib ...                                              [ ok ]
calculate /home/strange #
Ура, все собралось!  :)

То же и с AVR
calculate /home/strange # crossdev -t avr
-                                                                               
 * crossdev version:      20181202
 * Host Portage ARCH:     amd64
 * Target Portage ARCH:   *
 * Target System:         avr
 * Stage:                 3 (C compiler & libc)
 * USE=multilib:          yes
 * ABIs:                  default

 * binutils:              binutils-[latest]
 * gcc:                   gcc-[latest]
 * libc:                  avr-libc-[latest]

 * CROSSDEV_OVERLAY:      /usr/local/portage-crossdev
 * PORT_LOGDIR:           /var/log/portage
 * PORTAGE_CONFIGROOT:    /
 * Portage flags:         
                                                                               
 * leaving sys-devel/binutils in /usr/local/portage-crossdev
 * leaving sys-devel/gcc in /usr/local/portage-crossdev
 * leaving dev-embedded/avr-libc in /usr/local/portage-crossdev
 * leaving sys-devel/gdb in /usr/local/portage-crossdev
 * leaving metadata/layout.conf alone in /usr/local/portage-crossdev
                                                                               
 * Log: /var/log/portage/cross-avr-binutils.log
 * Emerging cross-binutils ...                                            [ ok ]
 * Log: /var/log/portage/cross-avr-gcc-stage1.log
 * Emerging cross-gcc-stage1 ...                                          [ ok ]
 * Log: /var/log/portage/cross-avr-avr-libc.log
 * Emerging cross-avr-libc ...                                            [ ok ]
calculate /home/strange #
На самом деле с AVR не всегда все так просто - иногда не собирается последняя версия binutils или gcc.
Это неприятно, но не катастрофично - достаточно прямо указать какие версии собирать (по умолчанию собирается последняя).
Как вариант, можно попробовать указать сборку стабильной версии - параметр -S
# crossdev -S -t avr


3
Умный дом / Re: Raspberry Pi
« Последний ответ от Александр 18 Февраль 2019, 23:41:28 »
Если нужны i2c и SPI интерфейсы
# nano /boot/config.txt
# Uncomment some or all of these to enable the optional hardware interfaces
dtparam=i2c_arm=on
dtparam=i2c0=on
dtparam=i2c1=on
#dtparam=i2s=on
dtparam=spi=on
dtoverlay=w1-gpio

По умолчанию для 1W используется BCM4 (см. распиновку Вашей платы)
Если нужно определить свой пин последняя строка должна выглядеть так: dtoverlay=w1-gpio,gpiopin=x
Начиная с ядра 4.9.28 есть возможность динамически подгружать оверлеи с определением пинов, при этом можно организовать более одной шины 1wire.
    sudo dtoverlay w1-gpio gpiopin=4 pullup=0  # header pin 7
    sudo dtoverlay w1-gpio gpiopin=17 pullup=0 # header pin 11
    sudo dtoverlay w1-gpio gpiopin=27 pullup=0 # header pin 13

После перезагрузки в /sys/bus/i2c/devices, /sys/bus/spi/devices и /sys/bus/w1/devices появятся устройства.

Дополнительно для работы с i2c
# nano /etc/modules
Добавить
i2c-bcm2708
i2c-dev

apt install i2c-tools libi2c-dev python-smbus
4
Умный дом / Raspberry Pi
« Последний ответ от Александр 18 Февраль 2019, 22:32:30 »
Первичная настройка Raspbian

В Raspbian stretch (возможно и раньше) boot находится в отдельном разделе SD карты.
Чтобы разрешить доступ по SSH при первом запуске, нужно создать пустой файл с именем ssh в /boot

Разгоним, чтобы не так медленно все работало
В /boot/config/txt
#uncomment to overclock the arm. 700 MHz is the default.
arm_freq=1000
core_freq=500
sdram_freq=600
over_voltage=6

#Зачем разбазаривать память, если нет монитра?
gpu_mem=16 Возможно, этот параметр можно и менее поставить.

$ sudo passwd root для задания пароля root.
$ sudo nano /etc/ssh/sshd_config
 Найти PermitRootLogin prohibit-password, раскомментировать и заменить на PermitRootLogin yes
Сохранить файл.
$ service ssh restart для перезапуска демона ssh.
Можно переподключиться от пользователя root.
$ userdel pi для удаления дефолтного пользователя.

Обновим систему
# apt update
# apt upgrade

Сконфигурируем
# raspi-config

Поставим mc
# apt install mc

Теперь имеет смысл сохранить первично настроенный под себя образ перед всякими непотребными экспериментами
Для этого
# shutdown -h now завершаем работу
Вынимаем SD, вставляем её в свой рабочий комп
$ dd if=/dev/наша_SD of=/home/куда_хотим_сохранить
5
Электронные устройства / Re: Инвертор на Железном трансформаторе
« Последний ответ от Tomson 18 Февраль 2019, 09:19:45 »
итоговый вид
6
Электронные устройства / Re: Инвертор на Железном трансформаторе
« Последний ответ от Tomson 18 Февраль 2019, 09:19:17 »
В эти выходные потеплело, поехал на дачу трансформатор свой в порядок привести, перемотать  :) попробовал медью 35 мм2  - не смог согнуть :) пришлось алюминием две жилы по 30 мм2 от сварочника
7
Аккумуляторы / Re: Соединение 40 шт нк-125
« Последний ответ от past went 16 Февраль 2019, 09:26:09 »
Уведомления, да.. Не всегда, видимо, доходят, или теряются в почте
Ёмкость банок мерять нечем, поэтому стараясь одинаково, разрядил и зарядил сборки по 125ач, замерял каждую, сутки отстоялись, опять замерял, и разбил по напряжению на 10s4p опять. К весне соединю 4s10p
8
Солнечные панели / Re: Мой парк панелей
« Последний ответ от past went 16 Февраль 2019, 08:46:10 »
7 фсм 150, 4 фсм 100, 1 фсм 200, все монокристал, висят ближе к вертикали на стенах дома и веранды
9
После перезагрузки путем отключения и повторного включения проблема ушла.
Заметил, что часто стал виснуть при хорошем заряде с кодом "другая ошибка" 150 иот который
10
А какая емкость батарей у вас?
Свинца реальных полтораста ач, и щёлочи по 125 ач подключаются. Батарею в 500 ач щелочи сейчас не успевает заряжать порой, ну и на ютубе попалсь видео, где человек по 10 банок тоже подключает.
Страницы: [1] 2 3 ... 10
Яндекс.Метрика