Перейти к содержимому
hohserg

Wireless flash - заливаем прошивки eeprom удаленно

Рекомендуемые сообщения

Актуальность

Раньше, чтобы обновить прошивку дрона или микроконтроллера нужно было

  • записать прошивку на eeprom через компьютер,
  • снять устройство,
  • заменить eeprom через верстак
  • поставить устройство

Довольно геморно если устройств много или часто вносятся мелкие изменения во время разработки

 

Решение

Чтобы не демонтировать устройство можно отправлять ему прошивку по беспородной сетевой карте. Устройство в свою очередь принимает обнову и применяет ее.

 

Использование

  • Загружаем файлы из этой папки(wget)

https://github.com/hohserg1/OpenComputersPrograms/tree/master/wireless_flash

  • Прошиваем наш eeprom прошивкой wireless_flash_eeporm.lua и вставляем в устройство
  • Копируем адрес сетевой карты устройства
  • Запускаем устройство
  • Вызов команды wireless_flash покажет usage

Последний использованный адрес сетевой карты устройства запоминается

Теперь можем быстро тестировать прошивки:lol:

 

 

Программа пока не особо функциональна, но вполне юзабельна.

При разработке ПО для дрона рекомендую юзать планшет.

 

Какие фичи еще стоит добавить(наверное, я это сделаю):

  • Сохранение принятой прошивки
  • Получение текущей прошивки устройства
  • Сохранение множества адресов беспроводных карт

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
42 минуты назад, hohserg сказал:

Актуальность

Раньше, чтобы обновить прошивку дрона или микроконтроллера нужно было

  • записать прошивку на eeprom через компьютер,
  • снять устройство,
  • заменить eeprom через верстак
  • поставить устройство

Довольно геморно если устройств много или часто вносятся мелкие изменения во время разработки

 

Решение

Чтобы не демонтировать устройство можно отправлять ему прошивку по беспородной сетевой карте. Устройство в свою очередь принимает обнову и применяет ее.


А можно использовать мою программу. Там есть и возврат ошибок, так же там есть интерпретатор(можно вживую, как на компьютере, протестировать какую-то вещь). Там и есть загрузка файлов, и так же можно при желании даже перепрошить дрона=)

 

UPD: А у @Fingercomp эта штука в openprograms уже висит 3 года https://github.com/OpenPrograms/Fingercomp-Programs/tree/master/net-flash

Изменено пользователем BrightYC

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

При помощи ПДУ можно тестировать произвольные прошивки? Не только для дрона?

 

37 минут назад, BrightYC сказал:

в openprograms уже висит 3 года

@Fingercomp хоть бы пост сделал на форуме

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, hohserg сказал:

При помощи ПДУ можно тестировать произвольные прошивки? Не только для дрона?

Нет, к сожалению это только для дронов=)
на самом деле, проще вообще так делать:

local handle, data, chunk = component.proxy(component.list("internet")()).request("http://мой-ип/bios.lua"), ""
   
while true do
    chunk = handle.read(math.huge)
    if chunk then
        data = data .. chunk
    else
        break
    end
end
 
handle.close()

local chunk, err = load(data, "=stdin", "t")
if not chunk and err then
	error(err)
end

success, err = xpcall(chunk, debug.traceback)
if not success and err then
	error(err)
elseif success and not err then
	for freq = 100, 2000, 100 do 
		computer.beep(freq, .1)
	end

	computer.shutdown()
end

И редактируешь код  прямо в редакторе, а еще говорил @Asior что дропбокс позволяет открывать файлы в облаке как файлы на компьютере. Так омжно даже не заморачиваться, а тупо перезагружать, и комп/дрон/мк уже скачал новую прошивку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну да, с облаком проще. Я отладку через гит делал. Если сделать сначала проверку версии, то будет универсальный лончер, для чего угодно.

https://github.com/DOOBW/geominer/blob/master/firmware.lua

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, Asior сказал:

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

А как можно "запороть" файл?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, eu_tomat сказал:

А как можно "запороть" файл?

Кодить код вне git-репозитория.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 31.10.2019 в 18:00, BrightYC сказал:

computer.shutdown()

Моя прошивка по идее будет быстрее работать - не нужно тратить время на запись в eeprom и перезапуск

 

Когда нужно поменять одну строку или какую-то константу, это может быть ощутимо

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
30 минут назад, hohserg сказал:

Моя прошивка по идее будет быстрее работать - не нужно тратить время на запись в eeprom и перезапуск

 

Когда нужно поменять одну строку или какую-то константу, это может быть ощутимо

Э? computer.shutdown сделан после того, как программа завершила своё исполнение. Т.е если программа - бесконечный цикл, то компьютер никогда не выключится. Это не ощутимо - компьютер запускает программу мгновенно. Быстрее шифт+пкм по дрону/роботу, чем вводить что-то в компьютере. 

В eeprom программу не записывает - я просто прошиваю любой EEPROM этим кодом - и код загружается в оперативную память. Опять же повторюсь - запуск мгновенный, если файл не раздувать больше 15 килобайт. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ок, я посмотрел внимательней твой код, он не записывает на eeprom обнову, а также, как мой просто исполняет ее, Отличие в том, что для перезалива прошивки нужно выключить-включить устройство(ну или крашнуть его) Если обнова достается по url, то это, пожалуй, удобнее

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 31.10.2019 в 19:35, hohserg сказал:

@Fingercomp хоть бы пост сделал на форуме

Такие проги сродни hello world: их должен велосипедить и костылять каждый сам, я считаю. Выложил в репу, чтобы не потерять. Ну, ещё там интерфейс консольный поудобнее и нет ограничения в 4 киБ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...