реклама на сайте
подробности

 
 
> Bare metal EMAC драйвер на Cortex-A9, EMAC на Altera SOC HPS
serjj
сообщение Feb 13 2015, 15:44
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Всем доброго.
Вожусь сейчас с ARM Cortex-A9 в составе Altera Cyclone V HPS. Интересует следующее. На борту имеется EMAC Synopsys DesignWare 3504-0 Universal Ethernet MAC в числе двух штук. Разбираюсь с bare metal приложением. У Альтеры на EMAC не нашел ни одного примера по работе с ним и в библиотеки для bare metal (hwlib) тоже ничего к EMAC относящегося не нашел (при этом есть остальные интерфейсы кроме USB). При этом под линухом EMAC разумеется поднимается и в U-Boot тоже. Но ОС на него ставить пока в планы не входило. Вообще хотелось бы узнать насколько это неблагодарное занятие в bare metal поднимать Ethernet драйвер на ARM?
И возможно кто-то уже работал с этим Eth контроллером и на него можно достать готовые драйвера? (ARM же он ARM и есть) У меня пока каша в голове по поводу процессора, не программировал его раньше.

В общем хотелось бы услышать совета от спецов по ARMу rolleyes.gif

PS Раньше на простеньком Nios и самописном контроллере делал простой драйвер и надстройку в виде UDP/ARP и всё было просто, а тут такие дебри.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
serjj
сообщение Feb 14 2015, 08:50
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Коллеги, спасибо что отозвались.

Цитата
в смысле, что без линуха поднимать это дело глупо, тупо и безнадежно

Тут дело такое, у меня изделие должно полностью грузиться в пределах секунды 05.gif Линукс разве так умеет? И какие есть альтернативы bare metal для очень быстрой загрузки проца?

Цитата
Так ведь u-boot и Linux есть в качестве примера. Драйвер u-boot вряд ли стоит рассматривать серьёзно, но для старта и он сойдет

Там беда в том, что их там целая куча под разные семейства-конфигурации-вендоров, при этом разной степени вменяемости (где-то init, packet_read, packet_write, а где-то тонна всякого хлама)

У меня есть вариант перенести на проц старое решение с Nios'a с самодельным контроллером, т.к. у меня Eth только для отладки нужен. Но хотелось всё таки со штатным EMAC разобраться, а то их там целых 2 и как-то странно свой ставить.

И раз про ОС речь зашла: насколько это вообще жизненная идея делать bare metal проект на ARM? Основные задачи - обработка сигналов, управление, решения, обмен с FPGA. Высокоуровневые сервисы а-ля web, snmp не нужны. Высокоскоростных интерфейсов тоже не планируется.
Go to the top of the page
 
+Quote Post
scifi
сообщение Feb 14 2015, 10:04
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(serjj @ Feb 14 2015, 11:50) *
И раз про ОС речь зашла: насколько это вообще жизненная идея делать bare metal проект на ARM?

Кстати, тоже интересно. Чем "взрослый" проц отличается от МК? На МК (STM32, Coldfire V2) делал драйвер Ethernet (практически с нуля, по мануалу) и прикручивал к lwip без ОС. Чем проц хуже? Настройка кэша? Отсутствие вменяемой документации?
Go to the top of the page
 
+Quote Post
mantech
сообщение Feb 14 2015, 11:43
Сообщение #4


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(scifi @ Feb 14 2015, 13:04) *
Чем проц хуже? Настройка кэша? Отсутствие вменяемой документации?


Ничем не хуже, но:

1) Отсутствие ПУТЕВОЙ документации, я не беру во внимание NDAшные камни - тут вааще весело..
2) Отсутствие примеров программ, библиотек, и тп. Бывают SDK, но очень урезанные, приходится пилить и пилить...
3) Сам камень по-себе намного сложнее (настройка стартап файла, конфигурация DCD загрузки, тактировки, кэши, MMU... в некоторых случаях требуется полная переконфигурация линкера). И самое интересное - без ПРАВИЛЬНОЙ настройки всего этого, проц либо вообще не запускается, глючит или работает как черепаха. В СТМ о таком и не догадывался.
4) почти не у кого спросить, в чем у моя проблема, т.к. все либо на линуксах, либо вообще о таких камнях только слышали отдаленно, последних больше.
5) Несколько раз приходилось копаться в линуксовых исходниках, т.к. информации просто нигде нет, ни в SDK, ни в даташите. А ковыряние в линуксе - это отдельная песня, кто в теме - тот знает.

Вообщем, как-то так...
По себе могу сказать, пока поднимал такой камень, раза 3 хотел плюнуть на него, и забросить эту плату так далеко, чтоб не вспоминать о ней, но здравый смысл был сильнее, и не давал мне покоя, пока ее не запустил 08.gif

Дорогу осилит идущий, только потребуется много терпения и сил. Удачи!!


ЗЫ. ТСу скажу, приступайте к драйверу сетевухи, только если разобрались с самим процом, настройкой портов ВВ для альтерн. функций, кэшами, MMU, прерываниями, контроллером памяти. Если есть какая-то хоть простенькая отладка(типа printf через уарт), иначе это будет мартышкин труд.
При работе с буферами и конфигурационными записями сетевухи, учитывайте, что они должны быть в некэшируемой области памяти!

Цитата(serjj @ Feb 14 2015, 11:50) *
Тут дело такое, у меня изделие должно полностью грузиться в пределах секунды Линукс разве так умеет?


У TimeSys линукса есть какая-то приблуда, которая кеширует образы закрузки на диск, а потом их загружает прямо в память и запускает. На счет секунды не знаю, но за 2-3сек загружает точно. Это на случай, если с камнем не справитесь laughing.gif

Сообщение отредактировал mantech - Feb 14 2015, 11:39
Go to the top of the page
 
+Quote Post
dm.pogrebnoy
сообщение Feb 14 2015, 14:33
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 747
Регистрация: 11-04-07
Пользователь №: 26 933



Цитата(mantech @ Feb 14 2015, 14:43) *
ЗЫ. ТСу скажу, приступайте к драйверу сетевухи, только если разобрались с самим процом, настройкой портов ВВ для альтерн. функций, кэшами, MMU, прерываниями, контроллером памяти.


Я таки извиняюсь, работал с чем-то похожим, как я понимаю, а именно с Zynq от Xilinx. И что бы там написать baremetal программку для общения через Ethernet мне не приходилось все это делать. Да и вообще, работать с ним без операционной системы ни капли не сложнее чем с Microblaze (аналог Nios). Там вся периферия (ddr, клоки...) конфигурируется автоматически, на основе параметров заданных в визарде. А работа с конкретными устройствами описана в небольшой библиотеке драйверов для baremetal приложений. У альтеры разве не тоже самое?


--------------------
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 09:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.0132 секунд с 7
ELECTRONIX ©2004-2016