Перейти к содержанию
    

Здравствуйте.

Переползаю потихоньку на встроенный Linux, естественно ожидаю от освоения этой ОСи увеличения скорости разработки :)

Есть отладочная плата Beaglebone с процессором Cortex A8 Sitara AM3359, пользуюсь тулчейном от TI, но вместо CCS прикрутил Eclipse (CCS отказался корректно работать почему-то под Ubuntu).

Но суть не в этом .

Научился моргать светодиодом через mmap. Сейчас нужно запустить PWM. Впринципе, понятно, что через mmap из user space можно сконфигурить любую аппаратуру, но не для этого я ставил Linux :)

Прочитал про sysfs, понял , что в ней есть драйвера для нужного мне PWM, но в инете не смог найти примеров как к этим драйверам обратиться на C. Ткните носом в ссылку плз или расскажите в двух словах.

Заранее спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Прочитал про sysfs, понял , что в ней есть драйвера для нужного мне PWM, но в инете не смог найти примеров как к этим драйверам обратиться на C. Ткните носом в ссылку плз или расскажите в двух словах.

Не совсем понятно, надо ли Вам обращаться к PWM из ядра или из юзерспейса.

К содержимому sysfs обращаются точно так же как к любым другом файлам - через open(), read(), write(), close(). Это если Вам именно из юзерспейса надо.

Что конкретно и куда писать - зависит от конкретного железа и драйвера.

Вот тут linux/Documentation/pwm.txt, как я понял, что-то об обращении к pwm из ядра.

Сам я с pwm никогда дела не имел, поэтому что-либо более конкретное вряд ли подскажу...

Изменено пользователем alx2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть отладочная плата Beaglebone с процессором Cortex A8 Sitara AM3359, ... Сейчас нужно запустить PWM.

 

С таким мощным PWM фичами как у AM3359, простой драйвер под линуксом не справится.

Для этого там есть Programmable Real-Time Unit.

Поэтому, думаю, никто и не пытался работать с их PWM через линукс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это тот, под который кортекс на чипе,вся дока на который - NDA ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это тот, под который кортекс на чипе,вся дока на который - NDA ?

Да вроде все доки на TI есть... Вы наверное другой имеете ввиду.

 

alx2, спасибо за ответ! К сожалению прочитал его поздновато, как раз пошёл по тому пути, что Вы посоветовали. Теперь точно понял, что путь правильный.

 

AlexandrY, а какие ограничения у драйвера, что он не справится со столь навороченным PWM?

Мне от PWM нужно только выдавать разные частоты наружу...

Изменено пользователем Муравей

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

насколько я понял, в омапах и ситарах кроме основного ядра (или двух а9 кортексов) есть некоторое количество вспомогательных кортексов м3. В моем случае (омап4460) кортексы есть на Iva hd 2 engine, sgx 540 OpenGL аксель и на периферию. У 4460 эта часть точно НДА. Вот я и спрашиваю,что там у Ситары.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

насколько я понял, в омапах и ситарах кроме основного ядра (или двух а9 кортексов) есть некоторое количество вспомогательных кортексов м3. В моем случае (омап4460) кортексы есть на Iva hd 2 engine, sgx 540 OpenGL аксель и на периферию. У 4460 эта часть точно НДА. Вот я и спрашиваю,что там у Ситары.

Cortex™-A8 is an ARMv7 compatible, dual-issue, in-order execution engine with integrated L1 and L2

caches with NEON™ SIMD Media Processing Unit.

И есть в старших процах линейки Programmable Real-Time Unit:

The Programmable Real-Time Unit and Industrial Communication Subsystem (PRU-ICSS) consists of dual

32-bit RISC cores (Programmable Real-Time Units, or PRUs), memories, interrupt controller, and internal

peripherals that enable additional peripheral interfaces and protocols. The subsystem available on this

device is the next-generation PRU (PRUSSv2) compared to the AM1x and OMAP-L13x.

Вот про него инфы вроде нету в свободном доступе. Но мне он пока не нужен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да вроде все доки на TI есть... Вы наверное другой имеете ввиду.

 

alx2, спасибо за ответ! К сожалению прочитал его поздновато, как раз пошёл по тому пути, что Вы посоветовали. Теперь точно понял, что путь правильный.

 

AlexandrY, а какие ограничения у драйвера, что он не справится со столь навороченным PWM?

Мне от PWM нужно только выдавать разные частоты наружу...

 

Этот OMAP заточен под EtherCAT и частотные преобразователи.

Рабочий цикл у частотного преобразователя с векторным управлением менее 50-20 мкс.

Т.е. линукс рядом не лежал.

 

На Programmable Real-Time Units инфа есть, но это не кортексы к сожалению, скорее нечто напоминающее PIC-и.

Программируются на ассеблере. Компилятор есть, но примитив полный.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Cortex™-A8 is an ARMv7 compatible, dual-issue, in-order execution engine with integrated L1 and L2

caches with NEON™ SIMD Media Processing Unit.

И есть в старших процах линейки Programmable Real-Time Unit:

The Programmable Real-Time Unit and Industrial Communication Subsystem (PRU-ICSS) consists of dual

32-bit RISC cores (Programmable Real-Time Units, or PRUs), memories, interrupt controller, and internal

peripherals that enable additional peripheral interfaces and protocols. The subsystem available on this

device is the next-generation PRU (PRUSSv2) compared to the AM1x and OMAP-L13x.

Вот про него инфы вроде нету в свободном доступе. Но мне он пока не нужен.

Ну так я понимаю все advanced с GPIO & PWM на нем и реализуется. Ну если просто ШИМ выдать просто так - то наверное и не нужен

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...

Рабочий цикл у частотного преобразователя с векторным управлением менее 50-20 мкс.

Т.е. линукс рядом не лежал.

А в чём тут проблема у линукса? Отработать прерывание за такое время на линуксе не составляет никакой сложности. Или подразумевается какая-то другая проблема?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А в чём тут проблема у линукса? Отработать прерывание за такое время на линуксе не составляет никакой сложности. Или подразумевается какая-то другая проблема?

 

Прерывания ядра с такой частотой можно сделать в любой OS, это бесспорно.

Но это потребует патча самого ядра. Тогда вы лишаетесь возможности автоматического апгрейда ядра.

А это все равно, что начать делать проприетарную ОS. Т.е. от линукса остается только название.

 

Хотя вот посмотрел https://linuxlink.timesys.com/dev_center/beagleboard даже с поддержкой примитивного набора периферии для каждой платы предлагается 2-3 версии ядра, чаще одна и нигде не увидел возможности свободного выбора версии ядра.

Т.е. практика переделки ядра повсеместная и между платформами нет приемственности методов достижения быстродействия.

А значит сложность все таки есть.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Оффтоп.

 

Вопрос с гуру :) по поводу ситар

Где может потребоваться наличие двух портов gigabit ethernet (и в конфигурации свитча, и в конфигурации двух раздельных интерфейсов)? Может кто-нибудь приведет примеры?

И кстати, а сколько реально AM3359 сможет вытянуть по сети? Я что-то в сомнениях, что его реально можно нагрузить двумя гигабитными потоками...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

AM3359 не коммуникационное ядро! Роутить не очень и получиться. Прием данных только и немного обработки. gigabit ethernet там для прикола, с двумя гигабитными потоками ядро не справиться, по 100 еще более менее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Где может потребоваться наличие двух портов gigabit ethernet (и в конфигурации свитча, и в конфигурации двух раздельных интерфейсов)? Может кто-нибудь приведет примеры?

И кстати, а сколько реально AM3359 сможет вытянуть по сети? Я что-то в сомнениях, что его реально можно нагрузить двумя гигабитными потоками...

 

Так написал же - EtherCAT

Т.е. кольцевой Ethernet работающий в реальном времени. И гигабит думаю спокойно выдержит в кольцевой топологии.

Опять, конечно, не для линукса. :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Прерывания ядра с такой частотой можно сделать в любой OS, это бесспорно.

Но это потребует патча самого ядра. Тогда вы лишаетесь возможности автоматического апгрейда ядра.

Чушь какая-то.

У ядра есть такое понятие как загружаемый модуль. Его не обязательно монолитно включать в само ядро. Это отдельный файл. Обновляйте ядро на здоровье.

А это все равно, что начать делать проприетарную ОS. Т.е. от линукса остается только название.

см. выше.

Хотя вот посмотрел https://linuxlink.timesys.com/dev_center/beagleboard даже с поддержкой примитивного набора периферии для каждой платы предлагается 2-3 версии ядра, чаще одна и нигде не увидел возможности свободного выбора версии ядра.

Т.е. практика переделки ядра повсеместная и между платформами нет приемственности методов достижения быстродействия.

А значит сложность все таки есть.

Это ошибочное представление из-за отсутствия понимания принципов и возможностей linux. С опытом пройдёт. Но для опыта надо хотя бы пытаться работать с системой, а не бояться мифических и несуществующих проблем.

 

...

И кстати, а сколько реально AM3359 сможет вытянуть по сети? Я что-то в сомнениях, что его реально можно нагрузить двумя гигабитными потоками...

Для примерной оценки требуемой производительности есть такое неформальное правило: для обработки одного мегабита ethernet необходим один мегагерц тактовой частоты процессора. т.е. для двух гигабитных портов надо 2 Гигацерцовый процессор. Если процессор имеет частоту 400 Мегагерц, то сетевая производительность получится примерно на 400 мегабит. Обращаю внимание, что это только метод для приближенной оценки производительности сети.

 

...

Опять, конечно, не для линукса. :laughing:

Опять необоснованные фобии... :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...