Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:2
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:6
Форум » starterkit.ru » Embedded Linux
Выравнивание образа для записи в NAND, u-boot
simark1979
Добавлено 29.11.2013 10:56 Редактировалось 29.11.2013 11:00
0
Сообщение: 1
simark1979
0

Пункты: 6256
Регистрация: 03.10.2012
Пол: Мужчина
Добрый день!

Вопрос в следующем:
Создаю uImage.FIT структуру для последующего её сохранения в NAND средствами u-boot.
А проблема в том, что mkimage создает образ, размер которого не кратен блоку NAND.
Естественно при попытке записи в NAND u-boot ругается....


Подскажите как стандартными средствами в бинарник дописать хвост для кратности?
Вижу, что образы ядра и u-boot выровнены как надо......
Не писать же свою утилиту.....

в мануале mkimage ничего не нашел........

Спасибо!
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 29.11.2013 11:21 Сообщение: 2
sasamy
4.71

Пункты: 83558
Регистрация: 14.08.2009
Цитата

Естественно при попытке записи в NAND u-boot ругается....


Покажите лог как пишете и как ругается - первый раз слышу что бинарник нужно специально дописывать кратно блоку, собственно для чего тогда специальные команды nand нужны и откуда кто знает какая геометрия у вашей nand на этапе сборки.
Спуститься к концу Подняться к началу
Персональная информация
simark1979
Добавлено 29.11.2013 11:43 Редактировалось 29.11.2013 11:54 Сообщение: 3
simark1979
0

Пункты: 6256
Регистрация: 03.10.2012
Пол: Мужчина
Вот, я тоже не понимаю, почему бы это не обработать было средствами u-boot.....

=> run write_firmaware_to_nand

NAND erase.part: device 0 offset 0x200000, size 0x3200000
Erasing at 0x33e0000 -- 100% complete.
OK

NAND write: device 0 offset 0x1405b51, size 0xebfa4af
size adjusted to 0xeb5a4af (5 bad blocks)
Attempt to write non page-aligned data
0 bytes written: ERROR
Спуститься к концу Подняться к началу
Персональная информация
simark1979
Добавлено 29.11.2013 11:48 Редактировалось 29.11.2013 11:57 Сообщение: 4
simark1979
0

Пункты: 6256
Регистрация: 03.10.2012
Пол: Мужчина
Дело в том, что ядро, u-boot выравниваются на этапе сборки на хосте.

Мне же надо немного другое.
Я хочу ВЕСЬ FIT положить в нанд для того, чтобы потом можно было восстановить прошивку именно из FIT структуры, идея в том, что при распаковке FIT мне удобно проверять целостность, запустить скрипт, который все раскидает по нанду и т.д.
К тому же содержимое FIT структуры будет лежать в зашиврованном виде
Это удобно со всех сторон
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 29.11.2013 11:48 Редактировалось 29.11.2013 11:52 Сообщение: 5
sasamy
4.71

Пункты: 83558
Регистрация: 14.08.2009
Покажите содержимое скрипта write_firmaware_to_nand и как у вас партиции размечены в убут (mtdparts), у вас там ошибка - вот их как раз и надо выравнивать по границе erase block.
Спуститься к концу Подняться к началу
Персональная информация
simark1979
Добавлено 29.11.2013 12:03 Редактировалось 29.11.2013 12:06 Сообщение: 6
simark1979
0

Пункты: 6256
Регистрация: 03.10.2012
Пол: Мужчина
Здесь нет ошибки, длинна файла 0x1405b51, она не кратна)

printenv write_firmaware_to_nand
write_firmaware_to_nand=mtdparts default; nand erase.part firmware; nand write.trimffs ${fileaddr} firmware ${filesize}
=>


device nand0 <mxc-nand>, # parts = 6
#: name size offset mask_flags
0: bootloader 0x00100000 0x00000000 0
1: env 0x00080000 0x00100000 0
2: env-redundant 0x00080000 0x00180000 0
3: firmware 0x03200000 0x00200000 0
4: kernel 0x00500000 0x03400000 0
5: rootfs 0x0c700000 0x03900000 0

active partition: nand0,0 - (bootloader) 0x00100000 @ 0x00000000
Спуститься к концу Подняться к началу
Персональная информация
simark1979
Добавлено 29.11.2013 12:13 Редактировалось 29.11.2013 12:18 Сообщение: 7
simark1979
0

Пункты: 6256
Регистрация: 03.10.2012
Пол: Мужчина
Я вижу два решения:
1. Можно fit-файл на хосте подготовить правильно.
2. Пересчитать размер блока внутри юбута

Тут важно не путать, кратность образов находящихся внутри fit (с этим все нормально) с кратность самого файла fit.

Другими словами, если не пытаться сохранить весь fit-файл в нанде, тогда проблемы нет
Спуститься к концу Подняться к началу
Персональная информация
simark1979
Добавлено 29.11.2013 12:16 Сообщение: 8
simark1979
0

Пункты: 6256
Регистрация: 03.10.2012
Пол: Мужчина
Для удобства:
mtdparts=mtdparts=mxc-nand:1m(bootloader),512k(env),512k(env-redundant),50m(firmware),5m(kernel),-(rootfs)
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 29.11.2013 12:24 Редактировалось 29.11.2013 12:27 Сообщение: 9
sasamy
4.71

Пункты: 83558
Регистрация: 14.08.2009
Цитата

Здесь нет ошибки, длинна файла 0x1405b51, она не кратна)


Не знаю где у вас ошибка, но дело не в размере файла.
хост:

$ echo "hello nand" > /tftpboot/zImage
$ ls -l /tftpboot/zImage
-rwxr-xr-x 1 sasa sasa 11 2013-11-29 13:10 /tftpboot/zImage

плата

=> run kern_update
Using FEC device
TFTP from server 192.168.0.2; our IP address is 192.168.0.136
Filename 'zImage'.
Load address: 0x70800000
Loading: #
4.9 KiB/s
done
Bytes transferred = 11 (b hex)

NAND erase.part: device 0 offset 0x200000, size 0x400000
Erasing at 0x5e0000 -- 100% complete.
OK

NAND write: device 0 offset 0x200000, size 0xb
11 bytes written: OK
Спуститься к концу Подняться к началу
Персональная информация
simark1979
Добавлено 29.11.2013 12:29 Редактировалось 29.11.2013 12:32 Сообщение: 10
simark1979
0

Пункты: 6256
Регистрация: 03.10.2012
Пол: Мужчина
Хм......покажите переменные юбута......после загрузки по TFTP
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux