Здравствуйте, Форумчане! Приобрел два контроллера: Iskra JS и Pico и столкнулся со странной проблемой. Контроллеры после перезагрузки очищают свою память. Я связался с Технической поддержкой и получил рекомендацию в настройке IDE активировать пункт "SAVE on SEND". И действительно Iskra JS стала нормально хранить в памяти скетчи. А вот с Pico это не помогло. Как только я активировал "SAVE on SEND" IDE предложила мне обновить прошивку на новую, я обновился до версии 1.85. Но и это не помогло. Выглядит это так: 1. при неактивном "SAVE on SEND" скетч "digitalWrite(LED1, 1);" нормально загружается и нормально исполняется, но слетает после перезагрузки. 2. при активном "SAVE on SEND" тот же скетч загружается, но выдается ошибка: _____________________________________ http://espruino.com 1v85 Copyright 2016 G.Williams >echo(0); Uncaught Error: Function "setBootCode" not found! at line 1 col 3 E.setBootCode("setTime(1466099714.553);\ndigitalWrite(LED1, ... ^ =undefined > ______________________________________ Пожалуйста, помогите кто чем может
Как нет? Вот же: Pico работает на частоте 168 МГц. 32-битный микроконтроллер ARM Cortex-M4 предоставляет 384 килобайта флеш-памяти для хранения прошивки интерпретатора JavaScript и программного кода, а также 96 КБ оперативной памяти для их работы.
На STM32 нет EEPROM, но есть flash память. Разница в них в том, что первая медленнее, но поддерживает многократную перезапись. Вторая быстрее, но количество циклов ограничено примерно 10000 (что весьма не мало). У AtMega есть и то, и другое. EEPROM для записи данных пользователя, чтобы не потерять их при выключении, flash - для прошивки. STM32 сохраняет прошивку только во флэш. Для сохранения данных - существуют специальные адреса в оперативной памяти (16 килобайт), которые питаются, так же как и часы реального времени микроконтроллера, от специального пина VBat, к которому напрямую подключается батарейка. Ошибка записи на Pico происходит, вероятнее всего, из за разных версий прошивок. Попробуйте обновить прошивку Pico до последней и все должно заработать.
Nope! Save on Send — это флажок, который пролобирован Амперкой. Он реализован через новую функцию setBootCode. Эта функция уже есть в прошивке Iskra JS, но в стабильной версии прошивки Pico её пока нет, только в edge-версии. Pico научится сохранять программы также, как Iskra JS, когда авторы Espruino выпустят новую мажорную версию (1v86). Зависит это от них, но думаю вопрос пары недель. До тех пор проще всего набирать в терминале save() для сохранения загруженной программы.
Но те, кто хотят работать с последней версией прошивки - читайте ниже 1. Если вы работаете в Espruino IDE, установите устаревшую Iskra IDE - Espruino IDE не может перепрошить Espruino Pico с той прошивкой что сейчас в ней установлена. Если при прошивке Iskra IDE у вас будет ругаться на невозможность прошить - значит прошивка более свежая и нужно прошивать из Espruino IDE. После перепрошивки Iskra IDE можно удалить. 2. Выбираете Настройки (Settings)->Flasher 3. Включаете Espruino Pico в USB порт с зажатой кнопкой, чтобы она вошла в режим обновления прошивки. Когда диоды будут попеременно мигать - кнопку можно отпустить. 4. В разделе Advenced Firmware Update указываем ссылку на прошивку: http://www.espruino.com/binaries/git/commit_date/2016-05-12 12:32:16 +0100/espruino_1v85.506_pico_1r3_wiznet.bin 5. Нажимаем на кнопку Advanced flash firmware, отвечаем на вопрос о типе платы (Espruino Pico) и дожидаемся окончания прошивки. 6. Перевтыкаем Espruino Pico (уже без удержания кнопки), запускаем Espruino IDE, включаем галочку Save on Send и пользуемся. Сохранение и прошивка будет работать, как и на Iskra JS. PS.: Приведена ссылка на самую последнюю сборку, но не забывайте, что она отладочная, а не стабильная. По этому возможны сюрпризы
А чтобы исполнялся нужно его оформить соответствующим образом. Сейчас с телефона помочь не могу. Возможно вечером.
ИгорьК, видимо, имеет в виду, что тот код, который должен быть исполнен на старте должен быть обёрнут в функцию с именем onInit: Код (Javascript): function onInit() { digitalWrite(P7, 1); // and other stuff to do on start } Загружаете и говорите: Код (Text): save()