Если все же копить байты во фреймы по 8 или сколько успеет, то штатный загрузчик уже рассинхронизируется с avrdude и прошива не заливается.
Это что, подъёбка или как? В датащах есть кусок кода на ++ и на асме. Можешь свои фреймы "собирать" хоть полгода или год - пабарабану.
Например, собираешь страницу=64байта, стираешь страницу и пишешь новую. ЖДЁШЬ следующую страницу хоть пятилетку, стираешь-пишешь. Нуникак он там СИНХРУ не потеряет.
Если все же копить байты во фреймы по 8 или сколько успеет, то штатный загрузчик уже рассинхронизируется с avrdude и прошива не заливается.
Это что, подъёбка или как? В датащах есть кусок кода на ++ и на асме. Можешь свои фреймы "собирать" хоть полгода или год - пабарабану.
Например, собираешь страницу=64байта, стираешь страницу и пишешь новую. ЖДЁШЬ следующую страницу хоть пятилетку, стираешь-пишешь. Нуникак он там СИНХРУ не потеряет.
Это просто проверил факт, как взаимодействует обычный лоадер и дуда, я ещё не пытался править или писать свой загрузчик, готовлюсь только
Мне кажется, что в CAN, как таковом, канального уровня нет. Во всяком случае - квалифицирующих признаков формирования канала между двумя конкретными нодами не усматривается.
Канальный уровень (англ. data link layer) предназначен для обеспечения взаимодействия сетей на физическом уровне и контроля ошибок, которые могут возникнуть. Полученные с физического уровня данные, представленные в битах, он упаковывает в кадры, проверяет их на целостность и, если нужно, исправляет ошибки (формирует повторный запрос повреждённого кадра) и отправляет на сетевой уровень. Канальный уровень может взаимодействовать с одним или несколькими физическими уровнями, контролируя и управляя этим взаимодействием.
Транспортный уровень:
Транспортный уровень (англ. transport layer) модели предназначен для обеспечения надёжной передачи данных от отправителя к получателю. При этом уровень надёжности может варьироваться в широких пределах. Существует множество классов протоколов транспортного уровня, начиная от протоколов, предоставляющих только основные транспортные функции (например, функции передачи данных без подтверждения приёма), и заканчивая протоколами, которые гарантируют доставку в пункт назначения нескольких пакетов данных в надлежащей последовательности, мультиплексируют несколько потоков данных, обеспечивают механизм управления потоками данных и гарантируют достоверность принятых данных
Соответственно более низкий канальный уровень как раз в CANe есть, а Транспортный только программно ваять
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.
Вам делать шоль нехер, как картинки постить? Уже лет 10 или более ТЫСЯЧИ промышленных предприятий, судов, пароходов используют CAN шины и их производные для контроля процесса производства. А вы тут сраные 32кб не можете по шине передать)))
Макс, не_ссы, получицца у тебя загрузчик по кану, пейши уже а не на картинки смотри.
компилируется не "в ИДЕ", а просто из командной строки тем компилятором, который УЖЕ есть в Ардуино ИДЕ.
задам ещё тупой вопрос . А почему тогда компилятору при запуске через 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 тот же код нормально компилируется. Нужно ещё что-то заинклюдить ?
компилируется не "в ИДЕ", а просто из командной строки тем компилятором, который УЖЕ есть в Ардуино ИДЕ.
задам ещё тупой вопрос . А почему тогда компилятору при запуске через 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 придется писать полностью ручками, не использую библиотеку Ардуино, она для С++. ;)))) (или искать, но проще написать)
=================
Вопрос твой показывает, что учиться - никогда не поздно! ;)))) Успехов!
Оптибут не компилируется каким-то особенным компилятором или еще каким бредом. Все ограничения и настройки написаны в каком-нибудь конфиге. Его нужно найти и отредактировать. Хотя если уже этот этап вызывает затруднения, то можно сразу забросить.
#
# 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
Оптибут не компилируется каким-то особенным компилятором или еще каким бредом. Все ограничения и настройки написаны в каком-нибудь конфиге. Его нужно найти и отредактировать. Хотя если уже этот этап вызывает затруднения, то можно сразу забросить.
Касательно C и C++
Это ОДИН компилятор. Он знает и С и С++ и еще много языков, чесслово! ;)) (например фортран или асм)
Только скетчи Ардуино пишутся на С++ и компилируются как С++, а загрузчик написан на С и имеет расширение .c, а не .cpp.
И вот эти люди еще имеют наглость давать какие-то советы.
Компиляторов в составе avr-gcc 3: C, C++ и ASM. Никакого фортрана и других языков. Процессору насрать, на каком языке был написан исходник загрузчика. Процессор получает только машинный код. А значит, загрузчик может быть написан на любом языке или комбинации языков, покуда есть компилятор, создающий корректный машинный код. Исходные файлы могут иметь любое расширение, это элементарно настраивается в конфиге системы сборки. И если уже этот этап вызывает затруднения, то ты просто ноль в программировании, и в загрузчики лезть не надо.
Я конечно очень благодарен за помощь, серьёзно! только проще надо быть. Я вроде нашёл. в файле makefile нужно поменять в одном месте gcc на g++. Песец не ужели так трудно это подсказать... Полный ноль, в загрузчики лезть не надо... Ужос нах куда мир катится.
Тогда ты предлагаешь сравнивать мягкое с мохнатым. Вообще бред. Какая разница как на физическом уровне передаются данные ? Программеру на это ваапче должно быть по барабану.
Спасиб, уже листал это. Я хотел все же к иде ардуинской приладить. А он для пк на питоне написал и с командной строки заливает, графически ещё не оформили приложуху. по мне это неудобно. Да и хекс видимо сначала готовить.
Судя по 3 й ссылке:"With this Can-Bootloader you are able to download your precompiled application (from your Arduino IDE, WinAVR, etc.) to your decentralized microcontroller over Can-Bus." Вероятно вместо дуды нужно в IDE подсунуть Питона. HEX и так после каждой компиляции готовится.
Я, тут ради интереса поинтересовался про CAN шину. Ну , я понимаю, для авто/мото робото- или многопроцессорных станков, где первым делом стоит безопасность и надежность, нафига чтоб получить температуру или влажность в бане,гараже или бункере использовать CAN. Для загородного дома/дачи чем не устраивает RS485 или радио?
мои причины применения CAN: мультимастер, канальный уровень реализован аппаратно , цена не сильно отличается. С моей точки зрения, если сравнивать с модбасом на rs485, оверхеда в CANе безусловно больше, но это с лихвой компенсируется мультимастерностью шины, а значит и отсутствием необходимости постоянного поллинга слейвов, что уменьшает время отклика устройств.
по теме , пока не могу найти время нормально поковыряться. Вроде библиотеку SPI.h и mcp2515.h приладил бегло, на соплях дюпонтах все собрал, естественно не заработало, что и не удивительно. так не вариант. нужно стенд нормальный сваять для тестов и время купить.
На поздних там по другому MCUSR проверяется.
Там ВСЕГО ЧЕТЫРЕ БИТА, ну перепиши проверку-то? Или вообще убери её.
Они даже близко не лежали. Что в них похожего ?
Фотошопием можешь пользовацца?
Можешь наваять скрин осциллограмм, допустим, сверху 485 и снизу кан. Будем играть в игру "бальшая разница" )))
Если все же копить байты во фреймы по 8 или сколько успеет, то штатный загрузчик уже рассинхронизируется с avrdude и прошива не заливается.
Это что, подъёбка или как? В датащах есть кусок кода на ++ и на асме. Можешь свои фреймы "собирать" хоть полгода или год - пабарабану.
Например, собираешь страницу=64байта, стираешь страницу и пишешь новую. ЖДЁШЬ следующую страницу хоть пятилетку, стираешь-пишешь. Нуникак он там СИНХРУ не потеряет.
Достоинство CAN в его транспортном уровне, а не в физическом. У RS485 нет ничего выше физики и сравнивать с CAN его бессмысленно.
Ой ли ? Что именно гарантирует, что клиент получил пакет ?
Ну, имхо, компетенция CAN заканчивается на канальном уровне, все что выше, ручками.
Если все же копить байты во фреймы по 8 или сколько успеет, то штатный загрузчик уже рассинхронизируется с avrdude и прошива не заливается.
Это что, подъёбка или как? В датащах есть кусок кода на ++ и на асме. Можешь свои фреймы "собирать" хоть полгода или год - пабарабану.
Например, собираешь страницу=64байта, стираешь страницу и пишешь новую. ЖДЁШЬ следующую страницу хоть пятилетку, стираешь-пишешь. Нуникак он там СИНХРУ не потеряет.
Это просто проверил факт, как взаимодействует обычный лоадер и дуда, я ещё не пытался править или писать свой загрузчик, готовлюсь только
Мне кажется, что в CAN, как таковом, канального уровня нет. Во всяком случае - квалифицирующих признаков формирования канала между двумя конкретными нодами не усматривается.
(Из интернетов) канальный уровень:
Транспортный уровень:
Соответственно более низкий канальный уровень как раз в CANe есть, а Транспортный только программно ваять
Согласен, попутал уровни. Посмотрел щас быстренько по абстракции 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.
Вам делать шоль нехер, как картинки постить? Уже лет 10 или более ТЫСЯЧИ промышленных предприятий, судов, пароходов используют CAN шины и их производные для контроля процесса производства. А вы тут сраные 32кб не можете по шине передать)))
Макс, не_ссы, получицца у тебя загрузчик по кану, пейши уже а не на картинки смотри.
Уже лет 10 или более ТЫСЯЧИ промышленных предприятий, судов, пароходов используют CAN шины и их производные для контроля процесса производства.
Прям Америку открыл, Колумб. А мы-то тут сидим, лопухи жуём, ничо не знаем.
Фотошопием можешь пользовацца?
Можешь наваять скрин осциллограмм, допустим, сверху 485 и снизу кан. Будем играть в игру "бальшая разница" )))
Охринел, каким еще фотошопом ? Вася, я не сказал 485, я сказал MODBUS. Очками пользоваться умеешь ? Так что картинки сам рисуй :)
Видишь, я об этом и твержу....
Прям Америку открыл, Колумб. А мы-то тут сидим, лопухи жуём, ничо не знаем.
Я последний лопух дожевал :( Одна картофельная ботва осталась :(
задам ещё тупой вопрос . А почему тогда компилятору при запуске через cmd не нравятся классы? Хотел подтянуть библиотеку SPI.h , думал файлы коряво переместил или ещё чего. А потом просто в файле optiboot.c все стер, и сдедал один простой класс - тоже не компилируется. Чего ему надобно, а?
компилятор ругается : unknown type name 'class'
В arduino IDE тот же код нормально компилируется. Нужно ещё что-то заинклюдить ?
задам ещё тупой вопрос . А почему тогда компилятору при запуске через cmd не нравятся классы? Хотел подтянуть библиотеку SPI.h , думал файлы коряво переместил или ещё чего. А потом просто в файле optiboot.c все стер, и сдедал один простой класс - тоже не компилируется. Чего ему надобно, а?
компилятор ругается : unknown type name 'class'
В arduino IDE тот же код нормально компилируется. Нужно ещё что-то заинклюдить ?
Потому, что в языке программирования С никаких классов нет. Поддержку SPI придется писать полностью ручками, не использую библиотеку Ардуино, она для С++. ;)))) (или искать, но проще написать)
=================
Вопрос твой показывает, что учиться - никогда не поздно! ;)))) Успехов!
понятно.так и думал. с с++ опускаемса до чеснаго С. эх...
Оптибут не компилируется каким-то особенным компилятором или еще каким бредом. Все ограничения и настройки написаны в каком-нибудь конфиге. Его нужно найти и отредактировать. Хотя если уже этот этап вызывает затруднения, то можно сразу забросить.
Касательно C и C++
тут?
Вася, я не сказал 485, я сказал MODBUS. Очками пользоваться умеешь ? Так что картинки сам рисуй :)
Сам ты вася. Какрас про 485 и кан разговор И_БЫЛ!!! Так-шо с очками проблемЫ у тебя! )))
Сам ты вася. Какрас про 485 и кан разговор И_БЫЛ!!! Так-шо с очками проблемЫ у тебя! )))
Ну может ты с кем и разговаривал на эту тему, но явно не со мной. Не понятно почему ко мне обратилсо. Опять же с очками у тебя траблыыыыы.... :)
#49 почитай, плз.
Оптибут не компилируется каким-то особенным компилятором или еще каким бредом. Все ограничения и настройки написаны в каком-нибудь конфиге. Его нужно найти и отредактировать. Хотя если уже этот этап вызывает затруднения, то можно сразу забросить.
Касательно C и C++
Это ОДИН компилятор. Он знает и С и С++ и еще много языков, чесслово! ;)) (например фортран или асм)
Только скетчи Ардуино пишутся на С++ и компилируются как С++, а загрузчик написан на С и имеет расширение .c, а не .cpp.
Только скетчи Ардуино пишутся на С++ и компилируются как С++, а загрузчик написан на С и имеет расширение .c, а не .cpp.
Может где то в песочнице нужно разместить?)
И вот эти люди еще имеют наглость давать какие-то советы.
Компиляторов в составе avr-gcc 3: C, C++ и ASM. Никакого фортрана и других языков. Процессору насрать, на каком языке был написан исходник загрузчика. Процессор получает только машинный код. А значит, загрузчик может быть написан на любом языке или комбинации языков, покуда есть компилятор, создающий корректный машинный код. Исходные файлы могут иметь любое расширение, это элементарно настраивается в конфиге системы сборки. И если уже этот этап вызывает затруднения, то ты просто ноль в программировании, и в загрузчики лезть не надо.
Я конечно очень благодарен за помощь, серьёзно! только проще надо быть. Я вроде нашёл. в файле makefile нужно поменять в одном месте gcc на g++. Песец не ужели так трудно это подсказать... Полный ноль, в загрузчики лезть не надо... Ужос нах куда мир катится.
Зачем? Касательно размера см.#31. Плохо когда ТС не читатель.(
Почему не читатель, с размером сразу помогло после 31.
#49 почитай, плз.
Тогда ты предлагаешь сравнивать мягкое с мохнатым. Вообще бред. Какая разница как на физическом уровне передаются данные ? Программеру на это ваапче должно быть по барабану.
Почему не читатель, с размером сразу помогло после 31.
Кстати, ключ BIGBOOT там до жопы. Он только для меги 1280 и 644.)
Не, у меня 1к давал компилить на 328
Maks, может этот материал тебе поможет?
http://www.kreatives-chaos.com/artikel/can-bootloader
https://github.com/dergraaf/bootloader-can
https://github.com/ma-go/AtmegaCanBootloader
Спасиб, уже листал это. Я хотел все же к иде ардуинской приладить. А он для пк на питоне написал и с командной строки заливает, графически ещё не оформили приложуху. по мне это неудобно. Да и хекс видимо сначала готовить.
Судя по 3 й ссылке:"With this Can-Bootloader you are able to download your precompiled application (from your Arduino IDE, WinAVR, etc.) to your decentralized microcontroller over Can-Bus." Вероятно вместо дуды нужно в IDE подсунуть Питона. HEX и так после каждой компиляции готовится.
мои причины применения CAN: мультимастер, канальный уровень реализован аппаратно , цена не сильно отличается. С моей точки зрения, если сравнивать с модбасом на rs485, оверхеда в CANе безусловно больше, но это с лихвой компенсируется мультимастерностью шины, а значит и отсутствием необходимости постоянного поллинга слейвов, что уменьшает время отклика устройств.
по теме , пока не могу найти время нормально поковыряться. Вроде библиотеку SPI.h и mcp2515.h приладил бегло, на соплях дюпонтах все собрал, естественно не заработало, что и не удивительно. так не вариант. нужно стенд нормальный сваять для тестов и время купить.