Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
Clon committed Sep 10, 2020
2 parents 9129d34 + e197c42 commit 5f4ba06
Show file tree
Hide file tree
Showing 11 changed files with 124 additions and 65 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,5 @@
/src/build
/src/Gateway/config.h
/src/Gateway/data/*.crt
/src/Firmware/MYSBootloader/.vs/MYSBootloader/v14
/src/Firmware/MYSBootloader/.vs
/src/Firmware/MYSBootloader/build.cmd
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,6 @@
# MySensor-Home-Net
MySensor Home firmware

MySensor Home firmware

- [build MYSBootloader firmware](src/Firmware/MYSBootloader/)

3 changes: 3 additions & 0 deletions src/Firmware/MYSBootloader/MYSBootloaderRF24xx/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@ $(PROJECT).hex: $(PROJECT).elf
out: $(PROJECT).hex
"$(BINPATH)avr-size" $(PROJECT).elf

copy: $(PROJECT).hex
copy $(PROJECT).hex "$(COPYTO)/$(PROJECT)_$(ISP_MCU)_$(CLK)_Mhz_$(BAUDRATE).hex"

load: clean out isp

isp: $(PROJECT).hex
Expand Down
86 changes: 52 additions & 34 deletions src/Firmware/MYSBootloader/boards.txt
Original file line number Diff line number Diff line change
@@ -1,44 +1,57 @@
## Add these lines to your boards.txt file in the Arduino installation directory
##
## Arduino Pro or Pro Mini (3V3 & 5V, 1 - 16 MHz) w/ ATmega328 MYSBootloader
## -------------------------------------------------
## ** modify fuse from MYSBL8 8MHz RC **
######################################################################
## Add these lines to your boards.txt file
## in the Arduino installation directory
## Arduino Pro or Pro Mini (3V3 & 5V, 1 - 16 MHz)
## w/ ATmega328 MYSBootloader
######################################################################

menu.frequency=Frequency

MYSBL.name=ATmega328 with MYSBootloader 1.3.0

MYSBL.name=ATmega328 Pro mini with MYSBootloader 1.3.0
MYSBL.upload.tool=avrdude
MYSBL.upload.protocol=arduino
MYSBL.upload.maximum_size=30720
MYSBL.upload.maximum_data_size=2048
MYSBL.bootloader.tool=avrdude
MYSBL.bootloader.unlock_bits=0x3F
MYSBL.bootloader.lock_bits=0x0F
MYSBL.build.mcu=atmega328p
MYSBL.build.board=AVR_UNO
MYSBL.build.board=AVR_PRO
MYSBL.build.core=arduino
MYSBL.build.variant=standard
MYSBL.build.variant=eightanaloginputs

MYSBL.menu.frequency.MYSBL16=16MHz XTAL
MYSBL.menu.frequency.MYSBL16.build.f_cpu=16000000L
MYSBL.menu.frequency.MYSBL16.upload.speed=115200
MYSBL.menu.frequency.MYSBL16.bootloader.low_fuses=0xFF
MYSBL.menu.frequency.MYSBL16.bootloader.high_fuses=0xD2
MYSBL.menu.frequency.MYSBL16.bootloader.extended_fuses=0x06
MYSBL.menu.frequency.MYSBL16.bootloader.unlock_bits=0x3F
MYSBL.menu.frequency.MYSBL16.bootloader.lock_bits=0x0F
MYSBL.menu.frequency.MYSBL16.bootloader.file=MySensors/MYSBootloader_16MHz.hex
######################################################################
## Arduino Pro or Pro Mini (3.3V, 8 MHz) ATmega328P [my firmware]
MYSBL.menu.frequency.MYSBL8fw=8MHz RC default (my firmware)
MYSBL.menu.frequency.MYSBL8fw.build.f_cpu=8000000L
MYSBL.menu.frequency.MYSBL8wf.upload.speed=9600
MYSBL.menu.frequency.MYSBL8fw.bootloader.low_fuses=0xFF
MYSBL.menu.frequency.MYSBL8fw.bootloader.high_fuses=0xE2
MYSBL.menu.frequency.MYSBL8fw.bootloader.extended_fuses=0xFD
MYSBL.menu.frequency.MYSBL8fw.bootloader.unlock_bits=0x3F
MYSBL.menu.frequency.MYSBL8fw.bootloader.lock_bits=0x0F
MYSBL.menu.frequency.MYSBL8fw.bootloader.file=MySensors/MYSBootloader_m328p_8000000L_Mhz_9600.hex

MYSBL.menu.frequency.MYSBL8=8MHz RC My
######################################################################
## Arduino Pro or Pro Mini (3.3V, 8 MHz) ATmega328P [Default fw]
MYSBL.menu.frequency.MYSBL8=8MHz Default fw
MYSBL.menu.frequency.MYSBL8.build.f_cpu=8000000L
MYSBL.menu.frequency.MYSBL8.upload.speed=38400
MYSBL.menu.frequency.MYSBL8.bootloader.low_fuses=0xE2
MYSBL.menu.frequency.MYSBL8.bootloader.high_fuses=0xD2
MYSBL.menu.frequency.MYSBL8.bootloader.extended_fuses=0xFE
# 0x06
MYSBL.menu.frequency.MYSBL8.upload.speed=57600

# MYSBL.menu.frequency.MYSBL8.bootloader.low_fuses=0xE2
# MYSBL.menu.frequency.MYSBL8.bootloader.high_fuses=0xD2
# MYSBL.menu.frequency.MYSBL8.bootloader.extended_fuses=0xFE
# 0xFD (?), 0x06 (default)
MYSBL.menu.frequency.MYSBL8.bootloader.low_fuses=0xFF
MYSBL.menu.frequency.MYSBL8.bootloader.high_fuses=0xE2
MYSBL.menu.frequency.MYSBL8.bootloader.extended_fuses=0xFD
#
MYSBL.menu.frequency.MYSBL8.bootloader.unlock_bits=0x3F
MYSBL.menu.frequency.MYSBL8.bootloader.lock_bits=0x0F
MYSBL.menu.frequency.MYSBL8.bootloader.file=MySensors/MYSBootloader_8MHz.hex

######################################################################
## Arduino Pro or Pro Mini (3.3V, 1 MHz) ATmega328P [Default MYSBL]
MYSBL.menu.frequency.MYSBL1=1MHz RC
MYSBL.menu.frequency.MYSBL1.build.f_cpu=1000000L
MYSBL.menu.frequency.MYSBL1.upload.speed=9600
Expand All @@ -49,16 +62,8 @@ MYSBL.menu.frequency.MYSBL1.bootloader.unlock_bits=0x3F
MYSBL.menu.frequency.MYSBL1.bootloader.lock_bits=0x0F
MYSBL.menu.frequency.MYSBL1.bootloader.file=MySensors/MYSBootloader_1MHz.hex

MYSBL.menu.frequency.MYSBL8d=8MHz RC default (not work)
MYSBL.menu.frequency.MYSBL8d.build.f_cpu=8000000L
MYSBL.menu.frequency.MYSBL8d.upload.speed=38400
MYSBL.menu.frequency.MYSBL8d.bootloader.low_fuses=0xE2
MYSBL.menu.frequency.MYSBL8d.bootloader.high_fuses=0xD2
MYSBL.menu.frequency.MYSBL8d.bootloader.extended_fuses=0x06
MYSBL.menu.frequency.MYSBL8d.bootloader.unlock_bits=0x3F
MYSBL.menu.frequency.MYSBL8d.bootloader.lock_bits=0x0F
MYSBL.menu.frequency.MYSBL8d.bootloader.file=MySensors/MYSBootloader_8MHz.hex

######################################################################
## Arduino Pro or Pro Mini (3.3V, 8 MHz) ATmega328P [Default MYSBL NRFduino]
MYSBL.menu.frequency.MYSBLNRF=8MHz RC NRFduino
MYSBL.menu.frequency.MYSBLNRF.build.f_cpu=8000000L
MYSBL.menu.frequency.MYSBLNRF.upload.speed=57600
Expand All @@ -68,3 +73,16 @@ MYSBL.menu.frequency.MYSBLNRF.bootloader.extended_fuses=0x06
MYSBL.menu.frequency.MYSBLNRF.bootloader.unlock_bits=0x3F
MYSBL.menu.frequency.MYSBLNRF.bootloader.lock_bits=0x0F
MYSBL.menu.frequency.MYSBLNRF.bootloader.file=MySensors/MYSBootloader_NRFduino_8MHz.hex

######################################################################
## Arduino Pro or Pro Mini (5V, 16 MHz) ATmega328P [Default MYSBL]
MYSBL.menu.frequency.MYSBL16=16MHz XTAL
MYSBL.menu.frequency.MYSBL16.build.f_cpu=16000000L
MYSBL.menu.frequency.MYSBL16.upload.speed=115200
MYSBL.menu.frequency.MYSBL16.bootloader.low_fuses=0xFF
MYSBL.menu.frequency.MYSBL16.bootloader.high_fuses=0xD2
MYSBL.menu.frequency.MYSBL16.bootloader.extended_fuses=0x06
MYSBL.menu.frequency.MYSBL16.bootloader.unlock_bits=0x3F
MYSBL.menu.frequency.MYSBL16.bootloader.lock_bits=0x0F
MYSBL.menu.frequency.MYSBL16.bootloader.file=MySensors/MYSBootloader_16MHz.hex

Binary file added src/Firmware/MYSBootloader/img/1.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/Firmware/MYSBootloader/img/2.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/Firmware/MYSBootloader/img/3.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/Firmware/MYSBootloader/img/4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/Firmware/MYSBootloader/img/5.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/Firmware/MYSBootloader/img/6.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
91 changes: 62 additions & 29 deletions src/Firmware/MYSBootloader/readme.md
Original file line number Diff line number Diff line change
@@ -1,36 +1,69 @@
1.Установка плат для загрузчика MYSBootloader

Скачать архив с платой с гита разработчика - https://github.com/mysensors/MySensorsB ... evelopment
Разархивировать на рабочий стол.
Запустить Arduino IDE
Зайти в примеры(должна быть выбрана любая из плат Ардуино)
Открываете пример EEPROM clear (или любой другой из встроенных в Arduino IDE библиотек, необходимо для того чтобы не искать место где находятся исполняемые файлы программы Arduino IDE)
В примере скетча зайти в Скетч → Показать папку скетча
В открывшемся окне проводника Windows в адресной строке найти папку avr
Перейти в папку avr
Найти в папке avr файл boards.txt
Открыть файл boards.txt для редактирования
Перейти в самый конец файла
С новой строки вставить то что находится в файле boards.txt из скаченного архива
Сохранить и закрыть.

В папке avr найти папку `bootloaders`
Перейти в нее
Создать в папке bootloaders папку `MySensors`
В папке из скаченного архива с гита разработчика, перейти в папку hex
Из папки hex скопировать все файлы в созданную ранее папку MySensors
Закрыть все папки
Перезагрузить Arduino IDE
В платах Arduino появится ATmega328 with MYSBootloader
(Это и есть плата для записи загрузчика MYSBootloader)


2.Прошивка загрузчиком MYSBootloader
### 1.Установка плат для загрузчика MYSBootloader

- Скачать архив с [поправленной прошивкой](https://github.com/CloneTV/MySensor-Home-Net/archive/master.zip), или с [гита разработчика MYSBootloader](https://github.com/mysensors/MySensorsBootloaderRF24/tree/development) (архив давно не обновлялся)
- Разархивировать на рабочий стол.
- Запустить Arduino IDE
- Зайти в примеры(должна быть выбрана любая из плат Ардуино)
- Открываете пример EEPROM clear (или любой другой из встроенных в Arduino IDE библиотек, необходимо для того чтобы не искать место где находятся исполняемые файлы программы Arduino IDE)
- В примере скетча зайти в Скетч → Показать папку скетча
- В открывшемся окне проводника Windows в адресной строке найти папку avr
- Перейти в папку avr
- Найти в папке avr файл boards.txt
- Открыть файл boards.txt для редактирования
- Перейти в самый конец файла
- С новой строки вставить то что находится в файле boards.txt из скаченного архива
- Сохранить и закрыть.

![AVRDudess](img/6.png)

- В папке avr найти папку `bootloaders`
- Перейти в нее
- Создать в папке bootloaders папку `MySensors`
- В папке из скаченного архива с гита разработчика, перейти в папку hex
- Из папки hex скопировать все файлы в созданную ранее папку MySensors
- Закрыть все папки
- Перезагрузить Arduino IDE
- В платах Arduino появится ATmega328 with MYSBootloader (Это и есть плата для записи загрузчика MYSBootloader)


### 2. Прошивка загрузчиком MYSBootloader

Выбрать плату `ATmega328 with MYSBootloader 1.x` в Инструменты → Плата → Платы Arduino AVR → ATmega328 with MYSBootloader
Выбрать нужный процессор в Инструменты → Процессор →
Выбрать программатор через который будете загружать прошивку MYSBootloader в Инструменты → Програматор →
Нажать `Записать загрузчик` в Инструментах →

## НЕ ЗАГРУЖАЙТЕ СКЕТЧИ ВАШЕЙ ПРОГРАММЫ ЧЕРЕЗ ARDUINO IDE ПОСЛЕ ЗАПИСИ ЗАГРУЗЧИКА ТАК КАК БУДЕТ СТЕРТ САМ ЗАПИСАННЫЙ ЗАГРУЗЧИК MYSBOOTLOADER
## НЕ ЗАГРУЖАЙТЕ СКЕТЧИ ВАШЕЙ ПРОГРАММЫ ЧЕРЕЗ ARDUINO IDE ПОСЛЕ ЗАПИСИ ЗАГРУЗЧИКА ТАК КАК БУДЕТ СТЕРТ САМ ЗАПИСАННЫЙ ЗАГРУЗЧИК MYSBOOTLOADER


## НЕ ИСПОЛЬЗУЙТЕ `#define MY_OTA_FIRMWARE_FEATURE` В СКЕТЧЕ С `MYSBootloader`! ЭТО ОПРЕДЕЛЕНИЕ РАБОТАЕТ ТОЛЬКО С ЛОАДЕРОМ `Optiboot` И ТРЕБУЕТ ВНЕШНЕЙ ФЛЕШ ПАМЯТИ!


### 3. Создание загрузчика MYSbootloader

Инструкция как создать загрузчик `MYSbootloader` для `FOTA` со своими параметрами, например, номер канала, скорость передачи, мощность передатчика, CE и CSN пины, может что-то еще..
- 1. Скачиваем с github архив и распаковываем его желательно ближе к корню и на диск D:\ чтобы не было проблем с записью и меньше писанины путей к данной папке.
- 2. Устанавливаем или открываем `Atmel Studio 7`
- 3.0.1 Открываем солюшен `MYSBootloaderRF24xx/MYSBootloaderRF24xx.cppproj`. Должны быть указанны переменные пути `%ATMEL_STUDIO% = Atmel Studio 7/base path` и `%ARDUINO_USER_LIB% = Arduino IDE path to user installation library`.
- 3.1.1 Или, в дальнейшем, после правок, заходим в папку с исходными текстами и запускаем `build.cmd`, или пишем `make`, собирая прошивку в коммандной строке.
- 3.1.2 Открываем `Atmel Studio 7.0 Command Promt`
- 4. Открываем в скачанном архиве файл `MYSBootloader.c`,`MySensorsBootloader.h` и вносим свои изменения.. Если `CE` и `CSN` пины не совпадают не с одним из предложенных вариантов необходимо внести изменения в файл `HW.h`.
- 5. По-умолчанию частота кварца 8MHz и скорость порта 9600, их можно изменить в фаиле `Makefile`
- 6. После проделанных операций в папке с исходными текстами появится файл `MYSBootloaderRF24xx/MYSBootloader.hex`, который необходимо залить в `Atmega328P`, например с помощью `AVRDUDDES` или `Arduino IDE`.


### 4. Screen

![Screen 1 build MYSbootloader](img/1.jpg)
![Screen 2 build MYSbootloader](img/2.jpg)
![Screen 3 build MYSbootloader](img/3.jpg)
![Screen 4 install MYSbootloader](img/4.png)
![Screen 5 install MYSbootloader](img/5.png)

### 5. Origin links

- [mysensors.ru/forum 1](https://mysensors.ru/forum/viewtopic.php?f=5&t=501)
- [mysensors.ru/forum 2](https://mysensors.ru/forum/viewtopic.php?f=5&t=29)
- [mysensors.ru/fota](https://mysensors.ru/about/fota/)
- [mysensors.org/fota](https://www.mysensors.org/about/fota)
- [MYSBootloader](https://github.com/mysensors/MySensorsBootloaderRF24/tree/development)

0 comments on commit 5f4ba06

Please sign in to comment.