Тестировал пока только с помощью i2cdetect.
50 - это 24LC512, 48 - Atmega
Да там вроде несложно, нужно только передать стандартным драйверам OHCI и EHCI где находятся регистры и номер прерывания. Но это только теоретически :).
Я уже начал немного разбираться. Выяснил, что драйвер EHCI даже не запускает Nuvoton'овский probe. Благодаря опыту, полученому при оживлении i2c, понял как запустить. Он, правда, сразу обратился к недопустимой области памяти и вылетел:).
мои поздравления.. увы, я по свое обыкновению, не записал последовательность действий. буду еще раз пристраивать по проторенной тропе :)
на мой взгляд, для нормальной работы шины USB нужна связка EHCI-OHCI, ehci-w90x900 присутствует, ohci-часть пробовал взять из старого ядра, по счастью переделок минимум, но пока упрямится. оба драйвера используют расшаренное прерывание, ehci часть должна выдать адрес для ohci. в стеке USB старого ядра есть несколько "костылей" в надстройке хабов..
а драйвер ehci-w90x900 валился вероятно из-за этих строк:
в инете встречаются разные вариации этого места, но я пока "недовкурил" что неправильно. если посчитать адрес структуры, то вылет закономерен
да чего там интересного. пришлось его переставлять, после того, как "сломал" тот, что шел в системе от Павла :)
использовал инсталлятор /home/user/install/buildroot-2009 - лежит в виртуалке с диска от Павла..
развернул, запустил, сгенерил /root, но не стал заморачиваться с упаковкой - сказал NFS что "это надо раздать по сетке". теперь гружу ядро по сетке, оно ищет указанный NFS и цепляет /root с него.. update вот итог неплодотворных усилий - типа шина поднялась, порты в /dev видны, но ничего из внешних устройств не определяется. где-то надо битиком пощелкать..
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
NUC900 USB host driver has been start!
w90x900-ehci w90x900-ehci: Nuvoton w90x900 EHCI Host Controller
w90x900-ehci w90x900-ehci: new USB bus registered, assigned bus number 1
w90x900-ehci w90x900-ehci: irq 15, io mem 0xb0005000
w90x900-ehci w90x900-ehci: USB 2.0 started, EHCI 0.95
usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: Nuvoton w90x900 EHCI Host Controller
usb usb1: Manufacturer: Linux 2.6.34-rc2 ehci_hcd
usb usb1: SerialNumber: w90x900 EHCI
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
ohci_hcd_w90x900_init() c0374920
w90x900-ohci w90x900-ohci: Nuvoton w90x900 ohci Host Controller
w90x900-ohci w90x900-ohci: new USB bus registered, assigned bus number 2
w90x900-ohci w90x900-ohci: irq 15, io mem 0xb0007000
usb usb2: New USB device found, idVendor=1d6b, idProduct=0001
usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb2: Product: Nuvoton w90x900 ohci Host Controller
usb usb2: Manufacturer: Linux 2.6.34-rc2 ohci_hcd
usb usb2: SerialNumber: w90x900 ohci
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 2 ports detected
Кстати, можно у китайцев совета спросить по поводу USB. CYChen18@nuvoton.com - контакт Tom
Спасибо Павел.
Я уже размышлял, типа написать письмецо на что-то_там@mcuos.com - создателю драйверов ehci-ohci w90x900
да решил пока самому помучиться :)
т.б. я как то приставал к одному китайцу по поводу разборок с usb :)))
console [ttyS0] enabled
brd: module loaded
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
w90x900-ehci w90x900-ehci: Nuvoton w90x900 EHCI Host Controller
w90x900-ehci w90x900-ehci: new USB bus registered, assigned bus number 1
w90x900-ehci w90x900-ehci: irq 15, io mem 0xb0005000
w90x900-ehci w90x900-ehci: USB 2.0 started, EHCI 0.95
usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: Nuvoton w90x900 EHCI Host Controller
usb usb1: Manufacturer: Linux 2.6.34-rc2 ehci_hcd
usb usb1: SerialNumber: w90x900 EHCI
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
nuc900-ohci nuc900-ohci: Nuvoton nuc900 ohci Host Controller
nuc900-ohci nuc900-ohci: new USB bus registered, assigned bus number 2
nuc900-ohci nuc900-ohci: irq 15, io mem 0xb0007000
usb usb2: New USB device found, idVendor=1d6b, idProduct=0001
usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb2: Product: Nuvoton nuc900 ohci Host Controller
usb usb2: Manufacturer: Linux 2.6.34-rc2 ohci_hcd
usb usb2: SerialNumber: nuc900 ohci
hub 1-0:1.0: over-current change on port 1
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 2 ports detected
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
mice: PS/2 mouse device common for all mice
i2c /dev entries driver
i2c res start: C4818000 [PA:B8006000]
nuc900-i2c-p0 nuc900-i2c-p0: bus frequency set to 100 KHz
nuc900-i2c-p0 nuc900-i2c-p0: nuc900 I2C port0 adapter
TCP cubic registered
NET: Registered protocol family 17
Freeing init memory: 3152K
init started: BusyBox v1.16.0 (2010-03-21 13:25:02 GMT)
hub 1-0:1.0: over-current change on port 2
starting pid 268, tty '': '/etc/init.d/rcS'
mount: mounting /dev/mtdblock0 on /mnt/nand failed: No such file or directory
Initializing random number generator... done.
Starting network...
nuc900-emc nuc900-emc: eth0 is OPENED
route: SIOCADDRT: File exists
starting pid 292, tty '/dev/ttyS0': '/sbin/getty -L ttyS0 115200 vt100'
nuc900-emc nuc900-emc: eth0: Link now 100-FullDuplex
Welcome to NUC950
nuc950 login: root
Dec 31 17:00:06 login[292]: root login on 'ttyS0'
# nuc900-emc nuc900-emc: eth0: Link down.
usb 1-2: new high speed USB device using w90x900-ehci and address 2
usb 1-2: New USB device found, idVendor=058f, idProduct=6377
usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-2: Product: Mass Storage Device
usb 1-2: Manufacturer: Generic
usb 1-2: SerialNumber: 920321111113
scsi0 : usb-storage 1-2:1.0
nuc900-emc nuc900-emc: eth0: Link down.
scsi 0:0:0:0: Direct-Access Generic USB SD Reader 1.00 PQ: 0 ANSI: 0
nuc900-emc nuc900-emc: eth0: Link now 100-FullDuplex
scsi 0:0:0:1: Direct-Access Generic USB CF Reader 1.01 PQ: 0 ANSI: 0
scsi 0:0:0:2: Direct-Access Generic USB SM Reader 1.02 PQ: 0 ANSI: 0
sd 0:0:0:0: [sda] 1006592 512-byte logical blocks: (515 MB/491 MiB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Assuming drive cache: write through
sd 0:0:0:1: [sdb] Attached SCSI removable disk
scsi 0:0:0:3: Direct-Access Generic USB MS Reader 1.03 PQ: 0 ANSI: 0
sd 0:0:0:0: [sda] Assuming drive cache: write through
sda:
sda1
sd 0:0:0:2: [sdc] Attached SCSI removable disk
sd 0:0:0:0: [sda] Assuming drive cache: write through
sd 0:0:0:0: [sda] Attached SCSI removable disk
sd 0:0:0:3: [sdd] Attached SCSI removable disk
# cd /mnt/sda1/
# ls -alF
total 1216
drwxrwxrwx 5 root root 16384 Dec 31 17:00 ./
drwxrwxrwt 4 root root 80 Dec 31 17:00 ../
-rwxrwxrwx 1 root root 693 Oct 31 2008 ??? ?????????.txt*
drwxrwxrwx 2 root root 16384 Feb 22 2010 bin/
drwxrwxrwx 2 root root 16384 Feb 22 2010 demo/
-rwxrwxrwx 1 root root 93513 Mar 1 2009 dhrystone*
-rwxrwxrwx 1 root root 164383 Nov 1 2009 font.c*
drwxrwxrwx 4 root root 16384 Jan 4 2010 gui/
-rwxrwxrwx 1 root root 501908 Jan 24 2009 mc*
-rwxrwxrwx 1 root root 346980 Feb 22 2009 nano-X*
-rwxrwxrwx 1 root root 166 Feb 22 2010 start_ts*
# uname -a
Linux nuc950 2.6.34-rc2 #86 PREEMPT Sat Apr 3 22:53:09 BST 2010 armv5tejl GNU/Linux
#
Правда ethernet при вставлении HS-флешки перезапускается. С FS такого не происходит.
в стеке USB старого ядра есть несколько "костылей" в надстройке хабов..
Я еще не со всеми из них разобрался, есть еще куда копать.
Кстати, можно у китайцев совета спросить по поводу USB. CYChen18@nuvoton.com - контакт Tom
Этот китаец только по USB или вообще по NUC9xx? Может у него и errata можно попросить?
А если к нему обращаться, то сказать что от вас, или просто что есть проблемы с их процессорами?
Этот китаец только по USB или вообще по NUC9xx? Может у него и errata можно попросить?
А если к нему обращаться, то сказать что от вас, или просто что есть проблемы с их процессорами?
Использовал адреса регистров из hcd структуры, сразу после преобразования реальных адресов в виртуальные. Почему так - абсолютно не понимаю.
Вообще, чем дальше, тем больше я сомневаюсь, что понимаю полностью эти виртуальные адреса. Вот в map.h у всей переферии задефайнены реальные и виртуальные адреса (с _VA_), а как может быть виртуальный адрес известен до компиляции я не пойму. Причем в Nuvoton'овском порте они их все используют, а в 2.6.34 у меня при использовании некоторых из них (USB, I2C) вылетало, а некоторые работают (AIC и еще какие-то).
что использовали - драйвер ohci из старого ядра или инета или свое?
Драйвер ohci из старого ядра с небольшими переделками. А вот новый EHCI (w90x900) пришлось переделывать сильнее, много переносить из старого EHCI. Вообще удивляюсь как они это в ядро положили.
может где в обработке прерывания фигня или идет запись не "в свои" порты..
Проверил в старом 2.6.17.14 - то же самое, я просто с флешками как поигрался в первые дни, так их больше и не использовал. Наверно блок питания плоховатый, хотя вроде 3А.
Кстати, почитал форум, оказывается вы с этим китайцем уже переписывались. Не получилось его растрясти на что-нибудь интересное, чего не идет в комплекте с платой?
Использовал адреса регистров из hcd структуры, сразу после преобразования реальных адресов в виртуальные. Почему так - абсолютно не понимаю.
спасибо, попробую применить
Вообще, чем дальше, тем больше я сомневаюсь, что понимаю полностью эти виртуальные адреса. Вот в map.h у всей переферии задефайнены реальные и виртуальные адреса (с _VA_), а как может быть виртуальный адрес известен до компиляции я не пойму. Причем в Nuvoton'овском порте они их все используют, а в 2.6.34 у меня при использовании некоторых из них (USB, I2C) вылетало, а некоторые работают (AIC и еще какие-то).
для моего понимания - это слишком сложно, стараюсь не забивать голову излишествами (на мой взгляд), китайцы запросто могли накосячить или неправильно переписать хидеры в новом ядре
Драйвер ohci из старого ядра с небольшими переделками. А вот новый EHCI (w90x900) пришлось переделывать сильнее, много переносить из старого EHCI. Вообще удивляюсь как они это в ядро положили.
согласен. и, главное, непонятно зачем?.. в историю добавлю мути. запросил я у гугля ohci-w90x900.c, в ответ нарисовался очередной патч (кажется для 2.6.31), который создает.. ohci-w90x900.c и делает еще какие-то исправления.. афигеть! почему тогда его нет в 2.6.34???
завтра сюда тисну или ссылку или текст патча..
Проверил в старом 2.6.17.14 - то же самое, я просто с флешками как поигрался в первые дни, так их больше и не использовал. Наверно блок питания плоховатый, хотя вроде 3А.
не очень понял - что тоже самое? при HS флешке сетка падает на 2.6.17 или что?
Кстати, почитал форум, оказывается вы с этим китайцем уже переписывались. Не получилось его растрясти на что-нибудь интересное, чего не идет в комплекте с платой?
да, была такая история, сначала долго объяснял суть проблемы (поведение LS/FS периферии в EHCI порт), потом случайно заслал ему конфиг ядра для.. 9260 :)
на что в ответ получил USB ветку исходников и слова типа "у меня все работает, на, ковыряйся сам" :)))
ничего у него не просил - не было надобности. просто сильно хотелось запустить ЮСБ - LCD экран уже вовсю светился, а крыса/клава не работали..
PS кстати о пчелках, все вокруг таинственно молчат - включали ли напрямую в USB-порты обычную клавиатуру или мышь? результат?
не очень понял - что тоже самое? при HS флешке сетка падает на 2.6.17 или что?
Да, тоже падает, в смысле перезапускается.
на что в ответ получил USB ветку исходников
А исходники были такие-же как в ядре, прилагаемому к плате или другие? Вдруг китайцы свой порт постепенно развивают, правят ошибки.
PS кстати о пчелках, все вокруг таинственно молчат - включали ли напрямую в USB-порты обычную клавиатуру или мышь? результат?
Подключал мышь - в /dev появилось устройство input. Открывал его командой cat - при нажатии на кнопки и перемещении мыши на консоль валились крокозябры - значит мышь данные какие-то слала. Сделать с ней что-то более разумное мои знания в Linux не позволили :).
Еще втыкал FS-флешку - работала.