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

Tarbal

Свой
  • Постов

    1 672
  • Зарегистрирован

  • Посещение

Весь контент Tarbal


  1. Перед uBoot в 64К кеш процессора загружается и запускается X-loader. В бут партишне он представлен файлом MLO. X-loader загрузит uBoot когда все настроит. Он настраивает контроллер динамической памяти: Частоту и временную диаграму. Скорее всего у вас неверно настроено. Там по умолчанию кажется 200 мегагерцовая память. Я это место хорошо знаю. Я даже писал тест. Загружешь X-loader и тестируешь хардвер. В основном память. Если найду -- пришлю
  2. Я бы частоту самплинга повыше выбрал. Вы ставите anti aliasing filter? Он частоту Найквиста (Котельникова) подавит, что я думаю вам нежелательно. Не ставить фильтр также нежелательно. Без фильтра можно получить "чудеса". Продолжительность измерения определяет разрешение шкалы результата. Допустим вы измеряли 1000 секунд, тогда после преобразования Фурье разрешение будет 1/1000 = 0.001 Герц. Конечно можно и получить ниже, но выше не получится. Для одной частоты не надо делать преобразование Фурье. Достаточно считать корелляции с синусом и косинусом заранее известной частоты.
  3. Согласитесь, что регулирование мощности длительностью импульса выглядит изящнее.
  4. однако фотоны могут 1. поглощаться и 2. пролетать мимо приемника
  5. У меня есть несколько книг по Линукс драйверам. Не скажу за все, но три, которые самые крутые (на мой взгляд) написаны как справочники. Из них трудно получить информацию о том, чего не знаешь. Я описал вам самый сокровенный механизм установки драйвера. Будете вы создавать pipe или нет неважно. Устройство создавать обязательно надо, иначе драйвер не встанет. Ну разве что если работать через procfs. Но зачем делать через одно место? Есть вспомогательный механизм доступа, но он не основной и использовать его вместо основного неправильно. Вот как то, что я описал описывается в довольно завуалированной форме в Библии драйверов Линукса: Add a Driver A PCI driver is added to the PCI core when it calls the pci_register_driverfunction. This function merely initializes the struct device_driver structure that is contained within the struct pci_driver structure,as previously mentioned in the section about adding a device. Then the PCI core calls the driver_register function in the driver core with a pointer to the struct device_driver structure contained in the struct pci_driver structure. The driver_register function initializes a few locks in the struct device_driver structure,and then calls the bus_add_driver function. This function does the following steps: • Looks up the bus that the driver is to be associated with. If this bus is not found, the function instantly returns. • The driver’s sysfs directory is created based on the name of the driver and the bus that it is associated with. • The bus’s internal lock is grabbed,and then all devices that have been registered with the bus are walked,and the match function is called for them,just like when a new device is added. If that match function succeeds,then the rest of the binding process occurs, as described in the previous section. (LINUX DEVICE DRIVERS THIRD EDITION Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman) Тот кто не знает о чем речь скажет, мне надо не PCI, а другой драйвер и читать это не будет, а это ключевой для всех драйверов механизм. Для нас главное понимать драйверы так как понимают их те, кто разработал систему -- иначе все встанет криво. Вот я недавно делал аудио драйвер для чипа CX20709-Z21. Вроде драйвер, но в понимании драйвера Линуксом, в нем три драйвера. на все кроме одного в теле "драйвера" созданы устройства, но разработчик системы должен создать еще одно устройство в файле где конкретный борд настраивается. Это вообще I2C driver. Так что надо прояснить то, что мы называем драйвером и как оно соотносится с тем как это понятие соответствует понятию, использованную в системе. Грустно, что индусы каждое слово хватают, а мы норовим каждый по своему сделать. А какие шины там используются? Мне кажется, что только platform. Ссылку на код можешь дать?
  6. Это не относится к новой или старой модели. Просто драйверы принадлежат шинам. Новое это как делать pipes в /dev. При помощи скрипта или система сама сделает посредством udev.
  7. Linux начинающему

    --- Все верно. Однако зачастую при компиляции на стадии ./configure появляются сообщения об ошибках. Мол отсутствует пакет. В большинстве случаев это стандартная библиотека. В таком случае надо поступить следующим образом: допустим отсутствует библиотека bison. apt-cache search bison изучите список программ и установите то, что подходит при помощи команды sudo apt-get install имя_из_списка_предыдущей_команды По мере поступления проблем спрашивайте.
  8. То о чем я говорю я видел в промышленном устройстве.
  9. Если драйвер написан правильно и есть необходимость, чтобы устройство было доступно через /dev, то оно там появится посредством стандартного механизма, а не будет пальцем сделано по старинке. Дело в том, что от создания pipes в /dev при помощи mknod как это делалось раньше возникает масса проблем от системы к системе. Какие надо создавать драйвер pipes, а какие не нужны за отсутствием драйвера зачастую не так очевидно и создать скрипты, которые будут создавать pipes в /dev без ошибок практически невозможно. Поэтому была разработана другая система udev. Но разумеется будет работать если сделать нестандартно, но я не вижу этому объяснения кроме того, что лень разбираться как сделать правильно. Мол и так сойдет. Разумеется сойдет, однако кто-то еще сделает нестандартно что-нибудь, потом кто-то еще и в какой-то момент получится что-то несуразное, к чему и подойти будет страшно. Мне приходилось работать в больших проектах, где много программистов пишут код. Так в стандартном подходе не всегда все очевидно, а как попадется умелец, который делает не так как надо, а так как сумеет, то очень трудно становится жить. В общем это вопрос культуры. делать как положено или как получится. Вот например при загрузке этого драйвера создастся четыре pipes устройств: /dev/ttyHS0 /dev/ttyHS1 /dev/ttyHS2 /dev/ttyHS3 http://lxr.free-electrons.com/source/drivers/net/usb/hso.c На самом деле внутри создано четыре устройства с разными минор значениями. Таинство происходит при регистрации устройств и драйвера. Поэтому обратите внимание на функции содержащие слово register
  10. Дополнение. В ЦФ левая полуплоскость становится кругом единичного радиуса. Полюса вне этого круга приводят к неустойчивости активного фильтра.
  11. Что-то сломалось при копировании ссылки. Ильин Поздняк Матанализ том 2. Глава 10 Ряды и интеграл Фурье. Может так прокатит. У меня открывается начало второго тома, но если листать, то смотрелка падает. Я нашел способ: 1. Открыть книгу 2. Ввести страницу 5 и попадешь на оглавление. Так можно не напороться на проблему с третьей страницей. http://www.newlibrary.ru/author/ilin_v_a__...njak_ye_g_.html
  12. Я рассказал как правильно работать с драйвером в Линуксе. И вопрос был о том как получить записи о драйвере в sysfs. К тому же в /dev драйвер pipe появится сам если все правильно делать. Проблема с вашим подходом в том, что это устаревшая практика. Сегодня устройства в /dev появляются усилиями системы udev.
  13. Представим двухтактный усилитель с трансформаторным выходом. Коллекторы транзисторов подключены к двум концам первичной обмотки трансформатора, а средняя точка к питанию. Если соединить коллекторы транзисторов конденсатором, таким что вместе с катушкой он создает колебательный контур на желаемую частоту, а потом транзисторы открывать в противофазе в разных полупериодах, то на вторичной обмотке будет желаемый сунус. Причем ширина импульса открывания транзисторов (оба импульса желательно сделать одинаковыми) позволит регулировать энергию на выходе. Транзисторы будут работать в ключевом режиме, а значит КПД будет высоким.
  14. За объяснениями вам в раздел цифровой обработки сигналов (DSP) надо. Методика называется echo cancellation (подавление эха). Идея в проверке входного сигнала с микрофона на наличие и величину отраженных сигналов и построение фильтра, который их подавит. Делают устройства подавления эха на специализированных процессорах, которые называются DSP процессорами.
  15. Sitara + Linux

    http://www.raspberrypi.org/ ~$35 http://en.wikipedia.org/wiki/Raspberry_Pi Begleboard ~$150 Beaglebone ~$150 iMX53 Quick Start Board ~$150
  16. Sitara + Linux

    Пока не нашел кода, но вот здесь доступ к таймерам можно посмотреть. arch/arm/plat-omap/dmtimer.c Оно называется ПДП (DMA) и его надо в драйвере настраивать. Но в кернеле есть множество примеров его настройки и использования. Что касается прерываний, я не вижу необходимости быстро реагировать, хотя и прервания несложно подключить.
  17. Поставить к аккумуляторам мультивибратор с принуждением спать. Сигнал спать передавать по оптрону, а сигнал скажем 1 килогерц подать на трансформатор, кторый постабильнее и линейнее оптрона будет. Перед измерением разрешить генератор и измерить выпрамленный сигнал с трансформатора.
  18. Преобразование Фурье. Объяснение на пальцах. В прямоугольных координатах можно разложить вектор на проекции. Фурье придумал как подобное сделать для периодических функций и изложил свою мысль в теореме Фурье. Попробую изложить это своими словами. Оказывается что скалярное произведение векторов (а именно с его помощью получают проекцию вектора на ось координат) для функции будет выглядеть как корелляция. В воображаемом многомерном функциональном просранстве некореллирующие между собой функции образуют оси координат. Функциональных координат. Если посчитать корелляции синусов и косинусов между собой на интервале периода частоты f, причем частоты участвующих синусов и косинусов являются произведением частоты f на целое число, то все они будут равну нулю, а значит все эти синусы и косинусы образуют систему координат. Причем периодическую функцию частоты f можно представить как сумму всех синусов и косинусов индивидуально умноженных на проекции на ось. Таком образом можно представить периодичаскую функцию в виде суммы или ряда Фурье. Каждая индивидуальная амплитуда рассчитывается как корелляция разлагаемой функции с соответствующей "осью" -- функцией синуса или косинуса. Подсчет корелляций и есть разложение в ряд Фурье. В пределе из ряда получают интеграл. Интергал для подсчета корелляций и есть преобразование Фурье. Кстати дискретное преобразование Фурье это разложение в ряд Фурье. Получение разложенного функционального "вектора" из проекций называется обратным преобразованием Фурье. Теперь о мнимой составляющей. Преобразование Фурье совершается над двумерным вектором. Двумерный вектор определяется двумя числами. Это либо проекции (сейчас в привычном смысле) на оси X и Y, либо в полярных координатах угол и длина вектора. Прекрасно разработанный аппарат комплексных чисел позволяет записать преобразование Фурье в комплексном виде, но мнимая часть это просто дань аппарату. Она реальная вторая координата и ее представляют либо в видекомплексного числа(вектора, представленного в декартовых координатах, либо через экспоненту с мнимым показателем, что соответствует представлению в полярных координатах) Математически полное и исчерпывающее освещение этого вопроса приведено здесь: http://d.theupload.info/down/herm6xxiq7wz9...naliza__v_.djvu Когда я был студентом и прочитал его, то пришел в восторг от изящности изложения.
  19. Сислог можно сконфигурировать для посылки UDP пакетов вместо (можно и оба сделать одновременно. Как советовали писать в tmpfx) записи на свой диск, а удаленный компьютер будет писать их в свой лог файл. Это легко конфигурируется. Можно по USB подключить флешку и писать на нее. Накроется -- легко поменять.
  20. Sitara + Linux

    Неправда, Я делал драйвер для управления подсветкой дисплея через ШИМ. На довольно близком процессоре АМ3715. Правда я сделал доступ через procfs, но все работало как надо. Периферийное устройство как раз и нужно для того, чтобы не процессор занимался работой, а устройство. Зачастую не критично насколько быстро процессор изменит duty cycle, а это как раз зависит от быстродействия ОС. Не нашел кода драйвера, но еще не везде посмотрел.
  21. Linux начинающему

    Линукс среда имеет конфигурацию, которая учитывается при компилировании. Например пути к инклудам и библиотекам. Но если влом поставить виртуальную машину, то поставьте Cygwin и через его терминал и в его конфигурации все будет как на Линуксе. Кстати множество пакетов на Винде работают под Cygwin. Cygwin имеет все это. При установке надо выбрать нужные пакеты. А если не выбрали не беда. Потом запустить сетап апликацию (ты же самую что и для установки) и довыбрать все необходимое. А мне TI больше нравится чем Freescale. Да и документация у них понятнее. Кстати Cortex A9 они раньше сделали чем Freescale iMX6X. -------------
  22. в /sys драйвер появится усилиями операционной системы. Никаких усилий прилагать к этому не надо. Маленький ликбез. Драйвер в ОС Линукс. Драйверы в Линуксе построены на "дереве". Ветки называются шинами (bus). Причем поначалу они соответствовали физическим шинам, а потом осталось только название. Название зачастую вносит путаницу в понимание вопроса. Запомнить нужно одно шина в Линуксе это просто название и ничего больше. список шин вы можете посмотреть в /sys/bus: acpi i2c mdio_bus mmc pci pci_express platform pnp scsi sdio serio spi usb virtio Шина определяет тип драйвера и соответствующие типу методы. например метод найти соответствие (match). Вообще-то все рассказы про драйверы надо начинать с того, что создаются две субстанции драйвер и устройство. Осутствие одной из них не даст нужного результата. В каждой из них есть поле идентификации. Так вот поле идентификации в драйвере и устройстве должны совпадать. Какя идентификация используется и как определить если поля совпадают зависит от шины в PCI или USB это vendor_id:product_id. Для шины platform это поле имени (name). К шине platform принадлежат все устройства, которые нельзя отнести к другим шинам. АЦП принадлежит к шине platform. При создании устройства оно регистрируется в шине к которой и принадлежит. Драйвер может быть создан как модуль и при загрузке модуля он тоже регистрируется в шине. Шина имеет два списка один для драйверов, другой для устройств. При загрузке модуля, регистрация его вызовет просмотр всего списка устройств в шине. match метод шины проверит идентификационного поле устройств и только в случае соответствия поля драйвера полю устройства драйвер будет подключен (вызовется метод probe). Все необходимые псевдофайлы появятся в sys. Вместо вышеизложенного метода можно сделать модуль и работать через procfs, однако это неправильно. Я сделал некоторые упрощения, чтобы не перегружать второстепенной информацией. Если есть вопросы по теме -- постараюсь помочь найти ответ. К сожалению сам не все знаю. Только то с чем приходилось работать. Вот лучшаее руководство из тех что я знаю по написанию модулей: http://www.tldp.org/LDP/lkmpg/2.6/lkmpg.pdf
  23. CSR имеет очень много документации, доступной зарегистриропванным пользователям. Для регистрации нужно иметь идентификационный номер, купленного у них устройства. В BlueLab есть одно такое устройство, а в Casira два. Надо связаться с CSR и попросить их зарегистрировать вас. Иметь под рукой этот номер. На сайте CSR написано как подключиться к их новостным группам. Там разработчики CSR дают ответы в течение часа.
×
×
  • Создать...