Я новичок в мире встраиваемых систем, поэтому простите, если это покажется очевидным.
Я работаю на плате на базе AT91SAM9260. У меня 256 МБ флэш-памяти и 64 МБ ОЗУ. Текущая установка прошивает два uImage. Первый — это образ восстановления только RAMDISK, а второй — основной uImage. Первый используется для прошивки rootfs.ubifs на /dev/mtd1 для основного uImage.
Одна из проблем, с которой я столкнулся, — это нехватка памяти при прошивке rootfs из образа восстановления. В зависимости от размера rootfs, при прошивке заканчивается память. Я использую TFTP, чтобы перенести образ на устройство и прошить его. Поэтому он должен находиться в памяти вместе с uImage восстановления.
Может быть, есть более эффективный способ сделать это? Хотя цель состоит в том, чтобы сохранить нашу rootfs небольшой, очевидно, учитывая, что она размещается на встроенном устройстве, некоторые из наших клиентов имеют другие потребности и не возражают против того, чтобы ОС занимала больше флэш-памяти.
решение1
Вы можете попробовать завершить некоторые процессы (службы, такие как samba, snmp ...) перед прошивкой (предполагая, что перезагрузка выполняется после завершения обновления), чтобы получить больше доступной памяти.