ЗАО «ЗЭО»
Техническая поддержка пользователей => ОС Linux, U-Boot => Тема начата: yh от 24 Мая, 2011, 15:49:13
-
На днях переполз на buildroot 2011.02. Использую тулчейн на gcc-4.2.4 c патчами для плавающей запятой. Ядро 2.6.38.6, от поддержки графического акселератора отказался, потому что он сильно мешает нандовской флэшке на первом чипселекте. Создается впечатление, что он залазит в чужие адреса и гонит какие-то свои данные по шине прямо на флэш. :(
Все остальное как в старой моей теме про buildroot 2010.05. Рабочий конфиг и пояснения находятся в архиве, архив находится тут ftp://kicad.r4b.ru/pub/tion9315/buildroot/buildroot-2011.02.tar.bz2 (ftp://kicad.r4b.ru/pub/tion9315/buildroot/buildroot-2011.02.tar.bz2).
Если кто сможет собрать busybox 18.3 тулчейном на gcc 4.5.2 - пишите, очень интересно.
-
У Вас получилось собрать ядро 2.6.38.6 ? Оно заработала ? Видит Тионовскую переферию ?
Мне это интерестно со страшной силой, в новых ядрах много камер поддерживаеца.
-
Да, ядро 2.6.38.6 собирается и нормально работает, ту переферию, которую мы используем - видит. А используем мы nand flash, usb клаву и флэшки, различные девайсы на SPI и i2c шинах, xilinx spartan, gpio, keypad, touchscreen или АЦП вместо него.
Пробовал ядро 2.6.39, не понравилась работа nfs, решил остановиться на 2.6.38
Ядро можно собрать и отдельно от buildroot с любым тулчейном (например codesourcery lite), только накатить патчик и конфиг из buildroot на исходники, сделать
make ARCH=arm oldconfig
make -j4 ARCH=arm CROSS_COMPILE=/home/roman/CodeSourcery/Sourcery-2010.09-50-gnueabi/bin/arm-none-linux-gnueabi-
при желании
make ARCH=arm menuconfig - и конфигурируй как надо, только осторожно ))
-
Спасибо, буду пробовать.
Вчера я попытался откомпилировать этот buildroot на ALT Linux 6.0, он долго работал а потом сообщил ошибку при сборке какого-то пакета для хоста, линкер сказал что не может найти библиотеку -lc (libc), но она у меня лежит в /usr/lib/libc.so.
Наверное ALT-овцы что-то намудрили в системе, было бы что-то в исходникак я бы поправил, а такие заскоки в системе я отлаживать не умею, и сейчас пробую компилировать на openSUSE. В данный момент процесс еще идёт...
-
надо поставить glibc-static-devel
-
Получилось скомпилировать . Чтобы включить USB камеры искал в меню, там нашел очень мало. Залез вручную а .config едра, и там нашел для одной из камер что у меня есть опцию CONFIG_USB_GSCPA_SPCA561, включил её (=y), а рядом нашел целую пачку CONFIG_USB_GSCPA_... устройств, включил всё что было. ядро собралось. Камеры при втыкании определяются три типа что у меня есть, он пишет название и всякое там... Но сносно заработала только одна из них - Genius SPCA561. Из них, к сожалению не пошла A4TECH USB2.0 PC Camera J (она по параметрам ничё и по цене, а главное размер маленький, встраивать удобно во всякие устройства, в роботов и т.д... Но в принципе заработало, а камеры можно поподбирать еще какие-нибудь.
Еще у меня почему-то экранная область ушла немного вверх за пределы. Заставочный пингвин рисуется не весь, а на пол-головы скрывшимся за верхний край экрана. И программы на QT работают сдвинутыми вверх, и перемещаются вниз мышью только до некоторого расстояния от нижнего края, где-то пол-сантиметра. Я использую тип "8" (8' 640х480)
Неверное где-то неправильно стоит начало экранной памяти. Попробую поискать.
Звук еще не пробовал, попробую при первой возможности.
Спасибо за помощь
-
> Неверное где-то неправильно стоит начало экранной памяти. Попробую поискать.
Смотрите настройки таймингов дисплея.
-
Я поправил тайминги. Положение нормально сделалось. Только у меня почему-то яркие разноцветные точки в некоторых местах на пингвине. Некоторые из точек моргают. Запускаю qt приложение всё нормально, но когда я вывожу картинку, например с камеры, то на ней тоже появляются яркие точки, в основном ярко-зелёные, некая такая редкая сыпь. Пока не понимаю в чём дело. Раньше в точности такое было когда я запускал систему сделанную на crater-е, мне порекомендовали кое-какие слова в командной строке запуска ядра и все стало нормально, а сейчас это не срабатывает.
-
> Только у меня почему-то яркие разноцветные точки в некоторых местах на пингвине.
Полярность pixel clock поменяйте.
-
Поменял полярность и всё стало нормально. Спасибо.
Пытаюсь разобраться почему не виден ac97. У меня Сириус.
-
Пытаюсь разобраться почему не виден ac97. У меня Сириус.
Насчет сириуса не подскажу, но для тиона инициализацию АС97 я не делаю.
Нужно зарегистрировать устройство, в файле машины в static void __init tion9315_init_machine(void) вставить вызов void __init ep93xx_register_ac97(void).
И в конфиге нужно включить правильный драйвер для него.
-
Я попробовал поставить SoC драйвер для AC97 и ниже там галочка "собрать все драйверы"
При загрузке он говорит
...
...
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
Cirrus Logic CS4270 ALSA SoC Codec Driver
ALSA device list:
No soundcards found.
Я даже попробовал добавить куски от патча для 2.6.20.21, но это тоже не заработало. Там шли выводы о том что он пишет затем читает всякие регистры кодека, но потом говорит что ошибка в ep93xx_ac97_modprob.
Пытаюсь разобраться
-
Запихал кусок AC97 от старого buildroot 2009.08, там вроде бы кодек cs4202 работал. Он кажется несколько раз подряд пытается инициализироваться, но безуспешно, в конце "AC'97 0 access error (not audio or modem codec)"
ep93xx_audio_init
ep93xx_init_ac97_controller - enter
ep93xx-ac97: AC97RXCR1: 0x00000000
ep93xx-ac97: AC97TXCR1: 0x00000000
ep93xx_set_hw_format
ep93xx_set_hw_format: setting serial mode to 16 bit compact
... ... ... ... ...
ep93xx_write_mixer: val:0x8000
ep93xx_write_mixer: wrote OSS chan:22 (ac97 0x14), l:0, r:0
ep93xx_write_mixer: val:0x8000
ep93xx_write_mixer: wrote OSS chan:14 (ac97 0x16), l:0, r:0
ep93xx_write_mixer: val:0x8000
snd_ep93xx_pcm_new - enter
The substream item:
pcm->streams[0].substream->dma_buffer.addr = 0x0
pcm->streams[0].substream->dma_buffer.area = 0xc59e0000
pcm->streams[0].substream->dma_buffer.bytes = 0x20000
pcm->streams[1].substream->dma_buffer.addr = 0x0
pcm->streams[1].substream->dma_buffer.area = 0xc5b00000
pcm->streams[1].substream->dma_buffer.bytes = 0x20000
snd_ep93xx_pcm_new - exit
ep93xx_ac97_reset
ep93xx_audio_init
ep93xx_init_ac97_controller - enter
ep93xx-ac97: AC97RXCR1: 0x00008018
ep93xx-ac97: AC97TXCR1: 0x00008018
ep93xx_set_hw_format
ep93xx_set_hw_format: setting serial mode to 16 bit compact
ep93xx-ac97: AC97RXCR1: 0x00008018
ep93xx-ac97: AC97TXCR1: 0x00008018
ep93xx_init_ac97_controller: success
ep93xx_init_ac97_codec
ep93xx_set_samplerate: Fs: 44100
ep93xx_set_samplerate: phase: 30121, divider: 557
ep93xx_write_mixer: wrote OSS chan:0 (ac97 0x2), l:100, r:100
... ... ... ... ...
ep93xx_ac97_write: codec:0 reg:0x1c val:0x8a06
ep93xx_ac97_read: codec:0 reg:0x1c val:0x8000
ep93xx_ac97_read: codec:0 reg:0x3c val:0x0
AC'97 0 access error (not audio or modem codec)
ep93xx_ac97_probe: snd_ac97_mixer error
ep93xx_ac97_probe: error
ep93xx-ac97: probe of ep93xx-ac97 failed with error -13
ALSA device list:
No soundcards found.
Наверное там с новым ядром что-то нестыкуется.
И еще я пробовал там где задается кодек на SoC, насильственно, включить штатный драйвер /sound/soc/ep93xx/ep93xx-ac97.c, путём правки /sound/soc/ep93xx/Kconfig. Все равно не определяется, только на этот раз никаких комментариев не выводится, только
ALSA device list:
No soundcards found.
-
В общем начал у меня видиться кодек. Выдача в конце такая
.....
ep93xx_write_mixer: val:0x8000
ep93xx_write_mixer: wrote OSS chan:8 (ac97 0x12), l:0, r:0
ep93xx_write_mixer: val:0x8000
ep93xx_write_mixer: wrote OSS chan:22 (ac97 0x14), l:0, r:0
ep93xx_write_mixer: val:0x8000
ep93xx_write_mixer: wrote OSS chan:14 (ac97 0x16), l:0, r:0
ep93xx_write_mixer: val:0x8000
Cirrus Logic EP93xx AC97 audio initialized
ep93xx_ac97_probe: exit
ALSA device list:
#0: Cirrus Logic AC97 Audio with CS4202A
Но воспроизведение не работает. При этом mpg123 говорит
ALSA lib confmisc.c:768:(parse_card) cannot find card '0'
ALSA lib conf.c:4154:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4154:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
ALSA lib conf.c:4154:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4633:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2211:(snd_pcm_open_noupdate) Unknown PCM default
[alsa.c:165] error: cannot open device default
[audio.c:627] error: failed to open audio device
[audio.c:180] error: Unable to find a working output module in this list: alsa
[audio.c:529] error: Failed to open audio output module
[mpg123.c:869] error: Failed to initialize output, goodbye.
Устройства /dev/audio /dev/audio /dev/audio1 я скопировал, но всё равно не работает
-
В общем так я и не понял почему не работает звук, хотя карта определяется. Я бы выложил архив исходников, тогда бы кто-нибудь посмотрел в чем дело, но я не знаю как выцарапать его, отскрести от объектников и прочих промежуточных файлов, сохранив при этом конфиги. Иначе он будет огромен.
Пока придётся обходиться без звука, но хотелось бы чтобы робот-тележка мог не только видеть но и говорить и слышать.
-
Народ, может кто подсказать, как сделать чтобы память ОЗУ меньше съедалось системой или еще чем. У меня так получается, что Сириус не открывает нормально две USB камеры, одна при этом может работать а другая. при попытке чтения ругается, что ресурс занят. По некоторым косвенным признакам это нехватка ОЗУ. И еще точно также не работают одновременно одна камера и Wifi. Причина та же. Можно ли как-нибудь сконфигурировать систему чтобы память всё же хватало. (Вроде бы на все буферы при открытии камеры тратится в пределах 1 Мб, кроме тех которые может быть где-то там внутри v4l возможно задействуются)
То что в ядре назначается объем RAM-диска, это влияет на то сколько свободной памяти остается?
-
Какой вывод у free?
-
До открытия камер
total used free shared buffers
Mem: 57856 28404 29452 0 0
Swap: 0 0 0
Total: 57856 28404 29452
После открытия камер
total used free shared buffers
Mem: 57856 30064 27792 0 0
Swap: 0 0 0
Total: 57856 30064 27792
В процессе открытия и настройки второй камеры вылазит сообщение
Error: No space left on device
На какой операции еще не уследил, наверное на mmap.
-
Как видите свободная память уменьшилась всего примерно на 1.5 МБ и её ещё свободно примерно 27.7 МБ.
Может быть проблема в драйвере USB или V4L при одновременной работе их с несколькими устройствами?
Есть ли такая проблема, если камера одна?
-
С одной камерой работает, и TCP сервер отдаёт изображение по ethernet. Но включаю wifi и уже не работает ни по ethernet ни по wifi
-
И еще, на нетбуке asus eepc всё полностью работает с двумя камерами и wifi. (qt4 приложения легко переносимы, перекомпиляция длится лишь несколько секунд)
-
Прослышал я про одну версию, почему не работает вторая камера. Гоаорят что некторые драйверы блокируют доступ у устройствию, если им кажется что машина для этого слабая. Придецо смотреть драйвер
-
А есть у кого-нибудь рабочий конфиг нового ядра (2.6.38.6) для Тиона Про 2?
С тем, что в этом Buildroot-2011.02, не удается подмонтировать КФС на внутренней флешке.
Собирал тулчейном от buildroot-2010.05-rev37.
tar xjf linux-2.6.38.6.tar.bz2
# патч из buildroot-2011.02 не стал править, просто переименовал каталог с распакованным ядром + создал ссылку
mv linux-2.6.38.6 linux-2.6.38.6-production
ln -s linux-2.6.38.6-production linux-2.6.38.6-orig
patch -p0 <linux-2.6.38.6-production.patch
cd linux-2.6.38.6-production
make ARCH=arm oldconfig
make -j4 ARCH=arm CROSS_COMPILE=/media/data/andreika/tion_project/output/staging-4.2.4/usr/bin/arm-unknown-linux-uclibcgnueabi-
mkimage -A arm -O linux -T kernel -C none -a 0x8000 -e 0x8000 -d arch/arm/boot/zImage /srv/tion/kernels/2.6.38.6/uImage-2.6.38.6
Загружал ядро не прошивая во флешку
setenv kern_file kernels/2.6.38.6/uImage-2.6.38.6
setenv machid 0x61f
tftpboot 0x800000 ${kern_file}
bootm 0x800000
Логи загрузки прилагаю Второй, uImage-2.6.38.6-201304051844-boot.log - после добавления кое-каких опций из скачанного с zao-zeo.ru конфига к ядру 2.6.20.21:
CONFIG_MTD_PHYSMAP_START=0x60000000
CONFIG_MTD_PHYSMAP_LEN=0x3ff0000
CONFIG_MTD_PHYSMAP_BANKWIDTH=4
Меня смущали строки лога загрузки:
physmap platform flash device: 00800000 at 60000000
physmap-flash.0: Found 2 x16 devices at 0x0 in 32-bit bank. Manufacturer ID 0x000089 Chip ID 0x00891f
NOR chip too large to fit in mapping. Attempting to cope...
Intel/Sharp Extended Query Table at 0x010A
Intel/Sharp Extended Query Table at 0x010A
Intel/Sharp Extended Query Table at 0x010A
Intel/Sharp Extended Query Table at 0x010A
Intel/Sharp Extended Query Table at 0x010A
Using buffer write method
Using auto-unlock on power-up/resume
cfi_cmdset_0001: Erase suspend on write enabled
Reducing visibility of 65536KiB chip to 8192KiB
Подумал, что это связано с тем, что в просто Тионе Про флешка 8Мбайт. Но пока вышеназванные опции из рабочего конфига ничего не дали.
-
В вашем .config есть CONFIG_MTD_CMDLINE_PARTS. Вам нужно (1) используя
CONFIG_MTD_CMDLINE_PART в bootargs передавать значение mtdparts (то же что и
в U-Boot, но название должно соответствовать названию указанному в ядре,
скорее всего "physmap-flash") или (2) дописав соответствующий код в файл
arch/arm/mach-ep93xx/tion9315.c
Вы можете обновить U-Boot
www.zao-zeo.ru/dokuwiki/doku.php/u-boot#файлы_u-boot_2010.09
насколько я помню, там уже изменено название на "physmap-flash" и можно
делать в bootcmd: se bootargs ${bootargs} ${mtdparts}
-
Спасибо! С Флешки заработала КФС. С такими параметрами:
setenv bootargs console=ttyAM0,57600n8 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=physmap-flash.0:512k(u-boot)ro,2560k(kernel)ro,60928k(fs)
Только для этого пришлось поправить размер NOR flash в arch/arm/mach-ep93xx/tion9315.c с SZ_8M на SZ_64M:
.end = EP93XX_CS6_PHYS_BASE + SZ_64M - 1,
Дальше буду пробовать в конфиге включать опции, которые нужны (тоже созрела необходимость подключать камеры) и разбираться с rtc.
Пока есть проблема с КФС на NFS. Выдает ошибки (полный лог прикрепил):
IP-Config: Guessing netmask 255.255.255.0
IP-Config: Complete:
device=eth0, addr=192.168.0.100, mask=255.255.255.0, gw=255.255.255.255,
host=tion, domain=, nis-domain=(none),
bootserver=255.255.255.255, rootserver=192.168.0.13, rootpath=
VFS: Mounted root (nfs filesystem) on device 0:13.
Freeing init memory: 132K
can't open /dev/null: Permission denied
can't open /dev/null: Permission denied
can't open /dev/null: Permission denied
can't open /dev/null: Permission denied
can't open /dev/ttyAM0: Permission denied
can't open /dev/null: Permission denied
По поводу "rootpath=" (хотя в bootargs было прописано значение) говорят, что это нормально, тем более в syslog на хосте была запись:
Apr 8 18:53:33 vitcmp mountd[3668]: authenticated mount request from 192.168.0.100:689 for /media/data/andreika/nfs1 (/media/data/andreika/nfs1)
Старое ядро загрузилось с этими же параметрами (может быть, в новом что-то поменялось по этому поводу?):
setenv bootargs 'console=ttyAM0,57600n8 root=/dev/nfs rw nfsroot=192.168.0.13:/srv/tion/nfs1 ip=192.168.0.100::::tion:eth0:off ep93xx_eth.hw_eth_addr=00:50:c2:bb:49:3f'
-
> Старое ядро загрузилось с этими же параметрами (может быть, в новом что-то поменялось по этому поводу?):
Скорее не чего-то не хватает в .config
-
Заработало после правки конфига nfs на хосте.
/home/andreika/nfs1 *(rw,sync,no_subtree_check,no_root_squash)