Какие есть варианты загрузки скетча по шине CAN

-NMi-
Offline
Зарегистрирован: 20.08.2018

MaksVV пишет:

На поздних там по другому MCUSR проверяется.

Там ВСЕГО ЧЕТЫРЕ БИТА, ну перепиши проверку-то? Или вообще убери её.

-NMi-
Offline
Зарегистрирован: 20.08.2018

brokly пишет:

 Они даже близко не лежали. Что в них похожего ?

Фотошопием можешь пользовацца?

Можешь наваять скрин осциллограмм, допустим, сверху 485 и снизу кан. Будем играть в игру "бальшая разница" )))

-NMi-
Offline
Зарегистрирован: 20.08.2018

MaksVV пишет:

Если все же копить байты во фреймы по 8 или сколько успеет, то штатный загрузчик уже рассинхронизируется с avrdude и прошива не заливается. 

Это что, подъёбка или как? В датащах есть кусок кода на ++ и на асме. Можешь свои фреймы "собирать" хоть полгода или год - пабарабану.

Например, собираешь страницу=64байта, стираешь страницу и пишешь новую. ЖДЁШЬ следующую страницу хоть пятилетку, стираешь-пишешь. Нуникак он там СИНХРУ не потеряет.

sadman41
Offline
Зарегистрирован: 19.10.2016

Достоинство CAN в его транспортном уровне, а не в физическом. У RS485 нет ничего выше физики и сравнивать с CAN его бессмысленно.

MaksVV
Offline
Зарегистрирован: 06.08.2015

brokly пишет:

MaksVV пишет:
А зачем мне глубже копать. Меня как юзера этот продукт устраивает. Арбитраж и контроль ошибок с моих обязанностей кан контроллер снимает 

Ой ли ? Что именно гарантирует, что клиент получил пакет ?

Ну, имхо, компетенция CAN заканчивается на канальном уровне, все что выше, ручками.

MaksVV
Offline
Зарегистрирован: 06.08.2015

-NMi- пишет:

MaksVV пишет:

Если все же копить байты во фреймы по 8 или сколько успеет, то штатный загрузчик уже рассинхронизируется с avrdude и прошива не заливается. 

Это что, подъёбка или как? В датащах есть кусок кода на ++ и на асме. Можешь свои фреймы "собирать" хоть полгода или год - пабарабану.

Например, собираешь страницу=64байта, стираешь страницу и пишешь новую. ЖДЁШЬ следующую страницу хоть пятилетку, стираешь-пишешь. Нуникак он там СИНХРУ не потеряет.


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

sadman41
Offline
Зарегистрирован: 19.10.2016

Мне кажется, что в CAN, как таковом, канального уровня нет. Во всяком случае - квалифицирующих признаков формирования канала между двумя конкретными нодами не усматривается.

MaksVV
Offline
Зарегистрирован: 06.08.2015

(Из интернетов) канальный уровень:

Канальный уровень (англ. data link layer) предназначен для обеспечения взаимодействия сетей на физическом уровне и контроля ошибок, которые могут возникнуть. Полученные с физического уровня данные, представленные в битах, он упаковывает в кадры, проверяет их на целостность и, если нужно, исправляет ошибки (формирует повторный запрос повреждённого кадра) и отправляет на сетевой уровень. Канальный уровень может взаимодействовать с одним или несколькими физическими уровнями, контролируя и управляя этим взаимодействием.

Транспортный уровень:

Транспортный уровень (англ. transport layer) модели предназначен для обеспечения надёжной передачи данных от отправителя к получателю. При этом уровень надёжности может варьироваться в широких пределах. Существует множество классов протоколов транспортного уровня, начиная от протоколов, предоставляющих только основные транспортные функции (например, функции передачи данных без подтверждения приёма), и заканчивая протоколами, которые гарантируют доставку в пункт назначения нескольких пакетов данных в надлежащей последовательности, мультиплексируют несколько потоков данных, обеспечивают механизм управления потоками данных и гарантируют достоверность принятых данных

 

Соответственно более низкий канальный уровень  как раз в CANe есть, а Транспортный только программно ваять

sadman41
Offline
Зарегистрирован: 19.10.2016

Согласен, попутал уровни. Посмотрел щас быстренько по абстракции CAN-bus, вынес следующее - выше канального уровня голый MCP не обеспечивает:

https://www.can-cia.org/can-knowledge/

http://ww1.microchip.com/downloads/en/appnotes/00228a.pdf

The Controller Area Network (CAN) protocol defines the Data Link Layer and part of the Physical Layer in the OSI model. The remaining physical layer (and all of the higher layers) are not defined by the CAN specification.

-NMi-
Offline
Зарегистрирован: 20.08.2018

Вам делать шоль нехер, как картинки постить? Уже лет 10 или более ТЫСЯЧИ промышленных предприятий, судов, пароходов используют CAN шины и их производные для контроля процесса производства. А вы тут сраные 32кб не можете по шине передать)))

Макс, не_ссы, получицца у тебя загрузчик по кану, пейши уже а не на картинки смотри.

sadman41
Offline
Зарегистрирован: 19.10.2016

-NMi- пишет:

Уже лет 10 или более ТЫСЯЧИ промышленных предприятий, судов, пароходов используют CAN шины и их производные для контроля процесса производства. 

Прям Америку открыл, Колумб. А мы-то тут сидим, лопухи жуём, ничо не знаем. 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

-NMi- пишет:

Фотошопием можешь пользовацца?

Можешь наваять скрин осциллограмм, допустим, сверху 485 и снизу кан. Будем играть в игру "бальшая разница" )))

Охринел, каким еще фотошопом ? Вася, я не сказал 485, я сказал MODBUS. Очками пользоваться умеешь ? Так что картинки сам рисуй :)

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

MaksVV пишет:
Ну, имхо, компетенция CAN заканчивается на канальном уровне, все что выше, ручками.

Видишь, я об этом и твержу....

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

sadman41 пишет:

Прям Америку открыл, Колумб. А мы-то тут сидим, лопухи жуём, ничо не знаем. 

Я последний лопух дожевал :( Одна картофельная ботва осталась :(

MaksVV
Offline
Зарегистрирован: 06.08.2015

wdrakula пишет:
компилируется не "в ИДЕ", а просто из командной строки тем компилятором, который УЖЕ есть в Ардуино ИДЕ.

задам ещё тупой вопрос . А почему тогда компилятору при запуске через cmd не нравятся классы? Хотел подтянуть библиотеку SPI.h , думал файлы коряво переместил или ещё чего. А потом просто в файле optiboot.c все стер, и сдедал один простой класс - тоже не компилируется. Чего ему надобно, а? 

class myClass {
  public:
        void calculate()
        {
             sum=2+2;
        }
      int sum = 0; 
};


myClass vata;

int main(void)
{
int kaka = 98;
vata.calculate();
return 0;
}

компилятор ругается :   unknown type name 'class'

В arduino IDE тот же код нормально компилируется. Нужно ещё что-то заинклюдить ? 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

MaksVV пишет:

wdrakula пишет:
компилируется не "в ИДЕ", а просто из командной строки тем компилятором, который УЖЕ есть в Ардуино ИДЕ.

задам ещё тупой вопрос . А почему тогда компилятору при запуске через cmd не нравятся классы? Хотел подтянуть библиотеку SPI.h , думал файлы коряво переместил или ещё чего. А потом просто в файле optiboot.c все стер, и сдедал один простой класс - тоже не компилируется. Чего ему надобно, а? 

class myClass {
  public:
        void calculate()
        {
             sum=2+2;
        }
      int sum = 0; 
};


myClass vata;

int main(void)
{
int kaka = 98;
vata.calculate();
return 0;
}

компилятор ругается :   unknown type name 'class'

В arduino IDE тот же код нормально компилируется. Нужно ещё что-то заинклюдить ? 

Потому, что в языке программирования С никаких классов нет. Поддержку SPI придется писать полностью ручками, не использую библиотеку Ардуино, она для С++. ;)))) (или искать, но проще написать)

=================

Вопрос твой показывает, что  учиться - никогда не поздно! ;)))) Успехов!

MaksVV
Offline
Зарегистрирован: 06.08.2015

понятно.так и думал.  с с++ опускаемса до чеснаго С.    эх...

rkit
Offline
Зарегистрирован: 23.11.2016

rkit пишет:

Оптибут не компилируется каким-то особенным компилятором или еще каким бредом. Все ограничения и настройки написаны в каком-нибудь конфиге. Его нужно найти и отредактировать. Хотя если уже этот этап вызывает затруднения, то можно сразу забросить.

Касательно C и C++

MaksVV
Offline
Зарегистрирован: 06.08.2015

тут? 

#
# Compile a couple of Optiboot variations using several different compilers
#


# A list of compilers that are available.
#   This is, um, 4.3.3, 4.6.2, 4.8.1, 4.9.2, and 5.4.0
#
COMPS='
/usr/local/CrossPack-AVR-20100115/bin/
/usr/local/CrossPack-AVR-20121207/bin/
/usr/local/CrossPack-AVR-48/bin/
/usr/local/avr8-atmel-20160624/bin/
/usr/local/avr8-Atmel-3.6.0.487/bin/
'

for c in $COMPS; do
  #  Pretty print for readability
  echo
  echo
  echo ===========================================================
  echo Using compiler in $c
  $c/avr-gcc --version | head -1
  echo ===========================================================

  echo ---------------  make GCCROOT=$c atmega328
  make GCCROOT=$c atmega328
  echo ---------------  make GCCROOT=$c atmega1284
  make GCCROOT=$c atmega1284 
  echo ---------------  make GCCROOT=$c luminet
  make GCCROOT=$c luminet
  echo ---------------  make GCCROOT=$c mega1280
  make GCCROOT=$c mega1280
done

 

-NMi-
Offline
Зарегистрирован: 20.08.2018

brokly пишет:

Вася, я не сказал 485, я сказал MODBUS. Очками пользоваться умеешь ? Так что картинки сам рисуй :)

Сам ты вася. Какрас про 485 и кан разговор И_БЫЛ!!!   Так-шо с очками проблемЫ у тебя!   )))

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

-NMi- пишет:

Сам ты вася. Какрас про 485 и кан разговор И_БЫЛ!!!   Так-шо с очками проблемЫ у тебя!   )))

Ну может ты с кем и разговаривал на эту тему, но явно не со мной. Не понятно почему ко мне обратилсо. Опять же с очками у тебя траблыыыыы.... :)

-NMi-
Offline
Зарегистрирован: 20.08.2018

#49 почитай, плз.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

rkit пишет:

rkit пишет:

Оптибут не компилируется каким-то особенным компилятором или еще каким бредом. Все ограничения и настройки написаны в каком-нибудь конфиге. Его нужно найти и отредактировать. Хотя если уже этот этап вызывает затруднения, то можно сразу забросить.

Касательно C и C++

Это ОДИН компилятор. Он знает и С и С++ и еще много языков, чесслово! ;))  (например фортран или асм)

Только скетчи Ардуино пишутся на С++ и компилируются как С++, а загрузчик написан на С и имеет расширение .c, а не .cpp.

Green
Offline
Зарегистрирован: 01.10.2015

wdrakula пишет:

Только скетчи Ардуино пишутся на С++ и компилируются как С++, а загрузчик написан на С и имеет расширение .c, а не .cpp.


Может где то в песочнице нужно разместить?)

rkit
Offline
Зарегистрирован: 23.11.2016

И вот эти люди еще имеют наглость давать какие-то советы.

Компиляторов в составе avr-gcc 3: C, C++ и ASM. Никакого фортрана и других языков. Процессору насрать, на каком языке был написан исходник загрузчика. Процессор получает только машинный код. А значит, загрузчик может быть написан на любом языке или комбинации языков, покуда есть компилятор, создающий корректный машинный код. Исходные файлы могут иметь любое расширение, это элементарно настраивается в конфиге системы сборки. И если уже этот этап вызывает затруднения, то ты просто ноль в программировании, и в загрузчики лезть не надо.

MaksVV
Offline
Зарегистрирован: 06.08.2015

Я конечно очень благодарен за помощь, серьёзно! только проще надо быть. Я вроде нашёл. в файле makefile нужно поменять в одном месте gcc на g++.   Песец не ужели так трудно это подсказать... Полный ноль, в загрузчики  лезть не надо... Ужос нах куда мир катится. 

Green
Offline
Зарегистрирован: 01.10.2015

Зачем?  Касательно размера см.#31. Плохо когда ТС не читатель.(

MaksVV
Offline
Зарегистрирован: 06.08.2015

Почему не читатель, с размером сразу помогло после 31. 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

-NMi- пишет:

#49 почитай, плз.

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

Green
Offline
Зарегистрирован: 01.10.2015

MaksVV пишет:

Почему не читатель, с размером сразу помогло после 31. 

Кстати, ключ BIGBOOT там до жопы. Он только для меги 1280 и 644.)

MaksVV
Offline
Зарегистрирован: 06.08.2015

Не, у меня 1к давал компилить на 328

Jaeger
Jaeger аватар
Offline
Зарегистрирован: 23.03.2018
MaksVV
Offline
Зарегистрирован: 06.08.2015

Спасиб, уже листал это.  Я хотел все же к иде ардуинской приладить. А он для пк на питоне написал и с командной строки заливает, графически ещё не оформили приложуху. по мне это неудобно. Да и хекс видимо сначала готовить. 

Jaeger
Jaeger аватар
Offline
Зарегистрирован: 23.03.2018

Судя по 3 й ссылке:"With this Can-Bootloader you are able to download your precompiled application (from your Arduino IDEWinAVR, etc.) to your decentralized microcontroller over Can-Bus." Вероятно вместо дуды нужно  в IDE подсунуть Питона. HEX и так после каждой компиляции готовится. 

Jaeger
Jaeger аватар
Offline
Зарегистрирован: 23.03.2018
Max, привет, Hello Forum! 
Я, тут ради интереса поинтересовался  про CAN шину. Ну , я понимаю, для авто/мото робото- или многопроцессорных станков, где первым делом стоит безопасность и надежность, нафига  чтоб получить температуру или влажность в бане,гараже или бункере использовать CAN. Для загородного дома/дачи чем не устраивает RS485 или радио? 
MaksVV
Offline
Зарегистрирован: 06.08.2015

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

по теме , пока не могу найти время нормально поковыряться. Вроде библиотеку SPI.h и mcp2515.h приладил бегло, на соплях дюпонтах все собрал, естественно не заработало, что и не удивительно.  так не вариант.  нужно стенд нормальный сваять для тестов и время купить.