<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://buyordew.srns.ru/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>https://buyordew.srns.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lipa</id>
		<title>SRNS - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="https://buyordew.srns.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lipa"/>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Lipa"/>
		<updated>2026-04-21T08:11:38Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.20.3</generator>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/05.06.2018_Clonicus</id>
		<title>Blog:Lipa/05.06.2018 Clonicus</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/05.06.2018_Clonicus"/>
				<updated>2022-06-22T07:30:00Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* Известные проблемы в Clonicus_1.3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
Clonicus&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма2}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Исправить в 1.1 ==&lt;br /&gt;
&lt;br /&gt;
* ✔ Решить вопрос с питанием - идеальные диоды до 5,5В. Buck/Bust работает от 4В, но по току может не хватить на весь клоникус. '''На вход просится TPS61235P'''&lt;br /&gt;
* ✔ Усилить дорожки входного питания&lt;br /&gt;
* ✔ Расположить термоплейны на горячих элементах по всем слоям&lt;br /&gt;
* ✔ Разместить в доступном месте TP на блокировку всех ключей линий питания для первого запуска&lt;br /&gt;
* ✔ Добавить блокировочных конденсаторов на ПЛИС&lt;br /&gt;
* ✔ Изменить напряжение банка 35 на 1.8В.&lt;br /&gt;
* &amp;lt;s&amp;gt;Возможно, завести питание банков через нулевки для возможности правки.&amp;lt;/s&amp;gt;&lt;br /&gt;
* ✔ Перенести токовый сенсор дальше от края платы&lt;br /&gt;
* ✔ Перевести периферию на другой банк или ставить level-shifter.&lt;br /&gt;
* ✔ Собрать тестовый проект в вивадо и прописанными ногами в .xdc!&lt;br /&gt;
* ✔ Перепроверить волновое сопротивление USB и Ethernet&lt;br /&gt;
* ✔ Возможно, убрать нулевки eth. (Проверить работу по 1000M base jack)&lt;br /&gt;
* ✔ Убрать L5 из схематики.&lt;br /&gt;
* ✔ Добавить RC цепочку на ресет PS_POR_B.&lt;br /&gt;
* ✔ Добавить RC цепочки на ключи питания всех линий.&lt;br /&gt;
* ✔ Добавить ключ на аналоговые 3.3В.&lt;br /&gt;
* ✔ Исправить подключение к BGA падам. Площадь должна быть одинакова.&lt;br /&gt;
* ✔ Поменять местами rx-tx в FTDI. Должно быть tx-rx; rx-tx.&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить tespoints.&amp;lt;/s&amp;gt;&lt;br /&gt;
* ✔ Продумать ресет на FTDI. Сделать TP&lt;br /&gt;
* ✔ Добавить светодиод на FTDI.&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить светодиоды или вывести их на кабель для сигнала активности eth.&amp;lt;/s&amp;gt;&lt;br /&gt;
* ✔ Добавить user LED.&lt;br /&gt;
* ✔ Проверить работу мультиплексора клоков 10МГц.&lt;br /&gt;
* ✔ Проверить RF LNA и делители.&lt;br /&gt;
* ✔ Проверить заряд ионистра.&lt;br /&gt;
* ✔ Поменять диод. Более подходящих не нашел, оставляем.&lt;br /&gt;
* ✔ Выпаять тантал. Вернуть делители DC/DC - убедиться в старте питания. Проверить диапазон рабочих входных напряжений.&lt;br /&gt;
* ✔ Добавить монтажные ушки на края платы.&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить возможность отпилить SPI от каждой из номад, добавить TP на SPI.&amp;lt;/s&amp;gt;&lt;br /&gt;
* ✔ Добавить шелкографию на светодиоды&lt;br /&gt;
* ✔ Исправить шелкографию на Clonicus 1.1&lt;br /&gt;
* ✔ Отметить оси xyz на шелкографии&lt;br /&gt;
* ✔ Запитать RTC через мезанин&lt;br /&gt;
* Заказать радиаторов на ZYNQ&lt;br /&gt;
* Заменить силовые керамические конденсаторы на GRM21BD71A226ME44L на входном DC/DC&lt;br /&gt;
* Заменить все конденсаторы питания с запасом по напряжению&lt;br /&gt;
* Заказать разных RC для ключей питания&lt;br /&gt;
&lt;br /&gt;
== Case Board v1.0 ==&lt;br /&gt;
&lt;br /&gt;
Пожелания к изготовителю:&lt;br /&gt;
&lt;br /&gt;
# Постараться не размещать под модулем Clonicus крупные выпирающие детали. Мелочь - на обсуждение с нами.&lt;br /&gt;
# Добавить металлизацию на все отверстия под стойки.&lt;br /&gt;
# В проекте используется световод на 3 диода- под них нужно разметить монтажные площадки. В чертеже указано только место посадки световода.&lt;br /&gt;
# В проекте используется тактовая кнопка включения без защелки, нужно продумать механизм электрической фиксации.&lt;br /&gt;
# Желательно обеспечить свободное изъятие/установку sd карточки - недопустимо монтировать крупные элементы на ее пути.&lt;br /&gt;
# Учесть зоны металлизации по краям платы и способ монтажа в корпус в пазы - нежелательно размещение деталей по краям.&lt;br /&gt;
# На конечной стадии проектирования обязательно провести верификацию совпадения разъемов модуля и платы расширения.&lt;br /&gt;
# В проекте должны быть использованы разъемы из списка компонентов.&lt;br /&gt;
# Недопустимо монтировать крупные детали на пути следования mmcx провода от платы в модуль Clonicus.&lt;br /&gt;
# Желательно использовать чип Ethernet PHY, указанный в списке компонентов.&lt;br /&gt;
&lt;br /&gt;
 from Ivan:&lt;br /&gt;
* Не ставить мелочь сверху вокруг клоникуса, чтобы его можно было легко отодрать&lt;br /&gt;
* Потребление тока завести в клоникус&lt;br /&gt;
* Программное отключение?&lt;br /&gt;
* Два уарта&lt;br /&gt;
* Сложную схемоту не ставить под клоникус, чтобы ее можно было отладить&lt;br /&gt;
* Нормальный монитор питания&lt;br /&gt;
* По дефолту после монтажа заблокировать ключи питания под проверку всех номиналов&lt;br /&gt;
* Мшу для клоникуса&lt;br /&gt;
* Завести может быть 10МГц самые классные на клоникус напрямую&lt;br /&gt;
&lt;br /&gt;
== Правки в Clonicus_1.1 ==&lt;br /&gt;
* 111 плата часто не прогружает плис&lt;br /&gt;
* на 111,112 плате Заменил R1 50к на 11к&lt;br /&gt;
* на 112 плате поднял напряжение ядра примерно на 30мВ&lt;br /&gt;
* &amp;lt;s&amp;gt;на 114 плате zynq 45. Сгоревший банк 12. Не заработают номады. Не работает DC/DC 3.3V и 1.8_DDR&amp;lt;/s&amp;gt;&lt;br /&gt;
* на 111,116 отрезал питание TCXO_33 и делителя клоков. Вырвал делитель клоков. Теперь идут клоки только в арм&lt;br /&gt;
* на 112 плате добавил конденсатор на питание tcxo&lt;br /&gt;
* '''на 115 плате и ответке №4 полуоторван MEZ2'''&lt;br /&gt;
* '''на 117 плате заменил резистроры i2c на 1k'''&lt;br /&gt;
&lt;br /&gt;
== Известные проблемы в Clonicus_1.1 ==&lt;br /&gt;
&lt;br /&gt;
* ✓ Заменить МШУ ALM-GA001&lt;br /&gt;
* ✓ &amp;lt;s&amp;gt;Заменить LDO фронтендов&amp;lt;/s&amp;gt; Добавил 3 термовиа&lt;br /&gt;
* ✓ &amp;lt;s&amp;gt;Заменить MOSFET светодиода eth на BGA&amp;lt;/s&amp;gt;&lt;br /&gt;
* Использовать емкость 10n вместо 0,01мкФ в dxdesigner&lt;br /&gt;
* &amp;lt;s&amp;gt;Дозаказать TCXO 10MHz. АБН накосячил&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Заменить TCXO на получше&amp;lt;/s&amp;gt;&lt;br /&gt;
* ✓ Поставить более точные резисторы в DC/DC 1V, расчитать другие номиналы для чуть большего напряжения&lt;br /&gt;
* ✓ '''Подтянуть DONE вверх''' Возможно, можно просто не впаивать подтяжку вниз.&lt;br /&gt;
* ✓ Сузить монтажные ушки&lt;br /&gt;
* ✓ Сдвинуть ухо из под юсб&lt;br /&gt;
* ✓ Предположительно поменять С42 на 1000пФ; L6 на 56нГн; R70 на 11кОм&lt;br /&gt;
* ✓ Добавить светодиод на мультиплексор клоков&lt;br /&gt;
* ✓ Недостаточное усиление МШУ. Нужен как минимум еще один.&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить шелкографию номеров ПАВов&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Проблемы с TCXO. Пока что не впаиваем R45&amp;lt;/s&amp;gt;&lt;br /&gt;
* ✓ Добавить какую-нибудь eeprom на i2c для идентификации платы&lt;br /&gt;
* ✓ Напряжение с шунта на токовый сенсор необходимо снимать непосредственно с падов, иначе сказывается сопротивление дорожек&lt;br /&gt;
* Возможно, с использованием кита попадает фантомное питание через физик и цинк не стартует. Надо синхронизировать домены питания и выводить power_good&lt;br /&gt;
* Подумать над общим монитором питания&lt;br /&gt;
* Проблемы с запуском питания. Используется boost конвертер на 5,1В. По даташиту на входе &amp;lt;= 4,5В должно быть. При 4,9-5В бывают проблемы. Надо что-то придумать&lt;br /&gt;
* ✓ Усилить входной mmcx - отрывается с плейном&lt;br /&gt;
* Стек на PLD больше 6мм - клоникус переламывается. Надо взять другой ответный разъем (а так ли это...)&lt;br /&gt;
* &amp;lt;s&amp;gt;Клоки между номадами стартуют в случайной фазе&amp;lt;/s&amp;gt; похер&lt;br /&gt;
* Выходной цифровой сигнал из номад не фифференциальный и возвратные токи текут через объединение земель и предположительно они создают колоссальные цифровые наводки. Необходимо в домене AGND поставить преобразователь CMOS-LVDS и уже дифф сигнал вести в плис в домен DGND&lt;br /&gt;
* ✓ Потери на 1В - тонкие дорожки у ключа, на клоникусе напряжение 0,975В. Надо что-то решать, возможно еще ключи перегреваются&lt;br /&gt;
* Добавить TP на питание вход выход ключей&lt;br /&gt;
* Разгрузить входной DC/DC step-up. Включить 1В и может другие на вход?&lt;br /&gt;
* Может быть коммутировать FB 1В на выход ключа?&lt;br /&gt;
* Завести может быть ddr_vtt на xadc&lt;br /&gt;
* Ускорить снятие POR_PS и сделать его более крутым&lt;br /&gt;
* клоникус чувствителен к статике - надо думать&lt;br /&gt;
* Ставить DDR3&lt;br /&gt;
* Может стоит поставить QSPI-flash&lt;br /&gt;
* Если будем использовать usb-uart можно запитать ftdi от usb для определения до включения платы (но для клоникуса это не актуально - от usb запитается и плата)&lt;br /&gt;
* &amp;lt;s&amp;gt;'''Исправить питание TCXO_33''' Сделать 1,8В. Перегруз на входе делителя клоков.&amp;lt;/s&amp;gt;&lt;br /&gt;
* ✓ Удалить делитель клоков для ZYNQ - постоянно проблемы монтажа&lt;br /&gt;
* ✓ &amp;lt;s&amp;gt;LDO делителя клоков 33МГц не нагружен и не зафильтрован. Добавить конденсатор! '''Выкидываем делитель клоков'''&amp;lt;/s&amp;gt;&lt;br /&gt;
* ✓ Может стоит вевести i2c через MIO для работы без прошивки. Надо подумать&lt;br /&gt;
* ✓ Перегруз номады клоками от делителя. Необходимо запитать банки делителя от 1,8В&lt;br /&gt;
* &amp;lt;s&amp;gt;Возможно перегружен делитель RF клоков&amp;lt;/s&amp;gt;&lt;br /&gt;
* '''Обдув tcxo приводит к срыву работы приемника'''&lt;br /&gt;
* Заменить ethernet phy на USB&lt;br /&gt;
* ✓ Питание 1В сильно нестабильное - добавить много всяких емкостей на выход DC/DC&lt;br /&gt;
* ✓ Плату выбивает статикой особенно с антенны. Добавить защитных диодов&lt;br /&gt;
* ✓ Добавить по-умолчанию нулевку на блокирование ключей питания под выпайку после проверки&lt;br /&gt;
* Согласовать rf-вход. На 115 клоникусе согласование на 2Ghz&lt;br /&gt;
* Указать рабочее напряжение кондеров&lt;br /&gt;
* '''Заменить TPS22920 на TPS22970''' для 105С&lt;br /&gt;
* Подумать над горячими индастриал элементами&lt;br /&gt;
&lt;br /&gt;
== Известные проблемы в Clonicus_1.2 ==&lt;br /&gt;
* Смотреть на версию чипа EEPROM!&lt;br /&gt;
* Исправить масочный мостик VD2 tvs-диода на входе рф&lt;br /&gt;
* Попробовать изменить вскрытия маски и масочные мостики на возможности цветных масок&lt;br /&gt;
* ✓ Убрать ключ в монтажке на резисторные сборки&lt;br /&gt;
* Подумать, как убрать путаницу между двумя монтажными экселями&lt;br /&gt;
* ✓ Убрать на эссамбли диодов VD1 VD3 плюс, а ключ катода сделать вертикальным и внутри корпуса&lt;br /&gt;
* ✓ Исправить футпринт ABS05 ZQ12 - разнести пады&lt;br /&gt;
* Сделать КЗ на футпринт резистора блокиратора питания&lt;br /&gt;
* ✓ Убрать с монтажа резистора блокиратора питания&lt;br /&gt;
* ✓ Неправильно впаялись светодиоды, поправить ключи (питание DONE, выбор клоков)&lt;br /&gt;
* Не был впаян R1&lt;br /&gt;
* Не был запаян пин коннектора SD&lt;br /&gt;
* Был коротыш R79 C87&lt;br /&gt;
* Уменьшить сопротивление i2c pullup&lt;br /&gt;
* Не использовать MIO I2C - он может виснуть. Лучше EMIO - на крайняк можно свое ядро подцепить&lt;br /&gt;
&lt;br /&gt;
== Известные проблемы в Clonicus_1.3 ==&lt;br /&gt;
* Уменьшить емкость конденсаторов в LDO для формирования VTT_DDR для лучшего трекинга ошибки центральной точки&lt;br /&gt;
&lt;br /&gt;
== Тайное знание создания шелкографии лого ==&lt;br /&gt;
* Генерим силг-ген по классике (слои силкскрин аутлайн топ, силк_тор_тескст). width-option 200um&lt;br /&gt;
* Делаем маск ген&lt;br /&gt;
[[File:Screenshot_32.png|789px]]&lt;br /&gt;
* Открываем silk_top_text_3, в шрифте лого на каждом полигоне удаляем одну вершину - элемент зальется&lt;br /&gt;
* Еще раз генерим силк-ген из silk_top_text_3 без опции width-option (только топ!)&lt;br /&gt;
&lt;br /&gt;
== Всякое ==&lt;br /&gt;
[[File:Screenshot_2019-05-28_0_131120.png|400px]]&lt;br /&gt;
[[File:LeCroy1.png|400px]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
{{wl-publish: 2018-06-05 15:03:13 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/05.06.2018_Clonicus</id>
		<title>Blog:Lipa/05.06.2018 Clonicus</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/05.06.2018_Clonicus"/>
				<updated>2022-06-22T07:28:56Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* Известные проблемы в Clonicus_1.2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
Clonicus&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма2}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Исправить в 1.1 ==&lt;br /&gt;
&lt;br /&gt;
* ✔ Решить вопрос с питанием - идеальные диоды до 5,5В. Buck/Bust работает от 4В, но по току может не хватить на весь клоникус. '''На вход просится TPS61235P'''&lt;br /&gt;
* ✔ Усилить дорожки входного питания&lt;br /&gt;
* ✔ Расположить термоплейны на горячих элементах по всем слоям&lt;br /&gt;
* ✔ Разместить в доступном месте TP на блокировку всех ключей линий питания для первого запуска&lt;br /&gt;
* ✔ Добавить блокировочных конденсаторов на ПЛИС&lt;br /&gt;
* ✔ Изменить напряжение банка 35 на 1.8В.&lt;br /&gt;
* &amp;lt;s&amp;gt;Возможно, завести питание банков через нулевки для возможности правки.&amp;lt;/s&amp;gt;&lt;br /&gt;
* ✔ Перенести токовый сенсор дальше от края платы&lt;br /&gt;
* ✔ Перевести периферию на другой банк или ставить level-shifter.&lt;br /&gt;
* ✔ Собрать тестовый проект в вивадо и прописанными ногами в .xdc!&lt;br /&gt;
* ✔ Перепроверить волновое сопротивление USB и Ethernet&lt;br /&gt;
* ✔ Возможно, убрать нулевки eth. (Проверить работу по 1000M base jack)&lt;br /&gt;
* ✔ Убрать L5 из схематики.&lt;br /&gt;
* ✔ Добавить RC цепочку на ресет PS_POR_B.&lt;br /&gt;
* ✔ Добавить RC цепочки на ключи питания всех линий.&lt;br /&gt;
* ✔ Добавить ключ на аналоговые 3.3В.&lt;br /&gt;
* ✔ Исправить подключение к BGA падам. Площадь должна быть одинакова.&lt;br /&gt;
* ✔ Поменять местами rx-tx в FTDI. Должно быть tx-rx; rx-tx.&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить tespoints.&amp;lt;/s&amp;gt;&lt;br /&gt;
* ✔ Продумать ресет на FTDI. Сделать TP&lt;br /&gt;
* ✔ Добавить светодиод на FTDI.&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить светодиоды или вывести их на кабель для сигнала активности eth.&amp;lt;/s&amp;gt;&lt;br /&gt;
* ✔ Добавить user LED.&lt;br /&gt;
* ✔ Проверить работу мультиплексора клоков 10МГц.&lt;br /&gt;
* ✔ Проверить RF LNA и делители.&lt;br /&gt;
* ✔ Проверить заряд ионистра.&lt;br /&gt;
* ✔ Поменять диод. Более подходящих не нашел, оставляем.&lt;br /&gt;
* ✔ Выпаять тантал. Вернуть делители DC/DC - убедиться в старте питания. Проверить диапазон рабочих входных напряжений.&lt;br /&gt;
* ✔ Добавить монтажные ушки на края платы.&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить возможность отпилить SPI от каждой из номад, добавить TP на SPI.&amp;lt;/s&amp;gt;&lt;br /&gt;
* ✔ Добавить шелкографию на светодиоды&lt;br /&gt;
* ✔ Исправить шелкографию на Clonicus 1.1&lt;br /&gt;
* ✔ Отметить оси xyz на шелкографии&lt;br /&gt;
* ✔ Запитать RTC через мезанин&lt;br /&gt;
* Заказать радиаторов на ZYNQ&lt;br /&gt;
* Заменить силовые керамические конденсаторы на GRM21BD71A226ME44L на входном DC/DC&lt;br /&gt;
* Заменить все конденсаторы питания с запасом по напряжению&lt;br /&gt;
* Заказать разных RC для ключей питания&lt;br /&gt;
&lt;br /&gt;
== Case Board v1.0 ==&lt;br /&gt;
&lt;br /&gt;
Пожелания к изготовителю:&lt;br /&gt;
&lt;br /&gt;
# Постараться не размещать под модулем Clonicus крупные выпирающие детали. Мелочь - на обсуждение с нами.&lt;br /&gt;
# Добавить металлизацию на все отверстия под стойки.&lt;br /&gt;
# В проекте используется световод на 3 диода- под них нужно разметить монтажные площадки. В чертеже указано только место посадки световода.&lt;br /&gt;
# В проекте используется тактовая кнопка включения без защелки, нужно продумать механизм электрической фиксации.&lt;br /&gt;
# Желательно обеспечить свободное изъятие/установку sd карточки - недопустимо монтировать крупные элементы на ее пути.&lt;br /&gt;
# Учесть зоны металлизации по краям платы и способ монтажа в корпус в пазы - нежелательно размещение деталей по краям.&lt;br /&gt;
# На конечной стадии проектирования обязательно провести верификацию совпадения разъемов модуля и платы расширения.&lt;br /&gt;
# В проекте должны быть использованы разъемы из списка компонентов.&lt;br /&gt;
# Недопустимо монтировать крупные детали на пути следования mmcx провода от платы в модуль Clonicus.&lt;br /&gt;
# Желательно использовать чип Ethernet PHY, указанный в списке компонентов.&lt;br /&gt;
&lt;br /&gt;
 from Ivan:&lt;br /&gt;
* Не ставить мелочь сверху вокруг клоникуса, чтобы его можно было легко отодрать&lt;br /&gt;
* Потребление тока завести в клоникус&lt;br /&gt;
* Программное отключение?&lt;br /&gt;
* Два уарта&lt;br /&gt;
* Сложную схемоту не ставить под клоникус, чтобы ее можно было отладить&lt;br /&gt;
* Нормальный монитор питания&lt;br /&gt;
* По дефолту после монтажа заблокировать ключи питания под проверку всех номиналов&lt;br /&gt;
* Мшу для клоникуса&lt;br /&gt;
* Завести может быть 10МГц самые классные на клоникус напрямую&lt;br /&gt;
&lt;br /&gt;
== Правки в Clonicus_1.1 ==&lt;br /&gt;
* 111 плата часто не прогружает плис&lt;br /&gt;
* на 111,112 плате Заменил R1 50к на 11к&lt;br /&gt;
* на 112 плате поднял напряжение ядра примерно на 30мВ&lt;br /&gt;
* &amp;lt;s&amp;gt;на 114 плате zynq 45. Сгоревший банк 12. Не заработают номады. Не работает DC/DC 3.3V и 1.8_DDR&amp;lt;/s&amp;gt;&lt;br /&gt;
* на 111,116 отрезал питание TCXO_33 и делителя клоков. Вырвал делитель клоков. Теперь идут клоки только в арм&lt;br /&gt;
* на 112 плате добавил конденсатор на питание tcxo&lt;br /&gt;
* '''на 115 плате и ответке №4 полуоторван MEZ2'''&lt;br /&gt;
* '''на 117 плате заменил резистроры i2c на 1k'''&lt;br /&gt;
&lt;br /&gt;
== Известные проблемы в Clonicus_1.1 ==&lt;br /&gt;
&lt;br /&gt;
* ✓ Заменить МШУ ALM-GA001&lt;br /&gt;
* ✓ &amp;lt;s&amp;gt;Заменить LDO фронтендов&amp;lt;/s&amp;gt; Добавил 3 термовиа&lt;br /&gt;
* ✓ &amp;lt;s&amp;gt;Заменить MOSFET светодиода eth на BGA&amp;lt;/s&amp;gt;&lt;br /&gt;
* Использовать емкость 10n вместо 0,01мкФ в dxdesigner&lt;br /&gt;
* &amp;lt;s&amp;gt;Дозаказать TCXO 10MHz. АБН накосячил&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Заменить TCXO на получше&amp;lt;/s&amp;gt;&lt;br /&gt;
* ✓ Поставить более точные резисторы в DC/DC 1V, расчитать другие номиналы для чуть большего напряжения&lt;br /&gt;
* ✓ '''Подтянуть DONE вверх''' Возможно, можно просто не впаивать подтяжку вниз.&lt;br /&gt;
* ✓ Сузить монтажные ушки&lt;br /&gt;
* ✓ Сдвинуть ухо из под юсб&lt;br /&gt;
* ✓ Предположительно поменять С42 на 1000пФ; L6 на 56нГн; R70 на 11кОм&lt;br /&gt;
* ✓ Добавить светодиод на мультиплексор клоков&lt;br /&gt;
* ✓ Недостаточное усиление МШУ. Нужен как минимум еще один.&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить шелкографию номеров ПАВов&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Проблемы с TCXO. Пока что не впаиваем R45&amp;lt;/s&amp;gt;&lt;br /&gt;
* ✓ Добавить какую-нибудь eeprom на i2c для идентификации платы&lt;br /&gt;
* ✓ Напряжение с шунта на токовый сенсор необходимо снимать непосредственно с падов, иначе сказывается сопротивление дорожек&lt;br /&gt;
* Возможно, с использованием кита попадает фантомное питание через физик и цинк не стартует. Надо синхронизировать домены питания и выводить power_good&lt;br /&gt;
* Подумать над общим монитором питания&lt;br /&gt;
* Проблемы с запуском питания. Используется boost конвертер на 5,1В. По даташиту на входе &amp;lt;= 4,5В должно быть. При 4,9-5В бывают проблемы. Надо что-то придумать&lt;br /&gt;
* ✓ Усилить входной mmcx - отрывается с плейном&lt;br /&gt;
* Стек на PLD больше 6мм - клоникус переламывается. Надо взять другой ответный разъем (а так ли это...)&lt;br /&gt;
* &amp;lt;s&amp;gt;Клоки между номадами стартуют в случайной фазе&amp;lt;/s&amp;gt; похер&lt;br /&gt;
* Выходной цифровой сигнал из номад не фифференциальный и возвратные токи текут через объединение земель и предположительно они создают колоссальные цифровые наводки. Необходимо в домене AGND поставить преобразователь CMOS-LVDS и уже дифф сигнал вести в плис в домен DGND&lt;br /&gt;
* ✓ Потери на 1В - тонкие дорожки у ключа, на клоникусе напряжение 0,975В. Надо что-то решать, возможно еще ключи перегреваются&lt;br /&gt;
* Добавить TP на питание вход выход ключей&lt;br /&gt;
* Разгрузить входной DC/DC step-up. Включить 1В и может другие на вход?&lt;br /&gt;
* Может быть коммутировать FB 1В на выход ключа?&lt;br /&gt;
* Завести может быть ddr_vtt на xadc&lt;br /&gt;
* Ускорить снятие POR_PS и сделать его более крутым&lt;br /&gt;
* клоникус чувствителен к статике - надо думать&lt;br /&gt;
* Ставить DDR3&lt;br /&gt;
* Может стоит поставить QSPI-flash&lt;br /&gt;
* Если будем использовать usb-uart можно запитать ftdi от usb для определения до включения платы (но для клоникуса это не актуально - от usb запитается и плата)&lt;br /&gt;
* &amp;lt;s&amp;gt;'''Исправить питание TCXO_33''' Сделать 1,8В. Перегруз на входе делителя клоков.&amp;lt;/s&amp;gt;&lt;br /&gt;
* ✓ Удалить делитель клоков для ZYNQ - постоянно проблемы монтажа&lt;br /&gt;
* ✓ &amp;lt;s&amp;gt;LDO делителя клоков 33МГц не нагружен и не зафильтрован. Добавить конденсатор! '''Выкидываем делитель клоков'''&amp;lt;/s&amp;gt;&lt;br /&gt;
* ✓ Может стоит вевести i2c через MIO для работы без прошивки. Надо подумать&lt;br /&gt;
* ✓ Перегруз номады клоками от делителя. Необходимо запитать банки делителя от 1,8В&lt;br /&gt;
* &amp;lt;s&amp;gt;Возможно перегружен делитель RF клоков&amp;lt;/s&amp;gt;&lt;br /&gt;
* '''Обдув tcxo приводит к срыву работы приемника'''&lt;br /&gt;
* Заменить ethernet phy на USB&lt;br /&gt;
* ✓ Питание 1В сильно нестабильное - добавить много всяких емкостей на выход DC/DC&lt;br /&gt;
* ✓ Плату выбивает статикой особенно с антенны. Добавить защитных диодов&lt;br /&gt;
* ✓ Добавить по-умолчанию нулевку на блокирование ключей питания под выпайку после проверки&lt;br /&gt;
* Согласовать rf-вход. На 115 клоникусе согласование на 2Ghz&lt;br /&gt;
* Указать рабочее напряжение кондеров&lt;br /&gt;
* '''Заменить TPS22920 на TPS22970''' для 105С&lt;br /&gt;
* Подумать над горячими индастриал элементами&lt;br /&gt;
&lt;br /&gt;
== Известные проблемы в Clonicus_1.2 ==&lt;br /&gt;
* Смотреть на версию чипа EEPROM!&lt;br /&gt;
* Исправить масочный мостик VD2 tvs-диода на входе рф&lt;br /&gt;
* Попробовать изменить вскрытия маски и масочные мостики на возможности цветных масок&lt;br /&gt;
* ✓ Убрать ключ в монтажке на резисторные сборки&lt;br /&gt;
* Подумать, как убрать путаницу между двумя монтажными экселями&lt;br /&gt;
* ✓ Убрать на эссамбли диодов VD1 VD3 плюс, а ключ катода сделать вертикальным и внутри корпуса&lt;br /&gt;
* ✓ Исправить футпринт ABS05 ZQ12 - разнести пады&lt;br /&gt;
* Сделать КЗ на футпринт резистора блокиратора питания&lt;br /&gt;
* ✓ Убрать с монтажа резистора блокиратора питания&lt;br /&gt;
* ✓ Неправильно впаялись светодиоды, поправить ключи (питание DONE, выбор клоков)&lt;br /&gt;
* Не был впаян R1&lt;br /&gt;
* Не был запаян пин коннектора SD&lt;br /&gt;
* Был коротыш R79 C87&lt;br /&gt;
* Уменьшить сопротивление i2c pullup&lt;br /&gt;
* Не использовать MIO I2C - он может виснуть. Лучше EMIO - на крайняк можно свое ядро подцепить&lt;br /&gt;
&lt;br /&gt;
== Известные проблемы в Clonicus_1.3 ==&lt;br /&gt;
* Смотреть на версию чипа EEPROM!&lt;br /&gt;
&lt;br /&gt;
== Тайное знание создания шелкографии лого ==&lt;br /&gt;
* Генерим силг-ген по классике (слои силкскрин аутлайн топ, силк_тор_тескст). width-option 200um&lt;br /&gt;
* Делаем маск ген&lt;br /&gt;
[[File:Screenshot_32.png|789px]]&lt;br /&gt;
* Открываем silk_top_text_3, в шрифте лого на каждом полигоне удаляем одну вершину - элемент зальется&lt;br /&gt;
* Еще раз генерим силк-ген из silk_top_text_3 без опции width-option (только топ!)&lt;br /&gt;
&lt;br /&gt;
== Всякое ==&lt;br /&gt;
[[File:Screenshot_2019-05-28_0_131120.png|400px]]&lt;br /&gt;
[[File:LeCroy1.png|400px]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
{{wl-publish: 2018-06-05 15:03:13 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/07.08.2020_QEMU_Virtualization</id>
		<title>Blog:Lipa/07.08.2020 QEMU Virtualization</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/07.08.2020_QEMU_Virtualization"/>
				<updated>2022-05-23T08:26:03Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* QEMU + Questa */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary  hidden=true&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:QEMU.png|400px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Виртуализация petalinux на хосте!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== INTRO ==&lt;br /&gt;
Качаем читаем [[:File:ug982-petalinux-system-simulation_QEMU.pdf]]&lt;br /&gt;
&lt;br /&gt;
== SD-card create ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/k0nze/qemu_zynq_linux_setup инструкция]&lt;br /&gt;
&lt;br /&gt;
Выкачиваем [https://github.com/qemu/qemu.git репозиторий qemu]&lt;br /&gt;
&lt;br /&gt;
Ставим в систему nbd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install nbd-client &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверяем&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsmod | grep nbd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если нет модуля - загружаем его:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe nbd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ставим в систему pixman&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libpixman-1-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможно:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev&lt;br /&gt;
sudo apt-get install ninja-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Инициализируем подмодуль:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd qemu&lt;br /&gt;
git submodule update --init dtc&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Исполняем:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure --target-list=&amp;quot;aarch64-softmmu&amp;quot; --enable-fdt --disable-kvm --disable-xen make -j4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создаем файл-образ флешки:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
~/git/qemu/qemu-img create -f qcow2 ~/clonicus_1.2.3/sdcard/sdcard.qcow2 256M&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем образ к хосту:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo ~/git/qemu/build/qemu-nbd --connect=/dev/nbd0 ~/clonicus_1.2.3/sdcard/sdcard.qcow2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверяем подключение:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo fdisk /dev/nbd0 -l&lt;br /&gt;
&lt;br /&gt;
Диск /dev/nbd0: 256 MiB, 268435456 байтов, 524288 секторов&lt;br /&gt;
Единицы измерения: секторов из 1 * 512 = 512 байтов&lt;br /&gt;
Размер сектора (логический/физический): 512 байт / 512 байт&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Форматируем флешку:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo fdisk /dev/nbd0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[:File:sd_table.rar]]&lt;br /&gt;
Таблица форматирования&lt;br /&gt;
Размеченный файл-образ, берем, пользуем&lt;br /&gt;
&lt;br /&gt;
== START ==&lt;br /&gt;
&lt;br /&gt;
Заходим по ssh на виртуальный petalinux&lt;br /&gt;
&lt;br /&gt;
'''Пока что не получается заменить IP адрес.''' Используем 10.0.2.15&lt;br /&gt;
&lt;br /&gt;
Необходимо переименовать на флешке файл interfaces, чтобы он не ломал настройки&lt;br /&gt;
&lt;br /&gt;
Перенаправляем порты ssh при вызове запуска виртуалки:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-boot --qemu --kernel --qemu-args &amp;quot;-redir tcp:10022:10.0.2.15:22 -drive file=sdcard.qcow2,if=sd,index=0,media=disk&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее коннектимся с хоста:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh-copy-id root@localhost -p 10022&lt;br /&gt;
ssh root@localhost -p 10022&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Копирование по ssh:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
scp -P 10022 &amp;lt;source&amp;gt;  root@localhost:&amp;lt;destination&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прерывать симуляцию:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Ctrl-A X&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Работает SSH и подгружаются скрипты с подмонтированной SD-карточки. Цветная консоль, ключи ssh...&lt;br /&gt;
&lt;br /&gt;
== Native QEMU ==&lt;br /&gt;
&lt;br /&gt;
Забываем, все, что выше. Запускаем петалинукс на чистом QEMU&lt;br /&gt;
&lt;br /&gt;
качаем [https://github.com/qemu/qemu.git репозиторий qemu]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Исполняем:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure --target-list=&amp;quot;arm-softmmu&amp;quot; --enable-fdt --disable-kvm --disable-xen&lt;br /&gt;
make -j24&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
переходим в build, создаем скрипт запуска&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
./qemu-system-arm -M xilinx-zynq-a9 -m 256M \&lt;br /&gt;
-device loader,file=/home/ivan/linux/u-boot.elf \&lt;br /&gt;
-drive file=/home/ivan/git/SD/sdcard.qcow2,if=sd,index=0,media=disk \&lt;br /&gt;
-serial stdio&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== QEMU + Questa ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:HOWTO]]&lt;br /&gt;
[[Категория:Oryx]]&lt;br /&gt;
[[Категория:Zynq]]&lt;br /&gt;
[[Категория:EmbeddedLinux]]&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
[[Category:Qemu]]&lt;br /&gt;
[[Category:Debug]]&lt;br /&gt;
{{wl-publish: 2020-08-07 09:45:50 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/07.08.2020_QEMU_Virtualization</id>
		<title>Blog:Lipa/07.08.2020 QEMU Virtualization</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/07.08.2020_QEMU_Virtualization"/>
				<updated>2022-05-23T08:24:32Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* Native QEMU */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary  hidden=true&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:QEMU.png|400px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Виртуализация petalinux на хосте!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== INTRO ==&lt;br /&gt;
Качаем читаем [[:File:ug982-petalinux-system-simulation_QEMU.pdf]]&lt;br /&gt;
&lt;br /&gt;
== SD-card create ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/k0nze/qemu_zynq_linux_setup инструкция]&lt;br /&gt;
&lt;br /&gt;
Выкачиваем [https://github.com/qemu/qemu.git репозиторий qemu]&lt;br /&gt;
&lt;br /&gt;
Ставим в систему nbd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install nbd-client &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверяем&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsmod | grep nbd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если нет модуля - загружаем его:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe nbd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ставим в систему pixman&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libpixman-1-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможно:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev&lt;br /&gt;
sudo apt-get install ninja-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Инициализируем подмодуль:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd qemu&lt;br /&gt;
git submodule update --init dtc&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Исполняем:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure --target-list=&amp;quot;aarch64-softmmu&amp;quot; --enable-fdt --disable-kvm --disable-xen make -j4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создаем файл-образ флешки:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
~/git/qemu/qemu-img create -f qcow2 ~/clonicus_1.2.3/sdcard/sdcard.qcow2 256M&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем образ к хосту:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo ~/git/qemu/build/qemu-nbd --connect=/dev/nbd0 ~/clonicus_1.2.3/sdcard/sdcard.qcow2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверяем подключение:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo fdisk /dev/nbd0 -l&lt;br /&gt;
&lt;br /&gt;
Диск /dev/nbd0: 256 MiB, 268435456 байтов, 524288 секторов&lt;br /&gt;
Единицы измерения: секторов из 1 * 512 = 512 байтов&lt;br /&gt;
Размер сектора (логический/физический): 512 байт / 512 байт&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Форматируем флешку:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo fdisk /dev/nbd0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[:File:sd_table.rar]]&lt;br /&gt;
Таблица форматирования&lt;br /&gt;
Размеченный файл-образ, берем, пользуем&lt;br /&gt;
&lt;br /&gt;
== START ==&lt;br /&gt;
&lt;br /&gt;
Заходим по ssh на виртуальный petalinux&lt;br /&gt;
&lt;br /&gt;
'''Пока что не получается заменить IP адрес.''' Используем 10.0.2.15&lt;br /&gt;
&lt;br /&gt;
Необходимо переименовать на флешке файл interfaces, чтобы он не ломал настройки&lt;br /&gt;
&lt;br /&gt;
Перенаправляем порты ssh при вызове запуска виртуалки:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-boot --qemu --kernel --qemu-args &amp;quot;-redir tcp:10022:10.0.2.15:22 -drive file=sdcard.qcow2,if=sd,index=0,media=disk&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее коннектимся с хоста:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh-copy-id root@localhost -p 10022&lt;br /&gt;
ssh root@localhost -p 10022&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Копирование по ssh:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
scp -P 10022 &amp;lt;source&amp;gt;  root@localhost:&amp;lt;destination&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прерывать симуляцию:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Ctrl-A X&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Работает SSH и подгружаются скрипты с подмонтированной SD-карточки. Цветная консоль, ключи ssh...&lt;br /&gt;
&lt;br /&gt;
== Native QEMU ==&lt;br /&gt;
&lt;br /&gt;
Забываем, все, что выше. Запускаем петалинукс на чистом QEMU&lt;br /&gt;
&lt;br /&gt;
качаем [https://github.com/qemu/qemu.git репозиторий qemu]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Исполняем:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure --target-list=&amp;quot;arm-softmmu&amp;quot; --enable-fdt --disable-kvm --disable-xen&lt;br /&gt;
make -j24&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
переходим в build, создаем скрипт запуска&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
./qemu-system-arm -M xilinx-zynq-a9 -m 256M \&lt;br /&gt;
-device loader,file=/home/ivan/linux/u-boot.elf \&lt;br /&gt;
-drive file=/home/ivan/git/SD/sdcard.qcow2,if=sd,index=0,media=disk \&lt;br /&gt;
-serial stdio&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== QEMU + Questa ==&lt;br /&gt;
&lt;br /&gt;
[[Категория:HOWTO]]&lt;br /&gt;
[[Категория:Oryx]]&lt;br /&gt;
[[Категория:Zynq]]&lt;br /&gt;
[[Категория:EmbeddedLinux]]&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
[[Category:Qemu]]&lt;br /&gt;
[[Category:Debug]]&lt;br /&gt;
{{wl-publish: 2020-08-07 09:45:50 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/07.08.2020_QEMU_Virtualization</id>
		<title>Blog:Lipa/07.08.2020 QEMU Virtualization</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/07.08.2020_QEMU_Virtualization"/>
				<updated>2022-05-05T10:53:59Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* Native QEMU */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary  hidden=true&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:QEMU.png|400px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Виртуализация petalinux на хосте!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== INTRO ==&lt;br /&gt;
Качаем читаем [[:File:ug982-petalinux-system-simulation_QEMU.pdf]]&lt;br /&gt;
&lt;br /&gt;
== SD-card create ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/k0nze/qemu_zynq_linux_setup инструкция]&lt;br /&gt;
&lt;br /&gt;
Выкачиваем [https://github.com/qemu/qemu.git репозиторий qemu]&lt;br /&gt;
&lt;br /&gt;
Ставим в систему nbd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install nbd-client &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверяем&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsmod | grep nbd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если нет модуля - загружаем его:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe nbd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ставим в систему pixman&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libpixman-1-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможно:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev&lt;br /&gt;
sudo apt-get install ninja-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Инициализируем подмодуль:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd qemu&lt;br /&gt;
git submodule update --init dtc&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Исполняем:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure --target-list=&amp;quot;aarch64-softmmu&amp;quot; --enable-fdt --disable-kvm --disable-xen make -j4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создаем файл-образ флешки:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
~/git/qemu/qemu-img create -f qcow2 ~/clonicus_1.2.3/sdcard/sdcard.qcow2 256M&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем образ к хосту:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo ~/git/qemu/build/qemu-nbd --connect=/dev/nbd0 ~/clonicus_1.2.3/sdcard/sdcard.qcow2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверяем подключение:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo fdisk /dev/nbd0 -l&lt;br /&gt;
&lt;br /&gt;
Диск /dev/nbd0: 256 MiB, 268435456 байтов, 524288 секторов&lt;br /&gt;
Единицы измерения: секторов из 1 * 512 = 512 байтов&lt;br /&gt;
Размер сектора (логический/физический): 512 байт / 512 байт&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Форматируем флешку:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo fdisk /dev/nbd0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[:File:sd_table.rar]]&lt;br /&gt;
Таблица форматирования&lt;br /&gt;
Размеченный файл-образ, берем, пользуем&lt;br /&gt;
&lt;br /&gt;
== START ==&lt;br /&gt;
&lt;br /&gt;
Заходим по ssh на виртуальный petalinux&lt;br /&gt;
&lt;br /&gt;
'''Пока что не получается заменить IP адрес.''' Используем 10.0.2.15&lt;br /&gt;
&lt;br /&gt;
Необходимо переименовать на флешке файл interfaces, чтобы он не ломал настройки&lt;br /&gt;
&lt;br /&gt;
Перенаправляем порты ssh при вызове запуска виртуалки:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-boot --qemu --kernel --qemu-args &amp;quot;-redir tcp:10022:10.0.2.15:22 -drive file=sdcard.qcow2,if=sd,index=0,media=disk&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее коннектимся с хоста:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh-copy-id root@localhost -p 10022&lt;br /&gt;
ssh root@localhost -p 10022&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Копирование по ssh:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
scp -P 10022 &amp;lt;source&amp;gt;  root@localhost:&amp;lt;destination&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прерывать симуляцию:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Ctrl-A X&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Работает SSH и подгружаются скрипты с подмонтированной SD-карточки. Цветная консоль, ключи ssh...&lt;br /&gt;
&lt;br /&gt;
== Native QEMU ==&lt;br /&gt;
&lt;br /&gt;
Забываем, все, что выше. Запускаем петалинукс на чистом QEMU&lt;br /&gt;
&lt;br /&gt;
качаем [https://github.com/qemu/qemu.git репозиторий qemu]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Исполняем:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure --target-list=&amp;quot;arm-softmmu&amp;quot; --enable-fdt --disable-kvm --disable-xen&lt;br /&gt;
make -j24&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
переходим в build, создаем скрипт запуска&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
./qemu-system-arm -M xilinx-zynq-a9 -m 256M \&lt;br /&gt;
-device loader,file=/home/ivan/linux/u-boot.elf \&lt;br /&gt;
-drive file=/home/ivan/git/SD/sdcard.qcow2,if=sd,index=0,media=disk \&lt;br /&gt;
-serial stdio&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:HOWTO]]&lt;br /&gt;
[[Категория:Oryx]]&lt;br /&gt;
[[Категория:Zynq]]&lt;br /&gt;
[[Категория:EmbeddedLinux]]&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
[[Category:Qemu]]&lt;br /&gt;
[[Category:Debug]]&lt;br /&gt;
{{wl-publish: 2020-08-07 09:45:50 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/07.08.2020_QEMU_Virtualization</id>
		<title>Blog:Lipa/07.08.2020 QEMU Virtualization</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/07.08.2020_QEMU_Virtualization"/>
				<updated>2022-05-05T10:53:37Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* Native QEMU */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary  hidden=true&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:QEMU.png|400px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Виртуализация petalinux на хосте!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== INTRO ==&lt;br /&gt;
Качаем читаем [[:File:ug982-petalinux-system-simulation_QEMU.pdf]]&lt;br /&gt;
&lt;br /&gt;
== SD-card create ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/k0nze/qemu_zynq_linux_setup инструкция]&lt;br /&gt;
&lt;br /&gt;
Выкачиваем [https://github.com/qemu/qemu.git репозиторий qemu]&lt;br /&gt;
&lt;br /&gt;
Ставим в систему nbd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install nbd-client &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверяем&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsmod | grep nbd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если нет модуля - загружаем его:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe nbd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ставим в систему pixman&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libpixman-1-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможно:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev&lt;br /&gt;
sudo apt-get install ninja-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Инициализируем подмодуль:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd qemu&lt;br /&gt;
git submodule update --init dtc&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Исполняем:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure --target-list=&amp;quot;aarch64-softmmu&amp;quot; --enable-fdt --disable-kvm --disable-xen make -j4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создаем файл-образ флешки:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
~/git/qemu/qemu-img create -f qcow2 ~/clonicus_1.2.3/sdcard/sdcard.qcow2 256M&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем образ к хосту:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo ~/git/qemu/build/qemu-nbd --connect=/dev/nbd0 ~/clonicus_1.2.3/sdcard/sdcard.qcow2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверяем подключение:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo fdisk /dev/nbd0 -l&lt;br /&gt;
&lt;br /&gt;
Диск /dev/nbd0: 256 MiB, 268435456 байтов, 524288 секторов&lt;br /&gt;
Единицы измерения: секторов из 1 * 512 = 512 байтов&lt;br /&gt;
Размер сектора (логический/физический): 512 байт / 512 байт&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Форматируем флешку:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo fdisk /dev/nbd0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[:File:sd_table.rar]]&lt;br /&gt;
Таблица форматирования&lt;br /&gt;
Размеченный файл-образ, берем, пользуем&lt;br /&gt;
&lt;br /&gt;
== START ==&lt;br /&gt;
&lt;br /&gt;
Заходим по ssh на виртуальный petalinux&lt;br /&gt;
&lt;br /&gt;
'''Пока что не получается заменить IP адрес.''' Используем 10.0.2.15&lt;br /&gt;
&lt;br /&gt;
Необходимо переименовать на флешке файл interfaces, чтобы он не ломал настройки&lt;br /&gt;
&lt;br /&gt;
Перенаправляем порты ssh при вызове запуска виртуалки:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-boot --qemu --kernel --qemu-args &amp;quot;-redir tcp:10022:10.0.2.15:22 -drive file=sdcard.qcow2,if=sd,index=0,media=disk&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее коннектимся с хоста:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh-copy-id root@localhost -p 10022&lt;br /&gt;
ssh root@localhost -p 10022&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Копирование по ssh:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
scp -P 10022 &amp;lt;source&amp;gt;  root@localhost:&amp;lt;destination&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прерывать симуляцию:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Ctrl-A X&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Работает SSH и подгружаются скрипты с подмонтированной SD-карточки. Цветная консоль, ключи ssh...&lt;br /&gt;
&lt;br /&gt;
== Native QEMU ==&lt;br /&gt;
&lt;br /&gt;
Забываем, все, что выше. Запускаем петалинукс на чистом QEMU&lt;br /&gt;
&lt;br /&gt;
качаем репо ссылка выше&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Исполняем:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure --target-list=&amp;quot;arm-softmmu&amp;quot; --enable-fdt --disable-kvm --disable-xen&lt;br /&gt;
make -j24&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
переходим в build, создаем скрипт запуска&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
./qemu-system-arm -M xilinx-zynq-a9 -m 256M \&lt;br /&gt;
-device loader,file=/home/ivan/linux/u-boot.elf \&lt;br /&gt;
-drive file=/home/ivan/git/SD/sdcard.qcow2,if=sd,index=0,media=disk \&lt;br /&gt;
-serial stdio&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:HOWTO]]&lt;br /&gt;
[[Категория:Oryx]]&lt;br /&gt;
[[Категория:Zynq]]&lt;br /&gt;
[[Категория:EmbeddedLinux]]&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
[[Category:Qemu]]&lt;br /&gt;
[[Category:Debug]]&lt;br /&gt;
{{wl-publish: 2020-08-07 09:45:50 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/07.08.2020_QEMU_Virtualization</id>
		<title>Blog:Lipa/07.08.2020 QEMU Virtualization</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/07.08.2020_QEMU_Virtualization"/>
				<updated>2022-05-05T10:53:29Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* START */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary  hidden=true&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:QEMU.png|400px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Виртуализация petalinux на хосте!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== INTRO ==&lt;br /&gt;
Качаем читаем [[:File:ug982-petalinux-system-simulation_QEMU.pdf]]&lt;br /&gt;
&lt;br /&gt;
== SD-card create ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/k0nze/qemu_zynq_linux_setup инструкция]&lt;br /&gt;
&lt;br /&gt;
Выкачиваем [https://github.com/qemu/qemu.git репозиторий qemu]&lt;br /&gt;
&lt;br /&gt;
Ставим в систему nbd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install nbd-client &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверяем&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsmod | grep nbd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если нет модуля - загружаем его:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe nbd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ставим в систему pixman&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libpixman-1-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможно:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev&lt;br /&gt;
sudo apt-get install ninja-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Инициализируем подмодуль:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd qemu&lt;br /&gt;
git submodule update --init dtc&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Исполняем:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure --target-list=&amp;quot;aarch64-softmmu&amp;quot; --enable-fdt --disable-kvm --disable-xen make -j4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создаем файл-образ флешки:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
~/git/qemu/qemu-img create -f qcow2 ~/clonicus_1.2.3/sdcard/sdcard.qcow2 256M&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем образ к хосту:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo ~/git/qemu/build/qemu-nbd --connect=/dev/nbd0 ~/clonicus_1.2.3/sdcard/sdcard.qcow2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверяем подключение:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo fdisk /dev/nbd0 -l&lt;br /&gt;
&lt;br /&gt;
Диск /dev/nbd0: 256 MiB, 268435456 байтов, 524288 секторов&lt;br /&gt;
Единицы измерения: секторов из 1 * 512 = 512 байтов&lt;br /&gt;
Размер сектора (логический/физический): 512 байт / 512 байт&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Форматируем флешку:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo fdisk /dev/nbd0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[:File:sd_table.rar]]&lt;br /&gt;
Таблица форматирования&lt;br /&gt;
Размеченный файл-образ, берем, пользуем&lt;br /&gt;
&lt;br /&gt;
== START ==&lt;br /&gt;
&lt;br /&gt;
Заходим по ssh на виртуальный petalinux&lt;br /&gt;
&lt;br /&gt;
'''Пока что не получается заменить IP адрес.''' Используем 10.0.2.15&lt;br /&gt;
&lt;br /&gt;
Необходимо переименовать на флешке файл interfaces, чтобы он не ломал настройки&lt;br /&gt;
&lt;br /&gt;
Перенаправляем порты ssh при вызове запуска виртуалки:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-boot --qemu --kernel --qemu-args &amp;quot;-redir tcp:10022:10.0.2.15:22 -drive file=sdcard.qcow2,if=sd,index=0,media=disk&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее коннектимся с хоста:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh-copy-id root@localhost -p 10022&lt;br /&gt;
ssh root@localhost -p 10022&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Копирование по ssh:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
scp -P 10022 &amp;lt;source&amp;gt;  root@localhost:&amp;lt;destination&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прерывать симуляцию:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Ctrl-A X&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Работает SSH и подгружаются скрипты с подмонтированной SD-карточки. Цветная консоль, ключи ssh...&lt;br /&gt;
&lt;br /&gt;
== Native QEMU ==&lt;br /&gt;
&lt;br /&gt;
качаем репо ссылка выше&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Исполняем:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure --target-list=&amp;quot;arm-softmmu&amp;quot; --enable-fdt --disable-kvm --disable-xen&lt;br /&gt;
make -j24&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
переходим в build, создаем скрипт запуска&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
./qemu-system-arm -M xilinx-zynq-a9 -m 256M \&lt;br /&gt;
-device loader,file=/home/ivan/linux/u-boot.elf \&lt;br /&gt;
-drive file=/home/ivan/git/SD/sdcard.qcow2,if=sd,index=0,media=disk \&lt;br /&gt;
-serial stdio&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:HOWTO]]&lt;br /&gt;
[[Категория:Oryx]]&lt;br /&gt;
[[Категория:Zynq]]&lt;br /&gt;
[[Категория:EmbeddedLinux]]&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
[[Category:Qemu]]&lt;br /&gt;
[[Category:Debug]]&lt;br /&gt;
{{wl-publish: 2020-08-07 09:45:50 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/07.08.2020_QEMU_Virtualization</id>
		<title>Blog:Lipa/07.08.2020 QEMU Virtualization</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/07.08.2020_QEMU_Virtualization"/>
				<updated>2022-05-05T10:52:17Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* START */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary  hidden=true&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:QEMU.png|400px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Виртуализация petalinux на хосте!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== INTRO ==&lt;br /&gt;
Качаем читаем [[:File:ug982-petalinux-system-simulation_QEMU.pdf]]&lt;br /&gt;
&lt;br /&gt;
== SD-card create ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/k0nze/qemu_zynq_linux_setup инструкция]&lt;br /&gt;
&lt;br /&gt;
Выкачиваем [https://github.com/qemu/qemu.git репозиторий qemu]&lt;br /&gt;
&lt;br /&gt;
Ставим в систему nbd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install nbd-client &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверяем&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsmod | grep nbd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если нет модуля - загружаем его:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe nbd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ставим в систему pixman&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libpixman-1-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможно:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev&lt;br /&gt;
sudo apt-get install ninja-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Инициализируем подмодуль:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd qemu&lt;br /&gt;
git submodule update --init dtc&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Исполняем:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure --target-list=&amp;quot;aarch64-softmmu&amp;quot; --enable-fdt --disable-kvm --disable-xen make -j4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создаем файл-образ флешки:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
~/git/qemu/qemu-img create -f qcow2 ~/clonicus_1.2.3/sdcard/sdcard.qcow2 256M&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем образ к хосту:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo ~/git/qemu/build/qemu-nbd --connect=/dev/nbd0 ~/clonicus_1.2.3/sdcard/sdcard.qcow2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверяем подключение:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo fdisk /dev/nbd0 -l&lt;br /&gt;
&lt;br /&gt;
Диск /dev/nbd0: 256 MiB, 268435456 байтов, 524288 секторов&lt;br /&gt;
Единицы измерения: секторов из 1 * 512 = 512 байтов&lt;br /&gt;
Размер сектора (логический/физический): 512 байт / 512 байт&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Форматируем флешку:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo fdisk /dev/nbd0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[:File:sd_table.rar]]&lt;br /&gt;
Таблица форматирования&lt;br /&gt;
Размеченный файл-образ, берем, пользуем&lt;br /&gt;
&lt;br /&gt;
== START ==&lt;br /&gt;
&lt;br /&gt;
Забываем, все, что выше. Запускаем петалинукс на чистом QEMU&lt;br /&gt;
&lt;br /&gt;
Заходим по ssh на виртуальный petalinux&lt;br /&gt;
&lt;br /&gt;
'''Пока что не получается заменить IP адрес.''' Используем 10.0.2.15&lt;br /&gt;
&lt;br /&gt;
Необходимо переименовать на флешке файл interfaces, чтобы он не ломал настройки&lt;br /&gt;
&lt;br /&gt;
Перенаправляем порты ssh при вызове запуска виртуалки:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-boot --qemu --kernel --qemu-args &amp;quot;-redir tcp:10022:10.0.2.15:22 -drive file=sdcard.qcow2,if=sd,index=0,media=disk&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее коннектимся с хоста:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh-copy-id root@localhost -p 10022&lt;br /&gt;
ssh root@localhost -p 10022&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Копирование по ssh:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
scp -P 10022 &amp;lt;source&amp;gt;  root@localhost:&amp;lt;destination&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прерывать симуляцию:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Ctrl-A X&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Работает SSH и подгружаются скрипты с подмонтированной SD-карточки. Цветная консоль, ключи ssh...&lt;br /&gt;
&lt;br /&gt;
== Native QEMU ==&lt;br /&gt;
&lt;br /&gt;
качаем репо ссылка выше&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Исполняем:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure --target-list=&amp;quot;arm-softmmu&amp;quot; --enable-fdt --disable-kvm --disable-xen&lt;br /&gt;
make -j24&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
переходим в build, создаем скрипт запуска&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
./qemu-system-arm -M xilinx-zynq-a9 -m 256M \&lt;br /&gt;
-device loader,file=/home/ivan/linux/u-boot.elf \&lt;br /&gt;
-drive file=/home/ivan/git/SD/sdcard.qcow2,if=sd,index=0,media=disk \&lt;br /&gt;
-serial stdio&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:HOWTO]]&lt;br /&gt;
[[Категория:Oryx]]&lt;br /&gt;
[[Категория:Zynq]]&lt;br /&gt;
[[Категория:EmbeddedLinux]]&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
[[Category:Qemu]]&lt;br /&gt;
[[Category:Debug]]&lt;br /&gt;
{{wl-publish: 2020-08-07 09:45:50 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/07.08.2020_QEMU_Virtualization</id>
		<title>Blog:Lipa/07.08.2020 QEMU Virtualization</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/07.08.2020_QEMU_Virtualization"/>
				<updated>2022-05-05T10:50:27Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* Native QEMU */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary  hidden=true&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:QEMU.png|400px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Виртуализация petalinux на хосте!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== INTRO ==&lt;br /&gt;
Качаем читаем [[:File:ug982-petalinux-system-simulation_QEMU.pdf]]&lt;br /&gt;
&lt;br /&gt;
== SD-card create ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/k0nze/qemu_zynq_linux_setup инструкция]&lt;br /&gt;
&lt;br /&gt;
Выкачиваем [https://github.com/qemu/qemu.git репозиторий qemu]&lt;br /&gt;
&lt;br /&gt;
Ставим в систему nbd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install nbd-client &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверяем&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsmod | grep nbd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если нет модуля - загружаем его:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe nbd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ставим в систему pixman&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libpixman-1-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможно:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev&lt;br /&gt;
sudo apt-get install ninja-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Инициализируем подмодуль:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd qemu&lt;br /&gt;
git submodule update --init dtc&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Исполняем:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure --target-list=&amp;quot;aarch64-softmmu&amp;quot; --enable-fdt --disable-kvm --disable-xen make -j4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создаем файл-образ флешки:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
~/git/qemu/qemu-img create -f qcow2 ~/clonicus_1.2.3/sdcard/sdcard.qcow2 256M&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем образ к хосту:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo ~/git/qemu/build/qemu-nbd --connect=/dev/nbd0 ~/clonicus_1.2.3/sdcard/sdcard.qcow2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверяем подключение:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo fdisk /dev/nbd0 -l&lt;br /&gt;
&lt;br /&gt;
Диск /dev/nbd0: 256 MiB, 268435456 байтов, 524288 секторов&lt;br /&gt;
Единицы измерения: секторов из 1 * 512 = 512 байтов&lt;br /&gt;
Размер сектора (логический/физический): 512 байт / 512 байт&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Форматируем флешку:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo fdisk /dev/nbd0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[:File:sd_table.rar]]&lt;br /&gt;
Таблица форматирования&lt;br /&gt;
Размеченный файл-образ, берем, пользуем&lt;br /&gt;
&lt;br /&gt;
== START ==&lt;br /&gt;
&lt;br /&gt;
Заходим по ssh на виртуальный petalinux&lt;br /&gt;
&lt;br /&gt;
'''Пока что не получается заменить IP адрес.''' Используем 10.0.2.15&lt;br /&gt;
&lt;br /&gt;
Необходимо переименовать на флешке файл interfaces, чтобы он не ломал настройки&lt;br /&gt;
&lt;br /&gt;
Перенаправляем порты ssh при вызове запуска виртуалки:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-boot --qemu --kernel --qemu-args &amp;quot;-redir tcp:10022:10.0.2.15:22 -drive file=sdcard.qcow2,if=sd,index=0,media=disk&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее коннектимся с хоста:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh-copy-id root@localhost -p 10022&lt;br /&gt;
ssh root@localhost -p 10022&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Копирование по ssh:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
scp -P 10022 &amp;lt;source&amp;gt;  root@localhost:&amp;lt;destination&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прерывать симуляцию:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Ctrl-A X&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Работает SSH и подгружаются скрипты с подмонтированной SD-карточки. Цветная консоль, ключи ssh...&lt;br /&gt;
&lt;br /&gt;
== Native QEMU ==&lt;br /&gt;
&lt;br /&gt;
качаем репо ссылка выше&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Исполняем:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure --target-list=&amp;quot;arm-softmmu&amp;quot; --enable-fdt --disable-kvm --disable-xen&lt;br /&gt;
make -j24&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
переходим в build, создаем скрипт запуска&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
./qemu-system-arm -M xilinx-zynq-a9 -m 256M \&lt;br /&gt;
-device loader,file=/home/ivan/linux/u-boot.elf \&lt;br /&gt;
-drive file=/home/ivan/git/SD/sdcard.qcow2,if=sd,index=0,media=disk \&lt;br /&gt;
-serial stdio&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:HOWTO]]&lt;br /&gt;
[[Категория:Oryx]]&lt;br /&gt;
[[Категория:Zynq]]&lt;br /&gt;
[[Категория:EmbeddedLinux]]&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
[[Category:Qemu]]&lt;br /&gt;
[[Category:Debug]]&lt;br /&gt;
{{wl-publish: 2020-08-07 09:45:50 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/07.08.2020_QEMU_Virtualization</id>
		<title>Blog:Lipa/07.08.2020 QEMU Virtualization</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/07.08.2020_QEMU_Virtualization"/>
				<updated>2022-05-05T10:49:16Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* Native QEMU */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary  hidden=true&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:QEMU.png|400px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Виртуализация petalinux на хосте!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== INTRO ==&lt;br /&gt;
Качаем читаем [[:File:ug982-petalinux-system-simulation_QEMU.pdf]]&lt;br /&gt;
&lt;br /&gt;
== SD-card create ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/k0nze/qemu_zynq_linux_setup инструкция]&lt;br /&gt;
&lt;br /&gt;
Выкачиваем [https://github.com/qemu/qemu.git репозиторий qemu]&lt;br /&gt;
&lt;br /&gt;
Ставим в систему nbd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install nbd-client &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверяем&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsmod | grep nbd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если нет модуля - загружаем его:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe nbd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ставим в систему pixman&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libpixman-1-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможно:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev&lt;br /&gt;
sudo apt-get install ninja-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Инициализируем подмодуль:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd qemu&lt;br /&gt;
git submodule update --init dtc&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Исполняем:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure --target-list=&amp;quot;aarch64-softmmu&amp;quot; --enable-fdt --disable-kvm --disable-xen make -j4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создаем файл-образ флешки:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
~/git/qemu/qemu-img create -f qcow2 ~/clonicus_1.2.3/sdcard/sdcard.qcow2 256M&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем образ к хосту:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo ~/git/qemu/build/qemu-nbd --connect=/dev/nbd0 ~/clonicus_1.2.3/sdcard/sdcard.qcow2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверяем подключение:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo fdisk /dev/nbd0 -l&lt;br /&gt;
&lt;br /&gt;
Диск /dev/nbd0: 256 MiB, 268435456 байтов, 524288 секторов&lt;br /&gt;
Единицы измерения: секторов из 1 * 512 = 512 байтов&lt;br /&gt;
Размер сектора (логический/физический): 512 байт / 512 байт&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Форматируем флешку:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo fdisk /dev/nbd0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[:File:sd_table.rar]]&lt;br /&gt;
Таблица форматирования&lt;br /&gt;
Размеченный файл-образ, берем, пользуем&lt;br /&gt;
&lt;br /&gt;
== START ==&lt;br /&gt;
&lt;br /&gt;
Заходим по ssh на виртуальный petalinux&lt;br /&gt;
&lt;br /&gt;
'''Пока что не получается заменить IP адрес.''' Используем 10.0.2.15&lt;br /&gt;
&lt;br /&gt;
Необходимо переименовать на флешке файл interfaces, чтобы он не ломал настройки&lt;br /&gt;
&lt;br /&gt;
Перенаправляем порты ssh при вызове запуска виртуалки:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-boot --qemu --kernel --qemu-args &amp;quot;-redir tcp:10022:10.0.2.15:22 -drive file=sdcard.qcow2,if=sd,index=0,media=disk&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее коннектимся с хоста:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh-copy-id root@localhost -p 10022&lt;br /&gt;
ssh root@localhost -p 10022&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Копирование по ssh:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
scp -P 10022 &amp;lt;source&amp;gt;  root@localhost:&amp;lt;destination&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прерывать симуляцию:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Ctrl-A X&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Работает SSH и подгружаются скрипты с подмонтированной SD-карточки. Цветная консоль, ключи ssh...&lt;br /&gt;
&lt;br /&gt;
== Native QEMU ==&lt;br /&gt;
&lt;br /&gt;
качаем репо ссылка выше&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Исполняем:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure --target-list=&amp;quot;arm-softmmu&amp;quot; --enable-fdt --disable-kvm --disable-xen&lt;br /&gt;
make -j24&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:HOWTO]]&lt;br /&gt;
[[Категория:Oryx]]&lt;br /&gt;
[[Категория:Zynq]]&lt;br /&gt;
[[Категория:EmbeddedLinux]]&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
[[Category:Qemu]]&lt;br /&gt;
[[Category:Debug]]&lt;br /&gt;
{{wl-publish: 2020-08-07 09:45:50 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/07.08.2020_QEMU_Virtualization</id>
		<title>Blog:Lipa/07.08.2020 QEMU Virtualization</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/07.08.2020_QEMU_Virtualization"/>
				<updated>2022-05-05T10:48:19Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* START */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary  hidden=true&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:QEMU.png|400px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Виртуализация petalinux на хосте!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== INTRO ==&lt;br /&gt;
Качаем читаем [[:File:ug982-petalinux-system-simulation_QEMU.pdf]]&lt;br /&gt;
&lt;br /&gt;
== SD-card create ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/k0nze/qemu_zynq_linux_setup инструкция]&lt;br /&gt;
&lt;br /&gt;
Выкачиваем [https://github.com/qemu/qemu.git репозиторий qemu]&lt;br /&gt;
&lt;br /&gt;
Ставим в систему nbd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install nbd-client &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверяем&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsmod | grep nbd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если нет модуля - загружаем его:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe nbd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ставим в систему pixman&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libpixman-1-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможно:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev&lt;br /&gt;
sudo apt-get install ninja-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Инициализируем подмодуль:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd qemu&lt;br /&gt;
git submodule update --init dtc&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Исполняем:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure --target-list=&amp;quot;aarch64-softmmu&amp;quot; --enable-fdt --disable-kvm --disable-xen make -j4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создаем файл-образ флешки:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
~/git/qemu/qemu-img create -f qcow2 ~/clonicus_1.2.3/sdcard/sdcard.qcow2 256M&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем образ к хосту:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo ~/git/qemu/build/qemu-nbd --connect=/dev/nbd0 ~/clonicus_1.2.3/sdcard/sdcard.qcow2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверяем подключение:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo fdisk /dev/nbd0 -l&lt;br /&gt;
&lt;br /&gt;
Диск /dev/nbd0: 256 MiB, 268435456 байтов, 524288 секторов&lt;br /&gt;
Единицы измерения: секторов из 1 * 512 = 512 байтов&lt;br /&gt;
Размер сектора (логический/физический): 512 байт / 512 байт&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Форматируем флешку:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo fdisk /dev/nbd0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[:File:sd_table.rar]]&lt;br /&gt;
Таблица форматирования&lt;br /&gt;
Размеченный файл-образ, берем, пользуем&lt;br /&gt;
&lt;br /&gt;
== START ==&lt;br /&gt;
&lt;br /&gt;
Заходим по ssh на виртуальный petalinux&lt;br /&gt;
&lt;br /&gt;
'''Пока что не получается заменить IP адрес.''' Используем 10.0.2.15&lt;br /&gt;
&lt;br /&gt;
Необходимо переименовать на флешке файл interfaces, чтобы он не ломал настройки&lt;br /&gt;
&lt;br /&gt;
Перенаправляем порты ssh при вызове запуска виртуалки:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-boot --qemu --kernel --qemu-args &amp;quot;-redir tcp:10022:10.0.2.15:22 -drive file=sdcard.qcow2,if=sd,index=0,media=disk&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее коннектимся с хоста:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh-copy-id root@localhost -p 10022&lt;br /&gt;
ssh root@localhost -p 10022&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Копирование по ssh:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
scp -P 10022 &amp;lt;source&amp;gt;  root@localhost:&amp;lt;destination&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прерывать симуляцию:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Ctrl-A X&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Работает SSH и подгружаются скрипты с подмонтированной SD-карточки. Цветная консоль, ключи ssh...&lt;br /&gt;
&lt;br /&gt;
== Native QEMU ==&lt;br /&gt;
&lt;br /&gt;
качаем репо ссылка выше&lt;br /&gt;
&lt;br /&gt;
[[Категория:HOWTO]]&lt;br /&gt;
[[Категория:Oryx]]&lt;br /&gt;
[[Категория:Zynq]]&lt;br /&gt;
[[Категория:EmbeddedLinux]]&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
[[Category:Qemu]]&lt;br /&gt;
[[Category:Debug]]&lt;br /&gt;
{{wl-publish: 2020-08-07 09:45:50 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/06.08.2020_Asymmetric_multiprocessing</id>
		<title>Blog:Lipa/06.08.2020 Asymmetric multiprocessing</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/06.08.2020_Asymmetric_multiprocessing"/>
				<updated>2022-05-05T08:17:23Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:AMP.png|400px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Использование ядер процессора отдельно под linux/RTOS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== INTRO ==&lt;br /&gt;
Качаем читаем [[:File:ug1186-zynq-openamp-gsg-6_2017.4.pdf]]&lt;br /&gt;
&lt;br /&gt;
== petalinux-config ==&lt;br /&gt;
Высталяем стартовый адрес для ядра не ноль. Предположительно rtos не умеет стартовать не с 0-го адреса, но это вроде хрень. В клоникус выставляем:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Subsystem AUTO ... -&amp;gt; &lt;br /&gt;
     Memory Settings -&amp;gt;&lt;br /&gt;
          kernel base address -&amp;gt;&lt;br /&gt;
               0x1000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== petalinux-config -c kernel ==&lt;br /&gt;
Убеждаемся в том, что все включено, как в даташите. Реально нужно самостоятельно включить:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Kernel Features ... -&amp;gt;&lt;br /&gt;
     Memory split-&amp;gt;&lt;br /&gt;
          2G/2G&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== petalinux-config -c rootfs ==&lt;br /&gt;
Включаем нужные либы&lt;br /&gt;
&lt;br /&gt;
Эта может быть и не нужна...&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
    Location:&lt;br /&gt;
        -&amp;gt; Filesystem Packages&lt;br /&gt;
            -&amp;gt; libs&lt;br /&gt;
                -&amp;gt; open-amp&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Device tree ==&lt;br /&gt;
В более старых версиях petalinux (2017.1) использовалось поле '''sram0''', сейчас '''srams'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
/ {&lt;br /&gt;
    reserved-memory {&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        ranges;&lt;br /&gt;
        rproc_0_reserved: rproc@e000000 {&lt;br /&gt;
            no-map;&lt;br /&gt;
            reg = &amp;lt;0xe000000 0x01000000&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
    amba {&lt;br /&gt;
        elf_ddr_0: ddr@0 {&lt;br /&gt;
            compatible = &amp;quot;mmio-sram&amp;quot;;&lt;br /&gt;
            reg = &amp;lt;0xe000000 0x400000&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
    remoteproc0: remoteproc@0 {&lt;br /&gt;
        compatible = &amp;quot;xlnx,zynq_remoteproc&amp;quot;;&lt;br /&gt;
        firmware = &amp;quot;firmware&amp;quot;;&lt;br /&gt;
        vring0 = &amp;lt;15&amp;gt;;&lt;br /&gt;
        vring1 = &amp;lt;14&amp;gt;;&lt;br /&gt;
        srams = &amp;lt;&amp;amp;elf_ddr_0&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Запуск ==&lt;br /&gt;
Закидываем name.elf в /lib/firmware/&lt;br /&gt;
&lt;br /&gt;
Указываем путь к шашему .elf&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo name.elf &amp;gt; /sys/class/remoteproc/remoteproc0/firmware&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запускаем:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo start &amp;gt; /sys/class/remoteproc/remoteproc0/state&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:HOWTO]]&lt;br /&gt;
[[Категория:Oryx]]&lt;br /&gt;
[[Категория:Zynq]]&lt;br /&gt;
[[Категория:EmbeddedLinux]]&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
{{wl-publish: 2020-08-06 15:51:47 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/18.12.2018_ZCU104</id>
		<title>Blog:Lipa/18.12.2018 ZCU104</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/18.12.2018_ZCU104"/>
				<updated>2022-05-05T08:17:10Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Ultrascale.png|400px]]&amp;lt;/center&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Сборка PetaLinux для ZCU104 zynq-ultrascale+&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Petalinux==&lt;br /&gt;
&lt;br /&gt;
Создать проект petalinux&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-create --type project --template zynqMP --name &amp;lt;PROJECT&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для работы eth-phy:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem3{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@12 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;12&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== patch dev-tree ==&lt;br /&gt;
[https://www.xilinx.com/support/answers/73086.html ссылка на xilinx раз]&lt;br /&gt;
&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-Building-device-tree-amba-pl-not-found/td-p/1078982 ссылка на xilinx два]&lt;br /&gt;
&lt;br /&gt;
'''device-tree.bbappend:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
FILESEXTRAPATHS_prepend := &amp;quot;${THISDIR}/files:&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
SRC_URI += &amp;quot;file://system-user.dtsi&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
SRC_URI_append += &amp;quot; file://0001_disable_gen_axi_interface.patch&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Кладем патч-файл рядом с system-user.dtsi, правим device-tree.bbappend&lt;br /&gt;
&lt;br /&gt;
== всякое ==&lt;br /&gt;
&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-2019-1-fsbl-build-error-fatal-error-xiicps-h-No-such/td-p/1027805 Включаем I2C]&lt;br /&gt;
&lt;br /&gt;
== Настраиваем контроллеры питания ==&lt;br /&gt;
&lt;br /&gt;
fsbl шлет по i2c следущее:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
write to 0x44 ack data: 0x00 0x03      # выбрали канал D&lt;br /&gt;
write to 0x44 ack data: 0x01 0x80      # сказали ему ON&lt;br /&gt;
write to 0x44 ack data: 0x20 0x14      # VOUT 0.2441mV step&lt;br /&gt;
write to 0x44 ack data: 0x24 0x00 0x80 # MAX VOUT = 8V&lt;br /&gt;
write to 0x44 ack data: 0x21 0x33 0x13 # VOUT = 1.2V&lt;br /&gt;
write to 0x44 ack data: 0x42 0xCD 0x15 # VOUT_XXX_LIMIT&lt;br /&gt;
write to 0x44 ack data: 0x40 0x66 0x16 # VOUT_XXX_LIMIT&lt;br /&gt;
write to 0x44 ack data: 0x43 0xCD 0x10 # VOUT_XXX_LIMIT&lt;br /&gt;
write to 0x44 ack data: 0x44 0x00 0x10 # VOUT_XXX_LIMIT&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:HOWTO]]&lt;br /&gt;
[[Категория:Zynq]]&lt;br /&gt;
[[Категория:EmbeddedLinux]]&lt;br /&gt;
{{wl-publish: 2018-12-18 15:10:14 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/16.05.2018_PetaLinux</id>
		<title>Blog:Lipa/16.05.2018 PetaLinux</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/16.05.2018_PetaLinux"/>
				<updated>2022-05-05T08:16:56Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Petalinux.png|400px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сборка PetaLinux для кастомной железки&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Требования ==&lt;br /&gt;
&lt;br /&gt;
Vivado 2018.1 (для single-gigabit ethernet можно более ранние версии)&lt;br /&gt;
&lt;br /&gt;
Начиная с petalinux_2018.1 отсутствует devcfg. Необходимо использовать FPGA manager. Технология нами пока не освоена&lt;br /&gt;
&lt;br /&gt;
Необходима Ubuntu-16.04&lt;br /&gt;
&lt;br /&gt;
Требуется поставить ряд пакетов, полный список приведен в документе [https://www.xilinx.com/support/documentation/sw_manuals/xilinx2019_1/ug1144-petalinux-tools-reference-guide.pdf#page=9 UG1144]&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PetaLinux в систему. Дистрибутив есть на [https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/2018-1.html Xilinx], либо у меня на компьютере. '''Ставить PetaLinux необходимо БЕЗ прав суперюзера!'''&lt;br /&gt;
&lt;br /&gt;
кидаем в /components/yocto/ sstate-rel-v2017.4.tar.gz&lt;br /&gt;
&lt;br /&gt;
Подготовка завершена&lt;br /&gt;
&lt;br /&gt;
== Правка Vivado ==&lt;br /&gt;
&lt;br /&gt;
Для поддержки MDIO в Vivado 17.1-17.4 нужен [https://www.xilinx.com/support/answers/69132.html патч]. Ставим!&lt;br /&gt;
&lt;br /&gt;
'''Не помогло.''' Ставим 2018.1&lt;br /&gt;
&lt;br /&gt;
== Сборка ==&lt;br /&gt;
&lt;br /&gt;
Пошаговое руководство по сборке содержится в документе UG1156&lt;br /&gt;
&lt;br /&gt;
В консоли пишем source/[путь к петалинух]/settings.sh&lt;br /&gt;
&lt;br /&gt;
Выполняем шаги из UG1156 по главе 5:&lt;br /&gt;
&lt;br /&gt;
* экспортируем из Vivado .hdf (в блок дизайн File-&amp;gt;Export-&amp;gt;Export Hardware)&lt;br /&gt;
&lt;br /&gt;
* создаем проект PetaLinux&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-create --type project --template zynq --name &amp;lt;PROJECT&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* переходим в папку с текущим проектом&lt;br /&gt;
&lt;br /&gt;
* подключаем файл .hdf&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config --get-hw-description=[путь к папке с файлом .hdf]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* перед сборкой системы необходимо выполнить '''все''' команды конфигурации в данной последовательности:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&lt;br /&gt;
$ petalinux-config -c kernel&lt;br /&gt;
&lt;br /&gt;
$ petalinux-config -c rootfs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config ===&lt;br /&gt;
&lt;br /&gt;
Если хотим спользовать внешний файл device-tree включаем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Subsystem AUTO Hardware Settings-&amp;gt;&lt;br /&gt;
     Advances bootable images storage settings-&amp;gt;&lt;br /&gt;
          dtb image settings-&amp;gt;&lt;br /&gt;
               image storage media&lt;br /&gt;
                    primary sd&lt;br /&gt;
               &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Необходимо править netboot offset если оперативной памяти менее ~256МБ&lt;br /&gt;
&lt;br /&gt;
Для клоникуса с 256МБ ставим 8'000'000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
u-boot Configuration-&amp;gt;&lt;br /&gt;
     netboot offset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выставляем точку начала распаковки образа системы&lt;br /&gt;
&lt;br /&gt;
Выключаем копирование образа по sftp (Image Packaging Configuration -&amp;gt; Copy final images)&lt;br /&gt;
&lt;br /&gt;
Отключаем интернет-sstate (Yocto Settings -&amp;gt; Enable Network sstate feeds)&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config -c kernel===&lt;br /&gt;
&lt;br /&gt;
* Подключаем в ядре поддержку физика и его дров.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config -c kernel&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''для oryx:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers-&amp;gt;&lt;br /&gt;
     [*]Network device support -&amp;gt;&lt;br /&gt;
          [*]Ethernet driver support -&amp;gt;&lt;br /&gt;
               [*] Micrel devices&lt;br /&gt;
          [*] PHY Device support and infastructure --&amp;gt;&lt;br /&gt;
               [*] Drivers for Micrel PHYs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''для clonicus:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers-&amp;gt;&lt;br /&gt;
     [*]Network device support -&amp;gt;&lt;br /&gt;
          [*] PHY Device support and infastructure --&amp;gt;&lt;br /&gt;
               [*] Texas Instruments DP83867 Gigabit PHY&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config -c rootfs ===&lt;br /&gt;
&lt;br /&gt;
Подключаем при необходимости ethtool, gdbserver, gdb, libstdc, libgcc, glib2.0, glibc(glibc &amp;amp; ltd)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages-&amp;gt;&lt;br /&gt;
     misc -&amp;gt;&lt;br /&gt;
          gcc-runtime -&amp;gt;&lt;br /&gt;
               [*] libstdc ++&lt;br /&gt;
          gdb --&amp;gt;&lt;br /&gt;
               [*] gdb&lt;br /&gt;
          glib-2.0&lt;br /&gt;
               [*] glib-2.0&lt;br /&gt;
          glibc&lt;br /&gt;
               [*] glibc&lt;br /&gt;
               [*] ldd&lt;br /&gt;
     devel -&amp;gt;&lt;br /&gt;
          python -&amp;gt;&lt;br /&gt;
               python -&amp;gt;&lt;br /&gt;
                    [*] python&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Опционально:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages-&amp;gt;&lt;br /&gt;
     base -&amp;gt;&lt;br /&gt;
          i2c-tools -&amp;gt;&lt;br /&gt;
               [*] i2c-tools&lt;br /&gt;
          usbutils -&amp;gt;&lt;br /&gt;
               [*] usbutils&lt;br /&gt;
     console -&amp;gt;&lt;br /&gt;
          network -&amp;gt;&lt;br /&gt;
               ethtool -&amp;gt;&lt;br /&gt;
                    [*] ethtool // необходимо для oryx! для перенастройки autonegotiation&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Можно еще подключать дебаг i2c&lt;br /&gt;
&lt;br /&gt;
'''Необходимо убедиться, что  образ может распаковаться в размер оперативы'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Если будут проблемы, то надо будет править netboot offset&lt;br /&gt;
&lt;br /&gt;
=== device tree ===&lt;br /&gt;
&lt;br /&gt;
Если необходимо внести изменения в device tree, то смотрим конец статьи&lt;br /&gt;
&lt;br /&gt;
[https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841676/U-Boot+Flattened+Device+Tree Интересная статья по правке devicetree из uboot]&lt;br /&gt;
&lt;br /&gt;
=== Сборка проекта ===&lt;br /&gt;
&lt;br /&gt;
* далее (сборка идет 30-60 минут)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build&lt;br /&gt;
&lt;br /&gt;
cd /images/linux/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* делаем boot.bin в папке /images/linux/&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --u-boot --force&lt;br /&gt;
&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --fpga name.bit --u-boot --force&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --fpga name.bit --u-boot --kernel --force&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* записываем в загрузочную область флешки файлы boot.bin и image.ub&lt;br /&gt;
&lt;br /&gt;
== Всякое ==&lt;br /&gt;
&lt;br /&gt;
Если мало памяти как у нас - возможна ошибка image is not a fdt [https://forums.xilinx.com/t5/Embedded-Processor-System-Design/Petalinux-problem-on-custom-board-quot-image-is-not-a-fdt-quot/td-p/754892 ссылка]&lt;br /&gt;
&lt;br /&gt;
Необходимо править netboot offset&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
u-boot Configuration-&amp;gt;&lt;br /&gt;
     netboot offset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Можно вручную загрузиться из u-boot'а.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ fatload mmc 0 0xA000000 image.ub&lt;br /&gt;
$ bootm 0xA000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
либо&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ fatload mmc 0 0xA000000 image.ub&lt;br /&gt;
$ fatload mmc 0 0x9000000 system.dtb&lt;br /&gt;
$ bootm 0xA000000 0xA000000 0x9000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Можно поварьировать адрес&lt;br /&gt;
&lt;br /&gt;
------------&lt;br /&gt;
&lt;br /&gt;
Проверка статуса прошитости FPGA&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat /sys/class/xdevcfg/xdevcfg/device/prog_done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Uboot==&lt;br /&gt;
&lt;br /&gt;
Для внесения правок в загрузку линукса используем список команд '''env'''&lt;br /&gt;
&lt;br /&gt;
Просмотр текущих команд '''printenv'''&lt;br /&gt;
&lt;br /&gt;
Сброс настроек в дефолт '''env default -a'''&lt;br /&gt;
&lt;br /&gt;
Создать переменную '''env set &amp;lt;имя&amp;gt; &amp;lt;значение&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Правка переменной '''env edit &amp;lt;имя переменной&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Для каждой платы делаем следующее:&lt;br /&gt;
&lt;br /&gt;
* Берем [[Файл:uboot.env.c]]&lt;br /&gt;
&lt;br /&gt;
* Удаляем в конце имени &amp;quot;.c&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Записываем на флешку рядом с образом линукса&lt;br /&gt;
&lt;br /&gt;
* Запускаем плату и прерываем autoboot&lt;br /&gt;
&lt;br /&gt;
* Пишем '''editenv ethaddr'''&lt;br /&gt;
&lt;br /&gt;
* Редактируем MAC-адрес&lt;br /&gt;
&lt;br /&gt;
* Пишем '''saveenv'''&lt;br /&gt;
&lt;br /&gt;
* Все! можем ребутать '''reset'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Сохранить в файл '''saveenv'''&lt;br /&gt;
&lt;br /&gt;
==Автозапуск приложений==&lt;br /&gt;
&lt;br /&gt;
Во-первых [https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-Runnning-a-script-file-at-startup/td-p/689051 тыц]&lt;br /&gt;
&lt;br /&gt;
Далее пишем&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-create -t apps --template install -n myapp-init --enable&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим файл /project-spec/meta-user/recipes-apps/myapp-init/myapp-init.bb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file is the myapp-init recipe.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
SUMMARY = &amp;quot;Simple myapp-init application&amp;quot;&lt;br /&gt;
SECTION = &amp;quot;PETALINUX/apps&amp;quot;&lt;br /&gt;
LICENSE = &amp;quot;MIT&amp;quot;&lt;br /&gt;
LIC_FILES_CHKSUM = &amp;quot;file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302&amp;quot;&lt;br /&gt;
&lt;br /&gt;
SRC_URI = &amp;quot;file://myapp-init&amp;quot;&lt;br /&gt;
&lt;br /&gt;
S = &amp;quot;${WORKDIR}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILESEXTRAPATHS_prepend := &amp;quot;${THISDIR}/files:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
inherit update-rc.d&lt;br /&gt;
&lt;br /&gt;
INITSCRIPT_NAME = &amp;quot;myapp-init&amp;quot;&lt;br /&gt;
INITSCRIPT_PARAMS = &amp;quot;start 99 S .&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do_install() {&lt;br /&gt;
    install -d ${D}${sysconfdir}/init.d&lt;br /&gt;
    install -m 0755 ${S}/myapp-init ${D}${sysconfdir}/init.d/myapp-init&lt;br /&gt;
}&lt;br /&gt;
FILES_${PN} += &amp;quot;${sysconfdir}/*&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим сам исполняемый скрипт project-spec/meta-user/recipes-apps/myapp-init/files/myapp-init&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Autorun script&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Try run custom_init&amp;quot;&lt;br /&gt;
sh /run/media/mmcblk0p1/custom_init.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Записываем на флешку скрипт custom_init.sh с нужными командами и делаем его исполняемым&lt;br /&gt;
&lt;br /&gt;
Записываем файл interfaces&lt;br /&gt;
&lt;br /&gt;
Скачать архив: [[Файл:Init_interfaces.rar]]&lt;br /&gt;
&lt;br /&gt;
==SSH==&lt;br /&gt;
&lt;br /&gt;
Как победить сохранение ssh-ключей:&lt;br /&gt;
&lt;br /&gt;
Добавляем в init_script следующие строки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir /run/media/mmcblk0p2/.ssh&lt;br /&gt;
ln -s /run/media/mmcblk0p2/.ssh/ /home/root/&lt;br /&gt;
mkdir /run/media/mmcblk0p2/dropbear/&lt;br /&gt;
chmod 400 /run/media/mmcblk0p2/dropbear/&lt;br /&gt;
rm -r /etc/dropbear/&lt;br /&gt;
ln -s /run/media/mmcblk0p2/dropbear/ /etc/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Создается ссылка на флешку, где хранятся авторизованные пользователи&lt;br /&gt;
* Создается папка для хранения секретного ключа платы&lt;br /&gt;
* При запуске платы свежесозданный ключ заменяется тем, что лежит на флешке&lt;br /&gt;
* При первом включении платы будет создан новый ключ&lt;br /&gt;
&lt;br /&gt;
Помимо добавления указанных команд в скрипт ничего больше делать не надо&lt;br /&gt;
&lt;br /&gt;
==Daemon==&lt;br /&gt;
&lt;br /&gt;
Для настройки демона:&lt;br /&gt;
&lt;br /&gt;
* Добавляем строки в файл custom_init.sh&lt;br /&gt;
* Кидаем на загрузочный раздел флешки папку из архива [[:File:daemon.rar]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp -r /run/media/mmcblk0p1/daemon/lsb /lib/&lt;br /&gt;
cp /run/media/mmcblk0p1/daemon/receiver.conf /etc/&lt;br /&gt;
cp /run/media/mmcblk0p1/daemon/receiver /etc/init.d/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serial port на новом линуксе ===&lt;br /&gt;
Выяснилось, что без доп. настройки, в последовательный порт (dev/ttyPS0) после каждой посылки добавляются символы CR и LF. Оказалось, что и RTKLib, и софт Листопада не хотят работать с таким окончанием пакетов.&lt;br /&gt;
&lt;br /&gt;
Выше не совсем так, скорее мысль в том, что каждый символ LF (0x0A) в наших данных меняется на символы CR LF, т.е. (0x0D0A). И тогда, в нашем битовом потоке меняется размер и содержимое и парсеры работают некорректно.&lt;br /&gt;
Старый линукс на Ориксах добавляет только LF. Для решения проблемы нужно через stty выключить в настройках порта опцию '''onlcr''' (преобразовывать перевод строки в возврат каретки и новую строку).&lt;br /&gt;
&lt;br /&gt;
Сделать это удалось пока только изменив скрипт демона receiver. Для решения проблемы заходим в /run/media/mmcblk0p1/daemon/receiver, и в начале секции receiver_start() {...} добавляем команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
stty -F /dev/ttyPS0 -onlcr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==device tree==&lt;br /&gt;
&lt;br /&gt;
Для внесения изменений в device tree добавляем нужные строки в файл&lt;br /&gt;
&lt;br /&gt;
project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
[https://www.xilinx.com/support/answers/61117.html пример]&lt;br /&gt;
&lt;br /&gt;
Для разборки device-tree [http://xillybus.com/tutorials/device-tree-zynq-1 ссылка]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ dtc -I dtb -O dts -o &amp;lt;name&amp;gt;.dts &amp;lt;name&amp;gt;.dtb&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для сборки device-tree&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ dtc -I dts -O dtb -o &amp;lt;name&amp;gt;.dtb &amp;lt;name&amp;gt;.dts&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Модификация device-tree ==&lt;br /&gt;
&lt;br /&gt;
После долгих мучений получилось поднять DP83867 только после добавления модификатора в файл [https://forums.xilinx.com/t5/Embedded-Linux/ZC702-Like-Board-with-DP83867CR-Ethernet-Petalinux-2017-4/td-p/831873 волшебная статья]&lt;br /&gt;
&lt;br /&gt;
[https://www.kernel.org/doc/Documentation/devicetree/bindings/net/ti%2Cdp83867.txt описание параметров]&lt;br /&gt;
&lt;br /&gt;
project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
=== Single Kit-board eth ===&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth1(с mdio) и выключен eth0.&lt;br /&gt;
&lt;br /&gt;
'''Так работает'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem1{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@12 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;12&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Начало скрытого блока|Выравнивание_заголовка = left| Ссылка = left|Заголовок =  Развернутый .dtb:}}&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/dts-v1/;&lt;br /&gt;
&lt;br /&gt;
/ {&lt;br /&gt;
	#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
	#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
	compatible = &amp;quot;xlnx,zynq-7000&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	cpus {&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
		cpu@0 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9&amp;quot;;&lt;br /&gt;
			device_type = &amp;quot;cpu&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x3&amp;gt;;&lt;br /&gt;
			clock-latency = &amp;lt;0x3e8&amp;gt;;&lt;br /&gt;
			cpu0-supply = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			operating-points = &amp;lt;0xa2c2a 0xf4240 0x51615 0xf4240&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		cpu@1 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9&amp;quot;;&lt;br /&gt;
			device_type = &amp;quot;cpu&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x3&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	fpga-full {&lt;br /&gt;
		compatible = &amp;quot;fpga-region&amp;quot;;&lt;br /&gt;
		fpga-mgr = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		ranges;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	pmu@f8891000 {&lt;br /&gt;
		compatible = &amp;quot;arm,cortex-a9-pmu&amp;quot;;&lt;br /&gt;
		interrupts = &amp;lt;0x0 0x5 0x4 0x0 0x6 0x4&amp;gt;;&lt;br /&gt;
		interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		reg = &amp;lt;0xf8891000 0x1000 0xf8893000 0x1000&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	fixedregulator {&lt;br /&gt;
		compatible = &amp;quot;regulator-fixed&amp;quot;;&lt;br /&gt;
		regulator-name = &amp;quot;VCCPINT&amp;quot;;&lt;br /&gt;
		regulator-min-microvolt = &amp;lt;0xf4240&amp;gt;;&lt;br /&gt;
		regulator-max-microvolt = &amp;lt;0xf4240&amp;gt;;&lt;br /&gt;
		regulator-boot-on;&lt;br /&gt;
		regulator-always-on;&lt;br /&gt;
		linux,phandle = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
		phandle = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	amba {&lt;br /&gt;
		u-boot,dm-pre-reloc;&lt;br /&gt;
		compatible = &amp;quot;simple-bus&amp;quot;;&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		ranges;&lt;br /&gt;
&lt;br /&gt;
		adc@f8007100 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-xadc-1.00.a&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8007100 0x20&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x7 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xc&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		can@e0008000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-can-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x13 0x1 0x24&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;can_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0008000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1c 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			tx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			rx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		can@e0009000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-can-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x14 0x1 0x25&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;can_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0009000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x33 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			tx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			rx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		gpio@e000a000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-gpio-1.0&amp;quot;;&lt;br /&gt;
			#gpio-cells = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x2a&amp;gt;;&lt;br /&gt;
			gpio-controller;&lt;br /&gt;
			interrupt-controller;&lt;br /&gt;
			#interrupt-cells = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x14 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe000a000 0x1000&amp;gt;;&lt;br /&gt;
			emio-gpio-width = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			gpio-mask-high = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			gpio-mask-low = &amp;lt;0x5600&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		i2c@e0004000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x26&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x19 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0004000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		i2c@e0005000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x27&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x30 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0005000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		interrupt-controller@f8f01000 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-gic&amp;quot;;&lt;br /&gt;
			#interrupt-cells = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
			interrupt-controller;&lt;br /&gt;
			reg = &amp;lt;0xf8f01000 0x1000 0xf8f00100 0x100&amp;gt;;&lt;br /&gt;
			num_cpus = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			num_interrupts = &amp;lt;0x60&amp;gt;;&lt;br /&gt;
			linux,phandle = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		cache-controller@f8f02000 {&lt;br /&gt;
			compatible = &amp;quot;arm,pl310-cache&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f02000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2 0x4&amp;gt;;&lt;br /&gt;
			arm,data-latency = &amp;lt;0x3 0x2 0x2&amp;gt;;&lt;br /&gt;
			arm,tag-latency = &amp;lt;0x2 0x2 0x2&amp;gt;;&lt;br /&gt;
			cache-unified;&lt;br /&gt;
			cache-level = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		memory-controller@f8006000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-ddrc-a05&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8006000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ocmc@f800c000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-ocmc-1.0&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x3 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf800c000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		serial@e0000000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,xuartps&amp;quot;, &amp;quot;cdns,uart-r1p8&amp;quot;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x17 0x1 0x28&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;uart_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0000000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1b 0x4&amp;gt;;&lt;br /&gt;
			device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
			port-number = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		serial@e0001000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,xuartps&amp;quot;, &amp;quot;cdns,uart-r1p8&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x18 0x1 0x29&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;uart_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0001000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x32 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e0006000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-spi-r1p6&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0006000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1a 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x19 0x1 0x22&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e0007000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-spi-r1p6&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0007000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x31 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1a 0x1 0x23&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e000d000 {&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xa 0x1 0x2b&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-qspi-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x13 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe000d000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		memory-controller@e000e000 {&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;memclk&amp;quot;, &amp;quot;aclk&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xb 0x1 0x2c&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;arm,pl353-smc-r2p1&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x12 0x4&amp;gt;;&lt;br /&gt;
			ranges;&lt;br /&gt;
			reg = &amp;lt;0xe000e000 0x1000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			flash@e1000000 {&lt;br /&gt;
				status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
				compatible = &amp;quot;arm,pl353-nand-r2p1&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0xe1000000 0x1000000&amp;gt;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			flash@e2000000 {&lt;br /&gt;
				status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
				compatible = &amp;quot;cfi-flash&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0xe2000000 0x2000000&amp;gt;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ethernet@e000b000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,zynq-gem&amp;quot;, &amp;quot;cdns,gem&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe000b000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x16 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1e 0x1 0x1e 0x1 0xd&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;pclk&amp;quot;, &amp;quot;hclk&amp;quot;, &amp;quot;tx_clk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ethernet@e000c000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,zynq-gem&amp;quot;, &amp;quot;cdns,gem&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe000c000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2d 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1f 0x1 0x1f 0x1 0xe&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;pclk&amp;quot;, &amp;quot;hclk&amp;quot;, &amp;quot;tx_clk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
			xlnx,ptp-enet-clock = &amp;lt;0x69f6bcb&amp;gt;;&lt;br /&gt;
			local-mac-address = [00 0a 35 00 22 01];&lt;br /&gt;
			phy-handle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
			xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			mdio {&lt;br /&gt;
				status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
				phy@12 {&lt;br /&gt;
					compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
					device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
					reg = &amp;lt;0xc&amp;gt;;&lt;br /&gt;
					ti,rx-internal-delay = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
					ti,tx-internal-delay = &amp;lt;0xa&amp;gt;;&lt;br /&gt;
					ti,fifo-depth = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
					ti,min-output-impedance;&lt;br /&gt;
					ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
					status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
					linux,phandle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
					phandle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
				};&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		sdhci@e0100000 {&lt;br /&gt;
			compatible = &amp;quot;arasan,sdhci-8.9a&amp;quot;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;clk_xin&amp;quot;, &amp;quot;clk_ahb&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x15 0x1 0x20&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x18 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0100000 0x1000&amp;gt;;&lt;br /&gt;
			xlnx,has-cd = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			xlnx,has-power = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			xlnx,has-wp = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		sdhci@e0101000 {&lt;br /&gt;
			compatible = &amp;quot;arasan,sdhci-8.9a&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;clk_xin&amp;quot;, &amp;quot;clk_ahb&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x16 0x1 0x21&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2f 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0101000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		slcr@f8000000 {&lt;br /&gt;
			u-boot,dm-pre-reloc;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-slcr&amp;quot;, &amp;quot;syscon&amp;quot;, &amp;quot;simple-mfd&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8000000 0x1000&amp;gt;;&lt;br /&gt;
			ranges;&lt;br /&gt;
			linux,phandle = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			clkc@100 {&lt;br /&gt;
				u-boot,dm-pre-reloc;&lt;br /&gt;
				#clock-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				compatible = &amp;quot;xlnx,ps7-clkc&amp;quot;;&lt;br /&gt;
				fclk-enable = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
				clock-output-names = &amp;quot;armpll&amp;quot;, &amp;quot;ddrpll&amp;quot;, &amp;quot;iopll&amp;quot;, &amp;quot;cpu_6or4x&amp;quot;, &amp;quot;cpu_3or2x&amp;quot;, &amp;quot;cpu_2x&amp;quot;, &amp;quot;cpu_1x&amp;quot;, &amp;quot;ddr2x&amp;quot;, &amp;quot;ddr3x&amp;quot;, &amp;quot;dci&amp;quot;, &amp;quot;lqspi&amp;quot;, &amp;quot;smc&amp;quot;, &amp;quot;pcap&amp;quot;, &amp;quot;gem0&amp;quot;, &amp;quot;gem1&amp;quot;, &amp;quot;fclk0&amp;quot;, &amp;quot;fclk1&amp;quot;, &amp;quot;fclk2&amp;quot;, &amp;quot;fclk3&amp;quot;, &amp;quot;can0&amp;quot;, &amp;quot;can1&amp;quot;, &amp;quot;sdio0&amp;quot;, &amp;quot;sdio1&amp;quot;, &amp;quot;uart0&amp;quot;, &amp;quot;uart1&amp;quot;, &amp;quot;spi0&amp;quot;, &amp;quot;spi1&amp;quot;, &amp;quot;dma&amp;quot;, &amp;quot;usb0_aper&amp;quot;, &amp;quot;usb1_aper&amp;quot;, &amp;quot;gem0_aper&amp;quot;, &amp;quot;gem1_aper&amp;quot;, &amp;quot;sdio0_aper&amp;quot;, &amp;quot;sdio1_aper&amp;quot;, &amp;quot;spi0_aper&amp;quot;, &amp;quot;spi1_aper&amp;quot;, &amp;quot;can0_aper&amp;quot;, &amp;quot;can1_aper&amp;quot;, &amp;quot;i2c0_aper&amp;quot;, &amp;quot;i2c1_aper&amp;quot;, &amp;quot;uart0_aper&amp;quot;, &amp;quot;uart1_aper&amp;quot;, &amp;quot;gpio_aper&amp;quot;, &amp;quot;lqspi_aper&amp;quot;, &amp;quot;smc_aper&amp;quot;, &amp;quot;swdt&amp;quot;, &amp;quot;dbg_trc&amp;quot;, &amp;quot;dbg_apb&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x100 0x100&amp;gt;;&lt;br /&gt;
				ps-clk-frequency = &amp;lt;0x1fca055&amp;gt;;&lt;br /&gt;
				linux,phandle = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				phandle = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			rstc@200 {&lt;br /&gt;
				compatible = &amp;quot;xlnx,zynq-reset&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x200 0x48&amp;gt;;&lt;br /&gt;
				#reset-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			pinctrl@700 {&lt;br /&gt;
				compatible = &amp;quot;xlnx,pinctrl-zynq&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x700 0x200&amp;gt;;&lt;br /&gt;
				syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		dmac@f8003000 {&lt;br /&gt;
			compatible = &amp;quot;arm,pl330&amp;quot;, &amp;quot;arm,primecell&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8003000 0x1000&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupt-names = &amp;quot;abort&amp;quot;, &amp;quot;dma0&amp;quot;, &amp;quot;dma1&amp;quot;, &amp;quot;dma2&amp;quot;, &amp;quot;dma3&amp;quot;, &amp;quot;dma4&amp;quot;, &amp;quot;dma5&amp;quot;, &amp;quot;dma6&amp;quot;, &amp;quot;dma7&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0xd 0x4 0x0 0xe 0x4 0x0 0xf 0x4 0x0 0x10 0x4 0x0 0x11 0x4 0x0 0x28 0x4 0x0 0x29 0x4 0x0 0x2a 0x4 0x0 0x2b 0x4&amp;gt;;&lt;br /&gt;
			#dma-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#dma-channels = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
			#dma-requests = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1b&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;apb_pclk&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		devcfg@f8007000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-devcfg-1.0&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x8 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8007000 0x100&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xc 0x1 0xf 0x1 0x10 0x1 0x11 0x1 0x12&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;fclk0&amp;quot;, &amp;quot;fclk1&amp;quot;, &amp;quot;fclk2&amp;quot;, &amp;quot;fclk3&amp;quot;;&lt;br /&gt;
			syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			linux,phandle = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		efuse@f800d000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-efuse&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf800d000 0x20&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8f00200 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-global-timer&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f00200 0x20&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x1 0xb 0x301&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8001000 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0xa 0x4 0x0 0xb 0x4 0x0 0xc 0x4&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,ttc&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x6&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8001000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8002000 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x25 0x4 0x0 0x26 0x4 0x0 0x27 0x4&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,ttc&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x6&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8002000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8f00600 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x1 0xd 0x301&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-twd-timer&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f00600 0x20&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		usb@e0002000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-usb-2.20a&amp;quot;, &amp;quot;chipidea,usb2&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1c&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x15 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0002000 0x1000&amp;gt;;&lt;br /&gt;
			phy_type = &amp;quot;ulpi&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		usb@e0003000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-usb-2.20a&amp;quot;, &amp;quot;chipidea,usb2&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1d&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2c 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0003000 0x1000&amp;gt;;&lt;br /&gt;
			phy_type = &amp;quot;ulpi&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		watchdog@f8005000 {&lt;br /&gt;
			clocks = &amp;lt;0x1 0x2d&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,wdt-r1p2&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x9 0x1&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8005000 0x1000&amp;gt;;&lt;br /&gt;
			timeout-sec = &amp;lt;0xa&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	chosen {&lt;br /&gt;
		bootargs = &amp;quot;console=ttyPS0,115200 earlyprintk&amp;quot;;&lt;br /&gt;
		stdout-path = &amp;quot;serial0:115200n8&amp;quot;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	aliases {&lt;br /&gt;
		ethernet0 = &amp;quot;/amba/ethernet@e000c000&amp;quot;;&lt;br /&gt;
		serial0 = &amp;quot;/amba/serial@e0000000&amp;quot;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	memory {&lt;br /&gt;
		device_type = &amp;quot;memory&amp;quot;;&lt;br /&gt;
		reg = &amp;lt;0x0 0x10000000&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
{{Конец скрытого блока}}&lt;br /&gt;
&lt;br /&gt;
=== Single On-board eth ===&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth0(с mdio) и выключен eth1.&lt;br /&gt;
&lt;br /&gt;
'''Работает гигабит через type-c! Работает hot plug. Успех.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@0 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dual eth ===&lt;br /&gt;
&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Dual-phys-on-MDIO-EMIO/td-p/737716 интересная статья о дуал eth]&lt;br /&gt;
&lt;br /&gt;
Попытка поднять два физика. '''Пока не работает'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    local-mac-address = [00 0a 35 00 00 00];&lt;br /&gt;
    enet-reset = &amp;lt;&amp;amp;gpio0 47 0&amp;gt;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@0 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x8&amp;gt;; &lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0xa&amp;gt;; &lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;; &lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
        phy1: phy@12 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;12&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x8&amp;gt;; &lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0xa&amp;gt;; &lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;; &lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gem1{&lt;br /&gt;
    local-mac-address = [00 0a 35 00 00 01];&lt;br /&gt;
    enet-reset = &amp;lt;&amp;amp;gpio0 47 0&amp;gt;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy1&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Oryx ===&lt;br /&gt;
&lt;br /&gt;
Итоговый system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
Меняем номера uart, чтобы системным был ttyPS1, а пользовательским ttyPS0&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
/ {&lt;br /&gt;
    aliases {&lt;br /&gt;
        serial0 = &amp;amp;uart0;&lt;br /&gt;
        serial1 = &amp;amp;uart1;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@1 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
            rxc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            rxdv-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            txc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            txen-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;1&amp;gt;;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/ {&lt;br /&gt;
    chosen {&lt;br /&gt;
            bootargs = &amp;quot;console=ttyPS1,115200 earlyprintk uio_pdrv_genirq.of_id=generic-uio&amp;quot;;&lt;br /&gt;
            stdout-path = &amp;quot;serial1:115200n8&amp;quot;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    hififo: hififo@40000000 {&lt;br /&gt;
            compatible = &amp;quot;generic-uio&amp;quot;;&lt;br /&gt;
            interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
            interrupts = &amp;lt;0 29 1&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;0x40000000 0x1000 0x18000000 0x8000000&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;uart0{&lt;br /&gt;
    port-number = &amp;lt;0&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;uart1{&lt;br /&gt;
    port-number = &amp;lt;1&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth0(с mdio) и выключен eth1.&lt;br /&gt;
Pullup пока что все включены&lt;br /&gt;
&lt;br /&gt;
[https://github.com/Xilinx/u-boot-xlnx/blob/master/doc/device-tree-bindings/net/micrel-ksz90x1.txt статья в помощь]&lt;br /&gt;
&lt;br /&gt;
'''Работает'''&lt;br /&gt;
&lt;br /&gt;
На новых платах(с отпаянными линиями линиями eth):&lt;br /&gt;
* на полноценных проводах с ходу&lt;br /&gt;
* на обкусанных проводах только если выставить 10 в ethtool&lt;br /&gt;
&lt;br /&gt;
На старых платах:&lt;br /&gt;
&lt;br /&gt;
* на полноценных проводах только если выставить 100 в ethtool&lt;br /&gt;
* на обкусанных проводах только если выставить 10 в ethtool&lt;br /&gt;
&lt;br /&gt;
Везде работает так:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ethtool -s eth0 speed 10 duplex full autoneg on&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Спидометр показывает 2,5МБ/с, т.е. 20Мбит/с!&lt;br /&gt;
&lt;br /&gt;
Можно в custom_itit.sh прописать:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ifdown eth0&lt;br /&gt;
ethtool -s eth0 speed 10 duplex full autoneg on&lt;br /&gt;
ifup eth0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@1 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
            rxc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            rxdv-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            txc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            txen-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;1&amp;gt;;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В принципе, работает сеть на новой плате с нормальным кабелем без модификации devicetree. Остальные комбинации плат-кабелей надо проверять&lt;br /&gt;
&lt;br /&gt;
== i2c ==&lt;br /&gt;
&lt;br /&gt;
В rootfs включаем&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages -&amp;gt;&lt;br /&gt;
     base -&amp;gt;&lt;br /&gt;
          i2c-tools -&amp;gt;&lt;br /&gt;
               [*] i2c-tools&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для поиска устройств можно написать&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i2cdetect -y -r 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842160/Cadence+I2C+Driver Статья] по i2c и RTC&lt;br /&gt;
&lt;br /&gt;
== QSPI Flash ==&lt;br /&gt;
&lt;br /&gt;
для работы по флешь памяти как в ките (S25FL128S) - оставляем в дев.три родные compatible = &amp;quot;n25q512a&amp;quot;,&amp;quot;micron,m25p80&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
== SWDT System Watchdog Timer==&lt;br /&gt;
&lt;br /&gt;
* Модифицируем Uenv для настройки wawtchdog через uboot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
bootcmd=run swdt_set &amp;amp;&amp;amp; run fpga_config &amp;amp;&amp;amp; run boot_image &amp;amp;&amp;amp; run boot_dtb &amp;amp;&amp;amp; bootm 0xA000000 0xA000000 0x9000000&lt;br /&gt;
swdt_set=run swdt_ccr &amp;amp;&amp;amp; run swdt_rst &amp;amp;&amp;amp; run swdt_zmr&lt;br /&gt;
swdt_ccr=mw 0xf8005004 0x92063b&lt;br /&gt;
swdt_rst=mw 0xf8005008 0x1999&lt;br /&gt;
swdt_zmr=mw 0xf8005000 0xabc043&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Создаем скрипт для сброса watchdog:&lt;br /&gt;
&lt;br /&gt;
swdt_rst.sh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
watch -n 5 'devmem 0xf8005008 32 0x1999' &amp;amp;&amp;gt;/dev/null &amp;amp;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Добавляем вызов скрипта в автозагрузку&lt;br /&gt;
&lt;br /&gt;
PS Посмотреть можно в проекте bin/Clonicus, коммит ffc437e435d3b5c207bb1186a9561fd06a46d89f&lt;br /&gt;
&lt;br /&gt;
== RTC ==&lt;br /&gt;
&lt;br /&gt;
* Включаем в ядро подходящий драйвер&lt;br /&gt;
&lt;br /&gt;
* Модифицируем device-tree&lt;br /&gt;
&lt;br /&gt;
Вставляем в девайс три:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    i2c0: i2c@e0004000 {&lt;br /&gt;
        clock-frequency = &amp;lt;0xC350&amp;gt;;&lt;br /&gt;
        rtc@51 {&lt;br /&gt;
                compatible = &amp;quot;nxp,pcf85363&amp;quot;;&lt;br /&gt;
                reg = &amp;lt;0x51&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
    i2c1: i2c@e0005000 {&lt;br /&gt;
        clock-frequency = &amp;lt;0xC350&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Будет выглядеть так:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i2c@e0004000 {&lt;br /&gt;
    compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    clocks = &amp;lt;0x1 0x26&amp;gt;;&lt;br /&gt;
    interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
    interrupts = &amp;lt;0x0 0x19 0x4&amp;gt;;&lt;br /&gt;
    reg = &amp;lt;0xe0004000 0x1000&amp;gt;;&lt;br /&gt;
    #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
    #size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
    clock-frequency = &amp;lt;0xc350&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    rtc@51 {&lt;br /&gt;
        compatible = &amp;quot;nxp,pcf85363&amp;quot;;&lt;br /&gt;
        reg = &amp;lt;0x51&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
i2c@e0005000 {&lt;br /&gt;
    compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    clocks = &amp;lt;0x1 0x27&amp;gt;;&lt;br /&gt;
    interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
    interrupts = &amp;lt;0x0 0x30 0x4&amp;gt;;&lt;br /&gt;
    reg = &amp;lt;0xe0005000 0x1000&amp;gt;;&lt;br /&gt;
    #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
    #size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
    clock-frequency = &amp;lt;0xc350&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если готового драйвера нет:&lt;br /&gt;
&lt;br /&gt;
UG1144 pg.54&lt;br /&gt;
&lt;br /&gt;
Создаем новый модуль&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-create -t modules --name &amp;lt;name_module&amp;gt; --enable&lt;br /&gt;
petalinux-create -t modules --name rtc-pcf85363 --enable&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим исходный код в project-spec/meta-user/recipes-modules/rtc-pcf85363/files&lt;br /&gt;
&lt;br /&gt;
Исправленный драйвер лежит в git Clonicus\linux\&lt;br /&gt;
&lt;br /&gt;
Для удаления модуля:&lt;br /&gt;
&lt;br /&gt;
* удаляем папку из project-spec/meta-user/recipes-modules&lt;br /&gt;
&lt;br /&gt;
* В файле project-spec/meta-user/recipes-core/images/petalinux-image.bbappend удаляем соответствующую строку&lt;br /&gt;
&lt;br /&gt;
* переоткрыть petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
Пробуем собрать модуль&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build -c &amp;lt;name_module&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если ОК, собираем (собирать модуль необязательно, petalinux-build его соберет)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И перепаковываем BOOT.bin&lt;br /&gt;
&lt;br /&gt;
Пересобираем deveice-tree с указанием нового драйвера (petalinux-build соберет сам deveice-tree)&lt;br /&gt;
&lt;br /&gt;
просмотр модулей&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsmod&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
загрузить драйвер можно&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
insmod /lib/modules/4.9.0-xilinx-v2017.4/extra/rtc-pcf85363.ko&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
или&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe rtc-pcf85363&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Если все ок и в девайс три прописан правильный драйвер для устройства, то модуль будет загружен сам'''&lt;br /&gt;
&lt;br /&gt;
Прошиваем .bit (для клоникуса нужен бит для работы PL-i2c). После этого можно пользоваться RTC&lt;br /&gt;
&lt;br /&gt;
Чтение времени из rtc если этот rtc не дефолтный (у нас rtc2)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -r -f /dev/rtc2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Синхронизация rtc по системному времени&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -w -f /dev/rtc2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим custom_init.sh для изменения default-rtc на наше устройство&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm /dev/rtc&lt;br /&gt;
ln -s /dev/rtc2 /dev/rtc&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Установка системного времени&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
date --set &amp;quot;2013-7-31 09:30&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запись системного времени в RTC&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -w&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запись времени RTC в системное время&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -s&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Получить время с интеренета&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rdate -s &amp;lt;IP address of time server&amp;gt;&lt;br /&gt;
rdate -s 132.163.96.5 (example)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При перезагрузке &amp;quot;reboot&amp;quot; система автоматически запишет системное время в RTC&lt;br /&gt;
&lt;br /&gt;
== FPGA CONFIG from Uboot ==&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы прошить PL из uboot используем команду:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
fpga loadb 0 &amp;lt;ddr_file_addr&amp;gt; &amp;lt;file_size&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
либо скриптами:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
load_bit=fatload mmc 0 0x100000 clonicus.bit // читаем файл в ddr&lt;br /&gt;
pl_load=fpga loadb 0 0x100000 0x1400000 // прошиваем PL&lt;br /&gt;
fpga_config=run load_bit &amp;amp;&amp;amp; run pl_loadipaddr // вызов самих скриптов&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
0x10_0000 - начальный адрес ddr&lt;br /&gt;
&lt;br /&gt;
0x1_400_000 - размер в байтах для 20МБайт - указываем размер битника с запасом. Теоретически может так не работать, но работает&lt;br /&gt;
&lt;br /&gt;
== ETH over TTY==&lt;br /&gt;
&lt;br /&gt;
В ядре включаем: slip, Universal TUN/TAP&lt;br /&gt;
&lt;br /&gt;
В rootfs включаем net-tools&lt;br /&gt;
&lt;br /&gt;
Включаем iptables для перемршрутизации между подсетями и для него:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[*] Networking support  ---&amp;gt;                                          [CONFIG_NET]&lt;br /&gt;
      Networking Options  ---&amp;gt;&lt;br /&gt;
        [*] Network packet filtering framework (Netfilter) ---&amp;gt;       [CONFIG_NETFILTER]&lt;br /&gt;
          [*] Advanced netfilter configuration                        [CONFIG_NETFILTER_ADVANCED]&lt;br /&gt;
          Core Netfilter Configuration ---&amp;gt;&lt;br /&gt;
            &amp;lt;*/M&amp;gt; Netfilter connection tracking support               [CONFIG_NF_CONNTRACK]&lt;br /&gt;
            &amp;lt;*/M&amp;gt; Netfilter Xtables support (required for ip_tables)  [CONFIG_NETFILTER_XTABLES]&lt;br /&gt;
            &amp;lt;*/M&amp;gt; LOG target support                                  [CONFIG_NETFILTER_XT_TARGET_LOG]&lt;br /&gt;
          IP: Netfilter Configuration ---&amp;gt;&lt;br /&gt;
            &amp;lt;*/M&amp;gt; IP tables support (required for filtering/masq/NAT) [CONFIG_IP_NF_IPTABLES]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PC1:&lt;br /&gt;
&lt;br /&gt;
slattach -L -s 115200 -p slip /dev/ttyPS1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
ifconfig sl0 192.168.1.1/24 up&lt;br /&gt;
&lt;br /&gt;
route add default gw 192.168.1.1 sl0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PC2:&lt;br /&gt;
&lt;br /&gt;
slattach -L -s 115200 -p slip /dev/ttyPS1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
ifconfig sl0 192.168.1.2/24 up&lt;br /&gt;
&lt;br /&gt;
route add default gw 192.168.1.1 sl0&lt;br /&gt;
&lt;br /&gt;
== UART_PL ==&lt;br /&gt;
&lt;br /&gt;
Включаем в настройках ядра поддержку uart_lite, выставляем правильное максимальное число уартов&lt;br /&gt;
&lt;br /&gt;
Модифицируем system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
Обращаем внимание на нумерацию serial, axi_uartlite, она должна не повторяться. То же самое с interrupts &lt;br /&gt;
Указываем верный физический адрес на шине и диапазон адресов в &amp;lt;reg&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
/ {&lt;br /&gt;
    aliases {&lt;br /&gt;
            serial2 = &amp;amp;axi_uartlite_0;&lt;br /&gt;
            serial3 = &amp;amp;axi_uartlite_1;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
/ {&lt;br /&gt;
    amba_pl {&lt;br /&gt;
        #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
        compatible = &amp;quot;simple-bus&amp;quot;;&lt;br /&gt;
        ranges;&lt;br /&gt;
        &lt;br /&gt;
        axi_uartlite_0: serial@80000008 {&lt;br /&gt;
                clock-names = &amp;quot;ref_clk&amp;quot;;&lt;br /&gt;
                clocks = &amp;lt;&amp;amp;clkc 0&amp;gt;;&lt;br /&gt;
                compatible = &amp;quot;xlnx,xps-uartlite-1.00.a&amp;quot;;&lt;br /&gt;
                current-speed = &amp;lt;115200&amp;gt;;&lt;br /&gt;
                device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
                interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                interrupts = &amp;lt;0 30 1&amp;gt;;&lt;br /&gt;
                port-number = &amp;lt;3&amp;gt;;&lt;br /&gt;
                reg = &amp;lt;0x80000008 0x10&amp;gt;;&lt;br /&gt;
                xlnx,baudrate = &amp;lt;0x1c200&amp;gt;;&lt;br /&gt;
                xlnx,data-bits = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
                xlnx,odd-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
                xlnx,s-axi-aclk-freq-hz-d = &amp;quot;100.0&amp;quot;;&lt;br /&gt;
                xlnx,use-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
        axi_uartlite_1: serial@8000001C {&lt;br /&gt;
                clock-names = &amp;quot;ref_clk&amp;quot;;&lt;br /&gt;
                clocks = &amp;lt;&amp;amp;clkc 0&amp;gt;;&lt;br /&gt;
                compatible = &amp;quot;xlnx,xps-uartlite-1.00.a&amp;quot;;&lt;br /&gt;
                current-speed = &amp;lt;115200&amp;gt;;&lt;br /&gt;
                device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
                interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                interrupts = &amp;lt;0 31 1&amp;gt;;&lt;br /&gt;
                port-number = &amp;lt;4&amp;gt;;&lt;br /&gt;
                reg = &amp;lt;0x8000001C 0x10&amp;gt;;&lt;br /&gt;
                xlnx,baudrate = &amp;lt;0x1c200&amp;gt;;&lt;br /&gt;
                xlnx,data-bits = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
                xlnx,odd-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
                xlnx,s-axi-aclk-freq-hz-d = &amp;quot;100.0&amp;quot;;&lt;br /&gt;
                xlnx,use-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если ПЛИС не прошита - будет кернел паник&lt;br /&gt;
&lt;br /&gt;
== IRQ ==&lt;br /&gt;
&lt;br /&gt;
Для поддержки irq добавляем в device-tree&lt;br /&gt;
&lt;br /&gt;
'''Важно - мы перетираем bootargs!'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/ {&lt;br /&gt;
    chosen {&lt;br /&gt;
            bootargs = &amp;quot;console=ttyPS0,115200 earlyprintk uio_pdrv_genirq.of_id=generic-uio&amp;quot;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    hififo: hififo@40000000 {&lt;br /&gt;
                    compatible = &amp;quot;generic-uio&amp;quot;;&lt;br /&gt;
                    interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                    interrupts = &amp;lt;0 29 1&amp;gt;;&lt;br /&gt;
                    reg = &amp;lt;0x40000000 0x1000 0x18000000 0x8000000&amp;gt;;&lt;br /&gt;
            };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
&lt;br /&gt;
Запустил на Z706&lt;br /&gt;
&lt;br /&gt;
[http://www.wiki.xilinx.com/Zynq+Linux+USB+Device+Driver во-первых]&lt;br /&gt;
[http://zedboard.org/content/using-petalinux-configure-zedboard%EF%BC%8C-usb-otg-can-not-work во-вторых]&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-2016-3-zynq-7010-USB-not-working/td-p/737696 в-третьих]&lt;br /&gt;
&lt;br /&gt;
В дефолтных настройках ядра petalinux_2018.1 все было включено&lt;br /&gt;
&lt;br /&gt;
включаем ресет на MIO7 pullup disabled&lt;br /&gt;
&lt;br /&gt;
все ноги интерфейса ulpi pullup disabled&lt;br /&gt;
&lt;br /&gt;
Содержимое system-user.dtsi&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
	/{&lt;br /&gt;
&lt;br /&gt;
    usb_phy0:phy0 {&lt;br /&gt;
&lt;br /&gt;
        compatible=&amp;quot;ulpi-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        #phy-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       reg = &amp;lt;0xe0002000 0x1000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       view-port=&amp;lt;0x170&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       drv-vbus;&lt;br /&gt;
&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&amp;amp;usb0 {&lt;br /&gt;
&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        dr_mode = &amp;quot;host&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        usb-phy = &amp;lt;&amp;amp;usb_phy0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
} ;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== USB-ETHERNET ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers -&amp;gt;&lt;br /&gt;
     USB support -&amp;gt;&lt;br /&gt;
          [*] USB Modem (CDC ACM)&lt;br /&gt;
          USB Gadget Support -&amp;gt;&lt;br /&gt;
               [*] Ethernet Control Model (all)&lt;br /&gt;
               [*] RNDIS&lt;br /&gt;
               [*] Ethernet Emulation Model&lt;br /&gt;
               [*] CDC Composite Device (Ethernet and ACM)&lt;br /&gt;
               [*] USB Gadget Drivers (Ethernet gadget...)&lt;br /&gt;
     Network device support -&amp;gt;&lt;br /&gt;
          USB Network Adapters -&amp;gt;&lt;br /&gt;
               [*] Realtek RTL8152/RTL8153&lt;br /&gt;
               [*] Multi-purpose USB Networking Framework&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WiFi Dongle ==&lt;br /&gt;
&lt;br /&gt;
[https://forum.trenz-electronic.de/index.php?topic=747.0 раз]&lt;br /&gt;
[https://github.com/jinchenglee/zybo_linux_setup_doc два]&lt;br /&gt;
[http://billauer.co.il/blog/2014/06/linux-realtek-hostapd/ три]&lt;br /&gt;
&lt;br /&gt;
Творим:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Networking support -&amp;gt;&lt;br /&gt;
     Wireless -&amp;gt;&lt;br /&gt;
          [*] cfg80211&lt;br /&gt;
          [*] Generic IEEE 802.11 ... (mac80211)&lt;br /&gt;
Device Drivers -&amp;gt;&lt;br /&gt;
     Network device support -&amp;gt;&lt;br /&gt;
          Wireless LAN -&amp;gt;&lt;br /&gt;
               Realtek rtlwifi family of devices -&amp;gt;&lt;br /&gt;
                    [*] Realtek ..../RTL8188CE Wireless Network Adapter ???&lt;br /&gt;
                    [*] Realtek RTL8188EE Wireless Network Adapter ???&lt;br /&gt;
                    [*] Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter&lt;br /&gt;
     Staging drivers -&amp;gt;&lt;br /&gt;
          [*] Realtek RTL8188EU wireless LAN MIC driver&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
rootfs&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem packages -&amp;gt;&lt;br /&gt;
     network -&amp;gt;&lt;br /&gt;
          wpa-supplicant -&amp;gt;&lt;br /&gt;
               [*] wpa-supplicant&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/lwfinger/rtl8188eu/blob/master/rtl8188eufw.bin качаем файл]&lt;br /&gt;
&lt;br /&gt;
Модификаци инит-скрипта&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp /run/media/mmcblk0p1/wpa_supplicant.conf /etc/&lt;br /&gt;
&lt;br /&gt;
mkdir /lib/firmware/&lt;br /&gt;
mkdir /lib/firmware/rtlwifi/&lt;br /&gt;
cp /run/media/mmcblk0p1/rtl8188eufw.bin /lib/firmware/rtlwifi/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WiFi ESP ==&lt;br /&gt;
&lt;br /&gt;
[http://www.wiki.xilinx.com/Zynq+SDIO+Wifi Xilinx SDIP WiFi]&lt;br /&gt;
&lt;br /&gt;
[http://zedboard.org/content/sdio-wifi-driver-ar6103-problem Zedboard раз]&lt;br /&gt;
&lt;br /&gt;
[https://stackoverflow.com/questions/32129689/how-to-bind-sdio1-with-wi-fi-linux два]&lt;br /&gt;
&lt;br /&gt;
[http://picozed.org/content/steps-get-wlink8-working-using-petalinux-picozed picozed три]&lt;br /&gt;
&lt;br /&gt;
[http://zedboard.org/content/adding-wi-fi-and-bluetooth-connectivity-zedboard-using-murata-1dx-pmod zedboard четыре]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Оживление 2-го ядра ==&lt;br /&gt;
&lt;br /&gt;
* Находим /home/ivan/clonicus_1.2.3/build/tmp/work-shared/plnx_arm/kernel-source/arch/arm/mach-zynq/efuse.c&lt;br /&gt;
* В функции zynq_efuse_cpu_state делаем сразу ретурн тру&lt;br /&gt;
* Че-нибудь меняем в настройках ядра для пересборки&lt;br /&gt;
* Выполняем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build -c kernel -x compile -f&lt;br /&gt;
petalinux-build -c kernel -x deploy -f&lt;br /&gt;
petalinux-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Забираем image.ub&lt;br /&gt;
&lt;br /&gt;
'''ИЛИ'''&lt;br /&gt;
&lt;br /&gt;
Правим device-tree, заменяем адрес efuse на 0xf800cff0&lt;br /&gt;
&lt;br /&gt;
== webserver == &lt;br /&gt;
&lt;br /&gt;
* [https://github.com/emlid/ReachView Репозиторий emlid ReachView] (bnd на py/Flask, fnd на html/Ajax/js/Bootstrap)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Backend:'''&lt;br /&gt;
&lt;br /&gt;
* [http://svenand.blogdrives.com/archive/195.html#.XPTYt4gzaUk Источник по busybox-httpd]&lt;br /&gt;
&lt;br /&gt;
* [https://www.afternerd.com/blog/python-http-server/ Гайд по python server]&lt;br /&gt;
&lt;br /&gt;
* [https://ru.wikibooks.org/wiki/Flask Викиучебник по Flask]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/193242/ ХаброГайд по python/Flask]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Frontend:'''&lt;br /&gt;
&lt;br /&gt;
* [https://unminify.com/ unminify CSS]&lt;br /&gt;
&lt;br /&gt;
* [https://getbootstrap.com/docs/4.3/getting-started/introduction/ Bootstrap EN getting started]&lt;br /&gt;
&lt;br /&gt;
* [https://bootstrap-4.ru/ Bootstrap RU]&lt;br /&gt;
&lt;br /&gt;
* [http://htmlbook.ru/samhtml/tekst/spetssimvoly Справочник по операторам и тегам HTML/CSS]&lt;br /&gt;
&lt;br /&gt;
* [https://www.w3schools.com/howto/default.asp Сборник шаблонов CSS W3schools]&lt;br /&gt;
&lt;br /&gt;
* [https://www.w3schools.com/w3css/w3css_tabulators.asp Анимированный сайдбар/табы]&lt;br /&gt;
&lt;br /&gt;
* [https://css-tricks.com/ CSS Tricks]&lt;br /&gt;
&lt;br /&gt;
* [https://www.cssmatic.com/ Онлайн тени/границы/градиент блоков]&lt;br /&gt;
&lt;br /&gt;
* [https://internetingishard.com/html-and-css/semantic-html/ Semantic HTML grid layout]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/202408/ Хаброгайд(ч1) по верстке]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/211032/ ХаброГайд(ч2) по Bootstrap]&lt;br /&gt;
&lt;br /&gt;
* [https://fontawesome.com/icons?d=gallery Fontawesome ICONS open lib]&lt;br /&gt;
&lt;br /&gt;
:* [https://htmlacademy.ru/courses/43/run/1 Нормальный онлайн HTML/CSS/JS editor]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== busybox httpd ===&lt;br /&gt;
В petalinux многие пакеты скукожены до их минимальных вариантов и встроены в общий пакет busybox. &lt;br /&gt;
В busybox есть также и вебсервер busybox-httpd.&lt;br /&gt;
Для использования нужно на этапе настройки файловой системы его включить:&lt;br /&gt;
&lt;br /&gt;
 $ petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
Конфиг: &lt;br /&gt;
 base -&amp;gt;&lt;br /&gt;
     busybox -&amp;gt;&lt;br /&gt;
          [*] busybox&lt;br /&gt;
          [*] busybox-httpd&lt;br /&gt;
          [ ] busybox-hwclock&lt;br /&gt;
          [*] busybox-inetd&lt;br /&gt;
          [*] busybox-mdev&lt;br /&gt;
          [ ] busybox-syslog &lt;br /&gt;
          [*] busybox-udhcpc &lt;br /&gt;
          [ ] busybox-udhcpd &lt;br /&gt;
&lt;br /&gt;
Сам httpd будет в '''/usr/sbin'''.&lt;br /&gt;
Рабочая папка по умолчанию в '''/srv/www/'''. Если в нее кидать файлы, то именно из нее будет отображаться контент в браузере. Папку можно изменить, перезапустив httpd с ключом -h &amp;lt;workdir&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Порт по умолчанию 80. Работает, как демон в /etc/init.d/, вкл-выкл оттуда же.&lt;br /&gt;
&lt;br /&gt;
Если положить в /srv/www/ файл index.html с неким кодом, то в браузере отобразится вебморда. Картинки работают по ссылкам.&lt;br /&gt;
&lt;br /&gt;
'''index.html'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Transitional//EN&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;clonicus'112 webserver&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h3&amp;gt;Hello, World!&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Web server is now up!&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;https://i.redd.it/oagz5eobkkt11.jpg&amp;quot; width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;http://www.srns.ru&amp;quot;&amp;gt;For more information see SRNS.ru&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== python в petalinux ===&lt;br /&gt;
В petalinux 2017.4 есть 2 питона - 2.7 и 3.5.&lt;br /&gt;
&lt;br /&gt;
 $ petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
'''python2.7'''&lt;br /&gt;
  Filesystem Packages-&amp;gt;&lt;br /&gt;
     devel-&amp;gt;&lt;br /&gt;
         python-&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''python3.5'''&lt;br /&gt;
  Filesystem Packages-&amp;gt;&lt;br /&gt;
     misc-&amp;gt;&lt;br /&gt;
         python3-*&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модуль runpy.py для запуска команд вида 'python -m &amp;lt;module&amp;gt;' находится в python -&amp;gt; python-misc. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SimpleHTTPServer.py ===&lt;br /&gt;
Для первого теста поднимем встроенный в python2.7 минисервер SimpleHTTPServer.py в /usr/lib/python2.7. &lt;br /&gt;
&lt;br /&gt;
Для его запуска напишем скрипт&lt;br /&gt;
&lt;br /&gt;
'''webserver.py''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import SimpleHTTPServer &lt;br /&gt;
import SocketServer &lt;br /&gt;
 &lt;br /&gt;
PORT = 80 &lt;br /&gt;
 &lt;br /&gt;
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler &lt;br /&gt;
 &lt;br /&gt;
httpd = SocketServer.TCPServer((&amp;quot;&amp;quot;, PORT), Handler) &lt;br /&gt;
 &lt;br /&gt;
print &amp;quot;serving at port&amp;quot;, PORT &lt;br /&gt;
httpd.serve_forever()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 $ python webserver.py &lt;br /&gt;
&lt;br /&gt;
При наличии в папке со скриптом файла index.html сервер поднимется автоматически.&lt;br /&gt;
&lt;br /&gt;
=== Добавление слоев в сборку ===&lt;br /&gt;
&lt;br /&gt;
[https://www.srns.ru/wiki/Blog:DneprovD/18.07.2019_Yocto_layers Переехало в статью]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:HOWTO]]&lt;br /&gt;
[[Категория:Oryx]]&lt;br /&gt;
[[Категория:Zynq]]&lt;br /&gt;
[[Категория:EmbeddedLinux]]&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
&lt;br /&gt;
{{wl-publish: 2018-05-16 10:06:30 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/07.08.2020_QEMU_Virtualization</id>
		<title>Blog:Lipa/07.08.2020 QEMU Virtualization</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/07.08.2020_QEMU_Virtualization"/>
				<updated>2022-05-05T08:16:06Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary  hidden=true&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:QEMU.png|400px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Виртуализация petalinux на хосте!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== INTRO ==&lt;br /&gt;
Качаем читаем [[:File:ug982-petalinux-system-simulation_QEMU.pdf]]&lt;br /&gt;
&lt;br /&gt;
== SD-card create ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/k0nze/qemu_zynq_linux_setup инструкция]&lt;br /&gt;
&lt;br /&gt;
Выкачиваем [https://github.com/qemu/qemu.git репозиторий qemu]&lt;br /&gt;
&lt;br /&gt;
Ставим в систему nbd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install nbd-client &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверяем&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsmod | grep nbd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если нет модуля - загружаем его:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe nbd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ставим в систему pixman&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libpixman-1-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможно:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev&lt;br /&gt;
sudo apt-get install ninja-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Инициализируем подмодуль:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd qemu&lt;br /&gt;
git submodule update --init dtc&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Исполняем:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure --target-list=&amp;quot;aarch64-softmmu&amp;quot; --enable-fdt --disable-kvm --disable-xen make -j4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создаем файл-образ флешки:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
~/git/qemu/qemu-img create -f qcow2 ~/clonicus_1.2.3/sdcard/sdcard.qcow2 256M&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем образ к хосту:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo ~/git/qemu/build/qemu-nbd --connect=/dev/nbd0 ~/clonicus_1.2.3/sdcard/sdcard.qcow2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверяем подключение:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo fdisk /dev/nbd0 -l&lt;br /&gt;
&lt;br /&gt;
Диск /dev/nbd0: 256 MiB, 268435456 байтов, 524288 секторов&lt;br /&gt;
Единицы измерения: секторов из 1 * 512 = 512 байтов&lt;br /&gt;
Размер сектора (логический/физический): 512 байт / 512 байт&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Форматируем флешку:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo fdisk /dev/nbd0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[:File:sd_table.rar]]&lt;br /&gt;
Таблица форматирования&lt;br /&gt;
Размеченный файл-образ, берем, пользуем&lt;br /&gt;
&lt;br /&gt;
== START ==&lt;br /&gt;
&lt;br /&gt;
Заходим по ssh на виртуальный petalinux&lt;br /&gt;
&lt;br /&gt;
'''Пока что не получается заменить IP адрес.''' Используем 10.0.2.15&lt;br /&gt;
&lt;br /&gt;
Необходимо переименовать на флешке файл interfaces, чтобы он не ломал настройки&lt;br /&gt;
&lt;br /&gt;
Перенаправляем порты ssh при вызове запуска виртуалки:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-boot --qemu --kernel --qemu-args &amp;quot;-redir tcp:10022:10.0.2.15:22 -drive file=sdcard.qcow2,if=sd,index=0,media=disk&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее коннектимся с хоста:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh-copy-id root@localhost -p 10022&lt;br /&gt;
ssh root@localhost -p 10022&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Копирование по ssh:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
scp -P 10022 &amp;lt;source&amp;gt;  root@localhost:&amp;lt;destination&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прерывать симуляцию:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Ctrl-A X&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Работает SSH и подгружаются скрипты с подмонтированной SD-карточки. Цветная консоль, ключи ssh...&lt;br /&gt;
&lt;br /&gt;
[[Категория:HOWTO]]&lt;br /&gt;
[[Категория:Oryx]]&lt;br /&gt;
[[Категория:Zynq]]&lt;br /&gt;
[[Категория:EmbeddedLinux]]&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
[[Category:Qemu]]&lt;br /&gt;
[[Category:Debug]]&lt;br /&gt;
{{wl-publish: 2020-08-07 09:45:50 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/07.08.2020_QEMU_Virtualization</id>
		<title>Blog:Lipa/07.08.2020 QEMU Virtualization</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/07.08.2020_QEMU_Virtualization"/>
				<updated>2022-05-05T07:43:46Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* SD-card create */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary  hidden=true&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:QEMU.png|400px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Виртуализация petalinux на хосте!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма2}}&lt;br /&gt;
&lt;br /&gt;
== INTRO ==&lt;br /&gt;
Качаем читаем [[:File:ug982-petalinux-system-simulation_QEMU.pdf]]&lt;br /&gt;
&lt;br /&gt;
== SD-card create ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/k0nze/qemu_zynq_linux_setup инструкция]&lt;br /&gt;
&lt;br /&gt;
Выкачиваем [https://github.com/qemu/qemu.git репозиторий qemu]&lt;br /&gt;
&lt;br /&gt;
Ставим в систему nbd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install nbd-client &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверяем&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsmod | grep nbd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если нет модуля - загружаем его:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe nbd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ставим в систему pixman&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libpixman-1-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможно:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev&lt;br /&gt;
sudo apt-get install ninja-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Инициализируем подмодуль:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd qemu&lt;br /&gt;
git submodule update --init dtc&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Исполняем:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure --target-list=&amp;quot;aarch64-softmmu&amp;quot; --enable-fdt --disable-kvm --disable-xen make -j4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создаем файл-образ флешки:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
~/git/qemu/qemu-img create -f qcow2 ~/clonicus_1.2.3/sdcard/sdcard.qcow2 256M&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем образ к хосту:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo ~/git/qemu/build/qemu-nbd --connect=/dev/nbd0 ~/clonicus_1.2.3/sdcard/sdcard.qcow2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверяем подключение:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo fdisk /dev/nbd0 -l&lt;br /&gt;
&lt;br /&gt;
Диск /dev/nbd0: 256 MiB, 268435456 байтов, 524288 секторов&lt;br /&gt;
Единицы измерения: секторов из 1 * 512 = 512 байтов&lt;br /&gt;
Размер сектора (логический/физический): 512 байт / 512 байт&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Форматируем флешку:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo fdisk /dev/nbd0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[:File:sd_table.rar]]&lt;br /&gt;
Таблица форматирования&lt;br /&gt;
Размеченный файл-образ, берем, пользуем&lt;br /&gt;
&lt;br /&gt;
== START ==&lt;br /&gt;
&lt;br /&gt;
Заходим по ssh на виртуальный petalinux&lt;br /&gt;
&lt;br /&gt;
'''Пока что не получается заменить IP адрес.''' Используем 10.0.2.15&lt;br /&gt;
&lt;br /&gt;
Необходимо переименовать на флешке файл interfaces, чтобы он не ломал настройки&lt;br /&gt;
&lt;br /&gt;
Перенаправляем порты ssh при вызове запуска виртуалки:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-boot --qemu --kernel --qemu-args &amp;quot;-redir tcp:10022:10.0.2.15:22 -drive file=sdcard.qcow2,if=sd,index=0,media=disk&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее коннектимся с хоста:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh-copy-id root@localhost -p 10022&lt;br /&gt;
ssh root@localhost -p 10022&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Копирование по ssh:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
scp -P 10022 &amp;lt;source&amp;gt;  root@localhost:&amp;lt;destination&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прерывать симуляцию:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Ctrl-A X&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Работает SSH и подгружаются скрипты с подмонтированной SD-карточки. Цветная консоль, ключи ssh...&lt;br /&gt;
&lt;br /&gt;
[[Категория:HOWTO]]&lt;br /&gt;
[[Категория:Oryx]]&lt;br /&gt;
[[Категория:Zynq]]&lt;br /&gt;
[[Категория:EmbeddedLinux]]&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
[[Category:Qemu]]&lt;br /&gt;
[[Category:Debug]]&lt;br /&gt;
{{wl-publish: 2020-08-07 09:45:50 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/07.08.2020_QEMU_Virtualization</id>
		<title>Blog:Lipa/07.08.2020 QEMU Virtualization</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/07.08.2020_QEMU_Virtualization"/>
				<updated>2022-05-05T07:39:01Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* SD-card create */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary  hidden=true&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:QEMU.png|400px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Виртуализация petalinux на хосте!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма2}}&lt;br /&gt;
&lt;br /&gt;
== INTRO ==&lt;br /&gt;
Качаем читаем [[:File:ug982-petalinux-system-simulation_QEMU.pdf]]&lt;br /&gt;
&lt;br /&gt;
== SD-card create ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/k0nze/qemu_zynq_linux_setup инструкция]&lt;br /&gt;
&lt;br /&gt;
Выкачиваем [https://github.com/qemu/qemu.git репозиторий qemu]&lt;br /&gt;
&lt;br /&gt;
Ставим в систему nbd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install nbd-client &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверяем&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsmod | grep nbd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если нет модуля - загружаем его:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe nbd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ставим в систему pixman&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libpixman-1-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможно:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev&lt;br /&gt;
sudo apt-get install ninja-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Инициализируем подмодуль:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd qemu&lt;br /&gt;
git submodule update --init dtc&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Исполняем:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure --target-list=&amp;quot;aarch64-softmmu&amp;quot; --enable-fdt --disable-kvm --disable-xen make -j4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создаем файл-образ флешки:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
~/git/qemu/qemu-img create -f qcow2 ~/clonicus_1.2.3/sdcard/sdcard.qcow2 256M&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем образ к хосту:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo ~/git/qemu/qemu-nbd --connect=/dev/nbd0 ~/clonicus_1.2.3/sdcard/sdcard.qcow2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверяем подключение:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo fdisk /dev/nbd0 -l&lt;br /&gt;
&lt;br /&gt;
Диск /dev/nbd0: 256 MiB, 268435456 байтов, 524288 секторов&lt;br /&gt;
Единицы измерения: секторов из 1 * 512 = 512 байтов&lt;br /&gt;
Размер сектора (логический/физический): 512 байт / 512 байт&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Форматируем флешку:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo fdisk /dev/nbd0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[:File:sd_table.rar]]&lt;br /&gt;
Таблица форматирования&lt;br /&gt;
Размеченный файл-образ, берем, пользуем&lt;br /&gt;
&lt;br /&gt;
== START ==&lt;br /&gt;
&lt;br /&gt;
Заходим по ssh на виртуальный petalinux&lt;br /&gt;
&lt;br /&gt;
'''Пока что не получается заменить IP адрес.''' Используем 10.0.2.15&lt;br /&gt;
&lt;br /&gt;
Необходимо переименовать на флешке файл interfaces, чтобы он не ломал настройки&lt;br /&gt;
&lt;br /&gt;
Перенаправляем порты ssh при вызове запуска виртуалки:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-boot --qemu --kernel --qemu-args &amp;quot;-redir tcp:10022:10.0.2.15:22 -drive file=sdcard.qcow2,if=sd,index=0,media=disk&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее коннектимся с хоста:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh-copy-id root@localhost -p 10022&lt;br /&gt;
ssh root@localhost -p 10022&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Копирование по ssh:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
scp -P 10022 &amp;lt;source&amp;gt;  root@localhost:&amp;lt;destination&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прерывать симуляцию:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Ctrl-A X&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Работает SSH и подгружаются скрипты с подмонтированной SD-карточки. Цветная консоль, ключи ssh...&lt;br /&gt;
&lt;br /&gt;
[[Категория:HOWTO]]&lt;br /&gt;
[[Категория:Oryx]]&lt;br /&gt;
[[Категория:Zynq]]&lt;br /&gt;
[[Категория:EmbeddedLinux]]&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
[[Category:Qemu]]&lt;br /&gt;
[[Category:Debug]]&lt;br /&gt;
{{wl-publish: 2020-08-07 09:45:50 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/07.08.2020_QEMU_Virtualization</id>
		<title>Blog:Lipa/07.08.2020 QEMU Virtualization</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/07.08.2020_QEMU_Virtualization"/>
				<updated>2022-05-05T07:35:42Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* SD-card create */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary  hidden=true&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:QEMU.png|400px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Виртуализация petalinux на хосте!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма2}}&lt;br /&gt;
&lt;br /&gt;
== INTRO ==&lt;br /&gt;
Качаем читаем [[:File:ug982-petalinux-system-simulation_QEMU.pdf]]&lt;br /&gt;
&lt;br /&gt;
== SD-card create ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/k0nze/qemu_zynq_linux_setup инструкция]&lt;br /&gt;
&lt;br /&gt;
Выкачиваем [https://github.com/qemu/qemu.git репозиторий qemu]&lt;br /&gt;
&lt;br /&gt;
Ставим в систему nbd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install nbd-client &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверяем&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsmod | grep nbd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если нет модуля - загружаем его:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe nbd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ставим в систему pixman&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libpixman-1-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможно:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Инициализируем подмодуль:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd qemu&lt;br /&gt;
git submodule update --init dtc&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Исполняем:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure --target-list=&amp;quot;aarch64-softmmu&amp;quot; --enable-fdt --disable-kvm --disable-xen make -j4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создаем файл-образ флешки:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
~/git/qemu/qemu-img create -f qcow2 ~/clonicus_1.2.3/sdcard/sdcard.qcow2 256M&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаем образ к хосту:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo ~/git/qemu/qemu-nbd --connect=/dev/nbd0 ~/clonicus_1.2.3/sdcard/sdcard.qcow2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверяем подключение:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo fdisk /dev/nbd0 -l&lt;br /&gt;
&lt;br /&gt;
Диск /dev/nbd0: 256 MiB, 268435456 байтов, 524288 секторов&lt;br /&gt;
Единицы измерения: секторов из 1 * 512 = 512 байтов&lt;br /&gt;
Размер сектора (логический/физический): 512 байт / 512 байт&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Форматируем флешку:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo fdisk /dev/nbd0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[:File:sd_table.rar]]&lt;br /&gt;
Таблица форматирования&lt;br /&gt;
Размеченный файл-образ, берем, пользуем&lt;br /&gt;
&lt;br /&gt;
== START ==&lt;br /&gt;
&lt;br /&gt;
Заходим по ssh на виртуальный petalinux&lt;br /&gt;
&lt;br /&gt;
'''Пока что не получается заменить IP адрес.''' Используем 10.0.2.15&lt;br /&gt;
&lt;br /&gt;
Необходимо переименовать на флешке файл interfaces, чтобы он не ломал настройки&lt;br /&gt;
&lt;br /&gt;
Перенаправляем порты ssh при вызове запуска виртуалки:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-boot --qemu --kernel --qemu-args &amp;quot;-redir tcp:10022:10.0.2.15:22 -drive file=sdcard.qcow2,if=sd,index=0,media=disk&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее коннектимся с хоста:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh-copy-id root@localhost -p 10022&lt;br /&gt;
ssh root@localhost -p 10022&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Копирование по ssh:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
scp -P 10022 &amp;lt;source&amp;gt;  root@localhost:&amp;lt;destination&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прерывать симуляцию:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Ctrl-A X&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Работает SSH и подгружаются скрипты с подмонтированной SD-карточки. Цветная консоль, ключи ssh...&lt;br /&gt;
&lt;br /&gt;
[[Категория:HOWTO]]&lt;br /&gt;
[[Категория:Oryx]]&lt;br /&gt;
[[Категория:Zynq]]&lt;br /&gt;
[[Категория:EmbeddedLinux]]&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
[[Category:Qemu]]&lt;br /&gt;
[[Category:Debug]]&lt;br /&gt;
{{wl-publish: 2020-08-07 09:45:50 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/16.05.2018_PetaLinux</id>
		<title>Blog:Lipa/16.05.2018 PetaLinux</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/16.05.2018_PetaLinux"/>
				<updated>2022-03-30T07:54:05Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* petalinux-config -c rootfs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Petalinux.png|400px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сборка PetaLinux для кастомной железки&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма2}}&lt;br /&gt;
&lt;br /&gt;
== Требования ==&lt;br /&gt;
&lt;br /&gt;
Vivado 2018.1 (для single-gigabit ethernet можно более ранние версии)&lt;br /&gt;
&lt;br /&gt;
Начиная с petalinux_2018.1 отсутствует devcfg. Необходимо использовать FPGA manager. Технология нами пока не освоена&lt;br /&gt;
&lt;br /&gt;
Необходима Ubuntu-16.04&lt;br /&gt;
&lt;br /&gt;
Требуется поставить ряд пакетов, полный список приведен в документе [https://www.xilinx.com/support/documentation/sw_manuals/xilinx2019_1/ug1144-petalinux-tools-reference-guide.pdf#page=9 UG1144]&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PetaLinux в систему. Дистрибутив есть на [https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/2018-1.html Xilinx], либо у меня на компьютере. '''Ставить PetaLinux необходимо БЕЗ прав суперюзера!'''&lt;br /&gt;
&lt;br /&gt;
кидаем в /components/yocto/ sstate-rel-v2017.4.tar.gz&lt;br /&gt;
&lt;br /&gt;
Подготовка завершена&lt;br /&gt;
&lt;br /&gt;
== Правка Vivado ==&lt;br /&gt;
&lt;br /&gt;
Для поддержки MDIO в Vivado 17.1-17.4 нужен [https://www.xilinx.com/support/answers/69132.html патч]. Ставим!&lt;br /&gt;
&lt;br /&gt;
'''Не помогло.''' Ставим 2018.1&lt;br /&gt;
&lt;br /&gt;
== Сборка ==&lt;br /&gt;
&lt;br /&gt;
Пошаговое руководство по сборке содержится в документе UG1156&lt;br /&gt;
&lt;br /&gt;
В консоли пишем source/[путь к петалинух]/settings.sh&lt;br /&gt;
&lt;br /&gt;
Выполняем шаги из UG1156 по главе 5:&lt;br /&gt;
&lt;br /&gt;
* экспортируем из Vivado .hdf (в блок дизайн File-&amp;gt;Export-&amp;gt;Export Hardware)&lt;br /&gt;
&lt;br /&gt;
* создаем проект PetaLinux&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-create --type project --template zynq --name &amp;lt;PROJECT&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* переходим в папку с текущим проектом&lt;br /&gt;
&lt;br /&gt;
* подключаем файл .hdf&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config --get-hw-description=[путь к папке с файлом .hdf]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* перед сборкой системы необходимо выполнить '''все''' команды конфигурации в данной последовательности:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&lt;br /&gt;
$ petalinux-config -c kernel&lt;br /&gt;
&lt;br /&gt;
$ petalinux-config -c rootfs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config ===&lt;br /&gt;
&lt;br /&gt;
Если хотим спользовать внешний файл device-tree включаем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Subsystem AUTO Hardware Settings-&amp;gt;&lt;br /&gt;
     Advances bootable images storage settings-&amp;gt;&lt;br /&gt;
          dtb image settings-&amp;gt;&lt;br /&gt;
               image storage media&lt;br /&gt;
                    primary sd&lt;br /&gt;
               &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Необходимо править netboot offset если оперативной памяти менее ~256МБ&lt;br /&gt;
&lt;br /&gt;
Для клоникуса с 256МБ ставим 8'000'000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
u-boot Configuration-&amp;gt;&lt;br /&gt;
     netboot offset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выставляем точку начала распаковки образа системы&lt;br /&gt;
&lt;br /&gt;
Выключаем копирование образа по sftp (Image Packaging Configuration -&amp;gt; Copy final images)&lt;br /&gt;
&lt;br /&gt;
Отключаем интернет-sstate (Yocto Settings -&amp;gt; Enable Network sstate feeds)&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config -c kernel===&lt;br /&gt;
&lt;br /&gt;
* Подключаем в ядре поддержку физика и его дров.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config -c kernel&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''для oryx:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers-&amp;gt;&lt;br /&gt;
     [*]Network device support -&amp;gt;&lt;br /&gt;
          [*]Ethernet driver support -&amp;gt;&lt;br /&gt;
               [*] Micrel devices&lt;br /&gt;
          [*] PHY Device support and infastructure --&amp;gt;&lt;br /&gt;
               [*] Drivers for Micrel PHYs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''для clonicus:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers-&amp;gt;&lt;br /&gt;
     [*]Network device support -&amp;gt;&lt;br /&gt;
          [*] PHY Device support and infastructure --&amp;gt;&lt;br /&gt;
               [*] Texas Instruments DP83867 Gigabit PHY&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config -c rootfs ===&lt;br /&gt;
&lt;br /&gt;
Подключаем при необходимости ethtool, gdbserver, gdb, libstdc, libgcc, glib2.0, glibc(glibc &amp;amp; ltd)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages-&amp;gt;&lt;br /&gt;
     misc -&amp;gt;&lt;br /&gt;
          gcc-runtime -&amp;gt;&lt;br /&gt;
               [*] libstdc ++&lt;br /&gt;
          gdb --&amp;gt;&lt;br /&gt;
               [*] gdb&lt;br /&gt;
          glib-2.0&lt;br /&gt;
               [*] glib-2.0&lt;br /&gt;
          glibc&lt;br /&gt;
               [*] glibc&lt;br /&gt;
               [*] ldd&lt;br /&gt;
     devel -&amp;gt;&lt;br /&gt;
          python -&amp;gt;&lt;br /&gt;
               python -&amp;gt;&lt;br /&gt;
                    [*] python&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Опционально:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages-&amp;gt;&lt;br /&gt;
     base -&amp;gt;&lt;br /&gt;
          i2c-tools -&amp;gt;&lt;br /&gt;
               [*] i2c-tools&lt;br /&gt;
          usbutils -&amp;gt;&lt;br /&gt;
               [*] usbutils&lt;br /&gt;
     console -&amp;gt;&lt;br /&gt;
          network -&amp;gt;&lt;br /&gt;
               ethtool -&amp;gt;&lt;br /&gt;
                    [*] ethtool // необходимо для oryx! для перенастройки autonegotiation&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Можно еще подключать дебаг i2c&lt;br /&gt;
&lt;br /&gt;
'''Необходимо убедиться, что  образ может распаковаться в размер оперативы'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Если будут проблемы, то надо будет править netboot offset&lt;br /&gt;
&lt;br /&gt;
=== device tree ===&lt;br /&gt;
&lt;br /&gt;
Если необходимо внести изменения в device tree, то смотрим конец статьи&lt;br /&gt;
&lt;br /&gt;
[https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841676/U-Boot+Flattened+Device+Tree Интересная статья по правке devicetree из uboot]&lt;br /&gt;
&lt;br /&gt;
=== Сборка проекта ===&lt;br /&gt;
&lt;br /&gt;
* далее (сборка идет 30-60 минут)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build&lt;br /&gt;
&lt;br /&gt;
cd /images/linux/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* делаем boot.bin в папке /images/linux/&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --u-boot --force&lt;br /&gt;
&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --fpga name.bit --u-boot --force&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --fpga name.bit --u-boot --kernel --force&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* записываем в загрузочную область флешки файлы boot.bin и image.ub&lt;br /&gt;
&lt;br /&gt;
== Всякое ==&lt;br /&gt;
&lt;br /&gt;
Если мало памяти как у нас - возможна ошибка image is not a fdt [https://forums.xilinx.com/t5/Embedded-Processor-System-Design/Petalinux-problem-on-custom-board-quot-image-is-not-a-fdt-quot/td-p/754892 ссылка]&lt;br /&gt;
&lt;br /&gt;
Необходимо править netboot offset&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
u-boot Configuration-&amp;gt;&lt;br /&gt;
     netboot offset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Можно вручную загрузиться из u-boot'а.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ fatload mmc 0 0xA000000 image.ub&lt;br /&gt;
$ bootm 0xA000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
либо&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ fatload mmc 0 0xA000000 image.ub&lt;br /&gt;
$ fatload mmc 0 0x9000000 system.dtb&lt;br /&gt;
$ bootm 0xA000000 0xA000000 0x9000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Можно поварьировать адрес&lt;br /&gt;
&lt;br /&gt;
------------&lt;br /&gt;
&lt;br /&gt;
Проверка статуса прошитости FPGA&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat /sys/class/xdevcfg/xdevcfg/device/prog_done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Uboot==&lt;br /&gt;
&lt;br /&gt;
Для внесения правок в загрузку линукса используем список команд '''env'''&lt;br /&gt;
&lt;br /&gt;
Просмотр текущих команд '''printenv'''&lt;br /&gt;
&lt;br /&gt;
Сброс настроек в дефолт '''env default -a'''&lt;br /&gt;
&lt;br /&gt;
Создать переменную '''env set &amp;lt;имя&amp;gt; &amp;lt;значение&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Правка переменной '''env edit &amp;lt;имя переменной&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Для каждой платы делаем следующее:&lt;br /&gt;
&lt;br /&gt;
* Берем [[Файл:uboot.env.c]]&lt;br /&gt;
&lt;br /&gt;
* Удаляем в конце имени &amp;quot;.c&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Записываем на флешку рядом с образом линукса&lt;br /&gt;
&lt;br /&gt;
* Запускаем плату и прерываем autoboot&lt;br /&gt;
&lt;br /&gt;
* Пишем '''editenv ethaddr'''&lt;br /&gt;
&lt;br /&gt;
* Редактируем MAC-адрес&lt;br /&gt;
&lt;br /&gt;
* Пишем '''saveenv'''&lt;br /&gt;
&lt;br /&gt;
* Все! можем ребутать '''reset'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Сохранить в файл '''saveenv'''&lt;br /&gt;
&lt;br /&gt;
==Автозапуск приложений==&lt;br /&gt;
&lt;br /&gt;
Во-первых [https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-Runnning-a-script-file-at-startup/td-p/689051 тыц]&lt;br /&gt;
&lt;br /&gt;
Далее пишем&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-create -t apps --template install -n myapp-init --enable&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим файл /project-spec/meta-user/recipes-apps/myapp-init/myapp-init.bb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file is the myapp-init recipe.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
SUMMARY = &amp;quot;Simple myapp-init application&amp;quot;&lt;br /&gt;
SECTION = &amp;quot;PETALINUX/apps&amp;quot;&lt;br /&gt;
LICENSE = &amp;quot;MIT&amp;quot;&lt;br /&gt;
LIC_FILES_CHKSUM = &amp;quot;file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302&amp;quot;&lt;br /&gt;
&lt;br /&gt;
SRC_URI = &amp;quot;file://myapp-init&amp;quot;&lt;br /&gt;
&lt;br /&gt;
S = &amp;quot;${WORKDIR}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILESEXTRAPATHS_prepend := &amp;quot;${THISDIR}/files:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
inherit update-rc.d&lt;br /&gt;
&lt;br /&gt;
INITSCRIPT_NAME = &amp;quot;myapp-init&amp;quot;&lt;br /&gt;
INITSCRIPT_PARAMS = &amp;quot;start 99 S .&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do_install() {&lt;br /&gt;
    install -d ${D}${sysconfdir}/init.d&lt;br /&gt;
    install -m 0755 ${S}/myapp-init ${D}${sysconfdir}/init.d/myapp-init&lt;br /&gt;
}&lt;br /&gt;
FILES_${PN} += &amp;quot;${sysconfdir}/*&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим сам исполняемый скрипт project-spec/meta-user/recipes-apps/myapp-init/files/myapp-init&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Autorun script&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Try run custom_init&amp;quot;&lt;br /&gt;
sh /run/media/mmcblk0p1/custom_init.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Записываем на флешку скрипт custom_init.sh с нужными командами и делаем его исполняемым&lt;br /&gt;
&lt;br /&gt;
Записываем файл interfaces&lt;br /&gt;
&lt;br /&gt;
Скачать архив: [[Файл:Init_interfaces.rar]]&lt;br /&gt;
&lt;br /&gt;
==SSH==&lt;br /&gt;
&lt;br /&gt;
Как победить сохранение ssh-ключей:&lt;br /&gt;
&lt;br /&gt;
Добавляем в init_script следующие строки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir /run/media/mmcblk0p2/.ssh&lt;br /&gt;
ln -s /run/media/mmcblk0p2/.ssh/ /home/root/&lt;br /&gt;
mkdir /run/media/mmcblk0p2/dropbear/&lt;br /&gt;
chmod 400 /run/media/mmcblk0p2/dropbear/&lt;br /&gt;
rm -r /etc/dropbear/&lt;br /&gt;
ln -s /run/media/mmcblk0p2/dropbear/ /etc/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Создается ссылка на флешку, где хранятся авторизованные пользователи&lt;br /&gt;
* Создается папка для хранения секретного ключа платы&lt;br /&gt;
* При запуске платы свежесозданный ключ заменяется тем, что лежит на флешке&lt;br /&gt;
* При первом включении платы будет создан новый ключ&lt;br /&gt;
&lt;br /&gt;
Помимо добавления указанных команд в скрипт ничего больше делать не надо&lt;br /&gt;
&lt;br /&gt;
==Daemon==&lt;br /&gt;
&lt;br /&gt;
Для настройки демона:&lt;br /&gt;
&lt;br /&gt;
* Добавляем строки в файл custom_init.sh&lt;br /&gt;
* Кидаем на загрузочный раздел флешки папку из архива [[:File:daemon.rar]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp -r /run/media/mmcblk0p1/daemon/lsb /lib/&lt;br /&gt;
cp /run/media/mmcblk0p1/daemon/receiver.conf /etc/&lt;br /&gt;
cp /run/media/mmcblk0p1/daemon/receiver /etc/init.d/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serial port на новом линуксе ===&lt;br /&gt;
Выяснилось, что без доп. настройки, в последовательный порт (dev/ttyPS0) после каждой посылки добавляются символы CR и LF. Оказалось, что и RTKLib, и софт Листопада не хотят работать с таким окончанием пакетов.&lt;br /&gt;
&lt;br /&gt;
Выше не совсем так, скорее мысль в том, что каждый символ LF (0x0A) в наших данных меняется на символы CR LF, т.е. (0x0D0A). И тогда, в нашем битовом потоке меняется размер и содержимое и парсеры работают некорректно.&lt;br /&gt;
Старый линукс на Ориксах добавляет только LF. Для решения проблемы нужно через stty выключить в настройках порта опцию '''onlcr''' (преобразовывать перевод строки в возврат каретки и новую строку).&lt;br /&gt;
&lt;br /&gt;
Сделать это удалось пока только изменив скрипт демона receiver. Для решения проблемы заходим в /run/media/mmcblk0p1/daemon/receiver, и в начале секции receiver_start() {...} добавляем команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
stty -F /dev/ttyPS0 -onlcr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==device tree==&lt;br /&gt;
&lt;br /&gt;
Для внесения изменений в device tree добавляем нужные строки в файл&lt;br /&gt;
&lt;br /&gt;
project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
[https://www.xilinx.com/support/answers/61117.html пример]&lt;br /&gt;
&lt;br /&gt;
Для разборки device-tree [http://xillybus.com/tutorials/device-tree-zynq-1 ссылка]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ dtc -I dtb -O dts -o &amp;lt;name&amp;gt;.dts &amp;lt;name&amp;gt;.dtb&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для сборки device-tree&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ dtc -I dts -O dtb -o &amp;lt;name&amp;gt;.dtb &amp;lt;name&amp;gt;.dts&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Модификация device-tree ==&lt;br /&gt;
&lt;br /&gt;
После долгих мучений получилось поднять DP83867 только после добавления модификатора в файл [https://forums.xilinx.com/t5/Embedded-Linux/ZC702-Like-Board-with-DP83867CR-Ethernet-Petalinux-2017-4/td-p/831873 волшебная статья]&lt;br /&gt;
&lt;br /&gt;
[https://www.kernel.org/doc/Documentation/devicetree/bindings/net/ti%2Cdp83867.txt описание параметров]&lt;br /&gt;
&lt;br /&gt;
project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
=== Single Kit-board eth ===&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth1(с mdio) и выключен eth0.&lt;br /&gt;
&lt;br /&gt;
'''Так работает'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem1{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@12 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;12&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Начало скрытого блока|Выравнивание_заголовка = left| Ссылка = left|Заголовок =  Развернутый .dtb:}}&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/dts-v1/;&lt;br /&gt;
&lt;br /&gt;
/ {&lt;br /&gt;
	#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
	#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
	compatible = &amp;quot;xlnx,zynq-7000&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	cpus {&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
		cpu@0 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9&amp;quot;;&lt;br /&gt;
			device_type = &amp;quot;cpu&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x3&amp;gt;;&lt;br /&gt;
			clock-latency = &amp;lt;0x3e8&amp;gt;;&lt;br /&gt;
			cpu0-supply = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			operating-points = &amp;lt;0xa2c2a 0xf4240 0x51615 0xf4240&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		cpu@1 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9&amp;quot;;&lt;br /&gt;
			device_type = &amp;quot;cpu&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x3&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	fpga-full {&lt;br /&gt;
		compatible = &amp;quot;fpga-region&amp;quot;;&lt;br /&gt;
		fpga-mgr = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		ranges;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	pmu@f8891000 {&lt;br /&gt;
		compatible = &amp;quot;arm,cortex-a9-pmu&amp;quot;;&lt;br /&gt;
		interrupts = &amp;lt;0x0 0x5 0x4 0x0 0x6 0x4&amp;gt;;&lt;br /&gt;
		interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		reg = &amp;lt;0xf8891000 0x1000 0xf8893000 0x1000&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	fixedregulator {&lt;br /&gt;
		compatible = &amp;quot;regulator-fixed&amp;quot;;&lt;br /&gt;
		regulator-name = &amp;quot;VCCPINT&amp;quot;;&lt;br /&gt;
		regulator-min-microvolt = &amp;lt;0xf4240&amp;gt;;&lt;br /&gt;
		regulator-max-microvolt = &amp;lt;0xf4240&amp;gt;;&lt;br /&gt;
		regulator-boot-on;&lt;br /&gt;
		regulator-always-on;&lt;br /&gt;
		linux,phandle = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
		phandle = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	amba {&lt;br /&gt;
		u-boot,dm-pre-reloc;&lt;br /&gt;
		compatible = &amp;quot;simple-bus&amp;quot;;&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		ranges;&lt;br /&gt;
&lt;br /&gt;
		adc@f8007100 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-xadc-1.00.a&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8007100 0x20&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x7 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xc&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		can@e0008000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-can-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x13 0x1 0x24&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;can_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0008000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1c 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			tx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			rx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		can@e0009000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-can-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x14 0x1 0x25&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;can_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0009000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x33 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			tx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			rx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		gpio@e000a000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-gpio-1.0&amp;quot;;&lt;br /&gt;
			#gpio-cells = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x2a&amp;gt;;&lt;br /&gt;
			gpio-controller;&lt;br /&gt;
			interrupt-controller;&lt;br /&gt;
			#interrupt-cells = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x14 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe000a000 0x1000&amp;gt;;&lt;br /&gt;
			emio-gpio-width = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			gpio-mask-high = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			gpio-mask-low = &amp;lt;0x5600&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		i2c@e0004000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x26&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x19 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0004000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		i2c@e0005000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x27&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x30 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0005000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		interrupt-controller@f8f01000 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-gic&amp;quot;;&lt;br /&gt;
			#interrupt-cells = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
			interrupt-controller;&lt;br /&gt;
			reg = &amp;lt;0xf8f01000 0x1000 0xf8f00100 0x100&amp;gt;;&lt;br /&gt;
			num_cpus = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			num_interrupts = &amp;lt;0x60&amp;gt;;&lt;br /&gt;
			linux,phandle = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		cache-controller@f8f02000 {&lt;br /&gt;
			compatible = &amp;quot;arm,pl310-cache&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f02000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2 0x4&amp;gt;;&lt;br /&gt;
			arm,data-latency = &amp;lt;0x3 0x2 0x2&amp;gt;;&lt;br /&gt;
			arm,tag-latency = &amp;lt;0x2 0x2 0x2&amp;gt;;&lt;br /&gt;
			cache-unified;&lt;br /&gt;
			cache-level = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		memory-controller@f8006000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-ddrc-a05&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8006000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ocmc@f800c000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-ocmc-1.0&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x3 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf800c000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		serial@e0000000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,xuartps&amp;quot;, &amp;quot;cdns,uart-r1p8&amp;quot;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x17 0x1 0x28&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;uart_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0000000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1b 0x4&amp;gt;;&lt;br /&gt;
			device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
			port-number = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		serial@e0001000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,xuartps&amp;quot;, &amp;quot;cdns,uart-r1p8&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x18 0x1 0x29&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;uart_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0001000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x32 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e0006000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-spi-r1p6&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0006000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1a 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x19 0x1 0x22&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e0007000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-spi-r1p6&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0007000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x31 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1a 0x1 0x23&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e000d000 {&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xa 0x1 0x2b&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-qspi-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x13 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe000d000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		memory-controller@e000e000 {&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;memclk&amp;quot;, &amp;quot;aclk&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xb 0x1 0x2c&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;arm,pl353-smc-r2p1&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x12 0x4&amp;gt;;&lt;br /&gt;
			ranges;&lt;br /&gt;
			reg = &amp;lt;0xe000e000 0x1000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			flash@e1000000 {&lt;br /&gt;
				status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
				compatible = &amp;quot;arm,pl353-nand-r2p1&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0xe1000000 0x1000000&amp;gt;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			flash@e2000000 {&lt;br /&gt;
				status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
				compatible = &amp;quot;cfi-flash&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0xe2000000 0x2000000&amp;gt;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ethernet@e000b000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,zynq-gem&amp;quot;, &amp;quot;cdns,gem&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe000b000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x16 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1e 0x1 0x1e 0x1 0xd&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;pclk&amp;quot;, &amp;quot;hclk&amp;quot;, &amp;quot;tx_clk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ethernet@e000c000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,zynq-gem&amp;quot;, &amp;quot;cdns,gem&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe000c000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2d 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1f 0x1 0x1f 0x1 0xe&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;pclk&amp;quot;, &amp;quot;hclk&amp;quot;, &amp;quot;tx_clk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
			xlnx,ptp-enet-clock = &amp;lt;0x69f6bcb&amp;gt;;&lt;br /&gt;
			local-mac-address = [00 0a 35 00 22 01];&lt;br /&gt;
			phy-handle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
			xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			mdio {&lt;br /&gt;
				status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
				phy@12 {&lt;br /&gt;
					compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
					device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
					reg = &amp;lt;0xc&amp;gt;;&lt;br /&gt;
					ti,rx-internal-delay = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
					ti,tx-internal-delay = &amp;lt;0xa&amp;gt;;&lt;br /&gt;
					ti,fifo-depth = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
					ti,min-output-impedance;&lt;br /&gt;
					ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
					status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
					linux,phandle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
					phandle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
				};&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		sdhci@e0100000 {&lt;br /&gt;
			compatible = &amp;quot;arasan,sdhci-8.9a&amp;quot;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;clk_xin&amp;quot;, &amp;quot;clk_ahb&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x15 0x1 0x20&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x18 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0100000 0x1000&amp;gt;;&lt;br /&gt;
			xlnx,has-cd = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			xlnx,has-power = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			xlnx,has-wp = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		sdhci@e0101000 {&lt;br /&gt;
			compatible = &amp;quot;arasan,sdhci-8.9a&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;clk_xin&amp;quot;, &amp;quot;clk_ahb&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x16 0x1 0x21&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2f 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0101000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		slcr@f8000000 {&lt;br /&gt;
			u-boot,dm-pre-reloc;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-slcr&amp;quot;, &amp;quot;syscon&amp;quot;, &amp;quot;simple-mfd&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8000000 0x1000&amp;gt;;&lt;br /&gt;
			ranges;&lt;br /&gt;
			linux,phandle = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			clkc@100 {&lt;br /&gt;
				u-boot,dm-pre-reloc;&lt;br /&gt;
				#clock-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				compatible = &amp;quot;xlnx,ps7-clkc&amp;quot;;&lt;br /&gt;
				fclk-enable = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
				clock-output-names = &amp;quot;armpll&amp;quot;, &amp;quot;ddrpll&amp;quot;, &amp;quot;iopll&amp;quot;, &amp;quot;cpu_6or4x&amp;quot;, &amp;quot;cpu_3or2x&amp;quot;, &amp;quot;cpu_2x&amp;quot;, &amp;quot;cpu_1x&amp;quot;, &amp;quot;ddr2x&amp;quot;, &amp;quot;ddr3x&amp;quot;, &amp;quot;dci&amp;quot;, &amp;quot;lqspi&amp;quot;, &amp;quot;smc&amp;quot;, &amp;quot;pcap&amp;quot;, &amp;quot;gem0&amp;quot;, &amp;quot;gem1&amp;quot;, &amp;quot;fclk0&amp;quot;, &amp;quot;fclk1&amp;quot;, &amp;quot;fclk2&amp;quot;, &amp;quot;fclk3&amp;quot;, &amp;quot;can0&amp;quot;, &amp;quot;can1&amp;quot;, &amp;quot;sdio0&amp;quot;, &amp;quot;sdio1&amp;quot;, &amp;quot;uart0&amp;quot;, &amp;quot;uart1&amp;quot;, &amp;quot;spi0&amp;quot;, &amp;quot;spi1&amp;quot;, &amp;quot;dma&amp;quot;, &amp;quot;usb0_aper&amp;quot;, &amp;quot;usb1_aper&amp;quot;, &amp;quot;gem0_aper&amp;quot;, &amp;quot;gem1_aper&amp;quot;, &amp;quot;sdio0_aper&amp;quot;, &amp;quot;sdio1_aper&amp;quot;, &amp;quot;spi0_aper&amp;quot;, &amp;quot;spi1_aper&amp;quot;, &amp;quot;can0_aper&amp;quot;, &amp;quot;can1_aper&amp;quot;, &amp;quot;i2c0_aper&amp;quot;, &amp;quot;i2c1_aper&amp;quot;, &amp;quot;uart0_aper&amp;quot;, &amp;quot;uart1_aper&amp;quot;, &amp;quot;gpio_aper&amp;quot;, &amp;quot;lqspi_aper&amp;quot;, &amp;quot;smc_aper&amp;quot;, &amp;quot;swdt&amp;quot;, &amp;quot;dbg_trc&amp;quot;, &amp;quot;dbg_apb&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x100 0x100&amp;gt;;&lt;br /&gt;
				ps-clk-frequency = &amp;lt;0x1fca055&amp;gt;;&lt;br /&gt;
				linux,phandle = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				phandle = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			rstc@200 {&lt;br /&gt;
				compatible = &amp;quot;xlnx,zynq-reset&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x200 0x48&amp;gt;;&lt;br /&gt;
				#reset-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			pinctrl@700 {&lt;br /&gt;
				compatible = &amp;quot;xlnx,pinctrl-zynq&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x700 0x200&amp;gt;;&lt;br /&gt;
				syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		dmac@f8003000 {&lt;br /&gt;
			compatible = &amp;quot;arm,pl330&amp;quot;, &amp;quot;arm,primecell&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8003000 0x1000&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupt-names = &amp;quot;abort&amp;quot;, &amp;quot;dma0&amp;quot;, &amp;quot;dma1&amp;quot;, &amp;quot;dma2&amp;quot;, &amp;quot;dma3&amp;quot;, &amp;quot;dma4&amp;quot;, &amp;quot;dma5&amp;quot;, &amp;quot;dma6&amp;quot;, &amp;quot;dma7&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0xd 0x4 0x0 0xe 0x4 0x0 0xf 0x4 0x0 0x10 0x4 0x0 0x11 0x4 0x0 0x28 0x4 0x0 0x29 0x4 0x0 0x2a 0x4 0x0 0x2b 0x4&amp;gt;;&lt;br /&gt;
			#dma-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#dma-channels = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
			#dma-requests = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1b&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;apb_pclk&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		devcfg@f8007000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-devcfg-1.0&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x8 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8007000 0x100&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xc 0x1 0xf 0x1 0x10 0x1 0x11 0x1 0x12&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;fclk0&amp;quot;, &amp;quot;fclk1&amp;quot;, &amp;quot;fclk2&amp;quot;, &amp;quot;fclk3&amp;quot;;&lt;br /&gt;
			syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			linux,phandle = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		efuse@f800d000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-efuse&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf800d000 0x20&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8f00200 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-global-timer&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f00200 0x20&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x1 0xb 0x301&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8001000 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0xa 0x4 0x0 0xb 0x4 0x0 0xc 0x4&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,ttc&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x6&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8001000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8002000 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x25 0x4 0x0 0x26 0x4 0x0 0x27 0x4&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,ttc&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x6&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8002000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8f00600 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x1 0xd 0x301&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-twd-timer&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f00600 0x20&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		usb@e0002000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-usb-2.20a&amp;quot;, &amp;quot;chipidea,usb2&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1c&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x15 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0002000 0x1000&amp;gt;;&lt;br /&gt;
			phy_type = &amp;quot;ulpi&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		usb@e0003000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-usb-2.20a&amp;quot;, &amp;quot;chipidea,usb2&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1d&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2c 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0003000 0x1000&amp;gt;;&lt;br /&gt;
			phy_type = &amp;quot;ulpi&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		watchdog@f8005000 {&lt;br /&gt;
			clocks = &amp;lt;0x1 0x2d&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,wdt-r1p2&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x9 0x1&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8005000 0x1000&amp;gt;;&lt;br /&gt;
			timeout-sec = &amp;lt;0xa&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	chosen {&lt;br /&gt;
		bootargs = &amp;quot;console=ttyPS0,115200 earlyprintk&amp;quot;;&lt;br /&gt;
		stdout-path = &amp;quot;serial0:115200n8&amp;quot;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	aliases {&lt;br /&gt;
		ethernet0 = &amp;quot;/amba/ethernet@e000c000&amp;quot;;&lt;br /&gt;
		serial0 = &amp;quot;/amba/serial@e0000000&amp;quot;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	memory {&lt;br /&gt;
		device_type = &amp;quot;memory&amp;quot;;&lt;br /&gt;
		reg = &amp;lt;0x0 0x10000000&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
{{Конец скрытого блока}}&lt;br /&gt;
&lt;br /&gt;
=== Single On-board eth ===&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth0(с mdio) и выключен eth1.&lt;br /&gt;
&lt;br /&gt;
'''Работает гигабит через type-c! Работает hot plug. Успех.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@0 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dual eth ===&lt;br /&gt;
&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Dual-phys-on-MDIO-EMIO/td-p/737716 интересная статья о дуал eth]&lt;br /&gt;
&lt;br /&gt;
Попытка поднять два физика. '''Пока не работает'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    local-mac-address = [00 0a 35 00 00 00];&lt;br /&gt;
    enet-reset = &amp;lt;&amp;amp;gpio0 47 0&amp;gt;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@0 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x8&amp;gt;; &lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0xa&amp;gt;; &lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;; &lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
        phy1: phy@12 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;12&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x8&amp;gt;; &lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0xa&amp;gt;; &lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;; &lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gem1{&lt;br /&gt;
    local-mac-address = [00 0a 35 00 00 01];&lt;br /&gt;
    enet-reset = &amp;lt;&amp;amp;gpio0 47 0&amp;gt;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy1&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Oryx ===&lt;br /&gt;
&lt;br /&gt;
Итоговый system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
Меняем номера uart, чтобы системным был ttyPS1, а пользовательским ttyPS0&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
/ {&lt;br /&gt;
    aliases {&lt;br /&gt;
        serial0 = &amp;amp;uart0;&lt;br /&gt;
        serial1 = &amp;amp;uart1;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@1 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
            rxc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            rxdv-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            txc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            txen-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;1&amp;gt;;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/ {&lt;br /&gt;
    chosen {&lt;br /&gt;
            bootargs = &amp;quot;console=ttyPS1,115200 earlyprintk uio_pdrv_genirq.of_id=generic-uio&amp;quot;;&lt;br /&gt;
            stdout-path = &amp;quot;serial1:115200n8&amp;quot;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    hififo: hififo@40000000 {&lt;br /&gt;
            compatible = &amp;quot;generic-uio&amp;quot;;&lt;br /&gt;
            interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
            interrupts = &amp;lt;0 29 1&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;0x40000000 0x1000 0x18000000 0x8000000&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;uart0{&lt;br /&gt;
    port-number = &amp;lt;0&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;uart1{&lt;br /&gt;
    port-number = &amp;lt;1&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth0(с mdio) и выключен eth1.&lt;br /&gt;
Pullup пока что все включены&lt;br /&gt;
&lt;br /&gt;
[https://github.com/Xilinx/u-boot-xlnx/blob/master/doc/device-tree-bindings/net/micrel-ksz90x1.txt статья в помощь]&lt;br /&gt;
&lt;br /&gt;
'''Работает'''&lt;br /&gt;
&lt;br /&gt;
На новых платах(с отпаянными линиями линиями eth):&lt;br /&gt;
* на полноценных проводах с ходу&lt;br /&gt;
* на обкусанных проводах только если выставить 10 в ethtool&lt;br /&gt;
&lt;br /&gt;
На старых платах:&lt;br /&gt;
&lt;br /&gt;
* на полноценных проводах только если выставить 100 в ethtool&lt;br /&gt;
* на обкусанных проводах только если выставить 10 в ethtool&lt;br /&gt;
&lt;br /&gt;
Везде работает так:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ethtool -s eth0 speed 10 duplex full autoneg on&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Спидометр показывает 2,5МБ/с, т.е. 20Мбит/с!&lt;br /&gt;
&lt;br /&gt;
Можно в custom_itit.sh прописать:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ifdown eth0&lt;br /&gt;
ethtool -s eth0 speed 10 duplex full autoneg on&lt;br /&gt;
ifup eth0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@1 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
            rxc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            rxdv-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            txc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            txen-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;1&amp;gt;;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В принципе, работает сеть на новой плате с нормальным кабелем без модификации devicetree. Остальные комбинации плат-кабелей надо проверять&lt;br /&gt;
&lt;br /&gt;
== i2c ==&lt;br /&gt;
&lt;br /&gt;
В rootfs включаем&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages -&amp;gt;&lt;br /&gt;
     base -&amp;gt;&lt;br /&gt;
          i2c-tools -&amp;gt;&lt;br /&gt;
               [*] i2c-tools&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для поиска устройств можно написать&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i2cdetect -y -r 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842160/Cadence+I2C+Driver Статья] по i2c и RTC&lt;br /&gt;
&lt;br /&gt;
== QSPI Flash ==&lt;br /&gt;
&lt;br /&gt;
для работы по флешь памяти как в ките (S25FL128S) - оставляем в дев.три родные compatible = &amp;quot;n25q512a&amp;quot;,&amp;quot;micron,m25p80&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
== SWDT System Watchdog Timer==&lt;br /&gt;
&lt;br /&gt;
* Модифицируем Uenv для настройки wawtchdog через uboot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
bootcmd=run swdt_set &amp;amp;&amp;amp; run fpga_config &amp;amp;&amp;amp; run boot_image &amp;amp;&amp;amp; run boot_dtb &amp;amp;&amp;amp; bootm 0xA000000 0xA000000 0x9000000&lt;br /&gt;
swdt_set=run swdt_ccr &amp;amp;&amp;amp; run swdt_rst &amp;amp;&amp;amp; run swdt_zmr&lt;br /&gt;
swdt_ccr=mw 0xf8005004 0x92063b&lt;br /&gt;
swdt_rst=mw 0xf8005008 0x1999&lt;br /&gt;
swdt_zmr=mw 0xf8005000 0xabc043&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Создаем скрипт для сброса watchdog:&lt;br /&gt;
&lt;br /&gt;
swdt_rst.sh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
watch -n 5 'devmem 0xf8005008 32 0x1999' &amp;amp;&amp;gt;/dev/null &amp;amp;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Добавляем вызов скрипта в автозагрузку&lt;br /&gt;
&lt;br /&gt;
PS Посмотреть можно в проекте bin/Clonicus, коммит ffc437e435d3b5c207bb1186a9561fd06a46d89f&lt;br /&gt;
&lt;br /&gt;
== RTC ==&lt;br /&gt;
&lt;br /&gt;
* Включаем в ядро подходящий драйвер&lt;br /&gt;
&lt;br /&gt;
* Модифицируем device-tree&lt;br /&gt;
&lt;br /&gt;
Вставляем в девайс три:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    i2c0: i2c@e0004000 {&lt;br /&gt;
        clock-frequency = &amp;lt;0xC350&amp;gt;;&lt;br /&gt;
        rtc@51 {&lt;br /&gt;
                compatible = &amp;quot;nxp,pcf85363&amp;quot;;&lt;br /&gt;
                reg = &amp;lt;0x51&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
    i2c1: i2c@e0005000 {&lt;br /&gt;
        clock-frequency = &amp;lt;0xC350&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Будет выглядеть так:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i2c@e0004000 {&lt;br /&gt;
    compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    clocks = &amp;lt;0x1 0x26&amp;gt;;&lt;br /&gt;
    interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
    interrupts = &amp;lt;0x0 0x19 0x4&amp;gt;;&lt;br /&gt;
    reg = &amp;lt;0xe0004000 0x1000&amp;gt;;&lt;br /&gt;
    #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
    #size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
    clock-frequency = &amp;lt;0xc350&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    rtc@51 {&lt;br /&gt;
        compatible = &amp;quot;nxp,pcf85363&amp;quot;;&lt;br /&gt;
        reg = &amp;lt;0x51&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
i2c@e0005000 {&lt;br /&gt;
    compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    clocks = &amp;lt;0x1 0x27&amp;gt;;&lt;br /&gt;
    interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
    interrupts = &amp;lt;0x0 0x30 0x4&amp;gt;;&lt;br /&gt;
    reg = &amp;lt;0xe0005000 0x1000&amp;gt;;&lt;br /&gt;
    #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
    #size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
    clock-frequency = &amp;lt;0xc350&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если готового драйвера нет:&lt;br /&gt;
&lt;br /&gt;
UG1144 pg.54&lt;br /&gt;
&lt;br /&gt;
Создаем новый модуль&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-create -t modules --name &amp;lt;name_module&amp;gt; --enable&lt;br /&gt;
petalinux-create -t modules --name rtc-pcf85363 --enable&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим исходный код в project-spec/meta-user/recipes-modules/rtc-pcf85363/files&lt;br /&gt;
&lt;br /&gt;
Исправленный драйвер лежит в git Clonicus\linux\&lt;br /&gt;
&lt;br /&gt;
Для удаления модуля:&lt;br /&gt;
&lt;br /&gt;
* удаляем папку из project-spec/meta-user/recipes-modules&lt;br /&gt;
&lt;br /&gt;
* В файле project-spec/meta-user/recipes-core/images/petalinux-image.bbappend удаляем соответствующую строку&lt;br /&gt;
&lt;br /&gt;
* переоткрыть petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
Пробуем собрать модуль&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build -c &amp;lt;name_module&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если ОК, собираем (собирать модуль необязательно, petalinux-build его соберет)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И перепаковываем BOOT.bin&lt;br /&gt;
&lt;br /&gt;
Пересобираем deveice-tree с указанием нового драйвера (petalinux-build соберет сам deveice-tree)&lt;br /&gt;
&lt;br /&gt;
просмотр модулей&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsmod&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
загрузить драйвер можно&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
insmod /lib/modules/4.9.0-xilinx-v2017.4/extra/rtc-pcf85363.ko&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
или&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe rtc-pcf85363&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Если все ок и в девайс три прописан правильный драйвер для устройства, то модуль будет загружен сам'''&lt;br /&gt;
&lt;br /&gt;
Прошиваем .bit (для клоникуса нужен бит для работы PL-i2c). После этого можно пользоваться RTC&lt;br /&gt;
&lt;br /&gt;
Чтение времени из rtc если этот rtc не дефолтный (у нас rtc2)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -r -f /dev/rtc2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Синхронизация rtc по системному времени&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -w -f /dev/rtc2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим custom_init.sh для изменения default-rtc на наше устройство&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm /dev/rtc&lt;br /&gt;
ln -s /dev/rtc2 /dev/rtc&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Установка системного времени&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
date --set &amp;quot;2013-7-31 09:30&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запись системного времени в RTC&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -w&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запись времени RTC в системное время&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -s&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Получить время с интеренета&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rdate -s &amp;lt;IP address of time server&amp;gt;&lt;br /&gt;
rdate -s 132.163.96.5 (example)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При перезагрузке &amp;quot;reboot&amp;quot; система автоматически запишет системное время в RTC&lt;br /&gt;
&lt;br /&gt;
== FPGA CONFIG from Uboot ==&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы прошить PL из uboot используем команду:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
fpga loadb 0 &amp;lt;ddr_file_addr&amp;gt; &amp;lt;file_size&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
либо скриптами:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
load_bit=fatload mmc 0 0x100000 clonicus.bit // читаем файл в ddr&lt;br /&gt;
pl_load=fpga loadb 0 0x100000 0x1400000 // прошиваем PL&lt;br /&gt;
fpga_config=run load_bit &amp;amp;&amp;amp; run pl_loadipaddr // вызов самих скриптов&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
0x10_0000 - начальный адрес ddr&lt;br /&gt;
&lt;br /&gt;
0x1_400_000 - размер в байтах для 20МБайт - указываем размер битника с запасом. Теоретически может так не работать, но работает&lt;br /&gt;
&lt;br /&gt;
== ETH over TTY==&lt;br /&gt;
&lt;br /&gt;
В ядре включаем: slip, Universal TUN/TAP&lt;br /&gt;
&lt;br /&gt;
В rootfs включаем net-tools&lt;br /&gt;
&lt;br /&gt;
Включаем iptables для перемршрутизации между подсетями и для него:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[*] Networking support  ---&amp;gt;                                          [CONFIG_NET]&lt;br /&gt;
      Networking Options  ---&amp;gt;&lt;br /&gt;
        [*] Network packet filtering framework (Netfilter) ---&amp;gt;       [CONFIG_NETFILTER]&lt;br /&gt;
          [*] Advanced netfilter configuration                        [CONFIG_NETFILTER_ADVANCED]&lt;br /&gt;
          Core Netfilter Configuration ---&amp;gt;&lt;br /&gt;
            &amp;lt;*/M&amp;gt; Netfilter connection tracking support               [CONFIG_NF_CONNTRACK]&lt;br /&gt;
            &amp;lt;*/M&amp;gt; Netfilter Xtables support (required for ip_tables)  [CONFIG_NETFILTER_XTABLES]&lt;br /&gt;
            &amp;lt;*/M&amp;gt; LOG target support                                  [CONFIG_NETFILTER_XT_TARGET_LOG]&lt;br /&gt;
          IP: Netfilter Configuration ---&amp;gt;&lt;br /&gt;
            &amp;lt;*/M&amp;gt; IP tables support (required for filtering/masq/NAT) [CONFIG_IP_NF_IPTABLES]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PC1:&lt;br /&gt;
&lt;br /&gt;
slattach -L -s 115200 -p slip /dev/ttyPS1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
ifconfig sl0 192.168.1.1/24 up&lt;br /&gt;
&lt;br /&gt;
route add default gw 192.168.1.1 sl0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PC2:&lt;br /&gt;
&lt;br /&gt;
slattach -L -s 115200 -p slip /dev/ttyPS1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
ifconfig sl0 192.168.1.2/24 up&lt;br /&gt;
&lt;br /&gt;
route add default gw 192.168.1.1 sl0&lt;br /&gt;
&lt;br /&gt;
== UART_PL ==&lt;br /&gt;
&lt;br /&gt;
Включаем в настройках ядра поддержку uart_lite, выставляем правильное максимальное число уартов&lt;br /&gt;
&lt;br /&gt;
Модифицируем system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
Обращаем внимание на нумерацию serial, axi_uartlite, она должна не повторяться. То же самое с interrupts &lt;br /&gt;
Указываем верный физический адрес на шине и диапазон адресов в &amp;lt;reg&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
/ {&lt;br /&gt;
    aliases {&lt;br /&gt;
            serial2 = &amp;amp;axi_uartlite_0;&lt;br /&gt;
            serial3 = &amp;amp;axi_uartlite_1;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
/ {&lt;br /&gt;
    amba_pl {&lt;br /&gt;
        #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
        compatible = &amp;quot;simple-bus&amp;quot;;&lt;br /&gt;
        ranges;&lt;br /&gt;
        &lt;br /&gt;
        axi_uartlite_0: serial@80000008 {&lt;br /&gt;
                clock-names = &amp;quot;ref_clk&amp;quot;;&lt;br /&gt;
                clocks = &amp;lt;&amp;amp;clkc 0&amp;gt;;&lt;br /&gt;
                compatible = &amp;quot;xlnx,xps-uartlite-1.00.a&amp;quot;;&lt;br /&gt;
                current-speed = &amp;lt;115200&amp;gt;;&lt;br /&gt;
                device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
                interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                interrupts = &amp;lt;0 30 1&amp;gt;;&lt;br /&gt;
                port-number = &amp;lt;3&amp;gt;;&lt;br /&gt;
                reg = &amp;lt;0x80000008 0x10&amp;gt;;&lt;br /&gt;
                xlnx,baudrate = &amp;lt;0x1c200&amp;gt;;&lt;br /&gt;
                xlnx,data-bits = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
                xlnx,odd-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
                xlnx,s-axi-aclk-freq-hz-d = &amp;quot;100.0&amp;quot;;&lt;br /&gt;
                xlnx,use-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
        axi_uartlite_1: serial@8000001C {&lt;br /&gt;
                clock-names = &amp;quot;ref_clk&amp;quot;;&lt;br /&gt;
                clocks = &amp;lt;&amp;amp;clkc 0&amp;gt;;&lt;br /&gt;
                compatible = &amp;quot;xlnx,xps-uartlite-1.00.a&amp;quot;;&lt;br /&gt;
                current-speed = &amp;lt;115200&amp;gt;;&lt;br /&gt;
                device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
                interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                interrupts = &amp;lt;0 31 1&amp;gt;;&lt;br /&gt;
                port-number = &amp;lt;4&amp;gt;;&lt;br /&gt;
                reg = &amp;lt;0x8000001C 0x10&amp;gt;;&lt;br /&gt;
                xlnx,baudrate = &amp;lt;0x1c200&amp;gt;;&lt;br /&gt;
                xlnx,data-bits = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
                xlnx,odd-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
                xlnx,s-axi-aclk-freq-hz-d = &amp;quot;100.0&amp;quot;;&lt;br /&gt;
                xlnx,use-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если ПЛИС не прошита - будет кернел паник&lt;br /&gt;
&lt;br /&gt;
== IRQ ==&lt;br /&gt;
&lt;br /&gt;
Для поддержки irq добавляем в device-tree&lt;br /&gt;
&lt;br /&gt;
'''Важно - мы перетираем bootargs!'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/ {&lt;br /&gt;
    chosen {&lt;br /&gt;
            bootargs = &amp;quot;console=ttyPS0,115200 earlyprintk uio_pdrv_genirq.of_id=generic-uio&amp;quot;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    hififo: hififo@40000000 {&lt;br /&gt;
                    compatible = &amp;quot;generic-uio&amp;quot;;&lt;br /&gt;
                    interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                    interrupts = &amp;lt;0 29 1&amp;gt;;&lt;br /&gt;
                    reg = &amp;lt;0x40000000 0x1000 0x18000000 0x8000000&amp;gt;;&lt;br /&gt;
            };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
&lt;br /&gt;
Запустил на Z706&lt;br /&gt;
&lt;br /&gt;
[http://www.wiki.xilinx.com/Zynq+Linux+USB+Device+Driver во-первых]&lt;br /&gt;
[http://zedboard.org/content/using-petalinux-configure-zedboard%EF%BC%8C-usb-otg-can-not-work во-вторых]&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-2016-3-zynq-7010-USB-not-working/td-p/737696 в-третьих]&lt;br /&gt;
&lt;br /&gt;
В дефолтных настройках ядра petalinux_2018.1 все было включено&lt;br /&gt;
&lt;br /&gt;
включаем ресет на MIO7 pullup disabled&lt;br /&gt;
&lt;br /&gt;
все ноги интерфейса ulpi pullup disabled&lt;br /&gt;
&lt;br /&gt;
Содержимое system-user.dtsi&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
	/{&lt;br /&gt;
&lt;br /&gt;
    usb_phy0:phy0 {&lt;br /&gt;
&lt;br /&gt;
        compatible=&amp;quot;ulpi-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        #phy-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       reg = &amp;lt;0xe0002000 0x1000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       view-port=&amp;lt;0x170&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       drv-vbus;&lt;br /&gt;
&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&amp;amp;usb0 {&lt;br /&gt;
&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        dr_mode = &amp;quot;host&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        usb-phy = &amp;lt;&amp;amp;usb_phy0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
} ;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== USB-ETHERNET ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers -&amp;gt;&lt;br /&gt;
     USB support -&amp;gt;&lt;br /&gt;
          [*] USB Modem (CDC ACM)&lt;br /&gt;
          USB Gadget Support -&amp;gt;&lt;br /&gt;
               [*] Ethernet Control Model (all)&lt;br /&gt;
               [*] RNDIS&lt;br /&gt;
               [*] Ethernet Emulation Model&lt;br /&gt;
               [*] CDC Composite Device (Ethernet and ACM)&lt;br /&gt;
               [*] USB Gadget Drivers (Ethernet gadget...)&lt;br /&gt;
     Network device support -&amp;gt;&lt;br /&gt;
          USB Network Adapters -&amp;gt;&lt;br /&gt;
               [*] Realtek RTL8152/RTL8153&lt;br /&gt;
               [*] Multi-purpose USB Networking Framework&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WiFi Dongle ==&lt;br /&gt;
&lt;br /&gt;
[https://forum.trenz-electronic.de/index.php?topic=747.0 раз]&lt;br /&gt;
[https://github.com/jinchenglee/zybo_linux_setup_doc два]&lt;br /&gt;
[http://billauer.co.il/blog/2014/06/linux-realtek-hostapd/ три]&lt;br /&gt;
&lt;br /&gt;
Творим:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Networking support -&amp;gt;&lt;br /&gt;
     Wireless -&amp;gt;&lt;br /&gt;
          [*] cfg80211&lt;br /&gt;
          [*] Generic IEEE 802.11 ... (mac80211)&lt;br /&gt;
Device Drivers -&amp;gt;&lt;br /&gt;
     Network device support -&amp;gt;&lt;br /&gt;
          Wireless LAN -&amp;gt;&lt;br /&gt;
               Realtek rtlwifi family of devices -&amp;gt;&lt;br /&gt;
                    [*] Realtek ..../RTL8188CE Wireless Network Adapter ???&lt;br /&gt;
                    [*] Realtek RTL8188EE Wireless Network Adapter ???&lt;br /&gt;
                    [*] Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter&lt;br /&gt;
     Staging drivers -&amp;gt;&lt;br /&gt;
          [*] Realtek RTL8188EU wireless LAN MIC driver&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
rootfs&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem packages -&amp;gt;&lt;br /&gt;
     network -&amp;gt;&lt;br /&gt;
          wpa-supplicant -&amp;gt;&lt;br /&gt;
               [*] wpa-supplicant&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/lwfinger/rtl8188eu/blob/master/rtl8188eufw.bin качаем файл]&lt;br /&gt;
&lt;br /&gt;
Модификаци инит-скрипта&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp /run/media/mmcblk0p1/wpa_supplicant.conf /etc/&lt;br /&gt;
&lt;br /&gt;
mkdir /lib/firmware/&lt;br /&gt;
mkdir /lib/firmware/rtlwifi/&lt;br /&gt;
cp /run/media/mmcblk0p1/rtl8188eufw.bin /lib/firmware/rtlwifi/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WiFi ESP ==&lt;br /&gt;
&lt;br /&gt;
[http://www.wiki.xilinx.com/Zynq+SDIO+Wifi Xilinx SDIP WiFi]&lt;br /&gt;
&lt;br /&gt;
[http://zedboard.org/content/sdio-wifi-driver-ar6103-problem Zedboard раз]&lt;br /&gt;
&lt;br /&gt;
[https://stackoverflow.com/questions/32129689/how-to-bind-sdio1-with-wi-fi-linux два]&lt;br /&gt;
&lt;br /&gt;
[http://picozed.org/content/steps-get-wlink8-working-using-petalinux-picozed picozed три]&lt;br /&gt;
&lt;br /&gt;
[http://zedboard.org/content/adding-wi-fi-and-bluetooth-connectivity-zedboard-using-murata-1dx-pmod zedboard четыре]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Оживление 2-го ядра ==&lt;br /&gt;
&lt;br /&gt;
* Находим /home/ivan/clonicus_1.2.3/build/tmp/work-shared/plnx_arm/kernel-source/arch/arm/mach-zynq/efuse.c&lt;br /&gt;
* В функции zynq_efuse_cpu_state делаем сразу ретурн тру&lt;br /&gt;
* Че-нибудь меняем в настройках ядра для пересборки&lt;br /&gt;
* Выполняем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build -c kernel -x compile -f&lt;br /&gt;
petalinux-build -c kernel -x deploy -f&lt;br /&gt;
petalinux-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Забираем image.ub&lt;br /&gt;
&lt;br /&gt;
'''ИЛИ'''&lt;br /&gt;
&lt;br /&gt;
Правим device-tree, заменяем адрес efuse на 0xf800cff0&lt;br /&gt;
&lt;br /&gt;
== webserver == &lt;br /&gt;
&lt;br /&gt;
* [https://github.com/emlid/ReachView Репозиторий emlid ReachView] (bnd на py/Flask, fnd на html/Ajax/js/Bootstrap)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Backend:'''&lt;br /&gt;
&lt;br /&gt;
* [http://svenand.blogdrives.com/archive/195.html#.XPTYt4gzaUk Источник по busybox-httpd]&lt;br /&gt;
&lt;br /&gt;
* [https://www.afternerd.com/blog/python-http-server/ Гайд по python server]&lt;br /&gt;
&lt;br /&gt;
* [https://ru.wikibooks.org/wiki/Flask Викиучебник по Flask]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/193242/ ХаброГайд по python/Flask]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Frontend:'''&lt;br /&gt;
&lt;br /&gt;
* [https://unminify.com/ unminify CSS]&lt;br /&gt;
&lt;br /&gt;
* [https://getbootstrap.com/docs/4.3/getting-started/introduction/ Bootstrap EN getting started]&lt;br /&gt;
&lt;br /&gt;
* [https://bootstrap-4.ru/ Bootstrap RU]&lt;br /&gt;
&lt;br /&gt;
* [http://htmlbook.ru/samhtml/tekst/spetssimvoly Справочник по операторам и тегам HTML/CSS]&lt;br /&gt;
&lt;br /&gt;
* [https://www.w3schools.com/howto/default.asp Сборник шаблонов CSS W3schools]&lt;br /&gt;
&lt;br /&gt;
* [https://www.w3schools.com/w3css/w3css_tabulators.asp Анимированный сайдбар/табы]&lt;br /&gt;
&lt;br /&gt;
* [https://css-tricks.com/ CSS Tricks]&lt;br /&gt;
&lt;br /&gt;
* [https://www.cssmatic.com/ Онлайн тени/границы/градиент блоков]&lt;br /&gt;
&lt;br /&gt;
* [https://internetingishard.com/html-and-css/semantic-html/ Semantic HTML grid layout]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/202408/ Хаброгайд(ч1) по верстке]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/211032/ ХаброГайд(ч2) по Bootstrap]&lt;br /&gt;
&lt;br /&gt;
* [https://fontawesome.com/icons?d=gallery Fontawesome ICONS open lib]&lt;br /&gt;
&lt;br /&gt;
:* [https://htmlacademy.ru/courses/43/run/1 Нормальный онлайн HTML/CSS/JS editor]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== busybox httpd ===&lt;br /&gt;
В petalinux многие пакеты скукожены до их минимальных вариантов и встроены в общий пакет busybox. &lt;br /&gt;
В busybox есть также и вебсервер busybox-httpd.&lt;br /&gt;
Для использования нужно на этапе настройки файловой системы его включить:&lt;br /&gt;
&lt;br /&gt;
 $ petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
Конфиг: &lt;br /&gt;
 base -&amp;gt;&lt;br /&gt;
     busybox -&amp;gt;&lt;br /&gt;
          [*] busybox&lt;br /&gt;
          [*] busybox-httpd&lt;br /&gt;
          [ ] busybox-hwclock&lt;br /&gt;
          [*] busybox-inetd&lt;br /&gt;
          [*] busybox-mdev&lt;br /&gt;
          [ ] busybox-syslog &lt;br /&gt;
          [*] busybox-udhcpc &lt;br /&gt;
          [ ] busybox-udhcpd &lt;br /&gt;
&lt;br /&gt;
Сам httpd будет в '''/usr/sbin'''.&lt;br /&gt;
Рабочая папка по умолчанию в '''/srv/www/'''. Если в нее кидать файлы, то именно из нее будет отображаться контент в браузере. Папку можно изменить, перезапустив httpd с ключом -h &amp;lt;workdir&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Порт по умолчанию 80. Работает, как демон в /etc/init.d/, вкл-выкл оттуда же.&lt;br /&gt;
&lt;br /&gt;
Если положить в /srv/www/ файл index.html с неким кодом, то в браузере отобразится вебморда. Картинки работают по ссылкам.&lt;br /&gt;
&lt;br /&gt;
'''index.html'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Transitional//EN&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;clonicus'112 webserver&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h3&amp;gt;Hello, World!&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Web server is now up!&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;https://i.redd.it/oagz5eobkkt11.jpg&amp;quot; width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;http://www.srns.ru&amp;quot;&amp;gt;For more information see SRNS.ru&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== python в petalinux ===&lt;br /&gt;
В petalinux 2017.4 есть 2 питона - 2.7 и 3.5.&lt;br /&gt;
&lt;br /&gt;
 $ petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
'''python2.7'''&lt;br /&gt;
  Filesystem Packages-&amp;gt;&lt;br /&gt;
     devel-&amp;gt;&lt;br /&gt;
         python-&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''python3.5'''&lt;br /&gt;
  Filesystem Packages-&amp;gt;&lt;br /&gt;
     misc-&amp;gt;&lt;br /&gt;
         python3-*&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модуль runpy.py для запуска команд вида 'python -m &amp;lt;module&amp;gt;' находится в python -&amp;gt; python-misc. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SimpleHTTPServer.py ===&lt;br /&gt;
Для первого теста поднимем встроенный в python2.7 минисервер SimpleHTTPServer.py в /usr/lib/python2.7. &lt;br /&gt;
&lt;br /&gt;
Для его запуска напишем скрипт&lt;br /&gt;
&lt;br /&gt;
'''webserver.py''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import SimpleHTTPServer &lt;br /&gt;
import SocketServer &lt;br /&gt;
 &lt;br /&gt;
PORT = 80 &lt;br /&gt;
 &lt;br /&gt;
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler &lt;br /&gt;
 &lt;br /&gt;
httpd = SocketServer.TCPServer((&amp;quot;&amp;quot;, PORT), Handler) &lt;br /&gt;
 &lt;br /&gt;
print &amp;quot;serving at port&amp;quot;, PORT &lt;br /&gt;
httpd.serve_forever()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 $ python webserver.py &lt;br /&gt;
&lt;br /&gt;
При наличии в папке со скриптом файла index.html сервер поднимется автоматически.&lt;br /&gt;
&lt;br /&gt;
=== Добавление слоев в сборку ===&lt;br /&gt;
&lt;br /&gt;
[https://www.srns.ru/wiki/Blog:DneprovD/18.07.2019_Yocto_layers Переехало в статью]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:HOWTO]]&lt;br /&gt;
[[Категория:Oryx]]&lt;br /&gt;
[[Категория:Zynq]]&lt;br /&gt;
[[Категория:EmbeddedLinux]]&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
&lt;br /&gt;
{{wl-publish: 2018-05-16 10:06:30 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/20.05.2021_Nomadicus_%D0%9A%D0%BE%D1%81%D1%8F%D0%BA%D0%B8</id>
		<title>Blog:Lipa/20.05.2021 Nomadicus Косяки</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/20.05.2021_Nomadicus_%D0%9A%D0%BE%D1%81%D1%8F%D0%BA%D0%B8"/>
				<updated>2021-05-20T07:20:06Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* Исправить в Nomadicus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nomadicus Косяки&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма2}}&lt;br /&gt;
&lt;br /&gt;
== Исправить в Nomadicus ==&lt;br /&gt;
&lt;br /&gt;
* Разрыв плейнов на 2-м слое под линиями аналоговых сигналов из номады в АЦП. Плейны DGND и Vcc2V5&lt;br /&gt;
&lt;br /&gt;
[[File:Nomadicus_bug_1.png|400px]]&lt;br /&gt;
&lt;br /&gt;
{{wl-publish: 2021-05-20 11:17:59 +0400 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Nomadicus_bug_1.png</id>
		<title>Файл:Nomadicus bug 1.png</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Nomadicus_bug_1.png"/>
				<updated>2021-05-20T07:19:55Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MsUpload&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/20.05.2021_Nomadicus_%D0%9A%D0%BE%D1%81%D1%8F%D0%BA%D0%B8</id>
		<title>Blog:Lipa/20.05.2021 Nomadicus Косяки</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/20.05.2021_Nomadicus_%D0%9A%D0%BE%D1%81%D1%8F%D0%BA%D0%B8"/>
				<updated>2021-05-20T07:17:59Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: Новая страница: «&amp;lt;summary [ hidden ] &amp;gt;  Nomadicus Косяки  &amp;lt;/summary&amp;gt;  {{Форма2}}  == Исправить в Nomadicus ==  * Разрыв плейнов на 2-м сло…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nomadicus Косяки&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма2}}&lt;br /&gt;
&lt;br /&gt;
== Исправить в Nomadicus ==&lt;br /&gt;
&lt;br /&gt;
* Разрыв плейнов на 2-м слое под линиями аналоговых сигналов из номады в АЦП. Плейны DGND и Vcc2V5&lt;br /&gt;
{{wl-publish: 2021-05-20 11:17:59 +0400 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/18.12.2018_ZCU104</id>
		<title>Blog:Lipa/18.12.2018 ZCU104</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/18.12.2018_ZCU104"/>
				<updated>2021-04-29T07:47:45Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* Настраиваем контроллеры питания */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Ultrascale.png|400px]]&amp;lt;/center&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Сборка PetaLinux для ZCU104 zynq-ultrascale+&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма3}}&lt;br /&gt;
&lt;br /&gt;
==Petalinux==&lt;br /&gt;
&lt;br /&gt;
Создать проект petalinux&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-create --type project --template zynqMP --name &amp;lt;PROJECT&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для работы eth-phy:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem3{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@12 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;12&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== patch dev-tree ==&lt;br /&gt;
[https://www.xilinx.com/support/answers/73086.html ссылка на xilinx раз]&lt;br /&gt;
&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-Building-device-tree-amba-pl-not-found/td-p/1078982 ссылка на xilinx два]&lt;br /&gt;
&lt;br /&gt;
'''device-tree.bbappend:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
FILESEXTRAPATHS_prepend := &amp;quot;${THISDIR}/files:&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
SRC_URI += &amp;quot;file://system-user.dtsi&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
SRC_URI_append += &amp;quot; file://0001_disable_gen_axi_interface.patch&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Кладем патч-файл рядом с system-user.dtsi, правим device-tree.bbappend&lt;br /&gt;
&lt;br /&gt;
== всякое ==&lt;br /&gt;
&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-2019-1-fsbl-build-error-fatal-error-xiicps-h-No-such/td-p/1027805 Включаем I2C]&lt;br /&gt;
&lt;br /&gt;
== Настраиваем контроллеры питания ==&lt;br /&gt;
&lt;br /&gt;
fsbl шлет по i2c следущее:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
write to 0x44 ack data: 0x00 0x03      # выбрали канал D&lt;br /&gt;
write to 0x44 ack data: 0x01 0x80      # сказали ему ON&lt;br /&gt;
write to 0x44 ack data: 0x20 0x14      # VOUT 0.2441mV step&lt;br /&gt;
write to 0x44 ack data: 0x24 0x00 0x80 # MAX VOUT = 8V&lt;br /&gt;
write to 0x44 ack data: 0x21 0x33 0x13 # VOUT = 1.2V&lt;br /&gt;
write to 0x44 ack data: 0x42 0xCD 0x15 # VOUT_XXX_LIMIT&lt;br /&gt;
write to 0x44 ack data: 0x40 0x66 0x16 # VOUT_XXX_LIMIT&lt;br /&gt;
write to 0x44 ack data: 0x43 0xCD 0x10 # VOUT_XXX_LIMIT&lt;br /&gt;
write to 0x44 ack data: 0x44 0x00 0x10 # VOUT_XXX_LIMIT&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:HOWTO]]&lt;br /&gt;
[[Категория:Zynq]]&lt;br /&gt;
[[Категория:EmbeddedLinux]]&lt;br /&gt;
{{wl-publish: 2018-12-18 15:10:14 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/18.12.2018_ZCU104</id>
		<title>Blog:Lipa/18.12.2018 ZCU104</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/18.12.2018_ZCU104"/>
				<updated>2021-04-29T07:43:29Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* Настраиваем контроллеры питания */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Ultrascale.png|400px]]&amp;lt;/center&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Сборка PetaLinux для ZCU104 zynq-ultrascale+&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма3}}&lt;br /&gt;
&lt;br /&gt;
==Petalinux==&lt;br /&gt;
&lt;br /&gt;
Создать проект petalinux&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-create --type project --template zynqMP --name &amp;lt;PROJECT&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для работы eth-phy:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem3{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@12 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;12&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== patch dev-tree ==&lt;br /&gt;
[https://www.xilinx.com/support/answers/73086.html ссылка на xilinx раз]&lt;br /&gt;
&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-Building-device-tree-amba-pl-not-found/td-p/1078982 ссылка на xilinx два]&lt;br /&gt;
&lt;br /&gt;
'''device-tree.bbappend:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
FILESEXTRAPATHS_prepend := &amp;quot;${THISDIR}/files:&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
SRC_URI += &amp;quot;file://system-user.dtsi&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
SRC_URI_append += &amp;quot; file://0001_disable_gen_axi_interface.patch&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Кладем патч-файл рядом с system-user.dtsi, правим device-tree.bbappend&lt;br /&gt;
&lt;br /&gt;
== всякое ==&lt;br /&gt;
&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-2019-1-fsbl-build-error-fatal-error-xiicps-h-No-such/td-p/1027805 Включаем I2C]&lt;br /&gt;
&lt;br /&gt;
== Настраиваем контроллеры питания ==&lt;br /&gt;
&lt;br /&gt;
fsbl шлет по i2c следущее:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
write to 0x44 ack data: 0x00 0x03      # выбрали канал D&lt;br /&gt;
write to 0x44 ack data: 0x01 0x80      # сказали ему ON&lt;br /&gt;
write to 0x44 ack data: 0x20 0x14      # POWER_GOOD_OFF&lt;br /&gt;
write to 0x44 ack data: 0x24 0x00 0x80 # VOUT 0.2441mV step&lt;br /&gt;
write to 0x44 ack data: 0x21 0x33 0x13 # &lt;br /&gt;
write to 0x44 ack data: 0x42 0xCD 0x15 # &lt;br /&gt;
write to 0x44 ack data: 0x40 0x66 0x16 # &lt;br /&gt;
write to 0x44 ack data: 0x43 0xCD 0x10 # &lt;br /&gt;
write to 0x44 ack data: 0x44 0x00 0x10 # &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:HOWTO]]&lt;br /&gt;
[[Категория:Zynq]]&lt;br /&gt;
[[Категория:EmbeddedLinux]]&lt;br /&gt;
{{wl-publish: 2018-12-18 15:10:14 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/18.12.2018_ZCU104</id>
		<title>Blog:Lipa/18.12.2018 ZCU104</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/18.12.2018_ZCU104"/>
				<updated>2021-04-29T07:35:31Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* Настраиваем контроллеры питания */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Ultrascale.png|400px]]&amp;lt;/center&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Сборка PetaLinux для ZCU104 zynq-ultrascale+&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма3}}&lt;br /&gt;
&lt;br /&gt;
==Petalinux==&lt;br /&gt;
&lt;br /&gt;
Создать проект petalinux&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-create --type project --template zynqMP --name &amp;lt;PROJECT&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для работы eth-phy:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem3{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@12 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;12&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== patch dev-tree ==&lt;br /&gt;
[https://www.xilinx.com/support/answers/73086.html ссылка на xilinx раз]&lt;br /&gt;
&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-Building-device-tree-amba-pl-not-found/td-p/1078982 ссылка на xilinx два]&lt;br /&gt;
&lt;br /&gt;
'''device-tree.bbappend:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
FILESEXTRAPATHS_prepend := &amp;quot;${THISDIR}/files:&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
SRC_URI += &amp;quot;file://system-user.dtsi&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
SRC_URI_append += &amp;quot; file://0001_disable_gen_axi_interface.patch&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Кладем патч-файл рядом с system-user.dtsi, правим device-tree.bbappend&lt;br /&gt;
&lt;br /&gt;
== всякое ==&lt;br /&gt;
&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-2019-1-fsbl-build-error-fatal-error-xiicps-h-No-such/td-p/1027805 Включаем I2C]&lt;br /&gt;
&lt;br /&gt;
== Настраиваем контроллеры питания ==&lt;br /&gt;
&lt;br /&gt;
fsbl шлет по i2c следущее:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
write to 0x44 ack data: 0x00 0x03      # выбрали канал D&lt;br /&gt;
write to 0x44 ack data: 0x01 0x80      # сказали ему ON&lt;br /&gt;
write to 0x44 ack data: 0x20 0x14      # POWER_GOOD_OFF&lt;br /&gt;
write to 0x44 ack data: 0x24 0x00 0x80 # &lt;br /&gt;
write to 0x44 ack data: 0x21 0x33 0x13 # &lt;br /&gt;
write to 0x44 ack data: 0x42 0xCD 0x15 # &lt;br /&gt;
write to 0x44 ack data: 0x40 0x66 0x16 # &lt;br /&gt;
write to 0x44 ack data: 0x43 0xCD 0x10 # &lt;br /&gt;
write to 0x44 ack data: 0x44 0x00 0x10 # &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:HOWTO]]&lt;br /&gt;
[[Категория:Zynq]]&lt;br /&gt;
[[Категория:EmbeddedLinux]]&lt;br /&gt;
{{wl-publish: 2018-12-18 15:10:14 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/18.12.2018_ZCU104</id>
		<title>Blog:Lipa/18.12.2018 ZCU104</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/18.12.2018_ZCU104"/>
				<updated>2021-04-29T07:35:19Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* Настраиваем контроллеры питания */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Ultrascale.png|400px]]&amp;lt;/center&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Сборка PetaLinux для ZCU104 zynq-ultrascale+&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма3}}&lt;br /&gt;
&lt;br /&gt;
==Petalinux==&lt;br /&gt;
&lt;br /&gt;
Создать проект petalinux&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-create --type project --template zynqMP --name &amp;lt;PROJECT&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для работы eth-phy:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem3{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@12 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;12&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== patch dev-tree ==&lt;br /&gt;
[https://www.xilinx.com/support/answers/73086.html ссылка на xilinx раз]&lt;br /&gt;
&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-Building-device-tree-amba-pl-not-found/td-p/1078982 ссылка на xilinx два]&lt;br /&gt;
&lt;br /&gt;
'''device-tree.bbappend:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
FILESEXTRAPATHS_prepend := &amp;quot;${THISDIR}/files:&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
SRC_URI += &amp;quot;file://system-user.dtsi&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
SRC_URI_append += &amp;quot; file://0001_disable_gen_axi_interface.patch&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Кладем патч-файл рядом с system-user.dtsi, правим device-tree.bbappend&lt;br /&gt;
&lt;br /&gt;
== всякое ==&lt;br /&gt;
&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-2019-1-fsbl-build-error-fatal-error-xiicps-h-No-such/td-p/1027805 Включаем I2C]&lt;br /&gt;
&lt;br /&gt;
== Настраиваем контроллеры питания ==&lt;br /&gt;
&lt;br /&gt;
fsbl шлет по i2c следущее:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
write to 0x44 ack data: 0x00 0x03      # выбрали канал D&lt;br /&gt;
write to 0x44 ack data: 0x01 0x80      # сказали ему ON&lt;br /&gt;
write to 0x44 ack data: 0x20 0x14      # POWER_GOOD_OFF&lt;br /&gt;
write to 0x44 ack data: 0x24 0x00 0x80 #&lt;br /&gt;
write to 0x44 ack data: 0x21 0x33 0x13 #&lt;br /&gt;
write to 0x44 ack data: 0x42 0xCD 0x15 #&lt;br /&gt;
write to 0x44 ack data: 0x40 0x66 0x16 #&lt;br /&gt;
write to 0x44 ack data: 0x43 0xCD 0x10 #&lt;br /&gt;
write to 0x44 ack data: 0x44 0x00 0x10#&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:HOWTO]]&lt;br /&gt;
[[Категория:Zynq]]&lt;br /&gt;
[[Категория:EmbeddedLinux]]&lt;br /&gt;
{{wl-publish: 2018-12-18 15:10:14 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/18.12.2018_ZCU104</id>
		<title>Blog:Lipa/18.12.2018 ZCU104</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/18.12.2018_ZCU104"/>
				<updated>2021-04-29T07:16:46Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* всякое */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Ultrascale.png|400px]]&amp;lt;/center&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Сборка PetaLinux для ZCU104 zynq-ultrascale+&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма3}}&lt;br /&gt;
&lt;br /&gt;
==Petalinux==&lt;br /&gt;
&lt;br /&gt;
Создать проект petalinux&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-create --type project --template zynqMP --name &amp;lt;PROJECT&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для работы eth-phy:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem3{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@12 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;12&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== patch dev-tree ==&lt;br /&gt;
[https://www.xilinx.com/support/answers/73086.html ссылка на xilinx раз]&lt;br /&gt;
&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-Building-device-tree-amba-pl-not-found/td-p/1078982 ссылка на xilinx два]&lt;br /&gt;
&lt;br /&gt;
'''device-tree.bbappend:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
FILESEXTRAPATHS_prepend := &amp;quot;${THISDIR}/files:&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
SRC_URI += &amp;quot;file://system-user.dtsi&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
SRC_URI_append += &amp;quot; file://0001_disable_gen_axi_interface.patch&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Кладем патч-файл рядом с system-user.dtsi, правим device-tree.bbappend&lt;br /&gt;
&lt;br /&gt;
== всякое ==&lt;br /&gt;
&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-2019-1-fsbl-build-error-fatal-error-xiicps-h-No-such/td-p/1027805 Включаем I2C]&lt;br /&gt;
&lt;br /&gt;
== Настраиваем контроллеры питания ==&lt;br /&gt;
&lt;br /&gt;
fsbl шлет по i2c следущее:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
write to 0x44 ack data: 0x00 0x03 &lt;br /&gt;
write to 0x44 ack data: 0x01 0x80 &lt;br /&gt;
write to 0x44 ack data: 0x20 0x14 &lt;br /&gt;
write to 0x44 ack data: 0x24 0x00 0x80 &lt;br /&gt;
write to 0x44 ack data: 0x21 0x33 0x13 &lt;br /&gt;
write to 0x44 ack data: 0x42 0xCD 0x15 &lt;br /&gt;
write to 0x44 ack data: 0x40 0x66 0x16 &lt;br /&gt;
write to 0x44 ack data: 0x43 0xCD 0x10 &lt;br /&gt;
write to 0x44 ack data: 0x44 0x00 0x10&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:HOWTO]]&lt;br /&gt;
[[Категория:Zynq]]&lt;br /&gt;
[[Категория:EmbeddedLinux]]&lt;br /&gt;
{{wl-publish: 2018-12-18 15:10:14 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/16.05.2018_PetaLinux</id>
		<title>Blog:Lipa/16.05.2018 PetaLinux</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/16.05.2018_PetaLinux"/>
				<updated>2021-03-30T11:33:53Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* SWDT System Watchdog Timer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Petalinux.png|400px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сборка PetaLinux для кастомной железки&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма2}}&lt;br /&gt;
&lt;br /&gt;
== Требования ==&lt;br /&gt;
&lt;br /&gt;
Vivado 2018.1 (для single-gigabit ethernet можно более ранние версии)&lt;br /&gt;
&lt;br /&gt;
Начиная с petalinux_2018.1 отсутствует devcfg. Необходимо использовать FPGA manager. Технология нами пока не освоена&lt;br /&gt;
&lt;br /&gt;
Необходима Ubuntu-16.04&lt;br /&gt;
&lt;br /&gt;
Требуется поставить ряд пакетов, полный список приведен в документе [https://www.xilinx.com/support/documentation/sw_manuals/xilinx2019_1/ug1144-petalinux-tools-reference-guide.pdf#page=9 UG1144]&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PetaLinux в систему. Дистрибутив есть на [https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/2018-1.html Xilinx], либо у меня на компьютере. '''Ставить PetaLinux необходимо БЕЗ прав суперюзера!'''&lt;br /&gt;
&lt;br /&gt;
кидаем в /components/yocto/ sstate-rel-v2017.4.tar.gz&lt;br /&gt;
&lt;br /&gt;
Подготовка завершена&lt;br /&gt;
&lt;br /&gt;
== Правка Vivado ==&lt;br /&gt;
&lt;br /&gt;
Для поддержки MDIO в Vivado 17.1-17.4 нужен [https://www.xilinx.com/support/answers/69132.html патч]. Ставим!&lt;br /&gt;
&lt;br /&gt;
'''Не помогло.''' Ставим 2018.1&lt;br /&gt;
&lt;br /&gt;
== Сборка ==&lt;br /&gt;
&lt;br /&gt;
Пошаговое руководство по сборке содержится в документе UG1156&lt;br /&gt;
&lt;br /&gt;
В консоли пишем source/[путь к петалинух]/settings.sh&lt;br /&gt;
&lt;br /&gt;
Выполняем шаги из UG1156 по главе 5:&lt;br /&gt;
&lt;br /&gt;
* экспортируем из Vivado .hdf (в блок дизайн File-&amp;gt;Export-&amp;gt;Export Hardware)&lt;br /&gt;
&lt;br /&gt;
* создаем проект PetaLinux&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-create --type project --template zynq --name &amp;lt;PROJECT&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* переходим в папку с текущим проектом&lt;br /&gt;
&lt;br /&gt;
* подключаем файл .hdf&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config --get-hw-description=[путь к папке с файлом .hdf]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* перед сборкой системы необходимо выполнить '''все''' команды конфигурации в данной последовательности:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&lt;br /&gt;
$ petalinux-config -c kernel&lt;br /&gt;
&lt;br /&gt;
$ petalinux-config -c rootfs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config ===&lt;br /&gt;
&lt;br /&gt;
Если хотим спользовать внешний файл device-tree включаем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Subsystem AUTO Hardware Settings-&amp;gt;&lt;br /&gt;
     Advances bootable images storage settings-&amp;gt;&lt;br /&gt;
          dtb image settings-&amp;gt;&lt;br /&gt;
               image storage media&lt;br /&gt;
                    primary sd&lt;br /&gt;
               &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Необходимо править netboot offset если оперативной памяти менее ~256МБ&lt;br /&gt;
&lt;br /&gt;
Для клоникуса с 256МБ ставим 8'000'000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
u-boot Configuration-&amp;gt;&lt;br /&gt;
     netboot offset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выставляем точку начала распаковки образа системы&lt;br /&gt;
&lt;br /&gt;
Выключаем копирование образа по sftp (Image Packaging Configuration -&amp;gt; Copy final images)&lt;br /&gt;
&lt;br /&gt;
Отключаем интернет-sstate (Yocto Settings -&amp;gt; Enable Network sstate feeds)&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config -c kernel===&lt;br /&gt;
&lt;br /&gt;
* Подключаем в ядре поддержку физика и его дров.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config -c kernel&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''для oryx:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers-&amp;gt;&lt;br /&gt;
     [*]Network device support -&amp;gt;&lt;br /&gt;
          [*]Ethernet driver support -&amp;gt;&lt;br /&gt;
               [*] Micrel devices&lt;br /&gt;
          [*] PHY Device support and infastructure --&amp;gt;&lt;br /&gt;
               [*] Drivers for Micrel PHYs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''для clonicus:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers-&amp;gt;&lt;br /&gt;
     [*]Network device support -&amp;gt;&lt;br /&gt;
          [*] PHY Device support and infastructure --&amp;gt;&lt;br /&gt;
               [*] Texas Instruments DP83867 Gigabit PHY&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config -c rootfs ===&lt;br /&gt;
&lt;br /&gt;
Подключаем при необходимости ethtool, gdbserver(просто gdb не заработал), libstdc, libgcc, glib2.0, glibc(glibc &amp;amp; ltd)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages-&amp;gt;&lt;br /&gt;
     misc -&amp;gt;&lt;br /&gt;
          gcc-runtime -&amp;gt;&lt;br /&gt;
               [*] libstdc ++&lt;br /&gt;
          gdb --&amp;gt;&lt;br /&gt;
               [*] gdb&lt;br /&gt;
          glib-2.0&lt;br /&gt;
               [*] glib-2.0&lt;br /&gt;
          glibc&lt;br /&gt;
               [*] glibc&lt;br /&gt;
               [*] ldd&lt;br /&gt;
     devel -&amp;gt;&lt;br /&gt;
          python -&amp;gt;&lt;br /&gt;
               python -&amp;gt;&lt;br /&gt;
                    [*] python&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Опционально:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages-&amp;gt;&lt;br /&gt;
     base -&amp;gt;&lt;br /&gt;
          i2c-tools -&amp;gt;&lt;br /&gt;
               [*] i2c-tools&lt;br /&gt;
          usbutils -&amp;gt;&lt;br /&gt;
               [*] usbutils&lt;br /&gt;
     console -&amp;gt;&lt;br /&gt;
          network -&amp;gt;&lt;br /&gt;
               ethtool -&amp;gt;&lt;br /&gt;
                    [*] ethtool // необходимо для oryx! для перенастройки autonegotiation&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Можно еще подключать дебаг i2c&lt;br /&gt;
&lt;br /&gt;
'''Необходимо убедиться, что  образ может распаковаться в размер оперативы'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Если будут проблемы, то надо будет править netboot offset&lt;br /&gt;
&lt;br /&gt;
=== device tree ===&lt;br /&gt;
&lt;br /&gt;
Если необходимо внести изменения в device tree, то смотрим конец статьи&lt;br /&gt;
&lt;br /&gt;
[https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841676/U-Boot+Flattened+Device+Tree Интересная статья по правке devicetree из uboot]&lt;br /&gt;
&lt;br /&gt;
=== Сборка проекта ===&lt;br /&gt;
&lt;br /&gt;
* далее (сборка идет 30-60 минут)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build&lt;br /&gt;
&lt;br /&gt;
cd /images/linux/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* делаем boot.bin в папке /images/linux/&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --u-boot --force&lt;br /&gt;
&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --fpga name.bit --u-boot --force&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --fpga name.bit --u-boot --kernel --force&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* записываем в загрузочную область флешки файлы boot.bin и image.ub&lt;br /&gt;
&lt;br /&gt;
== Всякое ==&lt;br /&gt;
&lt;br /&gt;
Если мало памяти как у нас - возможна ошибка image is not a fdt [https://forums.xilinx.com/t5/Embedded-Processor-System-Design/Petalinux-problem-on-custom-board-quot-image-is-not-a-fdt-quot/td-p/754892 ссылка]&lt;br /&gt;
&lt;br /&gt;
Необходимо править netboot offset&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
u-boot Configuration-&amp;gt;&lt;br /&gt;
     netboot offset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Можно вручную загрузиться из u-boot'а.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ fatload mmc 0 0xA000000 image.ub&lt;br /&gt;
$ bootm 0xA000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
либо&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ fatload mmc 0 0xA000000 image.ub&lt;br /&gt;
$ fatload mmc 0 0x9000000 system.dtb&lt;br /&gt;
$ bootm 0xA000000 0xA000000 0x9000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Можно поварьировать адрес&lt;br /&gt;
&lt;br /&gt;
------------&lt;br /&gt;
&lt;br /&gt;
Проверка статуса прошитости FPGA&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat /sys/class/xdevcfg/xdevcfg/device/prog_done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Uboot==&lt;br /&gt;
&lt;br /&gt;
Для внесения правок в загрузку линукса используем список команд '''env'''&lt;br /&gt;
&lt;br /&gt;
Просмотр текущих команд '''printenv'''&lt;br /&gt;
&lt;br /&gt;
Сброс настроек в дефолт '''env default -a'''&lt;br /&gt;
&lt;br /&gt;
Создать переменную '''env set &amp;lt;имя&amp;gt; &amp;lt;значение&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Правка переменной '''env edit &amp;lt;имя переменной&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Для каждой платы делаем следующее:&lt;br /&gt;
&lt;br /&gt;
* Берем [[Файл:uboot.env.c]]&lt;br /&gt;
&lt;br /&gt;
* Удаляем в конце имени &amp;quot;.c&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Записываем на флешку рядом с образом линукса&lt;br /&gt;
&lt;br /&gt;
* Запускаем плату и прерываем autoboot&lt;br /&gt;
&lt;br /&gt;
* Пишем '''editenv ethaddr'''&lt;br /&gt;
&lt;br /&gt;
* Редактируем MAC-адрес&lt;br /&gt;
&lt;br /&gt;
* Пишем '''saveenv'''&lt;br /&gt;
&lt;br /&gt;
* Все! можем ребутать '''reset'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Сохранить в файл '''saveenv'''&lt;br /&gt;
&lt;br /&gt;
==Автозапуск приложений==&lt;br /&gt;
&lt;br /&gt;
Во-первых [https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-Runnning-a-script-file-at-startup/td-p/689051 тыц]&lt;br /&gt;
&lt;br /&gt;
Далее пишем&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-create -t apps --template install -n myapp-init --enable&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим файл /project-spec/meta-user/recipes-apps/myapp-init/myapp-init.bb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file is the myapp-init recipe.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
SUMMARY = &amp;quot;Simple myapp-init application&amp;quot;&lt;br /&gt;
SECTION = &amp;quot;PETALINUX/apps&amp;quot;&lt;br /&gt;
LICENSE = &amp;quot;MIT&amp;quot;&lt;br /&gt;
LIC_FILES_CHKSUM = &amp;quot;file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302&amp;quot;&lt;br /&gt;
&lt;br /&gt;
SRC_URI = &amp;quot;file://myapp-init&amp;quot;&lt;br /&gt;
&lt;br /&gt;
S = &amp;quot;${WORKDIR}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILESEXTRAPATHS_prepend := &amp;quot;${THISDIR}/files:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
inherit update-rc.d&lt;br /&gt;
&lt;br /&gt;
INITSCRIPT_NAME = &amp;quot;myapp-init&amp;quot;&lt;br /&gt;
INITSCRIPT_PARAMS = &amp;quot;start 99 S .&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do_install() {&lt;br /&gt;
    install -d ${D}${sysconfdir}/init.d&lt;br /&gt;
    install -m 0755 ${S}/myapp-init ${D}${sysconfdir}/init.d/myapp-init&lt;br /&gt;
}&lt;br /&gt;
FILES_${PN} += &amp;quot;${sysconfdir}/*&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим сам исполняемый скрипт project-spec/meta-user/recipes-apps/myapp-init/files/myapp-init&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Autorun script&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Try run custom_init&amp;quot;&lt;br /&gt;
sh /run/media/mmcblk0p1/custom_init.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Записываем на флешку скрипт custom_init.sh с нужными командами и делаем его исполняемым&lt;br /&gt;
&lt;br /&gt;
Записываем файл interfaces&lt;br /&gt;
&lt;br /&gt;
Скачать архив: [[Файл:Init_interfaces.rar]]&lt;br /&gt;
&lt;br /&gt;
==SSH==&lt;br /&gt;
&lt;br /&gt;
Как победить сохранение ssh-ключей:&lt;br /&gt;
&lt;br /&gt;
Добавляем в init_script следующие строки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir /run/media/mmcblk0p2/.ssh&lt;br /&gt;
ln -s /run/media/mmcblk0p2/.ssh/ /home/root/&lt;br /&gt;
mkdir /run/media/mmcblk0p2/dropbear/&lt;br /&gt;
chmod 400 /run/media/mmcblk0p2/dropbear/&lt;br /&gt;
rm -r /etc/dropbear/&lt;br /&gt;
ln -s /run/media/mmcblk0p2/dropbear/ /etc/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Создается ссылка на флешку, где хранятся авторизованные пользователи&lt;br /&gt;
* Создается папка для хранения секретного ключа платы&lt;br /&gt;
* При запуске платы свежесозданный ключ заменяется тем, что лежит на флешке&lt;br /&gt;
* При первом включении платы будет создан новый ключ&lt;br /&gt;
&lt;br /&gt;
Помимо добавления указанных команд в скрипт ничего больше делать не надо&lt;br /&gt;
&lt;br /&gt;
==Daemon==&lt;br /&gt;
&lt;br /&gt;
Для настройки демона:&lt;br /&gt;
&lt;br /&gt;
* Добавляем строки в файл custom_init.sh&lt;br /&gt;
* Кидаем на загрузочный раздел флешки папку из архива [[:File:daemon.rar]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp -r /run/media/mmcblk0p1/daemon/lsb /lib/&lt;br /&gt;
cp /run/media/mmcblk0p1/daemon/receiver.conf /etc/&lt;br /&gt;
cp /run/media/mmcblk0p1/daemon/receiver /etc/init.d/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serial port на новом линуксе ===&lt;br /&gt;
Выяснилось, что без доп. настройки, в последовательный порт (dev/ttyPS0) после каждой посылки добавляются символы CR и LF. Оказалось, что и RTKLib, и софт Листопада не хотят работать с таким окончанием пакетов.&lt;br /&gt;
&lt;br /&gt;
Выше не совсем так, скорее мысль в том, что каждый символ LF (0x0A) в наших данных меняется на символы CR LF, т.е. (0x0D0A). И тогда, в нашем битовом потоке меняется размер и содержимое и парсеры работают некорректно.&lt;br /&gt;
Старый линукс на Ориксах добавляет только LF. Для решения проблемы нужно через stty выключить в настройках порта опцию '''onlcr''' (преобразовывать перевод строки в возврат каретки и новую строку).&lt;br /&gt;
&lt;br /&gt;
Сделать это удалось пока только изменив скрипт демона receiver. Для решения проблемы заходим в /run/media/mmcblk0p1/daemon/receiver, и в начале секции receiver_start() {...} добавляем команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
stty -F /dev/ttyPS0 -onlcr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==device tree==&lt;br /&gt;
&lt;br /&gt;
Для внесения изменений в device tree добавляем нужные строки в файл&lt;br /&gt;
&lt;br /&gt;
project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
[https://www.xilinx.com/support/answers/61117.html пример]&lt;br /&gt;
&lt;br /&gt;
Для разборки device-tree [http://xillybus.com/tutorials/device-tree-zynq-1 ссылка]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ dtc -I dtb -O dts -o &amp;lt;name&amp;gt;.dts &amp;lt;name&amp;gt;.dtb&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для сборки device-tree&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ dtc -I dts -O dtb -o &amp;lt;name&amp;gt;.dtb &amp;lt;name&amp;gt;.dts&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Модификация device-tree ==&lt;br /&gt;
&lt;br /&gt;
После долгих мучений получилось поднять DP83867 только после добавления модификатора в файл [https://forums.xilinx.com/t5/Embedded-Linux/ZC702-Like-Board-with-DP83867CR-Ethernet-Petalinux-2017-4/td-p/831873 волшебная статья]&lt;br /&gt;
&lt;br /&gt;
[https://www.kernel.org/doc/Documentation/devicetree/bindings/net/ti%2Cdp83867.txt описание параметров]&lt;br /&gt;
&lt;br /&gt;
project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
=== Single Kit-board eth ===&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth1(с mdio) и выключен eth0.&lt;br /&gt;
&lt;br /&gt;
'''Так работает'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem1{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@12 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;12&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Начало скрытого блока|Выравнивание_заголовка = left| Ссылка = left|Заголовок =  Развернутый .dtb:}}&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/dts-v1/;&lt;br /&gt;
&lt;br /&gt;
/ {&lt;br /&gt;
	#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
	#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
	compatible = &amp;quot;xlnx,zynq-7000&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	cpus {&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
		cpu@0 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9&amp;quot;;&lt;br /&gt;
			device_type = &amp;quot;cpu&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x3&amp;gt;;&lt;br /&gt;
			clock-latency = &amp;lt;0x3e8&amp;gt;;&lt;br /&gt;
			cpu0-supply = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			operating-points = &amp;lt;0xa2c2a 0xf4240 0x51615 0xf4240&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		cpu@1 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9&amp;quot;;&lt;br /&gt;
			device_type = &amp;quot;cpu&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x3&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	fpga-full {&lt;br /&gt;
		compatible = &amp;quot;fpga-region&amp;quot;;&lt;br /&gt;
		fpga-mgr = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		ranges;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	pmu@f8891000 {&lt;br /&gt;
		compatible = &amp;quot;arm,cortex-a9-pmu&amp;quot;;&lt;br /&gt;
		interrupts = &amp;lt;0x0 0x5 0x4 0x0 0x6 0x4&amp;gt;;&lt;br /&gt;
		interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		reg = &amp;lt;0xf8891000 0x1000 0xf8893000 0x1000&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	fixedregulator {&lt;br /&gt;
		compatible = &amp;quot;regulator-fixed&amp;quot;;&lt;br /&gt;
		regulator-name = &amp;quot;VCCPINT&amp;quot;;&lt;br /&gt;
		regulator-min-microvolt = &amp;lt;0xf4240&amp;gt;;&lt;br /&gt;
		regulator-max-microvolt = &amp;lt;0xf4240&amp;gt;;&lt;br /&gt;
		regulator-boot-on;&lt;br /&gt;
		regulator-always-on;&lt;br /&gt;
		linux,phandle = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
		phandle = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	amba {&lt;br /&gt;
		u-boot,dm-pre-reloc;&lt;br /&gt;
		compatible = &amp;quot;simple-bus&amp;quot;;&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		ranges;&lt;br /&gt;
&lt;br /&gt;
		adc@f8007100 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-xadc-1.00.a&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8007100 0x20&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x7 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xc&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		can@e0008000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-can-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x13 0x1 0x24&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;can_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0008000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1c 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			tx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			rx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		can@e0009000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-can-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x14 0x1 0x25&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;can_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0009000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x33 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			tx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			rx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		gpio@e000a000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-gpio-1.0&amp;quot;;&lt;br /&gt;
			#gpio-cells = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x2a&amp;gt;;&lt;br /&gt;
			gpio-controller;&lt;br /&gt;
			interrupt-controller;&lt;br /&gt;
			#interrupt-cells = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x14 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe000a000 0x1000&amp;gt;;&lt;br /&gt;
			emio-gpio-width = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			gpio-mask-high = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			gpio-mask-low = &amp;lt;0x5600&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		i2c@e0004000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x26&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x19 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0004000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		i2c@e0005000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x27&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x30 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0005000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		interrupt-controller@f8f01000 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-gic&amp;quot;;&lt;br /&gt;
			#interrupt-cells = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
			interrupt-controller;&lt;br /&gt;
			reg = &amp;lt;0xf8f01000 0x1000 0xf8f00100 0x100&amp;gt;;&lt;br /&gt;
			num_cpus = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			num_interrupts = &amp;lt;0x60&amp;gt;;&lt;br /&gt;
			linux,phandle = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		cache-controller@f8f02000 {&lt;br /&gt;
			compatible = &amp;quot;arm,pl310-cache&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f02000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2 0x4&amp;gt;;&lt;br /&gt;
			arm,data-latency = &amp;lt;0x3 0x2 0x2&amp;gt;;&lt;br /&gt;
			arm,tag-latency = &amp;lt;0x2 0x2 0x2&amp;gt;;&lt;br /&gt;
			cache-unified;&lt;br /&gt;
			cache-level = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		memory-controller@f8006000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-ddrc-a05&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8006000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ocmc@f800c000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-ocmc-1.0&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x3 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf800c000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		serial@e0000000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,xuartps&amp;quot;, &amp;quot;cdns,uart-r1p8&amp;quot;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x17 0x1 0x28&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;uart_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0000000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1b 0x4&amp;gt;;&lt;br /&gt;
			device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
			port-number = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		serial@e0001000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,xuartps&amp;quot;, &amp;quot;cdns,uart-r1p8&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x18 0x1 0x29&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;uart_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0001000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x32 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e0006000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-spi-r1p6&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0006000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1a 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x19 0x1 0x22&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e0007000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-spi-r1p6&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0007000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x31 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1a 0x1 0x23&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e000d000 {&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xa 0x1 0x2b&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-qspi-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x13 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe000d000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		memory-controller@e000e000 {&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;memclk&amp;quot;, &amp;quot;aclk&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xb 0x1 0x2c&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;arm,pl353-smc-r2p1&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x12 0x4&amp;gt;;&lt;br /&gt;
			ranges;&lt;br /&gt;
			reg = &amp;lt;0xe000e000 0x1000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			flash@e1000000 {&lt;br /&gt;
				status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
				compatible = &amp;quot;arm,pl353-nand-r2p1&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0xe1000000 0x1000000&amp;gt;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			flash@e2000000 {&lt;br /&gt;
				status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
				compatible = &amp;quot;cfi-flash&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0xe2000000 0x2000000&amp;gt;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ethernet@e000b000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,zynq-gem&amp;quot;, &amp;quot;cdns,gem&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe000b000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x16 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1e 0x1 0x1e 0x1 0xd&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;pclk&amp;quot;, &amp;quot;hclk&amp;quot;, &amp;quot;tx_clk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ethernet@e000c000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,zynq-gem&amp;quot;, &amp;quot;cdns,gem&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe000c000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2d 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1f 0x1 0x1f 0x1 0xe&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;pclk&amp;quot;, &amp;quot;hclk&amp;quot;, &amp;quot;tx_clk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
			xlnx,ptp-enet-clock = &amp;lt;0x69f6bcb&amp;gt;;&lt;br /&gt;
			local-mac-address = [00 0a 35 00 22 01];&lt;br /&gt;
			phy-handle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
			xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			mdio {&lt;br /&gt;
				status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
				phy@12 {&lt;br /&gt;
					compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
					device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
					reg = &amp;lt;0xc&amp;gt;;&lt;br /&gt;
					ti,rx-internal-delay = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
					ti,tx-internal-delay = &amp;lt;0xa&amp;gt;;&lt;br /&gt;
					ti,fifo-depth = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
					ti,min-output-impedance;&lt;br /&gt;
					ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
					status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
					linux,phandle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
					phandle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
				};&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		sdhci@e0100000 {&lt;br /&gt;
			compatible = &amp;quot;arasan,sdhci-8.9a&amp;quot;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;clk_xin&amp;quot;, &amp;quot;clk_ahb&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x15 0x1 0x20&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x18 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0100000 0x1000&amp;gt;;&lt;br /&gt;
			xlnx,has-cd = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			xlnx,has-power = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			xlnx,has-wp = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		sdhci@e0101000 {&lt;br /&gt;
			compatible = &amp;quot;arasan,sdhci-8.9a&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;clk_xin&amp;quot;, &amp;quot;clk_ahb&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x16 0x1 0x21&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2f 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0101000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		slcr@f8000000 {&lt;br /&gt;
			u-boot,dm-pre-reloc;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-slcr&amp;quot;, &amp;quot;syscon&amp;quot;, &amp;quot;simple-mfd&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8000000 0x1000&amp;gt;;&lt;br /&gt;
			ranges;&lt;br /&gt;
			linux,phandle = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			clkc@100 {&lt;br /&gt;
				u-boot,dm-pre-reloc;&lt;br /&gt;
				#clock-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				compatible = &amp;quot;xlnx,ps7-clkc&amp;quot;;&lt;br /&gt;
				fclk-enable = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
				clock-output-names = &amp;quot;armpll&amp;quot;, &amp;quot;ddrpll&amp;quot;, &amp;quot;iopll&amp;quot;, &amp;quot;cpu_6or4x&amp;quot;, &amp;quot;cpu_3or2x&amp;quot;, &amp;quot;cpu_2x&amp;quot;, &amp;quot;cpu_1x&amp;quot;, &amp;quot;ddr2x&amp;quot;, &amp;quot;ddr3x&amp;quot;, &amp;quot;dci&amp;quot;, &amp;quot;lqspi&amp;quot;, &amp;quot;smc&amp;quot;, &amp;quot;pcap&amp;quot;, &amp;quot;gem0&amp;quot;, &amp;quot;gem1&amp;quot;, &amp;quot;fclk0&amp;quot;, &amp;quot;fclk1&amp;quot;, &amp;quot;fclk2&amp;quot;, &amp;quot;fclk3&amp;quot;, &amp;quot;can0&amp;quot;, &amp;quot;can1&amp;quot;, &amp;quot;sdio0&amp;quot;, &amp;quot;sdio1&amp;quot;, &amp;quot;uart0&amp;quot;, &amp;quot;uart1&amp;quot;, &amp;quot;spi0&amp;quot;, &amp;quot;spi1&amp;quot;, &amp;quot;dma&amp;quot;, &amp;quot;usb0_aper&amp;quot;, &amp;quot;usb1_aper&amp;quot;, &amp;quot;gem0_aper&amp;quot;, &amp;quot;gem1_aper&amp;quot;, &amp;quot;sdio0_aper&amp;quot;, &amp;quot;sdio1_aper&amp;quot;, &amp;quot;spi0_aper&amp;quot;, &amp;quot;spi1_aper&amp;quot;, &amp;quot;can0_aper&amp;quot;, &amp;quot;can1_aper&amp;quot;, &amp;quot;i2c0_aper&amp;quot;, &amp;quot;i2c1_aper&amp;quot;, &amp;quot;uart0_aper&amp;quot;, &amp;quot;uart1_aper&amp;quot;, &amp;quot;gpio_aper&amp;quot;, &amp;quot;lqspi_aper&amp;quot;, &amp;quot;smc_aper&amp;quot;, &amp;quot;swdt&amp;quot;, &amp;quot;dbg_trc&amp;quot;, &amp;quot;dbg_apb&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x100 0x100&amp;gt;;&lt;br /&gt;
				ps-clk-frequency = &amp;lt;0x1fca055&amp;gt;;&lt;br /&gt;
				linux,phandle = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				phandle = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			rstc@200 {&lt;br /&gt;
				compatible = &amp;quot;xlnx,zynq-reset&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x200 0x48&amp;gt;;&lt;br /&gt;
				#reset-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			pinctrl@700 {&lt;br /&gt;
				compatible = &amp;quot;xlnx,pinctrl-zynq&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x700 0x200&amp;gt;;&lt;br /&gt;
				syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		dmac@f8003000 {&lt;br /&gt;
			compatible = &amp;quot;arm,pl330&amp;quot;, &amp;quot;arm,primecell&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8003000 0x1000&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupt-names = &amp;quot;abort&amp;quot;, &amp;quot;dma0&amp;quot;, &amp;quot;dma1&amp;quot;, &amp;quot;dma2&amp;quot;, &amp;quot;dma3&amp;quot;, &amp;quot;dma4&amp;quot;, &amp;quot;dma5&amp;quot;, &amp;quot;dma6&amp;quot;, &amp;quot;dma7&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0xd 0x4 0x0 0xe 0x4 0x0 0xf 0x4 0x0 0x10 0x4 0x0 0x11 0x4 0x0 0x28 0x4 0x0 0x29 0x4 0x0 0x2a 0x4 0x0 0x2b 0x4&amp;gt;;&lt;br /&gt;
			#dma-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#dma-channels = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
			#dma-requests = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1b&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;apb_pclk&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		devcfg@f8007000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-devcfg-1.0&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x8 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8007000 0x100&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xc 0x1 0xf 0x1 0x10 0x1 0x11 0x1 0x12&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;fclk0&amp;quot;, &amp;quot;fclk1&amp;quot;, &amp;quot;fclk2&amp;quot;, &amp;quot;fclk3&amp;quot;;&lt;br /&gt;
			syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			linux,phandle = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		efuse@f800d000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-efuse&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf800d000 0x20&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8f00200 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-global-timer&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f00200 0x20&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x1 0xb 0x301&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8001000 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0xa 0x4 0x0 0xb 0x4 0x0 0xc 0x4&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,ttc&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x6&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8001000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8002000 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x25 0x4 0x0 0x26 0x4 0x0 0x27 0x4&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,ttc&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x6&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8002000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8f00600 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x1 0xd 0x301&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-twd-timer&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f00600 0x20&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		usb@e0002000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-usb-2.20a&amp;quot;, &amp;quot;chipidea,usb2&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1c&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x15 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0002000 0x1000&amp;gt;;&lt;br /&gt;
			phy_type = &amp;quot;ulpi&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		usb@e0003000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-usb-2.20a&amp;quot;, &amp;quot;chipidea,usb2&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1d&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2c 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0003000 0x1000&amp;gt;;&lt;br /&gt;
			phy_type = &amp;quot;ulpi&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		watchdog@f8005000 {&lt;br /&gt;
			clocks = &amp;lt;0x1 0x2d&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,wdt-r1p2&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x9 0x1&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8005000 0x1000&amp;gt;;&lt;br /&gt;
			timeout-sec = &amp;lt;0xa&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	chosen {&lt;br /&gt;
		bootargs = &amp;quot;console=ttyPS0,115200 earlyprintk&amp;quot;;&lt;br /&gt;
		stdout-path = &amp;quot;serial0:115200n8&amp;quot;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	aliases {&lt;br /&gt;
		ethernet0 = &amp;quot;/amba/ethernet@e000c000&amp;quot;;&lt;br /&gt;
		serial0 = &amp;quot;/amba/serial@e0000000&amp;quot;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	memory {&lt;br /&gt;
		device_type = &amp;quot;memory&amp;quot;;&lt;br /&gt;
		reg = &amp;lt;0x0 0x10000000&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
{{Конец скрытого блока}}&lt;br /&gt;
&lt;br /&gt;
=== Single On-board eth ===&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth0(с mdio) и выключен eth1.&lt;br /&gt;
&lt;br /&gt;
'''Работает гигабит через type-c! Работает hot plug. Успех.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@0 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dual eth ===&lt;br /&gt;
&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Dual-phys-on-MDIO-EMIO/td-p/737716 интересная статья о дуал eth]&lt;br /&gt;
&lt;br /&gt;
Попытка поднять два физика. '''Пока не работает'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    local-mac-address = [00 0a 35 00 00 00];&lt;br /&gt;
    enet-reset = &amp;lt;&amp;amp;gpio0 47 0&amp;gt;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@0 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x8&amp;gt;; &lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0xa&amp;gt;; &lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;; &lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
        phy1: phy@12 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;12&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x8&amp;gt;; &lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0xa&amp;gt;; &lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;; &lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gem1{&lt;br /&gt;
    local-mac-address = [00 0a 35 00 00 01];&lt;br /&gt;
    enet-reset = &amp;lt;&amp;amp;gpio0 47 0&amp;gt;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy1&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Oryx ===&lt;br /&gt;
&lt;br /&gt;
Итоговый system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
Меняем номера uart, чтобы системным был ttyPS1, а пользовательским ttyPS0&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
/ {&lt;br /&gt;
    aliases {&lt;br /&gt;
        serial0 = &amp;amp;uart0;&lt;br /&gt;
        serial1 = &amp;amp;uart1;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@1 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
            rxc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            rxdv-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            txc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            txen-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;1&amp;gt;;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/ {&lt;br /&gt;
    chosen {&lt;br /&gt;
            bootargs = &amp;quot;console=ttyPS1,115200 earlyprintk uio_pdrv_genirq.of_id=generic-uio&amp;quot;;&lt;br /&gt;
            stdout-path = &amp;quot;serial1:115200n8&amp;quot;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    hififo: hififo@40000000 {&lt;br /&gt;
            compatible = &amp;quot;generic-uio&amp;quot;;&lt;br /&gt;
            interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
            interrupts = &amp;lt;0 29 1&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;0x40000000 0x1000 0x18000000 0x8000000&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;uart0{&lt;br /&gt;
    port-number = &amp;lt;0&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;uart1{&lt;br /&gt;
    port-number = &amp;lt;1&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth0(с mdio) и выключен eth1.&lt;br /&gt;
Pullup пока что все включены&lt;br /&gt;
&lt;br /&gt;
[https://github.com/Xilinx/u-boot-xlnx/blob/master/doc/device-tree-bindings/net/micrel-ksz90x1.txt статья в помощь]&lt;br /&gt;
&lt;br /&gt;
'''Работает'''&lt;br /&gt;
&lt;br /&gt;
На новых платах(с отпаянными линиями линиями eth):&lt;br /&gt;
* на полноценных проводах с ходу&lt;br /&gt;
* на обкусанных проводах только если выставить 10 в ethtool&lt;br /&gt;
&lt;br /&gt;
На старых платах:&lt;br /&gt;
&lt;br /&gt;
* на полноценных проводах только если выставить 100 в ethtool&lt;br /&gt;
* на обкусанных проводах только если выставить 10 в ethtool&lt;br /&gt;
&lt;br /&gt;
Везде работает так:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ethtool -s eth0 speed 10 duplex full autoneg on&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Спидометр показывает 2,5МБ/с, т.е. 20Мбит/с!&lt;br /&gt;
&lt;br /&gt;
Можно в custom_itit.sh прописать:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ifdown eth0&lt;br /&gt;
ethtool -s eth0 speed 10 duplex full autoneg on&lt;br /&gt;
ifup eth0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@1 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
            rxc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            rxdv-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            txc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            txen-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;1&amp;gt;;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В принципе, работает сеть на новой плате с нормальным кабелем без модификации devicetree. Остальные комбинации плат-кабелей надо проверять&lt;br /&gt;
&lt;br /&gt;
== i2c ==&lt;br /&gt;
&lt;br /&gt;
В rootfs включаем&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages -&amp;gt;&lt;br /&gt;
     base -&amp;gt;&lt;br /&gt;
          i2c-tools -&amp;gt;&lt;br /&gt;
               [*] i2c-tools&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для поиска устройств можно написать&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i2cdetect -y -r 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842160/Cadence+I2C+Driver Статья] по i2c и RTC&lt;br /&gt;
&lt;br /&gt;
== QSPI Flash ==&lt;br /&gt;
&lt;br /&gt;
для работы по флешь памяти как в ките (S25FL128S) - оставляем в дев.три родные compatible = &amp;quot;n25q512a&amp;quot;,&amp;quot;micron,m25p80&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
== SWDT System Watchdog Timer==&lt;br /&gt;
&lt;br /&gt;
* Модифицируем Uenv для настройки wawtchdog через uboot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
bootcmd=run swdt_set &amp;amp;&amp;amp; run fpga_config &amp;amp;&amp;amp; run boot_image &amp;amp;&amp;amp; run boot_dtb &amp;amp;&amp;amp; bootm 0xA000000 0xA000000 0x9000000&lt;br /&gt;
swdt_set=run swdt_ccr &amp;amp;&amp;amp; run swdt_rst &amp;amp;&amp;amp; run swdt_zmr&lt;br /&gt;
swdt_ccr=mw 0xf8005004 0x92063b&lt;br /&gt;
swdt_rst=mw 0xf8005008 0x1999&lt;br /&gt;
swdt_zmr=mw 0xf8005000 0xabc043&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Создаем скрипт для сброса watchdog:&lt;br /&gt;
&lt;br /&gt;
swdt_rst.sh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
watch -n 5 'devmem 0xf8005008 32 0x1999' &amp;amp;&amp;gt;/dev/null &amp;amp;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Добавляем вызов скрипта в автозагрузку&lt;br /&gt;
&lt;br /&gt;
PS Посмотреть можно в проекте bin/Clonicus, коммит ffc437e435d3b5c207bb1186a9561fd06a46d89f&lt;br /&gt;
&lt;br /&gt;
== RTC ==&lt;br /&gt;
&lt;br /&gt;
* Включаем в ядро подходящий драйвер&lt;br /&gt;
&lt;br /&gt;
* Модифицируем device-tree&lt;br /&gt;
&lt;br /&gt;
Вставляем в девайс три:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    i2c0: i2c@e0004000 {&lt;br /&gt;
        clock-frequency = &amp;lt;0xC350&amp;gt;;&lt;br /&gt;
        rtc@51 {&lt;br /&gt;
                compatible = &amp;quot;nxp,pcf85363&amp;quot;;&lt;br /&gt;
                reg = &amp;lt;0x51&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
    i2c1: i2c@e0005000 {&lt;br /&gt;
        clock-frequency = &amp;lt;0xC350&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Будет выглядеть так:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i2c@e0004000 {&lt;br /&gt;
    compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    clocks = &amp;lt;0x1 0x26&amp;gt;;&lt;br /&gt;
    interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
    interrupts = &amp;lt;0x0 0x19 0x4&amp;gt;;&lt;br /&gt;
    reg = &amp;lt;0xe0004000 0x1000&amp;gt;;&lt;br /&gt;
    #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
    #size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
    clock-frequency = &amp;lt;0xc350&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    rtc@51 {&lt;br /&gt;
        compatible = &amp;quot;nxp,pcf85363&amp;quot;;&lt;br /&gt;
        reg = &amp;lt;0x51&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
i2c@e0005000 {&lt;br /&gt;
    compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    clocks = &amp;lt;0x1 0x27&amp;gt;;&lt;br /&gt;
    interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
    interrupts = &amp;lt;0x0 0x30 0x4&amp;gt;;&lt;br /&gt;
    reg = &amp;lt;0xe0005000 0x1000&amp;gt;;&lt;br /&gt;
    #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
    #size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
    clock-frequency = &amp;lt;0xc350&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если готового драйвера нет:&lt;br /&gt;
&lt;br /&gt;
UG1144 pg.54&lt;br /&gt;
&lt;br /&gt;
Создаем новый модуль&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-create -t modules --name &amp;lt;name_module&amp;gt; --enable&lt;br /&gt;
petalinux-create -t modules --name rtc-pcf85363 --enable&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим исходный код в project-spec/meta-user/recipes-modules/rtc-pcf85363/files&lt;br /&gt;
&lt;br /&gt;
Исправленный драйвер лежит в git Clonicus\linux\&lt;br /&gt;
&lt;br /&gt;
Для удаления модуля:&lt;br /&gt;
&lt;br /&gt;
* удаляем папку из project-spec/meta-user/recipes-modules&lt;br /&gt;
&lt;br /&gt;
* В файле project-spec/meta-user/recipes-core/images/petalinux-image.bbappend удаляем соответствующую строку&lt;br /&gt;
&lt;br /&gt;
* переоткрыть petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
Пробуем собрать модуль&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build -c &amp;lt;name_module&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если ОК, собираем (собирать модуль необязательно, petalinux-build его соберет)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И перепаковываем BOOT.bin&lt;br /&gt;
&lt;br /&gt;
Пересобираем deveice-tree с указанием нового драйвера (petalinux-build соберет сам deveice-tree)&lt;br /&gt;
&lt;br /&gt;
просмотр модулей&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsmod&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
загрузить драйвер можно&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
insmod /lib/modules/4.9.0-xilinx-v2017.4/extra/rtc-pcf85363.ko&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
или&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe rtc-pcf85363&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Если все ок и в девайс три прописан правильный драйвер для устройства, то модуль будет загружен сам'''&lt;br /&gt;
&lt;br /&gt;
Прошиваем .bit (для клоникуса нужен бит для работы PL-i2c). После этого можно пользоваться RTC&lt;br /&gt;
&lt;br /&gt;
Чтение времени из rtc если этот rtc не дефолтный (у нас rtc2)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -r -f /dev/rtc2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Синхронизация rtc по системному времени&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -w -f /dev/rtc2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим custom_init.sh для изменения default-rtc на наше устройство&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm /dev/rtc&lt;br /&gt;
ln -s /dev/rtc2 /dev/rtc&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Установка системного времени&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
date --set &amp;quot;2013-7-31 09:30&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запись системного времени в RTC&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -w&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запись времени RTC в системное время&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -s&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Получить время с интеренета&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rdate -s &amp;lt;IP address of time server&amp;gt;&lt;br /&gt;
rdate -s 132.163.96.5 (example)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При перезагрузке &amp;quot;reboot&amp;quot; система автоматически запишет системное время в RTC&lt;br /&gt;
&lt;br /&gt;
== FPGA CONFIG from Uboot ==&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы прошить PL из uboot используем команду:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
fpga loadb 0 &amp;lt;ddr_file_addr&amp;gt; &amp;lt;file_size&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
либо скриптами:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
load_bit=fatload mmc 0 0x100000 clonicus.bit // читаем файл в ddr&lt;br /&gt;
pl_load=fpga loadb 0 0x100000 0x1400000 // прошиваем PL&lt;br /&gt;
fpga_config=run load_bit &amp;amp;&amp;amp; run pl_loadipaddr // вызов самих скриптов&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
0x10_0000 - начальный адрес ddr&lt;br /&gt;
&lt;br /&gt;
0x1_400_000 - размер в байтах для 20МБайт - указываем размер битника с запасом. Теоретически может так не работать, но работает&lt;br /&gt;
&lt;br /&gt;
== ETH over TTY==&lt;br /&gt;
&lt;br /&gt;
В ядре включаем: slip, Universal TUN/TAP&lt;br /&gt;
&lt;br /&gt;
В rootfs включаем net-tools&lt;br /&gt;
&lt;br /&gt;
Включаем iptables для перемршрутизации между подсетями и для него:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[*] Networking support  ---&amp;gt;                                          [CONFIG_NET]&lt;br /&gt;
      Networking Options  ---&amp;gt;&lt;br /&gt;
        [*] Network packet filtering framework (Netfilter) ---&amp;gt;       [CONFIG_NETFILTER]&lt;br /&gt;
          [*] Advanced netfilter configuration                        [CONFIG_NETFILTER_ADVANCED]&lt;br /&gt;
          Core Netfilter Configuration ---&amp;gt;&lt;br /&gt;
            &amp;lt;*/M&amp;gt; Netfilter connection tracking support               [CONFIG_NF_CONNTRACK]&lt;br /&gt;
            &amp;lt;*/M&amp;gt; Netfilter Xtables support (required for ip_tables)  [CONFIG_NETFILTER_XTABLES]&lt;br /&gt;
            &amp;lt;*/M&amp;gt; LOG target support                                  [CONFIG_NETFILTER_XT_TARGET_LOG]&lt;br /&gt;
          IP: Netfilter Configuration ---&amp;gt;&lt;br /&gt;
            &amp;lt;*/M&amp;gt; IP tables support (required for filtering/masq/NAT) [CONFIG_IP_NF_IPTABLES]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PC1:&lt;br /&gt;
&lt;br /&gt;
slattach -L -s 115200 -p slip /dev/ttyPS1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
ifconfig sl0 192.168.1.1/24 up&lt;br /&gt;
&lt;br /&gt;
route add default gw 192.168.1.1 sl0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PC2:&lt;br /&gt;
&lt;br /&gt;
slattach -L -s 115200 -p slip /dev/ttyPS1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
ifconfig sl0 192.168.1.2/24 up&lt;br /&gt;
&lt;br /&gt;
route add default gw 192.168.1.1 sl0&lt;br /&gt;
&lt;br /&gt;
== UART_PL ==&lt;br /&gt;
&lt;br /&gt;
Включаем в настройках ядра поддержку uart_lite, выставляем правильное максимальное число уартов&lt;br /&gt;
&lt;br /&gt;
Модифицируем system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
Обращаем внимание на нумерацию serial, axi_uartlite, она должна не повторяться. То же самое с interrupts &lt;br /&gt;
Указываем верный физический адрес на шине и диапазон адресов в &amp;lt;reg&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
/ {&lt;br /&gt;
    aliases {&lt;br /&gt;
            serial2 = &amp;amp;axi_uartlite_0;&lt;br /&gt;
            serial3 = &amp;amp;axi_uartlite_1;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
/ {&lt;br /&gt;
    amba_pl {&lt;br /&gt;
        #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
        compatible = &amp;quot;simple-bus&amp;quot;;&lt;br /&gt;
        ranges;&lt;br /&gt;
        &lt;br /&gt;
        axi_uartlite_0: serial@80000008 {&lt;br /&gt;
                clock-names = &amp;quot;ref_clk&amp;quot;;&lt;br /&gt;
                clocks = &amp;lt;&amp;amp;clkc 0&amp;gt;;&lt;br /&gt;
                compatible = &amp;quot;xlnx,xps-uartlite-1.00.a&amp;quot;;&lt;br /&gt;
                current-speed = &amp;lt;115200&amp;gt;;&lt;br /&gt;
                device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
                interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                interrupts = &amp;lt;0 30 1&amp;gt;;&lt;br /&gt;
                port-number = &amp;lt;3&amp;gt;;&lt;br /&gt;
                reg = &amp;lt;0x80000008 0x10&amp;gt;;&lt;br /&gt;
                xlnx,baudrate = &amp;lt;0x1c200&amp;gt;;&lt;br /&gt;
                xlnx,data-bits = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
                xlnx,odd-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
                xlnx,s-axi-aclk-freq-hz-d = &amp;quot;100.0&amp;quot;;&lt;br /&gt;
                xlnx,use-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
        axi_uartlite_1: serial@8000001C {&lt;br /&gt;
                clock-names = &amp;quot;ref_clk&amp;quot;;&lt;br /&gt;
                clocks = &amp;lt;&amp;amp;clkc 0&amp;gt;;&lt;br /&gt;
                compatible = &amp;quot;xlnx,xps-uartlite-1.00.a&amp;quot;;&lt;br /&gt;
                current-speed = &amp;lt;115200&amp;gt;;&lt;br /&gt;
                device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
                interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                interrupts = &amp;lt;0 31 1&amp;gt;;&lt;br /&gt;
                port-number = &amp;lt;4&amp;gt;;&lt;br /&gt;
                reg = &amp;lt;0x8000001C 0x10&amp;gt;;&lt;br /&gt;
                xlnx,baudrate = &amp;lt;0x1c200&amp;gt;;&lt;br /&gt;
                xlnx,data-bits = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
                xlnx,odd-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
                xlnx,s-axi-aclk-freq-hz-d = &amp;quot;100.0&amp;quot;;&lt;br /&gt;
                xlnx,use-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если ПЛИС не прошита - будет кернел паник&lt;br /&gt;
&lt;br /&gt;
== IRQ ==&lt;br /&gt;
&lt;br /&gt;
Для поддержки irq добавляем в device-tree&lt;br /&gt;
&lt;br /&gt;
'''Важно - мы перетираем bootargs!'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/ {&lt;br /&gt;
    chosen {&lt;br /&gt;
            bootargs = &amp;quot;console=ttyPS0,115200 earlyprintk uio_pdrv_genirq.of_id=generic-uio&amp;quot;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    hififo: hififo@40000000 {&lt;br /&gt;
                    compatible = &amp;quot;generic-uio&amp;quot;;&lt;br /&gt;
                    interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                    interrupts = &amp;lt;0 29 1&amp;gt;;&lt;br /&gt;
                    reg = &amp;lt;0x40000000 0x1000 0x18000000 0x8000000&amp;gt;;&lt;br /&gt;
            };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
&lt;br /&gt;
Запустил на Z706&lt;br /&gt;
&lt;br /&gt;
[http://www.wiki.xilinx.com/Zynq+Linux+USB+Device+Driver во-первых]&lt;br /&gt;
[http://zedboard.org/content/using-petalinux-configure-zedboard%EF%BC%8C-usb-otg-can-not-work во-вторых]&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-2016-3-zynq-7010-USB-not-working/td-p/737696 в-третьих]&lt;br /&gt;
&lt;br /&gt;
В дефолтных настройках ядра petalinux_2018.1 все было включено&lt;br /&gt;
&lt;br /&gt;
включаем ресет на MIO7 pullup disabled&lt;br /&gt;
&lt;br /&gt;
все ноги интерфейса ulpi pullup disabled&lt;br /&gt;
&lt;br /&gt;
Содержимое system-user.dtsi&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
	/{&lt;br /&gt;
&lt;br /&gt;
    usb_phy0:phy0 {&lt;br /&gt;
&lt;br /&gt;
        compatible=&amp;quot;ulpi-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        #phy-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       reg = &amp;lt;0xe0002000 0x1000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       view-port=&amp;lt;0x170&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       drv-vbus;&lt;br /&gt;
&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&amp;amp;usb0 {&lt;br /&gt;
&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        dr_mode = &amp;quot;host&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        usb-phy = &amp;lt;&amp;amp;usb_phy0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
} ;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== USB-ETHERNET ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers -&amp;gt;&lt;br /&gt;
     USB support -&amp;gt;&lt;br /&gt;
          [*] USB Modem (CDC ACM)&lt;br /&gt;
          USB Gadget Support -&amp;gt;&lt;br /&gt;
               [*] Ethernet Control Model (all)&lt;br /&gt;
               [*] RNDIS&lt;br /&gt;
               [*] Ethernet Emulation Model&lt;br /&gt;
               [*] CDC Composite Device (Ethernet and ACM)&lt;br /&gt;
               [*] USB Gadget Drivers (Ethernet gadget...)&lt;br /&gt;
     Network device support -&amp;gt;&lt;br /&gt;
          USB Network Adapters -&amp;gt;&lt;br /&gt;
               [*] Realtek RTL8152/RTL8153&lt;br /&gt;
               [*] Multi-purpose USB Networking Framework&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WiFi Dongle ==&lt;br /&gt;
&lt;br /&gt;
[https://forum.trenz-electronic.de/index.php?topic=747.0 раз]&lt;br /&gt;
[https://github.com/jinchenglee/zybo_linux_setup_doc два]&lt;br /&gt;
[http://billauer.co.il/blog/2014/06/linux-realtek-hostapd/ три]&lt;br /&gt;
&lt;br /&gt;
Творим:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Networking support -&amp;gt;&lt;br /&gt;
     Wireless -&amp;gt;&lt;br /&gt;
          [*] cfg80211&lt;br /&gt;
          [*] Generic IEEE 802.11 ... (mac80211)&lt;br /&gt;
Device Drivers -&amp;gt;&lt;br /&gt;
     Network device support -&amp;gt;&lt;br /&gt;
          Wireless LAN -&amp;gt;&lt;br /&gt;
               Realtek rtlwifi family of devices -&amp;gt;&lt;br /&gt;
                    [*] Realtek ..../RTL8188CE Wireless Network Adapter ???&lt;br /&gt;
                    [*] Realtek RTL8188EE Wireless Network Adapter ???&lt;br /&gt;
                    [*] Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter&lt;br /&gt;
     Staging drivers -&amp;gt;&lt;br /&gt;
          [*] Realtek RTL8188EU wireless LAN MIC driver&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
rootfs&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem packages -&amp;gt;&lt;br /&gt;
     network -&amp;gt;&lt;br /&gt;
          wpa-supplicant -&amp;gt;&lt;br /&gt;
               [*] wpa-supplicant&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/lwfinger/rtl8188eu/blob/master/rtl8188eufw.bin качаем файл]&lt;br /&gt;
&lt;br /&gt;
Модификаци инит-скрипта&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp /run/media/mmcblk0p1/wpa_supplicant.conf /etc/&lt;br /&gt;
&lt;br /&gt;
mkdir /lib/firmware/&lt;br /&gt;
mkdir /lib/firmware/rtlwifi/&lt;br /&gt;
cp /run/media/mmcblk0p1/rtl8188eufw.bin /lib/firmware/rtlwifi/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WiFi ESP ==&lt;br /&gt;
&lt;br /&gt;
[http://www.wiki.xilinx.com/Zynq+SDIO+Wifi Xilinx SDIP WiFi]&lt;br /&gt;
&lt;br /&gt;
[http://zedboard.org/content/sdio-wifi-driver-ar6103-problem Zedboard раз]&lt;br /&gt;
&lt;br /&gt;
[https://stackoverflow.com/questions/32129689/how-to-bind-sdio1-with-wi-fi-linux два]&lt;br /&gt;
&lt;br /&gt;
[http://picozed.org/content/steps-get-wlink8-working-using-petalinux-picozed picozed три]&lt;br /&gt;
&lt;br /&gt;
[http://zedboard.org/content/adding-wi-fi-and-bluetooth-connectivity-zedboard-using-murata-1dx-pmod zedboard четыре]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Оживление 2-го ядра ==&lt;br /&gt;
&lt;br /&gt;
* Находим /home/ivan/clonicus_1.2.3/build/tmp/work-shared/plnx_arm/kernel-source/arch/arm/mach-zynq/efuse.c&lt;br /&gt;
* В функции zynq_efuse_cpu_state делаем сразу ретурн тру&lt;br /&gt;
* Че-нибудь меняем в настройках ядра для пересборки&lt;br /&gt;
* Выполняем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build -c kernel -x compile -f&lt;br /&gt;
petalinux-build -c kernel -x deploy -f&lt;br /&gt;
petalinux-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Забираем image.ub&lt;br /&gt;
&lt;br /&gt;
'''ИЛИ'''&lt;br /&gt;
&lt;br /&gt;
Правим device-tree, заменяем адрес efuse на 0xf800cff0&lt;br /&gt;
&lt;br /&gt;
== webserver == &lt;br /&gt;
&lt;br /&gt;
* [https://github.com/emlid/ReachView Репозиторий emlid ReachView] (bnd на py/Flask, fnd на html/Ajax/js/Bootstrap)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Backend:'''&lt;br /&gt;
&lt;br /&gt;
* [http://svenand.blogdrives.com/archive/195.html#.XPTYt4gzaUk Источник по busybox-httpd]&lt;br /&gt;
&lt;br /&gt;
* [https://www.afternerd.com/blog/python-http-server/ Гайд по python server]&lt;br /&gt;
&lt;br /&gt;
* [https://ru.wikibooks.org/wiki/Flask Викиучебник по Flask]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/193242/ ХаброГайд по python/Flask]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Frontend:'''&lt;br /&gt;
&lt;br /&gt;
* [https://unminify.com/ unminify CSS]&lt;br /&gt;
&lt;br /&gt;
* [https://getbootstrap.com/docs/4.3/getting-started/introduction/ Bootstrap EN getting started]&lt;br /&gt;
&lt;br /&gt;
* [https://bootstrap-4.ru/ Bootstrap RU]&lt;br /&gt;
&lt;br /&gt;
* [http://htmlbook.ru/samhtml/tekst/spetssimvoly Справочник по операторам и тегам HTML/CSS]&lt;br /&gt;
&lt;br /&gt;
* [https://www.w3schools.com/howto/default.asp Сборник шаблонов CSS W3schools]&lt;br /&gt;
&lt;br /&gt;
* [https://www.w3schools.com/w3css/w3css_tabulators.asp Анимированный сайдбар/табы]&lt;br /&gt;
&lt;br /&gt;
* [https://css-tricks.com/ CSS Tricks]&lt;br /&gt;
&lt;br /&gt;
* [https://www.cssmatic.com/ Онлайн тени/границы/градиент блоков]&lt;br /&gt;
&lt;br /&gt;
* [https://internetingishard.com/html-and-css/semantic-html/ Semantic HTML grid layout]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/202408/ Хаброгайд(ч1) по верстке]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/211032/ ХаброГайд(ч2) по Bootstrap]&lt;br /&gt;
&lt;br /&gt;
* [https://fontawesome.com/icons?d=gallery Fontawesome ICONS open lib]&lt;br /&gt;
&lt;br /&gt;
:* [https://htmlacademy.ru/courses/43/run/1 Нормальный онлайн HTML/CSS/JS editor]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== busybox httpd ===&lt;br /&gt;
В petalinux многие пакеты скукожены до их минимальных вариантов и встроены в общий пакет busybox. &lt;br /&gt;
В busybox есть также и вебсервер busybox-httpd.&lt;br /&gt;
Для использования нужно на этапе настройки файловой системы его включить:&lt;br /&gt;
&lt;br /&gt;
 $ petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
Конфиг: &lt;br /&gt;
 base -&amp;gt;&lt;br /&gt;
     busybox -&amp;gt;&lt;br /&gt;
          [*] busybox&lt;br /&gt;
          [*] busybox-httpd&lt;br /&gt;
          [ ] busybox-hwclock&lt;br /&gt;
          [*] busybox-inetd&lt;br /&gt;
          [*] busybox-mdev&lt;br /&gt;
          [ ] busybox-syslog &lt;br /&gt;
          [*] busybox-udhcpc &lt;br /&gt;
          [ ] busybox-udhcpd &lt;br /&gt;
&lt;br /&gt;
Сам httpd будет в '''/usr/sbin'''.&lt;br /&gt;
Рабочая папка по умолчанию в '''/srv/www/'''. Если в нее кидать файлы, то именно из нее будет отображаться контент в браузере. Папку можно изменить, перезапустив httpd с ключом -h &amp;lt;workdir&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Порт по умолчанию 80. Работает, как демон в /etc/init.d/, вкл-выкл оттуда же.&lt;br /&gt;
&lt;br /&gt;
Если положить в /srv/www/ файл index.html с неким кодом, то в браузере отобразится вебморда. Картинки работают по ссылкам.&lt;br /&gt;
&lt;br /&gt;
'''index.html'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Transitional//EN&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;clonicus'112 webserver&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h3&amp;gt;Hello, World!&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Web server is now up!&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;https://i.redd.it/oagz5eobkkt11.jpg&amp;quot; width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;http://www.srns.ru&amp;quot;&amp;gt;For more information see SRNS.ru&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== python в petalinux ===&lt;br /&gt;
В petalinux 2017.4 есть 2 питона - 2.7 и 3.5.&lt;br /&gt;
&lt;br /&gt;
 $ petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
'''python2.7'''&lt;br /&gt;
  Filesystem Packages-&amp;gt;&lt;br /&gt;
     devel-&amp;gt;&lt;br /&gt;
         python-&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''python3.5'''&lt;br /&gt;
  Filesystem Packages-&amp;gt;&lt;br /&gt;
     misc-&amp;gt;&lt;br /&gt;
         python3-*&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модуль runpy.py для запуска команд вида 'python -m &amp;lt;module&amp;gt;' находится в python -&amp;gt; python-misc. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SimpleHTTPServer.py ===&lt;br /&gt;
Для первого теста поднимем встроенный в python2.7 минисервер SimpleHTTPServer.py в /usr/lib/python2.7. &lt;br /&gt;
&lt;br /&gt;
Для его запуска напишем скрипт&lt;br /&gt;
&lt;br /&gt;
'''webserver.py''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import SimpleHTTPServer &lt;br /&gt;
import SocketServer &lt;br /&gt;
 &lt;br /&gt;
PORT = 80 &lt;br /&gt;
 &lt;br /&gt;
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler &lt;br /&gt;
 &lt;br /&gt;
httpd = SocketServer.TCPServer((&amp;quot;&amp;quot;, PORT), Handler) &lt;br /&gt;
 &lt;br /&gt;
print &amp;quot;serving at port&amp;quot;, PORT &lt;br /&gt;
httpd.serve_forever()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 $ python webserver.py &lt;br /&gt;
&lt;br /&gt;
При наличии в папке со скриптом файла index.html сервер поднимется автоматически.&lt;br /&gt;
&lt;br /&gt;
=== Добавление слоев в сборку ===&lt;br /&gt;
&lt;br /&gt;
[https://www.srns.ru/wiki/Blog:DneprovD/18.07.2019_Yocto_layers Переехало в статью]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:HOWTO]]&lt;br /&gt;
[[Категория:Oryx]]&lt;br /&gt;
[[Категория:Zynq]]&lt;br /&gt;
[[Категория:EmbeddedLinux]]&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
&lt;br /&gt;
{{wl-publish: 2018-05-16 10:06:30 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/16.05.2018_PetaLinux</id>
		<title>Blog:Lipa/16.05.2018 PetaLinux</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/16.05.2018_PetaLinux"/>
				<updated>2021-03-30T11:32:20Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* SWDT System Watchdog Timer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Petalinux.png|400px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сборка PetaLinux для кастомной железки&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма2}}&lt;br /&gt;
&lt;br /&gt;
== Требования ==&lt;br /&gt;
&lt;br /&gt;
Vivado 2018.1 (для single-gigabit ethernet можно более ранние версии)&lt;br /&gt;
&lt;br /&gt;
Начиная с petalinux_2018.1 отсутствует devcfg. Необходимо использовать FPGA manager. Технология нами пока не освоена&lt;br /&gt;
&lt;br /&gt;
Необходима Ubuntu-16.04&lt;br /&gt;
&lt;br /&gt;
Требуется поставить ряд пакетов, полный список приведен в документе [https://www.xilinx.com/support/documentation/sw_manuals/xilinx2019_1/ug1144-petalinux-tools-reference-guide.pdf#page=9 UG1144]&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PetaLinux в систему. Дистрибутив есть на [https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/2018-1.html Xilinx], либо у меня на компьютере. '''Ставить PetaLinux необходимо БЕЗ прав суперюзера!'''&lt;br /&gt;
&lt;br /&gt;
кидаем в /components/yocto/ sstate-rel-v2017.4.tar.gz&lt;br /&gt;
&lt;br /&gt;
Подготовка завершена&lt;br /&gt;
&lt;br /&gt;
== Правка Vivado ==&lt;br /&gt;
&lt;br /&gt;
Для поддержки MDIO в Vivado 17.1-17.4 нужен [https://www.xilinx.com/support/answers/69132.html патч]. Ставим!&lt;br /&gt;
&lt;br /&gt;
'''Не помогло.''' Ставим 2018.1&lt;br /&gt;
&lt;br /&gt;
== Сборка ==&lt;br /&gt;
&lt;br /&gt;
Пошаговое руководство по сборке содержится в документе UG1156&lt;br /&gt;
&lt;br /&gt;
В консоли пишем source/[путь к петалинух]/settings.sh&lt;br /&gt;
&lt;br /&gt;
Выполняем шаги из UG1156 по главе 5:&lt;br /&gt;
&lt;br /&gt;
* экспортируем из Vivado .hdf (в блок дизайн File-&amp;gt;Export-&amp;gt;Export Hardware)&lt;br /&gt;
&lt;br /&gt;
* создаем проект PetaLinux&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-create --type project --template zynq --name &amp;lt;PROJECT&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* переходим в папку с текущим проектом&lt;br /&gt;
&lt;br /&gt;
* подключаем файл .hdf&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config --get-hw-description=[путь к папке с файлом .hdf]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* перед сборкой системы необходимо выполнить '''все''' команды конфигурации в данной последовательности:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&lt;br /&gt;
$ petalinux-config -c kernel&lt;br /&gt;
&lt;br /&gt;
$ petalinux-config -c rootfs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config ===&lt;br /&gt;
&lt;br /&gt;
Если хотим спользовать внешний файл device-tree включаем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Subsystem AUTO Hardware Settings-&amp;gt;&lt;br /&gt;
     Advances bootable images storage settings-&amp;gt;&lt;br /&gt;
          dtb image settings-&amp;gt;&lt;br /&gt;
               image storage media&lt;br /&gt;
                    primary sd&lt;br /&gt;
               &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Необходимо править netboot offset если оперативной памяти менее ~256МБ&lt;br /&gt;
&lt;br /&gt;
Для клоникуса с 256МБ ставим 8'000'000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
u-boot Configuration-&amp;gt;&lt;br /&gt;
     netboot offset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выставляем точку начала распаковки образа системы&lt;br /&gt;
&lt;br /&gt;
Выключаем копирование образа по sftp (Image Packaging Configuration -&amp;gt; Copy final images)&lt;br /&gt;
&lt;br /&gt;
Отключаем интернет-sstate (Yocto Settings -&amp;gt; Enable Network sstate feeds)&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config -c kernel===&lt;br /&gt;
&lt;br /&gt;
* Подключаем в ядре поддержку физика и его дров.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config -c kernel&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''для oryx:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers-&amp;gt;&lt;br /&gt;
     [*]Network device support -&amp;gt;&lt;br /&gt;
          [*]Ethernet driver support -&amp;gt;&lt;br /&gt;
               [*] Micrel devices&lt;br /&gt;
          [*] PHY Device support and infastructure --&amp;gt;&lt;br /&gt;
               [*] Drivers for Micrel PHYs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''для clonicus:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers-&amp;gt;&lt;br /&gt;
     [*]Network device support -&amp;gt;&lt;br /&gt;
          [*] PHY Device support and infastructure --&amp;gt;&lt;br /&gt;
               [*] Texas Instruments DP83867 Gigabit PHY&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config -c rootfs ===&lt;br /&gt;
&lt;br /&gt;
Подключаем при необходимости ethtool, gdbserver(просто gdb не заработал), libstdc, libgcc, glib2.0, glibc(glibc &amp;amp; ltd)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages-&amp;gt;&lt;br /&gt;
     misc -&amp;gt;&lt;br /&gt;
          gcc-runtime -&amp;gt;&lt;br /&gt;
               [*] libstdc ++&lt;br /&gt;
          gdb --&amp;gt;&lt;br /&gt;
               [*] gdb&lt;br /&gt;
          glib-2.0&lt;br /&gt;
               [*] glib-2.0&lt;br /&gt;
          glibc&lt;br /&gt;
               [*] glibc&lt;br /&gt;
               [*] ldd&lt;br /&gt;
     devel -&amp;gt;&lt;br /&gt;
          python -&amp;gt;&lt;br /&gt;
               python -&amp;gt;&lt;br /&gt;
                    [*] python&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Опционально:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages-&amp;gt;&lt;br /&gt;
     base -&amp;gt;&lt;br /&gt;
          i2c-tools -&amp;gt;&lt;br /&gt;
               [*] i2c-tools&lt;br /&gt;
          usbutils -&amp;gt;&lt;br /&gt;
               [*] usbutils&lt;br /&gt;
     console -&amp;gt;&lt;br /&gt;
          network -&amp;gt;&lt;br /&gt;
               ethtool -&amp;gt;&lt;br /&gt;
                    [*] ethtool // необходимо для oryx! для перенастройки autonegotiation&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Можно еще подключать дебаг i2c&lt;br /&gt;
&lt;br /&gt;
'''Необходимо убедиться, что  образ может распаковаться в размер оперативы'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Если будут проблемы, то надо будет править netboot offset&lt;br /&gt;
&lt;br /&gt;
=== device tree ===&lt;br /&gt;
&lt;br /&gt;
Если необходимо внести изменения в device tree, то смотрим конец статьи&lt;br /&gt;
&lt;br /&gt;
[https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841676/U-Boot+Flattened+Device+Tree Интересная статья по правке devicetree из uboot]&lt;br /&gt;
&lt;br /&gt;
=== Сборка проекта ===&lt;br /&gt;
&lt;br /&gt;
* далее (сборка идет 30-60 минут)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build&lt;br /&gt;
&lt;br /&gt;
cd /images/linux/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* делаем boot.bin в папке /images/linux/&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --u-boot --force&lt;br /&gt;
&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --fpga name.bit --u-boot --force&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --fpga name.bit --u-boot --kernel --force&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* записываем в загрузочную область флешки файлы boot.bin и image.ub&lt;br /&gt;
&lt;br /&gt;
== Всякое ==&lt;br /&gt;
&lt;br /&gt;
Если мало памяти как у нас - возможна ошибка image is not a fdt [https://forums.xilinx.com/t5/Embedded-Processor-System-Design/Petalinux-problem-on-custom-board-quot-image-is-not-a-fdt-quot/td-p/754892 ссылка]&lt;br /&gt;
&lt;br /&gt;
Необходимо править netboot offset&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
u-boot Configuration-&amp;gt;&lt;br /&gt;
     netboot offset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Можно вручную загрузиться из u-boot'а.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ fatload mmc 0 0xA000000 image.ub&lt;br /&gt;
$ bootm 0xA000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
либо&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ fatload mmc 0 0xA000000 image.ub&lt;br /&gt;
$ fatload mmc 0 0x9000000 system.dtb&lt;br /&gt;
$ bootm 0xA000000 0xA000000 0x9000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Можно поварьировать адрес&lt;br /&gt;
&lt;br /&gt;
------------&lt;br /&gt;
&lt;br /&gt;
Проверка статуса прошитости FPGA&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat /sys/class/xdevcfg/xdevcfg/device/prog_done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Uboot==&lt;br /&gt;
&lt;br /&gt;
Для внесения правок в загрузку линукса используем список команд '''env'''&lt;br /&gt;
&lt;br /&gt;
Просмотр текущих команд '''printenv'''&lt;br /&gt;
&lt;br /&gt;
Сброс настроек в дефолт '''env default -a'''&lt;br /&gt;
&lt;br /&gt;
Создать переменную '''env set &amp;lt;имя&amp;gt; &amp;lt;значение&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Правка переменной '''env edit &amp;lt;имя переменной&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Для каждой платы делаем следующее:&lt;br /&gt;
&lt;br /&gt;
* Берем [[Файл:uboot.env.c]]&lt;br /&gt;
&lt;br /&gt;
* Удаляем в конце имени &amp;quot;.c&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Записываем на флешку рядом с образом линукса&lt;br /&gt;
&lt;br /&gt;
* Запускаем плату и прерываем autoboot&lt;br /&gt;
&lt;br /&gt;
* Пишем '''editenv ethaddr'''&lt;br /&gt;
&lt;br /&gt;
* Редактируем MAC-адрес&lt;br /&gt;
&lt;br /&gt;
* Пишем '''saveenv'''&lt;br /&gt;
&lt;br /&gt;
* Все! можем ребутать '''reset'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Сохранить в файл '''saveenv'''&lt;br /&gt;
&lt;br /&gt;
==Автозапуск приложений==&lt;br /&gt;
&lt;br /&gt;
Во-первых [https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-Runnning-a-script-file-at-startup/td-p/689051 тыц]&lt;br /&gt;
&lt;br /&gt;
Далее пишем&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-create -t apps --template install -n myapp-init --enable&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим файл /project-spec/meta-user/recipes-apps/myapp-init/myapp-init.bb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file is the myapp-init recipe.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
SUMMARY = &amp;quot;Simple myapp-init application&amp;quot;&lt;br /&gt;
SECTION = &amp;quot;PETALINUX/apps&amp;quot;&lt;br /&gt;
LICENSE = &amp;quot;MIT&amp;quot;&lt;br /&gt;
LIC_FILES_CHKSUM = &amp;quot;file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302&amp;quot;&lt;br /&gt;
&lt;br /&gt;
SRC_URI = &amp;quot;file://myapp-init&amp;quot;&lt;br /&gt;
&lt;br /&gt;
S = &amp;quot;${WORKDIR}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILESEXTRAPATHS_prepend := &amp;quot;${THISDIR}/files:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
inherit update-rc.d&lt;br /&gt;
&lt;br /&gt;
INITSCRIPT_NAME = &amp;quot;myapp-init&amp;quot;&lt;br /&gt;
INITSCRIPT_PARAMS = &amp;quot;start 99 S .&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do_install() {&lt;br /&gt;
    install -d ${D}${sysconfdir}/init.d&lt;br /&gt;
    install -m 0755 ${S}/myapp-init ${D}${sysconfdir}/init.d/myapp-init&lt;br /&gt;
}&lt;br /&gt;
FILES_${PN} += &amp;quot;${sysconfdir}/*&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим сам исполняемый скрипт project-spec/meta-user/recipes-apps/myapp-init/files/myapp-init&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Autorun script&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Try run custom_init&amp;quot;&lt;br /&gt;
sh /run/media/mmcblk0p1/custom_init.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Записываем на флешку скрипт custom_init.sh с нужными командами и делаем его исполняемым&lt;br /&gt;
&lt;br /&gt;
Записываем файл interfaces&lt;br /&gt;
&lt;br /&gt;
Скачать архив: [[Файл:Init_interfaces.rar]]&lt;br /&gt;
&lt;br /&gt;
==SSH==&lt;br /&gt;
&lt;br /&gt;
Как победить сохранение ssh-ключей:&lt;br /&gt;
&lt;br /&gt;
Добавляем в init_script следующие строки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir /run/media/mmcblk0p2/.ssh&lt;br /&gt;
ln -s /run/media/mmcblk0p2/.ssh/ /home/root/&lt;br /&gt;
mkdir /run/media/mmcblk0p2/dropbear/&lt;br /&gt;
chmod 400 /run/media/mmcblk0p2/dropbear/&lt;br /&gt;
rm -r /etc/dropbear/&lt;br /&gt;
ln -s /run/media/mmcblk0p2/dropbear/ /etc/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Создается ссылка на флешку, где хранятся авторизованные пользователи&lt;br /&gt;
* Создается папка для хранения секретного ключа платы&lt;br /&gt;
* При запуске платы свежесозданный ключ заменяется тем, что лежит на флешке&lt;br /&gt;
* При первом включении платы будет создан новый ключ&lt;br /&gt;
&lt;br /&gt;
Помимо добавления указанных команд в скрипт ничего больше делать не надо&lt;br /&gt;
&lt;br /&gt;
==Daemon==&lt;br /&gt;
&lt;br /&gt;
Для настройки демона:&lt;br /&gt;
&lt;br /&gt;
* Добавляем строки в файл custom_init.sh&lt;br /&gt;
* Кидаем на загрузочный раздел флешки папку из архива [[:File:daemon.rar]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp -r /run/media/mmcblk0p1/daemon/lsb /lib/&lt;br /&gt;
cp /run/media/mmcblk0p1/daemon/receiver.conf /etc/&lt;br /&gt;
cp /run/media/mmcblk0p1/daemon/receiver /etc/init.d/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serial port на новом линуксе ===&lt;br /&gt;
Выяснилось, что без доп. настройки, в последовательный порт (dev/ttyPS0) после каждой посылки добавляются символы CR и LF. Оказалось, что и RTKLib, и софт Листопада не хотят работать с таким окончанием пакетов.&lt;br /&gt;
&lt;br /&gt;
Выше не совсем так, скорее мысль в том, что каждый символ LF (0x0A) в наших данных меняется на символы CR LF, т.е. (0x0D0A). И тогда, в нашем битовом потоке меняется размер и содержимое и парсеры работают некорректно.&lt;br /&gt;
Старый линукс на Ориксах добавляет только LF. Для решения проблемы нужно через stty выключить в настройках порта опцию '''onlcr''' (преобразовывать перевод строки в возврат каретки и новую строку).&lt;br /&gt;
&lt;br /&gt;
Сделать это удалось пока только изменив скрипт демона receiver. Для решения проблемы заходим в /run/media/mmcblk0p1/daemon/receiver, и в начале секции receiver_start() {...} добавляем команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
stty -F /dev/ttyPS0 -onlcr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==device tree==&lt;br /&gt;
&lt;br /&gt;
Для внесения изменений в device tree добавляем нужные строки в файл&lt;br /&gt;
&lt;br /&gt;
project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
[https://www.xilinx.com/support/answers/61117.html пример]&lt;br /&gt;
&lt;br /&gt;
Для разборки device-tree [http://xillybus.com/tutorials/device-tree-zynq-1 ссылка]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ dtc -I dtb -O dts -o &amp;lt;name&amp;gt;.dts &amp;lt;name&amp;gt;.dtb&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для сборки device-tree&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ dtc -I dts -O dtb -o &amp;lt;name&amp;gt;.dtb &amp;lt;name&amp;gt;.dts&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Модификация device-tree ==&lt;br /&gt;
&lt;br /&gt;
После долгих мучений получилось поднять DP83867 только после добавления модификатора в файл [https://forums.xilinx.com/t5/Embedded-Linux/ZC702-Like-Board-with-DP83867CR-Ethernet-Petalinux-2017-4/td-p/831873 волшебная статья]&lt;br /&gt;
&lt;br /&gt;
[https://www.kernel.org/doc/Documentation/devicetree/bindings/net/ti%2Cdp83867.txt описание параметров]&lt;br /&gt;
&lt;br /&gt;
project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
=== Single Kit-board eth ===&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth1(с mdio) и выключен eth0.&lt;br /&gt;
&lt;br /&gt;
'''Так работает'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem1{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@12 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;12&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Начало скрытого блока|Выравнивание_заголовка = left| Ссылка = left|Заголовок =  Развернутый .dtb:}}&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/dts-v1/;&lt;br /&gt;
&lt;br /&gt;
/ {&lt;br /&gt;
	#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
	#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
	compatible = &amp;quot;xlnx,zynq-7000&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	cpus {&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
		cpu@0 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9&amp;quot;;&lt;br /&gt;
			device_type = &amp;quot;cpu&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x3&amp;gt;;&lt;br /&gt;
			clock-latency = &amp;lt;0x3e8&amp;gt;;&lt;br /&gt;
			cpu0-supply = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			operating-points = &amp;lt;0xa2c2a 0xf4240 0x51615 0xf4240&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		cpu@1 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9&amp;quot;;&lt;br /&gt;
			device_type = &amp;quot;cpu&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x3&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	fpga-full {&lt;br /&gt;
		compatible = &amp;quot;fpga-region&amp;quot;;&lt;br /&gt;
		fpga-mgr = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		ranges;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	pmu@f8891000 {&lt;br /&gt;
		compatible = &amp;quot;arm,cortex-a9-pmu&amp;quot;;&lt;br /&gt;
		interrupts = &amp;lt;0x0 0x5 0x4 0x0 0x6 0x4&amp;gt;;&lt;br /&gt;
		interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		reg = &amp;lt;0xf8891000 0x1000 0xf8893000 0x1000&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	fixedregulator {&lt;br /&gt;
		compatible = &amp;quot;regulator-fixed&amp;quot;;&lt;br /&gt;
		regulator-name = &amp;quot;VCCPINT&amp;quot;;&lt;br /&gt;
		regulator-min-microvolt = &amp;lt;0xf4240&amp;gt;;&lt;br /&gt;
		regulator-max-microvolt = &amp;lt;0xf4240&amp;gt;;&lt;br /&gt;
		regulator-boot-on;&lt;br /&gt;
		regulator-always-on;&lt;br /&gt;
		linux,phandle = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
		phandle = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	amba {&lt;br /&gt;
		u-boot,dm-pre-reloc;&lt;br /&gt;
		compatible = &amp;quot;simple-bus&amp;quot;;&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		ranges;&lt;br /&gt;
&lt;br /&gt;
		adc@f8007100 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-xadc-1.00.a&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8007100 0x20&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x7 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xc&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		can@e0008000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-can-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x13 0x1 0x24&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;can_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0008000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1c 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			tx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			rx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		can@e0009000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-can-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x14 0x1 0x25&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;can_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0009000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x33 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			tx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			rx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		gpio@e000a000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-gpio-1.0&amp;quot;;&lt;br /&gt;
			#gpio-cells = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x2a&amp;gt;;&lt;br /&gt;
			gpio-controller;&lt;br /&gt;
			interrupt-controller;&lt;br /&gt;
			#interrupt-cells = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x14 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe000a000 0x1000&amp;gt;;&lt;br /&gt;
			emio-gpio-width = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			gpio-mask-high = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			gpio-mask-low = &amp;lt;0x5600&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		i2c@e0004000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x26&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x19 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0004000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		i2c@e0005000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x27&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x30 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0005000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		interrupt-controller@f8f01000 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-gic&amp;quot;;&lt;br /&gt;
			#interrupt-cells = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
			interrupt-controller;&lt;br /&gt;
			reg = &amp;lt;0xf8f01000 0x1000 0xf8f00100 0x100&amp;gt;;&lt;br /&gt;
			num_cpus = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			num_interrupts = &amp;lt;0x60&amp;gt;;&lt;br /&gt;
			linux,phandle = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		cache-controller@f8f02000 {&lt;br /&gt;
			compatible = &amp;quot;arm,pl310-cache&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f02000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2 0x4&amp;gt;;&lt;br /&gt;
			arm,data-latency = &amp;lt;0x3 0x2 0x2&amp;gt;;&lt;br /&gt;
			arm,tag-latency = &amp;lt;0x2 0x2 0x2&amp;gt;;&lt;br /&gt;
			cache-unified;&lt;br /&gt;
			cache-level = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		memory-controller@f8006000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-ddrc-a05&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8006000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ocmc@f800c000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-ocmc-1.0&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x3 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf800c000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		serial@e0000000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,xuartps&amp;quot;, &amp;quot;cdns,uart-r1p8&amp;quot;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x17 0x1 0x28&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;uart_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0000000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1b 0x4&amp;gt;;&lt;br /&gt;
			device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
			port-number = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		serial@e0001000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,xuartps&amp;quot;, &amp;quot;cdns,uart-r1p8&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x18 0x1 0x29&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;uart_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0001000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x32 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e0006000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-spi-r1p6&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0006000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1a 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x19 0x1 0x22&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e0007000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-spi-r1p6&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0007000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x31 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1a 0x1 0x23&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e000d000 {&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xa 0x1 0x2b&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-qspi-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x13 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe000d000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		memory-controller@e000e000 {&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;memclk&amp;quot;, &amp;quot;aclk&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xb 0x1 0x2c&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;arm,pl353-smc-r2p1&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x12 0x4&amp;gt;;&lt;br /&gt;
			ranges;&lt;br /&gt;
			reg = &amp;lt;0xe000e000 0x1000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			flash@e1000000 {&lt;br /&gt;
				status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
				compatible = &amp;quot;arm,pl353-nand-r2p1&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0xe1000000 0x1000000&amp;gt;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			flash@e2000000 {&lt;br /&gt;
				status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
				compatible = &amp;quot;cfi-flash&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0xe2000000 0x2000000&amp;gt;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ethernet@e000b000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,zynq-gem&amp;quot;, &amp;quot;cdns,gem&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe000b000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x16 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1e 0x1 0x1e 0x1 0xd&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;pclk&amp;quot;, &amp;quot;hclk&amp;quot;, &amp;quot;tx_clk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ethernet@e000c000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,zynq-gem&amp;quot;, &amp;quot;cdns,gem&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe000c000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2d 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1f 0x1 0x1f 0x1 0xe&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;pclk&amp;quot;, &amp;quot;hclk&amp;quot;, &amp;quot;tx_clk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
			xlnx,ptp-enet-clock = &amp;lt;0x69f6bcb&amp;gt;;&lt;br /&gt;
			local-mac-address = [00 0a 35 00 22 01];&lt;br /&gt;
			phy-handle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
			xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			mdio {&lt;br /&gt;
				status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
				phy@12 {&lt;br /&gt;
					compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
					device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
					reg = &amp;lt;0xc&amp;gt;;&lt;br /&gt;
					ti,rx-internal-delay = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
					ti,tx-internal-delay = &amp;lt;0xa&amp;gt;;&lt;br /&gt;
					ti,fifo-depth = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
					ti,min-output-impedance;&lt;br /&gt;
					ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
					status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
					linux,phandle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
					phandle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
				};&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		sdhci@e0100000 {&lt;br /&gt;
			compatible = &amp;quot;arasan,sdhci-8.9a&amp;quot;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;clk_xin&amp;quot;, &amp;quot;clk_ahb&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x15 0x1 0x20&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x18 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0100000 0x1000&amp;gt;;&lt;br /&gt;
			xlnx,has-cd = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			xlnx,has-power = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			xlnx,has-wp = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		sdhci@e0101000 {&lt;br /&gt;
			compatible = &amp;quot;arasan,sdhci-8.9a&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;clk_xin&amp;quot;, &amp;quot;clk_ahb&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x16 0x1 0x21&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2f 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0101000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		slcr@f8000000 {&lt;br /&gt;
			u-boot,dm-pre-reloc;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-slcr&amp;quot;, &amp;quot;syscon&amp;quot;, &amp;quot;simple-mfd&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8000000 0x1000&amp;gt;;&lt;br /&gt;
			ranges;&lt;br /&gt;
			linux,phandle = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			clkc@100 {&lt;br /&gt;
				u-boot,dm-pre-reloc;&lt;br /&gt;
				#clock-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				compatible = &amp;quot;xlnx,ps7-clkc&amp;quot;;&lt;br /&gt;
				fclk-enable = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
				clock-output-names = &amp;quot;armpll&amp;quot;, &amp;quot;ddrpll&amp;quot;, &amp;quot;iopll&amp;quot;, &amp;quot;cpu_6or4x&amp;quot;, &amp;quot;cpu_3or2x&amp;quot;, &amp;quot;cpu_2x&amp;quot;, &amp;quot;cpu_1x&amp;quot;, &amp;quot;ddr2x&amp;quot;, &amp;quot;ddr3x&amp;quot;, &amp;quot;dci&amp;quot;, &amp;quot;lqspi&amp;quot;, &amp;quot;smc&amp;quot;, &amp;quot;pcap&amp;quot;, &amp;quot;gem0&amp;quot;, &amp;quot;gem1&amp;quot;, &amp;quot;fclk0&amp;quot;, &amp;quot;fclk1&amp;quot;, &amp;quot;fclk2&amp;quot;, &amp;quot;fclk3&amp;quot;, &amp;quot;can0&amp;quot;, &amp;quot;can1&amp;quot;, &amp;quot;sdio0&amp;quot;, &amp;quot;sdio1&amp;quot;, &amp;quot;uart0&amp;quot;, &amp;quot;uart1&amp;quot;, &amp;quot;spi0&amp;quot;, &amp;quot;spi1&amp;quot;, &amp;quot;dma&amp;quot;, &amp;quot;usb0_aper&amp;quot;, &amp;quot;usb1_aper&amp;quot;, &amp;quot;gem0_aper&amp;quot;, &amp;quot;gem1_aper&amp;quot;, &amp;quot;sdio0_aper&amp;quot;, &amp;quot;sdio1_aper&amp;quot;, &amp;quot;spi0_aper&amp;quot;, &amp;quot;spi1_aper&amp;quot;, &amp;quot;can0_aper&amp;quot;, &amp;quot;can1_aper&amp;quot;, &amp;quot;i2c0_aper&amp;quot;, &amp;quot;i2c1_aper&amp;quot;, &amp;quot;uart0_aper&amp;quot;, &amp;quot;uart1_aper&amp;quot;, &amp;quot;gpio_aper&amp;quot;, &amp;quot;lqspi_aper&amp;quot;, &amp;quot;smc_aper&amp;quot;, &amp;quot;swdt&amp;quot;, &amp;quot;dbg_trc&amp;quot;, &amp;quot;dbg_apb&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x100 0x100&amp;gt;;&lt;br /&gt;
				ps-clk-frequency = &amp;lt;0x1fca055&amp;gt;;&lt;br /&gt;
				linux,phandle = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				phandle = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			rstc@200 {&lt;br /&gt;
				compatible = &amp;quot;xlnx,zynq-reset&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x200 0x48&amp;gt;;&lt;br /&gt;
				#reset-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			pinctrl@700 {&lt;br /&gt;
				compatible = &amp;quot;xlnx,pinctrl-zynq&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x700 0x200&amp;gt;;&lt;br /&gt;
				syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		dmac@f8003000 {&lt;br /&gt;
			compatible = &amp;quot;arm,pl330&amp;quot;, &amp;quot;arm,primecell&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8003000 0x1000&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupt-names = &amp;quot;abort&amp;quot;, &amp;quot;dma0&amp;quot;, &amp;quot;dma1&amp;quot;, &amp;quot;dma2&amp;quot;, &amp;quot;dma3&amp;quot;, &amp;quot;dma4&amp;quot;, &amp;quot;dma5&amp;quot;, &amp;quot;dma6&amp;quot;, &amp;quot;dma7&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0xd 0x4 0x0 0xe 0x4 0x0 0xf 0x4 0x0 0x10 0x4 0x0 0x11 0x4 0x0 0x28 0x4 0x0 0x29 0x4 0x0 0x2a 0x4 0x0 0x2b 0x4&amp;gt;;&lt;br /&gt;
			#dma-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#dma-channels = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
			#dma-requests = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1b&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;apb_pclk&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		devcfg@f8007000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-devcfg-1.0&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x8 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8007000 0x100&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xc 0x1 0xf 0x1 0x10 0x1 0x11 0x1 0x12&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;fclk0&amp;quot;, &amp;quot;fclk1&amp;quot;, &amp;quot;fclk2&amp;quot;, &amp;quot;fclk3&amp;quot;;&lt;br /&gt;
			syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			linux,phandle = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		efuse@f800d000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-efuse&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf800d000 0x20&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8f00200 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-global-timer&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f00200 0x20&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x1 0xb 0x301&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8001000 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0xa 0x4 0x0 0xb 0x4 0x0 0xc 0x4&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,ttc&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x6&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8001000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8002000 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x25 0x4 0x0 0x26 0x4 0x0 0x27 0x4&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,ttc&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x6&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8002000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8f00600 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x1 0xd 0x301&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-twd-timer&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f00600 0x20&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		usb@e0002000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-usb-2.20a&amp;quot;, &amp;quot;chipidea,usb2&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1c&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x15 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0002000 0x1000&amp;gt;;&lt;br /&gt;
			phy_type = &amp;quot;ulpi&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		usb@e0003000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-usb-2.20a&amp;quot;, &amp;quot;chipidea,usb2&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1d&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2c 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0003000 0x1000&amp;gt;;&lt;br /&gt;
			phy_type = &amp;quot;ulpi&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		watchdog@f8005000 {&lt;br /&gt;
			clocks = &amp;lt;0x1 0x2d&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,wdt-r1p2&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x9 0x1&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8005000 0x1000&amp;gt;;&lt;br /&gt;
			timeout-sec = &amp;lt;0xa&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	chosen {&lt;br /&gt;
		bootargs = &amp;quot;console=ttyPS0,115200 earlyprintk&amp;quot;;&lt;br /&gt;
		stdout-path = &amp;quot;serial0:115200n8&amp;quot;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	aliases {&lt;br /&gt;
		ethernet0 = &amp;quot;/amba/ethernet@e000c000&amp;quot;;&lt;br /&gt;
		serial0 = &amp;quot;/amba/serial@e0000000&amp;quot;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	memory {&lt;br /&gt;
		device_type = &amp;quot;memory&amp;quot;;&lt;br /&gt;
		reg = &amp;lt;0x0 0x10000000&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
{{Конец скрытого блока}}&lt;br /&gt;
&lt;br /&gt;
=== Single On-board eth ===&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth0(с mdio) и выключен eth1.&lt;br /&gt;
&lt;br /&gt;
'''Работает гигабит через type-c! Работает hot plug. Успех.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@0 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dual eth ===&lt;br /&gt;
&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Dual-phys-on-MDIO-EMIO/td-p/737716 интересная статья о дуал eth]&lt;br /&gt;
&lt;br /&gt;
Попытка поднять два физика. '''Пока не работает'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    local-mac-address = [00 0a 35 00 00 00];&lt;br /&gt;
    enet-reset = &amp;lt;&amp;amp;gpio0 47 0&amp;gt;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@0 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x8&amp;gt;; &lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0xa&amp;gt;; &lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;; &lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
        phy1: phy@12 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;12&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x8&amp;gt;; &lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0xa&amp;gt;; &lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;; &lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gem1{&lt;br /&gt;
    local-mac-address = [00 0a 35 00 00 01];&lt;br /&gt;
    enet-reset = &amp;lt;&amp;amp;gpio0 47 0&amp;gt;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy1&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Oryx ===&lt;br /&gt;
&lt;br /&gt;
Итоговый system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
Меняем номера uart, чтобы системным был ttyPS1, а пользовательским ttyPS0&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
/ {&lt;br /&gt;
    aliases {&lt;br /&gt;
        serial0 = &amp;amp;uart0;&lt;br /&gt;
        serial1 = &amp;amp;uart1;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@1 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
            rxc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            rxdv-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            txc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            txen-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;1&amp;gt;;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/ {&lt;br /&gt;
    chosen {&lt;br /&gt;
            bootargs = &amp;quot;console=ttyPS1,115200 earlyprintk uio_pdrv_genirq.of_id=generic-uio&amp;quot;;&lt;br /&gt;
            stdout-path = &amp;quot;serial1:115200n8&amp;quot;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    hififo: hififo@40000000 {&lt;br /&gt;
            compatible = &amp;quot;generic-uio&amp;quot;;&lt;br /&gt;
            interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
            interrupts = &amp;lt;0 29 1&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;0x40000000 0x1000 0x18000000 0x8000000&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;uart0{&lt;br /&gt;
    port-number = &amp;lt;0&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;uart1{&lt;br /&gt;
    port-number = &amp;lt;1&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth0(с mdio) и выключен eth1.&lt;br /&gt;
Pullup пока что все включены&lt;br /&gt;
&lt;br /&gt;
[https://github.com/Xilinx/u-boot-xlnx/blob/master/doc/device-tree-bindings/net/micrel-ksz90x1.txt статья в помощь]&lt;br /&gt;
&lt;br /&gt;
'''Работает'''&lt;br /&gt;
&lt;br /&gt;
На новых платах(с отпаянными линиями линиями eth):&lt;br /&gt;
* на полноценных проводах с ходу&lt;br /&gt;
* на обкусанных проводах только если выставить 10 в ethtool&lt;br /&gt;
&lt;br /&gt;
На старых платах:&lt;br /&gt;
&lt;br /&gt;
* на полноценных проводах только если выставить 100 в ethtool&lt;br /&gt;
* на обкусанных проводах только если выставить 10 в ethtool&lt;br /&gt;
&lt;br /&gt;
Везде работает так:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ethtool -s eth0 speed 10 duplex full autoneg on&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Спидометр показывает 2,5МБ/с, т.е. 20Мбит/с!&lt;br /&gt;
&lt;br /&gt;
Можно в custom_itit.sh прописать:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ifdown eth0&lt;br /&gt;
ethtool -s eth0 speed 10 duplex full autoneg on&lt;br /&gt;
ifup eth0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@1 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
            rxc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            rxdv-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            txc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            txen-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;1&amp;gt;;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В принципе, работает сеть на новой плате с нормальным кабелем без модификации devicetree. Остальные комбинации плат-кабелей надо проверять&lt;br /&gt;
&lt;br /&gt;
== i2c ==&lt;br /&gt;
&lt;br /&gt;
В rootfs включаем&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages -&amp;gt;&lt;br /&gt;
     base -&amp;gt;&lt;br /&gt;
          i2c-tools -&amp;gt;&lt;br /&gt;
               [*] i2c-tools&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для поиска устройств можно написать&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i2cdetect -y -r 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842160/Cadence+I2C+Driver Статья] по i2c и RTC&lt;br /&gt;
&lt;br /&gt;
== QSPI Flash ==&lt;br /&gt;
&lt;br /&gt;
для работы по флешь памяти как в ките (S25FL128S) - оставляем в дев.три родные compatible = &amp;quot;n25q512a&amp;quot;,&amp;quot;micron,m25p80&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
== SWDT System Watchdog Timer==&lt;br /&gt;
&lt;br /&gt;
* Модифицируем Uenv для настройки wawtchdog через uboot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
bootcmd=run swdt_set &amp;amp;&amp;amp; run fpga_config &amp;amp;&amp;amp; run boot_image &amp;amp;&amp;amp; run boot_dtb &amp;amp;&amp;amp; bootm 0xA000000 0xA000000 0x9000000&lt;br /&gt;
swdt_set=run swdt_ccr &amp;amp;&amp;amp; run swdt_rst &amp;amp;&amp;amp; run swdt_zmr&lt;br /&gt;
swdt_ccr=mw 0xf8005004 0x92063b&lt;br /&gt;
swdt_rst=mw 0xf8005008 0x1999&lt;br /&gt;
swdt_zmr=mw 0xf8005000 0xabc043&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Создаем скрипт для сброса watchdog:&lt;br /&gt;
&lt;br /&gt;
swdt_rst.sh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
watch -n 5 'devmem 0xf8005008 32 0x1999' &amp;amp;&amp;gt;/dev/null &amp;amp;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Добавляем вызов скрипта в автозагрузку&lt;br /&gt;
&lt;br /&gt;
== RTC ==&lt;br /&gt;
&lt;br /&gt;
* Включаем в ядро подходящий драйвер&lt;br /&gt;
&lt;br /&gt;
* Модифицируем device-tree&lt;br /&gt;
&lt;br /&gt;
Вставляем в девайс три:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    i2c0: i2c@e0004000 {&lt;br /&gt;
        clock-frequency = &amp;lt;0xC350&amp;gt;;&lt;br /&gt;
        rtc@51 {&lt;br /&gt;
                compatible = &amp;quot;nxp,pcf85363&amp;quot;;&lt;br /&gt;
                reg = &amp;lt;0x51&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
    i2c1: i2c@e0005000 {&lt;br /&gt;
        clock-frequency = &amp;lt;0xC350&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Будет выглядеть так:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i2c@e0004000 {&lt;br /&gt;
    compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    clocks = &amp;lt;0x1 0x26&amp;gt;;&lt;br /&gt;
    interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
    interrupts = &amp;lt;0x0 0x19 0x4&amp;gt;;&lt;br /&gt;
    reg = &amp;lt;0xe0004000 0x1000&amp;gt;;&lt;br /&gt;
    #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
    #size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
    clock-frequency = &amp;lt;0xc350&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    rtc@51 {&lt;br /&gt;
        compatible = &amp;quot;nxp,pcf85363&amp;quot;;&lt;br /&gt;
        reg = &amp;lt;0x51&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
i2c@e0005000 {&lt;br /&gt;
    compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    clocks = &amp;lt;0x1 0x27&amp;gt;;&lt;br /&gt;
    interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
    interrupts = &amp;lt;0x0 0x30 0x4&amp;gt;;&lt;br /&gt;
    reg = &amp;lt;0xe0005000 0x1000&amp;gt;;&lt;br /&gt;
    #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
    #size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
    clock-frequency = &amp;lt;0xc350&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если готового драйвера нет:&lt;br /&gt;
&lt;br /&gt;
UG1144 pg.54&lt;br /&gt;
&lt;br /&gt;
Создаем новый модуль&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-create -t modules --name &amp;lt;name_module&amp;gt; --enable&lt;br /&gt;
petalinux-create -t modules --name rtc-pcf85363 --enable&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим исходный код в project-spec/meta-user/recipes-modules/rtc-pcf85363/files&lt;br /&gt;
&lt;br /&gt;
Исправленный драйвер лежит в git Clonicus\linux\&lt;br /&gt;
&lt;br /&gt;
Для удаления модуля:&lt;br /&gt;
&lt;br /&gt;
* удаляем папку из project-spec/meta-user/recipes-modules&lt;br /&gt;
&lt;br /&gt;
* В файле project-spec/meta-user/recipes-core/images/petalinux-image.bbappend удаляем соответствующую строку&lt;br /&gt;
&lt;br /&gt;
* переоткрыть petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
Пробуем собрать модуль&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build -c &amp;lt;name_module&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если ОК, собираем (собирать модуль необязательно, petalinux-build его соберет)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И перепаковываем BOOT.bin&lt;br /&gt;
&lt;br /&gt;
Пересобираем deveice-tree с указанием нового драйвера (petalinux-build соберет сам deveice-tree)&lt;br /&gt;
&lt;br /&gt;
просмотр модулей&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsmod&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
загрузить драйвер можно&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
insmod /lib/modules/4.9.0-xilinx-v2017.4/extra/rtc-pcf85363.ko&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
или&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe rtc-pcf85363&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Если все ок и в девайс три прописан правильный драйвер для устройства, то модуль будет загружен сам'''&lt;br /&gt;
&lt;br /&gt;
Прошиваем .bit (для клоникуса нужен бит для работы PL-i2c). После этого можно пользоваться RTC&lt;br /&gt;
&lt;br /&gt;
Чтение времени из rtc если этот rtc не дефолтный (у нас rtc2)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -r -f /dev/rtc2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Синхронизация rtc по системному времени&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -w -f /dev/rtc2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим custom_init.sh для изменения default-rtc на наше устройство&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm /dev/rtc&lt;br /&gt;
ln -s /dev/rtc2 /dev/rtc&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Установка системного времени&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
date --set &amp;quot;2013-7-31 09:30&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запись системного времени в RTC&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -w&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запись времени RTC в системное время&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -s&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Получить время с интеренета&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rdate -s &amp;lt;IP address of time server&amp;gt;&lt;br /&gt;
rdate -s 132.163.96.5 (example)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При перезагрузке &amp;quot;reboot&amp;quot; система автоматически запишет системное время в RTC&lt;br /&gt;
&lt;br /&gt;
== FPGA CONFIG from Uboot ==&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы прошить PL из uboot используем команду:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
fpga loadb 0 &amp;lt;ddr_file_addr&amp;gt; &amp;lt;file_size&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
либо скриптами:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
load_bit=fatload mmc 0 0x100000 clonicus.bit // читаем файл в ddr&lt;br /&gt;
pl_load=fpga loadb 0 0x100000 0x1400000 // прошиваем PL&lt;br /&gt;
fpga_config=run load_bit &amp;amp;&amp;amp; run pl_loadipaddr // вызов самих скриптов&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
0x10_0000 - начальный адрес ddr&lt;br /&gt;
&lt;br /&gt;
0x1_400_000 - размер в байтах для 20МБайт - указываем размер битника с запасом. Теоретически может так не работать, но работает&lt;br /&gt;
&lt;br /&gt;
== ETH over TTY==&lt;br /&gt;
&lt;br /&gt;
В ядре включаем: slip, Universal TUN/TAP&lt;br /&gt;
&lt;br /&gt;
В rootfs включаем net-tools&lt;br /&gt;
&lt;br /&gt;
Включаем iptables для перемршрутизации между подсетями и для него:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[*] Networking support  ---&amp;gt;                                          [CONFIG_NET]&lt;br /&gt;
      Networking Options  ---&amp;gt;&lt;br /&gt;
        [*] Network packet filtering framework (Netfilter) ---&amp;gt;       [CONFIG_NETFILTER]&lt;br /&gt;
          [*] Advanced netfilter configuration                        [CONFIG_NETFILTER_ADVANCED]&lt;br /&gt;
          Core Netfilter Configuration ---&amp;gt;&lt;br /&gt;
            &amp;lt;*/M&amp;gt; Netfilter connection tracking support               [CONFIG_NF_CONNTRACK]&lt;br /&gt;
            &amp;lt;*/M&amp;gt; Netfilter Xtables support (required for ip_tables)  [CONFIG_NETFILTER_XTABLES]&lt;br /&gt;
            &amp;lt;*/M&amp;gt; LOG target support                                  [CONFIG_NETFILTER_XT_TARGET_LOG]&lt;br /&gt;
          IP: Netfilter Configuration ---&amp;gt;&lt;br /&gt;
            &amp;lt;*/M&amp;gt; IP tables support (required for filtering/masq/NAT) [CONFIG_IP_NF_IPTABLES]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PC1:&lt;br /&gt;
&lt;br /&gt;
slattach -L -s 115200 -p slip /dev/ttyPS1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
ifconfig sl0 192.168.1.1/24 up&lt;br /&gt;
&lt;br /&gt;
route add default gw 192.168.1.1 sl0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PC2:&lt;br /&gt;
&lt;br /&gt;
slattach -L -s 115200 -p slip /dev/ttyPS1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
ifconfig sl0 192.168.1.2/24 up&lt;br /&gt;
&lt;br /&gt;
route add default gw 192.168.1.1 sl0&lt;br /&gt;
&lt;br /&gt;
== UART_PL ==&lt;br /&gt;
&lt;br /&gt;
Включаем в настройках ядра поддержку uart_lite, выставляем правильное максимальное число уартов&lt;br /&gt;
&lt;br /&gt;
Модифицируем system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
Обращаем внимание на нумерацию serial, axi_uartlite, она должна не повторяться. То же самое с interrupts &lt;br /&gt;
Указываем верный физический адрес на шине и диапазон адресов в &amp;lt;reg&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
/ {&lt;br /&gt;
    aliases {&lt;br /&gt;
            serial2 = &amp;amp;axi_uartlite_0;&lt;br /&gt;
            serial3 = &amp;amp;axi_uartlite_1;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
/ {&lt;br /&gt;
    amba_pl {&lt;br /&gt;
        #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
        compatible = &amp;quot;simple-bus&amp;quot;;&lt;br /&gt;
        ranges;&lt;br /&gt;
        &lt;br /&gt;
        axi_uartlite_0: serial@80000008 {&lt;br /&gt;
                clock-names = &amp;quot;ref_clk&amp;quot;;&lt;br /&gt;
                clocks = &amp;lt;&amp;amp;clkc 0&amp;gt;;&lt;br /&gt;
                compatible = &amp;quot;xlnx,xps-uartlite-1.00.a&amp;quot;;&lt;br /&gt;
                current-speed = &amp;lt;115200&amp;gt;;&lt;br /&gt;
                device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
                interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                interrupts = &amp;lt;0 30 1&amp;gt;;&lt;br /&gt;
                port-number = &amp;lt;3&amp;gt;;&lt;br /&gt;
                reg = &amp;lt;0x80000008 0x10&amp;gt;;&lt;br /&gt;
                xlnx,baudrate = &amp;lt;0x1c200&amp;gt;;&lt;br /&gt;
                xlnx,data-bits = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
                xlnx,odd-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
                xlnx,s-axi-aclk-freq-hz-d = &amp;quot;100.0&amp;quot;;&lt;br /&gt;
                xlnx,use-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
        axi_uartlite_1: serial@8000001C {&lt;br /&gt;
                clock-names = &amp;quot;ref_clk&amp;quot;;&lt;br /&gt;
                clocks = &amp;lt;&amp;amp;clkc 0&amp;gt;;&lt;br /&gt;
                compatible = &amp;quot;xlnx,xps-uartlite-1.00.a&amp;quot;;&lt;br /&gt;
                current-speed = &amp;lt;115200&amp;gt;;&lt;br /&gt;
                device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
                interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                interrupts = &amp;lt;0 31 1&amp;gt;;&lt;br /&gt;
                port-number = &amp;lt;4&amp;gt;;&lt;br /&gt;
                reg = &amp;lt;0x8000001C 0x10&amp;gt;;&lt;br /&gt;
                xlnx,baudrate = &amp;lt;0x1c200&amp;gt;;&lt;br /&gt;
                xlnx,data-bits = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
                xlnx,odd-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
                xlnx,s-axi-aclk-freq-hz-d = &amp;quot;100.0&amp;quot;;&lt;br /&gt;
                xlnx,use-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если ПЛИС не прошита - будет кернел паник&lt;br /&gt;
&lt;br /&gt;
== IRQ ==&lt;br /&gt;
&lt;br /&gt;
Для поддержки irq добавляем в device-tree&lt;br /&gt;
&lt;br /&gt;
'''Важно - мы перетираем bootargs!'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/ {&lt;br /&gt;
    chosen {&lt;br /&gt;
            bootargs = &amp;quot;console=ttyPS0,115200 earlyprintk uio_pdrv_genirq.of_id=generic-uio&amp;quot;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    hififo: hififo@40000000 {&lt;br /&gt;
                    compatible = &amp;quot;generic-uio&amp;quot;;&lt;br /&gt;
                    interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                    interrupts = &amp;lt;0 29 1&amp;gt;;&lt;br /&gt;
                    reg = &amp;lt;0x40000000 0x1000 0x18000000 0x8000000&amp;gt;;&lt;br /&gt;
            };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
&lt;br /&gt;
Запустил на Z706&lt;br /&gt;
&lt;br /&gt;
[http://www.wiki.xilinx.com/Zynq+Linux+USB+Device+Driver во-первых]&lt;br /&gt;
[http://zedboard.org/content/using-petalinux-configure-zedboard%EF%BC%8C-usb-otg-can-not-work во-вторых]&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-2016-3-zynq-7010-USB-not-working/td-p/737696 в-третьих]&lt;br /&gt;
&lt;br /&gt;
В дефолтных настройках ядра petalinux_2018.1 все было включено&lt;br /&gt;
&lt;br /&gt;
включаем ресет на MIO7 pullup disabled&lt;br /&gt;
&lt;br /&gt;
все ноги интерфейса ulpi pullup disabled&lt;br /&gt;
&lt;br /&gt;
Содержимое system-user.dtsi&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
	/{&lt;br /&gt;
&lt;br /&gt;
    usb_phy0:phy0 {&lt;br /&gt;
&lt;br /&gt;
        compatible=&amp;quot;ulpi-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        #phy-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       reg = &amp;lt;0xe0002000 0x1000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       view-port=&amp;lt;0x170&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       drv-vbus;&lt;br /&gt;
&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&amp;amp;usb0 {&lt;br /&gt;
&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        dr_mode = &amp;quot;host&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        usb-phy = &amp;lt;&amp;amp;usb_phy0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
} ;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== USB-ETHERNET ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers -&amp;gt;&lt;br /&gt;
     USB support -&amp;gt;&lt;br /&gt;
          [*] USB Modem (CDC ACM)&lt;br /&gt;
          USB Gadget Support -&amp;gt;&lt;br /&gt;
               [*] Ethernet Control Model (all)&lt;br /&gt;
               [*] RNDIS&lt;br /&gt;
               [*] Ethernet Emulation Model&lt;br /&gt;
               [*] CDC Composite Device (Ethernet and ACM)&lt;br /&gt;
               [*] USB Gadget Drivers (Ethernet gadget...)&lt;br /&gt;
     Network device support -&amp;gt;&lt;br /&gt;
          USB Network Adapters -&amp;gt;&lt;br /&gt;
               [*] Realtek RTL8152/RTL8153&lt;br /&gt;
               [*] Multi-purpose USB Networking Framework&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WiFi Dongle ==&lt;br /&gt;
&lt;br /&gt;
[https://forum.trenz-electronic.de/index.php?topic=747.0 раз]&lt;br /&gt;
[https://github.com/jinchenglee/zybo_linux_setup_doc два]&lt;br /&gt;
[http://billauer.co.il/blog/2014/06/linux-realtek-hostapd/ три]&lt;br /&gt;
&lt;br /&gt;
Творим:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Networking support -&amp;gt;&lt;br /&gt;
     Wireless -&amp;gt;&lt;br /&gt;
          [*] cfg80211&lt;br /&gt;
          [*] Generic IEEE 802.11 ... (mac80211)&lt;br /&gt;
Device Drivers -&amp;gt;&lt;br /&gt;
     Network device support -&amp;gt;&lt;br /&gt;
          Wireless LAN -&amp;gt;&lt;br /&gt;
               Realtek rtlwifi family of devices -&amp;gt;&lt;br /&gt;
                    [*] Realtek ..../RTL8188CE Wireless Network Adapter ???&lt;br /&gt;
                    [*] Realtek RTL8188EE Wireless Network Adapter ???&lt;br /&gt;
                    [*] Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter&lt;br /&gt;
     Staging drivers -&amp;gt;&lt;br /&gt;
          [*] Realtek RTL8188EU wireless LAN MIC driver&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
rootfs&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem packages -&amp;gt;&lt;br /&gt;
     network -&amp;gt;&lt;br /&gt;
          wpa-supplicant -&amp;gt;&lt;br /&gt;
               [*] wpa-supplicant&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/lwfinger/rtl8188eu/blob/master/rtl8188eufw.bin качаем файл]&lt;br /&gt;
&lt;br /&gt;
Модификаци инит-скрипта&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp /run/media/mmcblk0p1/wpa_supplicant.conf /etc/&lt;br /&gt;
&lt;br /&gt;
mkdir /lib/firmware/&lt;br /&gt;
mkdir /lib/firmware/rtlwifi/&lt;br /&gt;
cp /run/media/mmcblk0p1/rtl8188eufw.bin /lib/firmware/rtlwifi/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WiFi ESP ==&lt;br /&gt;
&lt;br /&gt;
[http://www.wiki.xilinx.com/Zynq+SDIO+Wifi Xilinx SDIP WiFi]&lt;br /&gt;
&lt;br /&gt;
[http://zedboard.org/content/sdio-wifi-driver-ar6103-problem Zedboard раз]&lt;br /&gt;
&lt;br /&gt;
[https://stackoverflow.com/questions/32129689/how-to-bind-sdio1-with-wi-fi-linux два]&lt;br /&gt;
&lt;br /&gt;
[http://picozed.org/content/steps-get-wlink8-working-using-petalinux-picozed picozed три]&lt;br /&gt;
&lt;br /&gt;
[http://zedboard.org/content/adding-wi-fi-and-bluetooth-connectivity-zedboard-using-murata-1dx-pmod zedboard четыре]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Оживление 2-го ядра ==&lt;br /&gt;
&lt;br /&gt;
* Находим /home/ivan/clonicus_1.2.3/build/tmp/work-shared/plnx_arm/kernel-source/arch/arm/mach-zynq/efuse.c&lt;br /&gt;
* В функции zynq_efuse_cpu_state делаем сразу ретурн тру&lt;br /&gt;
* Че-нибудь меняем в настройках ядра для пересборки&lt;br /&gt;
* Выполняем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build -c kernel -x compile -f&lt;br /&gt;
petalinux-build -c kernel -x deploy -f&lt;br /&gt;
petalinux-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Забираем image.ub&lt;br /&gt;
&lt;br /&gt;
'''ИЛИ'''&lt;br /&gt;
&lt;br /&gt;
Правим device-tree, заменяем адрес efuse на 0xf800cff0&lt;br /&gt;
&lt;br /&gt;
== webserver == &lt;br /&gt;
&lt;br /&gt;
* [https://github.com/emlid/ReachView Репозиторий emlid ReachView] (bnd на py/Flask, fnd на html/Ajax/js/Bootstrap)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Backend:'''&lt;br /&gt;
&lt;br /&gt;
* [http://svenand.blogdrives.com/archive/195.html#.XPTYt4gzaUk Источник по busybox-httpd]&lt;br /&gt;
&lt;br /&gt;
* [https://www.afternerd.com/blog/python-http-server/ Гайд по python server]&lt;br /&gt;
&lt;br /&gt;
* [https://ru.wikibooks.org/wiki/Flask Викиучебник по Flask]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/193242/ ХаброГайд по python/Flask]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Frontend:'''&lt;br /&gt;
&lt;br /&gt;
* [https://unminify.com/ unminify CSS]&lt;br /&gt;
&lt;br /&gt;
* [https://getbootstrap.com/docs/4.3/getting-started/introduction/ Bootstrap EN getting started]&lt;br /&gt;
&lt;br /&gt;
* [https://bootstrap-4.ru/ Bootstrap RU]&lt;br /&gt;
&lt;br /&gt;
* [http://htmlbook.ru/samhtml/tekst/spetssimvoly Справочник по операторам и тегам HTML/CSS]&lt;br /&gt;
&lt;br /&gt;
* [https://www.w3schools.com/howto/default.asp Сборник шаблонов CSS W3schools]&lt;br /&gt;
&lt;br /&gt;
* [https://www.w3schools.com/w3css/w3css_tabulators.asp Анимированный сайдбар/табы]&lt;br /&gt;
&lt;br /&gt;
* [https://css-tricks.com/ CSS Tricks]&lt;br /&gt;
&lt;br /&gt;
* [https://www.cssmatic.com/ Онлайн тени/границы/градиент блоков]&lt;br /&gt;
&lt;br /&gt;
* [https://internetingishard.com/html-and-css/semantic-html/ Semantic HTML grid layout]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/202408/ Хаброгайд(ч1) по верстке]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/211032/ ХаброГайд(ч2) по Bootstrap]&lt;br /&gt;
&lt;br /&gt;
* [https://fontawesome.com/icons?d=gallery Fontawesome ICONS open lib]&lt;br /&gt;
&lt;br /&gt;
:* [https://htmlacademy.ru/courses/43/run/1 Нормальный онлайн HTML/CSS/JS editor]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== busybox httpd ===&lt;br /&gt;
В petalinux многие пакеты скукожены до их минимальных вариантов и встроены в общий пакет busybox. &lt;br /&gt;
В busybox есть также и вебсервер busybox-httpd.&lt;br /&gt;
Для использования нужно на этапе настройки файловой системы его включить:&lt;br /&gt;
&lt;br /&gt;
 $ petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
Конфиг: &lt;br /&gt;
 base -&amp;gt;&lt;br /&gt;
     busybox -&amp;gt;&lt;br /&gt;
          [*] busybox&lt;br /&gt;
          [*] busybox-httpd&lt;br /&gt;
          [ ] busybox-hwclock&lt;br /&gt;
          [*] busybox-inetd&lt;br /&gt;
          [*] busybox-mdev&lt;br /&gt;
          [ ] busybox-syslog &lt;br /&gt;
          [*] busybox-udhcpc &lt;br /&gt;
          [ ] busybox-udhcpd &lt;br /&gt;
&lt;br /&gt;
Сам httpd будет в '''/usr/sbin'''.&lt;br /&gt;
Рабочая папка по умолчанию в '''/srv/www/'''. Если в нее кидать файлы, то именно из нее будет отображаться контент в браузере. Папку можно изменить, перезапустив httpd с ключом -h &amp;lt;workdir&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Порт по умолчанию 80. Работает, как демон в /etc/init.d/, вкл-выкл оттуда же.&lt;br /&gt;
&lt;br /&gt;
Если положить в /srv/www/ файл index.html с неким кодом, то в браузере отобразится вебморда. Картинки работают по ссылкам.&lt;br /&gt;
&lt;br /&gt;
'''index.html'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Transitional//EN&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;clonicus'112 webserver&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h3&amp;gt;Hello, World!&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Web server is now up!&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;https://i.redd.it/oagz5eobkkt11.jpg&amp;quot; width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;http://www.srns.ru&amp;quot;&amp;gt;For more information see SRNS.ru&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== python в petalinux ===&lt;br /&gt;
В petalinux 2017.4 есть 2 питона - 2.7 и 3.5.&lt;br /&gt;
&lt;br /&gt;
 $ petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
'''python2.7'''&lt;br /&gt;
  Filesystem Packages-&amp;gt;&lt;br /&gt;
     devel-&amp;gt;&lt;br /&gt;
         python-&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''python3.5'''&lt;br /&gt;
  Filesystem Packages-&amp;gt;&lt;br /&gt;
     misc-&amp;gt;&lt;br /&gt;
         python3-*&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модуль runpy.py для запуска команд вида 'python -m &amp;lt;module&amp;gt;' находится в python -&amp;gt; python-misc. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SimpleHTTPServer.py ===&lt;br /&gt;
Для первого теста поднимем встроенный в python2.7 минисервер SimpleHTTPServer.py в /usr/lib/python2.7. &lt;br /&gt;
&lt;br /&gt;
Для его запуска напишем скрипт&lt;br /&gt;
&lt;br /&gt;
'''webserver.py''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import SimpleHTTPServer &lt;br /&gt;
import SocketServer &lt;br /&gt;
 &lt;br /&gt;
PORT = 80 &lt;br /&gt;
 &lt;br /&gt;
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler &lt;br /&gt;
 &lt;br /&gt;
httpd = SocketServer.TCPServer((&amp;quot;&amp;quot;, PORT), Handler) &lt;br /&gt;
 &lt;br /&gt;
print &amp;quot;serving at port&amp;quot;, PORT &lt;br /&gt;
httpd.serve_forever()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 $ python webserver.py &lt;br /&gt;
&lt;br /&gt;
При наличии в папке со скриптом файла index.html сервер поднимется автоматически.&lt;br /&gt;
&lt;br /&gt;
=== Добавление слоев в сборку ===&lt;br /&gt;
&lt;br /&gt;
[https://www.srns.ru/wiki/Blog:DneprovD/18.07.2019_Yocto_layers Переехало в статью]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:HOWTO]]&lt;br /&gt;
[[Категория:Oryx]]&lt;br /&gt;
[[Категория:Zynq]]&lt;br /&gt;
[[Категория:EmbeddedLinux]]&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
&lt;br /&gt;
{{wl-publish: 2018-05-16 10:06:30 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/16.05.2018_PetaLinux</id>
		<title>Blog:Lipa/16.05.2018 PetaLinux</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/16.05.2018_PetaLinux"/>
				<updated>2021-03-26T11:59:16Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* Оживление 2-го ядра */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Petalinux.png|400px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сборка PetaLinux для кастомной железки&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма2}}&lt;br /&gt;
&lt;br /&gt;
== Требования ==&lt;br /&gt;
&lt;br /&gt;
Vivado 2018.1 (для single-gigabit ethernet можно более ранние версии)&lt;br /&gt;
&lt;br /&gt;
Начиная с petalinux_2018.1 отсутствует devcfg. Необходимо использовать FPGA manager. Технология нами пока не освоена&lt;br /&gt;
&lt;br /&gt;
Необходима Ubuntu-16.04&lt;br /&gt;
&lt;br /&gt;
Требуется поставить ряд пакетов, полный список приведен в документе [https://www.xilinx.com/support/documentation/sw_manuals/xilinx2019_1/ug1144-petalinux-tools-reference-guide.pdf#page=9 UG1144]&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PetaLinux в систему. Дистрибутив есть на [https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/2018-1.html Xilinx], либо у меня на компьютере. '''Ставить PetaLinux необходимо БЕЗ прав суперюзера!'''&lt;br /&gt;
&lt;br /&gt;
кидаем в /components/yocto/ sstate-rel-v2017.4.tar.gz&lt;br /&gt;
&lt;br /&gt;
Подготовка завершена&lt;br /&gt;
&lt;br /&gt;
== Правка Vivado ==&lt;br /&gt;
&lt;br /&gt;
Для поддержки MDIO в Vivado 17.1-17.4 нужен [https://www.xilinx.com/support/answers/69132.html патч]. Ставим!&lt;br /&gt;
&lt;br /&gt;
'''Не помогло.''' Ставим 2018.1&lt;br /&gt;
&lt;br /&gt;
== Сборка ==&lt;br /&gt;
&lt;br /&gt;
Пошаговое руководство по сборке содержится в документе UG1156&lt;br /&gt;
&lt;br /&gt;
В консоли пишем source/[путь к петалинух]/settings.sh&lt;br /&gt;
&lt;br /&gt;
Выполняем шаги из UG1156 по главе 5:&lt;br /&gt;
&lt;br /&gt;
* экспортируем из Vivado .hdf (в блок дизайн File-&amp;gt;Export-&amp;gt;Export Hardware)&lt;br /&gt;
&lt;br /&gt;
* создаем проект PetaLinux&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-create --type project --template zynq --name &amp;lt;PROJECT&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* переходим в папку с текущим проектом&lt;br /&gt;
&lt;br /&gt;
* подключаем файл .hdf&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config --get-hw-description=[путь к папке с файлом .hdf]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* перед сборкой системы необходимо выполнить '''все''' команды конфигурации в данной последовательности:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&lt;br /&gt;
$ petalinux-config -c kernel&lt;br /&gt;
&lt;br /&gt;
$ petalinux-config -c rootfs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config ===&lt;br /&gt;
&lt;br /&gt;
Если хотим спользовать внешний файл device-tree включаем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Subsystem AUTO Hardware Settings-&amp;gt;&lt;br /&gt;
     Advances bootable images storage settings-&amp;gt;&lt;br /&gt;
          dtb image settings-&amp;gt;&lt;br /&gt;
               image storage media&lt;br /&gt;
                    primary sd&lt;br /&gt;
               &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Необходимо править netboot offset если оперативной памяти менее ~256МБ&lt;br /&gt;
&lt;br /&gt;
Для клоникуса с 256МБ ставим 8'000'000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
u-boot Configuration-&amp;gt;&lt;br /&gt;
     netboot offset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выставляем точку начала распаковки образа системы&lt;br /&gt;
&lt;br /&gt;
Выключаем копирование образа по sftp (Image Packaging Configuration -&amp;gt; Copy final images)&lt;br /&gt;
&lt;br /&gt;
Отключаем интернет-sstate (Yocto Settings -&amp;gt; Enable Network sstate feeds)&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config -c kernel===&lt;br /&gt;
&lt;br /&gt;
* Подключаем в ядре поддержку физика и его дров.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config -c kernel&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''для oryx:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers-&amp;gt;&lt;br /&gt;
     [*]Network device support -&amp;gt;&lt;br /&gt;
          [*]Ethernet driver support -&amp;gt;&lt;br /&gt;
               [*] Micrel devices&lt;br /&gt;
          [*] PHY Device support and infastructure --&amp;gt;&lt;br /&gt;
               [*] Drivers for Micrel PHYs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''для clonicus:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers-&amp;gt;&lt;br /&gt;
     [*]Network device support -&amp;gt;&lt;br /&gt;
          [*] PHY Device support and infastructure --&amp;gt;&lt;br /&gt;
               [*] Texas Instruments DP83867 Gigabit PHY&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config -c rootfs ===&lt;br /&gt;
&lt;br /&gt;
Подключаем при необходимости ethtool, gdbserver(просто gdb не заработал), libstdc, libgcc, glib2.0, glibc(glibc &amp;amp; ltd)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages-&amp;gt;&lt;br /&gt;
     misc -&amp;gt;&lt;br /&gt;
          gcc-runtime -&amp;gt;&lt;br /&gt;
               [*] libstdc ++&lt;br /&gt;
          gdb --&amp;gt;&lt;br /&gt;
               [*] gdb&lt;br /&gt;
          glib-2.0&lt;br /&gt;
               [*] glib-2.0&lt;br /&gt;
          glibc&lt;br /&gt;
               [*] glibc&lt;br /&gt;
               [*] ldd&lt;br /&gt;
     devel -&amp;gt;&lt;br /&gt;
          python -&amp;gt;&lt;br /&gt;
               python -&amp;gt;&lt;br /&gt;
                    [*] python&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Опционально:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages-&amp;gt;&lt;br /&gt;
     base -&amp;gt;&lt;br /&gt;
          i2c-tools -&amp;gt;&lt;br /&gt;
               [*] i2c-tools&lt;br /&gt;
          usbutils -&amp;gt;&lt;br /&gt;
               [*] usbutils&lt;br /&gt;
     console -&amp;gt;&lt;br /&gt;
          network -&amp;gt;&lt;br /&gt;
               ethtool -&amp;gt;&lt;br /&gt;
                    [*] ethtool // необходимо для oryx! для перенастройки autonegotiation&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Можно еще подключать дебаг i2c&lt;br /&gt;
&lt;br /&gt;
'''Необходимо убедиться, что  образ может распаковаться в размер оперативы'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Если будут проблемы, то надо будет править netboot offset&lt;br /&gt;
&lt;br /&gt;
=== device tree ===&lt;br /&gt;
&lt;br /&gt;
Если необходимо внести изменения в device tree, то смотрим конец статьи&lt;br /&gt;
&lt;br /&gt;
[https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841676/U-Boot+Flattened+Device+Tree Интересная статья по правке devicetree из uboot]&lt;br /&gt;
&lt;br /&gt;
=== Сборка проекта ===&lt;br /&gt;
&lt;br /&gt;
* далее (сборка идет 30-60 минут)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build&lt;br /&gt;
&lt;br /&gt;
cd /images/linux/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* делаем boot.bin в папке /images/linux/&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --u-boot --force&lt;br /&gt;
&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --fpga name.bit --u-boot --force&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --fpga name.bit --u-boot --kernel --force&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* записываем в загрузочную область флешки файлы boot.bin и image.ub&lt;br /&gt;
&lt;br /&gt;
== Всякое ==&lt;br /&gt;
&lt;br /&gt;
Если мало памяти как у нас - возможна ошибка image is not a fdt [https://forums.xilinx.com/t5/Embedded-Processor-System-Design/Petalinux-problem-on-custom-board-quot-image-is-not-a-fdt-quot/td-p/754892 ссылка]&lt;br /&gt;
&lt;br /&gt;
Необходимо править netboot offset&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
u-boot Configuration-&amp;gt;&lt;br /&gt;
     netboot offset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Можно вручную загрузиться из u-boot'а.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ fatload mmc 0 0xA000000 image.ub&lt;br /&gt;
$ bootm 0xA000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
либо&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ fatload mmc 0 0xA000000 image.ub&lt;br /&gt;
$ fatload mmc 0 0x9000000 system.dtb&lt;br /&gt;
$ bootm 0xA000000 0xA000000 0x9000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Можно поварьировать адрес&lt;br /&gt;
&lt;br /&gt;
------------&lt;br /&gt;
&lt;br /&gt;
Проверка статуса прошитости FPGA&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat /sys/class/xdevcfg/xdevcfg/device/prog_done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Uboot==&lt;br /&gt;
&lt;br /&gt;
Для внесения правок в загрузку линукса используем список команд '''env'''&lt;br /&gt;
&lt;br /&gt;
Просмотр текущих команд '''printenv'''&lt;br /&gt;
&lt;br /&gt;
Сброс настроек в дефолт '''env default -a'''&lt;br /&gt;
&lt;br /&gt;
Создать переменную '''env set &amp;lt;имя&amp;gt; &amp;lt;значение&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Правка переменной '''env edit &amp;lt;имя переменной&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Для каждой платы делаем следующее:&lt;br /&gt;
&lt;br /&gt;
* Берем [[Файл:uboot.env.c]]&lt;br /&gt;
&lt;br /&gt;
* Удаляем в конце имени &amp;quot;.c&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Записываем на флешку рядом с образом линукса&lt;br /&gt;
&lt;br /&gt;
* Запускаем плату и прерываем autoboot&lt;br /&gt;
&lt;br /&gt;
* Пишем '''editenv ethaddr'''&lt;br /&gt;
&lt;br /&gt;
* Редактируем MAC-адрес&lt;br /&gt;
&lt;br /&gt;
* Пишем '''saveenv'''&lt;br /&gt;
&lt;br /&gt;
* Все! можем ребутать '''reset'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Сохранить в файл '''saveenv'''&lt;br /&gt;
&lt;br /&gt;
==Автозапуск приложений==&lt;br /&gt;
&lt;br /&gt;
Во-первых [https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-Runnning-a-script-file-at-startup/td-p/689051 тыц]&lt;br /&gt;
&lt;br /&gt;
Далее пишем&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-create -t apps --template install -n myapp-init --enable&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим файл /project-spec/meta-user/recipes-apps/myapp-init/myapp-init.bb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file is the myapp-init recipe.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
SUMMARY = &amp;quot;Simple myapp-init application&amp;quot;&lt;br /&gt;
SECTION = &amp;quot;PETALINUX/apps&amp;quot;&lt;br /&gt;
LICENSE = &amp;quot;MIT&amp;quot;&lt;br /&gt;
LIC_FILES_CHKSUM = &amp;quot;file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302&amp;quot;&lt;br /&gt;
&lt;br /&gt;
SRC_URI = &amp;quot;file://myapp-init&amp;quot;&lt;br /&gt;
&lt;br /&gt;
S = &amp;quot;${WORKDIR}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILESEXTRAPATHS_prepend := &amp;quot;${THISDIR}/files:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
inherit update-rc.d&lt;br /&gt;
&lt;br /&gt;
INITSCRIPT_NAME = &amp;quot;myapp-init&amp;quot;&lt;br /&gt;
INITSCRIPT_PARAMS = &amp;quot;start 99 S .&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do_install() {&lt;br /&gt;
    install -d ${D}${sysconfdir}/init.d&lt;br /&gt;
    install -m 0755 ${S}/myapp-init ${D}${sysconfdir}/init.d/myapp-init&lt;br /&gt;
}&lt;br /&gt;
FILES_${PN} += &amp;quot;${sysconfdir}/*&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим сам исполняемый скрипт project-spec/meta-user/recipes-apps/myapp-init/files/myapp-init&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Autorun script&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Try run custom_init&amp;quot;&lt;br /&gt;
sh /run/media/mmcblk0p1/custom_init.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Записываем на флешку скрипт custom_init.sh с нужными командами и делаем его исполняемым&lt;br /&gt;
&lt;br /&gt;
Записываем файл interfaces&lt;br /&gt;
&lt;br /&gt;
Скачать архив: [[Файл:Init_interfaces.rar]]&lt;br /&gt;
&lt;br /&gt;
==SSH==&lt;br /&gt;
&lt;br /&gt;
Как победить сохранение ssh-ключей:&lt;br /&gt;
&lt;br /&gt;
Добавляем в init_script следующие строки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir /run/media/mmcblk0p2/.ssh&lt;br /&gt;
ln -s /run/media/mmcblk0p2/.ssh/ /home/root/&lt;br /&gt;
mkdir /run/media/mmcblk0p2/dropbear/&lt;br /&gt;
chmod 400 /run/media/mmcblk0p2/dropbear/&lt;br /&gt;
rm -r /etc/dropbear/&lt;br /&gt;
ln -s /run/media/mmcblk0p2/dropbear/ /etc/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Создается ссылка на флешку, где хранятся авторизованные пользователи&lt;br /&gt;
* Создается папка для хранения секретного ключа платы&lt;br /&gt;
* При запуске платы свежесозданный ключ заменяется тем, что лежит на флешке&lt;br /&gt;
* При первом включении платы будет создан новый ключ&lt;br /&gt;
&lt;br /&gt;
Помимо добавления указанных команд в скрипт ничего больше делать не надо&lt;br /&gt;
&lt;br /&gt;
==Daemon==&lt;br /&gt;
&lt;br /&gt;
Для настройки демона:&lt;br /&gt;
&lt;br /&gt;
* Добавляем строки в файл custom_init.sh&lt;br /&gt;
* Кидаем на загрузочный раздел флешки папку из архива [[:File:daemon.rar]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp -r /run/media/mmcblk0p1/daemon/lsb /lib/&lt;br /&gt;
cp /run/media/mmcblk0p1/daemon/receiver.conf /etc/&lt;br /&gt;
cp /run/media/mmcblk0p1/daemon/receiver /etc/init.d/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serial port на новом линуксе ===&lt;br /&gt;
Выяснилось, что без доп. настройки, в последовательный порт (dev/ttyPS0) после каждой посылки добавляются символы CR и LF. Оказалось, что и RTKLib, и софт Листопада не хотят работать с таким окончанием пакетов.&lt;br /&gt;
&lt;br /&gt;
Выше не совсем так, скорее мысль в том, что каждый символ LF (0x0A) в наших данных меняется на символы CR LF, т.е. (0x0D0A). И тогда, в нашем битовом потоке меняется размер и содержимое и парсеры работают некорректно.&lt;br /&gt;
Старый линукс на Ориксах добавляет только LF. Для решения проблемы нужно через stty выключить в настройках порта опцию '''onlcr''' (преобразовывать перевод строки в возврат каретки и новую строку).&lt;br /&gt;
&lt;br /&gt;
Сделать это удалось пока только изменив скрипт демона receiver. Для решения проблемы заходим в /run/media/mmcblk0p1/daemon/receiver, и в начале секции receiver_start() {...} добавляем команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
stty -F /dev/ttyPS0 -onlcr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==device tree==&lt;br /&gt;
&lt;br /&gt;
Для внесения изменений в device tree добавляем нужные строки в файл&lt;br /&gt;
&lt;br /&gt;
project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
[https://www.xilinx.com/support/answers/61117.html пример]&lt;br /&gt;
&lt;br /&gt;
Для разборки device-tree [http://xillybus.com/tutorials/device-tree-zynq-1 ссылка]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ dtc -I dtb -O dts -o &amp;lt;name&amp;gt;.dts &amp;lt;name&amp;gt;.dtb&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для сборки device-tree&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ dtc -I dts -O dtb -o &amp;lt;name&amp;gt;.dtb &amp;lt;name&amp;gt;.dts&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Модификация device-tree ==&lt;br /&gt;
&lt;br /&gt;
После долгих мучений получилось поднять DP83867 только после добавления модификатора в файл [https://forums.xilinx.com/t5/Embedded-Linux/ZC702-Like-Board-with-DP83867CR-Ethernet-Petalinux-2017-4/td-p/831873 волшебная статья]&lt;br /&gt;
&lt;br /&gt;
[https://www.kernel.org/doc/Documentation/devicetree/bindings/net/ti%2Cdp83867.txt описание параметров]&lt;br /&gt;
&lt;br /&gt;
project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
=== Single Kit-board eth ===&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth1(с mdio) и выключен eth0.&lt;br /&gt;
&lt;br /&gt;
'''Так работает'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem1{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@12 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;12&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Начало скрытого блока|Выравнивание_заголовка = left| Ссылка = left|Заголовок =  Развернутый .dtb:}}&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/dts-v1/;&lt;br /&gt;
&lt;br /&gt;
/ {&lt;br /&gt;
	#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
	#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
	compatible = &amp;quot;xlnx,zynq-7000&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	cpus {&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
		cpu@0 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9&amp;quot;;&lt;br /&gt;
			device_type = &amp;quot;cpu&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x3&amp;gt;;&lt;br /&gt;
			clock-latency = &amp;lt;0x3e8&amp;gt;;&lt;br /&gt;
			cpu0-supply = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			operating-points = &amp;lt;0xa2c2a 0xf4240 0x51615 0xf4240&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		cpu@1 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9&amp;quot;;&lt;br /&gt;
			device_type = &amp;quot;cpu&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x3&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	fpga-full {&lt;br /&gt;
		compatible = &amp;quot;fpga-region&amp;quot;;&lt;br /&gt;
		fpga-mgr = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		ranges;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	pmu@f8891000 {&lt;br /&gt;
		compatible = &amp;quot;arm,cortex-a9-pmu&amp;quot;;&lt;br /&gt;
		interrupts = &amp;lt;0x0 0x5 0x4 0x0 0x6 0x4&amp;gt;;&lt;br /&gt;
		interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		reg = &amp;lt;0xf8891000 0x1000 0xf8893000 0x1000&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	fixedregulator {&lt;br /&gt;
		compatible = &amp;quot;regulator-fixed&amp;quot;;&lt;br /&gt;
		regulator-name = &amp;quot;VCCPINT&amp;quot;;&lt;br /&gt;
		regulator-min-microvolt = &amp;lt;0xf4240&amp;gt;;&lt;br /&gt;
		regulator-max-microvolt = &amp;lt;0xf4240&amp;gt;;&lt;br /&gt;
		regulator-boot-on;&lt;br /&gt;
		regulator-always-on;&lt;br /&gt;
		linux,phandle = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
		phandle = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	amba {&lt;br /&gt;
		u-boot,dm-pre-reloc;&lt;br /&gt;
		compatible = &amp;quot;simple-bus&amp;quot;;&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		ranges;&lt;br /&gt;
&lt;br /&gt;
		adc@f8007100 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-xadc-1.00.a&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8007100 0x20&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x7 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xc&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		can@e0008000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-can-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x13 0x1 0x24&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;can_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0008000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1c 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			tx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			rx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		can@e0009000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-can-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x14 0x1 0x25&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;can_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0009000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x33 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			tx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			rx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		gpio@e000a000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-gpio-1.0&amp;quot;;&lt;br /&gt;
			#gpio-cells = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x2a&amp;gt;;&lt;br /&gt;
			gpio-controller;&lt;br /&gt;
			interrupt-controller;&lt;br /&gt;
			#interrupt-cells = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x14 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe000a000 0x1000&amp;gt;;&lt;br /&gt;
			emio-gpio-width = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			gpio-mask-high = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			gpio-mask-low = &amp;lt;0x5600&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		i2c@e0004000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x26&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x19 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0004000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		i2c@e0005000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x27&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x30 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0005000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		interrupt-controller@f8f01000 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-gic&amp;quot;;&lt;br /&gt;
			#interrupt-cells = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
			interrupt-controller;&lt;br /&gt;
			reg = &amp;lt;0xf8f01000 0x1000 0xf8f00100 0x100&amp;gt;;&lt;br /&gt;
			num_cpus = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			num_interrupts = &amp;lt;0x60&amp;gt;;&lt;br /&gt;
			linux,phandle = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		cache-controller@f8f02000 {&lt;br /&gt;
			compatible = &amp;quot;arm,pl310-cache&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f02000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2 0x4&amp;gt;;&lt;br /&gt;
			arm,data-latency = &amp;lt;0x3 0x2 0x2&amp;gt;;&lt;br /&gt;
			arm,tag-latency = &amp;lt;0x2 0x2 0x2&amp;gt;;&lt;br /&gt;
			cache-unified;&lt;br /&gt;
			cache-level = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		memory-controller@f8006000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-ddrc-a05&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8006000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ocmc@f800c000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-ocmc-1.0&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x3 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf800c000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		serial@e0000000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,xuartps&amp;quot;, &amp;quot;cdns,uart-r1p8&amp;quot;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x17 0x1 0x28&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;uart_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0000000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1b 0x4&amp;gt;;&lt;br /&gt;
			device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
			port-number = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		serial@e0001000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,xuartps&amp;quot;, &amp;quot;cdns,uart-r1p8&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x18 0x1 0x29&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;uart_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0001000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x32 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e0006000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-spi-r1p6&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0006000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1a 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x19 0x1 0x22&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e0007000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-spi-r1p6&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0007000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x31 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1a 0x1 0x23&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e000d000 {&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xa 0x1 0x2b&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-qspi-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x13 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe000d000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		memory-controller@e000e000 {&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;memclk&amp;quot;, &amp;quot;aclk&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xb 0x1 0x2c&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;arm,pl353-smc-r2p1&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x12 0x4&amp;gt;;&lt;br /&gt;
			ranges;&lt;br /&gt;
			reg = &amp;lt;0xe000e000 0x1000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			flash@e1000000 {&lt;br /&gt;
				status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
				compatible = &amp;quot;arm,pl353-nand-r2p1&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0xe1000000 0x1000000&amp;gt;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			flash@e2000000 {&lt;br /&gt;
				status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
				compatible = &amp;quot;cfi-flash&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0xe2000000 0x2000000&amp;gt;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ethernet@e000b000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,zynq-gem&amp;quot;, &amp;quot;cdns,gem&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe000b000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x16 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1e 0x1 0x1e 0x1 0xd&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;pclk&amp;quot;, &amp;quot;hclk&amp;quot;, &amp;quot;tx_clk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ethernet@e000c000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,zynq-gem&amp;quot;, &amp;quot;cdns,gem&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe000c000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2d 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1f 0x1 0x1f 0x1 0xe&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;pclk&amp;quot;, &amp;quot;hclk&amp;quot;, &amp;quot;tx_clk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
			xlnx,ptp-enet-clock = &amp;lt;0x69f6bcb&amp;gt;;&lt;br /&gt;
			local-mac-address = [00 0a 35 00 22 01];&lt;br /&gt;
			phy-handle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
			xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			mdio {&lt;br /&gt;
				status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
				phy@12 {&lt;br /&gt;
					compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
					device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
					reg = &amp;lt;0xc&amp;gt;;&lt;br /&gt;
					ti,rx-internal-delay = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
					ti,tx-internal-delay = &amp;lt;0xa&amp;gt;;&lt;br /&gt;
					ti,fifo-depth = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
					ti,min-output-impedance;&lt;br /&gt;
					ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
					status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
					linux,phandle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
					phandle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
				};&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		sdhci@e0100000 {&lt;br /&gt;
			compatible = &amp;quot;arasan,sdhci-8.9a&amp;quot;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;clk_xin&amp;quot;, &amp;quot;clk_ahb&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x15 0x1 0x20&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x18 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0100000 0x1000&amp;gt;;&lt;br /&gt;
			xlnx,has-cd = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			xlnx,has-power = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			xlnx,has-wp = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		sdhci@e0101000 {&lt;br /&gt;
			compatible = &amp;quot;arasan,sdhci-8.9a&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;clk_xin&amp;quot;, &amp;quot;clk_ahb&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x16 0x1 0x21&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2f 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0101000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		slcr@f8000000 {&lt;br /&gt;
			u-boot,dm-pre-reloc;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-slcr&amp;quot;, &amp;quot;syscon&amp;quot;, &amp;quot;simple-mfd&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8000000 0x1000&amp;gt;;&lt;br /&gt;
			ranges;&lt;br /&gt;
			linux,phandle = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			clkc@100 {&lt;br /&gt;
				u-boot,dm-pre-reloc;&lt;br /&gt;
				#clock-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				compatible = &amp;quot;xlnx,ps7-clkc&amp;quot;;&lt;br /&gt;
				fclk-enable = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
				clock-output-names = &amp;quot;armpll&amp;quot;, &amp;quot;ddrpll&amp;quot;, &amp;quot;iopll&amp;quot;, &amp;quot;cpu_6or4x&amp;quot;, &amp;quot;cpu_3or2x&amp;quot;, &amp;quot;cpu_2x&amp;quot;, &amp;quot;cpu_1x&amp;quot;, &amp;quot;ddr2x&amp;quot;, &amp;quot;ddr3x&amp;quot;, &amp;quot;dci&amp;quot;, &amp;quot;lqspi&amp;quot;, &amp;quot;smc&amp;quot;, &amp;quot;pcap&amp;quot;, &amp;quot;gem0&amp;quot;, &amp;quot;gem1&amp;quot;, &amp;quot;fclk0&amp;quot;, &amp;quot;fclk1&amp;quot;, &amp;quot;fclk2&amp;quot;, &amp;quot;fclk3&amp;quot;, &amp;quot;can0&amp;quot;, &amp;quot;can1&amp;quot;, &amp;quot;sdio0&amp;quot;, &amp;quot;sdio1&amp;quot;, &amp;quot;uart0&amp;quot;, &amp;quot;uart1&amp;quot;, &amp;quot;spi0&amp;quot;, &amp;quot;spi1&amp;quot;, &amp;quot;dma&amp;quot;, &amp;quot;usb0_aper&amp;quot;, &amp;quot;usb1_aper&amp;quot;, &amp;quot;gem0_aper&amp;quot;, &amp;quot;gem1_aper&amp;quot;, &amp;quot;sdio0_aper&amp;quot;, &amp;quot;sdio1_aper&amp;quot;, &amp;quot;spi0_aper&amp;quot;, &amp;quot;spi1_aper&amp;quot;, &amp;quot;can0_aper&amp;quot;, &amp;quot;can1_aper&amp;quot;, &amp;quot;i2c0_aper&amp;quot;, &amp;quot;i2c1_aper&amp;quot;, &amp;quot;uart0_aper&amp;quot;, &amp;quot;uart1_aper&amp;quot;, &amp;quot;gpio_aper&amp;quot;, &amp;quot;lqspi_aper&amp;quot;, &amp;quot;smc_aper&amp;quot;, &amp;quot;swdt&amp;quot;, &amp;quot;dbg_trc&amp;quot;, &amp;quot;dbg_apb&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x100 0x100&amp;gt;;&lt;br /&gt;
				ps-clk-frequency = &amp;lt;0x1fca055&amp;gt;;&lt;br /&gt;
				linux,phandle = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				phandle = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			rstc@200 {&lt;br /&gt;
				compatible = &amp;quot;xlnx,zynq-reset&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x200 0x48&amp;gt;;&lt;br /&gt;
				#reset-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			pinctrl@700 {&lt;br /&gt;
				compatible = &amp;quot;xlnx,pinctrl-zynq&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x700 0x200&amp;gt;;&lt;br /&gt;
				syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		dmac@f8003000 {&lt;br /&gt;
			compatible = &amp;quot;arm,pl330&amp;quot;, &amp;quot;arm,primecell&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8003000 0x1000&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupt-names = &amp;quot;abort&amp;quot;, &amp;quot;dma0&amp;quot;, &amp;quot;dma1&amp;quot;, &amp;quot;dma2&amp;quot;, &amp;quot;dma3&amp;quot;, &amp;quot;dma4&amp;quot;, &amp;quot;dma5&amp;quot;, &amp;quot;dma6&amp;quot;, &amp;quot;dma7&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0xd 0x4 0x0 0xe 0x4 0x0 0xf 0x4 0x0 0x10 0x4 0x0 0x11 0x4 0x0 0x28 0x4 0x0 0x29 0x4 0x0 0x2a 0x4 0x0 0x2b 0x4&amp;gt;;&lt;br /&gt;
			#dma-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#dma-channels = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
			#dma-requests = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1b&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;apb_pclk&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		devcfg@f8007000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-devcfg-1.0&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x8 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8007000 0x100&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xc 0x1 0xf 0x1 0x10 0x1 0x11 0x1 0x12&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;fclk0&amp;quot;, &amp;quot;fclk1&amp;quot;, &amp;quot;fclk2&amp;quot;, &amp;quot;fclk3&amp;quot;;&lt;br /&gt;
			syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			linux,phandle = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		efuse@f800d000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-efuse&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf800d000 0x20&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8f00200 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-global-timer&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f00200 0x20&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x1 0xb 0x301&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8001000 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0xa 0x4 0x0 0xb 0x4 0x0 0xc 0x4&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,ttc&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x6&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8001000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8002000 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x25 0x4 0x0 0x26 0x4 0x0 0x27 0x4&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,ttc&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x6&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8002000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8f00600 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x1 0xd 0x301&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-twd-timer&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f00600 0x20&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		usb@e0002000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-usb-2.20a&amp;quot;, &amp;quot;chipidea,usb2&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1c&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x15 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0002000 0x1000&amp;gt;;&lt;br /&gt;
			phy_type = &amp;quot;ulpi&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		usb@e0003000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-usb-2.20a&amp;quot;, &amp;quot;chipidea,usb2&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1d&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2c 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0003000 0x1000&amp;gt;;&lt;br /&gt;
			phy_type = &amp;quot;ulpi&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		watchdog@f8005000 {&lt;br /&gt;
			clocks = &amp;lt;0x1 0x2d&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,wdt-r1p2&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x9 0x1&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8005000 0x1000&amp;gt;;&lt;br /&gt;
			timeout-sec = &amp;lt;0xa&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	chosen {&lt;br /&gt;
		bootargs = &amp;quot;console=ttyPS0,115200 earlyprintk&amp;quot;;&lt;br /&gt;
		stdout-path = &amp;quot;serial0:115200n8&amp;quot;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	aliases {&lt;br /&gt;
		ethernet0 = &amp;quot;/amba/ethernet@e000c000&amp;quot;;&lt;br /&gt;
		serial0 = &amp;quot;/amba/serial@e0000000&amp;quot;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	memory {&lt;br /&gt;
		device_type = &amp;quot;memory&amp;quot;;&lt;br /&gt;
		reg = &amp;lt;0x0 0x10000000&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
{{Конец скрытого блока}}&lt;br /&gt;
&lt;br /&gt;
=== Single On-board eth ===&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth0(с mdio) и выключен eth1.&lt;br /&gt;
&lt;br /&gt;
'''Работает гигабит через type-c! Работает hot plug. Успех.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@0 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dual eth ===&lt;br /&gt;
&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Dual-phys-on-MDIO-EMIO/td-p/737716 интересная статья о дуал eth]&lt;br /&gt;
&lt;br /&gt;
Попытка поднять два физика. '''Пока не работает'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    local-mac-address = [00 0a 35 00 00 00];&lt;br /&gt;
    enet-reset = &amp;lt;&amp;amp;gpio0 47 0&amp;gt;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@0 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x8&amp;gt;; &lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0xa&amp;gt;; &lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;; &lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
        phy1: phy@12 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;12&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x8&amp;gt;; &lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0xa&amp;gt;; &lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;; &lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gem1{&lt;br /&gt;
    local-mac-address = [00 0a 35 00 00 01];&lt;br /&gt;
    enet-reset = &amp;lt;&amp;amp;gpio0 47 0&amp;gt;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy1&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Oryx ===&lt;br /&gt;
&lt;br /&gt;
Итоговый system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
Меняем номера uart, чтобы системным был ttyPS1, а пользовательским ttyPS0&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
/ {&lt;br /&gt;
    aliases {&lt;br /&gt;
        serial0 = &amp;amp;uart0;&lt;br /&gt;
        serial1 = &amp;amp;uart1;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@1 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
            rxc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            rxdv-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            txc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            txen-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;1&amp;gt;;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/ {&lt;br /&gt;
    chosen {&lt;br /&gt;
            bootargs = &amp;quot;console=ttyPS1,115200 earlyprintk uio_pdrv_genirq.of_id=generic-uio&amp;quot;;&lt;br /&gt;
            stdout-path = &amp;quot;serial1:115200n8&amp;quot;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    hififo: hififo@40000000 {&lt;br /&gt;
            compatible = &amp;quot;generic-uio&amp;quot;;&lt;br /&gt;
            interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
            interrupts = &amp;lt;0 29 1&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;0x40000000 0x1000 0x18000000 0x8000000&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;uart0{&lt;br /&gt;
    port-number = &amp;lt;0&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;uart1{&lt;br /&gt;
    port-number = &amp;lt;1&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth0(с mdio) и выключен eth1.&lt;br /&gt;
Pullup пока что все включены&lt;br /&gt;
&lt;br /&gt;
[https://github.com/Xilinx/u-boot-xlnx/blob/master/doc/device-tree-bindings/net/micrel-ksz90x1.txt статья в помощь]&lt;br /&gt;
&lt;br /&gt;
'''Работает'''&lt;br /&gt;
&lt;br /&gt;
На новых платах(с отпаянными линиями линиями eth):&lt;br /&gt;
* на полноценных проводах с ходу&lt;br /&gt;
* на обкусанных проводах только если выставить 10 в ethtool&lt;br /&gt;
&lt;br /&gt;
На старых платах:&lt;br /&gt;
&lt;br /&gt;
* на полноценных проводах только если выставить 100 в ethtool&lt;br /&gt;
* на обкусанных проводах только если выставить 10 в ethtool&lt;br /&gt;
&lt;br /&gt;
Везде работает так:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ethtool -s eth0 speed 10 duplex full autoneg on&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Спидометр показывает 2,5МБ/с, т.е. 20Мбит/с!&lt;br /&gt;
&lt;br /&gt;
Можно в custom_itit.sh прописать:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ifdown eth0&lt;br /&gt;
ethtool -s eth0 speed 10 duplex full autoneg on&lt;br /&gt;
ifup eth0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@1 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
            rxc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            rxdv-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            txc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            txen-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;1&amp;gt;;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В принципе, работает сеть на новой плате с нормальным кабелем без модификации devicetree. Остальные комбинации плат-кабелей надо проверять&lt;br /&gt;
&lt;br /&gt;
== i2c ==&lt;br /&gt;
&lt;br /&gt;
В rootfs включаем&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages -&amp;gt;&lt;br /&gt;
     base -&amp;gt;&lt;br /&gt;
          i2c-tools -&amp;gt;&lt;br /&gt;
               [*] i2c-tools&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для поиска устройств можно написать&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i2cdetect -y -r 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842160/Cadence+I2C+Driver Статья] по i2c и RTC&lt;br /&gt;
&lt;br /&gt;
== QSPI Flash ==&lt;br /&gt;
&lt;br /&gt;
для работы по флешь памяти как в ките (S25FL128S) - оставляем в дев.три родные compatible = &amp;quot;n25q512a&amp;quot;,&amp;quot;micron,m25p80&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
== SWDT System Watchdog Timer==&lt;br /&gt;
&lt;br /&gt;
* Модифицируем device-tree&lt;br /&gt;
&lt;br /&gt;
Вставляем в девайс три:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;watchdog0 {&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    reset-on-timeout;&lt;br /&gt;
    timeout-sec = &amp;lt;60&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RTC ==&lt;br /&gt;
&lt;br /&gt;
* Включаем в ядро подходящий драйвер&lt;br /&gt;
&lt;br /&gt;
* Модифицируем device-tree&lt;br /&gt;
&lt;br /&gt;
Вставляем в девайс три:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    i2c0: i2c@e0004000 {&lt;br /&gt;
        clock-frequency = &amp;lt;0xC350&amp;gt;;&lt;br /&gt;
        rtc@51 {&lt;br /&gt;
                compatible = &amp;quot;nxp,pcf85363&amp;quot;;&lt;br /&gt;
                reg = &amp;lt;0x51&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
    i2c1: i2c@e0005000 {&lt;br /&gt;
        clock-frequency = &amp;lt;0xC350&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Будет выглядеть так:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i2c@e0004000 {&lt;br /&gt;
    compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    clocks = &amp;lt;0x1 0x26&amp;gt;;&lt;br /&gt;
    interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
    interrupts = &amp;lt;0x0 0x19 0x4&amp;gt;;&lt;br /&gt;
    reg = &amp;lt;0xe0004000 0x1000&amp;gt;;&lt;br /&gt;
    #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
    #size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
    clock-frequency = &amp;lt;0xc350&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    rtc@51 {&lt;br /&gt;
        compatible = &amp;quot;nxp,pcf85363&amp;quot;;&lt;br /&gt;
        reg = &amp;lt;0x51&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
i2c@e0005000 {&lt;br /&gt;
    compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    clocks = &amp;lt;0x1 0x27&amp;gt;;&lt;br /&gt;
    interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
    interrupts = &amp;lt;0x0 0x30 0x4&amp;gt;;&lt;br /&gt;
    reg = &amp;lt;0xe0005000 0x1000&amp;gt;;&lt;br /&gt;
    #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
    #size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
    clock-frequency = &amp;lt;0xc350&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если готового драйвера нет:&lt;br /&gt;
&lt;br /&gt;
UG1144 pg.54&lt;br /&gt;
&lt;br /&gt;
Создаем новый модуль&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-create -t modules --name &amp;lt;name_module&amp;gt; --enable&lt;br /&gt;
petalinux-create -t modules --name rtc-pcf85363 --enable&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим исходный код в project-spec/meta-user/recipes-modules/rtc-pcf85363/files&lt;br /&gt;
&lt;br /&gt;
Исправленный драйвер лежит в git Clonicus\linux\&lt;br /&gt;
&lt;br /&gt;
Для удаления модуля:&lt;br /&gt;
&lt;br /&gt;
* удаляем папку из project-spec/meta-user/recipes-modules&lt;br /&gt;
&lt;br /&gt;
* В файле project-spec/meta-user/recipes-core/images/petalinux-image.bbappend удаляем соответствующую строку&lt;br /&gt;
&lt;br /&gt;
* переоткрыть petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
Пробуем собрать модуль&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build -c &amp;lt;name_module&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если ОК, собираем (собирать модуль необязательно, petalinux-build его соберет)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И перепаковываем BOOT.bin&lt;br /&gt;
&lt;br /&gt;
Пересобираем deveice-tree с указанием нового драйвера (petalinux-build соберет сам deveice-tree)&lt;br /&gt;
&lt;br /&gt;
просмотр модулей&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsmod&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
загрузить драйвер можно&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
insmod /lib/modules/4.9.0-xilinx-v2017.4/extra/rtc-pcf85363.ko&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
или&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe rtc-pcf85363&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Если все ок и в девайс три прописан правильный драйвер для устройства, то модуль будет загружен сам'''&lt;br /&gt;
&lt;br /&gt;
Прошиваем .bit (для клоникуса нужен бит для работы PL-i2c). После этого можно пользоваться RTC&lt;br /&gt;
&lt;br /&gt;
Чтение времени из rtc если этот rtc не дефолтный (у нас rtc2)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -r -f /dev/rtc2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Синхронизация rtc по системному времени&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -w -f /dev/rtc2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим custom_init.sh для изменения default-rtc на наше устройство&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm /dev/rtc&lt;br /&gt;
ln -s /dev/rtc2 /dev/rtc&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Установка системного времени&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
date --set &amp;quot;2013-7-31 09:30&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запись системного времени в RTC&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -w&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запись времени RTC в системное время&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -s&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Получить время с интеренета&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rdate -s &amp;lt;IP address of time server&amp;gt;&lt;br /&gt;
rdate -s 132.163.96.5 (example)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При перезагрузке &amp;quot;reboot&amp;quot; система автоматически запишет системное время в RTC&lt;br /&gt;
&lt;br /&gt;
== FPGA CONFIG from Uboot ==&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы прошить PL из uboot используем команду:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
fpga loadb 0 &amp;lt;ddr_file_addr&amp;gt; &amp;lt;file_size&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
либо скриптами:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
load_bit=fatload mmc 0 0x100000 clonicus.bit // читаем файл в ddr&lt;br /&gt;
pl_load=fpga loadb 0 0x100000 0x1400000 // прошиваем PL&lt;br /&gt;
fpga_config=run load_bit &amp;amp;&amp;amp; run pl_loadipaddr // вызов самих скриптов&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
0x10_0000 - начальный адрес ddr&lt;br /&gt;
&lt;br /&gt;
0x1_400_000 - размер в байтах для 20МБайт - указываем размер битника с запасом. Теоретически может так не работать, но работает&lt;br /&gt;
&lt;br /&gt;
== ETH over TTY==&lt;br /&gt;
&lt;br /&gt;
В ядре включаем: slip, Universal TUN/TAP&lt;br /&gt;
&lt;br /&gt;
В rootfs включаем net-tools&lt;br /&gt;
&lt;br /&gt;
Включаем iptables для перемршрутизации между подсетями и для него:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[*] Networking support  ---&amp;gt;                                          [CONFIG_NET]&lt;br /&gt;
      Networking Options  ---&amp;gt;&lt;br /&gt;
        [*] Network packet filtering framework (Netfilter) ---&amp;gt;       [CONFIG_NETFILTER]&lt;br /&gt;
          [*] Advanced netfilter configuration                        [CONFIG_NETFILTER_ADVANCED]&lt;br /&gt;
          Core Netfilter Configuration ---&amp;gt;&lt;br /&gt;
            &amp;lt;*/M&amp;gt; Netfilter connection tracking support               [CONFIG_NF_CONNTRACK]&lt;br /&gt;
            &amp;lt;*/M&amp;gt; Netfilter Xtables support (required for ip_tables)  [CONFIG_NETFILTER_XTABLES]&lt;br /&gt;
            &amp;lt;*/M&amp;gt; LOG target support                                  [CONFIG_NETFILTER_XT_TARGET_LOG]&lt;br /&gt;
          IP: Netfilter Configuration ---&amp;gt;&lt;br /&gt;
            &amp;lt;*/M&amp;gt; IP tables support (required for filtering/masq/NAT) [CONFIG_IP_NF_IPTABLES]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PC1:&lt;br /&gt;
&lt;br /&gt;
slattach -L -s 115200 -p slip /dev/ttyPS1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
ifconfig sl0 192.168.1.1/24 up&lt;br /&gt;
&lt;br /&gt;
route add default gw 192.168.1.1 sl0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PC2:&lt;br /&gt;
&lt;br /&gt;
slattach -L -s 115200 -p slip /dev/ttyPS1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
ifconfig sl0 192.168.1.2/24 up&lt;br /&gt;
&lt;br /&gt;
route add default gw 192.168.1.1 sl0&lt;br /&gt;
&lt;br /&gt;
== UART_PL ==&lt;br /&gt;
&lt;br /&gt;
Включаем в настройках ядра поддержку uart_lite, выставляем правильное максимальное число уартов&lt;br /&gt;
&lt;br /&gt;
Модифицируем system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
Обращаем внимание на нумерацию serial, axi_uartlite, она должна не повторяться. То же самое с interrupts &lt;br /&gt;
Указываем верный физический адрес на шине и диапазон адресов в &amp;lt;reg&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
/ {&lt;br /&gt;
    aliases {&lt;br /&gt;
            serial2 = &amp;amp;axi_uartlite_0;&lt;br /&gt;
            serial3 = &amp;amp;axi_uartlite_1;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
/ {&lt;br /&gt;
    amba_pl {&lt;br /&gt;
        #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
        compatible = &amp;quot;simple-bus&amp;quot;;&lt;br /&gt;
        ranges;&lt;br /&gt;
        &lt;br /&gt;
        axi_uartlite_0: serial@80000008 {&lt;br /&gt;
                clock-names = &amp;quot;ref_clk&amp;quot;;&lt;br /&gt;
                clocks = &amp;lt;&amp;amp;clkc 0&amp;gt;;&lt;br /&gt;
                compatible = &amp;quot;xlnx,xps-uartlite-1.00.a&amp;quot;;&lt;br /&gt;
                current-speed = &amp;lt;115200&amp;gt;;&lt;br /&gt;
                device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
                interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                interrupts = &amp;lt;0 30 1&amp;gt;;&lt;br /&gt;
                port-number = &amp;lt;3&amp;gt;;&lt;br /&gt;
                reg = &amp;lt;0x80000008 0x10&amp;gt;;&lt;br /&gt;
                xlnx,baudrate = &amp;lt;0x1c200&amp;gt;;&lt;br /&gt;
                xlnx,data-bits = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
                xlnx,odd-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
                xlnx,s-axi-aclk-freq-hz-d = &amp;quot;100.0&amp;quot;;&lt;br /&gt;
                xlnx,use-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
        axi_uartlite_1: serial@8000001C {&lt;br /&gt;
                clock-names = &amp;quot;ref_clk&amp;quot;;&lt;br /&gt;
                clocks = &amp;lt;&amp;amp;clkc 0&amp;gt;;&lt;br /&gt;
                compatible = &amp;quot;xlnx,xps-uartlite-1.00.a&amp;quot;;&lt;br /&gt;
                current-speed = &amp;lt;115200&amp;gt;;&lt;br /&gt;
                device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
                interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                interrupts = &amp;lt;0 31 1&amp;gt;;&lt;br /&gt;
                port-number = &amp;lt;4&amp;gt;;&lt;br /&gt;
                reg = &amp;lt;0x8000001C 0x10&amp;gt;;&lt;br /&gt;
                xlnx,baudrate = &amp;lt;0x1c200&amp;gt;;&lt;br /&gt;
                xlnx,data-bits = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
                xlnx,odd-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
                xlnx,s-axi-aclk-freq-hz-d = &amp;quot;100.0&amp;quot;;&lt;br /&gt;
                xlnx,use-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если ПЛИС не прошита - будет кернел паник&lt;br /&gt;
&lt;br /&gt;
== IRQ ==&lt;br /&gt;
&lt;br /&gt;
Для поддержки irq добавляем в device-tree&lt;br /&gt;
&lt;br /&gt;
'''Важно - мы перетираем bootargs!'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/ {&lt;br /&gt;
    chosen {&lt;br /&gt;
            bootargs = &amp;quot;console=ttyPS0,115200 earlyprintk uio_pdrv_genirq.of_id=generic-uio&amp;quot;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    hififo: hififo@40000000 {&lt;br /&gt;
                    compatible = &amp;quot;generic-uio&amp;quot;;&lt;br /&gt;
                    interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                    interrupts = &amp;lt;0 29 1&amp;gt;;&lt;br /&gt;
                    reg = &amp;lt;0x40000000 0x1000 0x18000000 0x8000000&amp;gt;;&lt;br /&gt;
            };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
&lt;br /&gt;
Запустил на Z706&lt;br /&gt;
&lt;br /&gt;
[http://www.wiki.xilinx.com/Zynq+Linux+USB+Device+Driver во-первых]&lt;br /&gt;
[http://zedboard.org/content/using-petalinux-configure-zedboard%EF%BC%8C-usb-otg-can-not-work во-вторых]&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-2016-3-zynq-7010-USB-not-working/td-p/737696 в-третьих]&lt;br /&gt;
&lt;br /&gt;
В дефолтных настройках ядра petalinux_2018.1 все было включено&lt;br /&gt;
&lt;br /&gt;
включаем ресет на MIO7 pullup disabled&lt;br /&gt;
&lt;br /&gt;
все ноги интерфейса ulpi pullup disabled&lt;br /&gt;
&lt;br /&gt;
Содержимое system-user.dtsi&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
	/{&lt;br /&gt;
&lt;br /&gt;
    usb_phy0:phy0 {&lt;br /&gt;
&lt;br /&gt;
        compatible=&amp;quot;ulpi-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        #phy-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       reg = &amp;lt;0xe0002000 0x1000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       view-port=&amp;lt;0x170&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       drv-vbus;&lt;br /&gt;
&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&amp;amp;usb0 {&lt;br /&gt;
&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        dr_mode = &amp;quot;host&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        usb-phy = &amp;lt;&amp;amp;usb_phy0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
} ;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== USB-ETHERNET ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers -&amp;gt;&lt;br /&gt;
     USB support -&amp;gt;&lt;br /&gt;
          [*] USB Modem (CDC ACM)&lt;br /&gt;
          USB Gadget Support -&amp;gt;&lt;br /&gt;
               [*] Ethernet Control Model (all)&lt;br /&gt;
               [*] RNDIS&lt;br /&gt;
               [*] Ethernet Emulation Model&lt;br /&gt;
               [*] CDC Composite Device (Ethernet and ACM)&lt;br /&gt;
               [*] USB Gadget Drivers (Ethernet gadget...)&lt;br /&gt;
     Network device support -&amp;gt;&lt;br /&gt;
          USB Network Adapters -&amp;gt;&lt;br /&gt;
               [*] Realtek RTL8152/RTL8153&lt;br /&gt;
               [*] Multi-purpose USB Networking Framework&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WiFi Dongle ==&lt;br /&gt;
&lt;br /&gt;
[https://forum.trenz-electronic.de/index.php?topic=747.0 раз]&lt;br /&gt;
[https://github.com/jinchenglee/zybo_linux_setup_doc два]&lt;br /&gt;
[http://billauer.co.il/blog/2014/06/linux-realtek-hostapd/ три]&lt;br /&gt;
&lt;br /&gt;
Творим:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Networking support -&amp;gt;&lt;br /&gt;
     Wireless -&amp;gt;&lt;br /&gt;
          [*] cfg80211&lt;br /&gt;
          [*] Generic IEEE 802.11 ... (mac80211)&lt;br /&gt;
Device Drivers -&amp;gt;&lt;br /&gt;
     Network device support -&amp;gt;&lt;br /&gt;
          Wireless LAN -&amp;gt;&lt;br /&gt;
               Realtek rtlwifi family of devices -&amp;gt;&lt;br /&gt;
                    [*] Realtek ..../RTL8188CE Wireless Network Adapter ???&lt;br /&gt;
                    [*] Realtek RTL8188EE Wireless Network Adapter ???&lt;br /&gt;
                    [*] Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter&lt;br /&gt;
     Staging drivers -&amp;gt;&lt;br /&gt;
          [*] Realtek RTL8188EU wireless LAN MIC driver&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
rootfs&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem packages -&amp;gt;&lt;br /&gt;
     network -&amp;gt;&lt;br /&gt;
          wpa-supplicant -&amp;gt;&lt;br /&gt;
               [*] wpa-supplicant&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/lwfinger/rtl8188eu/blob/master/rtl8188eufw.bin качаем файл]&lt;br /&gt;
&lt;br /&gt;
Модификаци инит-скрипта&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp /run/media/mmcblk0p1/wpa_supplicant.conf /etc/&lt;br /&gt;
&lt;br /&gt;
mkdir /lib/firmware/&lt;br /&gt;
mkdir /lib/firmware/rtlwifi/&lt;br /&gt;
cp /run/media/mmcblk0p1/rtl8188eufw.bin /lib/firmware/rtlwifi/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WiFi ESP ==&lt;br /&gt;
&lt;br /&gt;
[http://www.wiki.xilinx.com/Zynq+SDIO+Wifi Xilinx SDIP WiFi]&lt;br /&gt;
&lt;br /&gt;
[http://zedboard.org/content/sdio-wifi-driver-ar6103-problem Zedboard раз]&lt;br /&gt;
&lt;br /&gt;
[https://stackoverflow.com/questions/32129689/how-to-bind-sdio1-with-wi-fi-linux два]&lt;br /&gt;
&lt;br /&gt;
[http://picozed.org/content/steps-get-wlink8-working-using-petalinux-picozed picozed три]&lt;br /&gt;
&lt;br /&gt;
[http://zedboard.org/content/adding-wi-fi-and-bluetooth-connectivity-zedboard-using-murata-1dx-pmod zedboard четыре]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Оживление 2-го ядра ==&lt;br /&gt;
&lt;br /&gt;
* Находим /home/ivan/clonicus_1.2.3/build/tmp/work-shared/plnx_arm/kernel-source/arch/arm/mach-zynq/efuse.c&lt;br /&gt;
* В функции zynq_efuse_cpu_state делаем сразу ретурн тру&lt;br /&gt;
* Че-нибудь меняем в настройках ядра для пересборки&lt;br /&gt;
* Выполняем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build -c kernel -x compile -f&lt;br /&gt;
petalinux-build -c kernel -x deploy -f&lt;br /&gt;
petalinux-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Забираем image.ub&lt;br /&gt;
&lt;br /&gt;
'''ИЛИ'''&lt;br /&gt;
&lt;br /&gt;
Правим device-tree, заменяем адрес efuse на 0xf800cff0&lt;br /&gt;
&lt;br /&gt;
== webserver == &lt;br /&gt;
&lt;br /&gt;
* [https://github.com/emlid/ReachView Репозиторий emlid ReachView] (bnd на py/Flask, fnd на html/Ajax/js/Bootstrap)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Backend:'''&lt;br /&gt;
&lt;br /&gt;
* [http://svenand.blogdrives.com/archive/195.html#.XPTYt4gzaUk Источник по busybox-httpd]&lt;br /&gt;
&lt;br /&gt;
* [https://www.afternerd.com/blog/python-http-server/ Гайд по python server]&lt;br /&gt;
&lt;br /&gt;
* [https://ru.wikibooks.org/wiki/Flask Викиучебник по Flask]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/193242/ ХаброГайд по python/Flask]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Frontend:'''&lt;br /&gt;
&lt;br /&gt;
* [https://unminify.com/ unminify CSS]&lt;br /&gt;
&lt;br /&gt;
* [https://getbootstrap.com/docs/4.3/getting-started/introduction/ Bootstrap EN getting started]&lt;br /&gt;
&lt;br /&gt;
* [https://bootstrap-4.ru/ Bootstrap RU]&lt;br /&gt;
&lt;br /&gt;
* [http://htmlbook.ru/samhtml/tekst/spetssimvoly Справочник по операторам и тегам HTML/CSS]&lt;br /&gt;
&lt;br /&gt;
* [https://www.w3schools.com/howto/default.asp Сборник шаблонов CSS W3schools]&lt;br /&gt;
&lt;br /&gt;
* [https://www.w3schools.com/w3css/w3css_tabulators.asp Анимированный сайдбар/табы]&lt;br /&gt;
&lt;br /&gt;
* [https://css-tricks.com/ CSS Tricks]&lt;br /&gt;
&lt;br /&gt;
* [https://www.cssmatic.com/ Онлайн тени/границы/градиент блоков]&lt;br /&gt;
&lt;br /&gt;
* [https://internetingishard.com/html-and-css/semantic-html/ Semantic HTML grid layout]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/202408/ Хаброгайд(ч1) по верстке]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/211032/ ХаброГайд(ч2) по Bootstrap]&lt;br /&gt;
&lt;br /&gt;
* [https://fontawesome.com/icons?d=gallery Fontawesome ICONS open lib]&lt;br /&gt;
&lt;br /&gt;
:* [https://htmlacademy.ru/courses/43/run/1 Нормальный онлайн HTML/CSS/JS editor]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== busybox httpd ===&lt;br /&gt;
В petalinux многие пакеты скукожены до их минимальных вариантов и встроены в общий пакет busybox. &lt;br /&gt;
В busybox есть также и вебсервер busybox-httpd.&lt;br /&gt;
Для использования нужно на этапе настройки файловой системы его включить:&lt;br /&gt;
&lt;br /&gt;
 $ petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
Конфиг: &lt;br /&gt;
 base -&amp;gt;&lt;br /&gt;
     busybox -&amp;gt;&lt;br /&gt;
          [*] busybox&lt;br /&gt;
          [*] busybox-httpd&lt;br /&gt;
          [ ] busybox-hwclock&lt;br /&gt;
          [*] busybox-inetd&lt;br /&gt;
          [*] busybox-mdev&lt;br /&gt;
          [ ] busybox-syslog &lt;br /&gt;
          [*] busybox-udhcpc &lt;br /&gt;
          [ ] busybox-udhcpd &lt;br /&gt;
&lt;br /&gt;
Сам httpd будет в '''/usr/sbin'''.&lt;br /&gt;
Рабочая папка по умолчанию в '''/srv/www/'''. Если в нее кидать файлы, то именно из нее будет отображаться контент в браузере. Папку можно изменить, перезапустив httpd с ключом -h &amp;lt;workdir&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Порт по умолчанию 80. Работает, как демон в /etc/init.d/, вкл-выкл оттуда же.&lt;br /&gt;
&lt;br /&gt;
Если положить в /srv/www/ файл index.html с неким кодом, то в браузере отобразится вебморда. Картинки работают по ссылкам.&lt;br /&gt;
&lt;br /&gt;
'''index.html'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Transitional//EN&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;clonicus'112 webserver&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h3&amp;gt;Hello, World!&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Web server is now up!&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;https://i.redd.it/oagz5eobkkt11.jpg&amp;quot; width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;http://www.srns.ru&amp;quot;&amp;gt;For more information see SRNS.ru&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== python в petalinux ===&lt;br /&gt;
В petalinux 2017.4 есть 2 питона - 2.7 и 3.5.&lt;br /&gt;
&lt;br /&gt;
 $ petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
'''python2.7'''&lt;br /&gt;
  Filesystem Packages-&amp;gt;&lt;br /&gt;
     devel-&amp;gt;&lt;br /&gt;
         python-&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''python3.5'''&lt;br /&gt;
  Filesystem Packages-&amp;gt;&lt;br /&gt;
     misc-&amp;gt;&lt;br /&gt;
         python3-*&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модуль runpy.py для запуска команд вида 'python -m &amp;lt;module&amp;gt;' находится в python -&amp;gt; python-misc. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SimpleHTTPServer.py ===&lt;br /&gt;
Для первого теста поднимем встроенный в python2.7 минисервер SimpleHTTPServer.py в /usr/lib/python2.7. &lt;br /&gt;
&lt;br /&gt;
Для его запуска напишем скрипт&lt;br /&gt;
&lt;br /&gt;
'''webserver.py''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import SimpleHTTPServer &lt;br /&gt;
import SocketServer &lt;br /&gt;
 &lt;br /&gt;
PORT = 80 &lt;br /&gt;
 &lt;br /&gt;
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler &lt;br /&gt;
 &lt;br /&gt;
httpd = SocketServer.TCPServer((&amp;quot;&amp;quot;, PORT), Handler) &lt;br /&gt;
 &lt;br /&gt;
print &amp;quot;serving at port&amp;quot;, PORT &lt;br /&gt;
httpd.serve_forever()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 $ python webserver.py &lt;br /&gt;
&lt;br /&gt;
При наличии в папке со скриптом файла index.html сервер поднимется автоматически.&lt;br /&gt;
&lt;br /&gt;
=== Добавление слоев в сборку ===&lt;br /&gt;
&lt;br /&gt;
[https://www.srns.ru/wiki/Blog:DneprovD/18.07.2019_Yocto_layers Переехало в статью]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:HOWTO]]&lt;br /&gt;
[[Категория:Oryx]]&lt;br /&gt;
[[Категория:Zynq]]&lt;br /&gt;
[[Категория:EmbeddedLinux]]&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
&lt;br /&gt;
{{wl-publish: 2018-05-16 10:06:30 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/16.05.2018_PetaLinux</id>
		<title>Blog:Lipa/16.05.2018 PetaLinux</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/16.05.2018_PetaLinux"/>
				<updated>2021-03-26T11:59:07Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* Оживление 2-го ядра */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Petalinux.png|400px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сборка PetaLinux для кастомной железки&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма2}}&lt;br /&gt;
&lt;br /&gt;
== Требования ==&lt;br /&gt;
&lt;br /&gt;
Vivado 2018.1 (для single-gigabit ethernet можно более ранние версии)&lt;br /&gt;
&lt;br /&gt;
Начиная с petalinux_2018.1 отсутствует devcfg. Необходимо использовать FPGA manager. Технология нами пока не освоена&lt;br /&gt;
&lt;br /&gt;
Необходима Ubuntu-16.04&lt;br /&gt;
&lt;br /&gt;
Требуется поставить ряд пакетов, полный список приведен в документе [https://www.xilinx.com/support/documentation/sw_manuals/xilinx2019_1/ug1144-petalinux-tools-reference-guide.pdf#page=9 UG1144]&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PetaLinux в систему. Дистрибутив есть на [https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/2018-1.html Xilinx], либо у меня на компьютере. '''Ставить PetaLinux необходимо БЕЗ прав суперюзера!'''&lt;br /&gt;
&lt;br /&gt;
кидаем в /components/yocto/ sstate-rel-v2017.4.tar.gz&lt;br /&gt;
&lt;br /&gt;
Подготовка завершена&lt;br /&gt;
&lt;br /&gt;
== Правка Vivado ==&lt;br /&gt;
&lt;br /&gt;
Для поддержки MDIO в Vivado 17.1-17.4 нужен [https://www.xilinx.com/support/answers/69132.html патч]. Ставим!&lt;br /&gt;
&lt;br /&gt;
'''Не помогло.''' Ставим 2018.1&lt;br /&gt;
&lt;br /&gt;
== Сборка ==&lt;br /&gt;
&lt;br /&gt;
Пошаговое руководство по сборке содержится в документе UG1156&lt;br /&gt;
&lt;br /&gt;
В консоли пишем source/[путь к петалинух]/settings.sh&lt;br /&gt;
&lt;br /&gt;
Выполняем шаги из UG1156 по главе 5:&lt;br /&gt;
&lt;br /&gt;
* экспортируем из Vivado .hdf (в блок дизайн File-&amp;gt;Export-&amp;gt;Export Hardware)&lt;br /&gt;
&lt;br /&gt;
* создаем проект PetaLinux&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-create --type project --template zynq --name &amp;lt;PROJECT&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* переходим в папку с текущим проектом&lt;br /&gt;
&lt;br /&gt;
* подключаем файл .hdf&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config --get-hw-description=[путь к папке с файлом .hdf]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* перед сборкой системы необходимо выполнить '''все''' команды конфигурации в данной последовательности:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&lt;br /&gt;
$ petalinux-config -c kernel&lt;br /&gt;
&lt;br /&gt;
$ petalinux-config -c rootfs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config ===&lt;br /&gt;
&lt;br /&gt;
Если хотим спользовать внешний файл device-tree включаем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Subsystem AUTO Hardware Settings-&amp;gt;&lt;br /&gt;
     Advances bootable images storage settings-&amp;gt;&lt;br /&gt;
          dtb image settings-&amp;gt;&lt;br /&gt;
               image storage media&lt;br /&gt;
                    primary sd&lt;br /&gt;
               &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Необходимо править netboot offset если оперативной памяти менее ~256МБ&lt;br /&gt;
&lt;br /&gt;
Для клоникуса с 256МБ ставим 8'000'000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
u-boot Configuration-&amp;gt;&lt;br /&gt;
     netboot offset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выставляем точку начала распаковки образа системы&lt;br /&gt;
&lt;br /&gt;
Выключаем копирование образа по sftp (Image Packaging Configuration -&amp;gt; Copy final images)&lt;br /&gt;
&lt;br /&gt;
Отключаем интернет-sstate (Yocto Settings -&amp;gt; Enable Network sstate feeds)&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config -c kernel===&lt;br /&gt;
&lt;br /&gt;
* Подключаем в ядре поддержку физика и его дров.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config -c kernel&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''для oryx:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers-&amp;gt;&lt;br /&gt;
     [*]Network device support -&amp;gt;&lt;br /&gt;
          [*]Ethernet driver support -&amp;gt;&lt;br /&gt;
               [*] Micrel devices&lt;br /&gt;
          [*] PHY Device support and infastructure --&amp;gt;&lt;br /&gt;
               [*] Drivers for Micrel PHYs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''для clonicus:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers-&amp;gt;&lt;br /&gt;
     [*]Network device support -&amp;gt;&lt;br /&gt;
          [*] PHY Device support and infastructure --&amp;gt;&lt;br /&gt;
               [*] Texas Instruments DP83867 Gigabit PHY&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config -c rootfs ===&lt;br /&gt;
&lt;br /&gt;
Подключаем при необходимости ethtool, gdbserver(просто gdb не заработал), libstdc, libgcc, glib2.0, glibc(glibc &amp;amp; ltd)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages-&amp;gt;&lt;br /&gt;
     misc -&amp;gt;&lt;br /&gt;
          gcc-runtime -&amp;gt;&lt;br /&gt;
               [*] libstdc ++&lt;br /&gt;
          gdb --&amp;gt;&lt;br /&gt;
               [*] gdb&lt;br /&gt;
          glib-2.0&lt;br /&gt;
               [*] glib-2.0&lt;br /&gt;
          glibc&lt;br /&gt;
               [*] glibc&lt;br /&gt;
               [*] ldd&lt;br /&gt;
     devel -&amp;gt;&lt;br /&gt;
          python -&amp;gt;&lt;br /&gt;
               python -&amp;gt;&lt;br /&gt;
                    [*] python&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Опционально:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages-&amp;gt;&lt;br /&gt;
     base -&amp;gt;&lt;br /&gt;
          i2c-tools -&amp;gt;&lt;br /&gt;
               [*] i2c-tools&lt;br /&gt;
          usbutils -&amp;gt;&lt;br /&gt;
               [*] usbutils&lt;br /&gt;
     console -&amp;gt;&lt;br /&gt;
          network -&amp;gt;&lt;br /&gt;
               ethtool -&amp;gt;&lt;br /&gt;
                    [*] ethtool // необходимо для oryx! для перенастройки autonegotiation&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Можно еще подключать дебаг i2c&lt;br /&gt;
&lt;br /&gt;
'''Необходимо убедиться, что  образ может распаковаться в размер оперативы'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Если будут проблемы, то надо будет править netboot offset&lt;br /&gt;
&lt;br /&gt;
=== device tree ===&lt;br /&gt;
&lt;br /&gt;
Если необходимо внести изменения в device tree, то смотрим конец статьи&lt;br /&gt;
&lt;br /&gt;
[https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841676/U-Boot+Flattened+Device+Tree Интересная статья по правке devicetree из uboot]&lt;br /&gt;
&lt;br /&gt;
=== Сборка проекта ===&lt;br /&gt;
&lt;br /&gt;
* далее (сборка идет 30-60 минут)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build&lt;br /&gt;
&lt;br /&gt;
cd /images/linux/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* делаем boot.bin в папке /images/linux/&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --u-boot --force&lt;br /&gt;
&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --fpga name.bit --u-boot --force&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --fpga name.bit --u-boot --kernel --force&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* записываем в загрузочную область флешки файлы boot.bin и image.ub&lt;br /&gt;
&lt;br /&gt;
== Всякое ==&lt;br /&gt;
&lt;br /&gt;
Если мало памяти как у нас - возможна ошибка image is not a fdt [https://forums.xilinx.com/t5/Embedded-Processor-System-Design/Petalinux-problem-on-custom-board-quot-image-is-not-a-fdt-quot/td-p/754892 ссылка]&lt;br /&gt;
&lt;br /&gt;
Необходимо править netboot offset&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
u-boot Configuration-&amp;gt;&lt;br /&gt;
     netboot offset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Можно вручную загрузиться из u-boot'а.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ fatload mmc 0 0xA000000 image.ub&lt;br /&gt;
$ bootm 0xA000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
либо&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ fatload mmc 0 0xA000000 image.ub&lt;br /&gt;
$ fatload mmc 0 0x9000000 system.dtb&lt;br /&gt;
$ bootm 0xA000000 0xA000000 0x9000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Можно поварьировать адрес&lt;br /&gt;
&lt;br /&gt;
------------&lt;br /&gt;
&lt;br /&gt;
Проверка статуса прошитости FPGA&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat /sys/class/xdevcfg/xdevcfg/device/prog_done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Uboot==&lt;br /&gt;
&lt;br /&gt;
Для внесения правок в загрузку линукса используем список команд '''env'''&lt;br /&gt;
&lt;br /&gt;
Просмотр текущих команд '''printenv'''&lt;br /&gt;
&lt;br /&gt;
Сброс настроек в дефолт '''env default -a'''&lt;br /&gt;
&lt;br /&gt;
Создать переменную '''env set &amp;lt;имя&amp;gt; &amp;lt;значение&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Правка переменной '''env edit &amp;lt;имя переменной&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Для каждой платы делаем следующее:&lt;br /&gt;
&lt;br /&gt;
* Берем [[Файл:uboot.env.c]]&lt;br /&gt;
&lt;br /&gt;
* Удаляем в конце имени &amp;quot;.c&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Записываем на флешку рядом с образом линукса&lt;br /&gt;
&lt;br /&gt;
* Запускаем плату и прерываем autoboot&lt;br /&gt;
&lt;br /&gt;
* Пишем '''editenv ethaddr'''&lt;br /&gt;
&lt;br /&gt;
* Редактируем MAC-адрес&lt;br /&gt;
&lt;br /&gt;
* Пишем '''saveenv'''&lt;br /&gt;
&lt;br /&gt;
* Все! можем ребутать '''reset'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Сохранить в файл '''saveenv'''&lt;br /&gt;
&lt;br /&gt;
==Автозапуск приложений==&lt;br /&gt;
&lt;br /&gt;
Во-первых [https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-Runnning-a-script-file-at-startup/td-p/689051 тыц]&lt;br /&gt;
&lt;br /&gt;
Далее пишем&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-create -t apps --template install -n myapp-init --enable&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим файл /project-spec/meta-user/recipes-apps/myapp-init/myapp-init.bb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file is the myapp-init recipe.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
SUMMARY = &amp;quot;Simple myapp-init application&amp;quot;&lt;br /&gt;
SECTION = &amp;quot;PETALINUX/apps&amp;quot;&lt;br /&gt;
LICENSE = &amp;quot;MIT&amp;quot;&lt;br /&gt;
LIC_FILES_CHKSUM = &amp;quot;file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302&amp;quot;&lt;br /&gt;
&lt;br /&gt;
SRC_URI = &amp;quot;file://myapp-init&amp;quot;&lt;br /&gt;
&lt;br /&gt;
S = &amp;quot;${WORKDIR}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILESEXTRAPATHS_prepend := &amp;quot;${THISDIR}/files:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
inherit update-rc.d&lt;br /&gt;
&lt;br /&gt;
INITSCRIPT_NAME = &amp;quot;myapp-init&amp;quot;&lt;br /&gt;
INITSCRIPT_PARAMS = &amp;quot;start 99 S .&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do_install() {&lt;br /&gt;
    install -d ${D}${sysconfdir}/init.d&lt;br /&gt;
    install -m 0755 ${S}/myapp-init ${D}${sysconfdir}/init.d/myapp-init&lt;br /&gt;
}&lt;br /&gt;
FILES_${PN} += &amp;quot;${sysconfdir}/*&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим сам исполняемый скрипт project-spec/meta-user/recipes-apps/myapp-init/files/myapp-init&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Autorun script&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Try run custom_init&amp;quot;&lt;br /&gt;
sh /run/media/mmcblk0p1/custom_init.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Записываем на флешку скрипт custom_init.sh с нужными командами и делаем его исполняемым&lt;br /&gt;
&lt;br /&gt;
Записываем файл interfaces&lt;br /&gt;
&lt;br /&gt;
Скачать архив: [[Файл:Init_interfaces.rar]]&lt;br /&gt;
&lt;br /&gt;
==SSH==&lt;br /&gt;
&lt;br /&gt;
Как победить сохранение ssh-ключей:&lt;br /&gt;
&lt;br /&gt;
Добавляем в init_script следующие строки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir /run/media/mmcblk0p2/.ssh&lt;br /&gt;
ln -s /run/media/mmcblk0p2/.ssh/ /home/root/&lt;br /&gt;
mkdir /run/media/mmcblk0p2/dropbear/&lt;br /&gt;
chmod 400 /run/media/mmcblk0p2/dropbear/&lt;br /&gt;
rm -r /etc/dropbear/&lt;br /&gt;
ln -s /run/media/mmcblk0p2/dropbear/ /etc/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Создается ссылка на флешку, где хранятся авторизованные пользователи&lt;br /&gt;
* Создается папка для хранения секретного ключа платы&lt;br /&gt;
* При запуске платы свежесозданный ключ заменяется тем, что лежит на флешке&lt;br /&gt;
* При первом включении платы будет создан новый ключ&lt;br /&gt;
&lt;br /&gt;
Помимо добавления указанных команд в скрипт ничего больше делать не надо&lt;br /&gt;
&lt;br /&gt;
==Daemon==&lt;br /&gt;
&lt;br /&gt;
Для настройки демона:&lt;br /&gt;
&lt;br /&gt;
* Добавляем строки в файл custom_init.sh&lt;br /&gt;
* Кидаем на загрузочный раздел флешки папку из архива [[:File:daemon.rar]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp -r /run/media/mmcblk0p1/daemon/lsb /lib/&lt;br /&gt;
cp /run/media/mmcblk0p1/daemon/receiver.conf /etc/&lt;br /&gt;
cp /run/media/mmcblk0p1/daemon/receiver /etc/init.d/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serial port на новом линуксе ===&lt;br /&gt;
Выяснилось, что без доп. настройки, в последовательный порт (dev/ttyPS0) после каждой посылки добавляются символы CR и LF. Оказалось, что и RTKLib, и софт Листопада не хотят работать с таким окончанием пакетов.&lt;br /&gt;
&lt;br /&gt;
Выше не совсем так, скорее мысль в том, что каждый символ LF (0x0A) в наших данных меняется на символы CR LF, т.е. (0x0D0A). И тогда, в нашем битовом потоке меняется размер и содержимое и парсеры работают некорректно.&lt;br /&gt;
Старый линукс на Ориксах добавляет только LF. Для решения проблемы нужно через stty выключить в настройках порта опцию '''onlcr''' (преобразовывать перевод строки в возврат каретки и новую строку).&lt;br /&gt;
&lt;br /&gt;
Сделать это удалось пока только изменив скрипт демона receiver. Для решения проблемы заходим в /run/media/mmcblk0p1/daemon/receiver, и в начале секции receiver_start() {...} добавляем команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
stty -F /dev/ttyPS0 -onlcr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==device tree==&lt;br /&gt;
&lt;br /&gt;
Для внесения изменений в device tree добавляем нужные строки в файл&lt;br /&gt;
&lt;br /&gt;
project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
[https://www.xilinx.com/support/answers/61117.html пример]&lt;br /&gt;
&lt;br /&gt;
Для разборки device-tree [http://xillybus.com/tutorials/device-tree-zynq-1 ссылка]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ dtc -I dtb -O dts -o &amp;lt;name&amp;gt;.dts &amp;lt;name&amp;gt;.dtb&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для сборки device-tree&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ dtc -I dts -O dtb -o &amp;lt;name&amp;gt;.dtb &amp;lt;name&amp;gt;.dts&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Модификация device-tree ==&lt;br /&gt;
&lt;br /&gt;
После долгих мучений получилось поднять DP83867 только после добавления модификатора в файл [https://forums.xilinx.com/t5/Embedded-Linux/ZC702-Like-Board-with-DP83867CR-Ethernet-Petalinux-2017-4/td-p/831873 волшебная статья]&lt;br /&gt;
&lt;br /&gt;
[https://www.kernel.org/doc/Documentation/devicetree/bindings/net/ti%2Cdp83867.txt описание параметров]&lt;br /&gt;
&lt;br /&gt;
project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
=== Single Kit-board eth ===&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth1(с mdio) и выключен eth0.&lt;br /&gt;
&lt;br /&gt;
'''Так работает'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem1{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@12 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;12&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Начало скрытого блока|Выравнивание_заголовка = left| Ссылка = left|Заголовок =  Развернутый .dtb:}}&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/dts-v1/;&lt;br /&gt;
&lt;br /&gt;
/ {&lt;br /&gt;
	#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
	#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
	compatible = &amp;quot;xlnx,zynq-7000&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	cpus {&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
		cpu@0 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9&amp;quot;;&lt;br /&gt;
			device_type = &amp;quot;cpu&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x3&amp;gt;;&lt;br /&gt;
			clock-latency = &amp;lt;0x3e8&amp;gt;;&lt;br /&gt;
			cpu0-supply = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			operating-points = &amp;lt;0xa2c2a 0xf4240 0x51615 0xf4240&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		cpu@1 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9&amp;quot;;&lt;br /&gt;
			device_type = &amp;quot;cpu&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x3&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	fpga-full {&lt;br /&gt;
		compatible = &amp;quot;fpga-region&amp;quot;;&lt;br /&gt;
		fpga-mgr = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		ranges;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	pmu@f8891000 {&lt;br /&gt;
		compatible = &amp;quot;arm,cortex-a9-pmu&amp;quot;;&lt;br /&gt;
		interrupts = &amp;lt;0x0 0x5 0x4 0x0 0x6 0x4&amp;gt;;&lt;br /&gt;
		interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		reg = &amp;lt;0xf8891000 0x1000 0xf8893000 0x1000&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	fixedregulator {&lt;br /&gt;
		compatible = &amp;quot;regulator-fixed&amp;quot;;&lt;br /&gt;
		regulator-name = &amp;quot;VCCPINT&amp;quot;;&lt;br /&gt;
		regulator-min-microvolt = &amp;lt;0xf4240&amp;gt;;&lt;br /&gt;
		regulator-max-microvolt = &amp;lt;0xf4240&amp;gt;;&lt;br /&gt;
		regulator-boot-on;&lt;br /&gt;
		regulator-always-on;&lt;br /&gt;
		linux,phandle = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
		phandle = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	amba {&lt;br /&gt;
		u-boot,dm-pre-reloc;&lt;br /&gt;
		compatible = &amp;quot;simple-bus&amp;quot;;&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		ranges;&lt;br /&gt;
&lt;br /&gt;
		adc@f8007100 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-xadc-1.00.a&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8007100 0x20&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x7 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xc&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		can@e0008000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-can-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x13 0x1 0x24&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;can_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0008000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1c 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			tx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			rx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		can@e0009000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-can-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x14 0x1 0x25&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;can_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0009000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x33 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			tx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			rx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		gpio@e000a000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-gpio-1.0&amp;quot;;&lt;br /&gt;
			#gpio-cells = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x2a&amp;gt;;&lt;br /&gt;
			gpio-controller;&lt;br /&gt;
			interrupt-controller;&lt;br /&gt;
			#interrupt-cells = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x14 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe000a000 0x1000&amp;gt;;&lt;br /&gt;
			emio-gpio-width = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			gpio-mask-high = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			gpio-mask-low = &amp;lt;0x5600&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		i2c@e0004000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x26&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x19 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0004000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		i2c@e0005000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x27&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x30 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0005000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		interrupt-controller@f8f01000 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-gic&amp;quot;;&lt;br /&gt;
			#interrupt-cells = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
			interrupt-controller;&lt;br /&gt;
			reg = &amp;lt;0xf8f01000 0x1000 0xf8f00100 0x100&amp;gt;;&lt;br /&gt;
			num_cpus = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			num_interrupts = &amp;lt;0x60&amp;gt;;&lt;br /&gt;
			linux,phandle = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		cache-controller@f8f02000 {&lt;br /&gt;
			compatible = &amp;quot;arm,pl310-cache&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f02000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2 0x4&amp;gt;;&lt;br /&gt;
			arm,data-latency = &amp;lt;0x3 0x2 0x2&amp;gt;;&lt;br /&gt;
			arm,tag-latency = &amp;lt;0x2 0x2 0x2&amp;gt;;&lt;br /&gt;
			cache-unified;&lt;br /&gt;
			cache-level = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		memory-controller@f8006000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-ddrc-a05&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8006000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ocmc@f800c000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-ocmc-1.0&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x3 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf800c000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		serial@e0000000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,xuartps&amp;quot;, &amp;quot;cdns,uart-r1p8&amp;quot;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x17 0x1 0x28&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;uart_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0000000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1b 0x4&amp;gt;;&lt;br /&gt;
			device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
			port-number = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		serial@e0001000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,xuartps&amp;quot;, &amp;quot;cdns,uart-r1p8&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x18 0x1 0x29&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;uart_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0001000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x32 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e0006000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-spi-r1p6&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0006000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1a 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x19 0x1 0x22&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e0007000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-spi-r1p6&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0007000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x31 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1a 0x1 0x23&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e000d000 {&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xa 0x1 0x2b&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-qspi-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x13 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe000d000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		memory-controller@e000e000 {&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;memclk&amp;quot;, &amp;quot;aclk&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xb 0x1 0x2c&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;arm,pl353-smc-r2p1&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x12 0x4&amp;gt;;&lt;br /&gt;
			ranges;&lt;br /&gt;
			reg = &amp;lt;0xe000e000 0x1000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			flash@e1000000 {&lt;br /&gt;
				status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
				compatible = &amp;quot;arm,pl353-nand-r2p1&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0xe1000000 0x1000000&amp;gt;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			flash@e2000000 {&lt;br /&gt;
				status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
				compatible = &amp;quot;cfi-flash&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0xe2000000 0x2000000&amp;gt;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ethernet@e000b000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,zynq-gem&amp;quot;, &amp;quot;cdns,gem&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe000b000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x16 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1e 0x1 0x1e 0x1 0xd&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;pclk&amp;quot;, &amp;quot;hclk&amp;quot;, &amp;quot;tx_clk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ethernet@e000c000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,zynq-gem&amp;quot;, &amp;quot;cdns,gem&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe000c000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2d 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1f 0x1 0x1f 0x1 0xe&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;pclk&amp;quot;, &amp;quot;hclk&amp;quot;, &amp;quot;tx_clk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
			xlnx,ptp-enet-clock = &amp;lt;0x69f6bcb&amp;gt;;&lt;br /&gt;
			local-mac-address = [00 0a 35 00 22 01];&lt;br /&gt;
			phy-handle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
			xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			mdio {&lt;br /&gt;
				status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
				phy@12 {&lt;br /&gt;
					compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
					device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
					reg = &amp;lt;0xc&amp;gt;;&lt;br /&gt;
					ti,rx-internal-delay = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
					ti,tx-internal-delay = &amp;lt;0xa&amp;gt;;&lt;br /&gt;
					ti,fifo-depth = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
					ti,min-output-impedance;&lt;br /&gt;
					ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
					status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
					linux,phandle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
					phandle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
				};&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		sdhci@e0100000 {&lt;br /&gt;
			compatible = &amp;quot;arasan,sdhci-8.9a&amp;quot;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;clk_xin&amp;quot;, &amp;quot;clk_ahb&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x15 0x1 0x20&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x18 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0100000 0x1000&amp;gt;;&lt;br /&gt;
			xlnx,has-cd = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			xlnx,has-power = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			xlnx,has-wp = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		sdhci@e0101000 {&lt;br /&gt;
			compatible = &amp;quot;arasan,sdhci-8.9a&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;clk_xin&amp;quot;, &amp;quot;clk_ahb&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x16 0x1 0x21&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2f 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0101000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		slcr@f8000000 {&lt;br /&gt;
			u-boot,dm-pre-reloc;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-slcr&amp;quot;, &amp;quot;syscon&amp;quot;, &amp;quot;simple-mfd&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8000000 0x1000&amp;gt;;&lt;br /&gt;
			ranges;&lt;br /&gt;
			linux,phandle = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			clkc@100 {&lt;br /&gt;
				u-boot,dm-pre-reloc;&lt;br /&gt;
				#clock-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				compatible = &amp;quot;xlnx,ps7-clkc&amp;quot;;&lt;br /&gt;
				fclk-enable = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
				clock-output-names = &amp;quot;armpll&amp;quot;, &amp;quot;ddrpll&amp;quot;, &amp;quot;iopll&amp;quot;, &amp;quot;cpu_6or4x&amp;quot;, &amp;quot;cpu_3or2x&amp;quot;, &amp;quot;cpu_2x&amp;quot;, &amp;quot;cpu_1x&amp;quot;, &amp;quot;ddr2x&amp;quot;, &amp;quot;ddr3x&amp;quot;, &amp;quot;dci&amp;quot;, &amp;quot;lqspi&amp;quot;, &amp;quot;smc&amp;quot;, &amp;quot;pcap&amp;quot;, &amp;quot;gem0&amp;quot;, &amp;quot;gem1&amp;quot;, &amp;quot;fclk0&amp;quot;, &amp;quot;fclk1&amp;quot;, &amp;quot;fclk2&amp;quot;, &amp;quot;fclk3&amp;quot;, &amp;quot;can0&amp;quot;, &amp;quot;can1&amp;quot;, &amp;quot;sdio0&amp;quot;, &amp;quot;sdio1&amp;quot;, &amp;quot;uart0&amp;quot;, &amp;quot;uart1&amp;quot;, &amp;quot;spi0&amp;quot;, &amp;quot;spi1&amp;quot;, &amp;quot;dma&amp;quot;, &amp;quot;usb0_aper&amp;quot;, &amp;quot;usb1_aper&amp;quot;, &amp;quot;gem0_aper&amp;quot;, &amp;quot;gem1_aper&amp;quot;, &amp;quot;sdio0_aper&amp;quot;, &amp;quot;sdio1_aper&amp;quot;, &amp;quot;spi0_aper&amp;quot;, &amp;quot;spi1_aper&amp;quot;, &amp;quot;can0_aper&amp;quot;, &amp;quot;can1_aper&amp;quot;, &amp;quot;i2c0_aper&amp;quot;, &amp;quot;i2c1_aper&amp;quot;, &amp;quot;uart0_aper&amp;quot;, &amp;quot;uart1_aper&amp;quot;, &amp;quot;gpio_aper&amp;quot;, &amp;quot;lqspi_aper&amp;quot;, &amp;quot;smc_aper&amp;quot;, &amp;quot;swdt&amp;quot;, &amp;quot;dbg_trc&amp;quot;, &amp;quot;dbg_apb&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x100 0x100&amp;gt;;&lt;br /&gt;
				ps-clk-frequency = &amp;lt;0x1fca055&amp;gt;;&lt;br /&gt;
				linux,phandle = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				phandle = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			rstc@200 {&lt;br /&gt;
				compatible = &amp;quot;xlnx,zynq-reset&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x200 0x48&amp;gt;;&lt;br /&gt;
				#reset-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			pinctrl@700 {&lt;br /&gt;
				compatible = &amp;quot;xlnx,pinctrl-zynq&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x700 0x200&amp;gt;;&lt;br /&gt;
				syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		dmac@f8003000 {&lt;br /&gt;
			compatible = &amp;quot;arm,pl330&amp;quot;, &amp;quot;arm,primecell&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8003000 0x1000&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupt-names = &amp;quot;abort&amp;quot;, &amp;quot;dma0&amp;quot;, &amp;quot;dma1&amp;quot;, &amp;quot;dma2&amp;quot;, &amp;quot;dma3&amp;quot;, &amp;quot;dma4&amp;quot;, &amp;quot;dma5&amp;quot;, &amp;quot;dma6&amp;quot;, &amp;quot;dma7&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0xd 0x4 0x0 0xe 0x4 0x0 0xf 0x4 0x0 0x10 0x4 0x0 0x11 0x4 0x0 0x28 0x4 0x0 0x29 0x4 0x0 0x2a 0x4 0x0 0x2b 0x4&amp;gt;;&lt;br /&gt;
			#dma-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#dma-channels = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
			#dma-requests = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1b&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;apb_pclk&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		devcfg@f8007000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-devcfg-1.0&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x8 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8007000 0x100&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xc 0x1 0xf 0x1 0x10 0x1 0x11 0x1 0x12&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;fclk0&amp;quot;, &amp;quot;fclk1&amp;quot;, &amp;quot;fclk2&amp;quot;, &amp;quot;fclk3&amp;quot;;&lt;br /&gt;
			syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			linux,phandle = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		efuse@f800d000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-efuse&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf800d000 0x20&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8f00200 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-global-timer&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f00200 0x20&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x1 0xb 0x301&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8001000 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0xa 0x4 0x0 0xb 0x4 0x0 0xc 0x4&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,ttc&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x6&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8001000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8002000 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x25 0x4 0x0 0x26 0x4 0x0 0x27 0x4&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,ttc&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x6&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8002000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8f00600 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x1 0xd 0x301&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-twd-timer&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f00600 0x20&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		usb@e0002000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-usb-2.20a&amp;quot;, &amp;quot;chipidea,usb2&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1c&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x15 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0002000 0x1000&amp;gt;;&lt;br /&gt;
			phy_type = &amp;quot;ulpi&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		usb@e0003000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-usb-2.20a&amp;quot;, &amp;quot;chipidea,usb2&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1d&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2c 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0003000 0x1000&amp;gt;;&lt;br /&gt;
			phy_type = &amp;quot;ulpi&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		watchdog@f8005000 {&lt;br /&gt;
			clocks = &amp;lt;0x1 0x2d&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,wdt-r1p2&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x9 0x1&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8005000 0x1000&amp;gt;;&lt;br /&gt;
			timeout-sec = &amp;lt;0xa&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	chosen {&lt;br /&gt;
		bootargs = &amp;quot;console=ttyPS0,115200 earlyprintk&amp;quot;;&lt;br /&gt;
		stdout-path = &amp;quot;serial0:115200n8&amp;quot;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	aliases {&lt;br /&gt;
		ethernet0 = &amp;quot;/amba/ethernet@e000c000&amp;quot;;&lt;br /&gt;
		serial0 = &amp;quot;/amba/serial@e0000000&amp;quot;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	memory {&lt;br /&gt;
		device_type = &amp;quot;memory&amp;quot;;&lt;br /&gt;
		reg = &amp;lt;0x0 0x10000000&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
{{Конец скрытого блока}}&lt;br /&gt;
&lt;br /&gt;
=== Single On-board eth ===&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth0(с mdio) и выключен eth1.&lt;br /&gt;
&lt;br /&gt;
'''Работает гигабит через type-c! Работает hot plug. Успех.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@0 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dual eth ===&lt;br /&gt;
&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Dual-phys-on-MDIO-EMIO/td-p/737716 интересная статья о дуал eth]&lt;br /&gt;
&lt;br /&gt;
Попытка поднять два физика. '''Пока не работает'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    local-mac-address = [00 0a 35 00 00 00];&lt;br /&gt;
    enet-reset = &amp;lt;&amp;amp;gpio0 47 0&amp;gt;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@0 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x8&amp;gt;; &lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0xa&amp;gt;; &lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;; &lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
        phy1: phy@12 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;12&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x8&amp;gt;; &lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0xa&amp;gt;; &lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;; &lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gem1{&lt;br /&gt;
    local-mac-address = [00 0a 35 00 00 01];&lt;br /&gt;
    enet-reset = &amp;lt;&amp;amp;gpio0 47 0&amp;gt;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy1&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Oryx ===&lt;br /&gt;
&lt;br /&gt;
Итоговый system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
Меняем номера uart, чтобы системным был ttyPS1, а пользовательским ttyPS0&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
/ {&lt;br /&gt;
    aliases {&lt;br /&gt;
        serial0 = &amp;amp;uart0;&lt;br /&gt;
        serial1 = &amp;amp;uart1;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@1 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
            rxc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            rxdv-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            txc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            txen-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;1&amp;gt;;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/ {&lt;br /&gt;
    chosen {&lt;br /&gt;
            bootargs = &amp;quot;console=ttyPS1,115200 earlyprintk uio_pdrv_genirq.of_id=generic-uio&amp;quot;;&lt;br /&gt;
            stdout-path = &amp;quot;serial1:115200n8&amp;quot;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    hififo: hififo@40000000 {&lt;br /&gt;
            compatible = &amp;quot;generic-uio&amp;quot;;&lt;br /&gt;
            interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
            interrupts = &amp;lt;0 29 1&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;0x40000000 0x1000 0x18000000 0x8000000&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;uart0{&lt;br /&gt;
    port-number = &amp;lt;0&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;uart1{&lt;br /&gt;
    port-number = &amp;lt;1&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth0(с mdio) и выключен eth1.&lt;br /&gt;
Pullup пока что все включены&lt;br /&gt;
&lt;br /&gt;
[https://github.com/Xilinx/u-boot-xlnx/blob/master/doc/device-tree-bindings/net/micrel-ksz90x1.txt статья в помощь]&lt;br /&gt;
&lt;br /&gt;
'''Работает'''&lt;br /&gt;
&lt;br /&gt;
На новых платах(с отпаянными линиями линиями eth):&lt;br /&gt;
* на полноценных проводах с ходу&lt;br /&gt;
* на обкусанных проводах только если выставить 10 в ethtool&lt;br /&gt;
&lt;br /&gt;
На старых платах:&lt;br /&gt;
&lt;br /&gt;
* на полноценных проводах только если выставить 100 в ethtool&lt;br /&gt;
* на обкусанных проводах только если выставить 10 в ethtool&lt;br /&gt;
&lt;br /&gt;
Везде работает так:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ethtool -s eth0 speed 10 duplex full autoneg on&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Спидометр показывает 2,5МБ/с, т.е. 20Мбит/с!&lt;br /&gt;
&lt;br /&gt;
Можно в custom_itit.sh прописать:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ifdown eth0&lt;br /&gt;
ethtool -s eth0 speed 10 duplex full autoneg on&lt;br /&gt;
ifup eth0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@1 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
            rxc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            rxdv-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            txc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            txen-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;1&amp;gt;;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В принципе, работает сеть на новой плате с нормальным кабелем без модификации devicetree. Остальные комбинации плат-кабелей надо проверять&lt;br /&gt;
&lt;br /&gt;
== i2c ==&lt;br /&gt;
&lt;br /&gt;
В rootfs включаем&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages -&amp;gt;&lt;br /&gt;
     base -&amp;gt;&lt;br /&gt;
          i2c-tools -&amp;gt;&lt;br /&gt;
               [*] i2c-tools&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для поиска устройств можно написать&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i2cdetect -y -r 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842160/Cadence+I2C+Driver Статья] по i2c и RTC&lt;br /&gt;
&lt;br /&gt;
== QSPI Flash ==&lt;br /&gt;
&lt;br /&gt;
для работы по флешь памяти как в ките (S25FL128S) - оставляем в дев.три родные compatible = &amp;quot;n25q512a&amp;quot;,&amp;quot;micron,m25p80&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
== SWDT System Watchdog Timer==&lt;br /&gt;
&lt;br /&gt;
* Модифицируем device-tree&lt;br /&gt;
&lt;br /&gt;
Вставляем в девайс три:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;watchdog0 {&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    reset-on-timeout;&lt;br /&gt;
    timeout-sec = &amp;lt;60&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RTC ==&lt;br /&gt;
&lt;br /&gt;
* Включаем в ядро подходящий драйвер&lt;br /&gt;
&lt;br /&gt;
* Модифицируем device-tree&lt;br /&gt;
&lt;br /&gt;
Вставляем в девайс три:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    i2c0: i2c@e0004000 {&lt;br /&gt;
        clock-frequency = &amp;lt;0xC350&amp;gt;;&lt;br /&gt;
        rtc@51 {&lt;br /&gt;
                compatible = &amp;quot;nxp,pcf85363&amp;quot;;&lt;br /&gt;
                reg = &amp;lt;0x51&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
    i2c1: i2c@e0005000 {&lt;br /&gt;
        clock-frequency = &amp;lt;0xC350&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Будет выглядеть так:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i2c@e0004000 {&lt;br /&gt;
    compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    clocks = &amp;lt;0x1 0x26&amp;gt;;&lt;br /&gt;
    interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
    interrupts = &amp;lt;0x0 0x19 0x4&amp;gt;;&lt;br /&gt;
    reg = &amp;lt;0xe0004000 0x1000&amp;gt;;&lt;br /&gt;
    #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
    #size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
    clock-frequency = &amp;lt;0xc350&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    rtc@51 {&lt;br /&gt;
        compatible = &amp;quot;nxp,pcf85363&amp;quot;;&lt;br /&gt;
        reg = &amp;lt;0x51&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
i2c@e0005000 {&lt;br /&gt;
    compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    clocks = &amp;lt;0x1 0x27&amp;gt;;&lt;br /&gt;
    interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
    interrupts = &amp;lt;0x0 0x30 0x4&amp;gt;;&lt;br /&gt;
    reg = &amp;lt;0xe0005000 0x1000&amp;gt;;&lt;br /&gt;
    #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
    #size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
    clock-frequency = &amp;lt;0xc350&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если готового драйвера нет:&lt;br /&gt;
&lt;br /&gt;
UG1144 pg.54&lt;br /&gt;
&lt;br /&gt;
Создаем новый модуль&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-create -t modules --name &amp;lt;name_module&amp;gt; --enable&lt;br /&gt;
petalinux-create -t modules --name rtc-pcf85363 --enable&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим исходный код в project-spec/meta-user/recipes-modules/rtc-pcf85363/files&lt;br /&gt;
&lt;br /&gt;
Исправленный драйвер лежит в git Clonicus\linux\&lt;br /&gt;
&lt;br /&gt;
Для удаления модуля:&lt;br /&gt;
&lt;br /&gt;
* удаляем папку из project-spec/meta-user/recipes-modules&lt;br /&gt;
&lt;br /&gt;
* В файле project-spec/meta-user/recipes-core/images/petalinux-image.bbappend удаляем соответствующую строку&lt;br /&gt;
&lt;br /&gt;
* переоткрыть petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
Пробуем собрать модуль&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build -c &amp;lt;name_module&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если ОК, собираем (собирать модуль необязательно, petalinux-build его соберет)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И перепаковываем BOOT.bin&lt;br /&gt;
&lt;br /&gt;
Пересобираем deveice-tree с указанием нового драйвера (petalinux-build соберет сам deveice-tree)&lt;br /&gt;
&lt;br /&gt;
просмотр модулей&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsmod&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
загрузить драйвер можно&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
insmod /lib/modules/4.9.0-xilinx-v2017.4/extra/rtc-pcf85363.ko&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
или&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe rtc-pcf85363&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Если все ок и в девайс три прописан правильный драйвер для устройства, то модуль будет загружен сам'''&lt;br /&gt;
&lt;br /&gt;
Прошиваем .bit (для клоникуса нужен бит для работы PL-i2c). После этого можно пользоваться RTC&lt;br /&gt;
&lt;br /&gt;
Чтение времени из rtc если этот rtc не дефолтный (у нас rtc2)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -r -f /dev/rtc2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Синхронизация rtc по системному времени&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -w -f /dev/rtc2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим custom_init.sh для изменения default-rtc на наше устройство&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm /dev/rtc&lt;br /&gt;
ln -s /dev/rtc2 /dev/rtc&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Установка системного времени&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
date --set &amp;quot;2013-7-31 09:30&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запись системного времени в RTC&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -w&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запись времени RTC в системное время&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -s&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Получить время с интеренета&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rdate -s &amp;lt;IP address of time server&amp;gt;&lt;br /&gt;
rdate -s 132.163.96.5 (example)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При перезагрузке &amp;quot;reboot&amp;quot; система автоматически запишет системное время в RTC&lt;br /&gt;
&lt;br /&gt;
== FPGA CONFIG from Uboot ==&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы прошить PL из uboot используем команду:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
fpga loadb 0 &amp;lt;ddr_file_addr&amp;gt; &amp;lt;file_size&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
либо скриптами:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
load_bit=fatload mmc 0 0x100000 clonicus.bit // читаем файл в ddr&lt;br /&gt;
pl_load=fpga loadb 0 0x100000 0x1400000 // прошиваем PL&lt;br /&gt;
fpga_config=run load_bit &amp;amp;&amp;amp; run pl_loadipaddr // вызов самих скриптов&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
0x10_0000 - начальный адрес ddr&lt;br /&gt;
&lt;br /&gt;
0x1_400_000 - размер в байтах для 20МБайт - указываем размер битника с запасом. Теоретически может так не работать, но работает&lt;br /&gt;
&lt;br /&gt;
== ETH over TTY==&lt;br /&gt;
&lt;br /&gt;
В ядре включаем: slip, Universal TUN/TAP&lt;br /&gt;
&lt;br /&gt;
В rootfs включаем net-tools&lt;br /&gt;
&lt;br /&gt;
Включаем iptables для перемршрутизации между подсетями и для него:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[*] Networking support  ---&amp;gt;                                          [CONFIG_NET]&lt;br /&gt;
      Networking Options  ---&amp;gt;&lt;br /&gt;
        [*] Network packet filtering framework (Netfilter) ---&amp;gt;       [CONFIG_NETFILTER]&lt;br /&gt;
          [*] Advanced netfilter configuration                        [CONFIG_NETFILTER_ADVANCED]&lt;br /&gt;
          Core Netfilter Configuration ---&amp;gt;&lt;br /&gt;
            &amp;lt;*/M&amp;gt; Netfilter connection tracking support               [CONFIG_NF_CONNTRACK]&lt;br /&gt;
            &amp;lt;*/M&amp;gt; Netfilter Xtables support (required for ip_tables)  [CONFIG_NETFILTER_XTABLES]&lt;br /&gt;
            &amp;lt;*/M&amp;gt; LOG target support                                  [CONFIG_NETFILTER_XT_TARGET_LOG]&lt;br /&gt;
          IP: Netfilter Configuration ---&amp;gt;&lt;br /&gt;
            &amp;lt;*/M&amp;gt; IP tables support (required for filtering/masq/NAT) [CONFIG_IP_NF_IPTABLES]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PC1:&lt;br /&gt;
&lt;br /&gt;
slattach -L -s 115200 -p slip /dev/ttyPS1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
ifconfig sl0 192.168.1.1/24 up&lt;br /&gt;
&lt;br /&gt;
route add default gw 192.168.1.1 sl0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PC2:&lt;br /&gt;
&lt;br /&gt;
slattach -L -s 115200 -p slip /dev/ttyPS1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
ifconfig sl0 192.168.1.2/24 up&lt;br /&gt;
&lt;br /&gt;
route add default gw 192.168.1.1 sl0&lt;br /&gt;
&lt;br /&gt;
== UART_PL ==&lt;br /&gt;
&lt;br /&gt;
Включаем в настройках ядра поддержку uart_lite, выставляем правильное максимальное число уартов&lt;br /&gt;
&lt;br /&gt;
Модифицируем system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
Обращаем внимание на нумерацию serial, axi_uartlite, она должна не повторяться. То же самое с interrupts &lt;br /&gt;
Указываем верный физический адрес на шине и диапазон адресов в &amp;lt;reg&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
/ {&lt;br /&gt;
    aliases {&lt;br /&gt;
            serial2 = &amp;amp;axi_uartlite_0;&lt;br /&gt;
            serial3 = &amp;amp;axi_uartlite_1;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
/ {&lt;br /&gt;
    amba_pl {&lt;br /&gt;
        #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
        compatible = &amp;quot;simple-bus&amp;quot;;&lt;br /&gt;
        ranges;&lt;br /&gt;
        &lt;br /&gt;
        axi_uartlite_0: serial@80000008 {&lt;br /&gt;
                clock-names = &amp;quot;ref_clk&amp;quot;;&lt;br /&gt;
                clocks = &amp;lt;&amp;amp;clkc 0&amp;gt;;&lt;br /&gt;
                compatible = &amp;quot;xlnx,xps-uartlite-1.00.a&amp;quot;;&lt;br /&gt;
                current-speed = &amp;lt;115200&amp;gt;;&lt;br /&gt;
                device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
                interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                interrupts = &amp;lt;0 30 1&amp;gt;;&lt;br /&gt;
                port-number = &amp;lt;3&amp;gt;;&lt;br /&gt;
                reg = &amp;lt;0x80000008 0x10&amp;gt;;&lt;br /&gt;
                xlnx,baudrate = &amp;lt;0x1c200&amp;gt;;&lt;br /&gt;
                xlnx,data-bits = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
                xlnx,odd-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
                xlnx,s-axi-aclk-freq-hz-d = &amp;quot;100.0&amp;quot;;&lt;br /&gt;
                xlnx,use-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
        axi_uartlite_1: serial@8000001C {&lt;br /&gt;
                clock-names = &amp;quot;ref_clk&amp;quot;;&lt;br /&gt;
                clocks = &amp;lt;&amp;amp;clkc 0&amp;gt;;&lt;br /&gt;
                compatible = &amp;quot;xlnx,xps-uartlite-1.00.a&amp;quot;;&lt;br /&gt;
                current-speed = &amp;lt;115200&amp;gt;;&lt;br /&gt;
                device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
                interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                interrupts = &amp;lt;0 31 1&amp;gt;;&lt;br /&gt;
                port-number = &amp;lt;4&amp;gt;;&lt;br /&gt;
                reg = &amp;lt;0x8000001C 0x10&amp;gt;;&lt;br /&gt;
                xlnx,baudrate = &amp;lt;0x1c200&amp;gt;;&lt;br /&gt;
                xlnx,data-bits = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
                xlnx,odd-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
                xlnx,s-axi-aclk-freq-hz-d = &amp;quot;100.0&amp;quot;;&lt;br /&gt;
                xlnx,use-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если ПЛИС не прошита - будет кернел паник&lt;br /&gt;
&lt;br /&gt;
== IRQ ==&lt;br /&gt;
&lt;br /&gt;
Для поддержки irq добавляем в device-tree&lt;br /&gt;
&lt;br /&gt;
'''Важно - мы перетираем bootargs!'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/ {&lt;br /&gt;
    chosen {&lt;br /&gt;
            bootargs = &amp;quot;console=ttyPS0,115200 earlyprintk uio_pdrv_genirq.of_id=generic-uio&amp;quot;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    hififo: hififo@40000000 {&lt;br /&gt;
                    compatible = &amp;quot;generic-uio&amp;quot;;&lt;br /&gt;
                    interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                    interrupts = &amp;lt;0 29 1&amp;gt;;&lt;br /&gt;
                    reg = &amp;lt;0x40000000 0x1000 0x18000000 0x8000000&amp;gt;;&lt;br /&gt;
            };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
&lt;br /&gt;
Запустил на Z706&lt;br /&gt;
&lt;br /&gt;
[http://www.wiki.xilinx.com/Zynq+Linux+USB+Device+Driver во-первых]&lt;br /&gt;
[http://zedboard.org/content/using-petalinux-configure-zedboard%EF%BC%8C-usb-otg-can-not-work во-вторых]&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-2016-3-zynq-7010-USB-not-working/td-p/737696 в-третьих]&lt;br /&gt;
&lt;br /&gt;
В дефолтных настройках ядра petalinux_2018.1 все было включено&lt;br /&gt;
&lt;br /&gt;
включаем ресет на MIO7 pullup disabled&lt;br /&gt;
&lt;br /&gt;
все ноги интерфейса ulpi pullup disabled&lt;br /&gt;
&lt;br /&gt;
Содержимое system-user.dtsi&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
	/{&lt;br /&gt;
&lt;br /&gt;
    usb_phy0:phy0 {&lt;br /&gt;
&lt;br /&gt;
        compatible=&amp;quot;ulpi-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        #phy-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       reg = &amp;lt;0xe0002000 0x1000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       view-port=&amp;lt;0x170&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       drv-vbus;&lt;br /&gt;
&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&amp;amp;usb0 {&lt;br /&gt;
&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        dr_mode = &amp;quot;host&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        usb-phy = &amp;lt;&amp;amp;usb_phy0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
} ;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== USB-ETHERNET ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers -&amp;gt;&lt;br /&gt;
     USB support -&amp;gt;&lt;br /&gt;
          [*] USB Modem (CDC ACM)&lt;br /&gt;
          USB Gadget Support -&amp;gt;&lt;br /&gt;
               [*] Ethernet Control Model (all)&lt;br /&gt;
               [*] RNDIS&lt;br /&gt;
               [*] Ethernet Emulation Model&lt;br /&gt;
               [*] CDC Composite Device (Ethernet and ACM)&lt;br /&gt;
               [*] USB Gadget Drivers (Ethernet gadget...)&lt;br /&gt;
     Network device support -&amp;gt;&lt;br /&gt;
          USB Network Adapters -&amp;gt;&lt;br /&gt;
               [*] Realtek RTL8152/RTL8153&lt;br /&gt;
               [*] Multi-purpose USB Networking Framework&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WiFi Dongle ==&lt;br /&gt;
&lt;br /&gt;
[https://forum.trenz-electronic.de/index.php?topic=747.0 раз]&lt;br /&gt;
[https://github.com/jinchenglee/zybo_linux_setup_doc два]&lt;br /&gt;
[http://billauer.co.il/blog/2014/06/linux-realtek-hostapd/ три]&lt;br /&gt;
&lt;br /&gt;
Творим:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Networking support -&amp;gt;&lt;br /&gt;
     Wireless -&amp;gt;&lt;br /&gt;
          [*] cfg80211&lt;br /&gt;
          [*] Generic IEEE 802.11 ... (mac80211)&lt;br /&gt;
Device Drivers -&amp;gt;&lt;br /&gt;
     Network device support -&amp;gt;&lt;br /&gt;
          Wireless LAN -&amp;gt;&lt;br /&gt;
               Realtek rtlwifi family of devices -&amp;gt;&lt;br /&gt;
                    [*] Realtek ..../RTL8188CE Wireless Network Adapter ???&lt;br /&gt;
                    [*] Realtek RTL8188EE Wireless Network Adapter ???&lt;br /&gt;
                    [*] Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter&lt;br /&gt;
     Staging drivers -&amp;gt;&lt;br /&gt;
          [*] Realtek RTL8188EU wireless LAN MIC driver&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
rootfs&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem packages -&amp;gt;&lt;br /&gt;
     network -&amp;gt;&lt;br /&gt;
          wpa-supplicant -&amp;gt;&lt;br /&gt;
               [*] wpa-supplicant&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/lwfinger/rtl8188eu/blob/master/rtl8188eufw.bin качаем файл]&lt;br /&gt;
&lt;br /&gt;
Модификаци инит-скрипта&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp /run/media/mmcblk0p1/wpa_supplicant.conf /etc/&lt;br /&gt;
&lt;br /&gt;
mkdir /lib/firmware/&lt;br /&gt;
mkdir /lib/firmware/rtlwifi/&lt;br /&gt;
cp /run/media/mmcblk0p1/rtl8188eufw.bin /lib/firmware/rtlwifi/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WiFi ESP ==&lt;br /&gt;
&lt;br /&gt;
[http://www.wiki.xilinx.com/Zynq+SDIO+Wifi Xilinx SDIP WiFi]&lt;br /&gt;
&lt;br /&gt;
[http://zedboard.org/content/sdio-wifi-driver-ar6103-problem Zedboard раз]&lt;br /&gt;
&lt;br /&gt;
[https://stackoverflow.com/questions/32129689/how-to-bind-sdio1-with-wi-fi-linux два]&lt;br /&gt;
&lt;br /&gt;
[http://picozed.org/content/steps-get-wlink8-working-using-petalinux-picozed picozed три]&lt;br /&gt;
&lt;br /&gt;
[http://zedboard.org/content/adding-wi-fi-and-bluetooth-connectivity-zedboard-using-murata-1dx-pmod zedboard четыре]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Оживление 2-го ядра ==&lt;br /&gt;
&lt;br /&gt;
* Находим /home/ivan/clonicus_1.2.3/build/tmp/work-shared/plnx_arm/kernel-source/arch/arm/mach-zynq/efuse.c&lt;br /&gt;
* В функции zynq_efuse_cpu_state делаем сразу ретурн тру&lt;br /&gt;
* Че-нибудь меняем в настройках ядра для пересборки&lt;br /&gt;
* Выполняем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build -c kernel -x compile -f&lt;br /&gt;
petalinux-build -c kernel -x deploy -f&lt;br /&gt;
petalinux-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Забираем image.ub&lt;br /&gt;
&lt;br /&gt;
'''ИЛИ'''&lt;br /&gt;
&lt;br /&gt;
Правим device-tree, заменяем адрес efuse на 0xf800cff0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== webserver == &lt;br /&gt;
&lt;br /&gt;
* [https://github.com/emlid/ReachView Репозиторий emlid ReachView] (bnd на py/Flask, fnd на html/Ajax/js/Bootstrap)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Backend:'''&lt;br /&gt;
&lt;br /&gt;
* [http://svenand.blogdrives.com/archive/195.html#.XPTYt4gzaUk Источник по busybox-httpd]&lt;br /&gt;
&lt;br /&gt;
* [https://www.afternerd.com/blog/python-http-server/ Гайд по python server]&lt;br /&gt;
&lt;br /&gt;
* [https://ru.wikibooks.org/wiki/Flask Викиучебник по Flask]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/193242/ ХаброГайд по python/Flask]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Frontend:'''&lt;br /&gt;
&lt;br /&gt;
* [https://unminify.com/ unminify CSS]&lt;br /&gt;
&lt;br /&gt;
* [https://getbootstrap.com/docs/4.3/getting-started/introduction/ Bootstrap EN getting started]&lt;br /&gt;
&lt;br /&gt;
* [https://bootstrap-4.ru/ Bootstrap RU]&lt;br /&gt;
&lt;br /&gt;
* [http://htmlbook.ru/samhtml/tekst/spetssimvoly Справочник по операторам и тегам HTML/CSS]&lt;br /&gt;
&lt;br /&gt;
* [https://www.w3schools.com/howto/default.asp Сборник шаблонов CSS W3schools]&lt;br /&gt;
&lt;br /&gt;
* [https://www.w3schools.com/w3css/w3css_tabulators.asp Анимированный сайдбар/табы]&lt;br /&gt;
&lt;br /&gt;
* [https://css-tricks.com/ CSS Tricks]&lt;br /&gt;
&lt;br /&gt;
* [https://www.cssmatic.com/ Онлайн тени/границы/градиент блоков]&lt;br /&gt;
&lt;br /&gt;
* [https://internetingishard.com/html-and-css/semantic-html/ Semantic HTML grid layout]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/202408/ Хаброгайд(ч1) по верстке]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/211032/ ХаброГайд(ч2) по Bootstrap]&lt;br /&gt;
&lt;br /&gt;
* [https://fontawesome.com/icons?d=gallery Fontawesome ICONS open lib]&lt;br /&gt;
&lt;br /&gt;
:* [https://htmlacademy.ru/courses/43/run/1 Нормальный онлайн HTML/CSS/JS editor]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== busybox httpd ===&lt;br /&gt;
В petalinux многие пакеты скукожены до их минимальных вариантов и встроены в общий пакет busybox. &lt;br /&gt;
В busybox есть также и вебсервер busybox-httpd.&lt;br /&gt;
Для использования нужно на этапе настройки файловой системы его включить:&lt;br /&gt;
&lt;br /&gt;
 $ petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
Конфиг: &lt;br /&gt;
 base -&amp;gt;&lt;br /&gt;
     busybox -&amp;gt;&lt;br /&gt;
          [*] busybox&lt;br /&gt;
          [*] busybox-httpd&lt;br /&gt;
          [ ] busybox-hwclock&lt;br /&gt;
          [*] busybox-inetd&lt;br /&gt;
          [*] busybox-mdev&lt;br /&gt;
          [ ] busybox-syslog &lt;br /&gt;
          [*] busybox-udhcpc &lt;br /&gt;
          [ ] busybox-udhcpd &lt;br /&gt;
&lt;br /&gt;
Сам httpd будет в '''/usr/sbin'''.&lt;br /&gt;
Рабочая папка по умолчанию в '''/srv/www/'''. Если в нее кидать файлы, то именно из нее будет отображаться контент в браузере. Папку можно изменить, перезапустив httpd с ключом -h &amp;lt;workdir&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Порт по умолчанию 80. Работает, как демон в /etc/init.d/, вкл-выкл оттуда же.&lt;br /&gt;
&lt;br /&gt;
Если положить в /srv/www/ файл index.html с неким кодом, то в браузере отобразится вебморда. Картинки работают по ссылкам.&lt;br /&gt;
&lt;br /&gt;
'''index.html'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Transitional//EN&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;clonicus'112 webserver&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h3&amp;gt;Hello, World!&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Web server is now up!&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;https://i.redd.it/oagz5eobkkt11.jpg&amp;quot; width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;http://www.srns.ru&amp;quot;&amp;gt;For more information see SRNS.ru&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== python в petalinux ===&lt;br /&gt;
В petalinux 2017.4 есть 2 питона - 2.7 и 3.5.&lt;br /&gt;
&lt;br /&gt;
 $ petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
'''python2.7'''&lt;br /&gt;
  Filesystem Packages-&amp;gt;&lt;br /&gt;
     devel-&amp;gt;&lt;br /&gt;
         python-&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''python3.5'''&lt;br /&gt;
  Filesystem Packages-&amp;gt;&lt;br /&gt;
     misc-&amp;gt;&lt;br /&gt;
         python3-*&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модуль runpy.py для запуска команд вида 'python -m &amp;lt;module&amp;gt;' находится в python -&amp;gt; python-misc. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SimpleHTTPServer.py ===&lt;br /&gt;
Для первого теста поднимем встроенный в python2.7 минисервер SimpleHTTPServer.py в /usr/lib/python2.7. &lt;br /&gt;
&lt;br /&gt;
Для его запуска напишем скрипт&lt;br /&gt;
&lt;br /&gt;
'''webserver.py''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import SimpleHTTPServer &lt;br /&gt;
import SocketServer &lt;br /&gt;
 &lt;br /&gt;
PORT = 80 &lt;br /&gt;
 &lt;br /&gt;
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler &lt;br /&gt;
 &lt;br /&gt;
httpd = SocketServer.TCPServer((&amp;quot;&amp;quot;, PORT), Handler) &lt;br /&gt;
 &lt;br /&gt;
print &amp;quot;serving at port&amp;quot;, PORT &lt;br /&gt;
httpd.serve_forever()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 $ python webserver.py &lt;br /&gt;
&lt;br /&gt;
При наличии в папке со скриптом файла index.html сервер поднимется автоматически.&lt;br /&gt;
&lt;br /&gt;
=== Добавление слоев в сборку ===&lt;br /&gt;
&lt;br /&gt;
[https://www.srns.ru/wiki/Blog:DneprovD/18.07.2019_Yocto_layers Переехало в статью]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:HOWTO]]&lt;br /&gt;
[[Категория:Oryx]]&lt;br /&gt;
[[Категория:Zynq]]&lt;br /&gt;
[[Категория:EmbeddedLinux]]&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
&lt;br /&gt;
{{wl-publish: 2018-05-16 10:06:30 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/16.05.2018_PetaLinux</id>
		<title>Blog:Lipa/16.05.2018 PetaLinux</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/16.05.2018_PetaLinux"/>
				<updated>2021-03-26T10:58:53Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* Оживление 2-го ядра */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Petalinux.png|400px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сборка PetaLinux для кастомной железки&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма2}}&lt;br /&gt;
&lt;br /&gt;
== Требования ==&lt;br /&gt;
&lt;br /&gt;
Vivado 2018.1 (для single-gigabit ethernet можно более ранние версии)&lt;br /&gt;
&lt;br /&gt;
Начиная с petalinux_2018.1 отсутствует devcfg. Необходимо использовать FPGA manager. Технология нами пока не освоена&lt;br /&gt;
&lt;br /&gt;
Необходима Ubuntu-16.04&lt;br /&gt;
&lt;br /&gt;
Требуется поставить ряд пакетов, полный список приведен в документе [https://www.xilinx.com/support/documentation/sw_manuals/xilinx2019_1/ug1144-petalinux-tools-reference-guide.pdf#page=9 UG1144]&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PetaLinux в систему. Дистрибутив есть на [https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/2018-1.html Xilinx], либо у меня на компьютере. '''Ставить PetaLinux необходимо БЕЗ прав суперюзера!'''&lt;br /&gt;
&lt;br /&gt;
кидаем в /components/yocto/ sstate-rel-v2017.4.tar.gz&lt;br /&gt;
&lt;br /&gt;
Подготовка завершена&lt;br /&gt;
&lt;br /&gt;
== Правка Vivado ==&lt;br /&gt;
&lt;br /&gt;
Для поддержки MDIO в Vivado 17.1-17.4 нужен [https://www.xilinx.com/support/answers/69132.html патч]. Ставим!&lt;br /&gt;
&lt;br /&gt;
'''Не помогло.''' Ставим 2018.1&lt;br /&gt;
&lt;br /&gt;
== Сборка ==&lt;br /&gt;
&lt;br /&gt;
Пошаговое руководство по сборке содержится в документе UG1156&lt;br /&gt;
&lt;br /&gt;
В консоли пишем source/[путь к петалинух]/settings.sh&lt;br /&gt;
&lt;br /&gt;
Выполняем шаги из UG1156 по главе 5:&lt;br /&gt;
&lt;br /&gt;
* экспортируем из Vivado .hdf (в блок дизайн File-&amp;gt;Export-&amp;gt;Export Hardware)&lt;br /&gt;
&lt;br /&gt;
* создаем проект PetaLinux&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-create --type project --template zynq --name &amp;lt;PROJECT&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* переходим в папку с текущим проектом&lt;br /&gt;
&lt;br /&gt;
* подключаем файл .hdf&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config --get-hw-description=[путь к папке с файлом .hdf]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* перед сборкой системы необходимо выполнить '''все''' команды конфигурации в данной последовательности:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&lt;br /&gt;
$ petalinux-config -c kernel&lt;br /&gt;
&lt;br /&gt;
$ petalinux-config -c rootfs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config ===&lt;br /&gt;
&lt;br /&gt;
Если хотим спользовать внешний файл device-tree включаем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Subsystem AUTO Hardware Settings-&amp;gt;&lt;br /&gt;
     Advances bootable images storage settings-&amp;gt;&lt;br /&gt;
          dtb image settings-&amp;gt;&lt;br /&gt;
               image storage media&lt;br /&gt;
                    primary sd&lt;br /&gt;
               &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Необходимо править netboot offset если оперативной памяти менее ~256МБ&lt;br /&gt;
&lt;br /&gt;
Для клоникуса с 256МБ ставим 8'000'000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
u-boot Configuration-&amp;gt;&lt;br /&gt;
     netboot offset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выставляем точку начала распаковки образа системы&lt;br /&gt;
&lt;br /&gt;
Выключаем копирование образа по sftp (Image Packaging Configuration -&amp;gt; Copy final images)&lt;br /&gt;
&lt;br /&gt;
Отключаем интернет-sstate (Yocto Settings -&amp;gt; Enable Network sstate feeds)&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config -c kernel===&lt;br /&gt;
&lt;br /&gt;
* Подключаем в ядре поддержку физика и его дров.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config -c kernel&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''для oryx:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers-&amp;gt;&lt;br /&gt;
     [*]Network device support -&amp;gt;&lt;br /&gt;
          [*]Ethernet driver support -&amp;gt;&lt;br /&gt;
               [*] Micrel devices&lt;br /&gt;
          [*] PHY Device support and infastructure --&amp;gt;&lt;br /&gt;
               [*] Drivers for Micrel PHYs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''для clonicus:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers-&amp;gt;&lt;br /&gt;
     [*]Network device support -&amp;gt;&lt;br /&gt;
          [*] PHY Device support and infastructure --&amp;gt;&lt;br /&gt;
               [*] Texas Instruments DP83867 Gigabit PHY&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config -c rootfs ===&lt;br /&gt;
&lt;br /&gt;
Подключаем при необходимости ethtool, gdbserver(просто gdb не заработал), libstdc, libgcc, glib2.0, glibc(glibc &amp;amp; ltd)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages-&amp;gt;&lt;br /&gt;
     misc -&amp;gt;&lt;br /&gt;
          gcc-runtime -&amp;gt;&lt;br /&gt;
               [*] libstdc ++&lt;br /&gt;
          gdb --&amp;gt;&lt;br /&gt;
               [*] gdb&lt;br /&gt;
          glib-2.0&lt;br /&gt;
               [*] glib-2.0&lt;br /&gt;
          glibc&lt;br /&gt;
               [*] glibc&lt;br /&gt;
               [*] ldd&lt;br /&gt;
     devel -&amp;gt;&lt;br /&gt;
          python -&amp;gt;&lt;br /&gt;
               python -&amp;gt;&lt;br /&gt;
                    [*] python&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Опционально:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages-&amp;gt;&lt;br /&gt;
     base -&amp;gt;&lt;br /&gt;
          i2c-tools -&amp;gt;&lt;br /&gt;
               [*] i2c-tools&lt;br /&gt;
          usbutils -&amp;gt;&lt;br /&gt;
               [*] usbutils&lt;br /&gt;
     console -&amp;gt;&lt;br /&gt;
          network -&amp;gt;&lt;br /&gt;
               ethtool -&amp;gt;&lt;br /&gt;
                    [*] ethtool // необходимо для oryx! для перенастройки autonegotiation&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Можно еще подключать дебаг i2c&lt;br /&gt;
&lt;br /&gt;
'''Необходимо убедиться, что  образ может распаковаться в размер оперативы'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Если будут проблемы, то надо будет править netboot offset&lt;br /&gt;
&lt;br /&gt;
=== device tree ===&lt;br /&gt;
&lt;br /&gt;
Если необходимо внести изменения в device tree, то смотрим конец статьи&lt;br /&gt;
&lt;br /&gt;
[https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841676/U-Boot+Flattened+Device+Tree Интересная статья по правке devicetree из uboot]&lt;br /&gt;
&lt;br /&gt;
=== Сборка проекта ===&lt;br /&gt;
&lt;br /&gt;
* далее (сборка идет 30-60 минут)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build&lt;br /&gt;
&lt;br /&gt;
cd /images/linux/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* делаем boot.bin в папке /images/linux/&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --u-boot --force&lt;br /&gt;
&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --fpga name.bit --u-boot --force&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --fpga name.bit --u-boot --kernel --force&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* записываем в загрузочную область флешки файлы boot.bin и image.ub&lt;br /&gt;
&lt;br /&gt;
== Всякое ==&lt;br /&gt;
&lt;br /&gt;
Если мало памяти как у нас - возможна ошибка image is not a fdt [https://forums.xilinx.com/t5/Embedded-Processor-System-Design/Petalinux-problem-on-custom-board-quot-image-is-not-a-fdt-quot/td-p/754892 ссылка]&lt;br /&gt;
&lt;br /&gt;
Необходимо править netboot offset&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
u-boot Configuration-&amp;gt;&lt;br /&gt;
     netboot offset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Можно вручную загрузиться из u-boot'а.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ fatload mmc 0 0xA000000 image.ub&lt;br /&gt;
$ bootm 0xA000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
либо&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ fatload mmc 0 0xA000000 image.ub&lt;br /&gt;
$ fatload mmc 0 0x9000000 system.dtb&lt;br /&gt;
$ bootm 0xA000000 0xA000000 0x9000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Можно поварьировать адрес&lt;br /&gt;
&lt;br /&gt;
------------&lt;br /&gt;
&lt;br /&gt;
Проверка статуса прошитости FPGA&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat /sys/class/xdevcfg/xdevcfg/device/prog_done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Uboot==&lt;br /&gt;
&lt;br /&gt;
Для внесения правок в загрузку линукса используем список команд '''env'''&lt;br /&gt;
&lt;br /&gt;
Просмотр текущих команд '''printenv'''&lt;br /&gt;
&lt;br /&gt;
Сброс настроек в дефолт '''env default -a'''&lt;br /&gt;
&lt;br /&gt;
Создать переменную '''env set &amp;lt;имя&amp;gt; &amp;lt;значение&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Правка переменной '''env edit &amp;lt;имя переменной&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Для каждой платы делаем следующее:&lt;br /&gt;
&lt;br /&gt;
* Берем [[Файл:uboot.env.c]]&lt;br /&gt;
&lt;br /&gt;
* Удаляем в конце имени &amp;quot;.c&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Записываем на флешку рядом с образом линукса&lt;br /&gt;
&lt;br /&gt;
* Запускаем плату и прерываем autoboot&lt;br /&gt;
&lt;br /&gt;
* Пишем '''editenv ethaddr'''&lt;br /&gt;
&lt;br /&gt;
* Редактируем MAC-адрес&lt;br /&gt;
&lt;br /&gt;
* Пишем '''saveenv'''&lt;br /&gt;
&lt;br /&gt;
* Все! можем ребутать '''reset'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Сохранить в файл '''saveenv'''&lt;br /&gt;
&lt;br /&gt;
==Автозапуск приложений==&lt;br /&gt;
&lt;br /&gt;
Во-первых [https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-Runnning-a-script-file-at-startup/td-p/689051 тыц]&lt;br /&gt;
&lt;br /&gt;
Далее пишем&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-create -t apps --template install -n myapp-init --enable&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим файл /project-spec/meta-user/recipes-apps/myapp-init/myapp-init.bb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file is the myapp-init recipe.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
SUMMARY = &amp;quot;Simple myapp-init application&amp;quot;&lt;br /&gt;
SECTION = &amp;quot;PETALINUX/apps&amp;quot;&lt;br /&gt;
LICENSE = &amp;quot;MIT&amp;quot;&lt;br /&gt;
LIC_FILES_CHKSUM = &amp;quot;file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302&amp;quot;&lt;br /&gt;
&lt;br /&gt;
SRC_URI = &amp;quot;file://myapp-init&amp;quot;&lt;br /&gt;
&lt;br /&gt;
S = &amp;quot;${WORKDIR}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILESEXTRAPATHS_prepend := &amp;quot;${THISDIR}/files:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
inherit update-rc.d&lt;br /&gt;
&lt;br /&gt;
INITSCRIPT_NAME = &amp;quot;myapp-init&amp;quot;&lt;br /&gt;
INITSCRIPT_PARAMS = &amp;quot;start 99 S .&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do_install() {&lt;br /&gt;
    install -d ${D}${sysconfdir}/init.d&lt;br /&gt;
    install -m 0755 ${S}/myapp-init ${D}${sysconfdir}/init.d/myapp-init&lt;br /&gt;
}&lt;br /&gt;
FILES_${PN} += &amp;quot;${sysconfdir}/*&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим сам исполняемый скрипт project-spec/meta-user/recipes-apps/myapp-init/files/myapp-init&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Autorun script&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Try run custom_init&amp;quot;&lt;br /&gt;
sh /run/media/mmcblk0p1/custom_init.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Записываем на флешку скрипт custom_init.sh с нужными командами и делаем его исполняемым&lt;br /&gt;
&lt;br /&gt;
Записываем файл interfaces&lt;br /&gt;
&lt;br /&gt;
Скачать архив: [[Файл:Init_interfaces.rar]]&lt;br /&gt;
&lt;br /&gt;
==SSH==&lt;br /&gt;
&lt;br /&gt;
Как победить сохранение ssh-ключей:&lt;br /&gt;
&lt;br /&gt;
Добавляем в init_script следующие строки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir /run/media/mmcblk0p2/.ssh&lt;br /&gt;
ln -s /run/media/mmcblk0p2/.ssh/ /home/root/&lt;br /&gt;
mkdir /run/media/mmcblk0p2/dropbear/&lt;br /&gt;
chmod 400 /run/media/mmcblk0p2/dropbear/&lt;br /&gt;
rm -r /etc/dropbear/&lt;br /&gt;
ln -s /run/media/mmcblk0p2/dropbear/ /etc/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Создается ссылка на флешку, где хранятся авторизованные пользователи&lt;br /&gt;
* Создается папка для хранения секретного ключа платы&lt;br /&gt;
* При запуске платы свежесозданный ключ заменяется тем, что лежит на флешке&lt;br /&gt;
* При первом включении платы будет создан новый ключ&lt;br /&gt;
&lt;br /&gt;
Помимо добавления указанных команд в скрипт ничего больше делать не надо&lt;br /&gt;
&lt;br /&gt;
==Daemon==&lt;br /&gt;
&lt;br /&gt;
Для настройки демона:&lt;br /&gt;
&lt;br /&gt;
* Добавляем строки в файл custom_init.sh&lt;br /&gt;
* Кидаем на загрузочный раздел флешки папку из архива [[:File:daemon.rar]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp -r /run/media/mmcblk0p1/daemon/lsb /lib/&lt;br /&gt;
cp /run/media/mmcblk0p1/daemon/receiver.conf /etc/&lt;br /&gt;
cp /run/media/mmcblk0p1/daemon/receiver /etc/init.d/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serial port на новом линуксе ===&lt;br /&gt;
Выяснилось, что без доп. настройки, в последовательный порт (dev/ttyPS0) после каждой посылки добавляются символы CR и LF. Оказалось, что и RTKLib, и софт Листопада не хотят работать с таким окончанием пакетов.&lt;br /&gt;
&lt;br /&gt;
Выше не совсем так, скорее мысль в том, что каждый символ LF (0x0A) в наших данных меняется на символы CR LF, т.е. (0x0D0A). И тогда, в нашем битовом потоке меняется размер и содержимое и парсеры работают некорректно.&lt;br /&gt;
Старый линукс на Ориксах добавляет только LF. Для решения проблемы нужно через stty выключить в настройках порта опцию '''onlcr''' (преобразовывать перевод строки в возврат каретки и новую строку).&lt;br /&gt;
&lt;br /&gt;
Сделать это удалось пока только изменив скрипт демона receiver. Для решения проблемы заходим в /run/media/mmcblk0p1/daemon/receiver, и в начале секции receiver_start() {...} добавляем команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
stty -F /dev/ttyPS0 -onlcr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==device tree==&lt;br /&gt;
&lt;br /&gt;
Для внесения изменений в device tree добавляем нужные строки в файл&lt;br /&gt;
&lt;br /&gt;
project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
[https://www.xilinx.com/support/answers/61117.html пример]&lt;br /&gt;
&lt;br /&gt;
Для разборки device-tree [http://xillybus.com/tutorials/device-tree-zynq-1 ссылка]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ dtc -I dtb -O dts -o &amp;lt;name&amp;gt;.dts &amp;lt;name&amp;gt;.dtb&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для сборки device-tree&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ dtc -I dts -O dtb -o &amp;lt;name&amp;gt;.dtb &amp;lt;name&amp;gt;.dts&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Модификация device-tree ==&lt;br /&gt;
&lt;br /&gt;
После долгих мучений получилось поднять DP83867 только после добавления модификатора в файл [https://forums.xilinx.com/t5/Embedded-Linux/ZC702-Like-Board-with-DP83867CR-Ethernet-Petalinux-2017-4/td-p/831873 волшебная статья]&lt;br /&gt;
&lt;br /&gt;
[https://www.kernel.org/doc/Documentation/devicetree/bindings/net/ti%2Cdp83867.txt описание параметров]&lt;br /&gt;
&lt;br /&gt;
project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
=== Single Kit-board eth ===&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth1(с mdio) и выключен eth0.&lt;br /&gt;
&lt;br /&gt;
'''Так работает'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem1{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@12 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;12&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Начало скрытого блока|Выравнивание_заголовка = left| Ссылка = left|Заголовок =  Развернутый .dtb:}}&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/dts-v1/;&lt;br /&gt;
&lt;br /&gt;
/ {&lt;br /&gt;
	#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
	#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
	compatible = &amp;quot;xlnx,zynq-7000&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	cpus {&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
		cpu@0 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9&amp;quot;;&lt;br /&gt;
			device_type = &amp;quot;cpu&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x3&amp;gt;;&lt;br /&gt;
			clock-latency = &amp;lt;0x3e8&amp;gt;;&lt;br /&gt;
			cpu0-supply = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			operating-points = &amp;lt;0xa2c2a 0xf4240 0x51615 0xf4240&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		cpu@1 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9&amp;quot;;&lt;br /&gt;
			device_type = &amp;quot;cpu&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x3&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	fpga-full {&lt;br /&gt;
		compatible = &amp;quot;fpga-region&amp;quot;;&lt;br /&gt;
		fpga-mgr = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		ranges;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	pmu@f8891000 {&lt;br /&gt;
		compatible = &amp;quot;arm,cortex-a9-pmu&amp;quot;;&lt;br /&gt;
		interrupts = &amp;lt;0x0 0x5 0x4 0x0 0x6 0x4&amp;gt;;&lt;br /&gt;
		interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		reg = &amp;lt;0xf8891000 0x1000 0xf8893000 0x1000&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	fixedregulator {&lt;br /&gt;
		compatible = &amp;quot;regulator-fixed&amp;quot;;&lt;br /&gt;
		regulator-name = &amp;quot;VCCPINT&amp;quot;;&lt;br /&gt;
		regulator-min-microvolt = &amp;lt;0xf4240&amp;gt;;&lt;br /&gt;
		regulator-max-microvolt = &amp;lt;0xf4240&amp;gt;;&lt;br /&gt;
		regulator-boot-on;&lt;br /&gt;
		regulator-always-on;&lt;br /&gt;
		linux,phandle = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
		phandle = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	amba {&lt;br /&gt;
		u-boot,dm-pre-reloc;&lt;br /&gt;
		compatible = &amp;quot;simple-bus&amp;quot;;&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		ranges;&lt;br /&gt;
&lt;br /&gt;
		adc@f8007100 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-xadc-1.00.a&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8007100 0x20&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x7 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xc&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		can@e0008000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-can-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x13 0x1 0x24&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;can_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0008000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1c 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			tx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			rx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		can@e0009000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-can-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x14 0x1 0x25&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;can_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0009000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x33 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			tx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			rx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		gpio@e000a000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-gpio-1.0&amp;quot;;&lt;br /&gt;
			#gpio-cells = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x2a&amp;gt;;&lt;br /&gt;
			gpio-controller;&lt;br /&gt;
			interrupt-controller;&lt;br /&gt;
			#interrupt-cells = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x14 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe000a000 0x1000&amp;gt;;&lt;br /&gt;
			emio-gpio-width = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			gpio-mask-high = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			gpio-mask-low = &amp;lt;0x5600&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		i2c@e0004000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x26&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x19 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0004000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		i2c@e0005000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x27&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x30 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0005000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		interrupt-controller@f8f01000 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-gic&amp;quot;;&lt;br /&gt;
			#interrupt-cells = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
			interrupt-controller;&lt;br /&gt;
			reg = &amp;lt;0xf8f01000 0x1000 0xf8f00100 0x100&amp;gt;;&lt;br /&gt;
			num_cpus = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			num_interrupts = &amp;lt;0x60&amp;gt;;&lt;br /&gt;
			linux,phandle = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		cache-controller@f8f02000 {&lt;br /&gt;
			compatible = &amp;quot;arm,pl310-cache&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f02000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2 0x4&amp;gt;;&lt;br /&gt;
			arm,data-latency = &amp;lt;0x3 0x2 0x2&amp;gt;;&lt;br /&gt;
			arm,tag-latency = &amp;lt;0x2 0x2 0x2&amp;gt;;&lt;br /&gt;
			cache-unified;&lt;br /&gt;
			cache-level = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		memory-controller@f8006000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-ddrc-a05&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8006000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ocmc@f800c000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-ocmc-1.0&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x3 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf800c000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		serial@e0000000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,xuartps&amp;quot;, &amp;quot;cdns,uart-r1p8&amp;quot;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x17 0x1 0x28&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;uart_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0000000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1b 0x4&amp;gt;;&lt;br /&gt;
			device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
			port-number = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		serial@e0001000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,xuartps&amp;quot;, &amp;quot;cdns,uart-r1p8&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x18 0x1 0x29&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;uart_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0001000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x32 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e0006000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-spi-r1p6&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0006000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1a 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x19 0x1 0x22&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e0007000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-spi-r1p6&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0007000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x31 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1a 0x1 0x23&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e000d000 {&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xa 0x1 0x2b&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-qspi-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x13 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe000d000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		memory-controller@e000e000 {&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;memclk&amp;quot;, &amp;quot;aclk&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xb 0x1 0x2c&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;arm,pl353-smc-r2p1&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x12 0x4&amp;gt;;&lt;br /&gt;
			ranges;&lt;br /&gt;
			reg = &amp;lt;0xe000e000 0x1000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			flash@e1000000 {&lt;br /&gt;
				status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
				compatible = &amp;quot;arm,pl353-nand-r2p1&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0xe1000000 0x1000000&amp;gt;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			flash@e2000000 {&lt;br /&gt;
				status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
				compatible = &amp;quot;cfi-flash&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0xe2000000 0x2000000&amp;gt;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ethernet@e000b000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,zynq-gem&amp;quot;, &amp;quot;cdns,gem&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe000b000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x16 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1e 0x1 0x1e 0x1 0xd&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;pclk&amp;quot;, &amp;quot;hclk&amp;quot;, &amp;quot;tx_clk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ethernet@e000c000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,zynq-gem&amp;quot;, &amp;quot;cdns,gem&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe000c000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2d 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1f 0x1 0x1f 0x1 0xe&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;pclk&amp;quot;, &amp;quot;hclk&amp;quot;, &amp;quot;tx_clk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
			xlnx,ptp-enet-clock = &amp;lt;0x69f6bcb&amp;gt;;&lt;br /&gt;
			local-mac-address = [00 0a 35 00 22 01];&lt;br /&gt;
			phy-handle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
			xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			mdio {&lt;br /&gt;
				status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
				phy@12 {&lt;br /&gt;
					compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
					device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
					reg = &amp;lt;0xc&amp;gt;;&lt;br /&gt;
					ti,rx-internal-delay = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
					ti,tx-internal-delay = &amp;lt;0xa&amp;gt;;&lt;br /&gt;
					ti,fifo-depth = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
					ti,min-output-impedance;&lt;br /&gt;
					ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
					status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
					linux,phandle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
					phandle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
				};&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		sdhci@e0100000 {&lt;br /&gt;
			compatible = &amp;quot;arasan,sdhci-8.9a&amp;quot;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;clk_xin&amp;quot;, &amp;quot;clk_ahb&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x15 0x1 0x20&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x18 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0100000 0x1000&amp;gt;;&lt;br /&gt;
			xlnx,has-cd = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			xlnx,has-power = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			xlnx,has-wp = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		sdhci@e0101000 {&lt;br /&gt;
			compatible = &amp;quot;arasan,sdhci-8.9a&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;clk_xin&amp;quot;, &amp;quot;clk_ahb&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x16 0x1 0x21&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2f 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0101000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		slcr@f8000000 {&lt;br /&gt;
			u-boot,dm-pre-reloc;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-slcr&amp;quot;, &amp;quot;syscon&amp;quot;, &amp;quot;simple-mfd&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8000000 0x1000&amp;gt;;&lt;br /&gt;
			ranges;&lt;br /&gt;
			linux,phandle = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			clkc@100 {&lt;br /&gt;
				u-boot,dm-pre-reloc;&lt;br /&gt;
				#clock-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				compatible = &amp;quot;xlnx,ps7-clkc&amp;quot;;&lt;br /&gt;
				fclk-enable = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
				clock-output-names = &amp;quot;armpll&amp;quot;, &amp;quot;ddrpll&amp;quot;, &amp;quot;iopll&amp;quot;, &amp;quot;cpu_6or4x&amp;quot;, &amp;quot;cpu_3or2x&amp;quot;, &amp;quot;cpu_2x&amp;quot;, &amp;quot;cpu_1x&amp;quot;, &amp;quot;ddr2x&amp;quot;, &amp;quot;ddr3x&amp;quot;, &amp;quot;dci&amp;quot;, &amp;quot;lqspi&amp;quot;, &amp;quot;smc&amp;quot;, &amp;quot;pcap&amp;quot;, &amp;quot;gem0&amp;quot;, &amp;quot;gem1&amp;quot;, &amp;quot;fclk0&amp;quot;, &amp;quot;fclk1&amp;quot;, &amp;quot;fclk2&amp;quot;, &amp;quot;fclk3&amp;quot;, &amp;quot;can0&amp;quot;, &amp;quot;can1&amp;quot;, &amp;quot;sdio0&amp;quot;, &amp;quot;sdio1&amp;quot;, &amp;quot;uart0&amp;quot;, &amp;quot;uart1&amp;quot;, &amp;quot;spi0&amp;quot;, &amp;quot;spi1&amp;quot;, &amp;quot;dma&amp;quot;, &amp;quot;usb0_aper&amp;quot;, &amp;quot;usb1_aper&amp;quot;, &amp;quot;gem0_aper&amp;quot;, &amp;quot;gem1_aper&amp;quot;, &amp;quot;sdio0_aper&amp;quot;, &amp;quot;sdio1_aper&amp;quot;, &amp;quot;spi0_aper&amp;quot;, &amp;quot;spi1_aper&amp;quot;, &amp;quot;can0_aper&amp;quot;, &amp;quot;can1_aper&amp;quot;, &amp;quot;i2c0_aper&amp;quot;, &amp;quot;i2c1_aper&amp;quot;, &amp;quot;uart0_aper&amp;quot;, &amp;quot;uart1_aper&amp;quot;, &amp;quot;gpio_aper&amp;quot;, &amp;quot;lqspi_aper&amp;quot;, &amp;quot;smc_aper&amp;quot;, &amp;quot;swdt&amp;quot;, &amp;quot;dbg_trc&amp;quot;, &amp;quot;dbg_apb&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x100 0x100&amp;gt;;&lt;br /&gt;
				ps-clk-frequency = &amp;lt;0x1fca055&amp;gt;;&lt;br /&gt;
				linux,phandle = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				phandle = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			rstc@200 {&lt;br /&gt;
				compatible = &amp;quot;xlnx,zynq-reset&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x200 0x48&amp;gt;;&lt;br /&gt;
				#reset-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			pinctrl@700 {&lt;br /&gt;
				compatible = &amp;quot;xlnx,pinctrl-zynq&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x700 0x200&amp;gt;;&lt;br /&gt;
				syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		dmac@f8003000 {&lt;br /&gt;
			compatible = &amp;quot;arm,pl330&amp;quot;, &amp;quot;arm,primecell&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8003000 0x1000&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupt-names = &amp;quot;abort&amp;quot;, &amp;quot;dma0&amp;quot;, &amp;quot;dma1&amp;quot;, &amp;quot;dma2&amp;quot;, &amp;quot;dma3&amp;quot;, &amp;quot;dma4&amp;quot;, &amp;quot;dma5&amp;quot;, &amp;quot;dma6&amp;quot;, &amp;quot;dma7&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0xd 0x4 0x0 0xe 0x4 0x0 0xf 0x4 0x0 0x10 0x4 0x0 0x11 0x4 0x0 0x28 0x4 0x0 0x29 0x4 0x0 0x2a 0x4 0x0 0x2b 0x4&amp;gt;;&lt;br /&gt;
			#dma-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#dma-channels = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
			#dma-requests = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1b&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;apb_pclk&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		devcfg@f8007000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-devcfg-1.0&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x8 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8007000 0x100&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xc 0x1 0xf 0x1 0x10 0x1 0x11 0x1 0x12&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;fclk0&amp;quot;, &amp;quot;fclk1&amp;quot;, &amp;quot;fclk2&amp;quot;, &amp;quot;fclk3&amp;quot;;&lt;br /&gt;
			syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			linux,phandle = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		efuse@f800d000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-efuse&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf800d000 0x20&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8f00200 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-global-timer&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f00200 0x20&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x1 0xb 0x301&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8001000 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0xa 0x4 0x0 0xb 0x4 0x0 0xc 0x4&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,ttc&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x6&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8001000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8002000 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x25 0x4 0x0 0x26 0x4 0x0 0x27 0x4&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,ttc&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x6&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8002000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8f00600 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x1 0xd 0x301&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-twd-timer&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f00600 0x20&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		usb@e0002000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-usb-2.20a&amp;quot;, &amp;quot;chipidea,usb2&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1c&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x15 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0002000 0x1000&amp;gt;;&lt;br /&gt;
			phy_type = &amp;quot;ulpi&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		usb@e0003000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-usb-2.20a&amp;quot;, &amp;quot;chipidea,usb2&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1d&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2c 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0003000 0x1000&amp;gt;;&lt;br /&gt;
			phy_type = &amp;quot;ulpi&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		watchdog@f8005000 {&lt;br /&gt;
			clocks = &amp;lt;0x1 0x2d&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,wdt-r1p2&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x9 0x1&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8005000 0x1000&amp;gt;;&lt;br /&gt;
			timeout-sec = &amp;lt;0xa&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	chosen {&lt;br /&gt;
		bootargs = &amp;quot;console=ttyPS0,115200 earlyprintk&amp;quot;;&lt;br /&gt;
		stdout-path = &amp;quot;serial0:115200n8&amp;quot;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	aliases {&lt;br /&gt;
		ethernet0 = &amp;quot;/amba/ethernet@e000c000&amp;quot;;&lt;br /&gt;
		serial0 = &amp;quot;/amba/serial@e0000000&amp;quot;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	memory {&lt;br /&gt;
		device_type = &amp;quot;memory&amp;quot;;&lt;br /&gt;
		reg = &amp;lt;0x0 0x10000000&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
{{Конец скрытого блока}}&lt;br /&gt;
&lt;br /&gt;
=== Single On-board eth ===&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth0(с mdio) и выключен eth1.&lt;br /&gt;
&lt;br /&gt;
'''Работает гигабит через type-c! Работает hot plug. Успех.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@0 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dual eth ===&lt;br /&gt;
&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Dual-phys-on-MDIO-EMIO/td-p/737716 интересная статья о дуал eth]&lt;br /&gt;
&lt;br /&gt;
Попытка поднять два физика. '''Пока не работает'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    local-mac-address = [00 0a 35 00 00 00];&lt;br /&gt;
    enet-reset = &amp;lt;&amp;amp;gpio0 47 0&amp;gt;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@0 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x8&amp;gt;; &lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0xa&amp;gt;; &lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;; &lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
        phy1: phy@12 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;12&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x8&amp;gt;; &lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0xa&amp;gt;; &lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;; &lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gem1{&lt;br /&gt;
    local-mac-address = [00 0a 35 00 00 01];&lt;br /&gt;
    enet-reset = &amp;lt;&amp;amp;gpio0 47 0&amp;gt;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy1&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Oryx ===&lt;br /&gt;
&lt;br /&gt;
Итоговый system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
Меняем номера uart, чтобы системным был ttyPS1, а пользовательским ttyPS0&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
/ {&lt;br /&gt;
    aliases {&lt;br /&gt;
        serial0 = &amp;amp;uart0;&lt;br /&gt;
        serial1 = &amp;amp;uart1;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@1 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
            rxc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            rxdv-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            txc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            txen-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;1&amp;gt;;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/ {&lt;br /&gt;
    chosen {&lt;br /&gt;
            bootargs = &amp;quot;console=ttyPS1,115200 earlyprintk uio_pdrv_genirq.of_id=generic-uio&amp;quot;;&lt;br /&gt;
            stdout-path = &amp;quot;serial1:115200n8&amp;quot;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    hififo: hififo@40000000 {&lt;br /&gt;
            compatible = &amp;quot;generic-uio&amp;quot;;&lt;br /&gt;
            interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
            interrupts = &amp;lt;0 29 1&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;0x40000000 0x1000 0x18000000 0x8000000&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;uart0{&lt;br /&gt;
    port-number = &amp;lt;0&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;uart1{&lt;br /&gt;
    port-number = &amp;lt;1&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth0(с mdio) и выключен eth1.&lt;br /&gt;
Pullup пока что все включены&lt;br /&gt;
&lt;br /&gt;
[https://github.com/Xilinx/u-boot-xlnx/blob/master/doc/device-tree-bindings/net/micrel-ksz90x1.txt статья в помощь]&lt;br /&gt;
&lt;br /&gt;
'''Работает'''&lt;br /&gt;
&lt;br /&gt;
На новых платах(с отпаянными линиями линиями eth):&lt;br /&gt;
* на полноценных проводах с ходу&lt;br /&gt;
* на обкусанных проводах только если выставить 10 в ethtool&lt;br /&gt;
&lt;br /&gt;
На старых платах:&lt;br /&gt;
&lt;br /&gt;
* на полноценных проводах только если выставить 100 в ethtool&lt;br /&gt;
* на обкусанных проводах только если выставить 10 в ethtool&lt;br /&gt;
&lt;br /&gt;
Везде работает так:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ethtool -s eth0 speed 10 duplex full autoneg on&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Спидометр показывает 2,5МБ/с, т.е. 20Мбит/с!&lt;br /&gt;
&lt;br /&gt;
Можно в custom_itit.sh прописать:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ifdown eth0&lt;br /&gt;
ethtool -s eth0 speed 10 duplex full autoneg on&lt;br /&gt;
ifup eth0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@1 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
            rxc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            rxdv-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            txc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            txen-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;1&amp;gt;;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В принципе, работает сеть на новой плате с нормальным кабелем без модификации devicetree. Остальные комбинации плат-кабелей надо проверять&lt;br /&gt;
&lt;br /&gt;
== i2c ==&lt;br /&gt;
&lt;br /&gt;
В rootfs включаем&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages -&amp;gt;&lt;br /&gt;
     base -&amp;gt;&lt;br /&gt;
          i2c-tools -&amp;gt;&lt;br /&gt;
               [*] i2c-tools&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для поиска устройств можно написать&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i2cdetect -y -r 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842160/Cadence+I2C+Driver Статья] по i2c и RTC&lt;br /&gt;
&lt;br /&gt;
== QSPI Flash ==&lt;br /&gt;
&lt;br /&gt;
для работы по флешь памяти как в ките (S25FL128S) - оставляем в дев.три родные compatible = &amp;quot;n25q512a&amp;quot;,&amp;quot;micron,m25p80&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
== SWDT System Watchdog Timer==&lt;br /&gt;
&lt;br /&gt;
* Модифицируем device-tree&lt;br /&gt;
&lt;br /&gt;
Вставляем в девайс три:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;watchdog0 {&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    reset-on-timeout;&lt;br /&gt;
    timeout-sec = &amp;lt;60&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RTC ==&lt;br /&gt;
&lt;br /&gt;
* Включаем в ядро подходящий драйвер&lt;br /&gt;
&lt;br /&gt;
* Модифицируем device-tree&lt;br /&gt;
&lt;br /&gt;
Вставляем в девайс три:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    i2c0: i2c@e0004000 {&lt;br /&gt;
        clock-frequency = &amp;lt;0xC350&amp;gt;;&lt;br /&gt;
        rtc@51 {&lt;br /&gt;
                compatible = &amp;quot;nxp,pcf85363&amp;quot;;&lt;br /&gt;
                reg = &amp;lt;0x51&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
    i2c1: i2c@e0005000 {&lt;br /&gt;
        clock-frequency = &amp;lt;0xC350&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Будет выглядеть так:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i2c@e0004000 {&lt;br /&gt;
    compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    clocks = &amp;lt;0x1 0x26&amp;gt;;&lt;br /&gt;
    interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
    interrupts = &amp;lt;0x0 0x19 0x4&amp;gt;;&lt;br /&gt;
    reg = &amp;lt;0xe0004000 0x1000&amp;gt;;&lt;br /&gt;
    #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
    #size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
    clock-frequency = &amp;lt;0xc350&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    rtc@51 {&lt;br /&gt;
        compatible = &amp;quot;nxp,pcf85363&amp;quot;;&lt;br /&gt;
        reg = &amp;lt;0x51&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
i2c@e0005000 {&lt;br /&gt;
    compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    clocks = &amp;lt;0x1 0x27&amp;gt;;&lt;br /&gt;
    interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
    interrupts = &amp;lt;0x0 0x30 0x4&amp;gt;;&lt;br /&gt;
    reg = &amp;lt;0xe0005000 0x1000&amp;gt;;&lt;br /&gt;
    #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
    #size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
    clock-frequency = &amp;lt;0xc350&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если готового драйвера нет:&lt;br /&gt;
&lt;br /&gt;
UG1144 pg.54&lt;br /&gt;
&lt;br /&gt;
Создаем новый модуль&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-create -t modules --name &amp;lt;name_module&amp;gt; --enable&lt;br /&gt;
petalinux-create -t modules --name rtc-pcf85363 --enable&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим исходный код в project-spec/meta-user/recipes-modules/rtc-pcf85363/files&lt;br /&gt;
&lt;br /&gt;
Исправленный драйвер лежит в git Clonicus\linux\&lt;br /&gt;
&lt;br /&gt;
Для удаления модуля:&lt;br /&gt;
&lt;br /&gt;
* удаляем папку из project-spec/meta-user/recipes-modules&lt;br /&gt;
&lt;br /&gt;
* В файле project-spec/meta-user/recipes-core/images/petalinux-image.bbappend удаляем соответствующую строку&lt;br /&gt;
&lt;br /&gt;
* переоткрыть petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
Пробуем собрать модуль&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build -c &amp;lt;name_module&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если ОК, собираем (собирать модуль необязательно, petalinux-build его соберет)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И перепаковываем BOOT.bin&lt;br /&gt;
&lt;br /&gt;
Пересобираем deveice-tree с указанием нового драйвера (petalinux-build соберет сам deveice-tree)&lt;br /&gt;
&lt;br /&gt;
просмотр модулей&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsmod&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
загрузить драйвер можно&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
insmod /lib/modules/4.9.0-xilinx-v2017.4/extra/rtc-pcf85363.ko&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
или&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe rtc-pcf85363&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Если все ок и в девайс три прописан правильный драйвер для устройства, то модуль будет загружен сам'''&lt;br /&gt;
&lt;br /&gt;
Прошиваем .bit (для клоникуса нужен бит для работы PL-i2c). После этого можно пользоваться RTC&lt;br /&gt;
&lt;br /&gt;
Чтение времени из rtc если этот rtc не дефолтный (у нас rtc2)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -r -f /dev/rtc2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Синхронизация rtc по системному времени&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -w -f /dev/rtc2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим custom_init.sh для изменения default-rtc на наше устройство&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm /dev/rtc&lt;br /&gt;
ln -s /dev/rtc2 /dev/rtc&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Установка системного времени&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
date --set &amp;quot;2013-7-31 09:30&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запись системного времени в RTC&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -w&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запись времени RTC в системное время&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -s&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Получить время с интеренета&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rdate -s &amp;lt;IP address of time server&amp;gt;&lt;br /&gt;
rdate -s 132.163.96.5 (example)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При перезагрузке &amp;quot;reboot&amp;quot; система автоматически запишет системное время в RTC&lt;br /&gt;
&lt;br /&gt;
== FPGA CONFIG from Uboot ==&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы прошить PL из uboot используем команду:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
fpga loadb 0 &amp;lt;ddr_file_addr&amp;gt; &amp;lt;file_size&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
либо скриптами:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
load_bit=fatload mmc 0 0x100000 clonicus.bit // читаем файл в ddr&lt;br /&gt;
pl_load=fpga loadb 0 0x100000 0x1400000 // прошиваем PL&lt;br /&gt;
fpga_config=run load_bit &amp;amp;&amp;amp; run pl_loadipaddr // вызов самих скриптов&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
0x10_0000 - начальный адрес ddr&lt;br /&gt;
&lt;br /&gt;
0x1_400_000 - размер в байтах для 20МБайт - указываем размер битника с запасом. Теоретически может так не работать, но работает&lt;br /&gt;
&lt;br /&gt;
== ETH over TTY==&lt;br /&gt;
&lt;br /&gt;
В ядре включаем: slip, Universal TUN/TAP&lt;br /&gt;
&lt;br /&gt;
В rootfs включаем net-tools&lt;br /&gt;
&lt;br /&gt;
Включаем iptables для перемршрутизации между подсетями и для него:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[*] Networking support  ---&amp;gt;                                          [CONFIG_NET]&lt;br /&gt;
      Networking Options  ---&amp;gt;&lt;br /&gt;
        [*] Network packet filtering framework (Netfilter) ---&amp;gt;       [CONFIG_NETFILTER]&lt;br /&gt;
          [*] Advanced netfilter configuration                        [CONFIG_NETFILTER_ADVANCED]&lt;br /&gt;
          Core Netfilter Configuration ---&amp;gt;&lt;br /&gt;
            &amp;lt;*/M&amp;gt; Netfilter connection tracking support               [CONFIG_NF_CONNTRACK]&lt;br /&gt;
            &amp;lt;*/M&amp;gt; Netfilter Xtables support (required for ip_tables)  [CONFIG_NETFILTER_XTABLES]&lt;br /&gt;
            &amp;lt;*/M&amp;gt; LOG target support                                  [CONFIG_NETFILTER_XT_TARGET_LOG]&lt;br /&gt;
          IP: Netfilter Configuration ---&amp;gt;&lt;br /&gt;
            &amp;lt;*/M&amp;gt; IP tables support (required for filtering/masq/NAT) [CONFIG_IP_NF_IPTABLES]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PC1:&lt;br /&gt;
&lt;br /&gt;
slattach -L -s 115200 -p slip /dev/ttyPS1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
ifconfig sl0 192.168.1.1/24 up&lt;br /&gt;
&lt;br /&gt;
route add default gw 192.168.1.1 sl0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PC2:&lt;br /&gt;
&lt;br /&gt;
slattach -L -s 115200 -p slip /dev/ttyPS1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
ifconfig sl0 192.168.1.2/24 up&lt;br /&gt;
&lt;br /&gt;
route add default gw 192.168.1.1 sl0&lt;br /&gt;
&lt;br /&gt;
== UART_PL ==&lt;br /&gt;
&lt;br /&gt;
Включаем в настройках ядра поддержку uart_lite, выставляем правильное максимальное число уартов&lt;br /&gt;
&lt;br /&gt;
Модифицируем system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
Обращаем внимание на нумерацию serial, axi_uartlite, она должна не повторяться. То же самое с interrupts &lt;br /&gt;
Указываем верный физический адрес на шине и диапазон адресов в &amp;lt;reg&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
/ {&lt;br /&gt;
    aliases {&lt;br /&gt;
            serial2 = &amp;amp;axi_uartlite_0;&lt;br /&gt;
            serial3 = &amp;amp;axi_uartlite_1;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
/ {&lt;br /&gt;
    amba_pl {&lt;br /&gt;
        #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
        compatible = &amp;quot;simple-bus&amp;quot;;&lt;br /&gt;
        ranges;&lt;br /&gt;
        &lt;br /&gt;
        axi_uartlite_0: serial@80000008 {&lt;br /&gt;
                clock-names = &amp;quot;ref_clk&amp;quot;;&lt;br /&gt;
                clocks = &amp;lt;&amp;amp;clkc 0&amp;gt;;&lt;br /&gt;
                compatible = &amp;quot;xlnx,xps-uartlite-1.00.a&amp;quot;;&lt;br /&gt;
                current-speed = &amp;lt;115200&amp;gt;;&lt;br /&gt;
                device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
                interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                interrupts = &amp;lt;0 30 1&amp;gt;;&lt;br /&gt;
                port-number = &amp;lt;3&amp;gt;;&lt;br /&gt;
                reg = &amp;lt;0x80000008 0x10&amp;gt;;&lt;br /&gt;
                xlnx,baudrate = &amp;lt;0x1c200&amp;gt;;&lt;br /&gt;
                xlnx,data-bits = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
                xlnx,odd-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
                xlnx,s-axi-aclk-freq-hz-d = &amp;quot;100.0&amp;quot;;&lt;br /&gt;
                xlnx,use-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
        axi_uartlite_1: serial@8000001C {&lt;br /&gt;
                clock-names = &amp;quot;ref_clk&amp;quot;;&lt;br /&gt;
                clocks = &amp;lt;&amp;amp;clkc 0&amp;gt;;&lt;br /&gt;
                compatible = &amp;quot;xlnx,xps-uartlite-1.00.a&amp;quot;;&lt;br /&gt;
                current-speed = &amp;lt;115200&amp;gt;;&lt;br /&gt;
                device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
                interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                interrupts = &amp;lt;0 31 1&amp;gt;;&lt;br /&gt;
                port-number = &amp;lt;4&amp;gt;;&lt;br /&gt;
                reg = &amp;lt;0x8000001C 0x10&amp;gt;;&lt;br /&gt;
                xlnx,baudrate = &amp;lt;0x1c200&amp;gt;;&lt;br /&gt;
                xlnx,data-bits = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
                xlnx,odd-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
                xlnx,s-axi-aclk-freq-hz-d = &amp;quot;100.0&amp;quot;;&lt;br /&gt;
                xlnx,use-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если ПЛИС не прошита - будет кернел паник&lt;br /&gt;
&lt;br /&gt;
== IRQ ==&lt;br /&gt;
&lt;br /&gt;
Для поддержки irq добавляем в device-tree&lt;br /&gt;
&lt;br /&gt;
'''Важно - мы перетираем bootargs!'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/ {&lt;br /&gt;
    chosen {&lt;br /&gt;
            bootargs = &amp;quot;console=ttyPS0,115200 earlyprintk uio_pdrv_genirq.of_id=generic-uio&amp;quot;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    hififo: hififo@40000000 {&lt;br /&gt;
                    compatible = &amp;quot;generic-uio&amp;quot;;&lt;br /&gt;
                    interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                    interrupts = &amp;lt;0 29 1&amp;gt;;&lt;br /&gt;
                    reg = &amp;lt;0x40000000 0x1000 0x18000000 0x8000000&amp;gt;;&lt;br /&gt;
            };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
&lt;br /&gt;
Запустил на Z706&lt;br /&gt;
&lt;br /&gt;
[http://www.wiki.xilinx.com/Zynq+Linux+USB+Device+Driver во-первых]&lt;br /&gt;
[http://zedboard.org/content/using-petalinux-configure-zedboard%EF%BC%8C-usb-otg-can-not-work во-вторых]&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-2016-3-zynq-7010-USB-not-working/td-p/737696 в-третьих]&lt;br /&gt;
&lt;br /&gt;
В дефолтных настройках ядра petalinux_2018.1 все было включено&lt;br /&gt;
&lt;br /&gt;
включаем ресет на MIO7 pullup disabled&lt;br /&gt;
&lt;br /&gt;
все ноги интерфейса ulpi pullup disabled&lt;br /&gt;
&lt;br /&gt;
Содержимое system-user.dtsi&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
	/{&lt;br /&gt;
&lt;br /&gt;
    usb_phy0:phy0 {&lt;br /&gt;
&lt;br /&gt;
        compatible=&amp;quot;ulpi-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        #phy-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       reg = &amp;lt;0xe0002000 0x1000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       view-port=&amp;lt;0x170&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       drv-vbus;&lt;br /&gt;
&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&amp;amp;usb0 {&lt;br /&gt;
&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        dr_mode = &amp;quot;host&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        usb-phy = &amp;lt;&amp;amp;usb_phy0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
} ;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== USB-ETHERNET ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers -&amp;gt;&lt;br /&gt;
     USB support -&amp;gt;&lt;br /&gt;
          [*] USB Modem (CDC ACM)&lt;br /&gt;
          USB Gadget Support -&amp;gt;&lt;br /&gt;
               [*] Ethernet Control Model (all)&lt;br /&gt;
               [*] RNDIS&lt;br /&gt;
               [*] Ethernet Emulation Model&lt;br /&gt;
               [*] CDC Composite Device (Ethernet and ACM)&lt;br /&gt;
               [*] USB Gadget Drivers (Ethernet gadget...)&lt;br /&gt;
     Network device support -&amp;gt;&lt;br /&gt;
          USB Network Adapters -&amp;gt;&lt;br /&gt;
               [*] Realtek RTL8152/RTL8153&lt;br /&gt;
               [*] Multi-purpose USB Networking Framework&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WiFi Dongle ==&lt;br /&gt;
&lt;br /&gt;
[https://forum.trenz-electronic.de/index.php?topic=747.0 раз]&lt;br /&gt;
[https://github.com/jinchenglee/zybo_linux_setup_doc два]&lt;br /&gt;
[http://billauer.co.il/blog/2014/06/linux-realtek-hostapd/ три]&lt;br /&gt;
&lt;br /&gt;
Творим:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Networking support -&amp;gt;&lt;br /&gt;
     Wireless -&amp;gt;&lt;br /&gt;
          [*] cfg80211&lt;br /&gt;
          [*] Generic IEEE 802.11 ... (mac80211)&lt;br /&gt;
Device Drivers -&amp;gt;&lt;br /&gt;
     Network device support -&amp;gt;&lt;br /&gt;
          Wireless LAN -&amp;gt;&lt;br /&gt;
               Realtek rtlwifi family of devices -&amp;gt;&lt;br /&gt;
                    [*] Realtek ..../RTL8188CE Wireless Network Adapter ???&lt;br /&gt;
                    [*] Realtek RTL8188EE Wireless Network Adapter ???&lt;br /&gt;
                    [*] Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter&lt;br /&gt;
     Staging drivers -&amp;gt;&lt;br /&gt;
          [*] Realtek RTL8188EU wireless LAN MIC driver&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
rootfs&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem packages -&amp;gt;&lt;br /&gt;
     network -&amp;gt;&lt;br /&gt;
          wpa-supplicant -&amp;gt;&lt;br /&gt;
               [*] wpa-supplicant&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/lwfinger/rtl8188eu/blob/master/rtl8188eufw.bin качаем файл]&lt;br /&gt;
&lt;br /&gt;
Модификаци инит-скрипта&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp /run/media/mmcblk0p1/wpa_supplicant.conf /etc/&lt;br /&gt;
&lt;br /&gt;
mkdir /lib/firmware/&lt;br /&gt;
mkdir /lib/firmware/rtlwifi/&lt;br /&gt;
cp /run/media/mmcblk0p1/rtl8188eufw.bin /lib/firmware/rtlwifi/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WiFi ESP ==&lt;br /&gt;
&lt;br /&gt;
[http://www.wiki.xilinx.com/Zynq+SDIO+Wifi Xilinx SDIP WiFi]&lt;br /&gt;
&lt;br /&gt;
[http://zedboard.org/content/sdio-wifi-driver-ar6103-problem Zedboard раз]&lt;br /&gt;
&lt;br /&gt;
[https://stackoverflow.com/questions/32129689/how-to-bind-sdio1-with-wi-fi-linux два]&lt;br /&gt;
&lt;br /&gt;
[http://picozed.org/content/steps-get-wlink8-working-using-petalinux-picozed picozed три]&lt;br /&gt;
&lt;br /&gt;
[http://zedboard.org/content/adding-wi-fi-and-bluetooth-connectivity-zedboard-using-murata-1dx-pmod zedboard четыре]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Оживление 2-го ядра ==&lt;br /&gt;
&lt;br /&gt;
* Находим /home/ivan/clonicus_1.2.3/build/tmp/work-shared/plnx_arm/kernel-source/arch/arm/mach-zynq/efuse.c&lt;br /&gt;
* В функции zynq_efuse_cpu_state делаем сразу ретурн тру&lt;br /&gt;
* Че-нибудь меняем в настройках ядра для пересборки&lt;br /&gt;
* Выполняем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build -c kernel -x compile -f&lt;br /&gt;
petalinux-build -c kernel -x deploy -f&lt;br /&gt;
petalinux-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Забираем image.ub&lt;br /&gt;
&lt;br /&gt;
'''ИЛИ'''&lt;br /&gt;
&lt;br /&gt;
Правим device-tree, заменяем адрес efuse на 0xf800cff0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    hififo: hififo@40000000 {&lt;br /&gt;
            compatible = &amp;quot;generic-uio&amp;quot;;&lt;br /&gt;
            interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
            interrupts = &amp;lt;0 29 1&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;0x40000000 0x1000 0x18000000 0x8000000&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
    &lt;br /&gt;
    efuse@f800cff0 {&lt;br /&gt;
            compatible = &amp;quot;xlnx,zynq-efuse&amp;quot;;&lt;br /&gt;
            reg = &amp;lt;0xf800cff0 0x20&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Блок hififo из прошлой части по лечению IRQ&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== webserver == &lt;br /&gt;
&lt;br /&gt;
* [https://github.com/emlid/ReachView Репозиторий emlid ReachView] (bnd на py/Flask, fnd на html/Ajax/js/Bootstrap)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Backend:'''&lt;br /&gt;
&lt;br /&gt;
* [http://svenand.blogdrives.com/archive/195.html#.XPTYt4gzaUk Источник по busybox-httpd]&lt;br /&gt;
&lt;br /&gt;
* [https://www.afternerd.com/blog/python-http-server/ Гайд по python server]&lt;br /&gt;
&lt;br /&gt;
* [https://ru.wikibooks.org/wiki/Flask Викиучебник по Flask]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/193242/ ХаброГайд по python/Flask]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Frontend:'''&lt;br /&gt;
&lt;br /&gt;
* [https://unminify.com/ unminify CSS]&lt;br /&gt;
&lt;br /&gt;
* [https://getbootstrap.com/docs/4.3/getting-started/introduction/ Bootstrap EN getting started]&lt;br /&gt;
&lt;br /&gt;
* [https://bootstrap-4.ru/ Bootstrap RU]&lt;br /&gt;
&lt;br /&gt;
* [http://htmlbook.ru/samhtml/tekst/spetssimvoly Справочник по операторам и тегам HTML/CSS]&lt;br /&gt;
&lt;br /&gt;
* [https://www.w3schools.com/howto/default.asp Сборник шаблонов CSS W3schools]&lt;br /&gt;
&lt;br /&gt;
* [https://www.w3schools.com/w3css/w3css_tabulators.asp Анимированный сайдбар/табы]&lt;br /&gt;
&lt;br /&gt;
* [https://css-tricks.com/ CSS Tricks]&lt;br /&gt;
&lt;br /&gt;
* [https://www.cssmatic.com/ Онлайн тени/границы/градиент блоков]&lt;br /&gt;
&lt;br /&gt;
* [https://internetingishard.com/html-and-css/semantic-html/ Semantic HTML grid layout]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/202408/ Хаброгайд(ч1) по верстке]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/211032/ ХаброГайд(ч2) по Bootstrap]&lt;br /&gt;
&lt;br /&gt;
* [https://fontawesome.com/icons?d=gallery Fontawesome ICONS open lib]&lt;br /&gt;
&lt;br /&gt;
:* [https://htmlacademy.ru/courses/43/run/1 Нормальный онлайн HTML/CSS/JS editor]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== busybox httpd ===&lt;br /&gt;
В petalinux многие пакеты скукожены до их минимальных вариантов и встроены в общий пакет busybox. &lt;br /&gt;
В busybox есть также и вебсервер busybox-httpd.&lt;br /&gt;
Для использования нужно на этапе настройки файловой системы его включить:&lt;br /&gt;
&lt;br /&gt;
 $ petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
Конфиг: &lt;br /&gt;
 base -&amp;gt;&lt;br /&gt;
     busybox -&amp;gt;&lt;br /&gt;
          [*] busybox&lt;br /&gt;
          [*] busybox-httpd&lt;br /&gt;
          [ ] busybox-hwclock&lt;br /&gt;
          [*] busybox-inetd&lt;br /&gt;
          [*] busybox-mdev&lt;br /&gt;
          [ ] busybox-syslog &lt;br /&gt;
          [*] busybox-udhcpc &lt;br /&gt;
          [ ] busybox-udhcpd &lt;br /&gt;
&lt;br /&gt;
Сам httpd будет в '''/usr/sbin'''.&lt;br /&gt;
Рабочая папка по умолчанию в '''/srv/www/'''. Если в нее кидать файлы, то именно из нее будет отображаться контент в браузере. Папку можно изменить, перезапустив httpd с ключом -h &amp;lt;workdir&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Порт по умолчанию 80. Работает, как демон в /etc/init.d/, вкл-выкл оттуда же.&lt;br /&gt;
&lt;br /&gt;
Если положить в /srv/www/ файл index.html с неким кодом, то в браузере отобразится вебморда. Картинки работают по ссылкам.&lt;br /&gt;
&lt;br /&gt;
'''index.html'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Transitional//EN&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;clonicus'112 webserver&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h3&amp;gt;Hello, World!&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Web server is now up!&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;https://i.redd.it/oagz5eobkkt11.jpg&amp;quot; width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;http://www.srns.ru&amp;quot;&amp;gt;For more information see SRNS.ru&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== python в petalinux ===&lt;br /&gt;
В petalinux 2017.4 есть 2 питона - 2.7 и 3.5.&lt;br /&gt;
&lt;br /&gt;
 $ petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
'''python2.7'''&lt;br /&gt;
  Filesystem Packages-&amp;gt;&lt;br /&gt;
     devel-&amp;gt;&lt;br /&gt;
         python-&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''python3.5'''&lt;br /&gt;
  Filesystem Packages-&amp;gt;&lt;br /&gt;
     misc-&amp;gt;&lt;br /&gt;
         python3-*&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модуль runpy.py для запуска команд вида 'python -m &amp;lt;module&amp;gt;' находится в python -&amp;gt; python-misc. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SimpleHTTPServer.py ===&lt;br /&gt;
Для первого теста поднимем встроенный в python2.7 минисервер SimpleHTTPServer.py в /usr/lib/python2.7. &lt;br /&gt;
&lt;br /&gt;
Для его запуска напишем скрипт&lt;br /&gt;
&lt;br /&gt;
'''webserver.py''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import SimpleHTTPServer &lt;br /&gt;
import SocketServer &lt;br /&gt;
 &lt;br /&gt;
PORT = 80 &lt;br /&gt;
 &lt;br /&gt;
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler &lt;br /&gt;
 &lt;br /&gt;
httpd = SocketServer.TCPServer((&amp;quot;&amp;quot;, PORT), Handler) &lt;br /&gt;
 &lt;br /&gt;
print &amp;quot;serving at port&amp;quot;, PORT &lt;br /&gt;
httpd.serve_forever()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 $ python webserver.py &lt;br /&gt;
&lt;br /&gt;
При наличии в папке со скриптом файла index.html сервер поднимется автоматически.&lt;br /&gt;
&lt;br /&gt;
=== Добавление слоев в сборку ===&lt;br /&gt;
&lt;br /&gt;
[https://www.srns.ru/wiki/Blog:DneprovD/18.07.2019_Yocto_layers Переехало в статью]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:HOWTO]]&lt;br /&gt;
[[Категория:Oryx]]&lt;br /&gt;
[[Категория:Zynq]]&lt;br /&gt;
[[Категория:EmbeddedLinux]]&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
&lt;br /&gt;
{{wl-publish: 2018-05-16 10:06:30 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/16.05.2018_PetaLinux</id>
		<title>Blog:Lipa/16.05.2018 PetaLinux</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/16.05.2018_PetaLinux"/>
				<updated>2021-03-18T07:40:30Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* Оживление 2-го ядра */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Petalinux.png|400px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сборка PetaLinux для кастомной железки&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма2}}&lt;br /&gt;
&lt;br /&gt;
== Требования ==&lt;br /&gt;
&lt;br /&gt;
Vivado 2018.1 (для single-gigabit ethernet можно более ранние версии)&lt;br /&gt;
&lt;br /&gt;
Начиная с petalinux_2018.1 отсутствует devcfg. Необходимо использовать FPGA manager. Технология нами пока не освоена&lt;br /&gt;
&lt;br /&gt;
Необходима Ubuntu-16.04&lt;br /&gt;
&lt;br /&gt;
Требуется поставить ряд пакетов, полный список приведен в документе [https://www.xilinx.com/support/documentation/sw_manuals/xilinx2019_1/ug1144-petalinux-tools-reference-guide.pdf#page=9 UG1144]&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PetaLinux в систему. Дистрибутив есть на [https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/2018-1.html Xilinx], либо у меня на компьютере. '''Ставить PetaLinux необходимо БЕЗ прав суперюзера!'''&lt;br /&gt;
&lt;br /&gt;
кидаем в /components/yocto/ sstate-rel-v2017.4.tar.gz&lt;br /&gt;
&lt;br /&gt;
Подготовка завершена&lt;br /&gt;
&lt;br /&gt;
== Правка Vivado ==&lt;br /&gt;
&lt;br /&gt;
Для поддержки MDIO в Vivado 17.1-17.4 нужен [https://www.xilinx.com/support/answers/69132.html патч]. Ставим!&lt;br /&gt;
&lt;br /&gt;
'''Не помогло.''' Ставим 2018.1&lt;br /&gt;
&lt;br /&gt;
== Сборка ==&lt;br /&gt;
&lt;br /&gt;
Пошаговое руководство по сборке содержится в документе UG1156&lt;br /&gt;
&lt;br /&gt;
В консоли пишем source/[путь к петалинух]/settings.sh&lt;br /&gt;
&lt;br /&gt;
Выполняем шаги из UG1156 по главе 5:&lt;br /&gt;
&lt;br /&gt;
* экспортируем из Vivado .hdf (в блок дизайн File-&amp;gt;Export-&amp;gt;Export Hardware)&lt;br /&gt;
&lt;br /&gt;
* создаем проект PetaLinux&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-create --type project --template zynq --name &amp;lt;PROJECT&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* переходим в папку с текущим проектом&lt;br /&gt;
&lt;br /&gt;
* подключаем файл .hdf&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config --get-hw-description=[путь к папке с файлом .hdf]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* перед сборкой системы необходимо выполнить '''все''' команды конфигурации в данной последовательности:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&lt;br /&gt;
$ petalinux-config -c kernel&lt;br /&gt;
&lt;br /&gt;
$ petalinux-config -c rootfs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config ===&lt;br /&gt;
&lt;br /&gt;
Если хотим спользовать внешний файл device-tree включаем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Subsystem AUTO Hardware Settings-&amp;gt;&lt;br /&gt;
     Advances bootable images storage settings-&amp;gt;&lt;br /&gt;
          dtb image settings-&amp;gt;&lt;br /&gt;
               image storage media&lt;br /&gt;
                    primary sd&lt;br /&gt;
               &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Необходимо править netboot offset если оперативной памяти менее ~256МБ&lt;br /&gt;
&lt;br /&gt;
Для клоникуса с 256МБ ставим 8'000'000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
u-boot Configuration-&amp;gt;&lt;br /&gt;
     netboot offset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выставляем точку начала распаковки образа системы&lt;br /&gt;
&lt;br /&gt;
Выключаем копирование образа по sftp (Image Packaging Configuration -&amp;gt; Copy final images)&lt;br /&gt;
&lt;br /&gt;
Отключаем интернет-sstate (Yocto Settings -&amp;gt; Enable Network sstate feeds)&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config -c kernel===&lt;br /&gt;
&lt;br /&gt;
* Подключаем в ядре поддержку физика и его дров.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config -c kernel&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''для oryx:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers-&amp;gt;&lt;br /&gt;
     [*]Network device support -&amp;gt;&lt;br /&gt;
          [*]Ethernet driver support -&amp;gt;&lt;br /&gt;
               [*] Micrel devices&lt;br /&gt;
          [*] PHY Device support and infastructure --&amp;gt;&lt;br /&gt;
               [*] Drivers for Micrel PHYs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''для clonicus:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers-&amp;gt;&lt;br /&gt;
     [*]Network device support -&amp;gt;&lt;br /&gt;
          [*] PHY Device support and infastructure --&amp;gt;&lt;br /&gt;
               [*] Texas Instruments DP83867 Gigabit PHY&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config -c rootfs ===&lt;br /&gt;
&lt;br /&gt;
Подключаем при необходимости ethtool, gdbserver(просто gdb не заработал), libstdc, libgcc, glib2.0, glibc(glibc &amp;amp; ltd)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages-&amp;gt;&lt;br /&gt;
     misc -&amp;gt;&lt;br /&gt;
          gcc-runtime -&amp;gt;&lt;br /&gt;
               [*] libstdc ++&lt;br /&gt;
          gdb --&amp;gt;&lt;br /&gt;
               [*] gdb&lt;br /&gt;
          glib-2.0&lt;br /&gt;
               [*] glib-2.0&lt;br /&gt;
          glibc&lt;br /&gt;
               [*] glibc&lt;br /&gt;
               [*] ldd&lt;br /&gt;
     devel -&amp;gt;&lt;br /&gt;
          python -&amp;gt;&lt;br /&gt;
               python -&amp;gt;&lt;br /&gt;
                    [*] python&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Опционально:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages-&amp;gt;&lt;br /&gt;
     base -&amp;gt;&lt;br /&gt;
          i2c-tools -&amp;gt;&lt;br /&gt;
               [*] i2c-tools&lt;br /&gt;
          usbutils -&amp;gt;&lt;br /&gt;
               [*] usbutils&lt;br /&gt;
     console -&amp;gt;&lt;br /&gt;
          network -&amp;gt;&lt;br /&gt;
               ethtool -&amp;gt;&lt;br /&gt;
                    [*] ethtool // необходимо для oryx! для перенастройки autonegotiation&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Можно еще подключать дебаг i2c&lt;br /&gt;
&lt;br /&gt;
'''Необходимо убедиться, что  образ может распаковаться в размер оперативы'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Если будут проблемы, то надо будет править netboot offset&lt;br /&gt;
&lt;br /&gt;
=== device tree ===&lt;br /&gt;
&lt;br /&gt;
Если необходимо внести изменения в device tree, то смотрим конец статьи&lt;br /&gt;
&lt;br /&gt;
[https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841676/U-Boot+Flattened+Device+Tree Интересная статья по правке devicetree из uboot]&lt;br /&gt;
&lt;br /&gt;
=== Сборка проекта ===&lt;br /&gt;
&lt;br /&gt;
* далее (сборка идет 30-60 минут)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build&lt;br /&gt;
&lt;br /&gt;
cd /images/linux/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* делаем boot.bin в папке /images/linux/&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --u-boot --force&lt;br /&gt;
&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --fpga name.bit --u-boot --force&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --fpga name.bit --u-boot --kernel --force&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* записываем в загрузочную область флешки файлы boot.bin и image.ub&lt;br /&gt;
&lt;br /&gt;
== Всякое ==&lt;br /&gt;
&lt;br /&gt;
Если мало памяти как у нас - возможна ошибка image is not a fdt [https://forums.xilinx.com/t5/Embedded-Processor-System-Design/Petalinux-problem-on-custom-board-quot-image-is-not-a-fdt-quot/td-p/754892 ссылка]&lt;br /&gt;
&lt;br /&gt;
Необходимо править netboot offset&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
u-boot Configuration-&amp;gt;&lt;br /&gt;
     netboot offset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Можно вручную загрузиться из u-boot'а.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ fatload mmc 0 0xA000000 image.ub&lt;br /&gt;
$ bootm 0xA000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
либо&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ fatload mmc 0 0xA000000 image.ub&lt;br /&gt;
$ fatload mmc 0 0x9000000 system.dtb&lt;br /&gt;
$ bootm 0xA000000 0xA000000 0x9000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Можно поварьировать адрес&lt;br /&gt;
&lt;br /&gt;
------------&lt;br /&gt;
&lt;br /&gt;
Проверка статуса прошитости FPGA&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat /sys/class/xdevcfg/xdevcfg/device/prog_done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Uboot==&lt;br /&gt;
&lt;br /&gt;
Для внесения правок в загрузку линукса используем список команд '''env'''&lt;br /&gt;
&lt;br /&gt;
Просмотр текущих команд '''printenv'''&lt;br /&gt;
&lt;br /&gt;
Сброс настроек в дефолт '''env default -a'''&lt;br /&gt;
&lt;br /&gt;
Создать переменную '''env set &amp;lt;имя&amp;gt; &amp;lt;значение&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Правка переменной '''env edit &amp;lt;имя переменной&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Для каждой платы делаем следующее:&lt;br /&gt;
&lt;br /&gt;
* Берем [[Файл:uboot.env.c]]&lt;br /&gt;
&lt;br /&gt;
* Удаляем в конце имени &amp;quot;.c&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Записываем на флешку рядом с образом линукса&lt;br /&gt;
&lt;br /&gt;
* Запускаем плату и прерываем autoboot&lt;br /&gt;
&lt;br /&gt;
* Пишем '''editenv ethaddr'''&lt;br /&gt;
&lt;br /&gt;
* Редактируем MAC-адрес&lt;br /&gt;
&lt;br /&gt;
* Пишем '''saveenv'''&lt;br /&gt;
&lt;br /&gt;
* Все! можем ребутать '''reset'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Сохранить в файл '''saveenv'''&lt;br /&gt;
&lt;br /&gt;
==Автозапуск приложений==&lt;br /&gt;
&lt;br /&gt;
Во-первых [https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-Runnning-a-script-file-at-startup/td-p/689051 тыц]&lt;br /&gt;
&lt;br /&gt;
Далее пишем&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-create -t apps --template install -n myapp-init --enable&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим файл /project-spec/meta-user/recipes-apps/myapp-init/myapp-init.bb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file is the myapp-init recipe.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
SUMMARY = &amp;quot;Simple myapp-init application&amp;quot;&lt;br /&gt;
SECTION = &amp;quot;PETALINUX/apps&amp;quot;&lt;br /&gt;
LICENSE = &amp;quot;MIT&amp;quot;&lt;br /&gt;
LIC_FILES_CHKSUM = &amp;quot;file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302&amp;quot;&lt;br /&gt;
&lt;br /&gt;
SRC_URI = &amp;quot;file://myapp-init&amp;quot;&lt;br /&gt;
&lt;br /&gt;
S = &amp;quot;${WORKDIR}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILESEXTRAPATHS_prepend := &amp;quot;${THISDIR}/files:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
inherit update-rc.d&lt;br /&gt;
&lt;br /&gt;
INITSCRIPT_NAME = &amp;quot;myapp-init&amp;quot;&lt;br /&gt;
INITSCRIPT_PARAMS = &amp;quot;start 99 S .&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do_install() {&lt;br /&gt;
    install -d ${D}${sysconfdir}/init.d&lt;br /&gt;
    install -m 0755 ${S}/myapp-init ${D}${sysconfdir}/init.d/myapp-init&lt;br /&gt;
}&lt;br /&gt;
FILES_${PN} += &amp;quot;${sysconfdir}/*&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим сам исполняемый скрипт project-spec/meta-user/recipes-apps/myapp-init/files/myapp-init&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Autorun script&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Try run custom_init&amp;quot;&lt;br /&gt;
sh /run/media/mmcblk0p1/custom_init.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Записываем на флешку скрипт custom_init.sh с нужными командами и делаем его исполняемым&lt;br /&gt;
&lt;br /&gt;
Записываем файл interfaces&lt;br /&gt;
&lt;br /&gt;
Скачать архив: [[Файл:Init_interfaces.rar]]&lt;br /&gt;
&lt;br /&gt;
==SSH==&lt;br /&gt;
&lt;br /&gt;
Как победить сохранение ssh-ключей:&lt;br /&gt;
&lt;br /&gt;
Добавляем в init_script следующие строки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir /run/media/mmcblk0p2/.ssh&lt;br /&gt;
ln -s /run/media/mmcblk0p2/.ssh/ /home/root/&lt;br /&gt;
mkdir /run/media/mmcblk0p2/dropbear/&lt;br /&gt;
chmod 400 /run/media/mmcblk0p2/dropbear/&lt;br /&gt;
rm -r /etc/dropbear/&lt;br /&gt;
ln -s /run/media/mmcblk0p2/dropbear/ /etc/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Создается ссылка на флешку, где хранятся авторизованные пользователи&lt;br /&gt;
* Создается папка для хранения секретного ключа платы&lt;br /&gt;
* При запуске платы свежесозданный ключ заменяется тем, что лежит на флешке&lt;br /&gt;
* При первом включении платы будет создан новый ключ&lt;br /&gt;
&lt;br /&gt;
Помимо добавления указанных команд в скрипт ничего больше делать не надо&lt;br /&gt;
&lt;br /&gt;
==Daemon==&lt;br /&gt;
&lt;br /&gt;
Для настройки демона:&lt;br /&gt;
&lt;br /&gt;
* Добавляем строки в файл custom_init.sh&lt;br /&gt;
* Кидаем на загрузочный раздел флешки папку из архива [[:File:daemon.rar]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp -r /run/media/mmcblk0p1/daemon/lsb /lib/&lt;br /&gt;
cp /run/media/mmcblk0p1/daemon/receiver.conf /etc/&lt;br /&gt;
cp /run/media/mmcblk0p1/daemon/receiver /etc/init.d/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serial port на новом линуксе ===&lt;br /&gt;
Выяснилось, что без доп. настройки, в последовательный порт (dev/ttyPS0) после каждой посылки добавляются символы CR и LF. Оказалось, что и RTKLib, и софт Листопада не хотят работать с таким окончанием пакетов.&lt;br /&gt;
&lt;br /&gt;
Выше не совсем так, скорее мысль в том, что каждый символ LF (0x0A) в наших данных меняется на символы CR LF, т.е. (0x0D0A). И тогда, в нашем битовом потоке меняется размер и содержимое и парсеры работают некорректно.&lt;br /&gt;
Старый линукс на Ориксах добавляет только LF. Для решения проблемы нужно через stty выключить в настройках порта опцию '''onlcr''' (преобразовывать перевод строки в возврат каретки и новую строку).&lt;br /&gt;
&lt;br /&gt;
Сделать это удалось пока только изменив скрипт демона receiver. Для решения проблемы заходим в /run/media/mmcblk0p1/daemon/receiver, и в начале секции receiver_start() {...} добавляем команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
stty -F /dev/ttyPS0 -onlcr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==device tree==&lt;br /&gt;
&lt;br /&gt;
Для внесения изменений в device tree добавляем нужные строки в файл&lt;br /&gt;
&lt;br /&gt;
project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
[https://www.xilinx.com/support/answers/61117.html пример]&lt;br /&gt;
&lt;br /&gt;
Для разборки device-tree [http://xillybus.com/tutorials/device-tree-zynq-1 ссылка]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ dtc -I dtb -O dts -o &amp;lt;name&amp;gt;.dts &amp;lt;name&amp;gt;.dtb&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для сборки device-tree&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ dtc -I dts -O dtb -o &amp;lt;name&amp;gt;.dtb &amp;lt;name&amp;gt;.dts&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Модификация device-tree ==&lt;br /&gt;
&lt;br /&gt;
После долгих мучений получилось поднять DP83867 только после добавления модификатора в файл [https://forums.xilinx.com/t5/Embedded-Linux/ZC702-Like-Board-with-DP83867CR-Ethernet-Petalinux-2017-4/td-p/831873 волшебная статья]&lt;br /&gt;
&lt;br /&gt;
[https://www.kernel.org/doc/Documentation/devicetree/bindings/net/ti%2Cdp83867.txt описание параметров]&lt;br /&gt;
&lt;br /&gt;
project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
=== Single Kit-board eth ===&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth1(с mdio) и выключен eth0.&lt;br /&gt;
&lt;br /&gt;
'''Так работает'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem1{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@12 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;12&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Начало скрытого блока|Выравнивание_заголовка = left| Ссылка = left|Заголовок =  Развернутый .dtb:}}&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/dts-v1/;&lt;br /&gt;
&lt;br /&gt;
/ {&lt;br /&gt;
	#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
	#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
	compatible = &amp;quot;xlnx,zynq-7000&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	cpus {&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
		cpu@0 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9&amp;quot;;&lt;br /&gt;
			device_type = &amp;quot;cpu&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x3&amp;gt;;&lt;br /&gt;
			clock-latency = &amp;lt;0x3e8&amp;gt;;&lt;br /&gt;
			cpu0-supply = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			operating-points = &amp;lt;0xa2c2a 0xf4240 0x51615 0xf4240&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		cpu@1 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9&amp;quot;;&lt;br /&gt;
			device_type = &amp;quot;cpu&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x3&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	fpga-full {&lt;br /&gt;
		compatible = &amp;quot;fpga-region&amp;quot;;&lt;br /&gt;
		fpga-mgr = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		ranges;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	pmu@f8891000 {&lt;br /&gt;
		compatible = &amp;quot;arm,cortex-a9-pmu&amp;quot;;&lt;br /&gt;
		interrupts = &amp;lt;0x0 0x5 0x4 0x0 0x6 0x4&amp;gt;;&lt;br /&gt;
		interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		reg = &amp;lt;0xf8891000 0x1000 0xf8893000 0x1000&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	fixedregulator {&lt;br /&gt;
		compatible = &amp;quot;regulator-fixed&amp;quot;;&lt;br /&gt;
		regulator-name = &amp;quot;VCCPINT&amp;quot;;&lt;br /&gt;
		regulator-min-microvolt = &amp;lt;0xf4240&amp;gt;;&lt;br /&gt;
		regulator-max-microvolt = &amp;lt;0xf4240&amp;gt;;&lt;br /&gt;
		regulator-boot-on;&lt;br /&gt;
		regulator-always-on;&lt;br /&gt;
		linux,phandle = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
		phandle = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	amba {&lt;br /&gt;
		u-boot,dm-pre-reloc;&lt;br /&gt;
		compatible = &amp;quot;simple-bus&amp;quot;;&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		ranges;&lt;br /&gt;
&lt;br /&gt;
		adc@f8007100 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-xadc-1.00.a&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8007100 0x20&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x7 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xc&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		can@e0008000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-can-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x13 0x1 0x24&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;can_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0008000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1c 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			tx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			rx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		can@e0009000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-can-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x14 0x1 0x25&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;can_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0009000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x33 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			tx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			rx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		gpio@e000a000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-gpio-1.0&amp;quot;;&lt;br /&gt;
			#gpio-cells = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x2a&amp;gt;;&lt;br /&gt;
			gpio-controller;&lt;br /&gt;
			interrupt-controller;&lt;br /&gt;
			#interrupt-cells = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x14 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe000a000 0x1000&amp;gt;;&lt;br /&gt;
			emio-gpio-width = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			gpio-mask-high = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			gpio-mask-low = &amp;lt;0x5600&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		i2c@e0004000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x26&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x19 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0004000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		i2c@e0005000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x27&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x30 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0005000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		interrupt-controller@f8f01000 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-gic&amp;quot;;&lt;br /&gt;
			#interrupt-cells = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
			interrupt-controller;&lt;br /&gt;
			reg = &amp;lt;0xf8f01000 0x1000 0xf8f00100 0x100&amp;gt;;&lt;br /&gt;
			num_cpus = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			num_interrupts = &amp;lt;0x60&amp;gt;;&lt;br /&gt;
			linux,phandle = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		cache-controller@f8f02000 {&lt;br /&gt;
			compatible = &amp;quot;arm,pl310-cache&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f02000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2 0x4&amp;gt;;&lt;br /&gt;
			arm,data-latency = &amp;lt;0x3 0x2 0x2&amp;gt;;&lt;br /&gt;
			arm,tag-latency = &amp;lt;0x2 0x2 0x2&amp;gt;;&lt;br /&gt;
			cache-unified;&lt;br /&gt;
			cache-level = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		memory-controller@f8006000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-ddrc-a05&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8006000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ocmc@f800c000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-ocmc-1.0&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x3 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf800c000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		serial@e0000000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,xuartps&amp;quot;, &amp;quot;cdns,uart-r1p8&amp;quot;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x17 0x1 0x28&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;uart_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0000000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1b 0x4&amp;gt;;&lt;br /&gt;
			device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
			port-number = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		serial@e0001000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,xuartps&amp;quot;, &amp;quot;cdns,uart-r1p8&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x18 0x1 0x29&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;uart_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0001000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x32 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e0006000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-spi-r1p6&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0006000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1a 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x19 0x1 0x22&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e0007000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-spi-r1p6&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0007000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x31 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1a 0x1 0x23&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e000d000 {&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xa 0x1 0x2b&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-qspi-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x13 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe000d000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		memory-controller@e000e000 {&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;memclk&amp;quot;, &amp;quot;aclk&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xb 0x1 0x2c&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;arm,pl353-smc-r2p1&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x12 0x4&amp;gt;;&lt;br /&gt;
			ranges;&lt;br /&gt;
			reg = &amp;lt;0xe000e000 0x1000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			flash@e1000000 {&lt;br /&gt;
				status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
				compatible = &amp;quot;arm,pl353-nand-r2p1&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0xe1000000 0x1000000&amp;gt;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			flash@e2000000 {&lt;br /&gt;
				status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
				compatible = &amp;quot;cfi-flash&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0xe2000000 0x2000000&amp;gt;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ethernet@e000b000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,zynq-gem&amp;quot;, &amp;quot;cdns,gem&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe000b000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x16 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1e 0x1 0x1e 0x1 0xd&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;pclk&amp;quot;, &amp;quot;hclk&amp;quot;, &amp;quot;tx_clk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ethernet@e000c000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,zynq-gem&amp;quot;, &amp;quot;cdns,gem&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe000c000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2d 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1f 0x1 0x1f 0x1 0xe&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;pclk&amp;quot;, &amp;quot;hclk&amp;quot;, &amp;quot;tx_clk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
			xlnx,ptp-enet-clock = &amp;lt;0x69f6bcb&amp;gt;;&lt;br /&gt;
			local-mac-address = [00 0a 35 00 22 01];&lt;br /&gt;
			phy-handle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
			xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			mdio {&lt;br /&gt;
				status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
				phy@12 {&lt;br /&gt;
					compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
					device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
					reg = &amp;lt;0xc&amp;gt;;&lt;br /&gt;
					ti,rx-internal-delay = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
					ti,tx-internal-delay = &amp;lt;0xa&amp;gt;;&lt;br /&gt;
					ti,fifo-depth = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
					ti,min-output-impedance;&lt;br /&gt;
					ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
					status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
					linux,phandle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
					phandle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
				};&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		sdhci@e0100000 {&lt;br /&gt;
			compatible = &amp;quot;arasan,sdhci-8.9a&amp;quot;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;clk_xin&amp;quot;, &amp;quot;clk_ahb&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x15 0x1 0x20&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x18 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0100000 0x1000&amp;gt;;&lt;br /&gt;
			xlnx,has-cd = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			xlnx,has-power = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			xlnx,has-wp = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		sdhci@e0101000 {&lt;br /&gt;
			compatible = &amp;quot;arasan,sdhci-8.9a&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;clk_xin&amp;quot;, &amp;quot;clk_ahb&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x16 0x1 0x21&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2f 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0101000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		slcr@f8000000 {&lt;br /&gt;
			u-boot,dm-pre-reloc;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-slcr&amp;quot;, &amp;quot;syscon&amp;quot;, &amp;quot;simple-mfd&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8000000 0x1000&amp;gt;;&lt;br /&gt;
			ranges;&lt;br /&gt;
			linux,phandle = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			clkc@100 {&lt;br /&gt;
				u-boot,dm-pre-reloc;&lt;br /&gt;
				#clock-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				compatible = &amp;quot;xlnx,ps7-clkc&amp;quot;;&lt;br /&gt;
				fclk-enable = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
				clock-output-names = &amp;quot;armpll&amp;quot;, &amp;quot;ddrpll&amp;quot;, &amp;quot;iopll&amp;quot;, &amp;quot;cpu_6or4x&amp;quot;, &amp;quot;cpu_3or2x&amp;quot;, &amp;quot;cpu_2x&amp;quot;, &amp;quot;cpu_1x&amp;quot;, &amp;quot;ddr2x&amp;quot;, &amp;quot;ddr3x&amp;quot;, &amp;quot;dci&amp;quot;, &amp;quot;lqspi&amp;quot;, &amp;quot;smc&amp;quot;, &amp;quot;pcap&amp;quot;, &amp;quot;gem0&amp;quot;, &amp;quot;gem1&amp;quot;, &amp;quot;fclk0&amp;quot;, &amp;quot;fclk1&amp;quot;, &amp;quot;fclk2&amp;quot;, &amp;quot;fclk3&amp;quot;, &amp;quot;can0&amp;quot;, &amp;quot;can1&amp;quot;, &amp;quot;sdio0&amp;quot;, &amp;quot;sdio1&amp;quot;, &amp;quot;uart0&amp;quot;, &amp;quot;uart1&amp;quot;, &amp;quot;spi0&amp;quot;, &amp;quot;spi1&amp;quot;, &amp;quot;dma&amp;quot;, &amp;quot;usb0_aper&amp;quot;, &amp;quot;usb1_aper&amp;quot;, &amp;quot;gem0_aper&amp;quot;, &amp;quot;gem1_aper&amp;quot;, &amp;quot;sdio0_aper&amp;quot;, &amp;quot;sdio1_aper&amp;quot;, &amp;quot;spi0_aper&amp;quot;, &amp;quot;spi1_aper&amp;quot;, &amp;quot;can0_aper&amp;quot;, &amp;quot;can1_aper&amp;quot;, &amp;quot;i2c0_aper&amp;quot;, &amp;quot;i2c1_aper&amp;quot;, &amp;quot;uart0_aper&amp;quot;, &amp;quot;uart1_aper&amp;quot;, &amp;quot;gpio_aper&amp;quot;, &amp;quot;lqspi_aper&amp;quot;, &amp;quot;smc_aper&amp;quot;, &amp;quot;swdt&amp;quot;, &amp;quot;dbg_trc&amp;quot;, &amp;quot;dbg_apb&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x100 0x100&amp;gt;;&lt;br /&gt;
				ps-clk-frequency = &amp;lt;0x1fca055&amp;gt;;&lt;br /&gt;
				linux,phandle = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				phandle = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			rstc@200 {&lt;br /&gt;
				compatible = &amp;quot;xlnx,zynq-reset&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x200 0x48&amp;gt;;&lt;br /&gt;
				#reset-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			pinctrl@700 {&lt;br /&gt;
				compatible = &amp;quot;xlnx,pinctrl-zynq&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x700 0x200&amp;gt;;&lt;br /&gt;
				syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		dmac@f8003000 {&lt;br /&gt;
			compatible = &amp;quot;arm,pl330&amp;quot;, &amp;quot;arm,primecell&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8003000 0x1000&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupt-names = &amp;quot;abort&amp;quot;, &amp;quot;dma0&amp;quot;, &amp;quot;dma1&amp;quot;, &amp;quot;dma2&amp;quot;, &amp;quot;dma3&amp;quot;, &amp;quot;dma4&amp;quot;, &amp;quot;dma5&amp;quot;, &amp;quot;dma6&amp;quot;, &amp;quot;dma7&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0xd 0x4 0x0 0xe 0x4 0x0 0xf 0x4 0x0 0x10 0x4 0x0 0x11 0x4 0x0 0x28 0x4 0x0 0x29 0x4 0x0 0x2a 0x4 0x0 0x2b 0x4&amp;gt;;&lt;br /&gt;
			#dma-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#dma-channels = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
			#dma-requests = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1b&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;apb_pclk&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		devcfg@f8007000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-devcfg-1.0&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x8 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8007000 0x100&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xc 0x1 0xf 0x1 0x10 0x1 0x11 0x1 0x12&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;fclk0&amp;quot;, &amp;quot;fclk1&amp;quot;, &amp;quot;fclk2&amp;quot;, &amp;quot;fclk3&amp;quot;;&lt;br /&gt;
			syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			linux,phandle = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		efuse@f800d000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-efuse&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf800d000 0x20&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8f00200 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-global-timer&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f00200 0x20&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x1 0xb 0x301&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8001000 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0xa 0x4 0x0 0xb 0x4 0x0 0xc 0x4&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,ttc&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x6&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8001000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8002000 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x25 0x4 0x0 0x26 0x4 0x0 0x27 0x4&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,ttc&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x6&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8002000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8f00600 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x1 0xd 0x301&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-twd-timer&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f00600 0x20&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		usb@e0002000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-usb-2.20a&amp;quot;, &amp;quot;chipidea,usb2&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1c&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x15 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0002000 0x1000&amp;gt;;&lt;br /&gt;
			phy_type = &amp;quot;ulpi&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		usb@e0003000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-usb-2.20a&amp;quot;, &amp;quot;chipidea,usb2&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1d&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2c 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0003000 0x1000&amp;gt;;&lt;br /&gt;
			phy_type = &amp;quot;ulpi&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		watchdog@f8005000 {&lt;br /&gt;
			clocks = &amp;lt;0x1 0x2d&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,wdt-r1p2&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x9 0x1&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8005000 0x1000&amp;gt;;&lt;br /&gt;
			timeout-sec = &amp;lt;0xa&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	chosen {&lt;br /&gt;
		bootargs = &amp;quot;console=ttyPS0,115200 earlyprintk&amp;quot;;&lt;br /&gt;
		stdout-path = &amp;quot;serial0:115200n8&amp;quot;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	aliases {&lt;br /&gt;
		ethernet0 = &amp;quot;/amba/ethernet@e000c000&amp;quot;;&lt;br /&gt;
		serial0 = &amp;quot;/amba/serial@e0000000&amp;quot;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	memory {&lt;br /&gt;
		device_type = &amp;quot;memory&amp;quot;;&lt;br /&gt;
		reg = &amp;lt;0x0 0x10000000&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
{{Конец скрытого блока}}&lt;br /&gt;
&lt;br /&gt;
=== Single On-board eth ===&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth0(с mdio) и выключен eth1.&lt;br /&gt;
&lt;br /&gt;
'''Работает гигабит через type-c! Работает hot plug. Успех.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@0 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dual eth ===&lt;br /&gt;
&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Dual-phys-on-MDIO-EMIO/td-p/737716 интересная статья о дуал eth]&lt;br /&gt;
&lt;br /&gt;
Попытка поднять два физика. '''Пока не работает'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    local-mac-address = [00 0a 35 00 00 00];&lt;br /&gt;
    enet-reset = &amp;lt;&amp;amp;gpio0 47 0&amp;gt;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@0 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x8&amp;gt;; &lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0xa&amp;gt;; &lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;; &lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
        phy1: phy@12 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;12&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x8&amp;gt;; &lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0xa&amp;gt;; &lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;; &lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gem1{&lt;br /&gt;
    local-mac-address = [00 0a 35 00 00 01];&lt;br /&gt;
    enet-reset = &amp;lt;&amp;amp;gpio0 47 0&amp;gt;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy1&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Oryx ===&lt;br /&gt;
&lt;br /&gt;
Итоговый system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
Меняем номера uart, чтобы системным был ttyPS1, а пользовательским ttyPS0&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
/ {&lt;br /&gt;
    aliases {&lt;br /&gt;
        serial0 = &amp;amp;uart0;&lt;br /&gt;
        serial1 = &amp;amp;uart1;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@1 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
            rxc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            rxdv-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            txc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            txen-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;1&amp;gt;;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/ {&lt;br /&gt;
    chosen {&lt;br /&gt;
            bootargs = &amp;quot;console=ttyPS1,115200 earlyprintk uio_pdrv_genirq.of_id=generic-uio&amp;quot;;&lt;br /&gt;
            stdout-path = &amp;quot;serial1:115200n8&amp;quot;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    hififo: hififo@40000000 {&lt;br /&gt;
            compatible = &amp;quot;generic-uio&amp;quot;;&lt;br /&gt;
            interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
            interrupts = &amp;lt;0 29 1&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;0x40000000 0x1000 0x18000000 0x8000000&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;uart0{&lt;br /&gt;
    port-number = &amp;lt;0&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;uart1{&lt;br /&gt;
    port-number = &amp;lt;1&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth0(с mdio) и выключен eth1.&lt;br /&gt;
Pullup пока что все включены&lt;br /&gt;
&lt;br /&gt;
[https://github.com/Xilinx/u-boot-xlnx/blob/master/doc/device-tree-bindings/net/micrel-ksz90x1.txt статья в помощь]&lt;br /&gt;
&lt;br /&gt;
'''Работает'''&lt;br /&gt;
&lt;br /&gt;
На новых платах(с отпаянными линиями линиями eth):&lt;br /&gt;
* на полноценных проводах с ходу&lt;br /&gt;
* на обкусанных проводах только если выставить 10 в ethtool&lt;br /&gt;
&lt;br /&gt;
На старых платах:&lt;br /&gt;
&lt;br /&gt;
* на полноценных проводах только если выставить 100 в ethtool&lt;br /&gt;
* на обкусанных проводах только если выставить 10 в ethtool&lt;br /&gt;
&lt;br /&gt;
Везде работает так:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ethtool -s eth0 speed 10 duplex full autoneg on&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Спидометр показывает 2,5МБ/с, т.е. 20Мбит/с!&lt;br /&gt;
&lt;br /&gt;
Можно в custom_itit.sh прописать:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ifdown eth0&lt;br /&gt;
ethtool -s eth0 speed 10 duplex full autoneg on&lt;br /&gt;
ifup eth0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@1 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
            rxc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            rxdv-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            txc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            txen-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;1&amp;gt;;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В принципе, работает сеть на новой плате с нормальным кабелем без модификации devicetree. Остальные комбинации плат-кабелей надо проверять&lt;br /&gt;
&lt;br /&gt;
== i2c ==&lt;br /&gt;
&lt;br /&gt;
В rootfs включаем&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages -&amp;gt;&lt;br /&gt;
     base -&amp;gt;&lt;br /&gt;
          i2c-tools -&amp;gt;&lt;br /&gt;
               [*] i2c-tools&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для поиска устройств можно написать&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i2cdetect -y -r 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842160/Cadence+I2C+Driver Статья] по i2c и RTC&lt;br /&gt;
&lt;br /&gt;
== QSPI Flash ==&lt;br /&gt;
&lt;br /&gt;
для работы по флешь памяти как в ките (S25FL128S) - оставляем в дев.три родные compatible = &amp;quot;n25q512a&amp;quot;,&amp;quot;micron,m25p80&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
== SWDT System Watchdog Timer==&lt;br /&gt;
&lt;br /&gt;
* Модифицируем device-tree&lt;br /&gt;
&lt;br /&gt;
Вставляем в девайс три:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;watchdog0 {&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    reset-on-timeout;&lt;br /&gt;
    timeout-sec = &amp;lt;60&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RTC ==&lt;br /&gt;
&lt;br /&gt;
* Включаем в ядро подходящий драйвер&lt;br /&gt;
&lt;br /&gt;
* Модифицируем device-tree&lt;br /&gt;
&lt;br /&gt;
Вставляем в девайс три:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    i2c0: i2c@e0004000 {&lt;br /&gt;
        clock-frequency = &amp;lt;0xC350&amp;gt;;&lt;br /&gt;
        rtc@51 {&lt;br /&gt;
                compatible = &amp;quot;nxp,pcf85363&amp;quot;;&lt;br /&gt;
                reg = &amp;lt;0x51&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
    i2c1: i2c@e0005000 {&lt;br /&gt;
        clock-frequency = &amp;lt;0xC350&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Будет выглядеть так:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i2c@e0004000 {&lt;br /&gt;
    compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    clocks = &amp;lt;0x1 0x26&amp;gt;;&lt;br /&gt;
    interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
    interrupts = &amp;lt;0x0 0x19 0x4&amp;gt;;&lt;br /&gt;
    reg = &amp;lt;0xe0004000 0x1000&amp;gt;;&lt;br /&gt;
    #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
    #size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
    clock-frequency = &amp;lt;0xc350&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    rtc@51 {&lt;br /&gt;
        compatible = &amp;quot;nxp,pcf85363&amp;quot;;&lt;br /&gt;
        reg = &amp;lt;0x51&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
i2c@e0005000 {&lt;br /&gt;
    compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    clocks = &amp;lt;0x1 0x27&amp;gt;;&lt;br /&gt;
    interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
    interrupts = &amp;lt;0x0 0x30 0x4&amp;gt;;&lt;br /&gt;
    reg = &amp;lt;0xe0005000 0x1000&amp;gt;;&lt;br /&gt;
    #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
    #size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
    clock-frequency = &amp;lt;0xc350&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если готового драйвера нет:&lt;br /&gt;
&lt;br /&gt;
UG1144 pg.54&lt;br /&gt;
&lt;br /&gt;
Создаем новый модуль&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-create -t modules --name &amp;lt;name_module&amp;gt; --enable&lt;br /&gt;
petalinux-create -t modules --name rtc-pcf85363 --enable&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим исходный код в project-spec/meta-user/recipes-modules/rtc-pcf85363/files&lt;br /&gt;
&lt;br /&gt;
Исправленный драйвер лежит в git Clonicus\linux\&lt;br /&gt;
&lt;br /&gt;
Для удаления модуля:&lt;br /&gt;
&lt;br /&gt;
* удаляем папку из project-spec/meta-user/recipes-modules&lt;br /&gt;
&lt;br /&gt;
* В файле project-spec/meta-user/recipes-core/images/petalinux-image.bbappend удаляем соответствующую строку&lt;br /&gt;
&lt;br /&gt;
* переоткрыть petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
Пробуем собрать модуль&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build -c &amp;lt;name_module&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если ОК, собираем (собирать модуль необязательно, petalinux-build его соберет)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И перепаковываем BOOT.bin&lt;br /&gt;
&lt;br /&gt;
Пересобираем deveice-tree с указанием нового драйвера (petalinux-build соберет сам deveice-tree)&lt;br /&gt;
&lt;br /&gt;
просмотр модулей&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsmod&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
загрузить драйвер можно&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
insmod /lib/modules/4.9.0-xilinx-v2017.4/extra/rtc-pcf85363.ko&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
или&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe rtc-pcf85363&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Если все ок и в девайс три прописан правильный драйвер для устройства, то модуль будет загружен сам'''&lt;br /&gt;
&lt;br /&gt;
Прошиваем .bit (для клоникуса нужен бит для работы PL-i2c). После этого можно пользоваться RTC&lt;br /&gt;
&lt;br /&gt;
Чтение времени из rtc если этот rtc не дефолтный (у нас rtc2)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -r -f /dev/rtc2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Синхронизация rtc по системному времени&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -w -f /dev/rtc2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим custom_init.sh для изменения default-rtc на наше устройство&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm /dev/rtc&lt;br /&gt;
ln -s /dev/rtc2 /dev/rtc&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Установка системного времени&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
date --set &amp;quot;2013-7-31 09:30&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запись системного времени в RTC&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -w&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запись времени RTC в системное время&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -s&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Получить время с интеренета&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rdate -s &amp;lt;IP address of time server&amp;gt;&lt;br /&gt;
rdate -s 132.163.96.5 (example)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При перезагрузке &amp;quot;reboot&amp;quot; система автоматически запишет системное время в RTC&lt;br /&gt;
&lt;br /&gt;
== FPGA CONFIG from Uboot ==&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы прошить PL из uboot используем команду:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
fpga loadb 0 &amp;lt;ddr_file_addr&amp;gt; &amp;lt;file_size&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
либо скриптами:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
load_bit=fatload mmc 0 0x100000 clonicus.bit // читаем файл в ddr&lt;br /&gt;
pl_load=fpga loadb 0 0x100000 0x1400000 // прошиваем PL&lt;br /&gt;
fpga_config=run load_bit &amp;amp;&amp;amp; run pl_loadipaddr // вызов самих скриптов&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
0x10_0000 - начальный адрес ddr&lt;br /&gt;
&lt;br /&gt;
0x1_400_000 - размер в байтах для 20МБайт - указываем размер битника с запасом. Теоретически может так не работать, но работает&lt;br /&gt;
&lt;br /&gt;
== ETH over TTY==&lt;br /&gt;
&lt;br /&gt;
В ядре включаем: slip, Universal TUN/TAP&lt;br /&gt;
&lt;br /&gt;
В rootfs включаем net-tools&lt;br /&gt;
&lt;br /&gt;
Включаем iptables для перемршрутизации между подсетями и для него:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[*] Networking support  ---&amp;gt;                                          [CONFIG_NET]&lt;br /&gt;
      Networking Options  ---&amp;gt;&lt;br /&gt;
        [*] Network packet filtering framework (Netfilter) ---&amp;gt;       [CONFIG_NETFILTER]&lt;br /&gt;
          [*] Advanced netfilter configuration                        [CONFIG_NETFILTER_ADVANCED]&lt;br /&gt;
          Core Netfilter Configuration ---&amp;gt;&lt;br /&gt;
            &amp;lt;*/M&amp;gt; Netfilter connection tracking support               [CONFIG_NF_CONNTRACK]&lt;br /&gt;
            &amp;lt;*/M&amp;gt; Netfilter Xtables support (required for ip_tables)  [CONFIG_NETFILTER_XTABLES]&lt;br /&gt;
            &amp;lt;*/M&amp;gt; LOG target support                                  [CONFIG_NETFILTER_XT_TARGET_LOG]&lt;br /&gt;
          IP: Netfilter Configuration ---&amp;gt;&lt;br /&gt;
            &amp;lt;*/M&amp;gt; IP tables support (required for filtering/masq/NAT) [CONFIG_IP_NF_IPTABLES]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PC1:&lt;br /&gt;
&lt;br /&gt;
slattach -L -s 115200 -p slip /dev/ttyPS1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
ifconfig sl0 192.168.1.1/24 up&lt;br /&gt;
&lt;br /&gt;
route add default gw 192.168.1.1 sl0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PC2:&lt;br /&gt;
&lt;br /&gt;
slattach -L -s 115200 -p slip /dev/ttyPS1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
ifconfig sl0 192.168.1.2/24 up&lt;br /&gt;
&lt;br /&gt;
route add default gw 192.168.1.1 sl0&lt;br /&gt;
&lt;br /&gt;
== UART_PL ==&lt;br /&gt;
&lt;br /&gt;
Включаем в настройках ядра поддержку uart_lite, выставляем правильное максимальное число уартов&lt;br /&gt;
&lt;br /&gt;
Модифицируем system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
Обращаем внимание на нумерацию serial, axi_uartlite, она должна не повторяться. То же самое с interrupts &lt;br /&gt;
Указываем верный физический адрес на шине и диапазон адресов в &amp;lt;reg&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
/ {&lt;br /&gt;
    aliases {&lt;br /&gt;
            serial2 = &amp;amp;axi_uartlite_0;&lt;br /&gt;
            serial3 = &amp;amp;axi_uartlite_1;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
/ {&lt;br /&gt;
    amba_pl {&lt;br /&gt;
        #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
        compatible = &amp;quot;simple-bus&amp;quot;;&lt;br /&gt;
        ranges;&lt;br /&gt;
        &lt;br /&gt;
        axi_uartlite_0: serial@80000008 {&lt;br /&gt;
                clock-names = &amp;quot;ref_clk&amp;quot;;&lt;br /&gt;
                clocks = &amp;lt;&amp;amp;clkc 0&amp;gt;;&lt;br /&gt;
                compatible = &amp;quot;xlnx,xps-uartlite-1.00.a&amp;quot;;&lt;br /&gt;
                current-speed = &amp;lt;115200&amp;gt;;&lt;br /&gt;
                device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
                interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                interrupts = &amp;lt;0 30 1&amp;gt;;&lt;br /&gt;
                port-number = &amp;lt;3&amp;gt;;&lt;br /&gt;
                reg = &amp;lt;0x80000008 0x10&amp;gt;;&lt;br /&gt;
                xlnx,baudrate = &amp;lt;0x1c200&amp;gt;;&lt;br /&gt;
                xlnx,data-bits = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
                xlnx,odd-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
                xlnx,s-axi-aclk-freq-hz-d = &amp;quot;100.0&amp;quot;;&lt;br /&gt;
                xlnx,use-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
        axi_uartlite_1: serial@8000001C {&lt;br /&gt;
                clock-names = &amp;quot;ref_clk&amp;quot;;&lt;br /&gt;
                clocks = &amp;lt;&amp;amp;clkc 0&amp;gt;;&lt;br /&gt;
                compatible = &amp;quot;xlnx,xps-uartlite-1.00.a&amp;quot;;&lt;br /&gt;
                current-speed = &amp;lt;115200&amp;gt;;&lt;br /&gt;
                device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
                interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                interrupts = &amp;lt;0 31 1&amp;gt;;&lt;br /&gt;
                port-number = &amp;lt;4&amp;gt;;&lt;br /&gt;
                reg = &amp;lt;0x8000001C 0x10&amp;gt;;&lt;br /&gt;
                xlnx,baudrate = &amp;lt;0x1c200&amp;gt;;&lt;br /&gt;
                xlnx,data-bits = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
                xlnx,odd-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
                xlnx,s-axi-aclk-freq-hz-d = &amp;quot;100.0&amp;quot;;&lt;br /&gt;
                xlnx,use-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если ПЛИС не прошита - будет кернел паник&lt;br /&gt;
&lt;br /&gt;
== IRQ ==&lt;br /&gt;
&lt;br /&gt;
Для поддержки irq добавляем в device-tree&lt;br /&gt;
&lt;br /&gt;
'''Важно - мы перетираем bootargs!'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/ {&lt;br /&gt;
    chosen {&lt;br /&gt;
            bootargs = &amp;quot;console=ttyPS0,115200 earlyprintk uio_pdrv_genirq.of_id=generic-uio&amp;quot;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    hififo: hififo@40000000 {&lt;br /&gt;
                    compatible = &amp;quot;generic-uio&amp;quot;;&lt;br /&gt;
                    interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                    interrupts = &amp;lt;0 29 1&amp;gt;;&lt;br /&gt;
                    reg = &amp;lt;0x40000000 0x1000 0x18000000 0x8000000&amp;gt;;&lt;br /&gt;
            };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
&lt;br /&gt;
Запустил на Z706&lt;br /&gt;
&lt;br /&gt;
[http://www.wiki.xilinx.com/Zynq+Linux+USB+Device+Driver во-первых]&lt;br /&gt;
[http://zedboard.org/content/using-petalinux-configure-zedboard%EF%BC%8C-usb-otg-can-not-work во-вторых]&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-2016-3-zynq-7010-USB-not-working/td-p/737696 в-третьих]&lt;br /&gt;
&lt;br /&gt;
В дефолтных настройках ядра petalinux_2018.1 все было включено&lt;br /&gt;
&lt;br /&gt;
включаем ресет на MIO7 pullup disabled&lt;br /&gt;
&lt;br /&gt;
все ноги интерфейса ulpi pullup disabled&lt;br /&gt;
&lt;br /&gt;
Содержимое system-user.dtsi&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
	/{&lt;br /&gt;
&lt;br /&gt;
    usb_phy0:phy0 {&lt;br /&gt;
&lt;br /&gt;
        compatible=&amp;quot;ulpi-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        #phy-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       reg = &amp;lt;0xe0002000 0x1000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       view-port=&amp;lt;0x170&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       drv-vbus;&lt;br /&gt;
&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&amp;amp;usb0 {&lt;br /&gt;
&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        dr_mode = &amp;quot;host&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        usb-phy = &amp;lt;&amp;amp;usb_phy0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
} ;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== USB-ETHERNET ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers -&amp;gt;&lt;br /&gt;
     USB support -&amp;gt;&lt;br /&gt;
          [*] USB Modem (CDC ACM)&lt;br /&gt;
          USB Gadget Support -&amp;gt;&lt;br /&gt;
               [*] Ethernet Control Model (all)&lt;br /&gt;
               [*] RNDIS&lt;br /&gt;
               [*] Ethernet Emulation Model&lt;br /&gt;
               [*] CDC Composite Device (Ethernet and ACM)&lt;br /&gt;
               [*] USB Gadget Drivers (Ethernet gadget...)&lt;br /&gt;
     Network device support -&amp;gt;&lt;br /&gt;
          USB Network Adapters -&amp;gt;&lt;br /&gt;
               [*] Realtek RTL8152/RTL8153&lt;br /&gt;
               [*] Multi-purpose USB Networking Framework&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WiFi Dongle ==&lt;br /&gt;
&lt;br /&gt;
[https://forum.trenz-electronic.de/index.php?topic=747.0 раз]&lt;br /&gt;
[https://github.com/jinchenglee/zybo_linux_setup_doc два]&lt;br /&gt;
[http://billauer.co.il/blog/2014/06/linux-realtek-hostapd/ три]&lt;br /&gt;
&lt;br /&gt;
Творим:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Networking support -&amp;gt;&lt;br /&gt;
     Wireless -&amp;gt;&lt;br /&gt;
          [*] cfg80211&lt;br /&gt;
          [*] Generic IEEE 802.11 ... (mac80211)&lt;br /&gt;
Device Drivers -&amp;gt;&lt;br /&gt;
     Network device support -&amp;gt;&lt;br /&gt;
          Wireless LAN -&amp;gt;&lt;br /&gt;
               Realtek rtlwifi family of devices -&amp;gt;&lt;br /&gt;
                    [*] Realtek ..../RTL8188CE Wireless Network Adapter ???&lt;br /&gt;
                    [*] Realtek RTL8188EE Wireless Network Adapter ???&lt;br /&gt;
                    [*] Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter&lt;br /&gt;
     Staging drivers -&amp;gt;&lt;br /&gt;
          [*] Realtek RTL8188EU wireless LAN MIC driver&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
rootfs&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem packages -&amp;gt;&lt;br /&gt;
     network -&amp;gt;&lt;br /&gt;
          wpa-supplicant -&amp;gt;&lt;br /&gt;
               [*] wpa-supplicant&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/lwfinger/rtl8188eu/blob/master/rtl8188eufw.bin качаем файл]&lt;br /&gt;
&lt;br /&gt;
Модификаци инит-скрипта&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp /run/media/mmcblk0p1/wpa_supplicant.conf /etc/&lt;br /&gt;
&lt;br /&gt;
mkdir /lib/firmware/&lt;br /&gt;
mkdir /lib/firmware/rtlwifi/&lt;br /&gt;
cp /run/media/mmcblk0p1/rtl8188eufw.bin /lib/firmware/rtlwifi/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WiFi ESP ==&lt;br /&gt;
&lt;br /&gt;
[http://www.wiki.xilinx.com/Zynq+SDIO+Wifi Xilinx SDIP WiFi]&lt;br /&gt;
&lt;br /&gt;
[http://zedboard.org/content/sdio-wifi-driver-ar6103-problem Zedboard раз]&lt;br /&gt;
&lt;br /&gt;
[https://stackoverflow.com/questions/32129689/how-to-bind-sdio1-with-wi-fi-linux два]&lt;br /&gt;
&lt;br /&gt;
[http://picozed.org/content/steps-get-wlink8-working-using-petalinux-picozed picozed три]&lt;br /&gt;
&lt;br /&gt;
[http://zedboard.org/content/adding-wi-fi-and-bluetooth-connectivity-zedboard-using-murata-1dx-pmod zedboard четыре]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Оживление 2-го ядра ==&lt;br /&gt;
&lt;br /&gt;
* Находим /home/ivan/clonicus_1.2.3/build/tmp/work-shared/plnx_arm/kernel-source/arch/arm/mach-zynq/efuse.c&lt;br /&gt;
* В функции zynq_efuse_cpu_state делаем сразу ретурн тру&lt;br /&gt;
* Че-нибудь меняем в настройках ядра для пересборки&lt;br /&gt;
* Выполняем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build -c kernel -x compile -f&lt;br /&gt;
petalinux-build -c kernel -x deploy -f&lt;br /&gt;
petalinux-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Забираем image.ub&lt;br /&gt;
&lt;br /&gt;
'''ИЛИ'''&lt;br /&gt;
&lt;br /&gt;
Правим device-tree, заменяем адрес efuse на 0xf800cff0&lt;br /&gt;
&lt;br /&gt;
== webserver == &lt;br /&gt;
&lt;br /&gt;
* [https://github.com/emlid/ReachView Репозиторий emlid ReachView] (bnd на py/Flask, fnd на html/Ajax/js/Bootstrap)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Backend:'''&lt;br /&gt;
&lt;br /&gt;
* [http://svenand.blogdrives.com/archive/195.html#.XPTYt4gzaUk Источник по busybox-httpd]&lt;br /&gt;
&lt;br /&gt;
* [https://www.afternerd.com/blog/python-http-server/ Гайд по python server]&lt;br /&gt;
&lt;br /&gt;
* [https://ru.wikibooks.org/wiki/Flask Викиучебник по Flask]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/193242/ ХаброГайд по python/Flask]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Frontend:'''&lt;br /&gt;
&lt;br /&gt;
* [https://unminify.com/ unminify CSS]&lt;br /&gt;
&lt;br /&gt;
* [https://getbootstrap.com/docs/4.3/getting-started/introduction/ Bootstrap EN getting started]&lt;br /&gt;
&lt;br /&gt;
* [https://bootstrap-4.ru/ Bootstrap RU]&lt;br /&gt;
&lt;br /&gt;
* [http://htmlbook.ru/samhtml/tekst/spetssimvoly Справочник по операторам и тегам HTML/CSS]&lt;br /&gt;
&lt;br /&gt;
* [https://www.w3schools.com/howto/default.asp Сборник шаблонов CSS W3schools]&lt;br /&gt;
&lt;br /&gt;
* [https://www.w3schools.com/w3css/w3css_tabulators.asp Анимированный сайдбар/табы]&lt;br /&gt;
&lt;br /&gt;
* [https://css-tricks.com/ CSS Tricks]&lt;br /&gt;
&lt;br /&gt;
* [https://www.cssmatic.com/ Онлайн тени/границы/градиент блоков]&lt;br /&gt;
&lt;br /&gt;
* [https://internetingishard.com/html-and-css/semantic-html/ Semantic HTML grid layout]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/202408/ Хаброгайд(ч1) по верстке]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/211032/ ХаброГайд(ч2) по Bootstrap]&lt;br /&gt;
&lt;br /&gt;
* [https://fontawesome.com/icons?d=gallery Fontawesome ICONS open lib]&lt;br /&gt;
&lt;br /&gt;
:* [https://htmlacademy.ru/courses/43/run/1 Нормальный онлайн HTML/CSS/JS editor]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== busybox httpd ===&lt;br /&gt;
В petalinux многие пакеты скукожены до их минимальных вариантов и встроены в общий пакет busybox. &lt;br /&gt;
В busybox есть также и вебсервер busybox-httpd.&lt;br /&gt;
Для использования нужно на этапе настройки файловой системы его включить:&lt;br /&gt;
&lt;br /&gt;
 $ petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
Конфиг: &lt;br /&gt;
 base -&amp;gt;&lt;br /&gt;
     busybox -&amp;gt;&lt;br /&gt;
          [*] busybox&lt;br /&gt;
          [*] busybox-httpd&lt;br /&gt;
          [ ] busybox-hwclock&lt;br /&gt;
          [*] busybox-inetd&lt;br /&gt;
          [*] busybox-mdev&lt;br /&gt;
          [ ] busybox-syslog &lt;br /&gt;
          [*] busybox-udhcpc &lt;br /&gt;
          [ ] busybox-udhcpd &lt;br /&gt;
&lt;br /&gt;
Сам httpd будет в '''/usr/sbin'''.&lt;br /&gt;
Рабочая папка по умолчанию в '''/srv/www/'''. Если в нее кидать файлы, то именно из нее будет отображаться контент в браузере. Папку можно изменить, перезапустив httpd с ключом -h &amp;lt;workdir&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Порт по умолчанию 80. Работает, как демон в /etc/init.d/, вкл-выкл оттуда же.&lt;br /&gt;
&lt;br /&gt;
Если положить в /srv/www/ файл index.html с неким кодом, то в браузере отобразится вебморда. Картинки работают по ссылкам.&lt;br /&gt;
&lt;br /&gt;
'''index.html'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Transitional//EN&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;clonicus'112 webserver&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h3&amp;gt;Hello, World!&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Web server is now up!&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;https://i.redd.it/oagz5eobkkt11.jpg&amp;quot; width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;http://www.srns.ru&amp;quot;&amp;gt;For more information see SRNS.ru&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== python в petalinux ===&lt;br /&gt;
В petalinux 2017.4 есть 2 питона - 2.7 и 3.5.&lt;br /&gt;
&lt;br /&gt;
 $ petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
'''python2.7'''&lt;br /&gt;
  Filesystem Packages-&amp;gt;&lt;br /&gt;
     devel-&amp;gt;&lt;br /&gt;
         python-&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''python3.5'''&lt;br /&gt;
  Filesystem Packages-&amp;gt;&lt;br /&gt;
     misc-&amp;gt;&lt;br /&gt;
         python3-*&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модуль runpy.py для запуска команд вида 'python -m &amp;lt;module&amp;gt;' находится в python -&amp;gt; python-misc. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SimpleHTTPServer.py ===&lt;br /&gt;
Для первого теста поднимем встроенный в python2.7 минисервер SimpleHTTPServer.py в /usr/lib/python2.7. &lt;br /&gt;
&lt;br /&gt;
Для его запуска напишем скрипт&lt;br /&gt;
&lt;br /&gt;
'''webserver.py''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import SimpleHTTPServer &lt;br /&gt;
import SocketServer &lt;br /&gt;
 &lt;br /&gt;
PORT = 80 &lt;br /&gt;
 &lt;br /&gt;
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler &lt;br /&gt;
 &lt;br /&gt;
httpd = SocketServer.TCPServer((&amp;quot;&amp;quot;, PORT), Handler) &lt;br /&gt;
 &lt;br /&gt;
print &amp;quot;serving at port&amp;quot;, PORT &lt;br /&gt;
httpd.serve_forever()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 $ python webserver.py &lt;br /&gt;
&lt;br /&gt;
При наличии в папке со скриптом файла index.html сервер поднимется автоматически.&lt;br /&gt;
&lt;br /&gt;
=== Добавление слоев в сборку ===&lt;br /&gt;
&lt;br /&gt;
[https://www.srns.ru/wiki/Blog:DneprovD/18.07.2019_Yocto_layers Переехало в статью]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:HOWTO]]&lt;br /&gt;
[[Категория:Oryx]]&lt;br /&gt;
[[Категория:Zynq]]&lt;br /&gt;
[[Категория:EmbeddedLinux]]&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
&lt;br /&gt;
{{wl-publish: 2018-05-16 10:06:30 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/16.05.2018_PetaLinux</id>
		<title>Blog:Lipa/16.05.2018 PetaLinux</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/16.05.2018_PetaLinux"/>
				<updated>2021-03-18T07:40:19Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* Оживление 2-го ядра */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Petalinux.png|400px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сборка PetaLinux для кастомной железки&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма2}}&lt;br /&gt;
&lt;br /&gt;
== Требования ==&lt;br /&gt;
&lt;br /&gt;
Vivado 2018.1 (для single-gigabit ethernet можно более ранние версии)&lt;br /&gt;
&lt;br /&gt;
Начиная с petalinux_2018.1 отсутствует devcfg. Необходимо использовать FPGA manager. Технология нами пока не освоена&lt;br /&gt;
&lt;br /&gt;
Необходима Ubuntu-16.04&lt;br /&gt;
&lt;br /&gt;
Требуется поставить ряд пакетов, полный список приведен в документе [https://www.xilinx.com/support/documentation/sw_manuals/xilinx2019_1/ug1144-petalinux-tools-reference-guide.pdf#page=9 UG1144]&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PetaLinux в систему. Дистрибутив есть на [https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/2018-1.html Xilinx], либо у меня на компьютере. '''Ставить PetaLinux необходимо БЕЗ прав суперюзера!'''&lt;br /&gt;
&lt;br /&gt;
кидаем в /components/yocto/ sstate-rel-v2017.4.tar.gz&lt;br /&gt;
&lt;br /&gt;
Подготовка завершена&lt;br /&gt;
&lt;br /&gt;
== Правка Vivado ==&lt;br /&gt;
&lt;br /&gt;
Для поддержки MDIO в Vivado 17.1-17.4 нужен [https://www.xilinx.com/support/answers/69132.html патч]. Ставим!&lt;br /&gt;
&lt;br /&gt;
'''Не помогло.''' Ставим 2018.1&lt;br /&gt;
&lt;br /&gt;
== Сборка ==&lt;br /&gt;
&lt;br /&gt;
Пошаговое руководство по сборке содержится в документе UG1156&lt;br /&gt;
&lt;br /&gt;
В консоли пишем source/[путь к петалинух]/settings.sh&lt;br /&gt;
&lt;br /&gt;
Выполняем шаги из UG1156 по главе 5:&lt;br /&gt;
&lt;br /&gt;
* экспортируем из Vivado .hdf (в блок дизайн File-&amp;gt;Export-&amp;gt;Export Hardware)&lt;br /&gt;
&lt;br /&gt;
* создаем проект PetaLinux&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-create --type project --template zynq --name &amp;lt;PROJECT&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* переходим в папку с текущим проектом&lt;br /&gt;
&lt;br /&gt;
* подключаем файл .hdf&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config --get-hw-description=[путь к папке с файлом .hdf]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* перед сборкой системы необходимо выполнить '''все''' команды конфигурации в данной последовательности:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&lt;br /&gt;
$ petalinux-config -c kernel&lt;br /&gt;
&lt;br /&gt;
$ petalinux-config -c rootfs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config ===&lt;br /&gt;
&lt;br /&gt;
Если хотим спользовать внешний файл device-tree включаем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Subsystem AUTO Hardware Settings-&amp;gt;&lt;br /&gt;
     Advances bootable images storage settings-&amp;gt;&lt;br /&gt;
          dtb image settings-&amp;gt;&lt;br /&gt;
               image storage media&lt;br /&gt;
                    primary sd&lt;br /&gt;
               &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Необходимо править netboot offset если оперативной памяти менее ~256МБ&lt;br /&gt;
&lt;br /&gt;
Для клоникуса с 256МБ ставим 8'000'000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
u-boot Configuration-&amp;gt;&lt;br /&gt;
     netboot offset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выставляем точку начала распаковки образа системы&lt;br /&gt;
&lt;br /&gt;
Выключаем копирование образа по sftp (Image Packaging Configuration -&amp;gt; Copy final images)&lt;br /&gt;
&lt;br /&gt;
Отключаем интернет-sstate (Yocto Settings -&amp;gt; Enable Network sstate feeds)&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config -c kernel===&lt;br /&gt;
&lt;br /&gt;
* Подключаем в ядре поддержку физика и его дров.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config -c kernel&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''для oryx:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers-&amp;gt;&lt;br /&gt;
     [*]Network device support -&amp;gt;&lt;br /&gt;
          [*]Ethernet driver support -&amp;gt;&lt;br /&gt;
               [*] Micrel devices&lt;br /&gt;
          [*] PHY Device support and infastructure --&amp;gt;&lt;br /&gt;
               [*] Drivers for Micrel PHYs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''для clonicus:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers-&amp;gt;&lt;br /&gt;
     [*]Network device support -&amp;gt;&lt;br /&gt;
          [*] PHY Device support and infastructure --&amp;gt;&lt;br /&gt;
               [*] Texas Instruments DP83867 Gigabit PHY&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config -c rootfs ===&lt;br /&gt;
&lt;br /&gt;
Подключаем при необходимости ethtool, gdbserver(просто gdb не заработал), libstdc, libgcc, glib2.0, glibc(glibc &amp;amp; ltd)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages-&amp;gt;&lt;br /&gt;
     misc -&amp;gt;&lt;br /&gt;
          gcc-runtime -&amp;gt;&lt;br /&gt;
               [*] libstdc ++&lt;br /&gt;
          gdb --&amp;gt;&lt;br /&gt;
               [*] gdb&lt;br /&gt;
          glib-2.0&lt;br /&gt;
               [*] glib-2.0&lt;br /&gt;
          glibc&lt;br /&gt;
               [*] glibc&lt;br /&gt;
               [*] ldd&lt;br /&gt;
     devel -&amp;gt;&lt;br /&gt;
          python -&amp;gt;&lt;br /&gt;
               python -&amp;gt;&lt;br /&gt;
                    [*] python&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Опционально:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages-&amp;gt;&lt;br /&gt;
     base -&amp;gt;&lt;br /&gt;
          i2c-tools -&amp;gt;&lt;br /&gt;
               [*] i2c-tools&lt;br /&gt;
          usbutils -&amp;gt;&lt;br /&gt;
               [*] usbutils&lt;br /&gt;
     console -&amp;gt;&lt;br /&gt;
          network -&amp;gt;&lt;br /&gt;
               ethtool -&amp;gt;&lt;br /&gt;
                    [*] ethtool // необходимо для oryx! для перенастройки autonegotiation&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Можно еще подключать дебаг i2c&lt;br /&gt;
&lt;br /&gt;
'''Необходимо убедиться, что  образ может распаковаться в размер оперативы'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Если будут проблемы, то надо будет править netboot offset&lt;br /&gt;
&lt;br /&gt;
=== device tree ===&lt;br /&gt;
&lt;br /&gt;
Если необходимо внести изменения в device tree, то смотрим конец статьи&lt;br /&gt;
&lt;br /&gt;
[https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841676/U-Boot+Flattened+Device+Tree Интересная статья по правке devicetree из uboot]&lt;br /&gt;
&lt;br /&gt;
=== Сборка проекта ===&lt;br /&gt;
&lt;br /&gt;
* далее (сборка идет 30-60 минут)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build&lt;br /&gt;
&lt;br /&gt;
cd /images/linux/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* делаем boot.bin в папке /images/linux/&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --u-boot --force&lt;br /&gt;
&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --fpga name.bit --u-boot --force&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --fpga name.bit --u-boot --kernel --force&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* записываем в загрузочную область флешки файлы boot.bin и image.ub&lt;br /&gt;
&lt;br /&gt;
== Всякое ==&lt;br /&gt;
&lt;br /&gt;
Если мало памяти как у нас - возможна ошибка image is not a fdt [https://forums.xilinx.com/t5/Embedded-Processor-System-Design/Petalinux-problem-on-custom-board-quot-image-is-not-a-fdt-quot/td-p/754892 ссылка]&lt;br /&gt;
&lt;br /&gt;
Необходимо править netboot offset&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
u-boot Configuration-&amp;gt;&lt;br /&gt;
     netboot offset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Можно вручную загрузиться из u-boot'а.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ fatload mmc 0 0xA000000 image.ub&lt;br /&gt;
$ bootm 0xA000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
либо&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ fatload mmc 0 0xA000000 image.ub&lt;br /&gt;
$ fatload mmc 0 0x9000000 system.dtb&lt;br /&gt;
$ bootm 0xA000000 0xA000000 0x9000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Можно поварьировать адрес&lt;br /&gt;
&lt;br /&gt;
------------&lt;br /&gt;
&lt;br /&gt;
Проверка статуса прошитости FPGA&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat /sys/class/xdevcfg/xdevcfg/device/prog_done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Uboot==&lt;br /&gt;
&lt;br /&gt;
Для внесения правок в загрузку линукса используем список команд '''env'''&lt;br /&gt;
&lt;br /&gt;
Просмотр текущих команд '''printenv'''&lt;br /&gt;
&lt;br /&gt;
Сброс настроек в дефолт '''env default -a'''&lt;br /&gt;
&lt;br /&gt;
Создать переменную '''env set &amp;lt;имя&amp;gt; &amp;lt;значение&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Правка переменной '''env edit &amp;lt;имя переменной&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Для каждой платы делаем следующее:&lt;br /&gt;
&lt;br /&gt;
* Берем [[Файл:uboot.env.c]]&lt;br /&gt;
&lt;br /&gt;
* Удаляем в конце имени &amp;quot;.c&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Записываем на флешку рядом с образом линукса&lt;br /&gt;
&lt;br /&gt;
* Запускаем плату и прерываем autoboot&lt;br /&gt;
&lt;br /&gt;
* Пишем '''editenv ethaddr'''&lt;br /&gt;
&lt;br /&gt;
* Редактируем MAC-адрес&lt;br /&gt;
&lt;br /&gt;
* Пишем '''saveenv'''&lt;br /&gt;
&lt;br /&gt;
* Все! можем ребутать '''reset'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Сохранить в файл '''saveenv'''&lt;br /&gt;
&lt;br /&gt;
==Автозапуск приложений==&lt;br /&gt;
&lt;br /&gt;
Во-первых [https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-Runnning-a-script-file-at-startup/td-p/689051 тыц]&lt;br /&gt;
&lt;br /&gt;
Далее пишем&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-create -t apps --template install -n myapp-init --enable&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим файл /project-spec/meta-user/recipes-apps/myapp-init/myapp-init.bb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file is the myapp-init recipe.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
SUMMARY = &amp;quot;Simple myapp-init application&amp;quot;&lt;br /&gt;
SECTION = &amp;quot;PETALINUX/apps&amp;quot;&lt;br /&gt;
LICENSE = &amp;quot;MIT&amp;quot;&lt;br /&gt;
LIC_FILES_CHKSUM = &amp;quot;file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302&amp;quot;&lt;br /&gt;
&lt;br /&gt;
SRC_URI = &amp;quot;file://myapp-init&amp;quot;&lt;br /&gt;
&lt;br /&gt;
S = &amp;quot;${WORKDIR}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILESEXTRAPATHS_prepend := &amp;quot;${THISDIR}/files:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
inherit update-rc.d&lt;br /&gt;
&lt;br /&gt;
INITSCRIPT_NAME = &amp;quot;myapp-init&amp;quot;&lt;br /&gt;
INITSCRIPT_PARAMS = &amp;quot;start 99 S .&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do_install() {&lt;br /&gt;
    install -d ${D}${sysconfdir}/init.d&lt;br /&gt;
    install -m 0755 ${S}/myapp-init ${D}${sysconfdir}/init.d/myapp-init&lt;br /&gt;
}&lt;br /&gt;
FILES_${PN} += &amp;quot;${sysconfdir}/*&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим сам исполняемый скрипт project-spec/meta-user/recipes-apps/myapp-init/files/myapp-init&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Autorun script&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Try run custom_init&amp;quot;&lt;br /&gt;
sh /run/media/mmcblk0p1/custom_init.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Записываем на флешку скрипт custom_init.sh с нужными командами и делаем его исполняемым&lt;br /&gt;
&lt;br /&gt;
Записываем файл interfaces&lt;br /&gt;
&lt;br /&gt;
Скачать архив: [[Файл:Init_interfaces.rar]]&lt;br /&gt;
&lt;br /&gt;
==SSH==&lt;br /&gt;
&lt;br /&gt;
Как победить сохранение ssh-ключей:&lt;br /&gt;
&lt;br /&gt;
Добавляем в init_script следующие строки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir /run/media/mmcblk0p2/.ssh&lt;br /&gt;
ln -s /run/media/mmcblk0p2/.ssh/ /home/root/&lt;br /&gt;
mkdir /run/media/mmcblk0p2/dropbear/&lt;br /&gt;
chmod 400 /run/media/mmcblk0p2/dropbear/&lt;br /&gt;
rm -r /etc/dropbear/&lt;br /&gt;
ln -s /run/media/mmcblk0p2/dropbear/ /etc/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Создается ссылка на флешку, где хранятся авторизованные пользователи&lt;br /&gt;
* Создается папка для хранения секретного ключа платы&lt;br /&gt;
* При запуске платы свежесозданный ключ заменяется тем, что лежит на флешке&lt;br /&gt;
* При первом включении платы будет создан новый ключ&lt;br /&gt;
&lt;br /&gt;
Помимо добавления указанных команд в скрипт ничего больше делать не надо&lt;br /&gt;
&lt;br /&gt;
==Daemon==&lt;br /&gt;
&lt;br /&gt;
Для настройки демона:&lt;br /&gt;
&lt;br /&gt;
* Добавляем строки в файл custom_init.sh&lt;br /&gt;
* Кидаем на загрузочный раздел флешки папку из архива [[:File:daemon.rar]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp -r /run/media/mmcblk0p1/daemon/lsb /lib/&lt;br /&gt;
cp /run/media/mmcblk0p1/daemon/receiver.conf /etc/&lt;br /&gt;
cp /run/media/mmcblk0p1/daemon/receiver /etc/init.d/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serial port на новом линуксе ===&lt;br /&gt;
Выяснилось, что без доп. настройки, в последовательный порт (dev/ttyPS0) после каждой посылки добавляются символы CR и LF. Оказалось, что и RTKLib, и софт Листопада не хотят работать с таким окончанием пакетов.&lt;br /&gt;
&lt;br /&gt;
Выше не совсем так, скорее мысль в том, что каждый символ LF (0x0A) в наших данных меняется на символы CR LF, т.е. (0x0D0A). И тогда, в нашем битовом потоке меняется размер и содержимое и парсеры работают некорректно.&lt;br /&gt;
Старый линукс на Ориксах добавляет только LF. Для решения проблемы нужно через stty выключить в настройках порта опцию '''onlcr''' (преобразовывать перевод строки в возврат каретки и новую строку).&lt;br /&gt;
&lt;br /&gt;
Сделать это удалось пока только изменив скрипт демона receiver. Для решения проблемы заходим в /run/media/mmcblk0p1/daemon/receiver, и в начале секции receiver_start() {...} добавляем команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
stty -F /dev/ttyPS0 -onlcr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==device tree==&lt;br /&gt;
&lt;br /&gt;
Для внесения изменений в device tree добавляем нужные строки в файл&lt;br /&gt;
&lt;br /&gt;
project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
[https://www.xilinx.com/support/answers/61117.html пример]&lt;br /&gt;
&lt;br /&gt;
Для разборки device-tree [http://xillybus.com/tutorials/device-tree-zynq-1 ссылка]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ dtc -I dtb -O dts -o &amp;lt;name&amp;gt;.dts &amp;lt;name&amp;gt;.dtb&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для сборки device-tree&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ dtc -I dts -O dtb -o &amp;lt;name&amp;gt;.dtb &amp;lt;name&amp;gt;.dts&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Модификация device-tree ==&lt;br /&gt;
&lt;br /&gt;
После долгих мучений получилось поднять DP83867 только после добавления модификатора в файл [https://forums.xilinx.com/t5/Embedded-Linux/ZC702-Like-Board-with-DP83867CR-Ethernet-Petalinux-2017-4/td-p/831873 волшебная статья]&lt;br /&gt;
&lt;br /&gt;
[https://www.kernel.org/doc/Documentation/devicetree/bindings/net/ti%2Cdp83867.txt описание параметров]&lt;br /&gt;
&lt;br /&gt;
project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
=== Single Kit-board eth ===&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth1(с mdio) и выключен eth0.&lt;br /&gt;
&lt;br /&gt;
'''Так работает'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem1{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@12 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;12&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Начало скрытого блока|Выравнивание_заголовка = left| Ссылка = left|Заголовок =  Развернутый .dtb:}}&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/dts-v1/;&lt;br /&gt;
&lt;br /&gt;
/ {&lt;br /&gt;
	#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
	#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
	compatible = &amp;quot;xlnx,zynq-7000&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	cpus {&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
		cpu@0 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9&amp;quot;;&lt;br /&gt;
			device_type = &amp;quot;cpu&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x3&amp;gt;;&lt;br /&gt;
			clock-latency = &amp;lt;0x3e8&amp;gt;;&lt;br /&gt;
			cpu0-supply = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			operating-points = &amp;lt;0xa2c2a 0xf4240 0x51615 0xf4240&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		cpu@1 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9&amp;quot;;&lt;br /&gt;
			device_type = &amp;quot;cpu&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x3&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	fpga-full {&lt;br /&gt;
		compatible = &amp;quot;fpga-region&amp;quot;;&lt;br /&gt;
		fpga-mgr = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		ranges;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	pmu@f8891000 {&lt;br /&gt;
		compatible = &amp;quot;arm,cortex-a9-pmu&amp;quot;;&lt;br /&gt;
		interrupts = &amp;lt;0x0 0x5 0x4 0x0 0x6 0x4&amp;gt;;&lt;br /&gt;
		interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		reg = &amp;lt;0xf8891000 0x1000 0xf8893000 0x1000&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	fixedregulator {&lt;br /&gt;
		compatible = &amp;quot;regulator-fixed&amp;quot;;&lt;br /&gt;
		regulator-name = &amp;quot;VCCPINT&amp;quot;;&lt;br /&gt;
		regulator-min-microvolt = &amp;lt;0xf4240&amp;gt;;&lt;br /&gt;
		regulator-max-microvolt = &amp;lt;0xf4240&amp;gt;;&lt;br /&gt;
		regulator-boot-on;&lt;br /&gt;
		regulator-always-on;&lt;br /&gt;
		linux,phandle = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
		phandle = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	amba {&lt;br /&gt;
		u-boot,dm-pre-reloc;&lt;br /&gt;
		compatible = &amp;quot;simple-bus&amp;quot;;&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		ranges;&lt;br /&gt;
&lt;br /&gt;
		adc@f8007100 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-xadc-1.00.a&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8007100 0x20&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x7 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xc&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		can@e0008000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-can-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x13 0x1 0x24&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;can_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0008000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1c 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			tx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			rx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		can@e0009000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-can-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x14 0x1 0x25&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;can_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0009000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x33 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			tx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			rx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		gpio@e000a000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-gpio-1.0&amp;quot;;&lt;br /&gt;
			#gpio-cells = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x2a&amp;gt;;&lt;br /&gt;
			gpio-controller;&lt;br /&gt;
			interrupt-controller;&lt;br /&gt;
			#interrupt-cells = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x14 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe000a000 0x1000&amp;gt;;&lt;br /&gt;
			emio-gpio-width = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			gpio-mask-high = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			gpio-mask-low = &amp;lt;0x5600&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		i2c@e0004000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x26&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x19 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0004000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		i2c@e0005000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x27&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x30 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0005000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		interrupt-controller@f8f01000 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-gic&amp;quot;;&lt;br /&gt;
			#interrupt-cells = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
			interrupt-controller;&lt;br /&gt;
			reg = &amp;lt;0xf8f01000 0x1000 0xf8f00100 0x100&amp;gt;;&lt;br /&gt;
			num_cpus = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			num_interrupts = &amp;lt;0x60&amp;gt;;&lt;br /&gt;
			linux,phandle = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		cache-controller@f8f02000 {&lt;br /&gt;
			compatible = &amp;quot;arm,pl310-cache&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f02000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2 0x4&amp;gt;;&lt;br /&gt;
			arm,data-latency = &amp;lt;0x3 0x2 0x2&amp;gt;;&lt;br /&gt;
			arm,tag-latency = &amp;lt;0x2 0x2 0x2&amp;gt;;&lt;br /&gt;
			cache-unified;&lt;br /&gt;
			cache-level = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		memory-controller@f8006000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-ddrc-a05&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8006000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ocmc@f800c000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-ocmc-1.0&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x3 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf800c000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		serial@e0000000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,xuartps&amp;quot;, &amp;quot;cdns,uart-r1p8&amp;quot;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x17 0x1 0x28&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;uart_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0000000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1b 0x4&amp;gt;;&lt;br /&gt;
			device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
			port-number = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		serial@e0001000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,xuartps&amp;quot;, &amp;quot;cdns,uart-r1p8&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x18 0x1 0x29&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;uart_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0001000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x32 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e0006000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-spi-r1p6&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0006000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1a 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x19 0x1 0x22&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e0007000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-spi-r1p6&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0007000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x31 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1a 0x1 0x23&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e000d000 {&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xa 0x1 0x2b&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-qspi-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x13 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe000d000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		memory-controller@e000e000 {&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;memclk&amp;quot;, &amp;quot;aclk&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xb 0x1 0x2c&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;arm,pl353-smc-r2p1&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x12 0x4&amp;gt;;&lt;br /&gt;
			ranges;&lt;br /&gt;
			reg = &amp;lt;0xe000e000 0x1000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			flash@e1000000 {&lt;br /&gt;
				status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
				compatible = &amp;quot;arm,pl353-nand-r2p1&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0xe1000000 0x1000000&amp;gt;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			flash@e2000000 {&lt;br /&gt;
				status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
				compatible = &amp;quot;cfi-flash&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0xe2000000 0x2000000&amp;gt;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ethernet@e000b000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,zynq-gem&amp;quot;, &amp;quot;cdns,gem&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe000b000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x16 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1e 0x1 0x1e 0x1 0xd&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;pclk&amp;quot;, &amp;quot;hclk&amp;quot;, &amp;quot;tx_clk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ethernet@e000c000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,zynq-gem&amp;quot;, &amp;quot;cdns,gem&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe000c000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2d 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1f 0x1 0x1f 0x1 0xe&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;pclk&amp;quot;, &amp;quot;hclk&amp;quot;, &amp;quot;tx_clk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
			xlnx,ptp-enet-clock = &amp;lt;0x69f6bcb&amp;gt;;&lt;br /&gt;
			local-mac-address = [00 0a 35 00 22 01];&lt;br /&gt;
			phy-handle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
			xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			mdio {&lt;br /&gt;
				status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
				phy@12 {&lt;br /&gt;
					compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
					device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
					reg = &amp;lt;0xc&amp;gt;;&lt;br /&gt;
					ti,rx-internal-delay = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
					ti,tx-internal-delay = &amp;lt;0xa&amp;gt;;&lt;br /&gt;
					ti,fifo-depth = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
					ti,min-output-impedance;&lt;br /&gt;
					ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
					status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
					linux,phandle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
					phandle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
				};&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		sdhci@e0100000 {&lt;br /&gt;
			compatible = &amp;quot;arasan,sdhci-8.9a&amp;quot;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;clk_xin&amp;quot;, &amp;quot;clk_ahb&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x15 0x1 0x20&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x18 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0100000 0x1000&amp;gt;;&lt;br /&gt;
			xlnx,has-cd = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			xlnx,has-power = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			xlnx,has-wp = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		sdhci@e0101000 {&lt;br /&gt;
			compatible = &amp;quot;arasan,sdhci-8.9a&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;clk_xin&amp;quot;, &amp;quot;clk_ahb&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x16 0x1 0x21&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2f 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0101000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		slcr@f8000000 {&lt;br /&gt;
			u-boot,dm-pre-reloc;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-slcr&amp;quot;, &amp;quot;syscon&amp;quot;, &amp;quot;simple-mfd&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8000000 0x1000&amp;gt;;&lt;br /&gt;
			ranges;&lt;br /&gt;
			linux,phandle = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			clkc@100 {&lt;br /&gt;
				u-boot,dm-pre-reloc;&lt;br /&gt;
				#clock-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				compatible = &amp;quot;xlnx,ps7-clkc&amp;quot;;&lt;br /&gt;
				fclk-enable = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
				clock-output-names = &amp;quot;armpll&amp;quot;, &amp;quot;ddrpll&amp;quot;, &amp;quot;iopll&amp;quot;, &amp;quot;cpu_6or4x&amp;quot;, &amp;quot;cpu_3or2x&amp;quot;, &amp;quot;cpu_2x&amp;quot;, &amp;quot;cpu_1x&amp;quot;, &amp;quot;ddr2x&amp;quot;, &amp;quot;ddr3x&amp;quot;, &amp;quot;dci&amp;quot;, &amp;quot;lqspi&amp;quot;, &amp;quot;smc&amp;quot;, &amp;quot;pcap&amp;quot;, &amp;quot;gem0&amp;quot;, &amp;quot;gem1&amp;quot;, &amp;quot;fclk0&amp;quot;, &amp;quot;fclk1&amp;quot;, &amp;quot;fclk2&amp;quot;, &amp;quot;fclk3&amp;quot;, &amp;quot;can0&amp;quot;, &amp;quot;can1&amp;quot;, &amp;quot;sdio0&amp;quot;, &amp;quot;sdio1&amp;quot;, &amp;quot;uart0&amp;quot;, &amp;quot;uart1&amp;quot;, &amp;quot;spi0&amp;quot;, &amp;quot;spi1&amp;quot;, &amp;quot;dma&amp;quot;, &amp;quot;usb0_aper&amp;quot;, &amp;quot;usb1_aper&amp;quot;, &amp;quot;gem0_aper&amp;quot;, &amp;quot;gem1_aper&amp;quot;, &amp;quot;sdio0_aper&amp;quot;, &amp;quot;sdio1_aper&amp;quot;, &amp;quot;spi0_aper&amp;quot;, &amp;quot;spi1_aper&amp;quot;, &amp;quot;can0_aper&amp;quot;, &amp;quot;can1_aper&amp;quot;, &amp;quot;i2c0_aper&amp;quot;, &amp;quot;i2c1_aper&amp;quot;, &amp;quot;uart0_aper&amp;quot;, &amp;quot;uart1_aper&amp;quot;, &amp;quot;gpio_aper&amp;quot;, &amp;quot;lqspi_aper&amp;quot;, &amp;quot;smc_aper&amp;quot;, &amp;quot;swdt&amp;quot;, &amp;quot;dbg_trc&amp;quot;, &amp;quot;dbg_apb&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x100 0x100&amp;gt;;&lt;br /&gt;
				ps-clk-frequency = &amp;lt;0x1fca055&amp;gt;;&lt;br /&gt;
				linux,phandle = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				phandle = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			rstc@200 {&lt;br /&gt;
				compatible = &amp;quot;xlnx,zynq-reset&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x200 0x48&amp;gt;;&lt;br /&gt;
				#reset-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			pinctrl@700 {&lt;br /&gt;
				compatible = &amp;quot;xlnx,pinctrl-zynq&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x700 0x200&amp;gt;;&lt;br /&gt;
				syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		dmac@f8003000 {&lt;br /&gt;
			compatible = &amp;quot;arm,pl330&amp;quot;, &amp;quot;arm,primecell&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8003000 0x1000&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupt-names = &amp;quot;abort&amp;quot;, &amp;quot;dma0&amp;quot;, &amp;quot;dma1&amp;quot;, &amp;quot;dma2&amp;quot;, &amp;quot;dma3&amp;quot;, &amp;quot;dma4&amp;quot;, &amp;quot;dma5&amp;quot;, &amp;quot;dma6&amp;quot;, &amp;quot;dma7&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0xd 0x4 0x0 0xe 0x4 0x0 0xf 0x4 0x0 0x10 0x4 0x0 0x11 0x4 0x0 0x28 0x4 0x0 0x29 0x4 0x0 0x2a 0x4 0x0 0x2b 0x4&amp;gt;;&lt;br /&gt;
			#dma-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#dma-channels = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
			#dma-requests = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1b&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;apb_pclk&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		devcfg@f8007000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-devcfg-1.0&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x8 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8007000 0x100&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xc 0x1 0xf 0x1 0x10 0x1 0x11 0x1 0x12&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;fclk0&amp;quot;, &amp;quot;fclk1&amp;quot;, &amp;quot;fclk2&amp;quot;, &amp;quot;fclk3&amp;quot;;&lt;br /&gt;
			syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			linux,phandle = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		efuse@f800d000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-efuse&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf800d000 0x20&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8f00200 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-global-timer&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f00200 0x20&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x1 0xb 0x301&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8001000 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0xa 0x4 0x0 0xb 0x4 0x0 0xc 0x4&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,ttc&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x6&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8001000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8002000 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x25 0x4 0x0 0x26 0x4 0x0 0x27 0x4&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,ttc&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x6&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8002000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8f00600 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x1 0xd 0x301&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-twd-timer&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f00600 0x20&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		usb@e0002000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-usb-2.20a&amp;quot;, &amp;quot;chipidea,usb2&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1c&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x15 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0002000 0x1000&amp;gt;;&lt;br /&gt;
			phy_type = &amp;quot;ulpi&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		usb@e0003000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-usb-2.20a&amp;quot;, &amp;quot;chipidea,usb2&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1d&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2c 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0003000 0x1000&amp;gt;;&lt;br /&gt;
			phy_type = &amp;quot;ulpi&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		watchdog@f8005000 {&lt;br /&gt;
			clocks = &amp;lt;0x1 0x2d&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,wdt-r1p2&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x9 0x1&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8005000 0x1000&amp;gt;;&lt;br /&gt;
			timeout-sec = &amp;lt;0xa&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	chosen {&lt;br /&gt;
		bootargs = &amp;quot;console=ttyPS0,115200 earlyprintk&amp;quot;;&lt;br /&gt;
		stdout-path = &amp;quot;serial0:115200n8&amp;quot;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	aliases {&lt;br /&gt;
		ethernet0 = &amp;quot;/amba/ethernet@e000c000&amp;quot;;&lt;br /&gt;
		serial0 = &amp;quot;/amba/serial@e0000000&amp;quot;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	memory {&lt;br /&gt;
		device_type = &amp;quot;memory&amp;quot;;&lt;br /&gt;
		reg = &amp;lt;0x0 0x10000000&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
{{Конец скрытого блока}}&lt;br /&gt;
&lt;br /&gt;
=== Single On-board eth ===&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth0(с mdio) и выключен eth1.&lt;br /&gt;
&lt;br /&gt;
'''Работает гигабит через type-c! Работает hot plug. Успех.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@0 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dual eth ===&lt;br /&gt;
&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Dual-phys-on-MDIO-EMIO/td-p/737716 интересная статья о дуал eth]&lt;br /&gt;
&lt;br /&gt;
Попытка поднять два физика. '''Пока не работает'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    local-mac-address = [00 0a 35 00 00 00];&lt;br /&gt;
    enet-reset = &amp;lt;&amp;amp;gpio0 47 0&amp;gt;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@0 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x8&amp;gt;; &lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0xa&amp;gt;; &lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;; &lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
        phy1: phy@12 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;12&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x8&amp;gt;; &lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0xa&amp;gt;; &lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;; &lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gem1{&lt;br /&gt;
    local-mac-address = [00 0a 35 00 00 01];&lt;br /&gt;
    enet-reset = &amp;lt;&amp;amp;gpio0 47 0&amp;gt;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy1&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Oryx ===&lt;br /&gt;
&lt;br /&gt;
Итоговый system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
Меняем номера uart, чтобы системным был ttyPS1, а пользовательским ttyPS0&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
/ {&lt;br /&gt;
    aliases {&lt;br /&gt;
        serial0 = &amp;amp;uart0;&lt;br /&gt;
        serial1 = &amp;amp;uart1;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@1 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
            rxc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            rxdv-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            txc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            txen-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;1&amp;gt;;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/ {&lt;br /&gt;
    chosen {&lt;br /&gt;
            bootargs = &amp;quot;console=ttyPS1,115200 earlyprintk uio_pdrv_genirq.of_id=generic-uio&amp;quot;;&lt;br /&gt;
            stdout-path = &amp;quot;serial1:115200n8&amp;quot;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    hififo: hififo@40000000 {&lt;br /&gt;
            compatible = &amp;quot;generic-uio&amp;quot;;&lt;br /&gt;
            interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
            interrupts = &amp;lt;0 29 1&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;0x40000000 0x1000 0x18000000 0x8000000&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;uart0{&lt;br /&gt;
    port-number = &amp;lt;0&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;uart1{&lt;br /&gt;
    port-number = &amp;lt;1&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth0(с mdio) и выключен eth1.&lt;br /&gt;
Pullup пока что все включены&lt;br /&gt;
&lt;br /&gt;
[https://github.com/Xilinx/u-boot-xlnx/blob/master/doc/device-tree-bindings/net/micrel-ksz90x1.txt статья в помощь]&lt;br /&gt;
&lt;br /&gt;
'''Работает'''&lt;br /&gt;
&lt;br /&gt;
На новых платах(с отпаянными линиями линиями eth):&lt;br /&gt;
* на полноценных проводах с ходу&lt;br /&gt;
* на обкусанных проводах только если выставить 10 в ethtool&lt;br /&gt;
&lt;br /&gt;
На старых платах:&lt;br /&gt;
&lt;br /&gt;
* на полноценных проводах только если выставить 100 в ethtool&lt;br /&gt;
* на обкусанных проводах только если выставить 10 в ethtool&lt;br /&gt;
&lt;br /&gt;
Везде работает так:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ethtool -s eth0 speed 10 duplex full autoneg on&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Спидометр показывает 2,5МБ/с, т.е. 20Мбит/с!&lt;br /&gt;
&lt;br /&gt;
Можно в custom_itit.sh прописать:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ifdown eth0&lt;br /&gt;
ethtool -s eth0 speed 10 duplex full autoneg on&lt;br /&gt;
ifup eth0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@1 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
            rxc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            rxdv-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            txc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            txen-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;1&amp;gt;;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В принципе, работает сеть на новой плате с нормальным кабелем без модификации devicetree. Остальные комбинации плат-кабелей надо проверять&lt;br /&gt;
&lt;br /&gt;
== i2c ==&lt;br /&gt;
&lt;br /&gt;
В rootfs включаем&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages -&amp;gt;&lt;br /&gt;
     base -&amp;gt;&lt;br /&gt;
          i2c-tools -&amp;gt;&lt;br /&gt;
               [*] i2c-tools&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для поиска устройств можно написать&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i2cdetect -y -r 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842160/Cadence+I2C+Driver Статья] по i2c и RTC&lt;br /&gt;
&lt;br /&gt;
== QSPI Flash ==&lt;br /&gt;
&lt;br /&gt;
для работы по флешь памяти как в ките (S25FL128S) - оставляем в дев.три родные compatible = &amp;quot;n25q512a&amp;quot;,&amp;quot;micron,m25p80&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
== SWDT System Watchdog Timer==&lt;br /&gt;
&lt;br /&gt;
* Модифицируем device-tree&lt;br /&gt;
&lt;br /&gt;
Вставляем в девайс три:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;watchdog0 {&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    reset-on-timeout;&lt;br /&gt;
    timeout-sec = &amp;lt;60&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RTC ==&lt;br /&gt;
&lt;br /&gt;
* Включаем в ядро подходящий драйвер&lt;br /&gt;
&lt;br /&gt;
* Модифицируем device-tree&lt;br /&gt;
&lt;br /&gt;
Вставляем в девайс три:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    i2c0: i2c@e0004000 {&lt;br /&gt;
        clock-frequency = &amp;lt;0xC350&amp;gt;;&lt;br /&gt;
        rtc@51 {&lt;br /&gt;
                compatible = &amp;quot;nxp,pcf85363&amp;quot;;&lt;br /&gt;
                reg = &amp;lt;0x51&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
    i2c1: i2c@e0005000 {&lt;br /&gt;
        clock-frequency = &amp;lt;0xC350&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Будет выглядеть так:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i2c@e0004000 {&lt;br /&gt;
    compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    clocks = &amp;lt;0x1 0x26&amp;gt;;&lt;br /&gt;
    interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
    interrupts = &amp;lt;0x0 0x19 0x4&amp;gt;;&lt;br /&gt;
    reg = &amp;lt;0xe0004000 0x1000&amp;gt;;&lt;br /&gt;
    #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
    #size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
    clock-frequency = &amp;lt;0xc350&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    rtc@51 {&lt;br /&gt;
        compatible = &amp;quot;nxp,pcf85363&amp;quot;;&lt;br /&gt;
        reg = &amp;lt;0x51&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
i2c@e0005000 {&lt;br /&gt;
    compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    clocks = &amp;lt;0x1 0x27&amp;gt;;&lt;br /&gt;
    interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
    interrupts = &amp;lt;0x0 0x30 0x4&amp;gt;;&lt;br /&gt;
    reg = &amp;lt;0xe0005000 0x1000&amp;gt;;&lt;br /&gt;
    #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
    #size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
    clock-frequency = &amp;lt;0xc350&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если готового драйвера нет:&lt;br /&gt;
&lt;br /&gt;
UG1144 pg.54&lt;br /&gt;
&lt;br /&gt;
Создаем новый модуль&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-create -t modules --name &amp;lt;name_module&amp;gt; --enable&lt;br /&gt;
petalinux-create -t modules --name rtc-pcf85363 --enable&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим исходный код в project-spec/meta-user/recipes-modules/rtc-pcf85363/files&lt;br /&gt;
&lt;br /&gt;
Исправленный драйвер лежит в git Clonicus\linux\&lt;br /&gt;
&lt;br /&gt;
Для удаления модуля:&lt;br /&gt;
&lt;br /&gt;
* удаляем папку из project-spec/meta-user/recipes-modules&lt;br /&gt;
&lt;br /&gt;
* В файле project-spec/meta-user/recipes-core/images/petalinux-image.bbappend удаляем соответствующую строку&lt;br /&gt;
&lt;br /&gt;
* переоткрыть petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
Пробуем собрать модуль&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build -c &amp;lt;name_module&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если ОК, собираем (собирать модуль необязательно, petalinux-build его соберет)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И перепаковываем BOOT.bin&lt;br /&gt;
&lt;br /&gt;
Пересобираем deveice-tree с указанием нового драйвера (petalinux-build соберет сам deveice-tree)&lt;br /&gt;
&lt;br /&gt;
просмотр модулей&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsmod&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
загрузить драйвер можно&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
insmod /lib/modules/4.9.0-xilinx-v2017.4/extra/rtc-pcf85363.ko&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
или&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe rtc-pcf85363&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Если все ок и в девайс три прописан правильный драйвер для устройства, то модуль будет загружен сам'''&lt;br /&gt;
&lt;br /&gt;
Прошиваем .bit (для клоникуса нужен бит для работы PL-i2c). После этого можно пользоваться RTC&lt;br /&gt;
&lt;br /&gt;
Чтение времени из rtc если этот rtc не дефолтный (у нас rtc2)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -r -f /dev/rtc2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Синхронизация rtc по системному времени&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -w -f /dev/rtc2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим custom_init.sh для изменения default-rtc на наше устройство&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm /dev/rtc&lt;br /&gt;
ln -s /dev/rtc2 /dev/rtc&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Установка системного времени&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
date --set &amp;quot;2013-7-31 09:30&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запись системного времени в RTC&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -w&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запись времени RTC в системное время&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -s&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Получить время с интеренета&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rdate -s &amp;lt;IP address of time server&amp;gt;&lt;br /&gt;
rdate -s 132.163.96.5 (example)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При перезагрузке &amp;quot;reboot&amp;quot; система автоматически запишет системное время в RTC&lt;br /&gt;
&lt;br /&gt;
== FPGA CONFIG from Uboot ==&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы прошить PL из uboot используем команду:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
fpga loadb 0 &amp;lt;ddr_file_addr&amp;gt; &amp;lt;file_size&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
либо скриптами:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
load_bit=fatload mmc 0 0x100000 clonicus.bit // читаем файл в ddr&lt;br /&gt;
pl_load=fpga loadb 0 0x100000 0x1400000 // прошиваем PL&lt;br /&gt;
fpga_config=run load_bit &amp;amp;&amp;amp; run pl_loadipaddr // вызов самих скриптов&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
0x10_0000 - начальный адрес ddr&lt;br /&gt;
&lt;br /&gt;
0x1_400_000 - размер в байтах для 20МБайт - указываем размер битника с запасом. Теоретически может так не работать, но работает&lt;br /&gt;
&lt;br /&gt;
== ETH over TTY==&lt;br /&gt;
&lt;br /&gt;
В ядре включаем: slip, Universal TUN/TAP&lt;br /&gt;
&lt;br /&gt;
В rootfs включаем net-tools&lt;br /&gt;
&lt;br /&gt;
Включаем iptables для перемршрутизации между подсетями и для него:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[*] Networking support  ---&amp;gt;                                          [CONFIG_NET]&lt;br /&gt;
      Networking Options  ---&amp;gt;&lt;br /&gt;
        [*] Network packet filtering framework (Netfilter) ---&amp;gt;       [CONFIG_NETFILTER]&lt;br /&gt;
          [*] Advanced netfilter configuration                        [CONFIG_NETFILTER_ADVANCED]&lt;br /&gt;
          Core Netfilter Configuration ---&amp;gt;&lt;br /&gt;
            &amp;lt;*/M&amp;gt; Netfilter connection tracking support               [CONFIG_NF_CONNTRACK]&lt;br /&gt;
            &amp;lt;*/M&amp;gt; Netfilter Xtables support (required for ip_tables)  [CONFIG_NETFILTER_XTABLES]&lt;br /&gt;
            &amp;lt;*/M&amp;gt; LOG target support                                  [CONFIG_NETFILTER_XT_TARGET_LOG]&lt;br /&gt;
          IP: Netfilter Configuration ---&amp;gt;&lt;br /&gt;
            &amp;lt;*/M&amp;gt; IP tables support (required for filtering/masq/NAT) [CONFIG_IP_NF_IPTABLES]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PC1:&lt;br /&gt;
&lt;br /&gt;
slattach -L -s 115200 -p slip /dev/ttyPS1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
ifconfig sl0 192.168.1.1/24 up&lt;br /&gt;
&lt;br /&gt;
route add default gw 192.168.1.1 sl0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PC2:&lt;br /&gt;
&lt;br /&gt;
slattach -L -s 115200 -p slip /dev/ttyPS1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
ifconfig sl0 192.168.1.2/24 up&lt;br /&gt;
&lt;br /&gt;
route add default gw 192.168.1.1 sl0&lt;br /&gt;
&lt;br /&gt;
== UART_PL ==&lt;br /&gt;
&lt;br /&gt;
Включаем в настройках ядра поддержку uart_lite, выставляем правильное максимальное число уартов&lt;br /&gt;
&lt;br /&gt;
Модифицируем system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
Обращаем внимание на нумерацию serial, axi_uartlite, она должна не повторяться. То же самое с interrupts &lt;br /&gt;
Указываем верный физический адрес на шине и диапазон адресов в &amp;lt;reg&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
/ {&lt;br /&gt;
    aliases {&lt;br /&gt;
            serial2 = &amp;amp;axi_uartlite_0;&lt;br /&gt;
            serial3 = &amp;amp;axi_uartlite_1;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
/ {&lt;br /&gt;
    amba_pl {&lt;br /&gt;
        #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
        compatible = &amp;quot;simple-bus&amp;quot;;&lt;br /&gt;
        ranges;&lt;br /&gt;
        &lt;br /&gt;
        axi_uartlite_0: serial@80000008 {&lt;br /&gt;
                clock-names = &amp;quot;ref_clk&amp;quot;;&lt;br /&gt;
                clocks = &amp;lt;&amp;amp;clkc 0&amp;gt;;&lt;br /&gt;
                compatible = &amp;quot;xlnx,xps-uartlite-1.00.a&amp;quot;;&lt;br /&gt;
                current-speed = &amp;lt;115200&amp;gt;;&lt;br /&gt;
                device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
                interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                interrupts = &amp;lt;0 30 1&amp;gt;;&lt;br /&gt;
                port-number = &amp;lt;3&amp;gt;;&lt;br /&gt;
                reg = &amp;lt;0x80000008 0x10&amp;gt;;&lt;br /&gt;
                xlnx,baudrate = &amp;lt;0x1c200&amp;gt;;&lt;br /&gt;
                xlnx,data-bits = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
                xlnx,odd-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
                xlnx,s-axi-aclk-freq-hz-d = &amp;quot;100.0&amp;quot;;&lt;br /&gt;
                xlnx,use-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
        axi_uartlite_1: serial@8000001C {&lt;br /&gt;
                clock-names = &amp;quot;ref_clk&amp;quot;;&lt;br /&gt;
                clocks = &amp;lt;&amp;amp;clkc 0&amp;gt;;&lt;br /&gt;
                compatible = &amp;quot;xlnx,xps-uartlite-1.00.a&amp;quot;;&lt;br /&gt;
                current-speed = &amp;lt;115200&amp;gt;;&lt;br /&gt;
                device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
                interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                interrupts = &amp;lt;0 31 1&amp;gt;;&lt;br /&gt;
                port-number = &amp;lt;4&amp;gt;;&lt;br /&gt;
                reg = &amp;lt;0x8000001C 0x10&amp;gt;;&lt;br /&gt;
                xlnx,baudrate = &amp;lt;0x1c200&amp;gt;;&lt;br /&gt;
                xlnx,data-bits = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
                xlnx,odd-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
                xlnx,s-axi-aclk-freq-hz-d = &amp;quot;100.0&amp;quot;;&lt;br /&gt;
                xlnx,use-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если ПЛИС не прошита - будет кернел паник&lt;br /&gt;
&lt;br /&gt;
== IRQ ==&lt;br /&gt;
&lt;br /&gt;
Для поддержки irq добавляем в device-tree&lt;br /&gt;
&lt;br /&gt;
'''Важно - мы перетираем bootargs!'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/ {&lt;br /&gt;
    chosen {&lt;br /&gt;
            bootargs = &amp;quot;console=ttyPS0,115200 earlyprintk uio_pdrv_genirq.of_id=generic-uio&amp;quot;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    hififo: hififo@40000000 {&lt;br /&gt;
                    compatible = &amp;quot;generic-uio&amp;quot;;&lt;br /&gt;
                    interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                    interrupts = &amp;lt;0 29 1&amp;gt;;&lt;br /&gt;
                    reg = &amp;lt;0x40000000 0x1000 0x18000000 0x8000000&amp;gt;;&lt;br /&gt;
            };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
&lt;br /&gt;
Запустил на Z706&lt;br /&gt;
&lt;br /&gt;
[http://www.wiki.xilinx.com/Zynq+Linux+USB+Device+Driver во-первых]&lt;br /&gt;
[http://zedboard.org/content/using-petalinux-configure-zedboard%EF%BC%8C-usb-otg-can-not-work во-вторых]&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-2016-3-zynq-7010-USB-not-working/td-p/737696 в-третьих]&lt;br /&gt;
&lt;br /&gt;
В дефолтных настройках ядра petalinux_2018.1 все было включено&lt;br /&gt;
&lt;br /&gt;
включаем ресет на MIO7 pullup disabled&lt;br /&gt;
&lt;br /&gt;
все ноги интерфейса ulpi pullup disabled&lt;br /&gt;
&lt;br /&gt;
Содержимое system-user.dtsi&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
	/{&lt;br /&gt;
&lt;br /&gt;
    usb_phy0:phy0 {&lt;br /&gt;
&lt;br /&gt;
        compatible=&amp;quot;ulpi-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        #phy-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       reg = &amp;lt;0xe0002000 0x1000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       view-port=&amp;lt;0x170&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       drv-vbus;&lt;br /&gt;
&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&amp;amp;usb0 {&lt;br /&gt;
&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        dr_mode = &amp;quot;host&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        usb-phy = &amp;lt;&amp;amp;usb_phy0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
} ;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== USB-ETHERNET ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers -&amp;gt;&lt;br /&gt;
     USB support -&amp;gt;&lt;br /&gt;
          [*] USB Modem (CDC ACM)&lt;br /&gt;
          USB Gadget Support -&amp;gt;&lt;br /&gt;
               [*] Ethernet Control Model (all)&lt;br /&gt;
               [*] RNDIS&lt;br /&gt;
               [*] Ethernet Emulation Model&lt;br /&gt;
               [*] CDC Composite Device (Ethernet and ACM)&lt;br /&gt;
               [*] USB Gadget Drivers (Ethernet gadget...)&lt;br /&gt;
     Network device support -&amp;gt;&lt;br /&gt;
          USB Network Adapters -&amp;gt;&lt;br /&gt;
               [*] Realtek RTL8152/RTL8153&lt;br /&gt;
               [*] Multi-purpose USB Networking Framework&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WiFi Dongle ==&lt;br /&gt;
&lt;br /&gt;
[https://forum.trenz-electronic.de/index.php?topic=747.0 раз]&lt;br /&gt;
[https://github.com/jinchenglee/zybo_linux_setup_doc два]&lt;br /&gt;
[http://billauer.co.il/blog/2014/06/linux-realtek-hostapd/ три]&lt;br /&gt;
&lt;br /&gt;
Творим:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Networking support -&amp;gt;&lt;br /&gt;
     Wireless -&amp;gt;&lt;br /&gt;
          [*] cfg80211&lt;br /&gt;
          [*] Generic IEEE 802.11 ... (mac80211)&lt;br /&gt;
Device Drivers -&amp;gt;&lt;br /&gt;
     Network device support -&amp;gt;&lt;br /&gt;
          Wireless LAN -&amp;gt;&lt;br /&gt;
               Realtek rtlwifi family of devices -&amp;gt;&lt;br /&gt;
                    [*] Realtek ..../RTL8188CE Wireless Network Adapter ???&lt;br /&gt;
                    [*] Realtek RTL8188EE Wireless Network Adapter ???&lt;br /&gt;
                    [*] Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter&lt;br /&gt;
     Staging drivers -&amp;gt;&lt;br /&gt;
          [*] Realtek RTL8188EU wireless LAN MIC driver&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
rootfs&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem packages -&amp;gt;&lt;br /&gt;
     network -&amp;gt;&lt;br /&gt;
          wpa-supplicant -&amp;gt;&lt;br /&gt;
               [*] wpa-supplicant&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/lwfinger/rtl8188eu/blob/master/rtl8188eufw.bin качаем файл]&lt;br /&gt;
&lt;br /&gt;
Модификаци инит-скрипта&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp /run/media/mmcblk0p1/wpa_supplicant.conf /etc/&lt;br /&gt;
&lt;br /&gt;
mkdir /lib/firmware/&lt;br /&gt;
mkdir /lib/firmware/rtlwifi/&lt;br /&gt;
cp /run/media/mmcblk0p1/rtl8188eufw.bin /lib/firmware/rtlwifi/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WiFi ESP ==&lt;br /&gt;
&lt;br /&gt;
[http://www.wiki.xilinx.com/Zynq+SDIO+Wifi Xilinx SDIP WiFi]&lt;br /&gt;
&lt;br /&gt;
[http://zedboard.org/content/sdio-wifi-driver-ar6103-problem Zedboard раз]&lt;br /&gt;
&lt;br /&gt;
[https://stackoverflow.com/questions/32129689/how-to-bind-sdio1-with-wi-fi-linux два]&lt;br /&gt;
&lt;br /&gt;
[http://picozed.org/content/steps-get-wlink8-working-using-petalinux-picozed picozed три]&lt;br /&gt;
&lt;br /&gt;
[http://zedboard.org/content/adding-wi-fi-and-bluetooth-connectivity-zedboard-using-murata-1dx-pmod zedboard четыре]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Оживление 2-го ядра ==&lt;br /&gt;
&lt;br /&gt;
* Находим /home/ivan/clonicus_1.2.3/build/tmp/work-shared/plnx_arm/kernel-source/arch/arm/mach-zynq/efuse.c&lt;br /&gt;
* В функции zynq_efuse_cpu_state делаем сразу ретурн тру&lt;br /&gt;
* Че-нибудь меняем в настройках ядра для пересборки&lt;br /&gt;
* Выполняем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build -c kernel -x compile -f&lt;br /&gt;
petalinux-build -c kernel -x deploy -f&lt;br /&gt;
petalinux-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Забираем image.ub&lt;br /&gt;
&lt;br /&gt;
ИЛИ&lt;br /&gt;
&lt;br /&gt;
Правим device-tree, заменяем адрес efuse на 0xf800cff0&lt;br /&gt;
&lt;br /&gt;
== webserver == &lt;br /&gt;
&lt;br /&gt;
* [https://github.com/emlid/ReachView Репозиторий emlid ReachView] (bnd на py/Flask, fnd на html/Ajax/js/Bootstrap)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Backend:'''&lt;br /&gt;
&lt;br /&gt;
* [http://svenand.blogdrives.com/archive/195.html#.XPTYt4gzaUk Источник по busybox-httpd]&lt;br /&gt;
&lt;br /&gt;
* [https://www.afternerd.com/blog/python-http-server/ Гайд по python server]&lt;br /&gt;
&lt;br /&gt;
* [https://ru.wikibooks.org/wiki/Flask Викиучебник по Flask]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/193242/ ХаброГайд по python/Flask]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Frontend:'''&lt;br /&gt;
&lt;br /&gt;
* [https://unminify.com/ unminify CSS]&lt;br /&gt;
&lt;br /&gt;
* [https://getbootstrap.com/docs/4.3/getting-started/introduction/ Bootstrap EN getting started]&lt;br /&gt;
&lt;br /&gt;
* [https://bootstrap-4.ru/ Bootstrap RU]&lt;br /&gt;
&lt;br /&gt;
* [http://htmlbook.ru/samhtml/tekst/spetssimvoly Справочник по операторам и тегам HTML/CSS]&lt;br /&gt;
&lt;br /&gt;
* [https://www.w3schools.com/howto/default.asp Сборник шаблонов CSS W3schools]&lt;br /&gt;
&lt;br /&gt;
* [https://www.w3schools.com/w3css/w3css_tabulators.asp Анимированный сайдбар/табы]&lt;br /&gt;
&lt;br /&gt;
* [https://css-tricks.com/ CSS Tricks]&lt;br /&gt;
&lt;br /&gt;
* [https://www.cssmatic.com/ Онлайн тени/границы/градиент блоков]&lt;br /&gt;
&lt;br /&gt;
* [https://internetingishard.com/html-and-css/semantic-html/ Semantic HTML grid layout]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/202408/ Хаброгайд(ч1) по верстке]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/211032/ ХаброГайд(ч2) по Bootstrap]&lt;br /&gt;
&lt;br /&gt;
* [https://fontawesome.com/icons?d=gallery Fontawesome ICONS open lib]&lt;br /&gt;
&lt;br /&gt;
:* [https://htmlacademy.ru/courses/43/run/1 Нормальный онлайн HTML/CSS/JS editor]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== busybox httpd ===&lt;br /&gt;
В petalinux многие пакеты скукожены до их минимальных вариантов и встроены в общий пакет busybox. &lt;br /&gt;
В busybox есть также и вебсервер busybox-httpd.&lt;br /&gt;
Для использования нужно на этапе настройки файловой системы его включить:&lt;br /&gt;
&lt;br /&gt;
 $ petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
Конфиг: &lt;br /&gt;
 base -&amp;gt;&lt;br /&gt;
     busybox -&amp;gt;&lt;br /&gt;
          [*] busybox&lt;br /&gt;
          [*] busybox-httpd&lt;br /&gt;
          [ ] busybox-hwclock&lt;br /&gt;
          [*] busybox-inetd&lt;br /&gt;
          [*] busybox-mdev&lt;br /&gt;
          [ ] busybox-syslog &lt;br /&gt;
          [*] busybox-udhcpc &lt;br /&gt;
          [ ] busybox-udhcpd &lt;br /&gt;
&lt;br /&gt;
Сам httpd будет в '''/usr/sbin'''.&lt;br /&gt;
Рабочая папка по умолчанию в '''/srv/www/'''. Если в нее кидать файлы, то именно из нее будет отображаться контент в браузере. Папку можно изменить, перезапустив httpd с ключом -h &amp;lt;workdir&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Порт по умолчанию 80. Работает, как демон в /etc/init.d/, вкл-выкл оттуда же.&lt;br /&gt;
&lt;br /&gt;
Если положить в /srv/www/ файл index.html с неким кодом, то в браузере отобразится вебморда. Картинки работают по ссылкам.&lt;br /&gt;
&lt;br /&gt;
'''index.html'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Transitional//EN&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;clonicus'112 webserver&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h3&amp;gt;Hello, World!&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Web server is now up!&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;https://i.redd.it/oagz5eobkkt11.jpg&amp;quot; width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;http://www.srns.ru&amp;quot;&amp;gt;For more information see SRNS.ru&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== python в petalinux ===&lt;br /&gt;
В petalinux 2017.4 есть 2 питона - 2.7 и 3.5.&lt;br /&gt;
&lt;br /&gt;
 $ petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
'''python2.7'''&lt;br /&gt;
  Filesystem Packages-&amp;gt;&lt;br /&gt;
     devel-&amp;gt;&lt;br /&gt;
         python-&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''python3.5'''&lt;br /&gt;
  Filesystem Packages-&amp;gt;&lt;br /&gt;
     misc-&amp;gt;&lt;br /&gt;
         python3-*&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модуль runpy.py для запуска команд вида 'python -m &amp;lt;module&amp;gt;' находится в python -&amp;gt; python-misc. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SimpleHTTPServer.py ===&lt;br /&gt;
Для первого теста поднимем встроенный в python2.7 минисервер SimpleHTTPServer.py в /usr/lib/python2.7. &lt;br /&gt;
&lt;br /&gt;
Для его запуска напишем скрипт&lt;br /&gt;
&lt;br /&gt;
'''webserver.py''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import SimpleHTTPServer &lt;br /&gt;
import SocketServer &lt;br /&gt;
 &lt;br /&gt;
PORT = 80 &lt;br /&gt;
 &lt;br /&gt;
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler &lt;br /&gt;
 &lt;br /&gt;
httpd = SocketServer.TCPServer((&amp;quot;&amp;quot;, PORT), Handler) &lt;br /&gt;
 &lt;br /&gt;
print &amp;quot;serving at port&amp;quot;, PORT &lt;br /&gt;
httpd.serve_forever()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 $ python webserver.py &lt;br /&gt;
&lt;br /&gt;
При наличии в папке со скриптом файла index.html сервер поднимется автоматически.&lt;br /&gt;
&lt;br /&gt;
=== Добавление слоев в сборку ===&lt;br /&gt;
&lt;br /&gt;
[https://www.srns.ru/wiki/Blog:DneprovD/18.07.2019_Yocto_layers Переехало в статью]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:HOWTO]]&lt;br /&gt;
[[Категория:Oryx]]&lt;br /&gt;
[[Категория:Zynq]]&lt;br /&gt;
[[Категория:EmbeddedLinux]]&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
&lt;br /&gt;
{{wl-publish: 2018-05-16 10:06:30 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/16.05.2018_PetaLinux</id>
		<title>Blog:Lipa/16.05.2018 PetaLinux</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/16.05.2018_PetaLinux"/>
				<updated>2021-03-16T08:03:01Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* Оживление 2-го ядра */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Petalinux.png|400px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сборка PetaLinux для кастомной железки&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма2}}&lt;br /&gt;
&lt;br /&gt;
== Требования ==&lt;br /&gt;
&lt;br /&gt;
Vivado 2018.1 (для single-gigabit ethernet можно более ранние версии)&lt;br /&gt;
&lt;br /&gt;
Начиная с petalinux_2018.1 отсутствует devcfg. Необходимо использовать FPGA manager. Технология нами пока не освоена&lt;br /&gt;
&lt;br /&gt;
Необходима Ubuntu-16.04&lt;br /&gt;
&lt;br /&gt;
Требуется поставить ряд пакетов, полный список приведен в документе [https://www.xilinx.com/support/documentation/sw_manuals/xilinx2019_1/ug1144-petalinux-tools-reference-guide.pdf#page=9 UG1144]&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PetaLinux в систему. Дистрибутив есть на [https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/2018-1.html Xilinx], либо у меня на компьютере. '''Ставить PetaLinux необходимо БЕЗ прав суперюзера!'''&lt;br /&gt;
&lt;br /&gt;
кидаем в /components/yocto/ sstate-rel-v2017.4.tar.gz&lt;br /&gt;
&lt;br /&gt;
Подготовка завершена&lt;br /&gt;
&lt;br /&gt;
== Правка Vivado ==&lt;br /&gt;
&lt;br /&gt;
Для поддержки MDIO в Vivado 17.1-17.4 нужен [https://www.xilinx.com/support/answers/69132.html патч]. Ставим!&lt;br /&gt;
&lt;br /&gt;
'''Не помогло.''' Ставим 2018.1&lt;br /&gt;
&lt;br /&gt;
== Сборка ==&lt;br /&gt;
&lt;br /&gt;
Пошаговое руководство по сборке содержится в документе UG1156&lt;br /&gt;
&lt;br /&gt;
В консоли пишем source/[путь к петалинух]/settings.sh&lt;br /&gt;
&lt;br /&gt;
Выполняем шаги из UG1156 по главе 5:&lt;br /&gt;
&lt;br /&gt;
* экспортируем из Vivado .hdf (в блок дизайн File-&amp;gt;Export-&amp;gt;Export Hardware)&lt;br /&gt;
&lt;br /&gt;
* создаем проект PetaLinux&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-create --type project --template zynq --name &amp;lt;PROJECT&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* переходим в папку с текущим проектом&lt;br /&gt;
&lt;br /&gt;
* подключаем файл .hdf&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config --get-hw-description=[путь к папке с файлом .hdf]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* перед сборкой системы необходимо выполнить '''все''' команды конфигурации в данной последовательности:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&lt;br /&gt;
$ petalinux-config -c kernel&lt;br /&gt;
&lt;br /&gt;
$ petalinux-config -c rootfs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config ===&lt;br /&gt;
&lt;br /&gt;
Если хотим спользовать внешний файл device-tree включаем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Subsystem AUTO Hardware Settings-&amp;gt;&lt;br /&gt;
     Advances bootable images storage settings-&amp;gt;&lt;br /&gt;
          dtb image settings-&amp;gt;&lt;br /&gt;
               image storage media&lt;br /&gt;
                    primary sd&lt;br /&gt;
               &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Необходимо править netboot offset если оперативной памяти менее ~256МБ&lt;br /&gt;
&lt;br /&gt;
Для клоникуса с 256МБ ставим 8'000'000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
u-boot Configuration-&amp;gt;&lt;br /&gt;
     netboot offset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выставляем точку начала распаковки образа системы&lt;br /&gt;
&lt;br /&gt;
Выключаем копирование образа по sftp (Image Packaging Configuration -&amp;gt; Copy final images)&lt;br /&gt;
&lt;br /&gt;
Отключаем интернет-sstate (Yocto Settings -&amp;gt; Enable Network sstate feeds)&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config -c kernel===&lt;br /&gt;
&lt;br /&gt;
* Подключаем в ядре поддержку физика и его дров.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config -c kernel&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''для oryx:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers-&amp;gt;&lt;br /&gt;
     [*]Network device support -&amp;gt;&lt;br /&gt;
          [*]Ethernet driver support -&amp;gt;&lt;br /&gt;
               [*] Micrel devices&lt;br /&gt;
          [*] PHY Device support and infastructure --&amp;gt;&lt;br /&gt;
               [*] Drivers for Micrel PHYs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''для clonicus:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers-&amp;gt;&lt;br /&gt;
     [*]Network device support -&amp;gt;&lt;br /&gt;
          [*] PHY Device support and infastructure --&amp;gt;&lt;br /&gt;
               [*] Texas Instruments DP83867 Gigabit PHY&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config -c rootfs ===&lt;br /&gt;
&lt;br /&gt;
Подключаем при необходимости ethtool, gdbserver(просто gdb не заработал), libstdc, libgcc, glib2.0, glibc(glibc &amp;amp; ltd)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages-&amp;gt;&lt;br /&gt;
     misc -&amp;gt;&lt;br /&gt;
          gcc-runtime -&amp;gt;&lt;br /&gt;
               [*] libstdc ++&lt;br /&gt;
          gdb --&amp;gt;&lt;br /&gt;
               [*] gdb&lt;br /&gt;
          glib-2.0&lt;br /&gt;
               [*] glib-2.0&lt;br /&gt;
          glibc&lt;br /&gt;
               [*] glibc&lt;br /&gt;
               [*] ldd&lt;br /&gt;
     devel -&amp;gt;&lt;br /&gt;
          python -&amp;gt;&lt;br /&gt;
               python -&amp;gt;&lt;br /&gt;
                    [*] python&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Опционально:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages-&amp;gt;&lt;br /&gt;
     base -&amp;gt;&lt;br /&gt;
          i2c-tools -&amp;gt;&lt;br /&gt;
               [*] i2c-tools&lt;br /&gt;
          usbutils -&amp;gt;&lt;br /&gt;
               [*] usbutils&lt;br /&gt;
     console -&amp;gt;&lt;br /&gt;
          network -&amp;gt;&lt;br /&gt;
               ethtool -&amp;gt;&lt;br /&gt;
                    [*] ethtool // необходимо для oryx! для перенастройки autonegotiation&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Можно еще подключать дебаг i2c&lt;br /&gt;
&lt;br /&gt;
'''Необходимо убедиться, что  образ может распаковаться в размер оперативы'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Если будут проблемы, то надо будет править netboot offset&lt;br /&gt;
&lt;br /&gt;
=== device tree ===&lt;br /&gt;
&lt;br /&gt;
Если необходимо внести изменения в device tree, то смотрим конец статьи&lt;br /&gt;
&lt;br /&gt;
[https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841676/U-Boot+Flattened+Device+Tree Интересная статья по правке devicetree из uboot]&lt;br /&gt;
&lt;br /&gt;
=== Сборка проекта ===&lt;br /&gt;
&lt;br /&gt;
* далее (сборка идет 30-60 минут)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build&lt;br /&gt;
&lt;br /&gt;
cd /images/linux/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* делаем boot.bin в папке /images/linux/&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --u-boot --force&lt;br /&gt;
&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --fpga name.bit --u-boot --force&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --fpga name.bit --u-boot --kernel --force&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* записываем в загрузочную область флешки файлы boot.bin и image.ub&lt;br /&gt;
&lt;br /&gt;
== Всякое ==&lt;br /&gt;
&lt;br /&gt;
Если мало памяти как у нас - возможна ошибка image is not a fdt [https://forums.xilinx.com/t5/Embedded-Processor-System-Design/Petalinux-problem-on-custom-board-quot-image-is-not-a-fdt-quot/td-p/754892 ссылка]&lt;br /&gt;
&lt;br /&gt;
Необходимо править netboot offset&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
u-boot Configuration-&amp;gt;&lt;br /&gt;
     netboot offset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Можно вручную загрузиться из u-boot'а.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ fatload mmc 0 0xA000000 image.ub&lt;br /&gt;
$ bootm 0xA000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
либо&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ fatload mmc 0 0xA000000 image.ub&lt;br /&gt;
$ fatload mmc 0 0x9000000 system.dtb&lt;br /&gt;
$ bootm 0xA000000 0xA000000 0x9000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Можно поварьировать адрес&lt;br /&gt;
&lt;br /&gt;
------------&lt;br /&gt;
&lt;br /&gt;
Проверка статуса прошитости FPGA&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat /sys/class/xdevcfg/xdevcfg/device/prog_done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Uboot==&lt;br /&gt;
&lt;br /&gt;
Для внесения правок в загрузку линукса используем список команд '''env'''&lt;br /&gt;
&lt;br /&gt;
Просмотр текущих команд '''printenv'''&lt;br /&gt;
&lt;br /&gt;
Сброс настроек в дефолт '''env default -a'''&lt;br /&gt;
&lt;br /&gt;
Создать переменную '''env set &amp;lt;имя&amp;gt; &amp;lt;значение&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Правка переменной '''env edit &amp;lt;имя переменной&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Для каждой платы делаем следующее:&lt;br /&gt;
&lt;br /&gt;
* Берем [[Файл:uboot.env.c]]&lt;br /&gt;
&lt;br /&gt;
* Удаляем в конце имени &amp;quot;.c&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Записываем на флешку рядом с образом линукса&lt;br /&gt;
&lt;br /&gt;
* Запускаем плату и прерываем autoboot&lt;br /&gt;
&lt;br /&gt;
* Пишем '''editenv ethaddr'''&lt;br /&gt;
&lt;br /&gt;
* Редактируем MAC-адрес&lt;br /&gt;
&lt;br /&gt;
* Пишем '''saveenv'''&lt;br /&gt;
&lt;br /&gt;
* Все! можем ребутать '''reset'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Сохранить в файл '''saveenv'''&lt;br /&gt;
&lt;br /&gt;
==Автозапуск приложений==&lt;br /&gt;
&lt;br /&gt;
Во-первых [https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-Runnning-a-script-file-at-startup/td-p/689051 тыц]&lt;br /&gt;
&lt;br /&gt;
Далее пишем&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-create -t apps --template install -n myapp-init --enable&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим файл /project-spec/meta-user/recipes-apps/myapp-init/myapp-init.bb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file is the myapp-init recipe.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
SUMMARY = &amp;quot;Simple myapp-init application&amp;quot;&lt;br /&gt;
SECTION = &amp;quot;PETALINUX/apps&amp;quot;&lt;br /&gt;
LICENSE = &amp;quot;MIT&amp;quot;&lt;br /&gt;
LIC_FILES_CHKSUM = &amp;quot;file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302&amp;quot;&lt;br /&gt;
&lt;br /&gt;
SRC_URI = &amp;quot;file://myapp-init&amp;quot;&lt;br /&gt;
&lt;br /&gt;
S = &amp;quot;${WORKDIR}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILESEXTRAPATHS_prepend := &amp;quot;${THISDIR}/files:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
inherit update-rc.d&lt;br /&gt;
&lt;br /&gt;
INITSCRIPT_NAME = &amp;quot;myapp-init&amp;quot;&lt;br /&gt;
INITSCRIPT_PARAMS = &amp;quot;start 99 S .&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do_install() {&lt;br /&gt;
    install -d ${D}${sysconfdir}/init.d&lt;br /&gt;
    install -m 0755 ${S}/myapp-init ${D}${sysconfdir}/init.d/myapp-init&lt;br /&gt;
}&lt;br /&gt;
FILES_${PN} += &amp;quot;${sysconfdir}/*&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим сам исполняемый скрипт project-spec/meta-user/recipes-apps/myapp-init/files/myapp-init&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Autorun script&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Try run custom_init&amp;quot;&lt;br /&gt;
sh /run/media/mmcblk0p1/custom_init.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Записываем на флешку скрипт custom_init.sh с нужными командами и делаем его исполняемым&lt;br /&gt;
&lt;br /&gt;
Записываем файл interfaces&lt;br /&gt;
&lt;br /&gt;
Скачать архив: [[Файл:Init_interfaces.rar]]&lt;br /&gt;
&lt;br /&gt;
==SSH==&lt;br /&gt;
&lt;br /&gt;
Как победить сохранение ssh-ключей:&lt;br /&gt;
&lt;br /&gt;
Добавляем в init_script следующие строки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir /run/media/mmcblk0p2/.ssh&lt;br /&gt;
ln -s /run/media/mmcblk0p2/.ssh/ /home/root/&lt;br /&gt;
mkdir /run/media/mmcblk0p2/dropbear/&lt;br /&gt;
chmod 400 /run/media/mmcblk0p2/dropbear/&lt;br /&gt;
rm -r /etc/dropbear/&lt;br /&gt;
ln -s /run/media/mmcblk0p2/dropbear/ /etc/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Создается ссылка на флешку, где хранятся авторизованные пользователи&lt;br /&gt;
* Создается папка для хранения секретного ключа платы&lt;br /&gt;
* При запуске платы свежесозданный ключ заменяется тем, что лежит на флешке&lt;br /&gt;
* При первом включении платы будет создан новый ключ&lt;br /&gt;
&lt;br /&gt;
Помимо добавления указанных команд в скрипт ничего больше делать не надо&lt;br /&gt;
&lt;br /&gt;
==Daemon==&lt;br /&gt;
&lt;br /&gt;
Для настройки демона:&lt;br /&gt;
&lt;br /&gt;
* Добавляем строки в файл custom_init.sh&lt;br /&gt;
* Кидаем на загрузочный раздел флешки папку из архива [[:File:daemon.rar]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp -r /run/media/mmcblk0p1/daemon/lsb /lib/&lt;br /&gt;
cp /run/media/mmcblk0p1/daemon/receiver.conf /etc/&lt;br /&gt;
cp /run/media/mmcblk0p1/daemon/receiver /etc/init.d/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serial port на новом линуксе ===&lt;br /&gt;
Выяснилось, что без доп. настройки, в последовательный порт (dev/ttyPS0) после каждой посылки добавляются символы CR и LF. Оказалось, что и RTKLib, и софт Листопада не хотят работать с таким окончанием пакетов.&lt;br /&gt;
&lt;br /&gt;
Выше не совсем так, скорее мысль в том, что каждый символ LF (0x0A) в наших данных меняется на символы CR LF, т.е. (0x0D0A). И тогда, в нашем битовом потоке меняется размер и содержимое и парсеры работают некорректно.&lt;br /&gt;
Старый линукс на Ориксах добавляет только LF. Для решения проблемы нужно через stty выключить в настройках порта опцию '''onlcr''' (преобразовывать перевод строки в возврат каретки и новую строку).&lt;br /&gt;
&lt;br /&gt;
Сделать это удалось пока только изменив скрипт демона receiver. Для решения проблемы заходим в /run/media/mmcblk0p1/daemon/receiver, и в начале секции receiver_start() {...} добавляем команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
stty -F /dev/ttyPS0 -onlcr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==device tree==&lt;br /&gt;
&lt;br /&gt;
Для внесения изменений в device tree добавляем нужные строки в файл&lt;br /&gt;
&lt;br /&gt;
project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
[https://www.xilinx.com/support/answers/61117.html пример]&lt;br /&gt;
&lt;br /&gt;
Для разборки device-tree [http://xillybus.com/tutorials/device-tree-zynq-1 ссылка]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ dtc -I dtb -O dts -o &amp;lt;name&amp;gt;.dts &amp;lt;name&amp;gt;.dtb&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для сборки device-tree&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ dtc -I dts -O dtb -o &amp;lt;name&amp;gt;.dtb &amp;lt;name&amp;gt;.dts&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Модификация device-tree ==&lt;br /&gt;
&lt;br /&gt;
После долгих мучений получилось поднять DP83867 только после добавления модификатора в файл [https://forums.xilinx.com/t5/Embedded-Linux/ZC702-Like-Board-with-DP83867CR-Ethernet-Petalinux-2017-4/td-p/831873 волшебная статья]&lt;br /&gt;
&lt;br /&gt;
[https://www.kernel.org/doc/Documentation/devicetree/bindings/net/ti%2Cdp83867.txt описание параметров]&lt;br /&gt;
&lt;br /&gt;
project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
=== Single Kit-board eth ===&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth1(с mdio) и выключен eth0.&lt;br /&gt;
&lt;br /&gt;
'''Так работает'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem1{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@12 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;12&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Начало скрытого блока|Выравнивание_заголовка = left| Ссылка = left|Заголовок =  Развернутый .dtb:}}&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/dts-v1/;&lt;br /&gt;
&lt;br /&gt;
/ {&lt;br /&gt;
	#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
	#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
	compatible = &amp;quot;xlnx,zynq-7000&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	cpus {&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
		cpu@0 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9&amp;quot;;&lt;br /&gt;
			device_type = &amp;quot;cpu&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x3&amp;gt;;&lt;br /&gt;
			clock-latency = &amp;lt;0x3e8&amp;gt;;&lt;br /&gt;
			cpu0-supply = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			operating-points = &amp;lt;0xa2c2a 0xf4240 0x51615 0xf4240&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		cpu@1 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9&amp;quot;;&lt;br /&gt;
			device_type = &amp;quot;cpu&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x3&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	fpga-full {&lt;br /&gt;
		compatible = &amp;quot;fpga-region&amp;quot;;&lt;br /&gt;
		fpga-mgr = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		ranges;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	pmu@f8891000 {&lt;br /&gt;
		compatible = &amp;quot;arm,cortex-a9-pmu&amp;quot;;&lt;br /&gt;
		interrupts = &amp;lt;0x0 0x5 0x4 0x0 0x6 0x4&amp;gt;;&lt;br /&gt;
		interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		reg = &amp;lt;0xf8891000 0x1000 0xf8893000 0x1000&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	fixedregulator {&lt;br /&gt;
		compatible = &amp;quot;regulator-fixed&amp;quot;;&lt;br /&gt;
		regulator-name = &amp;quot;VCCPINT&amp;quot;;&lt;br /&gt;
		regulator-min-microvolt = &amp;lt;0xf4240&amp;gt;;&lt;br /&gt;
		regulator-max-microvolt = &amp;lt;0xf4240&amp;gt;;&lt;br /&gt;
		regulator-boot-on;&lt;br /&gt;
		regulator-always-on;&lt;br /&gt;
		linux,phandle = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
		phandle = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	amba {&lt;br /&gt;
		u-boot,dm-pre-reloc;&lt;br /&gt;
		compatible = &amp;quot;simple-bus&amp;quot;;&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		ranges;&lt;br /&gt;
&lt;br /&gt;
		adc@f8007100 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-xadc-1.00.a&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8007100 0x20&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x7 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xc&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		can@e0008000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-can-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x13 0x1 0x24&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;can_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0008000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1c 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			tx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			rx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		can@e0009000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-can-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x14 0x1 0x25&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;can_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0009000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x33 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			tx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			rx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		gpio@e000a000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-gpio-1.0&amp;quot;;&lt;br /&gt;
			#gpio-cells = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x2a&amp;gt;;&lt;br /&gt;
			gpio-controller;&lt;br /&gt;
			interrupt-controller;&lt;br /&gt;
			#interrupt-cells = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x14 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe000a000 0x1000&amp;gt;;&lt;br /&gt;
			emio-gpio-width = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			gpio-mask-high = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			gpio-mask-low = &amp;lt;0x5600&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		i2c@e0004000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x26&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x19 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0004000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		i2c@e0005000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x27&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x30 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0005000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		interrupt-controller@f8f01000 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-gic&amp;quot;;&lt;br /&gt;
			#interrupt-cells = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
			interrupt-controller;&lt;br /&gt;
			reg = &amp;lt;0xf8f01000 0x1000 0xf8f00100 0x100&amp;gt;;&lt;br /&gt;
			num_cpus = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			num_interrupts = &amp;lt;0x60&amp;gt;;&lt;br /&gt;
			linux,phandle = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		cache-controller@f8f02000 {&lt;br /&gt;
			compatible = &amp;quot;arm,pl310-cache&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f02000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2 0x4&amp;gt;;&lt;br /&gt;
			arm,data-latency = &amp;lt;0x3 0x2 0x2&amp;gt;;&lt;br /&gt;
			arm,tag-latency = &amp;lt;0x2 0x2 0x2&amp;gt;;&lt;br /&gt;
			cache-unified;&lt;br /&gt;
			cache-level = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		memory-controller@f8006000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-ddrc-a05&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8006000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ocmc@f800c000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-ocmc-1.0&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x3 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf800c000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		serial@e0000000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,xuartps&amp;quot;, &amp;quot;cdns,uart-r1p8&amp;quot;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x17 0x1 0x28&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;uart_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0000000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1b 0x4&amp;gt;;&lt;br /&gt;
			device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
			port-number = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		serial@e0001000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,xuartps&amp;quot;, &amp;quot;cdns,uart-r1p8&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x18 0x1 0x29&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;uart_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0001000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x32 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e0006000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-spi-r1p6&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0006000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1a 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x19 0x1 0x22&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e0007000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-spi-r1p6&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0007000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x31 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1a 0x1 0x23&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e000d000 {&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xa 0x1 0x2b&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-qspi-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x13 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe000d000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		memory-controller@e000e000 {&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;memclk&amp;quot;, &amp;quot;aclk&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xb 0x1 0x2c&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;arm,pl353-smc-r2p1&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x12 0x4&amp;gt;;&lt;br /&gt;
			ranges;&lt;br /&gt;
			reg = &amp;lt;0xe000e000 0x1000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			flash@e1000000 {&lt;br /&gt;
				status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
				compatible = &amp;quot;arm,pl353-nand-r2p1&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0xe1000000 0x1000000&amp;gt;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			flash@e2000000 {&lt;br /&gt;
				status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
				compatible = &amp;quot;cfi-flash&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0xe2000000 0x2000000&amp;gt;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ethernet@e000b000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,zynq-gem&amp;quot;, &amp;quot;cdns,gem&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe000b000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x16 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1e 0x1 0x1e 0x1 0xd&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;pclk&amp;quot;, &amp;quot;hclk&amp;quot;, &amp;quot;tx_clk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ethernet@e000c000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,zynq-gem&amp;quot;, &amp;quot;cdns,gem&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe000c000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2d 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1f 0x1 0x1f 0x1 0xe&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;pclk&amp;quot;, &amp;quot;hclk&amp;quot;, &amp;quot;tx_clk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
			xlnx,ptp-enet-clock = &amp;lt;0x69f6bcb&amp;gt;;&lt;br /&gt;
			local-mac-address = [00 0a 35 00 22 01];&lt;br /&gt;
			phy-handle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
			xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			mdio {&lt;br /&gt;
				status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
				phy@12 {&lt;br /&gt;
					compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
					device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
					reg = &amp;lt;0xc&amp;gt;;&lt;br /&gt;
					ti,rx-internal-delay = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
					ti,tx-internal-delay = &amp;lt;0xa&amp;gt;;&lt;br /&gt;
					ti,fifo-depth = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
					ti,min-output-impedance;&lt;br /&gt;
					ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
					status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
					linux,phandle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
					phandle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
				};&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		sdhci@e0100000 {&lt;br /&gt;
			compatible = &amp;quot;arasan,sdhci-8.9a&amp;quot;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;clk_xin&amp;quot;, &amp;quot;clk_ahb&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x15 0x1 0x20&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x18 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0100000 0x1000&amp;gt;;&lt;br /&gt;
			xlnx,has-cd = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			xlnx,has-power = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			xlnx,has-wp = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		sdhci@e0101000 {&lt;br /&gt;
			compatible = &amp;quot;arasan,sdhci-8.9a&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;clk_xin&amp;quot;, &amp;quot;clk_ahb&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x16 0x1 0x21&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2f 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0101000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		slcr@f8000000 {&lt;br /&gt;
			u-boot,dm-pre-reloc;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-slcr&amp;quot;, &amp;quot;syscon&amp;quot;, &amp;quot;simple-mfd&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8000000 0x1000&amp;gt;;&lt;br /&gt;
			ranges;&lt;br /&gt;
			linux,phandle = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			clkc@100 {&lt;br /&gt;
				u-boot,dm-pre-reloc;&lt;br /&gt;
				#clock-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				compatible = &amp;quot;xlnx,ps7-clkc&amp;quot;;&lt;br /&gt;
				fclk-enable = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
				clock-output-names = &amp;quot;armpll&amp;quot;, &amp;quot;ddrpll&amp;quot;, &amp;quot;iopll&amp;quot;, &amp;quot;cpu_6or4x&amp;quot;, &amp;quot;cpu_3or2x&amp;quot;, &amp;quot;cpu_2x&amp;quot;, &amp;quot;cpu_1x&amp;quot;, &amp;quot;ddr2x&amp;quot;, &amp;quot;ddr3x&amp;quot;, &amp;quot;dci&amp;quot;, &amp;quot;lqspi&amp;quot;, &amp;quot;smc&amp;quot;, &amp;quot;pcap&amp;quot;, &amp;quot;gem0&amp;quot;, &amp;quot;gem1&amp;quot;, &amp;quot;fclk0&amp;quot;, &amp;quot;fclk1&amp;quot;, &amp;quot;fclk2&amp;quot;, &amp;quot;fclk3&amp;quot;, &amp;quot;can0&amp;quot;, &amp;quot;can1&amp;quot;, &amp;quot;sdio0&amp;quot;, &amp;quot;sdio1&amp;quot;, &amp;quot;uart0&amp;quot;, &amp;quot;uart1&amp;quot;, &amp;quot;spi0&amp;quot;, &amp;quot;spi1&amp;quot;, &amp;quot;dma&amp;quot;, &amp;quot;usb0_aper&amp;quot;, &amp;quot;usb1_aper&amp;quot;, &amp;quot;gem0_aper&amp;quot;, &amp;quot;gem1_aper&amp;quot;, &amp;quot;sdio0_aper&amp;quot;, &amp;quot;sdio1_aper&amp;quot;, &amp;quot;spi0_aper&amp;quot;, &amp;quot;spi1_aper&amp;quot;, &amp;quot;can0_aper&amp;quot;, &amp;quot;can1_aper&amp;quot;, &amp;quot;i2c0_aper&amp;quot;, &amp;quot;i2c1_aper&amp;quot;, &amp;quot;uart0_aper&amp;quot;, &amp;quot;uart1_aper&amp;quot;, &amp;quot;gpio_aper&amp;quot;, &amp;quot;lqspi_aper&amp;quot;, &amp;quot;smc_aper&amp;quot;, &amp;quot;swdt&amp;quot;, &amp;quot;dbg_trc&amp;quot;, &amp;quot;dbg_apb&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x100 0x100&amp;gt;;&lt;br /&gt;
				ps-clk-frequency = &amp;lt;0x1fca055&amp;gt;;&lt;br /&gt;
				linux,phandle = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				phandle = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			rstc@200 {&lt;br /&gt;
				compatible = &amp;quot;xlnx,zynq-reset&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x200 0x48&amp;gt;;&lt;br /&gt;
				#reset-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			pinctrl@700 {&lt;br /&gt;
				compatible = &amp;quot;xlnx,pinctrl-zynq&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x700 0x200&amp;gt;;&lt;br /&gt;
				syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		dmac@f8003000 {&lt;br /&gt;
			compatible = &amp;quot;arm,pl330&amp;quot;, &amp;quot;arm,primecell&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8003000 0x1000&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupt-names = &amp;quot;abort&amp;quot;, &amp;quot;dma0&amp;quot;, &amp;quot;dma1&amp;quot;, &amp;quot;dma2&amp;quot;, &amp;quot;dma3&amp;quot;, &amp;quot;dma4&amp;quot;, &amp;quot;dma5&amp;quot;, &amp;quot;dma6&amp;quot;, &amp;quot;dma7&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0xd 0x4 0x0 0xe 0x4 0x0 0xf 0x4 0x0 0x10 0x4 0x0 0x11 0x4 0x0 0x28 0x4 0x0 0x29 0x4 0x0 0x2a 0x4 0x0 0x2b 0x4&amp;gt;;&lt;br /&gt;
			#dma-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#dma-channels = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
			#dma-requests = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1b&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;apb_pclk&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		devcfg@f8007000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-devcfg-1.0&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x8 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8007000 0x100&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xc 0x1 0xf 0x1 0x10 0x1 0x11 0x1 0x12&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;fclk0&amp;quot;, &amp;quot;fclk1&amp;quot;, &amp;quot;fclk2&amp;quot;, &amp;quot;fclk3&amp;quot;;&lt;br /&gt;
			syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			linux,phandle = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		efuse@f800d000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-efuse&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf800d000 0x20&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8f00200 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-global-timer&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f00200 0x20&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x1 0xb 0x301&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8001000 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0xa 0x4 0x0 0xb 0x4 0x0 0xc 0x4&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,ttc&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x6&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8001000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8002000 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x25 0x4 0x0 0x26 0x4 0x0 0x27 0x4&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,ttc&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x6&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8002000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8f00600 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x1 0xd 0x301&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-twd-timer&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f00600 0x20&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		usb@e0002000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-usb-2.20a&amp;quot;, &amp;quot;chipidea,usb2&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1c&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x15 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0002000 0x1000&amp;gt;;&lt;br /&gt;
			phy_type = &amp;quot;ulpi&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		usb@e0003000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-usb-2.20a&amp;quot;, &amp;quot;chipidea,usb2&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1d&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2c 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0003000 0x1000&amp;gt;;&lt;br /&gt;
			phy_type = &amp;quot;ulpi&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		watchdog@f8005000 {&lt;br /&gt;
			clocks = &amp;lt;0x1 0x2d&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,wdt-r1p2&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x9 0x1&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8005000 0x1000&amp;gt;;&lt;br /&gt;
			timeout-sec = &amp;lt;0xa&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	chosen {&lt;br /&gt;
		bootargs = &amp;quot;console=ttyPS0,115200 earlyprintk&amp;quot;;&lt;br /&gt;
		stdout-path = &amp;quot;serial0:115200n8&amp;quot;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	aliases {&lt;br /&gt;
		ethernet0 = &amp;quot;/amba/ethernet@e000c000&amp;quot;;&lt;br /&gt;
		serial0 = &amp;quot;/amba/serial@e0000000&amp;quot;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	memory {&lt;br /&gt;
		device_type = &amp;quot;memory&amp;quot;;&lt;br /&gt;
		reg = &amp;lt;0x0 0x10000000&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
{{Конец скрытого блока}}&lt;br /&gt;
&lt;br /&gt;
=== Single On-board eth ===&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth0(с mdio) и выключен eth1.&lt;br /&gt;
&lt;br /&gt;
'''Работает гигабит через type-c! Работает hot plug. Успех.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@0 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dual eth ===&lt;br /&gt;
&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Dual-phys-on-MDIO-EMIO/td-p/737716 интересная статья о дуал eth]&lt;br /&gt;
&lt;br /&gt;
Попытка поднять два физика. '''Пока не работает'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    local-mac-address = [00 0a 35 00 00 00];&lt;br /&gt;
    enet-reset = &amp;lt;&amp;amp;gpio0 47 0&amp;gt;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@0 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x8&amp;gt;; &lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0xa&amp;gt;; &lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;; &lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
        phy1: phy@12 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;12&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x8&amp;gt;; &lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0xa&amp;gt;; &lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;; &lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gem1{&lt;br /&gt;
    local-mac-address = [00 0a 35 00 00 01];&lt;br /&gt;
    enet-reset = &amp;lt;&amp;amp;gpio0 47 0&amp;gt;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy1&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Oryx ===&lt;br /&gt;
&lt;br /&gt;
Итоговый system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
Меняем номера uart, чтобы системным был ttyPS1, а пользовательским ttyPS0&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
/ {&lt;br /&gt;
    aliases {&lt;br /&gt;
        serial0 = &amp;amp;uart0;&lt;br /&gt;
        serial1 = &amp;amp;uart1;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@1 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
            rxc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            rxdv-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            txc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            txen-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;1&amp;gt;;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/ {&lt;br /&gt;
    chosen {&lt;br /&gt;
            bootargs = &amp;quot;console=ttyPS1,115200 earlyprintk uio_pdrv_genirq.of_id=generic-uio&amp;quot;;&lt;br /&gt;
            stdout-path = &amp;quot;serial1:115200n8&amp;quot;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    hififo: hififo@40000000 {&lt;br /&gt;
            compatible = &amp;quot;generic-uio&amp;quot;;&lt;br /&gt;
            interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
            interrupts = &amp;lt;0 29 1&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;0x40000000 0x1000 0x18000000 0x8000000&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;uart0{&lt;br /&gt;
    port-number = &amp;lt;0&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;uart1{&lt;br /&gt;
    port-number = &amp;lt;1&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth0(с mdio) и выключен eth1.&lt;br /&gt;
Pullup пока что все включены&lt;br /&gt;
&lt;br /&gt;
[https://github.com/Xilinx/u-boot-xlnx/blob/master/doc/device-tree-bindings/net/micrel-ksz90x1.txt статья в помощь]&lt;br /&gt;
&lt;br /&gt;
'''Работает'''&lt;br /&gt;
&lt;br /&gt;
На новых платах(с отпаянными линиями линиями eth):&lt;br /&gt;
* на полноценных проводах с ходу&lt;br /&gt;
* на обкусанных проводах только если выставить 10 в ethtool&lt;br /&gt;
&lt;br /&gt;
На старых платах:&lt;br /&gt;
&lt;br /&gt;
* на полноценных проводах только если выставить 100 в ethtool&lt;br /&gt;
* на обкусанных проводах только если выставить 10 в ethtool&lt;br /&gt;
&lt;br /&gt;
Везде работает так:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ethtool -s eth0 speed 10 duplex full autoneg on&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Спидометр показывает 2,5МБ/с, т.е. 20Мбит/с!&lt;br /&gt;
&lt;br /&gt;
Можно в custom_itit.sh прописать:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ifdown eth0&lt;br /&gt;
ethtool -s eth0 speed 10 duplex full autoneg on&lt;br /&gt;
ifup eth0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@1 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
            rxc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            rxdv-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            txc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            txen-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;1&amp;gt;;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В принципе, работает сеть на новой плате с нормальным кабелем без модификации devicetree. Остальные комбинации плат-кабелей надо проверять&lt;br /&gt;
&lt;br /&gt;
== i2c ==&lt;br /&gt;
&lt;br /&gt;
В rootfs включаем&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages -&amp;gt;&lt;br /&gt;
     base -&amp;gt;&lt;br /&gt;
          i2c-tools -&amp;gt;&lt;br /&gt;
               [*] i2c-tools&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для поиска устройств можно написать&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i2cdetect -y -r 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842160/Cadence+I2C+Driver Статья] по i2c и RTC&lt;br /&gt;
&lt;br /&gt;
== QSPI Flash ==&lt;br /&gt;
&lt;br /&gt;
для работы по флешь памяти как в ките (S25FL128S) - оставляем в дев.три родные compatible = &amp;quot;n25q512a&amp;quot;,&amp;quot;micron,m25p80&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
== SWDT System Watchdog Timer==&lt;br /&gt;
&lt;br /&gt;
* Модифицируем device-tree&lt;br /&gt;
&lt;br /&gt;
Вставляем в девайс три:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;watchdog0 {&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    reset-on-timeout;&lt;br /&gt;
    timeout-sec = &amp;lt;60&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RTC ==&lt;br /&gt;
&lt;br /&gt;
* Включаем в ядро подходящий драйвер&lt;br /&gt;
&lt;br /&gt;
* Модифицируем device-tree&lt;br /&gt;
&lt;br /&gt;
Вставляем в девайс три:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    i2c0: i2c@e0004000 {&lt;br /&gt;
        clock-frequency = &amp;lt;0xC350&amp;gt;;&lt;br /&gt;
        rtc@51 {&lt;br /&gt;
                compatible = &amp;quot;nxp,pcf85363&amp;quot;;&lt;br /&gt;
                reg = &amp;lt;0x51&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
    i2c1: i2c@e0005000 {&lt;br /&gt;
        clock-frequency = &amp;lt;0xC350&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Будет выглядеть так:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i2c@e0004000 {&lt;br /&gt;
    compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    clocks = &amp;lt;0x1 0x26&amp;gt;;&lt;br /&gt;
    interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
    interrupts = &amp;lt;0x0 0x19 0x4&amp;gt;;&lt;br /&gt;
    reg = &amp;lt;0xe0004000 0x1000&amp;gt;;&lt;br /&gt;
    #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
    #size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
    clock-frequency = &amp;lt;0xc350&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    rtc@51 {&lt;br /&gt;
        compatible = &amp;quot;nxp,pcf85363&amp;quot;;&lt;br /&gt;
        reg = &amp;lt;0x51&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
i2c@e0005000 {&lt;br /&gt;
    compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    clocks = &amp;lt;0x1 0x27&amp;gt;;&lt;br /&gt;
    interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
    interrupts = &amp;lt;0x0 0x30 0x4&amp;gt;;&lt;br /&gt;
    reg = &amp;lt;0xe0005000 0x1000&amp;gt;;&lt;br /&gt;
    #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
    #size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
    clock-frequency = &amp;lt;0xc350&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если готового драйвера нет:&lt;br /&gt;
&lt;br /&gt;
UG1144 pg.54&lt;br /&gt;
&lt;br /&gt;
Создаем новый модуль&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-create -t modules --name &amp;lt;name_module&amp;gt; --enable&lt;br /&gt;
petalinux-create -t modules --name rtc-pcf85363 --enable&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим исходный код в project-spec/meta-user/recipes-modules/rtc-pcf85363/files&lt;br /&gt;
&lt;br /&gt;
Исправленный драйвер лежит в git Clonicus\linux\&lt;br /&gt;
&lt;br /&gt;
Для удаления модуля:&lt;br /&gt;
&lt;br /&gt;
* удаляем папку из project-spec/meta-user/recipes-modules&lt;br /&gt;
&lt;br /&gt;
* В файле project-spec/meta-user/recipes-core/images/petalinux-image.bbappend удаляем соответствующую строку&lt;br /&gt;
&lt;br /&gt;
* переоткрыть petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
Пробуем собрать модуль&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build -c &amp;lt;name_module&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если ОК, собираем (собирать модуль необязательно, petalinux-build его соберет)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И перепаковываем BOOT.bin&lt;br /&gt;
&lt;br /&gt;
Пересобираем deveice-tree с указанием нового драйвера (petalinux-build соберет сам deveice-tree)&lt;br /&gt;
&lt;br /&gt;
просмотр модулей&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsmod&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
загрузить драйвер можно&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
insmod /lib/modules/4.9.0-xilinx-v2017.4/extra/rtc-pcf85363.ko&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
или&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe rtc-pcf85363&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Если все ок и в девайс три прописан правильный драйвер для устройства, то модуль будет загружен сам'''&lt;br /&gt;
&lt;br /&gt;
Прошиваем .bit (для клоникуса нужен бит для работы PL-i2c). После этого можно пользоваться RTC&lt;br /&gt;
&lt;br /&gt;
Чтение времени из rtc если этот rtc не дефолтный (у нас rtc2)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -r -f /dev/rtc2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Синхронизация rtc по системному времени&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -w -f /dev/rtc2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим custom_init.sh для изменения default-rtc на наше устройство&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm /dev/rtc&lt;br /&gt;
ln -s /dev/rtc2 /dev/rtc&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Установка системного времени&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
date --set &amp;quot;2013-7-31 09:30&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запись системного времени в RTC&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -w&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запись времени RTC в системное время&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -s&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Получить время с интеренета&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rdate -s &amp;lt;IP address of time server&amp;gt;&lt;br /&gt;
rdate -s 132.163.96.5 (example)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При перезагрузке &amp;quot;reboot&amp;quot; система автоматически запишет системное время в RTC&lt;br /&gt;
&lt;br /&gt;
== FPGA CONFIG from Uboot ==&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы прошить PL из uboot используем команду:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
fpga loadb 0 &amp;lt;ddr_file_addr&amp;gt; &amp;lt;file_size&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
либо скриптами:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
load_bit=fatload mmc 0 0x100000 clonicus.bit // читаем файл в ddr&lt;br /&gt;
pl_load=fpga loadb 0 0x100000 0x1400000 // прошиваем PL&lt;br /&gt;
fpga_config=run load_bit &amp;amp;&amp;amp; run pl_loadipaddr // вызов самих скриптов&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
0x10_0000 - начальный адрес ddr&lt;br /&gt;
&lt;br /&gt;
0x1_400_000 - размер в байтах для 20МБайт - указываем размер битника с запасом. Теоретически может так не работать, но работает&lt;br /&gt;
&lt;br /&gt;
== ETH over TTY==&lt;br /&gt;
&lt;br /&gt;
В ядре включаем: slip, Universal TUN/TAP&lt;br /&gt;
&lt;br /&gt;
В rootfs включаем net-tools&lt;br /&gt;
&lt;br /&gt;
Включаем iptables для перемршрутизации между подсетями и для него:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[*] Networking support  ---&amp;gt;                                          [CONFIG_NET]&lt;br /&gt;
      Networking Options  ---&amp;gt;&lt;br /&gt;
        [*] Network packet filtering framework (Netfilter) ---&amp;gt;       [CONFIG_NETFILTER]&lt;br /&gt;
          [*] Advanced netfilter configuration                        [CONFIG_NETFILTER_ADVANCED]&lt;br /&gt;
          Core Netfilter Configuration ---&amp;gt;&lt;br /&gt;
            &amp;lt;*/M&amp;gt; Netfilter connection tracking support               [CONFIG_NF_CONNTRACK]&lt;br /&gt;
            &amp;lt;*/M&amp;gt; Netfilter Xtables support (required for ip_tables)  [CONFIG_NETFILTER_XTABLES]&lt;br /&gt;
            &amp;lt;*/M&amp;gt; LOG target support                                  [CONFIG_NETFILTER_XT_TARGET_LOG]&lt;br /&gt;
          IP: Netfilter Configuration ---&amp;gt;&lt;br /&gt;
            &amp;lt;*/M&amp;gt; IP tables support (required for filtering/masq/NAT) [CONFIG_IP_NF_IPTABLES]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PC1:&lt;br /&gt;
&lt;br /&gt;
slattach -L -s 115200 -p slip /dev/ttyPS1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
ifconfig sl0 192.168.1.1/24 up&lt;br /&gt;
&lt;br /&gt;
route add default gw 192.168.1.1 sl0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PC2:&lt;br /&gt;
&lt;br /&gt;
slattach -L -s 115200 -p slip /dev/ttyPS1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
ifconfig sl0 192.168.1.2/24 up&lt;br /&gt;
&lt;br /&gt;
route add default gw 192.168.1.1 sl0&lt;br /&gt;
&lt;br /&gt;
== UART_PL ==&lt;br /&gt;
&lt;br /&gt;
Включаем в настройках ядра поддержку uart_lite, выставляем правильное максимальное число уартов&lt;br /&gt;
&lt;br /&gt;
Модифицируем system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
Обращаем внимание на нумерацию serial, axi_uartlite, она должна не повторяться. То же самое с interrupts &lt;br /&gt;
Указываем верный физический адрес на шине и диапазон адресов в &amp;lt;reg&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
/ {&lt;br /&gt;
    aliases {&lt;br /&gt;
            serial2 = &amp;amp;axi_uartlite_0;&lt;br /&gt;
            serial3 = &amp;amp;axi_uartlite_1;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
/ {&lt;br /&gt;
    amba_pl {&lt;br /&gt;
        #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
        compatible = &amp;quot;simple-bus&amp;quot;;&lt;br /&gt;
        ranges;&lt;br /&gt;
        &lt;br /&gt;
        axi_uartlite_0: serial@80000008 {&lt;br /&gt;
                clock-names = &amp;quot;ref_clk&amp;quot;;&lt;br /&gt;
                clocks = &amp;lt;&amp;amp;clkc 0&amp;gt;;&lt;br /&gt;
                compatible = &amp;quot;xlnx,xps-uartlite-1.00.a&amp;quot;;&lt;br /&gt;
                current-speed = &amp;lt;115200&amp;gt;;&lt;br /&gt;
                device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
                interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                interrupts = &amp;lt;0 30 1&amp;gt;;&lt;br /&gt;
                port-number = &amp;lt;3&amp;gt;;&lt;br /&gt;
                reg = &amp;lt;0x80000008 0x10&amp;gt;;&lt;br /&gt;
                xlnx,baudrate = &amp;lt;0x1c200&amp;gt;;&lt;br /&gt;
                xlnx,data-bits = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
                xlnx,odd-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
                xlnx,s-axi-aclk-freq-hz-d = &amp;quot;100.0&amp;quot;;&lt;br /&gt;
                xlnx,use-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
        axi_uartlite_1: serial@8000001C {&lt;br /&gt;
                clock-names = &amp;quot;ref_clk&amp;quot;;&lt;br /&gt;
                clocks = &amp;lt;&amp;amp;clkc 0&amp;gt;;&lt;br /&gt;
                compatible = &amp;quot;xlnx,xps-uartlite-1.00.a&amp;quot;;&lt;br /&gt;
                current-speed = &amp;lt;115200&amp;gt;;&lt;br /&gt;
                device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
                interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                interrupts = &amp;lt;0 31 1&amp;gt;;&lt;br /&gt;
                port-number = &amp;lt;4&amp;gt;;&lt;br /&gt;
                reg = &amp;lt;0x8000001C 0x10&amp;gt;;&lt;br /&gt;
                xlnx,baudrate = &amp;lt;0x1c200&amp;gt;;&lt;br /&gt;
                xlnx,data-bits = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
                xlnx,odd-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
                xlnx,s-axi-aclk-freq-hz-d = &amp;quot;100.0&amp;quot;;&lt;br /&gt;
                xlnx,use-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если ПЛИС не прошита - будет кернел паник&lt;br /&gt;
&lt;br /&gt;
== IRQ ==&lt;br /&gt;
&lt;br /&gt;
Для поддержки irq добавляем в device-tree&lt;br /&gt;
&lt;br /&gt;
'''Важно - мы перетираем bootargs!'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/ {&lt;br /&gt;
    chosen {&lt;br /&gt;
            bootargs = &amp;quot;console=ttyPS0,115200 earlyprintk uio_pdrv_genirq.of_id=generic-uio&amp;quot;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    hififo: hififo@40000000 {&lt;br /&gt;
                    compatible = &amp;quot;generic-uio&amp;quot;;&lt;br /&gt;
                    interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                    interrupts = &amp;lt;0 29 1&amp;gt;;&lt;br /&gt;
                    reg = &amp;lt;0x40000000 0x1000 0x18000000 0x8000000&amp;gt;;&lt;br /&gt;
            };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
&lt;br /&gt;
Запустил на Z706&lt;br /&gt;
&lt;br /&gt;
[http://www.wiki.xilinx.com/Zynq+Linux+USB+Device+Driver во-первых]&lt;br /&gt;
[http://zedboard.org/content/using-petalinux-configure-zedboard%EF%BC%8C-usb-otg-can-not-work во-вторых]&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-2016-3-zynq-7010-USB-not-working/td-p/737696 в-третьих]&lt;br /&gt;
&lt;br /&gt;
В дефолтных настройках ядра petalinux_2018.1 все было включено&lt;br /&gt;
&lt;br /&gt;
включаем ресет на MIO7 pullup disabled&lt;br /&gt;
&lt;br /&gt;
все ноги интерфейса ulpi pullup disabled&lt;br /&gt;
&lt;br /&gt;
Содержимое system-user.dtsi&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
	/{&lt;br /&gt;
&lt;br /&gt;
    usb_phy0:phy0 {&lt;br /&gt;
&lt;br /&gt;
        compatible=&amp;quot;ulpi-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        #phy-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       reg = &amp;lt;0xe0002000 0x1000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       view-port=&amp;lt;0x170&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       drv-vbus;&lt;br /&gt;
&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&amp;amp;usb0 {&lt;br /&gt;
&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        dr_mode = &amp;quot;host&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        usb-phy = &amp;lt;&amp;amp;usb_phy0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
} ;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== USB-ETHERNET ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers -&amp;gt;&lt;br /&gt;
     USB support -&amp;gt;&lt;br /&gt;
          [*] USB Modem (CDC ACM)&lt;br /&gt;
          USB Gadget Support -&amp;gt;&lt;br /&gt;
               [*] Ethernet Control Model (all)&lt;br /&gt;
               [*] RNDIS&lt;br /&gt;
               [*] Ethernet Emulation Model&lt;br /&gt;
               [*] CDC Composite Device (Ethernet and ACM)&lt;br /&gt;
               [*] USB Gadget Drivers (Ethernet gadget...)&lt;br /&gt;
     Network device support -&amp;gt;&lt;br /&gt;
          USB Network Adapters -&amp;gt;&lt;br /&gt;
               [*] Realtek RTL8152/RTL8153&lt;br /&gt;
               [*] Multi-purpose USB Networking Framework&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WiFi Dongle ==&lt;br /&gt;
&lt;br /&gt;
[https://forum.trenz-electronic.de/index.php?topic=747.0 раз]&lt;br /&gt;
[https://github.com/jinchenglee/zybo_linux_setup_doc два]&lt;br /&gt;
[http://billauer.co.il/blog/2014/06/linux-realtek-hostapd/ три]&lt;br /&gt;
&lt;br /&gt;
Творим:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Networking support -&amp;gt;&lt;br /&gt;
     Wireless -&amp;gt;&lt;br /&gt;
          [*] cfg80211&lt;br /&gt;
          [*] Generic IEEE 802.11 ... (mac80211)&lt;br /&gt;
Device Drivers -&amp;gt;&lt;br /&gt;
     Network device support -&amp;gt;&lt;br /&gt;
          Wireless LAN -&amp;gt;&lt;br /&gt;
               Realtek rtlwifi family of devices -&amp;gt;&lt;br /&gt;
                    [*] Realtek ..../RTL8188CE Wireless Network Adapter ???&lt;br /&gt;
                    [*] Realtek RTL8188EE Wireless Network Adapter ???&lt;br /&gt;
                    [*] Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter&lt;br /&gt;
     Staging drivers -&amp;gt;&lt;br /&gt;
          [*] Realtek RTL8188EU wireless LAN MIC driver&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
rootfs&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem packages -&amp;gt;&lt;br /&gt;
     network -&amp;gt;&lt;br /&gt;
          wpa-supplicant -&amp;gt;&lt;br /&gt;
               [*] wpa-supplicant&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/lwfinger/rtl8188eu/blob/master/rtl8188eufw.bin качаем файл]&lt;br /&gt;
&lt;br /&gt;
Модификаци инит-скрипта&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp /run/media/mmcblk0p1/wpa_supplicant.conf /etc/&lt;br /&gt;
&lt;br /&gt;
mkdir /lib/firmware/&lt;br /&gt;
mkdir /lib/firmware/rtlwifi/&lt;br /&gt;
cp /run/media/mmcblk0p1/rtl8188eufw.bin /lib/firmware/rtlwifi/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WiFi ESP ==&lt;br /&gt;
&lt;br /&gt;
[http://www.wiki.xilinx.com/Zynq+SDIO+Wifi Xilinx SDIP WiFi]&lt;br /&gt;
&lt;br /&gt;
[http://zedboard.org/content/sdio-wifi-driver-ar6103-problem Zedboard раз]&lt;br /&gt;
&lt;br /&gt;
[https://stackoverflow.com/questions/32129689/how-to-bind-sdio1-with-wi-fi-linux два]&lt;br /&gt;
&lt;br /&gt;
[http://picozed.org/content/steps-get-wlink8-working-using-petalinux-picozed picozed три]&lt;br /&gt;
&lt;br /&gt;
[http://zedboard.org/content/adding-wi-fi-and-bluetooth-connectivity-zedboard-using-murata-1dx-pmod zedboard четыре]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Оживление 2-го ядра ==&lt;br /&gt;
&lt;br /&gt;
* Находим /home/ivan/clonicus_1.2.3/build/tmp/work-shared/plnx_arm/kernel-source/arch/arm/mach-zynq/efuse.c&lt;br /&gt;
* В функции zynq_efuse_cpu_state делаем сразу ретурн тру&lt;br /&gt;
* Че-нибудь меняем в настройках ядра для пересборки&lt;br /&gt;
* Выполняем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build -c kernel -x compile -f&lt;br /&gt;
petalinux-build -c kernel -x deploy -f&lt;br /&gt;
petalinux-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Забираем image.ub&lt;br /&gt;
&lt;br /&gt;
== webserver == &lt;br /&gt;
&lt;br /&gt;
* [https://github.com/emlid/ReachView Репозиторий emlid ReachView] (bnd на py/Flask, fnd на html/Ajax/js/Bootstrap)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Backend:'''&lt;br /&gt;
&lt;br /&gt;
* [http://svenand.blogdrives.com/archive/195.html#.XPTYt4gzaUk Источник по busybox-httpd]&lt;br /&gt;
&lt;br /&gt;
* [https://www.afternerd.com/blog/python-http-server/ Гайд по python server]&lt;br /&gt;
&lt;br /&gt;
* [https://ru.wikibooks.org/wiki/Flask Викиучебник по Flask]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/193242/ ХаброГайд по python/Flask]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Frontend:'''&lt;br /&gt;
&lt;br /&gt;
* [https://unminify.com/ unminify CSS]&lt;br /&gt;
&lt;br /&gt;
* [https://getbootstrap.com/docs/4.3/getting-started/introduction/ Bootstrap EN getting started]&lt;br /&gt;
&lt;br /&gt;
* [https://bootstrap-4.ru/ Bootstrap RU]&lt;br /&gt;
&lt;br /&gt;
* [http://htmlbook.ru/samhtml/tekst/spetssimvoly Справочник по операторам и тегам HTML/CSS]&lt;br /&gt;
&lt;br /&gt;
* [https://www.w3schools.com/howto/default.asp Сборник шаблонов CSS W3schools]&lt;br /&gt;
&lt;br /&gt;
* [https://www.w3schools.com/w3css/w3css_tabulators.asp Анимированный сайдбар/табы]&lt;br /&gt;
&lt;br /&gt;
* [https://css-tricks.com/ CSS Tricks]&lt;br /&gt;
&lt;br /&gt;
* [https://www.cssmatic.com/ Онлайн тени/границы/градиент блоков]&lt;br /&gt;
&lt;br /&gt;
* [https://internetingishard.com/html-and-css/semantic-html/ Semantic HTML grid layout]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/202408/ Хаброгайд(ч1) по верстке]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/211032/ ХаброГайд(ч2) по Bootstrap]&lt;br /&gt;
&lt;br /&gt;
* [https://fontawesome.com/icons?d=gallery Fontawesome ICONS open lib]&lt;br /&gt;
&lt;br /&gt;
:* [https://htmlacademy.ru/courses/43/run/1 Нормальный онлайн HTML/CSS/JS editor]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== busybox httpd ===&lt;br /&gt;
В petalinux многие пакеты скукожены до их минимальных вариантов и встроены в общий пакет busybox. &lt;br /&gt;
В busybox есть также и вебсервер busybox-httpd.&lt;br /&gt;
Для использования нужно на этапе настройки файловой системы его включить:&lt;br /&gt;
&lt;br /&gt;
 $ petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
Конфиг: &lt;br /&gt;
 base -&amp;gt;&lt;br /&gt;
     busybox -&amp;gt;&lt;br /&gt;
          [*] busybox&lt;br /&gt;
          [*] busybox-httpd&lt;br /&gt;
          [ ] busybox-hwclock&lt;br /&gt;
          [*] busybox-inetd&lt;br /&gt;
          [*] busybox-mdev&lt;br /&gt;
          [ ] busybox-syslog &lt;br /&gt;
          [*] busybox-udhcpc &lt;br /&gt;
          [ ] busybox-udhcpd &lt;br /&gt;
&lt;br /&gt;
Сам httpd будет в '''/usr/sbin'''.&lt;br /&gt;
Рабочая папка по умолчанию в '''/srv/www/'''. Если в нее кидать файлы, то именно из нее будет отображаться контент в браузере. Папку можно изменить, перезапустив httpd с ключом -h &amp;lt;workdir&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Порт по умолчанию 80. Работает, как демон в /etc/init.d/, вкл-выкл оттуда же.&lt;br /&gt;
&lt;br /&gt;
Если положить в /srv/www/ файл index.html с неким кодом, то в браузере отобразится вебморда. Картинки работают по ссылкам.&lt;br /&gt;
&lt;br /&gt;
'''index.html'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Transitional//EN&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;clonicus'112 webserver&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h3&amp;gt;Hello, World!&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Web server is now up!&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;https://i.redd.it/oagz5eobkkt11.jpg&amp;quot; width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;http://www.srns.ru&amp;quot;&amp;gt;For more information see SRNS.ru&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== python в petalinux ===&lt;br /&gt;
В petalinux 2017.4 есть 2 питона - 2.7 и 3.5.&lt;br /&gt;
&lt;br /&gt;
 $ petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
'''python2.7'''&lt;br /&gt;
  Filesystem Packages-&amp;gt;&lt;br /&gt;
     devel-&amp;gt;&lt;br /&gt;
         python-&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''python3.5'''&lt;br /&gt;
  Filesystem Packages-&amp;gt;&lt;br /&gt;
     misc-&amp;gt;&lt;br /&gt;
         python3-*&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модуль runpy.py для запуска команд вида 'python -m &amp;lt;module&amp;gt;' находится в python -&amp;gt; python-misc. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SimpleHTTPServer.py ===&lt;br /&gt;
Для первого теста поднимем встроенный в python2.7 минисервер SimpleHTTPServer.py в /usr/lib/python2.7. &lt;br /&gt;
&lt;br /&gt;
Для его запуска напишем скрипт&lt;br /&gt;
&lt;br /&gt;
'''webserver.py''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import SimpleHTTPServer &lt;br /&gt;
import SocketServer &lt;br /&gt;
 &lt;br /&gt;
PORT = 80 &lt;br /&gt;
 &lt;br /&gt;
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler &lt;br /&gt;
 &lt;br /&gt;
httpd = SocketServer.TCPServer((&amp;quot;&amp;quot;, PORT), Handler) &lt;br /&gt;
 &lt;br /&gt;
print &amp;quot;serving at port&amp;quot;, PORT &lt;br /&gt;
httpd.serve_forever()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 $ python webserver.py &lt;br /&gt;
&lt;br /&gt;
При наличии в папке со скриптом файла index.html сервер поднимется автоматически.&lt;br /&gt;
&lt;br /&gt;
=== Добавление слоев в сборку ===&lt;br /&gt;
&lt;br /&gt;
[https://www.srns.ru/wiki/Blog:DneprovD/18.07.2019_Yocto_layers Переехало в статью]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:HOWTO]]&lt;br /&gt;
[[Категория:Oryx]]&lt;br /&gt;
[[Категория:Zynq]]&lt;br /&gt;
[[Категория:EmbeddedLinux]]&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
&lt;br /&gt;
{{wl-publish: 2018-05-16 10:06:30 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/16.05.2018_PetaLinux</id>
		<title>Blog:Lipa/16.05.2018 PetaLinux</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/16.05.2018_PetaLinux"/>
				<updated>2021-03-16T07:59:19Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Petalinux.png|400px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сборка PetaLinux для кастомной железки&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма2}}&lt;br /&gt;
&lt;br /&gt;
== Требования ==&lt;br /&gt;
&lt;br /&gt;
Vivado 2018.1 (для single-gigabit ethernet можно более ранние версии)&lt;br /&gt;
&lt;br /&gt;
Начиная с petalinux_2018.1 отсутствует devcfg. Необходимо использовать FPGA manager. Технология нами пока не освоена&lt;br /&gt;
&lt;br /&gt;
Необходима Ubuntu-16.04&lt;br /&gt;
&lt;br /&gt;
Требуется поставить ряд пакетов, полный список приведен в документе [https://www.xilinx.com/support/documentation/sw_manuals/xilinx2019_1/ug1144-petalinux-tools-reference-guide.pdf#page=9 UG1144]&lt;br /&gt;
&lt;br /&gt;
Устанавливаем PetaLinux в систему. Дистрибутив есть на [https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/2018-1.html Xilinx], либо у меня на компьютере. '''Ставить PetaLinux необходимо БЕЗ прав суперюзера!'''&lt;br /&gt;
&lt;br /&gt;
кидаем в /components/yocto/ sstate-rel-v2017.4.tar.gz&lt;br /&gt;
&lt;br /&gt;
Подготовка завершена&lt;br /&gt;
&lt;br /&gt;
== Правка Vivado ==&lt;br /&gt;
&lt;br /&gt;
Для поддержки MDIO в Vivado 17.1-17.4 нужен [https://www.xilinx.com/support/answers/69132.html патч]. Ставим!&lt;br /&gt;
&lt;br /&gt;
'''Не помогло.''' Ставим 2018.1&lt;br /&gt;
&lt;br /&gt;
== Сборка ==&lt;br /&gt;
&lt;br /&gt;
Пошаговое руководство по сборке содержится в документе UG1156&lt;br /&gt;
&lt;br /&gt;
В консоли пишем source/[путь к петалинух]/settings.sh&lt;br /&gt;
&lt;br /&gt;
Выполняем шаги из UG1156 по главе 5:&lt;br /&gt;
&lt;br /&gt;
* экспортируем из Vivado .hdf (в блок дизайн File-&amp;gt;Export-&amp;gt;Export Hardware)&lt;br /&gt;
&lt;br /&gt;
* создаем проект PetaLinux&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-create --type project --template zynq --name &amp;lt;PROJECT&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* переходим в папку с текущим проектом&lt;br /&gt;
&lt;br /&gt;
* подключаем файл .hdf&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config --get-hw-description=[путь к папке с файлом .hdf]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* перед сборкой системы необходимо выполнить '''все''' команды конфигурации в данной последовательности:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&lt;br /&gt;
$ petalinux-config -c kernel&lt;br /&gt;
&lt;br /&gt;
$ petalinux-config -c rootfs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config ===&lt;br /&gt;
&lt;br /&gt;
Если хотим спользовать внешний файл device-tree включаем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Subsystem AUTO Hardware Settings-&amp;gt;&lt;br /&gt;
     Advances bootable images storage settings-&amp;gt;&lt;br /&gt;
          dtb image settings-&amp;gt;&lt;br /&gt;
               image storage media&lt;br /&gt;
                    primary sd&lt;br /&gt;
               &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Необходимо править netboot offset если оперативной памяти менее ~256МБ&lt;br /&gt;
&lt;br /&gt;
Для клоникуса с 256МБ ставим 8'000'000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
u-boot Configuration-&amp;gt;&lt;br /&gt;
     netboot offset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выставляем точку начала распаковки образа системы&lt;br /&gt;
&lt;br /&gt;
Выключаем копирование образа по sftp (Image Packaging Configuration -&amp;gt; Copy final images)&lt;br /&gt;
&lt;br /&gt;
Отключаем интернет-sstate (Yocto Settings -&amp;gt; Enable Network sstate feeds)&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config -c kernel===&lt;br /&gt;
&lt;br /&gt;
* Подключаем в ядре поддержку физика и его дров.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config -c kernel&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''для oryx:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers-&amp;gt;&lt;br /&gt;
     [*]Network device support -&amp;gt;&lt;br /&gt;
          [*]Ethernet driver support -&amp;gt;&lt;br /&gt;
               [*] Micrel devices&lt;br /&gt;
          [*] PHY Device support and infastructure --&amp;gt;&lt;br /&gt;
               [*] Drivers for Micrel PHYs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''для clonicus:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers-&amp;gt;&lt;br /&gt;
     [*]Network device support -&amp;gt;&lt;br /&gt;
          [*] PHY Device support and infastructure --&amp;gt;&lt;br /&gt;
               [*] Texas Instruments DP83867 Gigabit PHY&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== petalinux-config -c rootfs ===&lt;br /&gt;
&lt;br /&gt;
Подключаем при необходимости ethtool, gdbserver(просто gdb не заработал), libstdc, libgcc, glib2.0, glibc(glibc &amp;amp; ltd)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages-&amp;gt;&lt;br /&gt;
     misc -&amp;gt;&lt;br /&gt;
          gcc-runtime -&amp;gt;&lt;br /&gt;
               [*] libstdc ++&lt;br /&gt;
          gdb --&amp;gt;&lt;br /&gt;
               [*] gdb&lt;br /&gt;
          glib-2.0&lt;br /&gt;
               [*] glib-2.0&lt;br /&gt;
          glibc&lt;br /&gt;
               [*] glibc&lt;br /&gt;
               [*] ldd&lt;br /&gt;
     devel -&amp;gt;&lt;br /&gt;
          python -&amp;gt;&lt;br /&gt;
               python -&amp;gt;&lt;br /&gt;
                    [*] python&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Опционально:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages-&amp;gt;&lt;br /&gt;
     base -&amp;gt;&lt;br /&gt;
          i2c-tools -&amp;gt;&lt;br /&gt;
               [*] i2c-tools&lt;br /&gt;
          usbutils -&amp;gt;&lt;br /&gt;
               [*] usbutils&lt;br /&gt;
     console -&amp;gt;&lt;br /&gt;
          network -&amp;gt;&lt;br /&gt;
               ethtool -&amp;gt;&lt;br /&gt;
                    [*] ethtool // необходимо для oryx! для перенастройки autonegotiation&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Можно еще подключать дебаг i2c&lt;br /&gt;
&lt;br /&gt;
'''Необходимо убедиться, что  образ может распаковаться в размер оперативы'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Если будут проблемы, то надо будет править netboot offset&lt;br /&gt;
&lt;br /&gt;
=== device tree ===&lt;br /&gt;
&lt;br /&gt;
Если необходимо внести изменения в device tree, то смотрим конец статьи&lt;br /&gt;
&lt;br /&gt;
[https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841676/U-Boot+Flattened+Device+Tree Интересная статья по правке devicetree из uboot]&lt;br /&gt;
&lt;br /&gt;
=== Сборка проекта ===&lt;br /&gt;
&lt;br /&gt;
* далее (сборка идет 30-60 минут)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build&lt;br /&gt;
&lt;br /&gt;
cd /images/linux/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* делаем boot.bin в папке /images/linux/&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --u-boot --force&lt;br /&gt;
&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --fpga name.bit --u-boot --force&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --fpga name.bit --u-boot --kernel --force&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* записываем в загрузочную область флешки файлы boot.bin и image.ub&lt;br /&gt;
&lt;br /&gt;
== Всякое ==&lt;br /&gt;
&lt;br /&gt;
Если мало памяти как у нас - возможна ошибка image is not a fdt [https://forums.xilinx.com/t5/Embedded-Processor-System-Design/Petalinux-problem-on-custom-board-quot-image-is-not-a-fdt-quot/td-p/754892 ссылка]&lt;br /&gt;
&lt;br /&gt;
Необходимо править netboot offset&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ petalinux-config&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
u-boot Configuration-&amp;gt;&lt;br /&gt;
     netboot offset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Можно вручную загрузиться из u-boot'а.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ fatload mmc 0 0xA000000 image.ub&lt;br /&gt;
$ bootm 0xA000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
либо&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ fatload mmc 0 0xA000000 image.ub&lt;br /&gt;
$ fatload mmc 0 0x9000000 system.dtb&lt;br /&gt;
$ bootm 0xA000000 0xA000000 0x9000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Можно поварьировать адрес&lt;br /&gt;
&lt;br /&gt;
------------&lt;br /&gt;
&lt;br /&gt;
Проверка статуса прошитости FPGA&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat /sys/class/xdevcfg/xdevcfg/device/prog_done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Uboot==&lt;br /&gt;
&lt;br /&gt;
Для внесения правок в загрузку линукса используем список команд '''env'''&lt;br /&gt;
&lt;br /&gt;
Просмотр текущих команд '''printenv'''&lt;br /&gt;
&lt;br /&gt;
Сброс настроек в дефолт '''env default -a'''&lt;br /&gt;
&lt;br /&gt;
Создать переменную '''env set &amp;lt;имя&amp;gt; &amp;lt;значение&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Правка переменной '''env edit &amp;lt;имя переменной&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Для каждой платы делаем следующее:&lt;br /&gt;
&lt;br /&gt;
* Берем [[Файл:uboot.env.c]]&lt;br /&gt;
&lt;br /&gt;
* Удаляем в конце имени &amp;quot;.c&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Записываем на флешку рядом с образом линукса&lt;br /&gt;
&lt;br /&gt;
* Запускаем плату и прерываем autoboot&lt;br /&gt;
&lt;br /&gt;
* Пишем '''editenv ethaddr'''&lt;br /&gt;
&lt;br /&gt;
* Редактируем MAC-адрес&lt;br /&gt;
&lt;br /&gt;
* Пишем '''saveenv'''&lt;br /&gt;
&lt;br /&gt;
* Все! можем ребутать '''reset'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Сохранить в файл '''saveenv'''&lt;br /&gt;
&lt;br /&gt;
==Автозапуск приложений==&lt;br /&gt;
&lt;br /&gt;
Во-первых [https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-Runnning-a-script-file-at-startup/td-p/689051 тыц]&lt;br /&gt;
&lt;br /&gt;
Далее пишем&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-create -t apps --template install -n myapp-init --enable&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим файл /project-spec/meta-user/recipes-apps/myapp-init/myapp-init.bb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file is the myapp-init recipe.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
SUMMARY = &amp;quot;Simple myapp-init application&amp;quot;&lt;br /&gt;
SECTION = &amp;quot;PETALINUX/apps&amp;quot;&lt;br /&gt;
LICENSE = &amp;quot;MIT&amp;quot;&lt;br /&gt;
LIC_FILES_CHKSUM = &amp;quot;file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302&amp;quot;&lt;br /&gt;
&lt;br /&gt;
SRC_URI = &amp;quot;file://myapp-init&amp;quot;&lt;br /&gt;
&lt;br /&gt;
S = &amp;quot;${WORKDIR}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILESEXTRAPATHS_prepend := &amp;quot;${THISDIR}/files:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
inherit update-rc.d&lt;br /&gt;
&lt;br /&gt;
INITSCRIPT_NAME = &amp;quot;myapp-init&amp;quot;&lt;br /&gt;
INITSCRIPT_PARAMS = &amp;quot;start 99 S .&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do_install() {&lt;br /&gt;
    install -d ${D}${sysconfdir}/init.d&lt;br /&gt;
    install -m 0755 ${S}/myapp-init ${D}${sysconfdir}/init.d/myapp-init&lt;br /&gt;
}&lt;br /&gt;
FILES_${PN} += &amp;quot;${sysconfdir}/*&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим сам исполняемый скрипт project-spec/meta-user/recipes-apps/myapp-init/files/myapp-init&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Autorun script&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Try run custom_init&amp;quot;&lt;br /&gt;
sh /run/media/mmcblk0p1/custom_init.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Записываем на флешку скрипт custom_init.sh с нужными командами и делаем его исполняемым&lt;br /&gt;
&lt;br /&gt;
Записываем файл interfaces&lt;br /&gt;
&lt;br /&gt;
Скачать архив: [[Файл:Init_interfaces.rar]]&lt;br /&gt;
&lt;br /&gt;
==SSH==&lt;br /&gt;
&lt;br /&gt;
Как победить сохранение ssh-ключей:&lt;br /&gt;
&lt;br /&gt;
Добавляем в init_script следующие строки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir /run/media/mmcblk0p2/.ssh&lt;br /&gt;
ln -s /run/media/mmcblk0p2/.ssh/ /home/root/&lt;br /&gt;
mkdir /run/media/mmcblk0p2/dropbear/&lt;br /&gt;
chmod 400 /run/media/mmcblk0p2/dropbear/&lt;br /&gt;
rm -r /etc/dropbear/&lt;br /&gt;
ln -s /run/media/mmcblk0p2/dropbear/ /etc/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Создается ссылка на флешку, где хранятся авторизованные пользователи&lt;br /&gt;
* Создается папка для хранения секретного ключа платы&lt;br /&gt;
* При запуске платы свежесозданный ключ заменяется тем, что лежит на флешке&lt;br /&gt;
* При первом включении платы будет создан новый ключ&lt;br /&gt;
&lt;br /&gt;
Помимо добавления указанных команд в скрипт ничего больше делать не надо&lt;br /&gt;
&lt;br /&gt;
==Daemon==&lt;br /&gt;
&lt;br /&gt;
Для настройки демона:&lt;br /&gt;
&lt;br /&gt;
* Добавляем строки в файл custom_init.sh&lt;br /&gt;
* Кидаем на загрузочный раздел флешки папку из архива [[:File:daemon.rar]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp -r /run/media/mmcblk0p1/daemon/lsb /lib/&lt;br /&gt;
cp /run/media/mmcblk0p1/daemon/receiver.conf /etc/&lt;br /&gt;
cp /run/media/mmcblk0p1/daemon/receiver /etc/init.d/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serial port на новом линуксе ===&lt;br /&gt;
Выяснилось, что без доп. настройки, в последовательный порт (dev/ttyPS0) после каждой посылки добавляются символы CR и LF. Оказалось, что и RTKLib, и софт Листопада не хотят работать с таким окончанием пакетов.&lt;br /&gt;
&lt;br /&gt;
Выше не совсем так, скорее мысль в том, что каждый символ LF (0x0A) в наших данных меняется на символы CR LF, т.е. (0x0D0A). И тогда, в нашем битовом потоке меняется размер и содержимое и парсеры работают некорректно.&lt;br /&gt;
Старый линукс на Ориксах добавляет только LF. Для решения проблемы нужно через stty выключить в настройках порта опцию '''onlcr''' (преобразовывать перевод строки в возврат каретки и новую строку).&lt;br /&gt;
&lt;br /&gt;
Сделать это удалось пока только изменив скрипт демона receiver. Для решения проблемы заходим в /run/media/mmcblk0p1/daemon/receiver, и в начале секции receiver_start() {...} добавляем команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
stty -F /dev/ttyPS0 -onlcr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==device tree==&lt;br /&gt;
&lt;br /&gt;
Для внесения изменений в device tree добавляем нужные строки в файл&lt;br /&gt;
&lt;br /&gt;
project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
[https://www.xilinx.com/support/answers/61117.html пример]&lt;br /&gt;
&lt;br /&gt;
Для разборки device-tree [http://xillybus.com/tutorials/device-tree-zynq-1 ссылка]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ dtc -I dtb -O dts -o &amp;lt;name&amp;gt;.dts &amp;lt;name&amp;gt;.dtb&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для сборки device-tree&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ dtc -I dts -O dtb -o &amp;lt;name&amp;gt;.dtb &amp;lt;name&amp;gt;.dts&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Модификация device-tree ==&lt;br /&gt;
&lt;br /&gt;
После долгих мучений получилось поднять DP83867 только после добавления модификатора в файл [https://forums.xilinx.com/t5/Embedded-Linux/ZC702-Like-Board-with-DP83867CR-Ethernet-Petalinux-2017-4/td-p/831873 волшебная статья]&lt;br /&gt;
&lt;br /&gt;
[https://www.kernel.org/doc/Documentation/devicetree/bindings/net/ti%2Cdp83867.txt описание параметров]&lt;br /&gt;
&lt;br /&gt;
project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
=== Single Kit-board eth ===&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth1(с mdio) и выключен eth0.&lt;br /&gt;
&lt;br /&gt;
'''Так работает'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem1{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@12 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;12&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Начало скрытого блока|Выравнивание_заголовка = left| Ссылка = left|Заголовок =  Развернутый .dtb:}}&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/dts-v1/;&lt;br /&gt;
&lt;br /&gt;
/ {&lt;br /&gt;
	#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
	#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
	compatible = &amp;quot;xlnx,zynq-7000&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	cpus {&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
		cpu@0 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9&amp;quot;;&lt;br /&gt;
			device_type = &amp;quot;cpu&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x3&amp;gt;;&lt;br /&gt;
			clock-latency = &amp;lt;0x3e8&amp;gt;;&lt;br /&gt;
			cpu0-supply = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			operating-points = &amp;lt;0xa2c2a 0xf4240 0x51615 0xf4240&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		cpu@1 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9&amp;quot;;&lt;br /&gt;
			device_type = &amp;quot;cpu&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x3&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	fpga-full {&lt;br /&gt;
		compatible = &amp;quot;fpga-region&amp;quot;;&lt;br /&gt;
		fpga-mgr = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		ranges;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	pmu@f8891000 {&lt;br /&gt;
		compatible = &amp;quot;arm,cortex-a9-pmu&amp;quot;;&lt;br /&gt;
		interrupts = &amp;lt;0x0 0x5 0x4 0x0 0x6 0x4&amp;gt;;&lt;br /&gt;
		interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		reg = &amp;lt;0xf8891000 0x1000 0xf8893000 0x1000&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	fixedregulator {&lt;br /&gt;
		compatible = &amp;quot;regulator-fixed&amp;quot;;&lt;br /&gt;
		regulator-name = &amp;quot;VCCPINT&amp;quot;;&lt;br /&gt;
		regulator-min-microvolt = &amp;lt;0xf4240&amp;gt;;&lt;br /&gt;
		regulator-max-microvolt = &amp;lt;0xf4240&amp;gt;;&lt;br /&gt;
		regulator-boot-on;&lt;br /&gt;
		regulator-always-on;&lt;br /&gt;
		linux,phandle = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
		phandle = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	amba {&lt;br /&gt;
		u-boot,dm-pre-reloc;&lt;br /&gt;
		compatible = &amp;quot;simple-bus&amp;quot;;&lt;br /&gt;
		#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
		interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		ranges;&lt;br /&gt;
&lt;br /&gt;
		adc@f8007100 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-xadc-1.00.a&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8007100 0x20&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x7 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xc&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		can@e0008000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-can-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x13 0x1 0x24&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;can_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0008000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1c 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			tx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			rx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		can@e0009000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-can-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x14 0x1 0x25&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;can_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0009000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x33 0x4&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			tx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			rx-fifo-depth = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		gpio@e000a000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-gpio-1.0&amp;quot;;&lt;br /&gt;
			#gpio-cells = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x2a&amp;gt;;&lt;br /&gt;
			gpio-controller;&lt;br /&gt;
			interrupt-controller;&lt;br /&gt;
			#interrupt-cells = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x14 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe000a000 0x1000&amp;gt;;&lt;br /&gt;
			emio-gpio-width = &amp;lt;0x40&amp;gt;;&lt;br /&gt;
			gpio-mask-high = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			gpio-mask-low = &amp;lt;0x5600&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		i2c@e0004000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x26&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x19 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0004000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		i2c@e0005000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x27&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x30 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0005000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		interrupt-controller@f8f01000 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-gic&amp;quot;;&lt;br /&gt;
			#interrupt-cells = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
			interrupt-controller;&lt;br /&gt;
			reg = &amp;lt;0xf8f01000 0x1000 0xf8f00100 0x100&amp;gt;;&lt;br /&gt;
			num_cpus = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
			num_interrupts = &amp;lt;0x60&amp;gt;;&lt;br /&gt;
			linux,phandle = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		cache-controller@f8f02000 {&lt;br /&gt;
			compatible = &amp;quot;arm,pl310-cache&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f02000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2 0x4&amp;gt;;&lt;br /&gt;
			arm,data-latency = &amp;lt;0x3 0x2 0x2&amp;gt;;&lt;br /&gt;
			arm,tag-latency = &amp;lt;0x2 0x2 0x2&amp;gt;;&lt;br /&gt;
			cache-unified;&lt;br /&gt;
			cache-level = &amp;lt;0x2&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		memory-controller@f8006000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-ddrc-a05&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8006000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ocmc@f800c000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-ocmc-1.0&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x3 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf800c000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		serial@e0000000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,xuartps&amp;quot;, &amp;quot;cdns,uart-r1p8&amp;quot;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x17 0x1 0x28&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;uart_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0000000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1b 0x4&amp;gt;;&lt;br /&gt;
			device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
			port-number = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		serial@e0001000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,xuartps&amp;quot;, &amp;quot;cdns,uart-r1p8&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x18 0x1 0x29&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;uart_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0001000 0x1000&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x32 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e0006000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-spi-r1p6&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0006000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x1a 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x19 0x1 0x22&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e0007000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-spi-r1p6&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe0007000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x31 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1a 0x1 0x23&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		spi@e000d000 {&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;pclk&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xa 0x1 0x2b&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-qspi-1.0&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x13 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe000d000 0x1000&amp;gt;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		memory-controller@e000e000 {&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;memclk&amp;quot;, &amp;quot;aclk&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xb 0x1 0x2c&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;arm,pl353-smc-r2p1&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x12 0x4&amp;gt;;&lt;br /&gt;
			ranges;&lt;br /&gt;
			reg = &amp;lt;0xe000e000 0x1000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			flash@e1000000 {&lt;br /&gt;
				status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
				compatible = &amp;quot;arm,pl353-nand-r2p1&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0xe1000000 0x1000000&amp;gt;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			flash@e2000000 {&lt;br /&gt;
				status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
				compatible = &amp;quot;cfi-flash&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0xe2000000 0x2000000&amp;gt;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ethernet@e000b000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,zynq-gem&amp;quot;, &amp;quot;cdns,gem&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe000b000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x16 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1e 0x1 0x1e 0x1 0xd&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;pclk&amp;quot;, &amp;quot;hclk&amp;quot;, &amp;quot;tx_clk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		ethernet@e000c000 {&lt;br /&gt;
			compatible = &amp;quot;cdns,zynq-gem&amp;quot;, &amp;quot;cdns,gem&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xe000c000 0x1000&amp;gt;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2d 0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1f 0x1 0x1f 0x1 0xe&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;pclk&amp;quot;, &amp;quot;hclk&amp;quot;, &amp;quot;tx_clk&amp;quot;;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
			xlnx,ptp-enet-clock = &amp;lt;0x69f6bcb&amp;gt;;&lt;br /&gt;
			local-mac-address = [00 0a 35 00 22 01];&lt;br /&gt;
			phy-handle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
			xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			mdio {&lt;br /&gt;
				status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
				#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				#size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
				phy@12 {&lt;br /&gt;
					compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
					device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
					reg = &amp;lt;0xc&amp;gt;;&lt;br /&gt;
					ti,rx-internal-delay = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
					ti,tx-internal-delay = &amp;lt;0xa&amp;gt;;&lt;br /&gt;
					ti,fifo-depth = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
					ti,min-output-impedance;&lt;br /&gt;
					ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
					status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
					linux,phandle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
					phandle = &amp;lt;0x5&amp;gt;;&lt;br /&gt;
				};&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		sdhci@e0100000 {&lt;br /&gt;
			compatible = &amp;quot;arasan,sdhci-8.9a&amp;quot;;&lt;br /&gt;
			status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;clk_xin&amp;quot;, &amp;quot;clk_ahb&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x15 0x1 0x20&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x18 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0100000 0x1000&amp;gt;;&lt;br /&gt;
			xlnx,has-cd = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			xlnx,has-power = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
			xlnx,has-wp = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		sdhci@e0101000 {&lt;br /&gt;
			compatible = &amp;quot;arasan,sdhci-8.9a&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clock-names = &amp;quot;clk_xin&amp;quot;, &amp;quot;clk_ahb&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x16 0x1 0x21&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2f 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0101000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		slcr@f8000000 {&lt;br /&gt;
			u-boot,dm-pre-reloc;&lt;br /&gt;
			#address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-slcr&amp;quot;, &amp;quot;syscon&amp;quot;, &amp;quot;simple-mfd&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8000000 0x1000&amp;gt;;&lt;br /&gt;
			ranges;&lt;br /&gt;
			linux,phandle = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
			clkc@100 {&lt;br /&gt;
				u-boot,dm-pre-reloc;&lt;br /&gt;
				#clock-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				compatible = &amp;quot;xlnx,ps7-clkc&amp;quot;;&lt;br /&gt;
				fclk-enable = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
				clock-output-names = &amp;quot;armpll&amp;quot;, &amp;quot;ddrpll&amp;quot;, &amp;quot;iopll&amp;quot;, &amp;quot;cpu_6or4x&amp;quot;, &amp;quot;cpu_3or2x&amp;quot;, &amp;quot;cpu_2x&amp;quot;, &amp;quot;cpu_1x&amp;quot;, &amp;quot;ddr2x&amp;quot;, &amp;quot;ddr3x&amp;quot;, &amp;quot;dci&amp;quot;, &amp;quot;lqspi&amp;quot;, &amp;quot;smc&amp;quot;, &amp;quot;pcap&amp;quot;, &amp;quot;gem0&amp;quot;, &amp;quot;gem1&amp;quot;, &amp;quot;fclk0&amp;quot;, &amp;quot;fclk1&amp;quot;, &amp;quot;fclk2&amp;quot;, &amp;quot;fclk3&amp;quot;, &amp;quot;can0&amp;quot;, &amp;quot;can1&amp;quot;, &amp;quot;sdio0&amp;quot;, &amp;quot;sdio1&amp;quot;, &amp;quot;uart0&amp;quot;, &amp;quot;uart1&amp;quot;, &amp;quot;spi0&amp;quot;, &amp;quot;spi1&amp;quot;, &amp;quot;dma&amp;quot;, &amp;quot;usb0_aper&amp;quot;, &amp;quot;usb1_aper&amp;quot;, &amp;quot;gem0_aper&amp;quot;, &amp;quot;gem1_aper&amp;quot;, &amp;quot;sdio0_aper&amp;quot;, &amp;quot;sdio1_aper&amp;quot;, &amp;quot;spi0_aper&amp;quot;, &amp;quot;spi1_aper&amp;quot;, &amp;quot;can0_aper&amp;quot;, &amp;quot;can1_aper&amp;quot;, &amp;quot;i2c0_aper&amp;quot;, &amp;quot;i2c1_aper&amp;quot;, &amp;quot;uart0_aper&amp;quot;, &amp;quot;uart1_aper&amp;quot;, &amp;quot;gpio_aper&amp;quot;, &amp;quot;lqspi_aper&amp;quot;, &amp;quot;smc_aper&amp;quot;, &amp;quot;swdt&amp;quot;, &amp;quot;dbg_trc&amp;quot;, &amp;quot;dbg_apb&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x100 0x100&amp;gt;;&lt;br /&gt;
				ps-clk-frequency = &amp;lt;0x1fca055&amp;gt;;&lt;br /&gt;
				linux,phandle = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				phandle = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			rstc@200 {&lt;br /&gt;
				compatible = &amp;quot;xlnx,zynq-reset&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x200 0x48&amp;gt;;&lt;br /&gt;
				#reset-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
				syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			pinctrl@700 {&lt;br /&gt;
				compatible = &amp;quot;xlnx,pinctrl-zynq&amp;quot;;&lt;br /&gt;
				reg = &amp;lt;0x700 0x200&amp;gt;;&lt;br /&gt;
				syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		dmac@f8003000 {&lt;br /&gt;
			compatible = &amp;quot;arm,pl330&amp;quot;, &amp;quot;arm,primecell&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8003000 0x1000&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupt-names = &amp;quot;abort&amp;quot;, &amp;quot;dma0&amp;quot;, &amp;quot;dma1&amp;quot;, &amp;quot;dma2&amp;quot;, &amp;quot;dma3&amp;quot;, &amp;quot;dma4&amp;quot;, &amp;quot;dma5&amp;quot;, &amp;quot;dma6&amp;quot;, &amp;quot;dma7&amp;quot;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0xd 0x4 0x0 0xe 0x4 0x0 0xf 0x4 0x0 0x10 0x4 0x0 0x11 0x4 0x0 0x28 0x4 0x0 0x29 0x4 0x0 0x2a 0x4 0x0 0x2b 0x4&amp;gt;;&lt;br /&gt;
			#dma-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
			#dma-channels = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
			#dma-requests = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1b&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;apb_pclk&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		devcfg@f8007000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-devcfg-1.0&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x8 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8007000 0x100&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0xc 0x1 0xf 0x1 0x10 0x1 0x11 0x1 0x12&amp;gt;;&lt;br /&gt;
			clock-names = &amp;quot;ref_clk&amp;quot;, &amp;quot;fclk0&amp;quot;, &amp;quot;fclk1&amp;quot;, &amp;quot;fclk2&amp;quot;, &amp;quot;fclk3&amp;quot;;&lt;br /&gt;
			syscon = &amp;lt;0x6&amp;gt;;&lt;br /&gt;
			linux,phandle = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
			phandle = &amp;lt;0x3&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		efuse@f800d000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-efuse&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf800d000 0x20&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8f00200 {&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-global-timer&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f00200 0x20&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x1 0xb 0x301&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8001000 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0xa 0x4 0x0 0xb 0x4 0x0 0xc 0x4&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,ttc&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x6&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8001000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8002000 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x25 0x4 0x0 0x26 0x4 0x0 0x27 0x4&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,ttc&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x6&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8002000 0x1000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		timer@f8f00600 {&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x1 0xd 0x301&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a9-twd-timer&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0xf8f00600 0x20&amp;gt;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x4&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		usb@e0002000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-usb-2.20a&amp;quot;, &amp;quot;chipidea,usb2&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1c&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x15 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0002000 0x1000&amp;gt;;&lt;br /&gt;
			phy_type = &amp;quot;ulpi&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		usb@e0003000 {&lt;br /&gt;
			compatible = &amp;quot;xlnx,zynq-usb-2.20a&amp;quot;, &amp;quot;chipidea,usb2&amp;quot;;&lt;br /&gt;
			status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
			clocks = &amp;lt;0x1 0x1d&amp;gt;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x2c 0x4&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xe0003000 0x1000&amp;gt;;&lt;br /&gt;
			phy_type = &amp;quot;ulpi&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		watchdog@f8005000 {&lt;br /&gt;
			clocks = &amp;lt;0x1 0x2d&amp;gt;;&lt;br /&gt;
			compatible = &amp;quot;cdns,wdt-r1p2&amp;quot;;&lt;br /&gt;
			interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
			interrupts = &amp;lt;0x0 0x9 0x1&amp;gt;;&lt;br /&gt;
			reg = &amp;lt;0xf8005000 0x1000&amp;gt;;&lt;br /&gt;
			timeout-sec = &amp;lt;0xa&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	chosen {&lt;br /&gt;
		bootargs = &amp;quot;console=ttyPS0,115200 earlyprintk&amp;quot;;&lt;br /&gt;
		stdout-path = &amp;quot;serial0:115200n8&amp;quot;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	aliases {&lt;br /&gt;
		ethernet0 = &amp;quot;/amba/ethernet@e000c000&amp;quot;;&lt;br /&gt;
		serial0 = &amp;quot;/amba/serial@e0000000&amp;quot;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	memory {&lt;br /&gt;
		device_type = &amp;quot;memory&amp;quot;;&lt;br /&gt;
		reg = &amp;lt;0x0 0x10000000&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
{{Конец скрытого блока}}&lt;br /&gt;
&lt;br /&gt;
=== Single On-board eth ===&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth0(с mdio) и выключен eth1.&lt;br /&gt;
&lt;br /&gt;
'''Работает гигабит через type-c! Работает hot plug. Успех.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@0 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0x7&amp;gt;;&lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dual eth ===&lt;br /&gt;
&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Dual-phys-on-MDIO-EMIO/td-p/737716 интересная статья о дуал eth]&lt;br /&gt;
&lt;br /&gt;
Попытка поднять два физика. '''Пока не работает'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    local-mac-address = [00 0a 35 00 00 00];&lt;br /&gt;
    enet-reset = &amp;lt;&amp;amp;gpio0 47 0&amp;gt;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@0 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x8&amp;gt;; &lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0xa&amp;gt;; &lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;; &lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
        phy1: phy@12 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            reg = &amp;lt;12&amp;gt;;&lt;br /&gt;
            ti,rx-internal-delay = &amp;lt;0x8&amp;gt;; &lt;br /&gt;
            ti,tx-internal-delay = &amp;lt;0xa&amp;gt;; &lt;br /&gt;
            ti,fifo-depth = &amp;lt;0x01&amp;gt;; &lt;br /&gt;
            ti,min-output-impedance;&lt;br /&gt;
            ti,dp83867-rxctrl-strap-quirk;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gem1{&lt;br /&gt;
    local-mac-address = [00 0a 35 00 00 01];&lt;br /&gt;
    enet-reset = &amp;lt;&amp;amp;gpio0 47 0&amp;gt;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy1&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Oryx ===&lt;br /&gt;
&lt;br /&gt;
Итоговый system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
Меняем номера uart, чтобы системным был ttyPS1, а пользовательским ttyPS0&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
/ {&lt;br /&gt;
    aliases {&lt;br /&gt;
        serial0 = &amp;amp;uart0;&lt;br /&gt;
        serial1 = &amp;amp;uart1;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@1 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
            rxc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            rxdv-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            txc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            txen-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;1&amp;gt;;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/ {&lt;br /&gt;
    chosen {&lt;br /&gt;
            bootargs = &amp;quot;console=ttyPS1,115200 earlyprintk uio_pdrv_genirq.of_id=generic-uio&amp;quot;;&lt;br /&gt;
            stdout-path = &amp;quot;serial1:115200n8&amp;quot;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    hififo: hififo@40000000 {&lt;br /&gt;
            compatible = &amp;quot;generic-uio&amp;quot;;&lt;br /&gt;
            interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
            interrupts = &amp;lt;0 29 1&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;0x40000000 0x1000 0x18000000 0x8000000&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;uart0{&lt;br /&gt;
    port-number = &amp;lt;0&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;uart1{&lt;br /&gt;
    port-number = &amp;lt;1&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В Vivado включен eth0(с mdio) и выключен eth1.&lt;br /&gt;
Pullup пока что все включены&lt;br /&gt;
&lt;br /&gt;
[https://github.com/Xilinx/u-boot-xlnx/blob/master/doc/device-tree-bindings/net/micrel-ksz90x1.txt статья в помощь]&lt;br /&gt;
&lt;br /&gt;
'''Работает'''&lt;br /&gt;
&lt;br /&gt;
На новых платах(с отпаянными линиями линиями eth):&lt;br /&gt;
* на полноценных проводах с ходу&lt;br /&gt;
* на обкусанных проводах только если выставить 10 в ethtool&lt;br /&gt;
&lt;br /&gt;
На старых платах:&lt;br /&gt;
&lt;br /&gt;
* на полноценных проводах только если выставить 100 в ethtool&lt;br /&gt;
* на обкусанных проводах только если выставить 10 в ethtool&lt;br /&gt;
&lt;br /&gt;
Везде работает так:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ethtool -s eth0 speed 10 duplex full autoneg on&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Спидометр показывает 2,5МБ/с, т.е. 20Мбит/с!&lt;br /&gt;
&lt;br /&gt;
Можно в custom_itit.sh прописать:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ifdown eth0&lt;br /&gt;
ethtool -s eth0 speed 10 duplex full autoneg on&lt;br /&gt;
ifup eth0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;gem0{&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;&lt;br /&gt;
    phy-mode = &amp;quot;rgmii-id&amp;quot;;&lt;br /&gt;
       &lt;br /&gt;
    xlnx,eth-mode = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    mdio {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        phy0: phy@1 {&lt;br /&gt;
            compatible = &amp;quot;ethernet-phy-ieee802.3-c22&amp;quot;;&lt;br /&gt;
            device_type = &amp;quot;ethernet-phy&amp;quot;;&lt;br /&gt;
            rxc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            rxdv-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            txc-skew-ps = &amp;lt;1800&amp;gt;;&lt;br /&gt;
            txen-skew-ps = &amp;lt;0&amp;gt;;&lt;br /&gt;
            reg = &amp;lt;1&amp;gt;;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В принципе, работает сеть на новой плате с нормальным кабелем без модификации devicetree. Остальные комбинации плат-кабелей надо проверять&lt;br /&gt;
&lt;br /&gt;
== i2c ==&lt;br /&gt;
&lt;br /&gt;
В rootfs включаем&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem Packages -&amp;gt;&lt;br /&gt;
     base -&amp;gt;&lt;br /&gt;
          i2c-tools -&amp;gt;&lt;br /&gt;
               [*] i2c-tools&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для поиска устройств можно написать&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i2cdetect -y -r 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842160/Cadence+I2C+Driver Статья] по i2c и RTC&lt;br /&gt;
&lt;br /&gt;
== QSPI Flash ==&lt;br /&gt;
&lt;br /&gt;
для работы по флешь памяти как в ките (S25FL128S) - оставляем в дев.три родные compatible = &amp;quot;n25q512a&amp;quot;,&amp;quot;micron,m25p80&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
== SWDT System Watchdog Timer==&lt;br /&gt;
&lt;br /&gt;
* Модифицируем device-tree&lt;br /&gt;
&lt;br /&gt;
Вставляем в девайс три:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;watchdog0 {&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    reset-on-timeout;&lt;br /&gt;
    timeout-sec = &amp;lt;60&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RTC ==&lt;br /&gt;
&lt;br /&gt;
* Включаем в ядро подходящий драйвер&lt;br /&gt;
&lt;br /&gt;
* Модифицируем device-tree&lt;br /&gt;
&lt;br /&gt;
Вставляем в девайс три:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    i2c0: i2c@e0004000 {&lt;br /&gt;
        clock-frequency = &amp;lt;0xC350&amp;gt;;&lt;br /&gt;
        rtc@51 {&lt;br /&gt;
                compatible = &amp;quot;nxp,pcf85363&amp;quot;;&lt;br /&gt;
                reg = &amp;lt;0x51&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
    i2c1: i2c@e0005000 {&lt;br /&gt;
        clock-frequency = &amp;lt;0xC350&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Будет выглядеть так:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i2c@e0004000 {&lt;br /&gt;
    compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    clocks = &amp;lt;0x1 0x26&amp;gt;;&lt;br /&gt;
    interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
    interrupts = &amp;lt;0x0 0x19 0x4&amp;gt;;&lt;br /&gt;
    reg = &amp;lt;0xe0004000 0x1000&amp;gt;;&lt;br /&gt;
    #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
    #size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
    clock-frequency = &amp;lt;0xc350&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    rtc@51 {&lt;br /&gt;
        compatible = &amp;quot;nxp,pcf85363&amp;quot;;&lt;br /&gt;
        reg = &amp;lt;0x51&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
i2c@e0005000 {&lt;br /&gt;
    compatible = &amp;quot;cdns,i2c-r1p10&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
    clocks = &amp;lt;0x1 0x27&amp;gt;;&lt;br /&gt;
    interrupt-parent = &amp;lt;0x4&amp;gt;;&lt;br /&gt;
    interrupts = &amp;lt;0x0 0x30 0x4&amp;gt;;&lt;br /&gt;
    reg = &amp;lt;0xe0005000 0x1000&amp;gt;;&lt;br /&gt;
    #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
    #size-cells = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
    clock-frequency = &amp;lt;0xc350&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если готового драйвера нет:&lt;br /&gt;
&lt;br /&gt;
UG1144 pg.54&lt;br /&gt;
&lt;br /&gt;
Создаем новый модуль&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-create -t modules --name &amp;lt;name_module&amp;gt; --enable&lt;br /&gt;
petalinux-create -t modules --name rtc-pcf85363 --enable&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим исходный код в project-spec/meta-user/recipes-modules/rtc-pcf85363/files&lt;br /&gt;
&lt;br /&gt;
Исправленный драйвер лежит в git Clonicus\linux\&lt;br /&gt;
&lt;br /&gt;
Для удаления модуля:&lt;br /&gt;
&lt;br /&gt;
* удаляем папку из project-spec/meta-user/recipes-modules&lt;br /&gt;
&lt;br /&gt;
* В файле project-spec/meta-user/recipes-core/images/petalinux-image.bbappend удаляем соответствующую строку&lt;br /&gt;
&lt;br /&gt;
* переоткрыть petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
Пробуем собрать модуль&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build -c &amp;lt;name_module&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если ОК, собираем (собирать модуль необязательно, petalinux-build его соберет)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
petalinux-build&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И перепаковываем BOOT.bin&lt;br /&gt;
&lt;br /&gt;
Пересобираем deveice-tree с указанием нового драйвера (petalinux-build соберет сам deveice-tree)&lt;br /&gt;
&lt;br /&gt;
просмотр модулей&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsmod&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
загрузить драйвер можно&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
insmod /lib/modules/4.9.0-xilinx-v2017.4/extra/rtc-pcf85363.ko&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
или&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe rtc-pcf85363&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Если все ок и в девайс три прописан правильный драйвер для устройства, то модуль будет загружен сам'''&lt;br /&gt;
&lt;br /&gt;
Прошиваем .bit (для клоникуса нужен бит для работы PL-i2c). После этого можно пользоваться RTC&lt;br /&gt;
&lt;br /&gt;
Чтение времени из rtc если этот rtc не дефолтный (у нас rtc2)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -r -f /dev/rtc2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Синхронизация rtc по системному времени&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -w -f /dev/rtc2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правим custom_init.sh для изменения default-rtc на наше устройство&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm /dev/rtc&lt;br /&gt;
ln -s /dev/rtc2 /dev/rtc&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Установка системного времени&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
date --set &amp;quot;2013-7-31 09:30&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запись системного времени в RTC&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -w&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запись времени RTC в системное время&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hwclock -s&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Получить время с интеренета&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rdate -s &amp;lt;IP address of time server&amp;gt;&lt;br /&gt;
rdate -s 132.163.96.5 (example)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При перезагрузке &amp;quot;reboot&amp;quot; система автоматически запишет системное время в RTC&lt;br /&gt;
&lt;br /&gt;
== FPGA CONFIG from Uboot ==&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы прошить PL из uboot используем команду:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
fpga loadb 0 &amp;lt;ddr_file_addr&amp;gt; &amp;lt;file_size&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
либо скриптами:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
load_bit=fatload mmc 0 0x100000 clonicus.bit // читаем файл в ddr&lt;br /&gt;
pl_load=fpga loadb 0 0x100000 0x1400000 // прошиваем PL&lt;br /&gt;
fpga_config=run load_bit &amp;amp;&amp;amp; run pl_loadipaddr // вызов самих скриптов&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
0x10_0000 - начальный адрес ddr&lt;br /&gt;
&lt;br /&gt;
0x1_400_000 - размер в байтах для 20МБайт - указываем размер битника с запасом. Теоретически может так не работать, но работает&lt;br /&gt;
&lt;br /&gt;
== ETH over TTY==&lt;br /&gt;
&lt;br /&gt;
В ядре включаем: slip, Universal TUN/TAP&lt;br /&gt;
&lt;br /&gt;
В rootfs включаем net-tools&lt;br /&gt;
&lt;br /&gt;
Включаем iptables для перемршрутизации между подсетями и для него:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[*] Networking support  ---&amp;gt;                                          [CONFIG_NET]&lt;br /&gt;
      Networking Options  ---&amp;gt;&lt;br /&gt;
        [*] Network packet filtering framework (Netfilter) ---&amp;gt;       [CONFIG_NETFILTER]&lt;br /&gt;
          [*] Advanced netfilter configuration                        [CONFIG_NETFILTER_ADVANCED]&lt;br /&gt;
          Core Netfilter Configuration ---&amp;gt;&lt;br /&gt;
            &amp;lt;*/M&amp;gt; Netfilter connection tracking support               [CONFIG_NF_CONNTRACK]&lt;br /&gt;
            &amp;lt;*/M&amp;gt; Netfilter Xtables support (required for ip_tables)  [CONFIG_NETFILTER_XTABLES]&lt;br /&gt;
            &amp;lt;*/M&amp;gt; LOG target support                                  [CONFIG_NETFILTER_XT_TARGET_LOG]&lt;br /&gt;
          IP: Netfilter Configuration ---&amp;gt;&lt;br /&gt;
            &amp;lt;*/M&amp;gt; IP tables support (required for filtering/masq/NAT) [CONFIG_IP_NF_IPTABLES]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PC1:&lt;br /&gt;
&lt;br /&gt;
slattach -L -s 115200 -p slip /dev/ttyPS1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
ifconfig sl0 192.168.1.1/24 up&lt;br /&gt;
&lt;br /&gt;
route add default gw 192.168.1.1 sl0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PC2:&lt;br /&gt;
&lt;br /&gt;
slattach -L -s 115200 -p slip /dev/ttyPS1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
ifconfig sl0 192.168.1.2/24 up&lt;br /&gt;
&lt;br /&gt;
route add default gw 192.168.1.1 sl0&lt;br /&gt;
&lt;br /&gt;
== UART_PL ==&lt;br /&gt;
&lt;br /&gt;
Включаем в настройках ядра поддержку uart_lite, выставляем правильное максимальное число уартов&lt;br /&gt;
&lt;br /&gt;
Модифицируем system-user.dtsi&lt;br /&gt;
&lt;br /&gt;
Обращаем внимание на нумерацию serial, axi_uartlite, она должна не повторяться. То же самое с interrupts &lt;br /&gt;
Указываем верный физический адрес на шине и диапазон адресов в &amp;lt;reg&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
/ {&lt;br /&gt;
    aliases {&lt;br /&gt;
            serial2 = &amp;amp;axi_uartlite_0;&lt;br /&gt;
            serial3 = &amp;amp;axi_uartlite_1;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
/ {&lt;br /&gt;
    amba_pl {&lt;br /&gt;
        #address-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
        #size-cells = &amp;lt;0x1&amp;gt;;&lt;br /&gt;
        compatible = &amp;quot;simple-bus&amp;quot;;&lt;br /&gt;
        ranges;&lt;br /&gt;
        &lt;br /&gt;
        axi_uartlite_0: serial@80000008 {&lt;br /&gt;
                clock-names = &amp;quot;ref_clk&amp;quot;;&lt;br /&gt;
                clocks = &amp;lt;&amp;amp;clkc 0&amp;gt;;&lt;br /&gt;
                compatible = &amp;quot;xlnx,xps-uartlite-1.00.a&amp;quot;;&lt;br /&gt;
                current-speed = &amp;lt;115200&amp;gt;;&lt;br /&gt;
                device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
                interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                interrupts = &amp;lt;0 30 1&amp;gt;;&lt;br /&gt;
                port-number = &amp;lt;3&amp;gt;;&lt;br /&gt;
                reg = &amp;lt;0x80000008 0x10&amp;gt;;&lt;br /&gt;
                xlnx,baudrate = &amp;lt;0x1c200&amp;gt;;&lt;br /&gt;
                xlnx,data-bits = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
                xlnx,odd-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
                xlnx,s-axi-aclk-freq-hz-d = &amp;quot;100.0&amp;quot;;&lt;br /&gt;
                xlnx,use-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
        axi_uartlite_1: serial@8000001C {&lt;br /&gt;
                clock-names = &amp;quot;ref_clk&amp;quot;;&lt;br /&gt;
                clocks = &amp;lt;&amp;amp;clkc 0&amp;gt;;&lt;br /&gt;
                compatible = &amp;quot;xlnx,xps-uartlite-1.00.a&amp;quot;;&lt;br /&gt;
                current-speed = &amp;lt;115200&amp;gt;;&lt;br /&gt;
                device_type = &amp;quot;serial&amp;quot;;&lt;br /&gt;
                interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                interrupts = &amp;lt;0 31 1&amp;gt;;&lt;br /&gt;
                port-number = &amp;lt;4&amp;gt;;&lt;br /&gt;
                reg = &amp;lt;0x8000001C 0x10&amp;gt;;&lt;br /&gt;
                xlnx,baudrate = &amp;lt;0x1c200&amp;gt;;&lt;br /&gt;
                xlnx,data-bits = &amp;lt;0x8&amp;gt;;&lt;br /&gt;
                xlnx,odd-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
                xlnx,s-axi-aclk-freq-hz-d = &amp;quot;100.0&amp;quot;;&lt;br /&gt;
                xlnx,use-parity = &amp;lt;0x0&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если ПЛИС не прошита - будет кернел паник&lt;br /&gt;
&lt;br /&gt;
== IRQ ==&lt;br /&gt;
&lt;br /&gt;
Для поддержки irq добавляем в device-tree&lt;br /&gt;
&lt;br /&gt;
'''Важно - мы перетираем bootargs!'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/ {&lt;br /&gt;
    chosen {&lt;br /&gt;
            bootargs = &amp;quot;console=ttyPS0,115200 earlyprintk uio_pdrv_genirq.of_id=generic-uio&amp;quot;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;amba {&lt;br /&gt;
    hififo: hififo@40000000 {&lt;br /&gt;
                    compatible = &amp;quot;generic-uio&amp;quot;;&lt;br /&gt;
                    interrupt-parent = &amp;lt;&amp;amp;intc&amp;gt;;&lt;br /&gt;
                    interrupts = &amp;lt;0 29 1&amp;gt;;&lt;br /&gt;
                    reg = &amp;lt;0x40000000 0x1000 0x18000000 0x8000000&amp;gt;;&lt;br /&gt;
            };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
&lt;br /&gt;
Запустил на Z706&lt;br /&gt;
&lt;br /&gt;
[http://www.wiki.xilinx.com/Zynq+Linux+USB+Device+Driver во-первых]&lt;br /&gt;
[http://zedboard.org/content/using-petalinux-configure-zedboard%EF%BC%8C-usb-otg-can-not-work во-вторых]&lt;br /&gt;
[https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-2016-3-zynq-7010-USB-not-working/td-p/737696 в-третьих]&lt;br /&gt;
&lt;br /&gt;
В дефолтных настройках ядра petalinux_2018.1 все было включено&lt;br /&gt;
&lt;br /&gt;
включаем ресет на MIO7 pullup disabled&lt;br /&gt;
&lt;br /&gt;
все ноги интерфейса ulpi pullup disabled&lt;br /&gt;
&lt;br /&gt;
Содержимое system-user.dtsi&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/include/ &amp;quot;system-conf.dtsi&amp;quot;&lt;br /&gt;
	/{&lt;br /&gt;
&lt;br /&gt;
    usb_phy0:phy0 {&lt;br /&gt;
&lt;br /&gt;
        compatible=&amp;quot;ulpi-phy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        #phy-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       reg = &amp;lt;0xe0002000 0x1000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       view-port=&amp;lt;0x170&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
       drv-vbus;&lt;br /&gt;
&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&amp;amp;usb0 {&lt;br /&gt;
&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        dr_mode = &amp;quot;host&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        usb-phy = &amp;lt;&amp;amp;usb_phy0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
} ;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== USB-ETHERNET ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Device Drivers -&amp;gt;&lt;br /&gt;
     USB support -&amp;gt;&lt;br /&gt;
          [*] USB Modem (CDC ACM)&lt;br /&gt;
          USB Gadget Support -&amp;gt;&lt;br /&gt;
               [*] Ethernet Control Model (all)&lt;br /&gt;
               [*] RNDIS&lt;br /&gt;
               [*] Ethernet Emulation Model&lt;br /&gt;
               [*] CDC Composite Device (Ethernet and ACM)&lt;br /&gt;
               [*] USB Gadget Drivers (Ethernet gadget...)&lt;br /&gt;
     Network device support -&amp;gt;&lt;br /&gt;
          USB Network Adapters -&amp;gt;&lt;br /&gt;
               [*] Realtek RTL8152/RTL8153&lt;br /&gt;
               [*] Multi-purpose USB Networking Framework&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WiFi Dongle ==&lt;br /&gt;
&lt;br /&gt;
[https://forum.trenz-electronic.de/index.php?topic=747.0 раз]&lt;br /&gt;
[https://github.com/jinchenglee/zybo_linux_setup_doc два]&lt;br /&gt;
[http://billauer.co.il/blog/2014/06/linux-realtek-hostapd/ три]&lt;br /&gt;
&lt;br /&gt;
Творим:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Networking support -&amp;gt;&lt;br /&gt;
     Wireless -&amp;gt;&lt;br /&gt;
          [*] cfg80211&lt;br /&gt;
          [*] Generic IEEE 802.11 ... (mac80211)&lt;br /&gt;
Device Drivers -&amp;gt;&lt;br /&gt;
     Network device support -&amp;gt;&lt;br /&gt;
          Wireless LAN -&amp;gt;&lt;br /&gt;
               Realtek rtlwifi family of devices -&amp;gt;&lt;br /&gt;
                    [*] Realtek ..../RTL8188CE Wireless Network Adapter ???&lt;br /&gt;
                    [*] Realtek RTL8188EE Wireless Network Adapter ???&lt;br /&gt;
                    [*] Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter&lt;br /&gt;
     Staging drivers -&amp;gt;&lt;br /&gt;
          [*] Realtek RTL8188EU wireless LAN MIC driver&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
rootfs&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem packages -&amp;gt;&lt;br /&gt;
     network -&amp;gt;&lt;br /&gt;
          wpa-supplicant -&amp;gt;&lt;br /&gt;
               [*] wpa-supplicant&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/lwfinger/rtl8188eu/blob/master/rtl8188eufw.bin качаем файл]&lt;br /&gt;
&lt;br /&gt;
Модификаци инит-скрипта&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp /run/media/mmcblk0p1/wpa_supplicant.conf /etc/&lt;br /&gt;
&lt;br /&gt;
mkdir /lib/firmware/&lt;br /&gt;
mkdir /lib/firmware/rtlwifi/&lt;br /&gt;
cp /run/media/mmcblk0p1/rtl8188eufw.bin /lib/firmware/rtlwifi/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WiFi ESP ==&lt;br /&gt;
&lt;br /&gt;
[http://www.wiki.xilinx.com/Zynq+SDIO+Wifi Xilinx SDIP WiFi]&lt;br /&gt;
&lt;br /&gt;
[http://zedboard.org/content/sdio-wifi-driver-ar6103-problem Zedboard раз]&lt;br /&gt;
&lt;br /&gt;
[https://stackoverflow.com/questions/32129689/how-to-bind-sdio1-with-wi-fi-linux два]&lt;br /&gt;
&lt;br /&gt;
[http://picozed.org/content/steps-get-wlink8-working-using-petalinux-picozed picozed три]&lt;br /&gt;
&lt;br /&gt;
[http://zedboard.org/content/adding-wi-fi-and-bluetooth-connectivity-zedboard-using-murata-1dx-pmod zedboard четыре]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Оживление 2-го ядра ==&lt;br /&gt;
&lt;br /&gt;
== webserver == &lt;br /&gt;
&lt;br /&gt;
* [https://github.com/emlid/ReachView Репозиторий emlid ReachView] (bnd на py/Flask, fnd на html/Ajax/js/Bootstrap)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Backend:'''&lt;br /&gt;
&lt;br /&gt;
* [http://svenand.blogdrives.com/archive/195.html#.XPTYt4gzaUk Источник по busybox-httpd]&lt;br /&gt;
&lt;br /&gt;
* [https://www.afternerd.com/blog/python-http-server/ Гайд по python server]&lt;br /&gt;
&lt;br /&gt;
* [https://ru.wikibooks.org/wiki/Flask Викиучебник по Flask]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/193242/ ХаброГайд по python/Flask]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Frontend:'''&lt;br /&gt;
&lt;br /&gt;
* [https://unminify.com/ unminify CSS]&lt;br /&gt;
&lt;br /&gt;
* [https://getbootstrap.com/docs/4.3/getting-started/introduction/ Bootstrap EN getting started]&lt;br /&gt;
&lt;br /&gt;
* [https://bootstrap-4.ru/ Bootstrap RU]&lt;br /&gt;
&lt;br /&gt;
* [http://htmlbook.ru/samhtml/tekst/spetssimvoly Справочник по операторам и тегам HTML/CSS]&lt;br /&gt;
&lt;br /&gt;
* [https://www.w3schools.com/howto/default.asp Сборник шаблонов CSS W3schools]&lt;br /&gt;
&lt;br /&gt;
* [https://www.w3schools.com/w3css/w3css_tabulators.asp Анимированный сайдбар/табы]&lt;br /&gt;
&lt;br /&gt;
* [https://css-tricks.com/ CSS Tricks]&lt;br /&gt;
&lt;br /&gt;
* [https://www.cssmatic.com/ Онлайн тени/границы/градиент блоков]&lt;br /&gt;
&lt;br /&gt;
* [https://internetingishard.com/html-and-css/semantic-html/ Semantic HTML grid layout]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/202408/ Хаброгайд(ч1) по верстке]&lt;br /&gt;
&lt;br /&gt;
* [https://habr.com/ru/post/211032/ ХаброГайд(ч2) по Bootstrap]&lt;br /&gt;
&lt;br /&gt;
* [https://fontawesome.com/icons?d=gallery Fontawesome ICONS open lib]&lt;br /&gt;
&lt;br /&gt;
:* [https://htmlacademy.ru/courses/43/run/1 Нормальный онлайн HTML/CSS/JS editor]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== busybox httpd ===&lt;br /&gt;
В petalinux многие пакеты скукожены до их минимальных вариантов и встроены в общий пакет busybox. &lt;br /&gt;
В busybox есть также и вебсервер busybox-httpd.&lt;br /&gt;
Для использования нужно на этапе настройки файловой системы его включить:&lt;br /&gt;
&lt;br /&gt;
 $ petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
Конфиг: &lt;br /&gt;
 base -&amp;gt;&lt;br /&gt;
     busybox -&amp;gt;&lt;br /&gt;
          [*] busybox&lt;br /&gt;
          [*] busybox-httpd&lt;br /&gt;
          [ ] busybox-hwclock&lt;br /&gt;
          [*] busybox-inetd&lt;br /&gt;
          [*] busybox-mdev&lt;br /&gt;
          [ ] busybox-syslog &lt;br /&gt;
          [*] busybox-udhcpc &lt;br /&gt;
          [ ] busybox-udhcpd &lt;br /&gt;
&lt;br /&gt;
Сам httpd будет в '''/usr/sbin'''.&lt;br /&gt;
Рабочая папка по умолчанию в '''/srv/www/'''. Если в нее кидать файлы, то именно из нее будет отображаться контент в браузере. Папку можно изменить, перезапустив httpd с ключом -h &amp;lt;workdir&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Порт по умолчанию 80. Работает, как демон в /etc/init.d/, вкл-выкл оттуда же.&lt;br /&gt;
&lt;br /&gt;
Если положить в /srv/www/ файл index.html с неким кодом, то в браузере отобразится вебморда. Картинки работают по ссылкам.&lt;br /&gt;
&lt;br /&gt;
'''index.html'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Transitional//EN&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;clonicus'112 webserver&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h3&amp;gt;Hello, World!&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Web server is now up!&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;https://i.redd.it/oagz5eobkkt11.jpg&amp;quot; width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;http://www.srns.ru&amp;quot;&amp;gt;For more information see SRNS.ru&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== python в petalinux ===&lt;br /&gt;
В petalinux 2017.4 есть 2 питона - 2.7 и 3.5.&lt;br /&gt;
&lt;br /&gt;
 $ petalinux-config -c rootfs&lt;br /&gt;
&lt;br /&gt;
'''python2.7'''&lt;br /&gt;
  Filesystem Packages-&amp;gt;&lt;br /&gt;
     devel-&amp;gt;&lt;br /&gt;
         python-&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''python3.5'''&lt;br /&gt;
  Filesystem Packages-&amp;gt;&lt;br /&gt;
     misc-&amp;gt;&lt;br /&gt;
         python3-*&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модуль runpy.py для запуска команд вида 'python -m &amp;lt;module&amp;gt;' находится в python -&amp;gt; python-misc. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SimpleHTTPServer.py ===&lt;br /&gt;
Для первого теста поднимем встроенный в python2.7 минисервер SimpleHTTPServer.py в /usr/lib/python2.7. &lt;br /&gt;
&lt;br /&gt;
Для его запуска напишем скрипт&lt;br /&gt;
&lt;br /&gt;
'''webserver.py''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import SimpleHTTPServer &lt;br /&gt;
import SocketServer &lt;br /&gt;
 &lt;br /&gt;
PORT = 80 &lt;br /&gt;
 &lt;br /&gt;
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler &lt;br /&gt;
 &lt;br /&gt;
httpd = SocketServer.TCPServer((&amp;quot;&amp;quot;, PORT), Handler) &lt;br /&gt;
 &lt;br /&gt;
print &amp;quot;serving at port&amp;quot;, PORT &lt;br /&gt;
httpd.serve_forever()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 $ python webserver.py &lt;br /&gt;
&lt;br /&gt;
При наличии в папке со скриптом файла index.html сервер поднимется автоматически.&lt;br /&gt;
&lt;br /&gt;
=== Добавление слоев в сборку ===&lt;br /&gt;
&lt;br /&gt;
[https://www.srns.ru/wiki/Blog:DneprovD/18.07.2019_Yocto_layers Переехало в статью]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:HOWTO]]&lt;br /&gt;
[[Категория:Oryx]]&lt;br /&gt;
[[Категория:Zynq]]&lt;br /&gt;
[[Категория:EmbeddedLinux]]&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
&lt;br /&gt;
{{wl-publish: 2018-05-16 10:06:30 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/16.12.2019_AD9361Kit</id>
		<title>Blog:Lipa/16.12.2019 AD9361Kit</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/16.12.2019_AD9361Kit"/>
				<updated>2021-02-16T06:50:14Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* Косяки */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot_3.png|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма2}}&lt;br /&gt;
&lt;br /&gt;
== Косяки ==&lt;br /&gt;
* '''Пересчитать толщины дорожек и поправить топологию!'''&lt;br /&gt;
* ✓ '''На всех платах в констрейнтах сделать зазор до плейно 0,15мм!!!'''&lt;br /&gt;
* Заменить motor driver полумост на микроконтроллер&lt;br /&gt;
* &amp;lt;s&amp;gt;Неправильная распиновка трансформаторов T2-T5 (TCM1-63AX+)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Перепутан футпринт кнопки - цвета перепутаны получаются&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Поставить емкость на вход побольше - при старте по кнопке все проседает и вырубается (150мкФ хватило)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Попробовать сделать софт старт мосфета&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Отметить для монтажников где ключ у диодов шоттки - в первый раз впаяли неправильно&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Убрать емкости с FB для DC/DC и LDO&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Преобразователь уровней не тянет светодиод выбора клоков, добавить транзистор&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить терминатор на вход ппс-пушки&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Отдебажить и прописать номиналы для ппс пушки&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Проблема с клоками из LMK - нужен терминатор перед капаситорами для стандарта LVDS&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить PLL - на AD9361 необходимо подавать 40 (или 80 ?) МГц&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Клоки на AD9361 должны быть меньше 1,3В&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Завести AD9361 Sync&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Завести LMK03318 Sync&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Разобраться с уровнем клоков, уходящем в номады в клоникус&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;При использовании GPIO[0] - сдохли прерывания, не ясно в чем проблема&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Зеленый светодиод триколора слишком желтый, пока забить&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Поставить спец преобразователь на PPS-out&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить напряжения на AD8009&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Впринципе, можно вывести GPO и AUX ADC DAC если нужны&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить в список деталей световод&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Заменить EEPROM (CAT24C256WI-GT3OSCT-ND)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Завести ЦАП на порог входного ППСа (VDD_GPO увеличить DAC=0.5...VDD_GPO-0.3)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Подсветить входы/выходы, которые используются&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Аппаратный power off?&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Отключить SDO аттенюаторов, они давят AD&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;задвинуть чуток SMA вглубь&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить диод на питание антенны&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;?коротыши на ПАВы&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Заменить 50 Ом на 49,9&amp;lt;/s&amp;gt;&lt;br /&gt;
* Уменьшить сопротивление i2c pullup&lt;br /&gt;
* &amp;lt;s&amp;gt;Батарейный отсек больше футпринта, необходимо исправить футпринт&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;На второй версии не зажглись юзер-светодиоды&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Заказать резисторы для ППС-пушки&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить футпринты для согласования RF-входов&amp;lt;/s&amp;gt;&lt;br /&gt;
* Изменить элементы монтажа согласования RF для Храмцова&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить разъем под питание&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Сделать включение без кнопки&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Выходы на светодиоды через разъемы&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
{{wl-publish: 2019-12-16 09:45:04 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/16.12.2019_AD9361Kit</id>
		<title>Blog:Lipa/16.12.2019 AD9361Kit</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/16.12.2019_AD9361Kit"/>
				<updated>2021-02-16T06:49:57Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* Косяки */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot_3.png|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма2}}&lt;br /&gt;
&lt;br /&gt;
== Косяки ==&lt;br /&gt;
* '''Пересчитать толщины дорожек и поправить топологию!'''&lt;br /&gt;
* '''На всех платах в констрейнтах сделать зазор до плейно 0,15мм!!!'''&lt;br /&gt;
* Заменить motor driver полумост на микроконтроллер&lt;br /&gt;
* &amp;lt;s&amp;gt;Неправильная распиновка трансформаторов T2-T5 (TCM1-63AX+)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Перепутан футпринт кнопки - цвета перепутаны получаются&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Поставить емкость на вход побольше - при старте по кнопке все проседает и вырубается (150мкФ хватило)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Попробовать сделать софт старт мосфета&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Отметить для монтажников где ключ у диодов шоттки - в первый раз впаяли неправильно&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Убрать емкости с FB для DC/DC и LDO&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Преобразователь уровней не тянет светодиод выбора клоков, добавить транзистор&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить терминатор на вход ппс-пушки&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Отдебажить и прописать номиналы для ппс пушки&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Проблема с клоками из LMK - нужен терминатор перед капаситорами для стандарта LVDS&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить PLL - на AD9361 необходимо подавать 40 (или 80 ?) МГц&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Клоки на AD9361 должны быть меньше 1,3В&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Завести AD9361 Sync&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Завести LMK03318 Sync&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Разобраться с уровнем клоков, уходящем в номады в клоникус&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;При использовании GPIO[0] - сдохли прерывания, не ясно в чем проблема&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Зеленый светодиод триколора слишком желтый, пока забить&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Поставить спец преобразователь на PPS-out&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить напряжения на AD8009&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Впринципе, можно вывести GPO и AUX ADC DAC если нужны&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить в список деталей световод&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Заменить EEPROM (CAT24C256WI-GT3OSCT-ND)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Завести ЦАП на порог входного ППСа (VDD_GPO увеличить DAC=0.5...VDD_GPO-0.3)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Подсветить входы/выходы, которые используются&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Аппаратный power off?&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Отключить SDO аттенюаторов, они давят AD&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;задвинуть чуток SMA вглубь&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить диод на питание антенны&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;?коротыши на ПАВы&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Заменить 50 Ом на 49,9&amp;lt;/s&amp;gt;&lt;br /&gt;
* Уменьшить сопротивление i2c pullup&lt;br /&gt;
* &amp;lt;s&amp;gt;Батарейный отсек больше футпринта, необходимо исправить футпринт&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;На второй версии не зажглись юзер-светодиоды&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Заказать резисторы для ППС-пушки&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить футпринты для согласования RF-входов&amp;lt;/s&amp;gt;&lt;br /&gt;
* Изменить элементы монтажа согласования RF для Храмцова&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить разъем под питание&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Сделать включение без кнопки&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Выходы на светодиоды через разъемы&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
{{wl-publish: 2019-12-16 09:45:04 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/16.12.2019_AD9361Kit</id>
		<title>Blog:Lipa/16.12.2019 AD9361Kit</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/16.12.2019_AD9361Kit"/>
				<updated>2021-02-15T07:44:53Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* Косяки */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot_3.png|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма2}}&lt;br /&gt;
&lt;br /&gt;
== Косяки ==&lt;br /&gt;
* '''На всех платах в констрейнтах сделать зазор до плейно 0,15мм!!!'''&lt;br /&gt;
* Заменить motor driver полумост на микроконтроллер&lt;br /&gt;
* &amp;lt;s&amp;gt;Неправильная распиновка трансформаторов T2-T5 (TCM1-63AX+)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Перепутан футпринт кнопки - цвета перепутаны получаются&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Поставить емкость на вход побольше - при старте по кнопке все проседает и вырубается (150мкФ хватило)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Попробовать сделать софт старт мосфета&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Отметить для монтажников где ключ у диодов шоттки - в первый раз впаяли неправильно&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Убрать емкости с FB для DC/DC и LDO&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Преобразователь уровней не тянет светодиод выбора клоков, добавить транзистор&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить терминатор на вход ппс-пушки&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Отдебажить и прописать номиналы для ппс пушки&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Проблема с клоками из LMK - нужен терминатор перед капаситорами для стандарта LVDS&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить PLL - на AD9361 необходимо подавать 40 (или 80 ?) МГц&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Клоки на AD9361 должны быть меньше 1,3В&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Завести AD9361 Sync&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Завести LMK03318 Sync&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Разобраться с уровнем клоков, уходящем в номады в клоникус&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;При использовании GPIO[0] - сдохли прерывания, не ясно в чем проблема&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Зеленый светодиод триколора слишком желтый, пока забить&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Поставить спец преобразователь на PPS-out&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить напряжения на AD8009&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Впринципе, можно вывести GPO и AUX ADC DAC если нужны&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить в список деталей световод&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Заменить EEPROM (CAT24C256WI-GT3OSCT-ND)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Завести ЦАП на порог входного ППСа (VDD_GPO увеличить DAC=0.5...VDD_GPO-0.3)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Подсветить входы/выходы, которые используются&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Аппаратный power off?&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Отключить SDO аттенюаторов, они давят AD&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;задвинуть чуток SMA вглубь&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить диод на питание антенны&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;?коротыши на ПАВы&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Заменить 50 Ом на 49,9&amp;lt;/s&amp;gt;&lt;br /&gt;
* Уменьшить сопротивление i2c pullup&lt;br /&gt;
* &amp;lt;s&amp;gt;Батарейный отсек больше футпринта, необходимо исправить футпринт&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;На второй версии не зажглись юзер-светодиоды&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Заказать резисторы для ППС-пушки&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить футпринты для согласования RF-входов&amp;lt;/s&amp;gt;&lt;br /&gt;
* Изменить элементы монтажа согласования RF для Храмцова&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить разъем под питание&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Сделать включение без кнопки&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Выходы на светодиоды через разъемы&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
{{wl-publish: 2019-12-16 09:45:04 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/16.12.2019_AD9361Kit</id>
		<title>Blog:Lipa/16.12.2019 AD9361Kit</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/16.12.2019_AD9361Kit"/>
				<updated>2021-02-11T13:28:56Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* Косяки */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot_3.png|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма2}}&lt;br /&gt;
&lt;br /&gt;
== Косяки ==&lt;br /&gt;
* Заменить motor driver полумост на микроконтроллер&lt;br /&gt;
* &amp;lt;s&amp;gt;Неправильная распиновка трансформаторов T2-T5 (TCM1-63AX+)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Перепутан футпринт кнопки - цвета перепутаны получаются&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Поставить емкость на вход побольше - при старте по кнопке все проседает и вырубается (150мкФ хватило)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Попробовать сделать софт старт мосфета&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Отметить для монтажников где ключ у диодов шоттки - в первый раз впаяли неправильно&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Убрать емкости с FB для DC/DC и LDO&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Преобразователь уровней не тянет светодиод выбора клоков, добавить транзистор&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить терминатор на вход ппс-пушки&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Отдебажить и прописать номиналы для ппс пушки&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Проблема с клоками из LMK - нужен терминатор перед капаситорами для стандарта LVDS&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить PLL - на AD9361 необходимо подавать 40 (или 80 ?) МГц&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Клоки на AD9361 должны быть меньше 1,3В&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Завести AD9361 Sync&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Завести LMK03318 Sync&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Разобраться с уровнем клоков, уходящем в номады в клоникус&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;При использовании GPIO[0] - сдохли прерывания, не ясно в чем проблема&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Зеленый светодиод триколора слишком желтый, пока забить&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Поставить спец преобразователь на PPS-out&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить напряжения на AD8009&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Впринципе, можно вывести GPO и AUX ADC DAC если нужны&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить в список деталей световод&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Заменить EEPROM (CAT24C256WI-GT3OSCT-ND)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Завести ЦАП на порог входного ППСа (VDD_GPO увеличить DAC=0.5...VDD_GPO-0.3)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Подсветить входы/выходы, которые используются&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Аппаратный power off?&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Отключить SDO аттенюаторов, они давят AD&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;задвинуть чуток SMA вглубь&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить диод на питание антенны&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;?коротыши на ПАВы&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Заменить 50 Ом на 49,9&amp;lt;/s&amp;gt;&lt;br /&gt;
* Уменьшить сопротивление i2c pullup&lt;br /&gt;
* &amp;lt;s&amp;gt;Батарейный отсек больше футпринта, необходимо исправить футпринт&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;На второй версии не зажглись юзер-светодиоды&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Заказать резисторы для ППС-пушки&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить футпринты для согласования RF-входов&amp;lt;/s&amp;gt;&lt;br /&gt;
* Изменить элементы монтажа согласования RF для Храмцова&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить разъем под питание&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Сделать включение без кнопки&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Выходы на светодиоды через разъемы&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
{{wl-publish: 2019-12-16 09:45:04 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/18.11.2021_Synchronizer_Combainer_%D0%9A%D0%BE%D1%81%D1%8F%D0%BA%D0%B8</id>
		<title>Blog:Lipa/18.11.2021 Synchronizer Combainer Косяки</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/18.11.2021_Synchronizer_Combainer_%D0%9A%D0%BE%D1%81%D1%8F%D0%BA%D0%B8"/>
				<updated>2021-01-20T07:55:03Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* Исправить в Synchronizer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
Synchronizer Combainer Косяки&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма2}}&lt;br /&gt;
&lt;br /&gt;
== Исправить в Synchronizer ==&lt;br /&gt;
&lt;br /&gt;
* Перегенерить координейтс! В нем неверные номиналы&lt;br /&gt;
* Пересоздать закупочный лист. Не хватает 0,1мкФ. Может еще чего-то&lt;br /&gt;
* Проверить 0,01мкФ 10нФ&lt;br /&gt;
* R46 R47 указать номиналы для порога PPS_IN&lt;br /&gt;
* DA6 впаян вверх ногами, уточнить ключ микросхемы&lt;br /&gt;
* DA2 впаян вверх ногами, уточнить ключ микросхемы&lt;br /&gt;
* При подключенном JTAG плисина сама не прошивается с флешки&lt;br /&gt;
&lt;br /&gt;
== Исправить в Combainer ==&lt;br /&gt;
&lt;br /&gt;
* Платы изготовлены не по тому стеку. Нужно сделать 1,5мм. Иначе волновое сопротивление 60 Ом и не одеваются SMA&lt;br /&gt;
&lt;br /&gt;
{{wl-publish: 2021-01-18 10:28:12 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/18.11.2021_Synchronizer_Combainer_%D0%9A%D0%BE%D1%81%D1%8F%D0%BA%D0%B8</id>
		<title>Blog:Lipa/18.11.2021 Synchronizer Combainer Косяки</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/18.11.2021_Synchronizer_Combainer_%D0%9A%D0%BE%D1%81%D1%8F%D0%BA%D0%B8"/>
				<updated>2021-01-18T10:42:40Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* Исправить в Synchronizer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
Synchronizer Combainer Косяки&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма2}}&lt;br /&gt;
&lt;br /&gt;
== Исправить в Synchronizer ==&lt;br /&gt;
&lt;br /&gt;
* Перегенерить координейтс! В нем неверные номиналы&lt;br /&gt;
* Пересоздать закупочный лист. Не хватает 0,1мкФ. Может еще чего-то&lt;br /&gt;
* Проверить 0,01мкФ 10нФ&lt;br /&gt;
* R46 R47 указать номиналы для порога PPS_IN&lt;br /&gt;
* DA6 впаян вверх ногами, уточнить ключ микросхемы&lt;br /&gt;
* DA2 впаян вверх ногами, уточнить ключ микросхемы&lt;br /&gt;
&lt;br /&gt;
== Исправить в Combainer ==&lt;br /&gt;
&lt;br /&gt;
* Платы изготовлены не по тому стеку. Нужно сделать 1,5мм. Иначе волновое сопротивление 60 Ом и не одеваются SMA&lt;br /&gt;
&lt;br /&gt;
{{wl-publish: 2021-01-18 10:28:12 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/18.11.2021_Synchronizer_Combainer_%D0%9A%D0%BE%D1%81%D1%8F%D0%BA%D0%B8</id>
		<title>Blog:Lipa/18.11.2021 Synchronizer Combainer Косяки</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/18.11.2021_Synchronizer_Combainer_%D0%9A%D0%BE%D1%81%D1%8F%D0%BA%D0%B8"/>
				<updated>2021-01-18T09:49:41Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* Исправить в Synchronizer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
Synchronizer Combainer Косяки&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма2}}&lt;br /&gt;
&lt;br /&gt;
== Исправить в Synchronizer ==&lt;br /&gt;
&lt;br /&gt;
* Перегенерить координейтс! В нем неверные номиналы&lt;br /&gt;
* Пересоздать закупочный лист. Не хватает 0,1мкФ. Может еще чего-то&lt;br /&gt;
* Проверить 0,01мкФ 10нФ&lt;br /&gt;
* R46 R47 указать номиналы для порога PPS_IN&lt;br /&gt;
* DA6 предположительно впаян вверх ногами, уточнить ключ микросхемы&lt;br /&gt;
* DA2 предположительно впаян вверх ногами, уточнить ключ микросхемы&lt;br /&gt;
&lt;br /&gt;
== Исправить в Combainer ==&lt;br /&gt;
&lt;br /&gt;
* Платы изготовлены не по тому стеку. Нужно сделать 1,5мм. Иначе волновое сопротивление 60 Ом и не одеваются SMA&lt;br /&gt;
&lt;br /&gt;
{{wl-publish: 2021-01-18 10:28:12 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/18.11.2021_Synchronizer_Combainer_%D0%9A%D0%BE%D1%81%D1%8F%D0%BA%D0%B8</id>
		<title>Blog:Lipa/18.11.2021 Synchronizer Combainer Косяки</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/18.11.2021_Synchronizer_Combainer_%D0%9A%D0%BE%D1%81%D1%8F%D0%BA%D0%B8"/>
				<updated>2021-01-18T07:55:48Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* Исправить в Synchronizer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
Synchronizer Combainer Косяки&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма2}}&lt;br /&gt;
&lt;br /&gt;
== Исправить в Synchronizer ==&lt;br /&gt;
&lt;br /&gt;
* Перегенерить координейтс! В нем неверные номиналы&lt;br /&gt;
* Пересоздать закупочный лист. Не хватает 0,1мкФ. Может еще чего-то&lt;br /&gt;
* Проверить 0,01мкФ 10нФ&lt;br /&gt;
* R46 R47 указать номиналы для порога PPS_IN&lt;br /&gt;
&lt;br /&gt;
== Исправить в Combainer ==&lt;br /&gt;
&lt;br /&gt;
* Платы изготовлены не по тому стеку. Нужно сделать 1,5мм. Иначе волновое сопротивление 60 Ом и не одеваются SMA&lt;br /&gt;
&lt;br /&gt;
{{wl-publish: 2021-01-18 10:28:12 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/18.11.2021_Synchronizer_Combainer_%D0%9A%D0%BE%D1%81%D1%8F%D0%BA%D0%B8</id>
		<title>Blog:Lipa/18.11.2021 Synchronizer Combainer Косяки</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/18.11.2021_Synchronizer_Combainer_%D0%9A%D0%BE%D1%81%D1%8F%D0%BA%D0%B8"/>
				<updated>2021-01-18T07:42:36Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* Исправить в Synchronizer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
Synchronizer Combainer Косяки&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма2}}&lt;br /&gt;
&lt;br /&gt;
== Исправить в Synchronizer ==&lt;br /&gt;
&lt;br /&gt;
* Перегенерить координейтс! В нем неверные номиналы&lt;br /&gt;
* Пересоздать закупочный лист. Не хватает 0,1мкФ. Может еще чего-то&lt;br /&gt;
* Проверить 0,01мкФ 10нФ&lt;br /&gt;
&lt;br /&gt;
== Исправить в Combainer ==&lt;br /&gt;
&lt;br /&gt;
* Платы изготовлены не по тому стеку. Нужно сделать 1,5мм. Иначе волновое сопротивление 60 Ом и не одеваются SMA&lt;br /&gt;
&lt;br /&gt;
{{wl-publish: 2021-01-18 10:28:12 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/18.11.2021_Synchronizer_Combainer_%D0%9A%D0%BE%D1%81%D1%8F%D0%BA%D0%B8</id>
		<title>Blog:Lipa/18.11.2021 Synchronizer Combainer Косяки</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/18.11.2021_Synchronizer_Combainer_%D0%9A%D0%BE%D1%81%D1%8F%D0%BA%D0%B8"/>
				<updated>2021-01-18T07:41:42Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* Исправить в Synchronizer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
Synchronizer Combainer Косяки&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма2}}&lt;br /&gt;
&lt;br /&gt;
== Исправить в Synchronizer ==&lt;br /&gt;
&lt;br /&gt;
* Перегенерить координейтс! В нем неверные номиналы&lt;br /&gt;
* Пересоздать закупочный лист. Не хватает 0,1мкФ. Может еще чего-то&lt;br /&gt;
&lt;br /&gt;
== Исправить в Combainer ==&lt;br /&gt;
&lt;br /&gt;
* Платы изготовлены не по тому стеку. Нужно сделать 1,5мм. Иначе волновое сопротивление 60 Ом и не одеваются SMA&lt;br /&gt;
&lt;br /&gt;
{{wl-publish: 2021-01-18 10:28:12 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/18.11.2021_Synchronizer_Combainer_%D0%9A%D0%BE%D1%81%D1%8F%D0%BA%D0%B8</id>
		<title>Blog:Lipa/18.11.2021 Synchronizer Combainer Косяки</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/18.11.2021_Synchronizer_Combainer_%D0%9A%D0%BE%D1%81%D1%8F%D0%BA%D0%B8"/>
				<updated>2021-01-18T07:29:32Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
Synchronizer Combainer Косяки&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма2}}&lt;br /&gt;
&lt;br /&gt;
== Исправить в Synchronizer ==&lt;br /&gt;
&lt;br /&gt;
* Перегенерить координейтс! В нем неверные номиналы&lt;br /&gt;
&lt;br /&gt;
== Исправить в Combainer ==&lt;br /&gt;
&lt;br /&gt;
* Платы изготовлены не по тому стеку. Нужно сделать 1,5мм. Иначе волновое сопротивление 60 Ом и не одеваются SMA&lt;br /&gt;
&lt;br /&gt;
{{wl-publish: 2021-01-18 10:28:12 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/18.11.2021_Synchronizer_Combainer_%D0%9A%D0%BE%D1%81%D1%8F%D0%BA%D0%B8</id>
		<title>Blog:Lipa/18.11.2021 Synchronizer Combainer Косяки</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/18.11.2021_Synchronizer_Combainer_%D0%9A%D0%BE%D1%81%D1%8F%D0%BA%D0%B8"/>
				<updated>2021-01-18T07:28:12Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
Synchronizer Combainer Косяки&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма2}}&lt;br /&gt;
&lt;br /&gt;
== Исправить в Synchronizer ==&lt;br /&gt;
&lt;br /&gt;
* 1&lt;br /&gt;
&lt;br /&gt;
== Исправить в Combainer ==&lt;br /&gt;
&lt;br /&gt;
* 1&lt;br /&gt;
{{wl-publish: 2021-01-18 10:28:12 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/18.11.2021_Synchronizer_Combainer_%D0%9A%D0%BE%D1%81%D1%8F%D0%BA%D0%B8</id>
		<title>Blog:Lipa/18.11.2021 Synchronizer Combainer Косяки</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/18.11.2021_Synchronizer_Combainer_%D0%9A%D0%BE%D1%81%D1%8F%D0%BA%D0%B8"/>
				<updated>2021-01-18T07:28:06Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: Новая страница: «&amp;lt;summary [ hidden ] &amp;gt;  Synchronizer Combainer Косяки  &amp;lt;/summary&amp;gt;  {{Форма2}}  == Исправить в Synchronizer ==  * 1  == Исправить в C…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
Synchronizer Combainer Косяки&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма2}}&lt;br /&gt;
&lt;br /&gt;
== Исправить в Synchronizer ==&lt;br /&gt;
&lt;br /&gt;
* 1&lt;br /&gt;
&lt;br /&gt;
== Исправить в Combainer ==&lt;br /&gt;
&lt;br /&gt;
* 1&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/05.06.2018_Clonicus</id>
		<title>Blog:Lipa/05.06.2018 Clonicus</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/05.06.2018_Clonicus"/>
				<updated>2021-01-11T11:30:13Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* Известные проблемы в Clonicus_1.2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
Clonicus&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма2}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Исправить в 1.1 ==&lt;br /&gt;
&lt;br /&gt;
* ✔ Решить вопрос с питанием - идеальные диоды до 5,5В. Buck/Bust работает от 4В, но по току может не хватить на весь клоникус. '''На вход просится TPS61235P'''&lt;br /&gt;
* ✔ Усилить дорожки входного питания&lt;br /&gt;
* ✔ Расположить термоплейны на горячих элементах по всем слоям&lt;br /&gt;
* ✔ Разместить в доступном месте TP на блокировку всех ключей линий питания для первого запуска&lt;br /&gt;
* ✔ Добавить блокировочных конденсаторов на ПЛИС&lt;br /&gt;
* ✔ Изменить напряжение банка 35 на 1.8В.&lt;br /&gt;
* &amp;lt;s&amp;gt;Возможно, завести питание банков через нулевки для возможности правки.&amp;lt;/s&amp;gt;&lt;br /&gt;
* ✔ Перенести токовый сенсор дальше от края платы&lt;br /&gt;
* ✔ Перевести периферию на другой банк или ставить level-shifter.&lt;br /&gt;
* ✔ Собрать тестовый проект в вивадо и прописанными ногами в .xdc!&lt;br /&gt;
* ✔ Перепроверить волновое сопротивление USB и Ethernet&lt;br /&gt;
* ✔ Возможно, убрать нулевки eth. (Проверить работу по 1000M base jack)&lt;br /&gt;
* ✔ Убрать L5 из схематики.&lt;br /&gt;
* ✔ Добавить RC цепочку на ресет PS_POR_B.&lt;br /&gt;
* ✔ Добавить RC цепочки на ключи питания всех линий.&lt;br /&gt;
* ✔ Добавить ключ на аналоговые 3.3В.&lt;br /&gt;
* ✔ Исправить подключение к BGA падам. Площадь должна быть одинакова.&lt;br /&gt;
* ✔ Поменять местами rx-tx в FTDI. Должно быть tx-rx; rx-tx.&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить tespoints.&amp;lt;/s&amp;gt;&lt;br /&gt;
* ✔ Продумать ресет на FTDI. Сделать TP&lt;br /&gt;
* ✔ Добавить светодиод на FTDI.&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить светодиоды или вывести их на кабель для сигнала активности eth.&amp;lt;/s&amp;gt;&lt;br /&gt;
* ✔ Добавить user LED.&lt;br /&gt;
* ✔ Проверить работу мультиплексора клоков 10МГц.&lt;br /&gt;
* ✔ Проверить RF LNA и делители.&lt;br /&gt;
* ✔ Проверить заряд ионистра.&lt;br /&gt;
* ✔ Поменять диод. Более подходящих не нашел, оставляем.&lt;br /&gt;
* ✔ Выпаять тантал. Вернуть делители DC/DC - убедиться в старте питания. Проверить диапазон рабочих входных напряжений.&lt;br /&gt;
* ✔ Добавить монтажные ушки на края платы.&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить возможность отпилить SPI от каждой из номад, добавить TP на SPI.&amp;lt;/s&amp;gt;&lt;br /&gt;
* ✔ Добавить шелкографию на светодиоды&lt;br /&gt;
* ✔ Исправить шелкографию на Clonicus 1.1&lt;br /&gt;
* ✔ Отметить оси xyz на шелкографии&lt;br /&gt;
* ✔ Запитать RTC через мезанин&lt;br /&gt;
* Заказать радиаторов на ZYNQ&lt;br /&gt;
* Заменить силовые керамические конденсаторы на GRM21BD71A226ME44L на входном DC/DC&lt;br /&gt;
* Заменить все конденсаторы питания с запасом по напряжению&lt;br /&gt;
* Заказать разных RC для ключей питания&lt;br /&gt;
&lt;br /&gt;
== Case Board v1.0 ==&lt;br /&gt;
&lt;br /&gt;
Пожелания к изготовителю:&lt;br /&gt;
&lt;br /&gt;
# Постараться не размещать под модулем Clonicus крупные выпирающие детали. Мелочь - на обсуждение с нами.&lt;br /&gt;
# Добавить металлизацию на все отверстия под стойки.&lt;br /&gt;
# В проекте используется световод на 3 диода- под них нужно разметить монтажные площадки. В чертеже указано только место посадки световода.&lt;br /&gt;
# В проекте используется тактовая кнопка включения без защелки, нужно продумать механизм электрической фиксации.&lt;br /&gt;
# Желательно обеспечить свободное изъятие/установку sd карточки - недопустимо монтировать крупные элементы на ее пути.&lt;br /&gt;
# Учесть зоны металлизации по краям платы и способ монтажа в корпус в пазы - нежелательно размещение деталей по краям.&lt;br /&gt;
# На конечной стадии проектирования обязательно провести верификацию совпадения разъемов модуля и платы расширения.&lt;br /&gt;
# В проекте должны быть использованы разъемы из списка компонентов.&lt;br /&gt;
# Недопустимо монтировать крупные детали на пути следования mmcx провода от платы в модуль Clonicus.&lt;br /&gt;
# Желательно использовать чип Ethernet PHY, указанный в списке компонентов.&lt;br /&gt;
&lt;br /&gt;
 from Ivan:&lt;br /&gt;
* Не ставить мелочь сверху вокруг клоникуса, чтобы его можно было легко отодрать&lt;br /&gt;
* Потребление тока завести в клоникус&lt;br /&gt;
* Программное отключение?&lt;br /&gt;
* Два уарта&lt;br /&gt;
* Сложную схемоту не ставить под клоникус, чтобы ее можно было отладить&lt;br /&gt;
* Нормальный монитор питания&lt;br /&gt;
* По дефолту после монтажа заблокировать ключи питания под проверку всех номиналов&lt;br /&gt;
* Мшу для клоникуса&lt;br /&gt;
* Завести может быть 10МГц самые классные на клоникус напрямую&lt;br /&gt;
&lt;br /&gt;
== Правки в Clonicus_1.1 ==&lt;br /&gt;
* 111 плата часто не прогружает плис&lt;br /&gt;
* на 111,112 плате Заменил R1 50к на 11к&lt;br /&gt;
* на 112 плате поднял напряжение ядра примерно на 30мВ&lt;br /&gt;
* &amp;lt;s&amp;gt;на 114 плате zynq 45. Сгоревший банк 12. Не заработают номады. Не работает DC/DC 3.3V и 1.8_DDR&amp;lt;/s&amp;gt;&lt;br /&gt;
* на 111,116 отрезал питание TCXO_33 и делителя клоков. Вырвал делитель клоков. Теперь идут клоки только в арм&lt;br /&gt;
* на 112 плате добавил конденсатор на питание tcxo&lt;br /&gt;
* '''на 115 плате и ответке №4 полуоторван MEZ2'''&lt;br /&gt;
* '''на 117 плате заменил резистроры i2c на 1k'''&lt;br /&gt;
&lt;br /&gt;
== Известные проблемы в Clonicus_1.1 ==&lt;br /&gt;
&lt;br /&gt;
* ✓ Заменить МШУ ALM-GA001&lt;br /&gt;
* ✓ &amp;lt;s&amp;gt;Заменить LDO фронтендов&amp;lt;/s&amp;gt; Добавил 3 термовиа&lt;br /&gt;
* ✓ &amp;lt;s&amp;gt;Заменить MOSFET светодиода eth на BGA&amp;lt;/s&amp;gt;&lt;br /&gt;
* Использовать емкость 10n вместо 0,01мкФ в dxdesigner&lt;br /&gt;
* &amp;lt;s&amp;gt;Дозаказать TCXO 10MHz. АБН накосячил&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Заменить TCXO на получше&amp;lt;/s&amp;gt;&lt;br /&gt;
* ✓ Поставить более точные резисторы в DC/DC 1V, расчитать другие номиналы для чуть большего напряжения&lt;br /&gt;
* ✓ '''Подтянуть DONE вверх''' Возможно, можно просто не впаивать подтяжку вниз.&lt;br /&gt;
* ✓ Сузить монтажные ушки&lt;br /&gt;
* ✓ Сдвинуть ухо из под юсб&lt;br /&gt;
* ✓ Предположительно поменять С42 на 1000пФ; L6 на 56нГн; R70 на 11кОм&lt;br /&gt;
* ✓ Добавить светодиод на мультиплексор клоков&lt;br /&gt;
* ✓ Недостаточное усиление МШУ. Нужен как минимум еще один.&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить шелкографию номеров ПАВов&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Проблемы с TCXO. Пока что не впаиваем R45&amp;lt;/s&amp;gt;&lt;br /&gt;
* ✓ Добавить какую-нибудь eeprom на i2c для идентификации платы&lt;br /&gt;
* ✓ Напряжение с шунта на токовый сенсор необходимо снимать непосредственно с падов, иначе сказывается сопротивление дорожек&lt;br /&gt;
* Возможно, с использованием кита попадает фантомное питание через физик и цинк не стартует. Надо синхронизировать домены питания и выводить power_good&lt;br /&gt;
* Подумать над общим монитором питания&lt;br /&gt;
* Проблемы с запуском питания. Используется boost конвертер на 5,1В. По даташиту на входе &amp;lt;= 4,5В должно быть. При 4,9-5В бывают проблемы. Надо что-то придумать&lt;br /&gt;
* ✓ Усилить входной mmcx - отрывается с плейном&lt;br /&gt;
* Стек на PLD больше 6мм - клоникус переламывается. Надо взять другой ответный разъем (а так ли это...)&lt;br /&gt;
* &amp;lt;s&amp;gt;Клоки между номадами стартуют в случайной фазе&amp;lt;/s&amp;gt; похер&lt;br /&gt;
* Выходной цифровой сигнал из номад не фифференциальный и возвратные токи текут через объединение земель и предположительно они создают колоссальные цифровые наводки. Необходимо в домене AGND поставить преобразователь CMOS-LVDS и уже дифф сигнал вести в плис в домен DGND&lt;br /&gt;
* ✓ Потери на 1В - тонкие дорожки у ключа, на клоникусе напряжение 0,975В. Надо что-то решать, возможно еще ключи перегреваются&lt;br /&gt;
* Добавить TP на питание вход выход ключей&lt;br /&gt;
* Разгрузить входной DC/DC step-up. Включить 1В и может другие на вход?&lt;br /&gt;
* Может быть коммутировать FB 1В на выход ключа?&lt;br /&gt;
* Завести может быть ddr_vtt на xadc&lt;br /&gt;
* Ускорить снятие POR_PS и сделать его более крутым&lt;br /&gt;
* клоникус чувствителен к статике - надо думать&lt;br /&gt;
* Ставить DDR3&lt;br /&gt;
* Может стоит поставить QSPI-flash&lt;br /&gt;
* Если будем использовать usb-uart можно запитать ftdi от usb для определения до включения платы (но для клоникуса это не актуально - от usb запитается и плата)&lt;br /&gt;
* &amp;lt;s&amp;gt;'''Исправить питание TCXO_33''' Сделать 1,8В. Перегруз на входе делителя клоков.&amp;lt;/s&amp;gt;&lt;br /&gt;
* ✓ Удалить делитель клоков для ZYNQ - постоянно проблемы монтажа&lt;br /&gt;
* ✓ &amp;lt;s&amp;gt;LDO делителя клоков 33МГц не нагружен и не зафильтрован. Добавить конденсатор! '''Выкидываем делитель клоков'''&amp;lt;/s&amp;gt;&lt;br /&gt;
* ✓ Может стоит вевести i2c через MIO для работы без прошивки. Надо подумать&lt;br /&gt;
* ✓ Перегруз номады клоками от делителя. Необходимо запитать банки делителя от 1,8В&lt;br /&gt;
* &amp;lt;s&amp;gt;Возможно перегружен делитель RF клоков&amp;lt;/s&amp;gt;&lt;br /&gt;
* '''Обдув tcxo приводит к срыву работы приемника'''&lt;br /&gt;
* Заменить ethernet phy на USB&lt;br /&gt;
* ✓ Питание 1В сильно нестабильное - добавить много всяких емкостей на выход DC/DC&lt;br /&gt;
* ✓ Плату выбивает статикой особенно с антенны. Добавить защитных диодов&lt;br /&gt;
* ✓ Добавить по-умолчанию нулевку на блокирование ключей питания под выпайку после проверки&lt;br /&gt;
* Согласовать rf-вход. На 115 клоникусе согласование на 2Ghz&lt;br /&gt;
* Указать рабочее напряжение кондеров&lt;br /&gt;
* '''Заменить TPS22920 на TPS22970''' для 105С&lt;br /&gt;
* Подумать над горячими индастриал элементами&lt;br /&gt;
&lt;br /&gt;
== Известные проблемы в Clonicus_1.2 ==&lt;br /&gt;
* Смотреть на версию чипа EEPROM!&lt;br /&gt;
* Исправить масочный мостик VD2 tvs-диода на входе рф&lt;br /&gt;
* Попробовать изменить вскрытия маски и масочные мостики на возможности цветных масок&lt;br /&gt;
* ✓ Убрать ключ в монтажке на резисторные сборки&lt;br /&gt;
* Подумать, как убрать путаницу между двумя монтажными экселями&lt;br /&gt;
* ✓ Убрать на эссамбли диодов VD1 VD3 плюс, а ключ катода сделать вертикальным и внутри корпуса&lt;br /&gt;
* ✓ Исправить футпринт ABS05 ZQ12 - разнести пады&lt;br /&gt;
* Сделать КЗ на футпринт резистора блокиратора питания&lt;br /&gt;
* ✓ Убрать с монтажа резистора блокиратора питания&lt;br /&gt;
* ✓ Неправильно впаялись светодиоды, поправить ключи (питание DONE, выбор клоков)&lt;br /&gt;
* Не был впаян R1&lt;br /&gt;
* Не был запаян пин коннектора SD&lt;br /&gt;
* Был коротыш R79 C87&lt;br /&gt;
* Уменьшить сопротивление i2c pullup&lt;br /&gt;
* Не использовать MIO I2C - он может виснуть. Лучше EMIO - на крайняк можно свое ядро подцепить&lt;br /&gt;
&lt;br /&gt;
== Тайное знание создания шелкографии лого ==&lt;br /&gt;
* Генерим силг-ген по классике (слои силкскрин аутлайн топ, силк_тор_тескст). width-option 200um&lt;br /&gt;
* Делаем маск ген&lt;br /&gt;
[[File:Screenshot_32.png|789px]]&lt;br /&gt;
* Открываем silk_top_text_3, в шрифте лого на каждом полигоне удаляем одну вершину - элемент зальется&lt;br /&gt;
* Еще раз генерим силк-ген из silk_top_text_3 без опции width-option (только топ!)&lt;br /&gt;
&lt;br /&gt;
== Всякое ==&lt;br /&gt;
[[File:Screenshot_2019-05-28_0_131120.png|400px]]&lt;br /&gt;
[[File:LeCroy1.png|400px]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
{{wl-publish: 2018-06-05 15:03:13 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	<entry>
		<id>https://buyordew.srns.ru/wiki/Blog:Lipa/05.06.2018_Clonicus</id>
		<title>Blog:Lipa/05.06.2018 Clonicus</title>
		<link rel="alternate" type="text/html" href="https://buyordew.srns.ru/wiki/Blog:Lipa/05.06.2018_Clonicus"/>
				<updated>2021-01-11T10:38:27Z</updated>
		
		<summary type="html">&lt;p&gt;Lipa: /* Известные проблемы в Clonicus_1.2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;summary [ hidden ] &amp;gt;&lt;br /&gt;
&lt;br /&gt;
Clonicus&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Форма2}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Исправить в 1.1 ==&lt;br /&gt;
&lt;br /&gt;
* ✔ Решить вопрос с питанием - идеальные диоды до 5,5В. Buck/Bust работает от 4В, но по току может не хватить на весь клоникус. '''На вход просится TPS61235P'''&lt;br /&gt;
* ✔ Усилить дорожки входного питания&lt;br /&gt;
* ✔ Расположить термоплейны на горячих элементах по всем слоям&lt;br /&gt;
* ✔ Разместить в доступном месте TP на блокировку всех ключей линий питания для первого запуска&lt;br /&gt;
* ✔ Добавить блокировочных конденсаторов на ПЛИС&lt;br /&gt;
* ✔ Изменить напряжение банка 35 на 1.8В.&lt;br /&gt;
* &amp;lt;s&amp;gt;Возможно, завести питание банков через нулевки для возможности правки.&amp;lt;/s&amp;gt;&lt;br /&gt;
* ✔ Перенести токовый сенсор дальше от края платы&lt;br /&gt;
* ✔ Перевести периферию на другой банк или ставить level-shifter.&lt;br /&gt;
* ✔ Собрать тестовый проект в вивадо и прописанными ногами в .xdc!&lt;br /&gt;
* ✔ Перепроверить волновое сопротивление USB и Ethernet&lt;br /&gt;
* ✔ Возможно, убрать нулевки eth. (Проверить работу по 1000M base jack)&lt;br /&gt;
* ✔ Убрать L5 из схематики.&lt;br /&gt;
* ✔ Добавить RC цепочку на ресет PS_POR_B.&lt;br /&gt;
* ✔ Добавить RC цепочки на ключи питания всех линий.&lt;br /&gt;
* ✔ Добавить ключ на аналоговые 3.3В.&lt;br /&gt;
* ✔ Исправить подключение к BGA падам. Площадь должна быть одинакова.&lt;br /&gt;
* ✔ Поменять местами rx-tx в FTDI. Должно быть tx-rx; rx-tx.&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить tespoints.&amp;lt;/s&amp;gt;&lt;br /&gt;
* ✔ Продумать ресет на FTDI. Сделать TP&lt;br /&gt;
* ✔ Добавить светодиод на FTDI.&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить светодиоды или вывести их на кабель для сигнала активности eth.&amp;lt;/s&amp;gt;&lt;br /&gt;
* ✔ Добавить user LED.&lt;br /&gt;
* ✔ Проверить работу мультиплексора клоков 10МГц.&lt;br /&gt;
* ✔ Проверить RF LNA и делители.&lt;br /&gt;
* ✔ Проверить заряд ионистра.&lt;br /&gt;
* ✔ Поменять диод. Более подходящих не нашел, оставляем.&lt;br /&gt;
* ✔ Выпаять тантал. Вернуть делители DC/DC - убедиться в старте питания. Проверить диапазон рабочих входных напряжений.&lt;br /&gt;
* ✔ Добавить монтажные ушки на края платы.&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить возможность отпилить SPI от каждой из номад, добавить TP на SPI.&amp;lt;/s&amp;gt;&lt;br /&gt;
* ✔ Добавить шелкографию на светодиоды&lt;br /&gt;
* ✔ Исправить шелкографию на Clonicus 1.1&lt;br /&gt;
* ✔ Отметить оси xyz на шелкографии&lt;br /&gt;
* ✔ Запитать RTC через мезанин&lt;br /&gt;
* Заказать радиаторов на ZYNQ&lt;br /&gt;
* Заменить силовые керамические конденсаторы на GRM21BD71A226ME44L на входном DC/DC&lt;br /&gt;
* Заменить все конденсаторы питания с запасом по напряжению&lt;br /&gt;
* Заказать разных RC для ключей питания&lt;br /&gt;
&lt;br /&gt;
== Case Board v1.0 ==&lt;br /&gt;
&lt;br /&gt;
Пожелания к изготовителю:&lt;br /&gt;
&lt;br /&gt;
# Постараться не размещать под модулем Clonicus крупные выпирающие детали. Мелочь - на обсуждение с нами.&lt;br /&gt;
# Добавить металлизацию на все отверстия под стойки.&lt;br /&gt;
# В проекте используется световод на 3 диода- под них нужно разметить монтажные площадки. В чертеже указано только место посадки световода.&lt;br /&gt;
# В проекте используется тактовая кнопка включения без защелки, нужно продумать механизм электрической фиксации.&lt;br /&gt;
# Желательно обеспечить свободное изъятие/установку sd карточки - недопустимо монтировать крупные элементы на ее пути.&lt;br /&gt;
# Учесть зоны металлизации по краям платы и способ монтажа в корпус в пазы - нежелательно размещение деталей по краям.&lt;br /&gt;
# На конечной стадии проектирования обязательно провести верификацию совпадения разъемов модуля и платы расширения.&lt;br /&gt;
# В проекте должны быть использованы разъемы из списка компонентов.&lt;br /&gt;
# Недопустимо монтировать крупные детали на пути следования mmcx провода от платы в модуль Clonicus.&lt;br /&gt;
# Желательно использовать чип Ethernet PHY, указанный в списке компонентов.&lt;br /&gt;
&lt;br /&gt;
 from Ivan:&lt;br /&gt;
* Не ставить мелочь сверху вокруг клоникуса, чтобы его можно было легко отодрать&lt;br /&gt;
* Потребление тока завести в клоникус&lt;br /&gt;
* Программное отключение?&lt;br /&gt;
* Два уарта&lt;br /&gt;
* Сложную схемоту не ставить под клоникус, чтобы ее можно было отладить&lt;br /&gt;
* Нормальный монитор питания&lt;br /&gt;
* По дефолту после монтажа заблокировать ключи питания под проверку всех номиналов&lt;br /&gt;
* Мшу для клоникуса&lt;br /&gt;
* Завести может быть 10МГц самые классные на клоникус напрямую&lt;br /&gt;
&lt;br /&gt;
== Правки в Clonicus_1.1 ==&lt;br /&gt;
* 111 плата часто не прогружает плис&lt;br /&gt;
* на 111,112 плате Заменил R1 50к на 11к&lt;br /&gt;
* на 112 плате поднял напряжение ядра примерно на 30мВ&lt;br /&gt;
* &amp;lt;s&amp;gt;на 114 плате zynq 45. Сгоревший банк 12. Не заработают номады. Не работает DC/DC 3.3V и 1.8_DDR&amp;lt;/s&amp;gt;&lt;br /&gt;
* на 111,116 отрезал питание TCXO_33 и делителя клоков. Вырвал делитель клоков. Теперь идут клоки только в арм&lt;br /&gt;
* на 112 плате добавил конденсатор на питание tcxo&lt;br /&gt;
* '''на 115 плате и ответке №4 полуоторван MEZ2'''&lt;br /&gt;
* '''на 117 плате заменил резистроры i2c на 1k'''&lt;br /&gt;
&lt;br /&gt;
== Известные проблемы в Clonicus_1.1 ==&lt;br /&gt;
&lt;br /&gt;
* ✓ Заменить МШУ ALM-GA001&lt;br /&gt;
* ✓ &amp;lt;s&amp;gt;Заменить LDO фронтендов&amp;lt;/s&amp;gt; Добавил 3 термовиа&lt;br /&gt;
* ✓ &amp;lt;s&amp;gt;Заменить MOSFET светодиода eth на BGA&amp;lt;/s&amp;gt;&lt;br /&gt;
* Использовать емкость 10n вместо 0,01мкФ в dxdesigner&lt;br /&gt;
* &amp;lt;s&amp;gt;Дозаказать TCXO 10MHz. АБН накосячил&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Заменить TCXO на получше&amp;lt;/s&amp;gt;&lt;br /&gt;
* ✓ Поставить более точные резисторы в DC/DC 1V, расчитать другие номиналы для чуть большего напряжения&lt;br /&gt;
* ✓ '''Подтянуть DONE вверх''' Возможно, можно просто не впаивать подтяжку вниз.&lt;br /&gt;
* ✓ Сузить монтажные ушки&lt;br /&gt;
* ✓ Сдвинуть ухо из под юсб&lt;br /&gt;
* ✓ Предположительно поменять С42 на 1000пФ; L6 на 56нГн; R70 на 11кОм&lt;br /&gt;
* ✓ Добавить светодиод на мультиплексор клоков&lt;br /&gt;
* ✓ Недостаточное усиление МШУ. Нужен как минимум еще один.&lt;br /&gt;
* &amp;lt;s&amp;gt;Добавить шелкографию номеров ПАВов&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Проблемы с TCXO. Пока что не впаиваем R45&amp;lt;/s&amp;gt;&lt;br /&gt;
* ✓ Добавить какую-нибудь eeprom на i2c для идентификации платы&lt;br /&gt;
* ✓ Напряжение с шунта на токовый сенсор необходимо снимать непосредственно с падов, иначе сказывается сопротивление дорожек&lt;br /&gt;
* Возможно, с использованием кита попадает фантомное питание через физик и цинк не стартует. Надо синхронизировать домены питания и выводить power_good&lt;br /&gt;
* Подумать над общим монитором питания&lt;br /&gt;
* Проблемы с запуском питания. Используется boost конвертер на 5,1В. По даташиту на входе &amp;lt;= 4,5В должно быть. При 4,9-5В бывают проблемы. Надо что-то придумать&lt;br /&gt;
* ✓ Усилить входной mmcx - отрывается с плейном&lt;br /&gt;
* Стек на PLD больше 6мм - клоникус переламывается. Надо взять другой ответный разъем (а так ли это...)&lt;br /&gt;
* &amp;lt;s&amp;gt;Клоки между номадами стартуют в случайной фазе&amp;lt;/s&amp;gt; похер&lt;br /&gt;
* Выходной цифровой сигнал из номад не фифференциальный и возвратные токи текут через объединение земель и предположительно они создают колоссальные цифровые наводки. Необходимо в домене AGND поставить преобразователь CMOS-LVDS и уже дифф сигнал вести в плис в домен DGND&lt;br /&gt;
* ✓ Потери на 1В - тонкие дорожки у ключа, на клоникусе напряжение 0,975В. Надо что-то решать, возможно еще ключи перегреваются&lt;br /&gt;
* Добавить TP на питание вход выход ключей&lt;br /&gt;
* Разгрузить входной DC/DC step-up. Включить 1В и может другие на вход?&lt;br /&gt;
* Может быть коммутировать FB 1В на выход ключа?&lt;br /&gt;
* Завести может быть ddr_vtt на xadc&lt;br /&gt;
* Ускорить снятие POR_PS и сделать его более крутым&lt;br /&gt;
* клоникус чувствителен к статике - надо думать&lt;br /&gt;
* Ставить DDR3&lt;br /&gt;
* Может стоит поставить QSPI-flash&lt;br /&gt;
* Если будем использовать usb-uart можно запитать ftdi от usb для определения до включения платы (но для клоникуса это не актуально - от usb запитается и плата)&lt;br /&gt;
* &amp;lt;s&amp;gt;'''Исправить питание TCXO_33''' Сделать 1,8В. Перегруз на входе делителя клоков.&amp;lt;/s&amp;gt;&lt;br /&gt;
* ✓ Удалить делитель клоков для ZYNQ - постоянно проблемы монтажа&lt;br /&gt;
* ✓ &amp;lt;s&amp;gt;LDO делителя клоков 33МГц не нагружен и не зафильтрован. Добавить конденсатор! '''Выкидываем делитель клоков'''&amp;lt;/s&amp;gt;&lt;br /&gt;
* ✓ Может стоит вевести i2c через MIO для работы без прошивки. Надо подумать&lt;br /&gt;
* ✓ Перегруз номады клоками от делителя. Необходимо запитать банки делителя от 1,8В&lt;br /&gt;
* &amp;lt;s&amp;gt;Возможно перегружен делитель RF клоков&amp;lt;/s&amp;gt;&lt;br /&gt;
* '''Обдув tcxo приводит к срыву работы приемника'''&lt;br /&gt;
* Заменить ethernet phy на USB&lt;br /&gt;
* ✓ Питание 1В сильно нестабильное - добавить много всяких емкостей на выход DC/DC&lt;br /&gt;
* ✓ Плату выбивает статикой особенно с антенны. Добавить защитных диодов&lt;br /&gt;
* ✓ Добавить по-умолчанию нулевку на блокирование ключей питания под выпайку после проверки&lt;br /&gt;
* Согласовать rf-вход. На 115 клоникусе согласование на 2Ghz&lt;br /&gt;
* Указать рабочее напряжение кондеров&lt;br /&gt;
* '''Заменить TPS22920 на TPS22970''' для 105С&lt;br /&gt;
* Подумать над горячими индастриал элементами&lt;br /&gt;
&lt;br /&gt;
== Известные проблемы в Clonicus_1.2 ==&lt;br /&gt;
* Смотреть на версию чипа EEPROM!&lt;br /&gt;
* Исправить масочный мостик VD2 tvs-диода на входе рф&lt;br /&gt;
* Попробовать изменить вскрытия маски и масочные мостики на возможности цветных масок&lt;br /&gt;
* ✓ Убрать ключ в монтажке на резисторные сборки&lt;br /&gt;
* Подумать, как убрать путаницу между двумя монтажными экселями&lt;br /&gt;
* ✓ Убрать на эссамбли диодов VD1 VD3 плюс, а ключ катода сделать вертикальным и внутри корпуса&lt;br /&gt;
* ✓ Исправить футпринт ABS05 ZQ12 - разнести пады&lt;br /&gt;
* Сделать КЗ на футпринт резистора блокиратора питания&lt;br /&gt;
* ✓ Убрать с монтажа резистора блокиратора питания&lt;br /&gt;
* ✓ Неправильно впаялись светодиоды, поправить ключи (питание DONE, выбор клоков)&lt;br /&gt;
* Не был впаян R1&lt;br /&gt;
* Не был запаян пин коннектора SD&lt;br /&gt;
* Был коротыш R79 C87&lt;br /&gt;
* Уменьшить сопротивление i2c pullup&lt;br /&gt;
&lt;br /&gt;
== Тайное знание создания шелкографии лого ==&lt;br /&gt;
* Генерим силг-ген по классике (слои силкскрин аутлайн топ, силк_тор_тескст). width-option 200um&lt;br /&gt;
* Делаем маск ген&lt;br /&gt;
[[File:Screenshot_32.png|789px]]&lt;br /&gt;
* Открываем silk_top_text_3, в шрифте лого на каждом полигоне удаляем одну вершину - элемент зальется&lt;br /&gt;
* Еще раз генерим силк-ген из silk_top_text_3 без опции width-option (только топ!)&lt;br /&gt;
&lt;br /&gt;
== Всякое ==&lt;br /&gt;
[[File:Screenshot_2019-05-28_0_131120.png|400px]]&lt;br /&gt;
[[File:LeCroy1.png|400px]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Clonicus]]&lt;br /&gt;
{{wl-publish: 2018-06-05 15:03:13 +0300 | Lipa }}&lt;/div&gt;</summary>
		<author><name>Lipa</name></author>	</entry>

	</feed>