Jump to content

    

slavayo777

Участник
  • Content Count

    65
  • Joined

  • Last visited

Community Reputation

0 Обычный

About slavayo777

  • Rank
    Участник
  • Birthday 12/02/1987

Контакты

  • Сайт
    http://
  • ICQ
    449909894
  1. 1PPS

    Цитата(TigerSHARC @ Apr 24 2013, 11:24) Хочу настроить приём 1PPS на Linux машине на базе ARM. Поддержку в ядре включил. Физически куда подключать и как настроить порт (или ножку, отвечающую за приём 1PPS) ? В исходниках ядра есть примеры как реализовать drivers/pps/clients/pps-gpio.c Есть инструкция, как пользоваться драйвером здесь (ответ пользователя goodx) Я не стал разбираться с драйвером pps-gpio.c, проще было написать свой. Идея проста, нужно написать драйвер с прерыванием по GPIO, а в handler засунуть Кодpps_get_ts(&ts); pps_event(info->pps, &ts, PPS_CAPTUREASSERT, NULL); Предварительно нужно зарегестировать в системе источник с помощью pps_register_source(). Как сделать, описано здесь Есть так же возможность подключить PPS к UART'у (DCD выводу PPS line discipline) http://linuxpps.org/wiki/index.php/LinuxPPS_installation
  2. Цитата(beaRTS @ Apr 19 2013, 09:58) скажите, пожалуйста. Вот есть у нас огромное количество отладочных плат с touchsreen. в основном они сидят на шине I2C. Вопрос такой. Существует ли правило/rule of thumb/унификация, что любым touchsreen'ам на любых платах соответствует адрес 0х48 на шине I2c ????????? просто смотрел реализацию одного драйвера для тачскрина, а так же документ описывающий одну платку, в общем, и там и там адреса были 0х48.. вот я и задумался существует ли унификация такая? Есть такое. Большинство тачскринов которые я видел имеют такой базовый адресс. Но на большинстве из них есть специальные выводы для задания адресса, например http://www.ti.com/lit/ds/sbas454/sbas454.pdf может быть 0x48-0x4B. Так что адресс зависит также от включения контроллера. Но rule of thumb нет, так как есть очень много других устройств с таким же адрессом (LM75, PCF8591...).
  3. виртуальный сетевой драйвер HSR/PRP

    Нужно было отключить learning на свитче, чтоб одинаковые пакеты выходили с интерфейса. У меня два ETH подключены к свитчу и разруливаются на внешние порты через port based vlan. Так что все я правильно делал с skb буферами. Перерыл тонну литературы, узнал очень много нового по сетевым драйверам, а проблема изначально было в другом Драйвер дописал, все работает, всем спасибо.
  4. Цитата(Dubov @ Apr 17 2013, 20:02) простите меня тёмного, а где это посмотреть? в buildroot во вкладке Boatloaders есть графа Custom Network Settings, звёздочка там не стоит. так что как я понимаю ничего не передаётся при загрузке... пардон. посмотрел при запуске платы, нажав клавишу и отменив загрузку ядра. дейсвтительно строка похожа на вашу. но ведь это настройки самого uboot и ядро должно само подхватить адрес указаный в конфиге. разве нет? как поменять передаваемые через uboot настройки сети? чтож теперь не установить сетевые настройки кроме как пересобрав uboot? Linux не читает конфиги. Их читает busybox, или что там у вас в корневой по linuxrc? Я никогда не пользовался buildroot'ом, всегда все собирал сам, потому помочь в его конфиге не могу. Uboot может передавать параметры сети linux'у при старте в bootargs. bootargs - это переменная uboot, которая может храниться в ПЗУ, а может и не храниться, все зависит, как вы собирали uboot. Если они храняться в ПЗУ, то их можно менять путем setenv->saveenv. /etc/network/interfaces у вас немного не по стандарту busybox'а. Busybox использует конфиги в стиле debian. Потому почитайте вниметельно это http://wiki.debian.org/NetworkConfiguration (Configuring the interface manually). Так же в папке исходников busybox'а есть много доков по конфигам.
  5. Цитата(TigerSHARC @ Apr 17 2013, 14:50) увидел тему - стало интересно. А как посмотреть что передаёт u-boot при загрузке Linux? как может получится так что Linux игнорирует файл конфигурации сети в корневой? Игнорирует скорей не линукс, а busybox (или что там у автора). А в uboot параметры сети могут передаваться в bootargs через параметр ip= У меня как то так на eth1 устанавливается ip 192.168.11.100 Код=> print bootargs bootargs=root=/dev/ram ramdisk_size=25000 rw ip=192.168.11.110:192.168.11.25::255.255.255.0:mpc8323erdb:eth1:off console=ttyS0,115200 Я не утверждаю, что игнорируются, прост предложил проверить. Откуда то же береться у автора фиксированный ip?
  6. виртуальный сетевой драйвер HSR/PRP

    Может подскажите как послать skb сразу в 2 интерфейса? Сейчас ситуация следующая, пакет приходящий из xmit функции виртуального сетевого устройства посылаю с помощью dev_queue_xmit по следующему алгоритму. Кодskb2 = skb_clone(skb, GFP_ATOMIC) skb->dev = eth1 skb2->dev = eth2 dev_queue_xmit(skb) dev_queue_xmit(skb2) ping на удаленный хост проходит с 30-70% потерями. И вообще твориться что то непредсказуемое. Когда же посылаю только в 1 интерфейс ping проходит 100%. В чем может быть проблема?
  7. виртуальный сетевой драйвер HSR/PRP

    Решил задачку с netdev_rx_handler_register() Кодstatic rx_handler_result_t _front_phys_handler(struct sk_buff **pskb) {     struct sk_buff *skb = *pskb;     skb = skb_share_check(skb, GFP_ATOMIC );     if (!skb)         return RX_HANDLER_CONSUMED;     skb->dev = redbox_dev.virt_front;     skb->pkt_type = PACKET_HOST;     if(netif_rx(skb) == NET_RX_SUCCESS) {         redbox_dev.virt_front->stats.rx_packets++;         redbox_dev.virt_front->stats.rx_bytes += skb->len;     }     return RX_HANDLER_CONSUMED; } Теперь пакеты гуляют спокойно от виртуального адаптера через физический при разных мак адрессах. В общем то могу уже переносить код. Спрятать физический интерфейс от системы не получиться, как я понял. Но он и не мешает, все пакеты перехватываются новым handler'ом.
  8. Проверьте параметры загрузчика, он может передавать настройки сети через параметры при загрузке линуха. (в uboot - bootargs)
  9. виртуальный сетевой драйвер HSR/PRP

    Сделал виртуальный интерфейс по примеру из http://www.ibm.com/developerworks/ru/libra...l_33/index.html добавил только dev_set_promiscuity(front_dev, 1); вопрос в следующем. Почему, если у физического и виртуального интерфейса одинаковые mac, ping проходит, а если разные, то нет? Хотя wiresharkом вижу, что пакеты от виртуального интерфейса посылаются, компьютер на них отвечает, пакет заходит в handle_frame(), в буфере skb подменяется устройство, но линух этот пакет не видит. В drivers/net/bonding/ и net/bridge/ после alloc_netdev вызывается dev_net_set(). Зачем это делается? Может в этом причина? Тогда где взять аргумент net?
  10. виртуальный сетевой драйвер HSR/PRP

    В принципе сейчас нашел драйвер для DSA (Distributed Switch Architecture). Создает виртуальное/ые устройство/а по количеству портов на свитче и вставляет/убирает DSA тэг в пакетах. Создает виртуальное устройство с помощью alloc_netdev() Добавляет протокол сетевого уровня с помощью dev_add_pack() Как я понял, такое решение не скроет физическое устройство, а будет перехватывать только DSA пакеты. Мне же нужно перехватывать ВСЕ пакеты от физического интерфейса и спрятать само устройство от системы. Есть ли такой метод? Цитата(Idle @ Apr 9 2013, 12:05) Не оно? http://lwn.net/Articles/488836/ Опять таки оно работает с помощью dev_add_pack() и не прячет физические устройства на сколько я понял. Если пакет без определенного тэга, то он пойдет дальше в систему через физическое устройство. Мне же нужно, как я говорил, спрятать физический интерфейс от системы и подменить его виртуальным. Нашел ETH_P_ALL фильтр для dev_add_pack как вариант. Будет перехватывать все пакеты. Нашел так же метод netdev_rx_handler_register(). Что лучше использовать, пока в замешательстве. Вопрос, как спрятать физическое устройство в системе отсаеться открытым. А нужно ли его прятать?
  11. Добрый день всем! Делаю сейчас железку на MPC8321 266MHz DDR2, linux 3.7.6, частью которой является реализация RedBox'а. Есть 3 сетевых интерфейса ETH0, ETH1, ETH2. Простыми словами, нужно грабить все пакеты из одного, немного их модифицировать, и посылать в 2 других, и наоборот. Сейчас сделал все, используя libpcap в userspace. Все работает, но скорость 30 МБит/c. Все максимально оптимизировал, но больше получить так и не смог (железка еще занимается синхронизацией IEEE1588v2, по одному интерфейсу еще реализован RSTP). Как вижу единственный путь - перенести все сетевые дела в kernel, дабы избежать лишнего копирования из kernel в userspace и обратно. С сетевыми драйверами знаком немного (прочитал пару книжек, но ни разу не писал еще ничего реального), с символьным знаком хорошо, было пару проектов, включая этот. Плиз, посоветуйте оптимальный путь, может есть что нибудь, что можно взять за основу (самый лучший вариант). Как мне видеться, нужен механизм, чтобы спрятать реальные физические интерфейсы от системы, создать виртуальные, на которые будет перенаправлен их вывод с небольшой модификацией пакетов ес-но.
  12. AM1705 первый запуск

    Цитата(PavelG @ Nov 30 2011, 17:40) Проблема оказалась в том, что в исходниках U-boot'а были выстроены настроеки на получение внешнего тактовго сигнала в 50 МГц. Поправил регистр pinmux[9] и чип нашелся, но теперь не получаеться пинговаться. Проверял снифером пакет запроса МАС адреса приходит на ПК, тот отвечает, но плата почему-то не принимает данных. Чипы разные бывают. Читайте даташит, смотрите исходники. Даете ли Вы резет физике? Записываете нужные регистры? Для проверки можно еще посмотреть на сигнал RXDV. При приеме пакета он должен опускаться в ноль. Постоянный обмен там идет из-за вычитывания link статуса. Когда регистрируется драйвер для физики, то там передаются функции инициализации и опроса статуса. Можно не передавать функции опроса. Тогда не будет постоянного обмена, но и MAC не будет приспасабливаться к физике. Все это делается в cpu/arm926ejs/ether.c. У меня тоже было много проблем с сетью. На моем устройстве установлен marvell 88e6165 через micrel ksz8041, так как у marvell нет RMII. Тож замучался пока все это настроил. Могу скинуть исходники, если у вас ksz8041 может помогут чем-то. Кстати, спешу сообщить, что линукс успешно запущен, сделали на днях файловую систему. Все прекрасно работает, чему я несказанно рад. Теперь делаем уже приложение под линукс.
  13. AM1705 первый запуск

    Цитата(PavelG @ Nov 14 2011, 19:49) Получилось прошить U-boot с включенным PLL. Просто меня переклинило, и я упорно вместо резонатора выбирал генератор. SDRAM тактируеться, все прошивается (все как по UserGuide в DaVinci), однако в Hyperterminale тишина. Жал Enter и строка U-boot> не появлялась. Использую USB->UART переходник на основе CP2102, определяется как COM3. Настройки UART для консоли Код#define CONFIG_SYS_NS16550 #define CONFIG_SYS_NS16550_SERIAL #define CONFIG_SYS_NS16550_REG_SIZE -4 #define CONFIG_SYS_NS16550_COM1 DAVINCI_UART2_BASE #define CONFIG_SYS_NS16550_CLK clk_get(DAVINCI_UART2_CLKID) #define CONFIG_CONS_INDEX 3 //UART2? ... 1. К какому UART подключен ваш терминал? 2. С какого UART вы загружаете uboot? Желательно, чтобы они были одинаковыми, тогда можно тупо всю начальную инициализацию закоментить. Смотрите лучше осциллографом на UART. после того как uboot загрузится - он выдает много текста. КодU-Boot 2009.11 (РћРєС‚ 27 2011 - 15:45:48) DRAM:  16 MB In:    serial Out:   serial Err:   serial ARM Clock : 300000000 Hz Net:   88E6165 Initialized on daveth0 Can't overwrite "ethaddr" Hit any key to stop autoboot:  0 Если там хоть что-то дергается после загрузки - значит неправильный baudrate. Исправляйте по ситуации те места, которые я указал ранее.
  14. AM1705 первый запуск

    В общем 3 раза отправил одно и тоже, как удалить не знаю.
  15. AM1705 первый запуск

    В общем 3 раза отправил одно и тоже, как удалить не знаю.