Arduino Yun Disk Expander мало памяти, но, похоже, с моей памятью все в порядке

Я не совсем понимаю это, когда я запускаю arduino yun disk expander sketch с подключенной SD-картой, я получаю следующее сообщение. Вам не хватает флэш-памяти, нужно 1 МБ. Я подключаюсь к своему arduino по ssh и получаю следующее

Filesystem                Size      Used Available Use% Mounted on
rootfs                    6.9M    632.0K      6.3M   9% /
/dev/root                 7.5M      7.5M         0 100% /rom
tmpfs                     29.8M    148.0K     29.7M   0% /tmp
tmpfs                     512.0K       0    512.0K   0% /dev
/dev/mtdblock3            6.9M    632.0K      6.3M   9% /overlay
overlayfs:/overlay        6.9M    632.0K      6.3M   9% /
/dev/sda1                29.7G      2.4M     29.7G   0% /mnt/sda1

Единственное, что заполнено, это /dev/root, но чтение, которое я прочитал в сообщениях здесь и в Интернете, говорит о том, что это нормально. Почему это может быть, я совсем запутался???

, 👍1


1 ответ


Лучший ответ:

2

У меня нет опыта или большого опыта работы с OpenWRT, поэтому я не уверен, что смогу сильно помочь, но я предполагаю, что ошибка, которую вы видите, связана с этой строкой скетча.

Выдержка из этого здесь:

Process awk;

awk.runShellCommand(F("df / | awk '/overlay/ {print $4}'"));
int output = awk.parseInt();
if (output < 1000) {
  Serial.println(F("\nYou don't have enough disk space to install the utility software. You need to free at least 1MB of Flash memory.\nRetry!"));
  halt();
}

Итак, похоже, что они выполняют df / | awk '/overlay/ {print $4}' на YUN.

Они используют awk для извлечения четвертого столбца ($ 4) строки, содержащей overlay (/overlay/), что, кстати, ужасно по-хакерски.

Учитывая, что они ожидают, что результат сравнения awk.parseInt() будет меньше 1000, что означает, что у вас доступно менее 1 Мбайт, совершенно очевидно, что они ожидали, что этот столбец будет представлен в килобайтах. И все же в вашем собственном списке df

overlayfs:/overlay        6.9M    632.0K      6.3M   9% /

четвертая колонка составляет 6,3 М, а остальные выбирают разные единицы измерения, то, что иногда называют "человеческим" выходом. Итак, мы знаем, что их волнует точка монтирования наложения. И что в то время, когда кто-то тестировал этот код, либо они не пробовали использовать SD-карту любого размера, либо вывод df тогда был другим, поэтому синтаксический анализ чего-то вроде df не является хорошей идеей.

И это все, что я могу сказать вам с какой-либо реальной уверенностью. Я не знаю, как настраивается наложение на ЮН.

Я думаю, если бы вы хотели "исправить" код с минимальными изменениями, это было бы добавить -k в командную строку df для принудительного вывода на основе килобайт, предполагая, что -k работает на любом df, поставляемом с YUN. Если вы хотите сделать еще один шаг, я полагаю, вы могли бы использовать -P для получения выходных данных POSIX из df, опять же предполагая, что это поддерживается, и соответствующим образом изменить ожидаемые единицы измерения в скетче. Но если это только для вас, и вы знаете, что overlay имеет более 1 МБ свободного места, вы можете так же легко изменить функцию, чтобы она не могла выйти из строя:

void haltIfInternalFlashIsFull() {
}

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

,

да, я получил сообщение об ошибке "ошибка. установка e2fsprogs dosfstools fdisk rsync kmod-fs-ext4" Я некоторое время взломал этот yun. Такая головная боль. Не знаю, что делать в этот момент. В любом случае, спасибо, @Anders Kitson

Учитывая, что это, вероятно, будет длительный процесс, я бы направил вас к чему-то интерактивному, например, к сети чатов для форума. О единственной другой вещи, которую я добавлю здесь, это то, что, поскольку большая часть скетча, похоже, выполняет командные строки оболочки на YUN, вы можете получить лучшую помощь от людей, более сведущих в OpenWRT, чем в Arduino., @timemage

Хорошо, я поищу на этих форумах. Спасибо, я выберу ваш ответ, потому что он решил первоначальную проблему, которая у меня была. Спасибо, @Anders Kitson