Jump to content

    
Sign in to follow this  
Муравей

Sitara + Linux

Recommended Posts

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

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

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

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

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

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

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

Share this post


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

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

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

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

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

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

Edited by alx2

Share this post


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

 

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

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

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

Share this post


Link to post
Share on other sites
Это тот, под который кортекс на чипе,вся дока на который - NDA ?

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

 

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

 

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

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

Edited by Муравей

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
насколько я понял, в омапах и ситарах кроме основного ядра (или двух а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.

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

Share this post


Link to post
Share on other sites
Да вроде все доки на TI есть... Вы наверное другой имеете ввиду.

 

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

 

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

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

 

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

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

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

 

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

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

Share this post


Link to post
Share on other sites
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 на нем и реализуется. Ну если просто ШИМ выдать просто так - то наверное и не нужен

Share this post


Link to post
Share on other sites
...

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

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

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

Share this post


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

 

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

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

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

 

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

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

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

 

Share this post


Link to post
Share on other sites

Оффтоп.

 

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


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

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

 

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

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

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

Share this post


Link to post
Share on other sites
Прерывания ядра с такой частотой можно сделать в любой OS, это бесспорно.

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

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

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

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

см. выше.

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

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

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

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

 

...

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

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

 

...

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this