|
|
  |
Bare metal EMAC драйвер на Cortex-A9, EMAC на Altera SOC HPS |
|
|
|
Feb 13 2015, 15:44
|
Знающий
   
Группа: Участник
Сообщений: 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у PS Раньше на простеньком Nios и самописном контроллере делал простой драйвер и надстройку в виде UDP/ARP и всё было просто, а тут такие дебри.
|
|
|
|
|
Feb 13 2015, 18:04
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(serjj @ Feb 13 2015, 18:44)  Но ОС на него ставить пока в планы не входило. Вообще хотелось бы узнать насколько это неблагодарное занятие в bare metal поднимать Ethernet драйвер на ARM? Сейчас вы тут огребете по самое... в смысле, что без линуха поднимать это дело глупо, тупо и безнадежно, займет годы и пр... приготовьтесь Занятие и вправду, неблагодарное, сам поднимал с нуля MX6... Впечатление мощное А если серьезно, описание от АРМ - это очень мучительное чтиво, помню по контроллеру кэша L2. Думаю проше будет "выколупать" из убута, действительно. Поищите, может есть какой либо SDK, он мне очень помог в освоении MX6.
Сообщение отредактировал mantech - Feb 13 2015, 18:06
|
|
|
|
|
Feb 14 2015, 08:50
|
Знающий
   
Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866

|
Коллеги, спасибо что отозвались. Цитата в смысле, что без линуха поднимать это дело глупо, тупо и безнадежно Тут дело такое, у меня изделие должно полностью грузиться в пределах секунды  Линукс разве так умеет? И какие есть альтернативы bare metal для очень быстрой загрузки проца? Цитата Так ведь u-boot и Linux есть в качестве примера. Драйвер u-boot вряд ли стоит рассматривать серьёзно, но для старта и он сойдет Там беда в том, что их там целая куча под разные семейства-конфигурации-вендоров, при этом разной степени вменяемости (где-то init, packet_read, packet_write, а где-то тонна всякого хлама) У меня есть вариант перенести на проц старое решение с Nios'a с самодельным контроллером, т.к. у меня Eth только для отладки нужен. Но хотелось всё таки со штатным EMAC разобраться, а то их там целых 2 и как-то странно свой ставить. И раз про ОС речь зашла: насколько это вообще жизненная идея делать bare metal проект на ARM? Основные задачи - обработка сигналов, управление, решения, обмен с FPGA. Высокоуровневые сервисы а-ля web, snmp не нужны. Высокоскоростных интерфейсов тоже не планируется.
|
|
|
|
|
Feb 14 2015, 11:43
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(scifi @ Feb 14 2015, 13:04)  Чем проц хуже? Настройка кэша? Отсутствие вменяемой документации? Ничем не хуже, но: 1) Отсутствие ПУТЕВОЙ документации, я не беру во внимание NDAшные камни - тут вааще весело.. 2) Отсутствие примеров программ, библиотек, и тп. Бывают SDK, но очень урезанные, приходится пилить и пилить... 3) Сам камень по-себе намного сложнее (настройка стартап файла, конфигурация DCD загрузки, тактировки, кэши, MMU... в некоторых случаях требуется полная переконфигурация линкера). И самое интересное - без ПРАВИЛЬНОЙ настройки всего этого, проц либо вообще не запускается, глючит или работает как черепаха. В СТМ о таком и не догадывался. 4) почти не у кого спросить, в чем у моя проблема, т.к. все либо на линуксах, либо вообще о таких камнях только слышали отдаленно, последних больше. 5) Несколько раз приходилось копаться в линуксовых исходниках, т.к. информации просто нигде нет, ни в SDK, ни в даташите. А ковыряние в линуксе - это отдельная песня, кто в теме - тот знает. Вообщем, как-то так... По себе могу сказать, пока поднимал такой камень, раза 3 хотел плюнуть на него, и забросить эту плату так далеко, чтоб не вспоминать о ней, но здравый смысл был сильнее, и не давал мне покоя, пока ее не запустил Дорогу осилит идущий, только потребуется много терпения и сил. Удачи!! ЗЫ. ТСу скажу, приступайте к драйверу сетевухи, только если разобрались с самим процом, настройкой портов ВВ для альтерн. функций, кэшами, MMU, прерываниями, контроллером памяти. Если есть какая-то хоть простенькая отладка(типа printf через уарт), иначе это будет мартышкин труд. При работе с буферами и конфигурационными записями сетевухи, учитывайте, что они должны быть в некэшируемой области памяти! Цитата(serjj @ Feb 14 2015, 11:50)  Тут дело такое, у меня изделие должно полностью грузиться в пределах секунды Линукс разве так умеет? У TimeSys линукса есть какая-то приблуда, которая кеширует образы закрузки на диск, а потом их загружает прямо в память и запускает. На счет секунды не знаю, но за 2-3сек загружает точно. Это на случай, если с камнем не справитесь
Сообщение отредактировал mantech - Feb 14 2015, 11:39
|
|
|
|
|
Feb 14 2015, 14:33
|

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

|
Цитата(mantech @ Feb 14 2015, 14:43)  ЗЫ. ТСу скажу, приступайте к драйверу сетевухи, только если разобрались с самим процом, настройкой портов ВВ для альтерн. функций, кэшами, MMU, прерываниями, контроллером памяти. Я таки извиняюсь, работал с чем-то похожим, как я понимаю, а именно с Zynq от Xilinx. И что бы там написать baremetal программку для общения через Ethernet мне не приходилось все это делать. Да и вообще, работать с ним без операционной системы ни капли не сложнее чем с Microblaze (аналог Nios). Там вся периферия (ddr, клоки...) конфигурируется автоматически, на основе параметров заданных в визарде. А работа с конкретными устройствами описана в небольшой библиотеке драйверов для baremetal приложений. У альтеры разве не тоже самое?
--------------------
|
|
|
|
|
Feb 14 2015, 20:41
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(serjj @ Feb 14 2015, 11:50)  Там беда в том, что их там целая куча под разные семейства-конфигурации-вендоров, при этом разной степени вменяемости (где-то init, packet_read, packet_write, а где-то тонна всякого хлама) Ну а в данном случае как? Цитата(serjj @ Feb 14 2015, 11:50)  И раз про ОС речь зашла: насколько это вообще жизненная идея делать bare metal проект на ARM? Основные задачи - обработка сигналов, управление, решения, обмен с FPGA. Высокоуровневые сервисы а-ля web, snmp не нужны. Высокоскоростных интерфейсов тоже не планируется. Нормальная идея: ставить Linux просто из тех соображений, что железо это позволяет сделать, тоже неразумно.
|
|
|
|
|
Feb 14 2015, 21:46
|
Знающий
   
Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866

|
Цитата ЗЫ. ТСу скажу, приступайте к драйверу сетевухи, только если разобрались с самим процом, настройкой портов ВВ для альтерн. функций, кэшами, MMU, прерываниями, контроллером памяти. Если есть какая-то хоть простенькая отладка(типа printf через уарт), иначе это будет мартышкин труд. При работе с буферами и конфигурационными записями сетевухи, учитывайте, что они должны быть в некэшируемой области памяти! Ага разобрался с загрузкой, инициализацией MMU, прерываниями и подключением к FPGA, взялся за сетевуху. Есть и отладка и кастомная платка, на них и тружусь. Цитата Вообщем, как-то так... По себе могу сказать, пока поднимал такой камень, раза 3 хотел плюнуть на него, и забросить эту плату так далеко, чтоб не вспоминать о ней, но здравый смысл был сильнее, и не давал мне покоя, пока ее не запустил Тоже иногда хочется утопить ее где нибудь... Цитата Я таки извиняюсь, работал с чем-то похожим, как я понимаю, а именно с Zynq от Xilinx. И что бы там написать baremetal программку для общения через Ethernet мне не приходилось все это делать. Да и вообще, работать с ним без операционной системы ни капли не сложнее чем с Microblaze (аналог Nios). Там вся периферия (ddr, клоки...) конфигурируется автоматически, на основе параметров заданных в визарде. А работа с конкретными устройствами описана в небольшой библиотеке драйверов для baremetal приложений. У альтеры разве не тоже самое? Кастомизация у альтеры слабая, приходится много своими руками делать, и документация не на все есть. Цитата Ну а в данном случае как? Пока ничего путного не нашел для альтерного сока. Цитата Нормальная идея: ставить Linux просто из тех соображений, что железо это позволяет сделать, тоже неразумно. Радует, а то пока про bare metal и ARM какие-то панические отзывы
|
|
|
|
|
Feb 15 2015, 07:19
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(serjj @ Feb 15 2015, 00:46)  Ага разобрался с загрузкой, инициализацией MMU, прерываниями и подключением к FPGA, взялся за сетевуху. Есть и отладка и кастомная платка, на них и тружусь.
Радует, а то пока про bare metal и ARM какие-то панические отзывы Тогда полдела уже сделано, я в основном по-первости и буксовал, дальше все пошло более-менее нормально. Из линукса по сетевке все-таки придется кое-что выдрать, попробуйте, по началу сложно, но все решаемо. Как правило, смотрите в каталоге Arch и Drivers. Главное - не слушайте мнение "толпы", что все сложно и безнадежно
|
|
|
|
|
Feb 18 2015, 19:57
|
Участник

Группа: Участник
Сообщений: 15
Регистрация: 20-10-11
Из: С-Пб
Пользователь №: 67 865

|
Возможно, не совсем в тему: на TI DM365 отдельным разработчикам удалось получить запуск Linux за 0.6 с - http://www.makelinux.com/emb/fastboot/dm365 У нас получились более скромные результаты - порядка 8 с. Основное ограничение, оказывающее влияние на время запуска, - медленное чтение образа.
|
|
|
|
|
Feb 19 2015, 06:59
|
Знающий
   
Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866

|
Цитата Возможно, не совсем в тему: на TI DM365 отдельным разработчикам удалось получить запуск Linux за 0.6 с Спасибо за любопытную инфу, погляжу. Цитата У нас получились более скромные результаты - порядка 8 с А вы с какого носителя загружались?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|