Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:6
Форум » starterkit.ru » Отладочные платы » Sunshine-A20(-Lite)
A20, загрузка с NAND
Pavel Ivanchenko
Добавлено 09.03.2016 13:58 Редактировалось 09.03.2016 14:57
0
Сообщение: 1
Pavel Ivanchenko
Admin
4.39

Пункты: 91383
Регистрация: 24.03.2009
Пол: Мужчина
Итак, загрузка A20 с NAND флешки оказалась довольно запутанным делом, выяснилось, что нет утилиты (по крайней мере мы такого не нашли) которая бы позволяла шить загрузчики на самой плате (т.е. замысел шить NAND с SD карты пока не возможен) ...
У китайцев есть утилита под названием PhoenixSuit (под linux и win), которая по USB льет специальным образом собранный образ, она же и пишет загрузчики ...

Возникает два отличительных момента (относительно загрузки с SD карты)
1) Штатный u-boot не применим для загрузки с NAND, т.к. в нем не реализована поддержка NAND и "впилить" ее туда представляется слишком трудоемким делом.
Беда в том штатный u-boot обладает "особенными" настройками DDR3 памяти и при тех же параметрах настроек памяти передаваемых через FEX файл, частота стабильной работы получается ниже (360МГц против 432МГц).
В дальнейшем, мы попробуем с этим разобраться (первые попытки оказались безуспешными).
2) Для нормальной работы Ethernet порта в режиме 1000M, необходимо добавить настройки в одном из регистров (TX delay, если правильно помню).
Штатно, это делалось в u-boot, но т.к. u-boot работающий с NAND мы использовали уже готовый, этой настройки в нем нет.
Самый простой вариант - добавить это в ядро, обновленный файл gmac_core.c так же лежит на ФТП в разделе images/Sunshine-A20/nand

В итоге, как программирование NAND на данный момент осуществляется: распаковывается образ (собранный для другой подобной платы), в нем заменяется архив с файловой системой (ядро и модули там же), заменяется FEX файл (настройки памяти и прочее), после чего образ обратно собирается. Этот "обновленный" образ и заливается в NAND через PhoenixSuit.

Неприятный момент заключается в необходимость самостоятельно паять USB переходник, т.к. загрузочный USB порт выходит только на штыревой разъем расширения X1: 3-DP, 4-DN, 40-GND (3 линий будет достаточно).

Манипуляции при программировании под Win
Скопировать файлы sunshine-a20.img и PhoenixSuit.rar с ФТП из раздела images/Sunshine-A20/nand
Распаковать PhoenixSuit.rar
Подключить USB переходник на X1.
Замкнуть J1 "Boot".
Включить питание платы. В системе должно появиться USB устройство, драйвер на него лежит в архиве PhoenixSuit.
После успешной установки драйвера, выключить плату.
Запустить PhoenixSuit.exe, перейти в раздел "Firmware" и указать путь до образа sunshine-a20.img.
Включить плату с замкнутым J1, через несколько секунд утилита автоматически запустит процесс обновления и спросит "тип" форматирования, лучше ответить "Yes".
Разомкнуть J1 (иначе, процедура повторится).
Весь процесс займет ~5 минут (по крайней мере в моем окружении такие цифры), следует заметить, случаются сбои и иногда утилита сама говорит что попытка не удалась, либо просто что то подвисает и утилита "вечно" ждет, поэтому следует ориентироваться на время выполнения всей процедуры.

Самостоятельная сборка образа
Скопировать в виртуальную машину архив mk_nand.tar.bz2 из раздела images/Sunshine-A20/nand, файлы imgrepacker-sk.tar.bz2, nand.fex, mk-nand-img.sh скопировать в корень папки buildroot.
Удостовериться, что скрипт mk-nand-img.sh имеет атрибут исполняемого файла.
Выполнить
Цитата
sudo ./mk-nand-img.sh
(пароль 123456).
В результате, в корне папки buildroot появится образ sk-a20.img, предназначенный для PhoenixSuit.
Спуститься к концу Подняться к началу
Персональная информация
John Smith
Добавлено 11.03.2016 17:28 Сообщение: 2
John Smith
0

Пункты: 2289
Регистрация: 18.02.2011
Цитата
Итак, загрузка A20 с NAND флешки оказалась довольно запутанным делом, выяснилось, что нет утилиты (по крайней мере мы такого не нашли) которая бы позволяла шить загрузчики на самой плате (т.е. замысел шить NAND с SD карты пока не возможен) ....

Не понял.
Метод копирования First MB не работает что ли ?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 11.03.2016 17:32 Сообщение: 3
sasamy
4.70

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

Метод копирования First MB не работает что ли ?


где можно прочитать про этот метод ?
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 11.03.2016 21:03 Сообщение: 4
Pavel Ivanchenko
Admin
4.39

Пункты: 91383
Регистрация: 24.03.2009
Пол: Мужчина
Цитата
Не понял.
Метод копирования First MB не работает что ли ?

Если подразумеваете копирование командой dd - нет.
Спуститься к концу Подняться к началу
Персональная информация
John Smith
Добавлено 11.03.2016 22:23 Сообщение: 5
John Smith
0

Пункты: 2289
Регистрация: 18.02.2011
Цитата
Если подразумеваете копирование командой dd - нет.

Да. Странно.
olimex и linux-sunxi врут что ли ? Может ваша nand несовместимая ?
Спуститься к концу Подняться к началу
Персональная информация
John Smith
Добавлено 11.03.2016 22:25 Сообщение: 6
John Smith
0

Пункты: 2289
Регистрация: 18.02.2011
Цитата
где можно прочитать про этот метод ?

На linux-sunxi.org естественно
Installing_to_NAND
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 12.03.2016 01:38 Редактировалось 12.03.2016 01:46 Сообщение: 7
sasamy
4.70

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

На linux-sunxi.org естественно
Installing_to_NAND


это я видел естественно - только где там написано что загрузчики можно установить на голую нанду через dd ? там написано про бэкап

http://linux-sunxi.org/Installing_to_NAND#Backup_NAND

Если так все просто - почему все выкладывают имиджи для сюитов но никто не догадался выложить первый мегабаййт - знай лей и радуйся :) а то вон некоторые маются специально драйвер патчат

http://www.cubieforums.com/index.php?topic=4048.0

программы специальные пишут

https://github.com/phelum/CT_NandBoot
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 12.03.2016 10:06 Сообщение: 8
Pavel Ivanchenko
Admin
4.39

Пункты: 91383
Регистрация: 24.03.2009
Пол: Мужчина
Цитата
Да. Странно.
olimex и linux-sunxi врут что ли ? Может ваша nand несовместимая ?
"Наша" NAND в точности та же самая, что и на Olimex или Cubieboard/Cubietrack.
Как Вам уже заметили, штатный бекап из самой системы не трогает первичные загрузчики, соответственно, если их там нет, то и копировать образы смысла уже нет.
Спуститься к концу Подняться к началу
Персональная информация
Strijar
Добавлено 08.12.2016 17:03 Сообщение: 9
Strijar
Ранг
5

Группа: Клиенты
Пункты: 1618
Регистрация: 21.04.2009
Пол: Мужчина
Добрый день! Есть какие-нибудь подвижки в плане темы?
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 25.02.2017 15:57 Сообщение: 10
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Добрый день! Есть какие-нибудь подвижки в плане темы?

у меня a20-lite, т.е. изначально нанда не было. из спортивного интереса припаял поочередно пару чипов - заранее скажу, что конечный результат отрицательный..
disclaimer - насколько я понял в отгружаемых китах sk-a20 чип нанд уже запаян и есть возможность прошивки начальных бутлоадеров по интерфейсу USB с помощью утилиты под windows. мне было интереснее получить доступ ко всем областям nand чисто программными средствами на самой системе..

почитав Wiki allwinner-a, я сдул со старой платы от планшета чип Micron, 8GiB, MLC, попилил его, потом сдул чип попроще Micron, 1GiB,MLC.. исходники юбута взял на гитхабе аллвинера.. посредством пинков и зуботычин, отладки и допиливания получил следующее:
грузим:
Код
U-Boot SPL 2016.11-rc1 (Feb 13 2017 - 19:00:25)
DRAM: 512 MiB
CPU: 912000000Hz, AXI/AHB/APB: 3/2/2
Trying to boot from MMC1
U-Boot 2016.11-rc1 (Feb 13 2017 - 19:00:25 +0300) Allwinner Technology
CPU: Allwinner A20 (SUN7I)
Model: SK-A20lite Starterkit
I2C: ready
DRAM: 512 MiB
NAND: /* Decode parameters from extended ID */
device found, Manufacturer ID: 0x2c, Chip ID: 0xd3
ONFI=0
Micron NAND 1GiB 3,3V 8-bit
1024 MiB, MLC, erase size: 256 KiB, page size: 2048, OOB size: 64
ecc init 0
ecc init 1
hw ecc init 0
hw ecc init 1
hw ecc init 2
hw ecc init 3
size=64 bytes=14 nsectors=2
hw ecc init 4
hw ecc init 5
ecc init 2
1024 MiB
MMC: SUNXI SD/MMC: 0

как видит это нанд:
Код
=> nand info
Device 0: nand0, sector size 256 KiB
Page size 2048 b
OOB size 64 b
Erase size 262144 b
subpagesize 2048 b
options 0x 1000
bbt options 0x 68000

нарезка разделов:
Код
=> mtdparts
device nand0 <sunxi-nand>, # parts = 5
#: name size offset mask_flags
0: boot0 0x00200000 0x00000000 0
1: boot0-rescue 0x00200000 0x00200000 0
2: uboot 0x00200000 0x00400000 0
3: uboot-rescue 0x00200000 0x00600000 0
4: rootfs 0x3f800000 0x00800000 0
active partition: nand0,0 - (boot0) 0x00200000 @ 0x00000000

затираем блок 0, пишем кусок памяти, считываем из блока 0
Код
=> nand erase.part boot0

NAND erase.part: device 0 offset 0x0, size 0x200000
Erasing at 0x1c0000 -- 100% complete.
OK
=> nand dump 0
Page 00000000 dump:
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff

=> md 42000000 100
42000000: 80800184 fffec7f7 bebf577e 267adb82 ........~W....z&
42000010: e7fd72f0 2968ae98 2a562521 ddffe2df .r....h)!%V*....
42000020: 54620700 f5fffeee 9aef472d 84fe00e3 ..bT....-G......
42000030: 7fdfbbff 302434e3 b0488150 75edfeff .....4$0P.H....u

=> nand write 42000000 0 100

NAND write: device 0 offset 0x0, size 0x100
256 bytes written: OK

=> nand dump 0
Page 00000000 dump:
84 01 80 80 f7 c7 fe ff 7e 57 bf be 82 db 7a 26
f0 72 fd e7 98 ae 68 29 21 25 56 2a df e2 ff dd
00 07 62 54 ee fe ff f5 2d 47 ef 9a e3 00 fe 84
ff bb df 7f e3 34 24 30 50 81 48 b0 ff fe ed 75

всё - это результат максимум. в пределах блока 0 инфа пишется правильно и достоверно. к сожалению, только в 0, в при попытках записать "чуть больше" или "чуть дальше" пишется либо ерунда, либо вопли "timeout" или молча ребут..

выводы:
1. принципиальная возможность записи в нулевый блок есть - мешает странная скрытность компании Allwinner
2. исходники в стартовом составе малоработоспособны и могут "взлететь" на чипах, на которых их отлаживали..
3. зоопарк NAND очень велик и запутан, что усугубляется частым отсутствием документации на сами чипы и как следствие их ключевые параметры..
4. дальнейшего продолжения возни с нандом я не планирую, по причине отсутствия интереса (не мейнстрим)

зы пардон за "многобукв", в трех фразах не написать..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Отладочные платы » Sunshine-A20(-Lite)