Здравствуйте.
Есть две недавно купленных платы с у-бутом версии 1.1.5.
При загрузке у-бута обе жалуются на плохой crc настроек и загружают настройки по-умолчанию. Нанд не перепрограммировался. Serial DataFlash DD2 отсутствует, надо полагать, настройки у-бута хранятся в нанд. Не хотелось бы пересобирать загрузчик для внесения своих настроек (сетевые адреса - подсеть совсем другая и изменить ее я не могу, скрипты, да тот же мак-адрес). К тому же на этапе отладки каждый раз при изменении одного параметра пересобирать у-бут не хочется.
Есть ли какие-либо способы вылечить эту болезнь? Поиск по форуму гуглом ничего не дал, хотя упоминаний данной фразы "warning. bad crc" много. Или это зло, с которым придется смириться?
покопайте в сторону команды U-boot - saveenv
для переменных окружения Юбута отводится область во флеш-памяти. посмотрите в сорцах - возможно для Нанда надо что-то поправить..
Нашел причину, почему у-бут не хочет загружать конфигурацию: в файле include/configs/at91sam9260ek.h указано
и дальше - если конфиг в нанде, то его смещение 0х60000, а там лежит ядро. А датафлешь на моих платах не установлена. Вариантов я вижу два: либо передвинуть на сектор ядро, либо установить датафлешь. Да и еще - пересобрал у-бут, загрузил его в плату, проверил переменные - все правильно. Облом ждал в виде сети - пинг существующего адреса зависает, tftpboot зависает, показав звездочку. При этом во время загрузки у-бут говорит
Вернул старый вариант - работает. Пока не знаю, где накосячил. Пересобирал с помощью команды . Буду пробовать другие варианты.
2 Jury093 - setenv работает, только она вчера и спасала. saveenv - не работает из-за отсутствующей микросхемы.
upd: собрал по ссылке Юрия - та же ерунда, сеть не работает. Из вариантов - изменил мак. Вернул обратно - не помогло.
Из-за конфига ставить датафлешь - это жескач :) разве нельзя изменить адрес где хранится конфиг в nand ? у меня была плата на 9260 - там только датафлешь была - и то все вслезало, включая корневую.
Можно. Я так и сделаю, когда разберусь, почему у меня сейчас у-бут капризничает с работой с сетью. А в моих платах чдро действительно лежит в 60000 хекс.
upd: все, кажется, разобрался.
Что было - не было носителя настроек у-бута. Физически.
Что сделал:
- в исходниках у-бута в файле include/configs/at91sam9260ek.h вместо сделал Собрал бинарный файл прилагаемым компилером (в этот момент заработала сеть). Заодно в CONFIG_EXTRA_ENV_SETTINGS исправил все адреса ядра 60000 на 80000.
Вручную перенес лежавшее по адресу 0х60000 ядро:Самбой перезалил бинарный файл у-бута (см. местную вики).
Загрузив у-бут, сохранил дефолтовые настройки командой Проверил работу, изменив и записав адрес платы - сохранился. После этого в режиме автозагрузки попробовал загрузить ядро. Получил облом - bad magic number. Похоже, вылез за границы чего-то, пока непонятно чего. Но моя цель, в общем-то достигнута - настройки есть и они работают.
upd2: сообразил, в чем промахнулся - вышел за 8М: 7А0000 + 80000 = 8,125М.
А чего там разбираться ? Все настройки задаются в переменных окружения
берете убут от своей платы да правите. Там же и адреса правите - откуда читается ядро и корневая. Потом только нужно их положить по соответствующим адресам в nand. Можно конечно и через saveenv но только мне лично удобнее в редакторе на PC конфиг поправить чем набивать в убуте :)