Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:1
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Embedded Linux
About NUC950(w90p950) энд Linux Kernel
Jury093
Добавлено 24.03.2010 18:30 Редактировалось 24.03.2010 18:37
0
Сообщение: 1
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
посиживая на стареньком ядре 2.6.17.14, периодически прочесываю инет на предмет нового и полезного.
Сегодня наткнулся на упоминания что-дескать "патчим nuc900fb.c".. я бегом на kernel.org, вытащил сорцы 2.6.34-rc2
а там.. драйвер экрана, тачскрина, кейпада, rtc, nand, usb, ether, lm90(нахуа?), spi(мля!!!).. и все бы хорошо, но нет драйвера уарта. Спрашивается - и как отлаживать?
интересующий меня nuc900fb.c при беглом просмотре оказался похож на версию из 2.6.17 - никаких намеков на GDMA, 2D - Graphics, Hardware Cursor :(

зы а между тем, братья-китайцы явно не спят, что-то химичат тихой сапой.. и сообщество в гугле открыли (невнятное)
вот на такие таблицы приходится таращиться :)
title

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Artemius
Добавлено 24.03.2010 21:46 Сообщение: 2
Artemius
0

Пункты: 3655
Регистрация: 02.12.2009
Недавно начал переносить поддержку NUC9XX из ядра 2.6.17.14, которое шло к плате, на 2.6.32. Выходит зря :(. Пока удалось перенести только содержимое mach-nuc900 и драйвер UART. Здесь перенос осуществлялся довольно линейно: поменять пути h-файлов, обработчики прерываний, имена полей структур и еще что-то по мелочи. Драйвер fb таким образом тоже скомпилировал, но он почему-то не работает.
Но для многих драйверов, я так понял, такими простыми изменениями не отделаешься. Пытался перенести дрйвер SD, но там у Nuvoton'а какое-то безумие, вместо стандартного драйвера SD они сделали SCSI драйвер в который всю поддержку SD осуществляют сами.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 24.03.2010 23:43 Редактировалось 24.03.2010 23:46 Сообщение: 3
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Недавно начал переносить поддержку NUC9XX из ядра 2.6.17.14, которое шло к плате, на 2.6.32. Выходит зря :(.

а мое мнение - что не зря. "Зря" - это когда пасьянс раскладывают. А вот при переносе поддержки неизмеримо растет опыт работы, который может пригодиться в смежных областях.

Цитата
Пока удалось перенести только содержимое mach-nuc900 и драйвер UART.

у меня есть пара ядер (одно с denx.de второе откудато с *.uk) в одном видел поддерку uart для nuvoton, выглядело как надстройка для.. стандартного кома.. вроде даже работало

Цитата
Пытался перенести дрйвер SD, но там у Nuvoton'а какое-то безумие, вместо стандартного драйвера SD они сделали SCSI драйвер в который всю поддержку SD осуществляют сами.

это связано с косяком в интерфейсах - Павел хорошо знает эту тему, да тут на форуме обсуждалось

я, когда скачал, заодно и патч прилагаемый вытянул (в развороте ~37МБ!). попробовал навесить на распакованное ядро - был невразумительно послан..

вдогонку - похоже в очередной раз перетряхнули структуру ядра и хидеров :(
вот плюну и пойду на QNX или WinCE смотреть :)

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
rw9uao
Добавлено 25.03.2010 04:51 Сообщение: 4
rw9uao
Ранг
5

Группа: Клиенты
Пункты: 6973
Регистрация: 26.03.2009
Цитата
вот плюну и пойду на QNX

иди, иди... у меня как раз драйвер LCD не пишется =(
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 25.03.2010 10:55 Сообщение: 5
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Цитата
вот плюну и пойду на QNX

иди, иди... у меня как раз драйвер LCD не пишется =(

:))) я знал :)))
а чего не пишется? позаимствуй идею из линукс-версии или в qnx все совсем не так?
из меня драйверо-писатель - "никакой". сам прикалываюсь со своего very-ugly-style-code и с легкой завистью смотрю на чужие сорцы, в которых с элегантной легкостью оперируют указателями, ссылками, структурами

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 25.03.2010 15:55 Сообщение: 6
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
хм.. запустил сегодня ядро 2.6.34-rc2 посредством пинков и зуботычин. моментально заработал контроллер LCD - стабильная синхра (хотя в в драйвере режим 320х240), поднялась сеть, с часик повоевал с юсб - пока не срослось (а может и не должно)
в доказательство лог загрузки :)
Код
## Starting application at 0x00008000 ...
Uncompressing Linux... done, booting the kernel.
Linux version 2.6.34-rc2 (root@debian) (gcc version 4.2.1) #14 PREEMPT Thu Mar 25 15:42:09 EDT 2010
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
CPU: VIVT data cache, VIVT instruction cache
Machine: W90P950EVB
Memory policy: ECC disabled, Data cache writeback
CPU type 0x02900910 is NUC910
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256
Kernel command line: root=/dev/ram0 console=ttyS0,115200n8 mem=64M initrd=0xa00000,4000000 rw
PID hash table entries: 256 (order: -2, 1024 bytes)
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 64MB = 64MB total
Memory: 57684k/57684k available, 7852k reserved, 0K highmem
Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
DMA : 0xffc00000 - 0xffe00000 ( 2 MB)
vmalloc : 0xc4800000 - 0xe0000000 ( 440 MB)
lowmem : 0xc0000000 - 0xc4000000 ( 64 MB)
modules : 0xbf000000 - 0xc0000000 ( 16 MB)
.init : 0xc0008000 - 0xc0022000 ( 104 kB)
.text : 0xc0022000 - 0xc02e6000 (2832 kB)
.data : 0xc02fc000 - 0xc0313800 ( 94 kB)
Hierarchical RCU implementation.
NR_IRQS:32
Console: colour dummy device 80x30
Calibrating delay loop... 32.66 BogoMIPS (lpj=163328)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
devtmpfs: initialized
NET: Registered protocol family 16
bio: create slab <bio-0> at 0
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
Switching to clocksource nuc900-timer1
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
TCP reno registered
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
Trying to unpack rootfs image as initramfs...
rootfs image is not initramfs (no cpio magic); looks like an initrd
Freeing initrd memory: 3904K
NetWinder Floating Point Emulator V0.97 (double precision)
ROMFS MTD (C) 2007 Red Hat, Inc.
msgmni has been set to 120
Block layer SCSI generic (bsg) driver version 0.4 loaded (major 254)
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
Console: switching to colour frame buffer device 40x15
fb0: nuc900fb frame buffer device
Serial: 8250/16550 driver, 1 ports, IRQ sharing disabled
serial8250.0: ttyS0 at MMIO 0xb8000000 (irq = 7) is a 16550
console [ttyS0] enabled
brd: module loaded
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
116x: driver isp116x-hcd, 03 Nov 2005
driver isp1362-hcd, 2005-04-04
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
sl811: driver sl811-hcd, 19 May 2005
r8a66597_hcd: driver r8a66597_hcd, 2009-05-26
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
usbcore: registered new interface driver hiddev
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
TCP cubic registered
RAMDISK: gzip image found at block 0
VFS: Mounted root (romfs filesystem) readonly on device 1:0.
devtmpfs: mounted
Freeing init memory: 104K
init started: BusyBox v1.9.1 (2009-09-09 10:35:27 EDT)
mount: mounting none on /dev/pts failed: No such file or directory
bash-3.2# ifconfig eth0 192.168.0.136 up
nuc900-emc nuc900-emc: eth0 is OPENED
bash-3.2# nuc900-emc nuc900-emc: eth0: Link now 100-FullDuplex

bash-3.2# ping 192.168.0.2
192.168.0.2 is alive!

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Artemius
Добавлено 26.03.2010 00:18 Сообщение: 7
Artemius
0

Пункты: 3655
Регистрация: 02.12.2009
Цитата
запустил сегодня ядро 2.6.34-rc2 посредством пинков и зуботычин

И сильно пришлось пинать, в смысле много ли надо править? Потребовались ли патчи? У меня LCD компилироваться вообще отказался - нет nuc900_driver_clksrc_div. Если закоментировать - то не работает.

Цитата
Serial: 8250/16550 driver, 1 ports, IRQ sharing disabled
serial8250.0: ttyS0 at MMIO 0xb8000000 (irq = 7) is a 16550

Это тот самый драйвер-надстройка над комом?
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 26.03.2010 10:54 Редактировалось 26.03.2010 10:56 Сообщение: 8
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
И сильно пришлось пинать, в смысле много ли надо править? Потребовались ли патчи? У меня LCD компилироваться вообще отказался - нет nuc900_driver_clksrc_div. Если закоментировать - то не работает.

не-а, чисто чтобы ядро запустилось поправок минимум
- заглушить проверку правильности платы (я до сих пор не знаю, как это корректно сделать) меняю условный переход на безусловный в head-common.S
- поправить параметры Kernel command line на свои
- пробежаться по menuconfig с целью отключить заведомо лишнее и включить необходимое
- в драйвере фреймбуфера закомментировать ту строчку
после этого ядро должно собраться и запуститься
о фреймбуфере: экран не чистится, лого не выводится, вероятно это связано с заглушкой неописанной функции. сегодня нашел вот такой патч похоже надо с ним работать. в общем - работы над этим - начать и умереть :)))

Цитата
Цитата
Serial: 8250/16550 driver, 1 ports, IRQ sharing disabled
serial8250.0: ttyS0 at MMIO 0xb8000000 (irq = 7) is a 16550

Это тот самый драйвер-надстройка над комом?

похоже на то. как работает - ума не приложу, желание лазить в эту китайскую вязь стремительно уменьшается :)

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 26.03.2010 14:57 Редактировалось 26.03.2010 15:26 Сообщение: 9
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Нашел еще один невнятный патч для фреймбуфера. А перед наложением поправил размер экрана под себя. Появился пингвин, но где-то традиционно чего-то не хватает, надо повнимательнее посмотреть регистры..
Патч брал тут в са-амом конце страницы.. вот так нынче выглядит экран с новым ядром

title

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Artemius
Добавлено 27.03.2010 00:57 Редактировалось 27.03.2010 01:02 Сообщение: 10
Artemius
0

Пункты: 3655
Регистрация: 02.12.2009
Запустилось ядро, спасибо Jury093 за разъяснения.
Цитата
- заглушить проверку правильности платы (я до сих пор не знаю, как это корректно сделать) меняю условный переход на безусловный в head-common.S

Было сделано, правда немного по-другому, как у Nuvoton'а записью номера mach в регистр перед проверкой.
Цитата
- поправить параметры Kernel command line на свои
- пробежаться по menuconfig с целью отключить заведомо лишнее и включить необходимое

само собой.

Оказалось я неверно воспринял прочитанное.
Во-первых, нет никакого отдельного драйвера-надстройки. Поскольку UART0 у NUC950 совместим со стандартным 16550, то они и используют стандартный драйвер, передавая ему начальный адрес группы регистров UART0 и номер прерывания. Пока не увидел в исходниках, не доходило. Соответственно, зря я выключил поддержку стандартого 8250/16550 в конфигурации и пытался мастерить аналог воображаемого драйвера-надстройки.
Во-вторых, я почему-то решил, что раз
Цитата
моментально заработал контроллер LCD - стабильная синхра

то обязательно должен появится пингвин, раз не появляется - драйвер не работает, или до него вообще не доходит, а виснет где-то раньше.

Теперь консоль заработала, корневуха смонтировалась.
Код

## Starting application at 0x00008000 ...
Uncompressing Linux... done, booting the kernel.
Linux version 2.6.34-rc2 (artem@ghalmek.malstream) (gcc version 4.4.3 (crosstool-NG-1.6.0) ) #13 PREEMPT Fri Mar 26

22:54:45 GMT 2010
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
CPU: VIVT data cache, VIVT instruction cache
Machine: W90P950EVB
Memory policy: ECC disabled, Data cache writeback
CPU type 0x02900910 is NUC910
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256
Kernel command line: console=ttyS0,115200n8 mem=64M nosoftlockup
PID hash table entries: 256 (order: -2, 1024 bytes)
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 64MB = 64MB total
Memory: 60952k/60952k available, 4584k reserved, 0K highmem
Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
DMA : 0xffc00000 - 0xffe00000 ( 2 MB)
vmalloc : 0xc4800000 - 0xe0000000 ( 440 MB)
lowmem : 0xc0000000 - 0xc4000000 ( 64 MB)
modules : 0xbf000000 - 0xc0000000 ( 16 MB)
.init : 0xc0008000 - 0xc01ca000 (1800 kB)
.text : 0xc01ca000 - 0xc039d000 (1868 kB)
.data : 0xc03ac000 - 0xc03bdda0 ( 72 kB)
Hierarchical RCU implementation.
NR_IRQS:32
Console: colour dummy device 80x30
Calibrating delay loop... 32.66 BogoMIPS (lpj=163328)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
bio: create slab <bio-0> at 0
SCSI subsystem initialized
Switching to clocksource nuc900-timer1
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
TCP reno registered
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
NET: Registered protocol family 1
NetWinder Floating Point Emulator V0.97 (double precision)
ROMFS MTD (C) 2007 Red Hat, Inc.
msgmni has been set to 119
Block layer SCSI generic (bsg) driver version 0.4 loaded (major 254)
io scheduler noop registered
io scheduler deadline registered (default)
io scheduler cfq registered
Console: switching to colour frame buffer device 40x15
fb0: nuc900fb frame buffer device
Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
serial8250.0: ttyS0 at MMIO 0xb8000000 (irq = 7) is a 16550
console [ttyS0] enabled
brd: module loaded
mice: PS/2 mouse device common for all mice
TCP cubic registered
NET: Registered protocol family 17
Freeing init memory: 1800K

init started: BusyBox v1.16.0 (2010-03-18 21:35:05 GMT)

starting pid 230, 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 254, tty '/dev/ttyS0': '/sbin/getty -L ttyS0 115200 vt100'
nuc900-emc nuc900-emc: eth0: Link now 100-FullDuplex




Welcome to SK-MNUC950 development board.

www.starterkit.ru

SK-MNUC950 login: root
Dec 31 17:00:12 login[254]: root login on 'ttyS0'

# ping 192.168.0.2
PING 192.168.0.2 (192.168.0.2): 56 data bytes
64 bytes from 192.168.0.2: seq=0 ttl=64 time=10.793 ms
64 bytes from 192.168.0.2: seq=1 ttl=64 time=0.947 ms
64 bytes from 192.168.0.2: seq=2 ttl=64 time=0.886 ms
64 bytes from 192.168.0.2: seq=3 ttl=64 time=0.934 ms
64 bytes from 192.168.0.2: seq=4 ttl=64 time=0.940 ms
64 bytes from 192.168.0.2: seq=5 ttl=64 time=0.893 ms


Цитата
Нашел еще один невнятный патч для фреймбуфера.

Что-то он у меня не накладывается. Большинство его изменений уже есть в ядре. Надо разбираться.

Кстати, заметил в логе загрузки
Цитата
Calibrating delay loop... 32.66 BogoMIPS (lpj=163328)

Получается, контроллер на 66 МГц запустился.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux