LINUX.ORG.RU

Сообщения Rupricht

 

YOSYS и ПЛИС от GOWIN

Здравствуйте. Приобрел недавно платку TangNano9k с ПЛИС от фирмы GOWIN. Захотелось что-нибудь на нее навериложить, тем более она поддерживается опенсорсным YOSYS. По традиции, начал с моргания светодиодом. Все получилось, и синтез и прошивка, все просто работает, однако, захотелось чего-то посложнее светодиода, например вывод изображения через HDMI, который уже распаян на плате. Собственно вопрос: как в YOSYS использовать специализированные блоки ПЛИС, например PLL, который необходим для HDMI?

 ,

Rupricht
()

Conky тормозит после обновления.

Здравствуйте. Хотелось бы услышать мнение арчеводов и арчелюбов по поводу моей проблемы. После очередного pacman -Suy, внезапно conky стал работать крайне медленно, порядка одного обновления за 10 секунд. Проведя некоторые эксперименты, было установлено, что замедления возникают при использовании lua-функций, чем больше в конфиге вызовов функций, не важно каких, тем медленнее работает conky. Версия conky роли не играет, пробовал более старую с тем же результатом, и вообще дело скорее всего в библиотеках. Багрепорт в conky написал, но не уверен что проблема в нем. Также пробовал запускать conky в контейнере systemd с установленной убунту, там все нормально.

Тестовый конфиг:

conky.config = {
	background = false,
	own_window = true,
	own_window_class = 'Conky',
    own_window_type = 'desktop',
	own_window_transparent = false,
	own_window_argb_visual = true,
    own_window_argb_value = 200,
	own_window_hints = 'undecorated,below,sticky,skip_taskbar,skip_pager',
	default_color = 'white',
	default_shade_color = 'black',
	default_outline_color = 'blue',
	alignment = 'mm',
	gap_x = 10,
	gap_y = 10,
	no_buffers = false,
	xinerama_head = 1,
	double_buffer = true,
	use_xft=true,
	font='Ubuntu mono:size=16',
	update_interval=1.0,
	lua_load='~/.config/conky/scripts/conky_lua_scripts_test.lua',
	maximum_width=1200,
	minimum_width=1200,
};
conky.text = [[
CPU00: ${lua_parse format %3.0f ${cpu cpu1}}% ${cpubar cpu1 16,230} \
CPU08: ${lua_parse format %3.0f  ${cpu cpu9}}% ${cpubar cpu9 16,230} ${color 777799}${lua_bar 16,128 fbar ${freq 1} 1}${voffset -4} ${font Mono:size=8}${freq 1} МГц${font}${voffset -5}${color}
CPU01: ${lua_parse format %3.0f ${cpu cpu2}}% ${cpubar cpu2 16,230} \
CPU09: ${lua_parse format %3.0f ${cpu cpu10}}% ${cpubar cpu10 16,230} ${color 777799}${lua_bar 16,128 fbar ${freq 2} 2}${voffset -4} ${font Mono:size=8}${freq 2} МГц${font}${voffset -5}${color}
CPU02: ${lua_parse format %3.0f ${cpu cpu3}}% ${cpubar cpu3 16,230} \
CPU10: ${lua_parse format %3.0f ${cpu cpu11}}% ${cpubar cpu11 16,230} ${color 777799}${lua_bar 16,128 fbar ${freq 3} 3}${voffset -4} ${font Mono:size=8}${freq 3} МГц${font}${voffset -5} ${color}
CPU03: ${lua_parse format %3.0f ${cpu cpu4}}% ${cpubar cpu4 16,230} \
CPU11: ${lua_parse format %3.0f ${cpu cpu12}}% ${cpubar cpu12 16,230} ${color 777799}${lua_bar 16,128 fbar ${freq 4} 4}${voffset -4} ${font Mono:size=8}${freq 4} МГц${font}${voffset -5} ${color}
CPU04: ${lua_parse format %3.0f ${cpu cpu5}}% ${cpubar cpu5 16,230} \
CPU12: ${lua_parse format %3.0f ${cpu cpu13}}% ${cpubar cpu13 16,230} ${color 777799}${lua_bar 16,128 fbar ${freq 5} 5}${voffset -4} ${font Mono:size=8}${freq 5} МГц${font}${voffset -5} ${color}
CPU05: ${lua_parse format %3.0f ${cpu cpu6}}% ${cpubar cpu6 16,230} \
CPU13: ${lua_parse format %3.0f ${cpu cpu14}}% ${cpubar cpu14 16,230} ${color 777799}${lua_bar 16,128 fbar ${freq 6} 6}${voffset -4} ${font Mono:size=8}${freq 6} МГц${font}${voffset -5} ${color}
CPU06: ${lua_parse format %3.0f ${cpu cpu7}}% ${cpubar cpu7 16,230} \
CPU14: ${lua_parse format %3.0f ${cpu cpu15}}% ${cpubar cpu15 16,230} ${color 777799}${lua_bar 16,128 fbar ${freq 7} 7}${voffset -4} ${font Mono:size=8}${freq 7} МГц${font}${voffset -5} ${color}
CPU07: ${lua_parse format %3.0f ${cpu cpu8}}% ${cpubar cpu8 16,230} \
CPU15: ${lua_parse format %3.0f ${cpu cpu16}}% ${cpubar cpu16 16,230} ${color 777799}${lua_bar 16,128 fbar ${freq 8} 8}${voffset -4} ${font Mono:size=8}${freq 8} МГц${font}${voffset -5} ${color}
]];

conky_lua_scripts_test.lua:

function conky_format( format, number )
    return string.format( format, conky_parse( number ) )
end


function conky_fbar(value,n_str)
	if ks==nil then ks={ {10,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0}} end
	local f0=2000
	local fmax=4300
	local fi=tonumber(conky_parse(value))
	if fi<f0 then fi=f0 end
	if fi>fmax then fi=fmax end
	local p=100*((fi-f0)/(fmax-f0))
	local n=tonumber(n_str)
	p=(p+ks[1][n])/2
	ks[1][n]=p
	return p
end

 , , ,

Rupricht
()

Нумерация гипертрэдинговых ядер.

Господа любители и пользователи процессоров intel c включенным hypertreading, скиньте сюда вывод lscpu -e. Просто возникла мысль, что нумерация «виртуальных» ядер может отличаться для процессоров intel и AMD.
Вот вывод для ryzen:

lscpu -e
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE
0   0    0      0    0:0:0:0       yes
1   0    0      0    0:0:0:0       yes
2   0    0      1    1:1:1:0       yes
3   0    0      1    1:1:1:0       yes
4   0    0      2    2:2:2:0       yes
5   0    0      2    2:2:2:0       yes
6   0    0      3    3:3:3:0       yes
7   0    0      3    3:3:3:0       yes
8   0    0      4    4:4:4:1       yes
9   0    0      4    4:4:4:1       yes
10  0    0      5    5:5:5:1       yes
11  0    0      5    5:5:5:1       yes
12  0    0      6    6:6:6:1       yes
13  0    0      6    6:6:6:1       yes
14  0    0      7    7:7:7:1       yes
15  0    0      7    7:7:7:1       yes

 ,

Rupricht
()

Вызов функций с различным числом аргументов по адресу.

Призываю любителей и пользователей языка Ц.
Допустим, есть функции:

int a(int arg1, int arg2)
{
    ...
}

int b(int arg1, int arg2,int arg3)
{
    ...
}
Как написать такую функцию, которая могла бы вызывать функции по указателю, но с разным числом аргументов? Типа такого:
call_function(a,2,arg1,arg2);
call_function(b,3,arg3,arg4,arg5);
Единственное, что мне приходит на ум - это сделать switch по кол-ву аргументов и для каждого количества использовать свой тип указателя. Может есть какие-нибудь директивы компилятора, прагмы, аналог arguments из javascript или еще чего?

 ,

Rupricht
()

Touchscreen и Linux

У меня есть cubieboard2 и cubiescreen к ней. Существуют очень кривые патчи к ядру 3.4 с проприетарным блобом и они кое-как работают. Решил написать свои драйверы к mainline-kernel и вот что получилось: https://github.com/y-salnikov/cubieboard2-cubiescreen . Все работает, естественно, без аппаратного ускорения и OpenGL ES.
Однако ситуация с тачскрином не такая простая - нужно фильтровать входные данные, определять двойной клик и прочие жесты. В самих драйверах, на примере которых я писал свой, этого не сделано. Логично предположить, что это должно выполняться в иксах, а точнее в evdev, но он передает все события как есть и эмулирует мышь. Конечно, все эти проблемы решены в драйверах для тачпадов, но я не нашел ни одного, который мог бы переключиться в режим абсолютного позиционирования.
Еще одной проблемой является отсутствие вменяемых WM/DE для работы с тачскринами небольшого размера, а такие монстры, как гном3, которые вроде как под них и заточены - требуют аппаратного ускорения. Enlightenment в режиме планшета подошел бы, будь он работоспособен. А нужно то совсем не много - примерно как в андройде, чтобы не закрывать окна пытаясь попасть на крестик в заголовке окна на тачскрине с низким разрешением сенсора.
Что сказать-то хотел: Как вообще обстоят дела с линуксом на подобных девайсах или убунтофонах? Может это только у меня такие проблемы?

 , , ,

Rupricht
()

Лаги USB.

Есть одно устройство: вот это, оно нормально работало в свое время, но после замены мат.платы на ASUS M5A97-R2.0, устройство стало работать не стабильно. Дело в том, что оно содержит небольшой FIFO и «стримит» данные со скоростью примерно 12МБайт/c, но как только FIFO переполняется — устройство останавливается (так и задумано). На старой материнке переполнения не возникали, а вот на новой иногда возникают.
Я подумал, что при использовании bulk endpoint'ов USB-протокол и не гарантирует отсутствие задержек, и написал тестовую программку для передачи через isochronous endpoint, вот тут.
Проверял на нескольких компьютерах и везде, даже на стареньком ноутбуке происходит устойчивая передача данных на скорости 24МБайта/с, кроме моего, где FIFO устройства переполняется сразу.
Тогда я подумал, что дело в кривом USB контроллере, причем их там 2(один для USB3.0), и поставил PCI плату с еще одним. Результат тот же. И скорее всего линукс тут даже не причем, так как в винде ситуация еще хуже.
Если кто захочет протестировать, то понадобиться какое-нибудь устройство на CY7C68013A, например китайский клон логического анализатора saleae logic.
Собственно вопрос, никто не сталкивался? Куда копать?

 , , ,

Rupricht
()

IronSeed

Недавно узнал, что код игры IronSeed выложили под GPL. wiki. Так как код был написан в далеком 1994 году, он содержит много низкоуровневых штук и ассемблерных вставок, да и на писан он на турбо паскале. Хотя игра прекрасно работает в dosbox'e, я решил сделать нативную версию. Написал костылей, поправил исходники, убрал ассемблерную магию и вот, что получилось: https://github.com/y-salnikov/ironseed_fpc . Для компиляции нужен fpc, SDL-1.2.xx и SDL-mixer. Конечно, появились новые баги, и внезапные вылеты. Хотелось бы найти людей, помнящих dos и паскаль, готовых прислать пару патчей. И да, оно скорее всего не нужно.

Rupricht
()

[gentoo][multilib-overlay] RIP?

Господа гентушники, есть ли какая альтернатива multilib? Держу его ради пары бинарников, но что-то он давно не обновлялся, последний комит был в мае. В текущей версии есть баг со сборкой libxml2, о чем я написал в багзиллу, но никто не подтвердил. Вот я и хочу спросить, может multilib давно уже RIP и «ненужен»?

 

Rupricht
()

[C] Asm 2 C

Здравствуйте. Допустим есть исходник на ассемблере либо на С с ассемблерными вставками (x86 разумеется). Есть ли какой-нибудь хитрый скрипт, который преобразовывал бы его в чистый С, ну там заменить регистры переменными, команды функциями и т.п? В гугле находил только коммерческие реализации.

 

Rupricht
()

[gentoo x86_64][crossdev][mingw32] Не собирается GCC.

Пытаюсь собрать mingw32 через crossdev crossdev -t i686-pc-mingw32. В логах получаю вот это:

/bin/sh ../../../libtool --tag=CC --mode=link /var/tmp/cross/i686-pc-mingw32/portage/cross-i686-pc-mingw32/gcc-4.4.4-r1/work/gcc-4.4.4/host-x86_64-unknown-linux-gnu/gcc/xgcc -B/var/tmp/cross/i686-pc-mingw32/portage/cross-i686-pc-mingw32/gcc-4.4.4-r1/work/gcc-4.4.4/host-x86_64-unknown-linux-gnu/gcc/ -B/usr/x86_64-unknown-linux-gnu/bin/ -B/usr/x86_64-unknown-linux-gnu/lib/ -isystem /usr/x86_64-unknown-linux-gnu/include -isystem /usr/x86_64-unknown-linux-gnu/sys-include  -m32 -W -Wall -Wmissing-declarations -Wwrite-strings -Wmissing-prototypes -Wno-long-long  -fexceptions -fasynchronous-unwind-tables -g -O2    -m32 -module -version-info 0:0:0 -no-undefined -m32 -o libgjsmdssi.la -rpath /usr/lib/../lib32/gcj-4.4.4-10 -module -version-info 0:0:0 -no-undefined -avoid-version gnu_javax_sound_midi_dssi_DSSIMidiDeviceProvider.lo gnu_javax_sound_midi_dssi_DSSISynthesizer.lo ../../../native/jni/classpath/jcl.lo -ljack 
libtool: link: /var/tmp/cross/i686-pc-mingw32/portage/cross-i686-pc-mingw32/gcc-4.4.4-r1/work/gcc-4.4.4/host-x86_64-unknown-linux-gnu/gcc/xgcc -B/var/tmp/cross/i686-pc-mingw32/portage/cross-i686-pc-mingw32/gcc-4.4.4-r1/work/gcc-4.4.4/host-x86_64-unknown-linux-gnu/gcc/ -B/usr/x86_64-unknown-linux-gnu/bin/ -B/usr/x86_64-unknown-linux-gnu/lib/ -isystem /usr/x86_64-unknown-linux-gnu/include -isystem /usr/x86_64-unknown-linux-gnu/sys-include  -m32 -shared  .libs/gnu_javax_sound_midi_dssi_DSSIMidiDeviceProvider.o .libs/gnu_javax_sound_midi_dssi_DSSISynthesizer.o ../../../native/jni/classpath/.libs/jcl.o   -ljack  -m32 -m32 -m32   -Wl,-soname -Wl,libgjsmdssi.so -o .libs/libgjsmdssi.so
/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.4/../../../../x86_64-pc-linux-gnu/bin/ld: skipping incompatible /usr/lib/libjack.so when searching for -ljack
/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.4/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -ljack
collect2: ld returned 1 exit status
make[8]: *** [libgjsmdssi.la] Ошибка 1
Внимание вопрос: Зачем gcc нужен jack?
Ставил jack, даже с флагом lib32 из оверлэя «multilib» - не помогает. Такое ощущение, что на переменную USE оно не реагирует, пробовал "-gcj -java -jack".
Никто не сталкивался?

 

Rupricht
()

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