Еще один трекер для беспилотника (записей: 372)

  • Аватар профиля schs schs в 6 г., 7 мес. назад

    При замене PINA на PIND(это правильно?) вылезает ошибка по нехватки памяти:

    Скетч использует 33924 байт (110%) памяти устройства. Всего доступно 30720 байт.
    Глобальные переменные используют 1171 байт (57%) динамической памяти, оставляя 877 байт для локальных переменных. Максимум: 2048 байт.
    Скетч слишком большой; прочитайте http://www.arduino.cc/en/Guide/Troubleshooting#size

    Ошибка компиляции для платы Arduino Pro or Pro Mini.

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 6 г., 7 мес. назад
    [2017-09-12 14:10:10] schs писал(а): exit status 1'PINA' was not declared in this scope

    Это странно, почему-то не подцепились определения. 

    [2017-09-12 14:10:10] schs писал(а): поднимать под Линукс среду для сборки этого преоекта очень бы не хотелось, если возможно под arduino в Windows собрать.

    линух в виртуалке просто мастхэв если хобби такое высокотехнологичное.

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 6 г., 7 мес. назад
    [2017-09-12 14:22:04] schs писал(а): это правильно?

    ну ежели перепаять этот провод с порта А на порт Д то да.

    Проблема размера - тюнить компилятор и исключать из проекта ненужную функциональность. Однако в нынешнем состоянии проект даже не компиляется - сказались изменения в коде ОСД, так что пока лучше подождать до отмашки.

  • Аватар профиля schs schs в 6 г., 7 мес. назад

    Тогда жду отмашки.

    Если считаете что лучше будет в Linux - скажите что нужно, подниму под KVM. сложностей особых нет.

    Ранее ни разу необходимости сборки программ для Arduino именно под Linux не было.

    Дистрибутив?

    Номер версии дистрибутива?

    Компилятор? Версия компилятора?

    Что из пакетов, необходимых для сборкис прошивки маяка ставить?

     

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 6 г., 7 мес. назад
    [2017-09-12 18:10:38] schs писал(а): Ранее ни разу необходимости сборки программ для Arduino именно под Linux не было.

    дык это как бы не совсем Ардуино. Можно конечно и Ардуиновым ИДЕ собирать, должно работать, но лично мне из комстроки удобнее.

    Вопрос выбора линуха - дело вкуса и даже религии, у меня Центос6 в роли любимой системы на все случаи.

    [2017-09-12 18:10:38] schs писал(а): Компилятор? Версия компилятора?

    GCC-AVR без вариантов, он же и в ардуине используется. Вопрос с версией очень интересный, я пробовал все в диапазоне от 4.8 до 6.1, более свежие дают более компактный код, при этом с бОльшим количеством багов, так что в итоге остановился на той же 4.9.2 что идет в комплекте с Ардуино.

    Если собирать через Ардуино то ключи компиляции из Мейкфайла надо перенести в конфигурацию Ардуины

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 6 г., 7 мес. назад

    Все, подчистил, компиляется. Не прошивал, не проверял.

    /usr/local/pkg-i686-pc-linux-gnu/bin/avr-size --mcu=atmega328p -C --format=avr build-atmega328/OpenBeacon.elf
    AVR Memory Usage
    ----------------
    Device: atmega328p

    Program: 31820 bytes (97.1% Full)
    (.text + .data + .bootloader)

    Data: 1099 bytes (53.7% Full)
    (.data + .bss + .noinit)

  • Аватар профиля schs schs в 6 г., 7 мес. назад

    Увы, не помогло в Arduino не собирается:

    Скетч использует 33920 байт (110%) памяти устройства. Всего доступно 30720 байт.

    В arduino-1.8.3\hardware\arduino\avr\platform.txt пробовал подбирать опции компилятора - у меня не получилось. Может подскажите что должно быть в

    compiler.c.flags=

    compiler.c.elf.flags=

    compiler.cpp.flags=

    Параллельно буду ставить Linux для сборки Вашего проекта.

    Я не религиозен в плане выбора ОС, что надо для решения задачи - то и поставлю, создавать сам себе проблемы и героически преодолевать их не моё кредо.

    И так, по Вашему совету ставлю CentOS 6. 64 или 32 битную? Какая у Вас однозначно работает?

    gcc-avr можно использовать установив arduino или ставить отдельно?

    Посмотрел - из arduino:

    # ./avr-gcc --version
    avr-gcc (GCC) 4.9.2
    Copyright (C) 2014 Free Software Foundation, Inc.

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 6 г., 7 мес. назад

    [2017-09-13 07:25:43] schs писал(а):  пробовал подбирать опции компилятора - у меня не получилось. Может подскажите что должно быть

     Проще всего скопировать опции из мейкфайла.  и не совсем туда:

    compiler.c.extra_flags=-fno-optimize-sibling-calls -finline-functions-called-once -finline-small-functions -fmerge-all-constants -fno-signed-zeros -fno-early-inlining -fno-caller-saves

    compiler.cpp.extra_flags=-fno-optimize-sibling-calls -finline-functions-called-once -finline-small-functions -fmerge-all-constants -fno-signed-zeros -fno-early-inlining -fno-caller-saves

    Лучше в линухе ардуино установить, его библиотеки все равно нужны. 32 бита. GCC именно тот

    PS. еще в конце Readme есть хинт :)

     

    UPD. В Ардуине надо вбрать плату с загрузчиком Optiboot, и его же прошить в Мегу

  • Аватар профиля schs schs в 6 г., 7 мес. назад

    Дъявол в мелочах.

    Хинты применил - собралось с меньшим размером:

    Скетч использует 32402 байт (100%) памяти устройства. Всего доступно 32256 байт.

    #define SKIP_FLOAT прописал, плата выбрана Arduino/Genuino Uno

    uno.upload.tool=avrdude
    uno.upload.protocol=arduino
    uno.upload.maximum_size=32256
    uno.upload.maximum_data_size=2048
    uno.upload.speed=115200

    uno.bootloader.tool=avrdude
    uno.bootloader.low_fuses=0xFF
    uno.bootloader.high_fuses=0xDE
    uno.bootloader.extended_fuses=0xFD
    uno.bootloader.unlock_bits=0x3F
    uno.bootloader.lock_bits=0x0F
    uno.bootloader.file=optiboot/optiboot_atmega328.hex

    Что ещё править? Fuse не менять?

     

    P.S. CentOS 6.0 качается, как докачается - поставлю.

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 6 г., 7 мес. назад
    [2017-09-13 10:06:26] schs писал(а): Что ещё править? Fuse не менять?

    Еще надо библиотеку Ардуины пропатчить: во-первых изDigitalRead/Write убрать вызов turnOffPWM(), во-вторых правильно задать тип возвращаемых/прннимаемых агрументов для всех используемых функций, например на кой ляд digitalRead() возвращает int а не uint8_t

    Можно  также ненужные фичи отключить, например DTMF,

  • Аватар профиля schs schs в 6 г., 7 мес. назад

    Убрал вызов turnOffPWM(), чуть мень стало:

    Скетч использует 32322 байт (100%) памяти устройства. Всего доступно 32256 байт.

    А вот с заменой int на uint8_t в digitalRead размер не меняется.
    Если отключить USE_DTMF - влезает в размер.

    Fuse не менять?

    uno.bootloader.tool=avrdude
    uno.bootloader.low_fuses=0xFF
    uno.bootloader.high_fuses=0xDE
    uno.bootloader.extended_fuses=0xFD

     

     

     

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 6 г., 7 мес. назад

    Вобщем-то ардуино само ставит нужные фьюзы для выбранного бута

  • Аватар профиля schs schs в 6 г., 7 мес. назад

    Я optiboot писал не из arduino, непосредственно из avrdude.

    Вы же не из arduino собирает, наверно и прошиваете не из неё.

    Сейчас прошил fuse

    low_fuses=0xFF
    high_fuses=0xDE
    extended_fuses=0xFD

    Правильно или другие нужны?

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

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 6 г., 7 мес. назад

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

  • Аватар профиля schs schs в 6 г., 7 мес. назад

    Скриншот калькулятора

    http://s018.radikal.ru/i502/1709/0d/c76a2bc9421e.png

← Форум группы   Все форумы К последней записи
Постов на странице:

Вы автоматически вступите в эту группу, когда ответите в теме.

Добавить ответ:

-
Рейтинг@Mail.ru