LINUX.ORG.RU

Сообщения ri_mik

 

ноут hp не правильно работает с клавишей -«калькулятор»

Форум — Linux-hardware

Все привет. Новый ноут hp 6K5R9EA mint 21.1 не видит дополнительный клавиши и num lock для него ничего не значит , а вот с клавишей «калькулятор» открывает бесконечное количество gnome-calculator. Поставил Ubuntu 22.10 дополнительная клавиатура работает num lock все четко А вот по клавише Калькулятор вызывает один раз приложение calculator и больше все молчок. Перезапустил включил xev один раз видно кнопку все остальные разы тишина. Подключил usb клаву с кнопкой «калькулятор» все, работает запускает столько раз сколько нажал. Код клавиши тот же.

showkey код клавиши 140 нажата showkey код клавиши 140 нажата

showkey видит нажатие но не видит отжатие.

Вопрос это железо кривое ? просто ноут новый поэтому надо осознать и если это железо то вернуть.

P.S. Windows не пробовал

 ,

ri_mik
()

Как отправить UDP пакет по петле на одной машине?

Форум — Admin

Доброго времени суток.

Имеется комп с двумя сетевыми картами, соединяем их кабелем, получаем петлю. Надо толкнуть UDP пакет из одной сетевой карты и в другой сетевой его поймать. Проверить что провода живые. Наличие running на interface не очень интересует надо чтобы по проводам прошелся пакет.

Как такое сделать ?

Перемещено hobbit из general

 , ,

ri_mik
()

Тест для собственного framebuffer - a

Форум — Development

Имеется комп в него через pcie вставлена fpga. Есть драйвер для этой fpga, который реализует framebuffer уcтройство (/dev/fb1), квадратик я могу туда нарисовать, а вот как потестить с реальными окнами, подвигать их и посмотреть тормозит не тормозит?

 , ,

ri_mik
()

Адресация и DMA

Форум — Development

Доброго времени суток. В ядре есть сетевой драйвер от altera /kernel/driver/net/ethernet/altera/. Я использую его в своем проекте. В драйвере реализована следующая функция

static int tse_init_rx_buffer(struct altera_tse_private *priv,
			      struct tse_buffer *rxbuffer, int len)
{
	rxbuffer->skb = netdev_alloc_skb_ip_align(priv->dev, len);
	if (!rxbuffer->skb)
		return -ENOMEM;

	rxbuffer->dma_addr = dma_map_single(priv->device, rxbuffer->skb->data,
						len,
						DMA_FROM_DEVICE);

	if (dma_mapping_error(priv->device, rxbuffer->dma_addr)) {
		netdev_err(priv->dev, "%s: DMA mapping error\n", __func__);
		dev_kfree_skb_any(rxbuffer->skb);
		return -EINVAL;
	}
	rxbuffer->dma_addr &= (dma_addr_t)~3;
	rxbuffer->len = len;
	return 0;
}
Зачем они избавились от 2 нижних бит в адресе rxbuffer->dma_addr? В устройство затем пойдет именно rxbuffer->dma_addr. а по приему длину сократят на 2 pktlength -= 2; Для выравнивания нагрузки ( DMA trasfer from TSE starts with 2 aditional bytes for IP payload alignment. ) Код драйвера конечно завязан на проект под fpga, и у меня pci устройство с fpga вместо sopc. Код работает под платформу arm (32 бита), а на машине amd64 по dma приходит пакет который впереди содержит 2 нуля что то адресацией, может кто в курсе куда копать подскажите ? (в проекте ПЛИС имеется добавление этих нулей. Почему они игнорируются под arm) Используется msgdma.

 ,

ri_mik
()

Ищу удаленную работу Инженер-программист Linux c/c++ qt

Форум — Job

Ищу работу по удаленке.

Опыт 11 лет.

Навыки: с/с++ qt драйвера Linux

veholeg@yandex.ru

 , , ,

ri_mik
()

как правильно работать с phy в драйвере ethernet ?

Форум — Development

Есть pcie устройство пишу для него сетевой драйвер. В устройстве есть Mac к нему подрублен phy.

Я создаю

struct mii_bus mdio = mdiobus_alloc();
устанавливаю функции для чтения и записи для доступа к регистрам phy. далее регистрирую mdio в системе mdiobus_register(); Далее с помощью функции struct phy_device phydev = phy_find_first(mdio) получаем структуру phy_device

далее вызываем phy_connect где указываем функцию для call back link_func

Так вот система постоянно вызывает link_func Так и должно быть ? почему бы её не вызывать по прерыванию от phy ? Есть где инфа ? (LDD такого не знает)

 ,

ri_mik
()

как узнать какой процесс открывает /etc/paswd

Форум — General

Смотрю на вывод

inotifywait -rm /etc/

постоянно где то раз в секунду или чаще

/etc/ OPEN passwd
/etc/ CLOSE_NOWRITE,CLOSE passwd
/etc/ OPEN passwd
/etc/ CLOSE_NOWRITE,CLOSE passwd

Хотелось бы узнать что за процес этим занят [... и убить :)]

 

ri_mik
()

Linux driver помогите с постоением архитектуры драйвера

Форум — Development

Суть: создаю символьный драйвер он должен прокачивать 1Гбит/сек для этого имеется очередь DMA от PCI железа. Для приема я создал поток(kthread) и связал его с одним из ядер. Поток запускается и ждет события (wait_event_interrupt_timeout). Событие наступает по прерыванию(irq). Как только наступает прерывание irq делаем disable irq и выстовляем wake_up. Проснувшись поток работает пока все не вычитает. Читает и складывает в kfifo. Как только чтение окончено делаем enable irq, возвращаемся к ожиданию события. read драйвера считывает данные из kfifo. Так примерно работает драйвер. Я пытался создать нечто подобное сетевому драйверу c napi, чтобы мой поток был функцией опроса.

Некоторый нюанс по работе драйвера выяснился при отладке. При опросе можно получить что нет данных на чтение и перейти в ожидание события (irq), как бы норм, но выяснилось что драйвер не успевает все выгребать и очередь dma становиться переполненой -> железо падает. Дописан кастыль - приходиться опрашивать 100 раз есть ли данные, и если 100 раз нет, то только тогда перейти в ожидание. Кастыль помогает принять все данные. Но, выясняется другое, пользовательское приложение не успевает выгребать kfifo [не могу понять по какой причине](приложение, имеет поток на чтение, в котором стоит while(1) read(/dev/my_device)) в результате kfifo будет перезаписано потоком приема -> потеря данных.

Прошу высказать советы и пожелания по поводу улучшения или создания новой архитектуры драйвера.

 ,

ri_mik
()

RSS подписка на новые темы