|
Sitara + Linux, Тупик |
|
|
|
Jun 5 2013, 13:34
|

Участник

Группа: Участник
Сообщений: 52
Регистрация: 30-11-11
Пользователь №: 68 593

|
Здравствуйте. Переползаю потихоньку на встроенный Linux, естественно ожидаю от освоения этой ОСи увеличения скорости разработки :) Есть отладочная плата Beaglebone с процессором Cortex A8 Sitara AM3359, пользуюсь тулчейном от TI, но вместо CCS прикрутил Eclipse (CCS отказался корректно работать почему-то под Ubuntu). Но суть не в этом . Научился моргать светодиодом через mmap. Сейчас нужно запустить PWM. Впринципе, понятно, что через mmap из user space можно сконфигурить любую аппаратуру, но не для этого я ставил Linux :) Прочитал про sysfs, понял , что в ней есть драйвера для нужного мне PWM, но в инете не смог найти примеров как к этим драйверам обратиться на C. Ткните носом в ссылку плз или расскажите в двух словах. Заранее спасибо.
|
|
|
|
|
Jun 6 2013, 08:08
|

Местный
  
Группа: Участник
Сообщений: 340
Регистрация: 25-10-05
Из: Пермь, Россия
Пользователь №: 10 091

|
Цитата(Муравей @ Jun 5 2013, 18:34)  Прочитал про sysfs, понял , что в ней есть драйвера для нужного мне PWM, но в инете не смог найти примеров как к этим драйверам обратиться на C. Ткните носом в ссылку плз или расскажите в двух словах. Не совсем понятно, надо ли Вам обращаться к PWM из ядра или из юзерспейса. К содержимому sysfs обращаются точно так же как к любым другом файлам - через open(), read(), write(), close(). Это если Вам именно из юзерспейса надо. Что конкретно и куда писать - зависит от конкретного железа и драйвера. Вот тут linux/Documentation/pwm.txt, как я понял, что-то об обращении к pwm из ядра. Сам я с pwm никогда дела не имел, поэтому что-либо более конкретное вряд ли подскажу...
Сообщение отредактировал alx2 - Jun 6 2013, 08:18
--------------------
Всего наилучшего, Alex Mogilnikov
|
|
|
|
|
Jun 7 2013, 04:39
|

Участник

Группа: Участник
Сообщений: 52
Регистрация: 30-11-11
Пользователь №: 68 593

|
Цитата(DASM @ Jun 6 2013, 14:30)  Это тот, под который кортекс на чипе,вся дока на который - NDA ? Да вроде все доки на TI есть... Вы наверное другой имеете ввиду. alx2, спасибо за ответ! К сожалению прочитал его поздновато, как раз пошёл по тому пути, что Вы посоветовали. Теперь точно понял, что путь правильный. AlexandrY, а какие ограничения у драйвера, что он не справится со столь навороченным PWM? Мне от PWM нужно только выдавать разные частоты наружу...
Сообщение отредактировал Муравей - Jun 7 2013, 04:42
|
|
|
|
|
Jun 7 2013, 05:25
|

Участник

Группа: Участник
Сообщений: 52
Регистрация: 30-11-11
Пользователь №: 68 593

|
Цитата(DASM @ Jun 7 2013, 08:46)  насколько я понял, в омапах и ситарах кроме основного ядра (или двух а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. Вот про него инфы вроде нету в свободном доступе. Но мне он пока не нужен.
|
|
|
|
|
Jun 7 2013, 06:10
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(Муравей @ Jun 7 2013, 07:39)  Да вроде все доки на TI есть... Вы наверное другой имеете ввиду.
alx2, спасибо за ответ! К сожалению прочитал его поздновато, как раз пошёл по тому пути, что Вы посоветовали. Теперь точно понял, что путь правильный.
AlexandrY, а какие ограничения у драйвера, что он не справится со столь навороченным PWM? Мне от PWM нужно только выдавать разные частоты наружу... Этот OMAP заточен под EtherCAT и частотные преобразователи. Рабочий цикл у частотного преобразователя с векторным управлением менее 50-20 мкс. Т.е. линукс рядом не лежал. На Programmable Real-Time Units инфа есть, но это не кортексы к сожалению, скорее нечто напоминающее PIC-и. Программируются на ассеблере. Компилятор есть, но примитив полный.
|
|
|
|
|
Jun 11 2013, 09:32
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(Petka @ Jun 11 2013, 11:33)  А в чём тут проблема у линукса? Отработать прерывание за такое время на линуксе не составляет никакой сложности. Или подразумевается какая-то другая проблема? Прерывания ядра с такой частотой можно сделать в любой OS, это бесспорно. Но это потребует патча самого ядра. Тогда вы лишаетесь возможности автоматического апгрейда ядра. А это все равно, что начать делать проприетарную ОS. Т.е. от линукса остается только название. Хотя вот посмотрел https://linuxlink.timesys.com/dev_center/beagleboard даже с поддержкой примитивного набора периферии для каждой платы предлагается 2-3 версии ядра, чаще одна и нигде не увидел возможности свободного выбора версии ядра. Т.е. практика переделки ядра повсеместная и между платформами нет приемственности методов достижения быстродействия. А значит сложность все таки есть.
|
|
|
|
|
Jun 11 2013, 11:54
|

Частый гость
 
Группа: Участник
Сообщений: 127
Регистрация: 31-10-12
Пользователь №: 74 189

|
Оффтоп. Вопрос с гуру  по поводу ситар Где может потребоваться наличие двух портов gigabit ethernet (и в конфигурации свитча, и в конфигурации двух раздельных интерфейсов)? Может кто-нибудь приведет примеры? И кстати, а сколько реально AM3359 сможет вытянуть по сети? Я что-то в сомнениях, что его реально можно нагрузить двумя гигабитными потоками...
|
|
|
|
|
Jun 11 2013, 12:46
|
Профессионал
    
Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886

|
Цитата(AlexandrY @ Jun 11 2013, 13:32)  Прерывания ядра с такой частотой можно сделать в любой OS, это бесспорно. Но это потребует патча самого ядра. Тогда вы лишаетесь возможности автоматического апгрейда ядра. Чушь какая-то. У ядра есть такое понятие как загружаемый модуль. Его не обязательно монолитно включать в само ядро. Это отдельный файл. Обновляйте ядро на здоровье. Цитата А это все равно, что начать делать проприетарную ОS. Т.е. от линукса остается только название. см. выше. Цитата Хотя вот посмотрел https://linuxlink.timesys.com/dev_center/beagleboard даже с поддержкой примитивного набора периферии для каждой платы предлагается 2-3 версии ядра, чаще одна и нигде не увидел возможности свободного выбора версии ядра. Т.е. практика переделки ядра повсеместная и между платформами нет приемственности методов достижения быстродействия. А значит сложность все таки есть. Это ошибочное представление из-за отсутствия понимания принципов и возможностей linux. С опытом пройдёт. Но для опыта надо хотя бы пытаться работать с системой, а не бояться мифических и несуществующих проблем. Цитата(winipuh @ Jun 11 2013, 15:54)  ... И кстати, а сколько реально AM3359 сможет вытянуть по сети? Я что-то в сомнениях, что его реально можно нагрузить двумя гигабитными потоками... Для примерной оценки требуемой производительности есть такое неформальное правило: для обработки одного мегабита ethernet необходим один мегагерц тактовой частоты процессора. т.е. для двух гигабитных портов надо 2 Гигацерцовый процессор. Если процессор имеет частоту 400 Мегагерц, то сетевая производительность получится примерно на 400 мегабит. Обращаю внимание, что это только метод для приближенной оценки производительности сети. Цитата(AlexandrY @ Jun 11 2013, 16:19)  ... Опять, конечно, не для линукса.  Опять необоснованные фобии...
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|