yanvasilij
Пользователь
Сообщений: 16
|
|
« : 10 Июль, 2018, 14:40:05 » |
|
Добрый день! Пытаюсь запустить драйвер emmc для моего устройства на базе intel atom e3800, на котором запустил вот это BSP Generic x86 BIOS / APIC. В составе этого BSP есть драйвер devb-mmcsd, который, если я правильно понял, мне и нужен. В build-файле есть строка запуска этого драйвера: devb-mmcsd mmcsd vid=0x8086,did=0x0f14,irq=18
Я не совсем понимаю чему должны быть равны vid/did, если моя emmc подключена к mcc интерфейсу на самом процессоре? Если я пытаюсь пуститься с с такими же параметрами, как build-файле, то получаю ошибку: No host controller found xpt_configure: mmcsd SIM attach failure
При этом в slog я наблюдаю следующее: devb-mmcsd 1.00A (Jan 12 2017 11:25:35) libcam.so (Jun 20 2012 13:40:15) bver 6050001- sdhci_init: pci_attach failed5) sdhci_init: pci_attach failed5) sdhci_init: pci_attach failed5) sdhci_init: pci_attach failed5)
Подскажите с какими параметрами надо запускать devb-mmcsd для emmc на встроенном в процессор интерфейсе? - QNX6.5; - микросхема eMMC: MTFC4GACAAAM-4M-IT; - команда запуска: devb-mmcsd mmcsd vid=0x8086,did=0x0f14,irq=18; - если я правильно понимаю, то в результате должен появится /dev/hd1; - при запуске процесса появляется сообщение: No host controller found xpt_configure: mmcsd SIM attach failure Это как-то связано с тем, что у меня какие-то проблемы с pci, судя по логу загрузки? Welcome to QNX Neutrino 6.5.0 SP1! Starting slogger... Starting serial server... Starting PCI server... Start xHCI USB services... main: Unable to locate pci server main: Unable to locate pci server main: Unable to locate pci server main: Unable to locate pci server main: Unable to locate pci server main: Unable to locate pci server main: Unable to locate pci server main: Unable to locate pci server main: Unable to locate pci server main: Unable to locate pci server Starting Input services... Starting some consoles... Can't connect to HID Server No such file or directory # # # sloginfo Time Sev Major Minor Args Oct 28 18:30:02 2 17 0 pci-bios: No BIOS present - Status ffffffff - errno 14! Oct 28 18:30:02 2 17 0 pci-bios: HWI failed! Oct 28 18:30:02 2 17 0 pci_server: No dll loaded! Oct 28 18:32:10 2 19 1800 devb-mmcsd 1.00A (Jan 12 2017 11:25:35) Oct 28 18:32:10 2 5 0 libcam.so (Jun 20 2012 13:40:15) bver 6050001 Oct 28 18:32:10 2 19 1800 sdhci_init: pci_attach failed
build-файл: [image=0x1400000] [virtual=x86,elf] boot = { startup-apic -v PATH=/proc/boot:/bin:/usr/bin:/sbin:/usr/sbin LD_LIBRARY_PATH=/proc/boot:/lib:/usr/lib:/lib/dll:/opt/lib procnto-smp-instr -v }
[+script] startup-script = { # Programs require the runtime linker (ldqnx.so) to be at a fixed location procmgr_symlink ../../proc/boot/libc.so.3 /usr/lib/ldqnx.so.2 display_msg Welcome to QNX Neutrino 6.5.0 SP1 on x86!
#------------------------------------------------------------------------------- #display_msg "Starting slogger..." slogger & waitfor /dev/slog #------------------------------------------------------------------------------- #display_msg "Starting serial server..." devc-ser8250 -e -b115200 3f8,4 & waitfor /dev/ser1 reopen /dev/ser1 display_msg Welcome to QNX Neutrino 6.5.0 SP1! display_msg "Starting slogger..." display_msg "Starting serial server..."
#------------------------------------------------------------------------------- display_msg "Starting PCI server..." # by default, pci-bios-v2 supports MSI interrupts; the -D option enables support for MSI interrupts on graphics/video hardware as well pci-bios -v -m & waitfor /dev/pci
#------------------------------------------------------------------------------- #display_msg "Starting e1000 network driver..." #io-pkt-v6-hc -de1000 & #waitfor /dev/socket #dhcp.client
#------------------------------------------------------------------------------- # uncomment the lines below for EHCI USB support; ensure that the USB mode in the BIOS is also set to 'EHCI Mode'
# Due to an issue between pci-bio-v2, MSI interrupts, and ECHI USB host controllers, it is necessary to specify an # IRQ in the range of 16 to 23, when using devu-ehci with startup-apic; you may need to experiment to find the # correct IRQ value for your system.
# display_msg "Start EHCI USB services..."
# io-usb -dehci pindex=0,irq=23 & # waitfor /dev/io-usb/io-usb 4 # waitfor /dev/io-usb/devu-ehci.so 4
# uncomment the lines below for xHCI USB support; ensure that the USB mode in the BIOS is also set to 'XHCI Mode' display_msg "Start xHCI USB services..." io-usb -dxhci & waitfor /dev/io-usb/io-usb 4 waitfor /dev/io-usb/devu-xhci.so 4
#------------------------------------------------------------------------------- # uncomment for AHCI support - assumes a QNX6 filesystem exists on an internal SATA drive # # display_msg "Starting SATA AHCI..." # devb-ahci ahci & # waitfor /dev/hd0t179 # mount -t qnx6 /dev/hd0t179 /hd
# uncomment for MMCSD support - it may be necessary to specify the SD controller's VID and DID, # and the APIC IRQ value (APIC IRQs 16 to 23) for some controllers #display_msg "starting MMCSD driver..." #devb-mmcsd mmcsd vid=0x8086,did=0x0f14,irq=18 & #waitfor /dev/hd1
#------------------------------------------------------------------------------- display_msg "Starting Input services..." io-hid -d usb /dev/io-usb/io-usb &
# some systems with legacy PS2 controllers require the command line below to be used instead # io-hid -d ps2ser kbd:kbddev:ps2mouse:mousedev -d usb /dev/io-usb/io-usb & #------------------------------------------------------------------------------- #display_msg "Starting some common servers..." #pipe #devc-pty & #qconn
#------------------------------------------------------------------------------- #display_msg "Starting Intel HD Audio driver..." #io-audio -dintel_hda &
#------------------------------------------------------------------------------- display_msg "Starting some consoles..." devc-con-hid -n4 & reopen /dev/con1 # start a serial debug shell on -t /dev/ser1 /proc/boot/ksh &
# start a console shell [+session] sh /proc/boot/.console.sh & }
[type=link] /tmp=/dev/shmem [type=link] /bin/sh=/proc/boot/ksh
# Shared libraries libc.so.3 libm.so libz.so
########################################################################### ## uncomment for Networking ########################################################################### #libsocket.so #devnp-e1000.so #devnp-asix.so # devnp-rtl8169.so # devnp-smsc9500.so # devnp-speedo.so
########################################################################### ## uncomment for BLOCK driver ########################################################################### libcam.so io-blk.so cam-disk.so fs-qnx4.so fs-qnx6.so fs-dos.so fs-ext2.so #cam-cdrom.so #fs-cd.so
########################################################################### ## uncomment for USB driver ########################################################################### libusbdi.so libhiddi.so devu-ehci.so devu-xhci.so
########################################################################### ## uncomment for Intel HD Audio Support ########################################################################### #deva-ctrl-intel_hda.so #deva-mixer-hda.so #libasound.so.2
########################################################################### ## uncomment for io-hid ########################################################################### #devh-usb.so #devh-ps2ser.so
[data=c]
########################################################################### ## general commands ########################################################################### cp mkdir ls #pipe #pidin rm mv ksh on uname slogger sloginfo slay sync mount umount shutdown less setconf getconf #grep login qconn rtc date fdisk cat chown chmod use which
########################################################################### ## uncomment for serial ########################################################################### devc-con devc-con-hid devc-pty devc-ser8250
########################################################################### ## uncomment for audio ########################################################################### #io-audio #wave #waverec
########################################################################### ## uncomment for inetd support ########################################################################### #devc-pty #/usr/sbin/ftpd=ftpd #/usr/sbin/inetd=inetd #/bin/login=login #/bin/passwd=passwd #/usr/sbin/telnetd=telnetd
#/etc/hosts=${QNX_TARGET}/etc/hosts #/etc/services=${QNX_TARGET}/etc/services
#/etc/passwd = { #root::0:0:Superuser:/:/bin/sh #user:x:100:100:User:/hd/home/user:/bin/sh #}
#/etc/shadow = { #user:68qCI1lS3Sz9w:1412120627:0:0 #}
#/etc/inetd.conf = { #ftp stream tcp nowait root /usr/sbin/ftpd in.ftpd -l #telnet stream tcp nowait root /usr/sbin/telnetd in.telnetd #}
#/etc/ftpusers = { #/* Allow all users to connect to the ftp server */ #* allow #}
#/etc/ftpd.conf = { #/* Make things a+rw by default */ #umask all 0000 #}
########################################################################### ## PCI support ########################################################################### pci-bios=pci-bios pci
########################################################################### ## uncomment for network support ########################################################################### #io-pkt-v6-hc #nicinfo #ifconfig #ftp #ping #fs-nfs3 #dhcp.client
########################################################################### ## uncomment for BLOCK driver ########################################################################### devb-ahci devb-mmcsd dcheck
########################################################################### ## uncomment for USB ########################################################################### io-usb usb devb-umass #io-hid hidview
########################################################################### ## Set environment and start the main shell ########################################################################### [perms=0744] .console.sh={
echo Setting environment variables... export SYSNAME=nto export TERM=qansi export HOME=/ export PATH=/proc/boot:/bin:/usr/bin:/sbin:/usr/sbin export LD_LIBRARY_PATH=:/proc/boot:/lib:/usr/lib:/usr/lib/graphics:/lib/dll:/opt/lib echo Starting inetd service... inetd echo done. ksh -l }
|
|
« Последнее редактирование: 11 Июль, 2018, 14:59:39 от yanvasilij »
|
Записан
|
|
|
|
yanvasilij
Пользователь
Сообщений: 16
|
|
« Ответ #1 : 13 Июль, 2018, 14:35:52 » |
|
Вообщем разобрался. Проблема была в том, что мой биос (coreboot) из коробки не поддерживает прерывания необходимые QNX, а я пытался грузить QNX напрямую из coreboot. Технически coreboot даже не биос, но если ему выбрать в качестве payload SeaBIOS и уже из SeaBIOS грузить QNX, то сервер pci в qnx запускается нормально. Посмотреть пару vid/did можно во-первых в datasheet в разделе (PCI Configuration Space), а во вторых в выводе команды pci -v. Правда в моем случае у меня запустился только один MMCSD контроллер из трех:
# devb-mmcsd mmcsd vid=0x8086,did=0x0f16,irq=18
После этой команды карта памяти появляется в /dev/ и успешно монтируется. А вот интересующий меня 0x8086/x0f50 и 0x8086/0x0f15 так и не запускаются - их не видит pci сервер. Похоже не видит по той причине, что их не видят coreboot и seabios - я не вижу их в логах (см. прикрепленный файл). А почему их нет в coreboot и SeaBIOS я пока не знаю.
|
|
« Последнее редактирование: 13 Июль, 2018, 14:47:52 от yanvasilij »
|
Записан
|
|
|
|
Филипп Попченко
Сотрудник СВД ВС
Интересующийся
Сообщений: 4
|
|
« Ответ #2 : 16 Июль, 2018, 14:09:24 » |
|
Здравствуйте.
В coreboot можно выбирать pci устройства, которые будут инициализированы. В случае с eMMC можно выбрать только один контроллер: eMMC 4.1 (0xf14) или eMMC 4.5 (0xf50). Нужно использовать eMMC 4.5. Проверьте, что у вас инициализируются нужные контроллеры: SDIO (0xf15), SD (0xf16), eMMC (0xf50). Также, если используется seabios, нужно убедиться, что в его настройках выбрана поддержка SD контроллеров.
Кроме того мы делали фикс для драйвера SD/MMC, который позволяет сканировать шину на наличие подходящих контроллеров. Фикс затрагивает не только драйвер SD/MMC, а так же PCI сервер в APIC режиме (добавлена таблица прерываний для процессоров семейства Intel Atom e38xx).
|
|
|
Записан
|
Сотрудник СВД Встраиваемые Системы
|
|
|
yanvasilij
Пользователь
Сообщений: 16
|
|
« Ответ #3 : 16 Июль, 2018, 16:02:51 » |
|
В coreboot можно выбирать pci устройства, которые будут инициализированы. В случае с eMMC можно выбрать только один контроллер: eMMC 4.1 (0xf14) или eMMC 4.5 (0xf50). Нужно использовать eMMC 4.5. Проверьте, что у вас инициализируются нужные контроллеры: SDIO (0xf15), SD (0xf16), eMMC (0xf50).
Насколько я понял это делает файл devicetree.cb: ... device pci 10.0 off end # 8086 0F14 - EMMC Port - device pci 11.0 on end # 8086 0F15 - SDIO Port - device pci 12.0 on end # 8086 0F16 - SD Port MicroSD on SD3 device pci 13.0 on end # 8086 0F23 - SATA AHCI Onboard & HSEC device pci 14.0 on end # 8086 0F35 - USB XHCI - Onboard & HSEC - Enabling both EHCI and XHCI will default to EHCI if not changed at runtime device pci 15.0 on end # 8086 0F28 - LP Engine Audio LSEC device pci 17.0 on end # 8086 0F50 - MMC Port - ...
После включения в devicetree, сервер pci действительно "увидел" недостающие 0x8086/0x0f15 и 0x8086/0x0f50 (лог pci -v в прикрепленном файле). Однако при запуске самого драйвера, устройство в /dev/hdx не монтируется. Команда запуска драйвера: devb-mmcsd mmcsd vid=0x8086,did=0x0f50,irq=44 devb-mmcsd mmcsd vid=0x8086,did=0x0f15,irq=17
В sloginfo в результате вижу следующее: ... Feb 11 15:23:34 2 19 1800 devb-mmcsd 1.00A (Jan 12 2017 11:25:35) Feb 11 15:23:34 2 5 0 libcam.so (Jun 20 2012 13:40:15) bver 6050001 Feb 11 15:23:34 5 17 0 io_open for id = 4 Feb 11 15:40:20 5 17 0 io_open for id = 5 Feb 11 15:40:22 6 17 0 addup_resources: Header Type 81 Feb 11 15:40:22 6 17 0 addup_resources: Header Type 1 Feb 11 15:40:23 6 17 0 addup_resources: Header Type 1 Feb 11 15:40:23 6 17 0 addup_resources: Header Type 1 Feb 11 15:40:23 6 17 0 addup_resources: Header Type 81 Feb 11 15:40:23 6 17 0 addup_resources: Header Type 81 Feb 11 15:40:23 6 17 0 addup_resources: Header Type 81 Feb 11 15:40:23 5 17 0 io_close_ocb
Также, если используется seabios, нужно убедиться, что в его настройках выбрана поддержка SD контроллеров.
Это в настройка сборки SeaBIOS? Кроме того мы делали фикс для драйвера SD/MMC, который позволяет сканировать шину на наличие подходящих контроллеров. Фикс затрагивает не только драйвер SD/MMC, а так же PCI сервер в APIC режиме (добавлена таблица прерываний для процессоров семейства Intel Atom e38xx).
Наш процессор как раз из этого семейства. Драйвер с фиксом есть в свободном доступе?
|
|
« Последнее редактирование: 17 Июль, 2018, 06:55:23 от yanvasilij »
|
Записан
|
|
|
|
Филипп Попченко
Сотрудник СВД ВС
Интересующийся
Сообщений: 4
|
|
« Ответ #4 : 17 Июль, 2018, 16:06:40 » |
|
Насколько я понял это делает файл devicetree.cb: Верно. Устройство 0x8086/0x0f15 - это контроллер, который используется для подключения устройств с SDIO интерфейсом, для которого нужен отдельный драйвер. В частности, на e38xx, контроллер предназначен для работы с Wi-Fi устройствами. Это в настройка сборки SeaBIOS? Да, в конфиге сборки SeaBIOS: CONFIG_SDCARD=y. Драйвер с фиксом есть в свободном доступе? По поводу драйвера отправляйте запрос нашу электронную почту.
|
|
|
Записан
|
Сотрудник СВД Встраиваемые Системы
|
|
|
yanvasilij
Пользователь
Сообщений: 16
|
|
« Ответ #5 : 24 Июль, 2018, 10:32:58 » |
|
Устройство 0x8086/0x0f15 - это контроллер, который используется для подключения устройств с SDIO интерфейсом, для которого нужен отдельный драйвер. В частности, на e38xx, контроллер предназначен для работы с Wi-Fi устройствами.
Спасибо за помощь! Сначало было даже не поверили, но внимательно почитали datasheet и лично в этом убедилсь )). А по-поводу 8086/0F50 - вообще возможно запустить драйвер devb-mmcsd для этого устройства? В исходниках драйвера есть многомерная структура mmcsd_products, в которой перечисленны пары VID/DID с явным указанем на инициализирующую функцию: static struct _mmcsd_product mmcsd_products[] = { { 0x8086, 0x811E, 0, "Intel SCH", sdhci_init }, { 0x8086, 0x811D, 0, "Intel SCH", sdhci_init }, { 0x8086, 0x811C, 0, "Intel SCH", sdhci_init }, { 0x1095, 0x0670, 0, "SII SDHCI", sdhci_init }, { 0, 0, 0, NULL, NULL } };
Поскольку eMMC интрефейс параллельный, то инициализация у него отличиается от последовательного 8086/0F16. Я подумал, что можно добавить с мой 8086/0F50 и пустить его по ветке ESDHC, но тоже ничего из этого не вышло: ... { 0x8086, 0x0F50, 0, "Intel eMMC", esdhc_init }, ...
devb-mmcsd vid=0x8086,did=0x0f50
|
|
|
Записан
|
|
|
|
Филипп Попченко
Сотрудник СВД ВС
Интересующийся
Сообщений: 4
|
|
« Ответ #6 : 25 Июль, 2018, 12:30:30 » |
|
Здравствуйте.
Выслали драйвер на почту.
|
|
|
Записан
|
Сотрудник СВД Встраиваемые Системы
|
|
|
yanvasilij
Пользователь
Сообщений: 16
|
|
« Ответ #7 : 26 Июль, 2018, 12:40:06 » |
|
Драйвер очень помог, спасибо! Правда память так и не удалось запустить до конца. Похоже у нас есть аппаратные проблемы. Во-первых, после обновления драйвера pci, команда pci -v стала корректно отображать номера прерывания всех устройств. Теперь, чтобы узнать значение параметра irq при запуске драйвера, можно посмотреть в выводе pci -v (до этого значения там были некорректные). Во-вторых, при запуске драйвера, eMMC появляется в /dev. Однако, чтобы драйвер нормально запустился нужно не забыть правильно настроить мультиплексинг пинов в файле gpio.c в исходниках coreboot. Иначе при запуске драйвер вернёт ошибку "Unsupported card inserted". Конкретно в случае с Intel Atom E38xx, согласно документации на процессор, функция пинов для eMMC 4.5 должна быть "GPIO F3". К сожалению конкретно в нашем случае микросхема так и не запустилась на 100%. После монтирования утилита fdisk показала неправильный размер устройства: # fdisk /dev/hd0 info Physical disk characteristics: (/dev/hd0) Disk type : Direct Access (0) Cylinders : 0 Heads : 64 Sectors/Track : 32 Total Sectors : 0 Partition table information: 0: (255) beg(h=63,s=32,c=1812255) end(h=1,s=22,c=751670) off=3711500287, size=2122887223 1: (50) beg(h=1,s=24,c=790) end(h=1,s=23,c=758) off=1617975, size=4294901760 2: (255) beg(h=63,s=32,c=1713311) end(h=1,s=22,c=662710) off=3508862975, size=2143334455 3: (0) beg(h=0,s=0,c=0) end(h=0,s=0,c=0) off=2922426423, size=4294946866 signature1=0xFF, signature2=0xFF
# fdisk /dev/hd0 show
_____OS_____ Start End ______Number______ Size Boot name type Cylinder Cylinder Cylinders Blocks
1. nonQNX 255 1812255 751670 4293906712 2122887223 1036566 MB 2. nonQNX 50 790 758 4294967265 4294901760 2097120 MB * 3. nonQNX 255 1713311 662710 4293916696 2143334455 1046550 MB * 4. ------ --- -------- -------- ------- -------- -----
Более детальное изучение проблемы при помощи логов драйвера и осциллографа показало, что сама микросхема при запросе Card Identification Data, MMC Card Specific Data, MMC Extended Card Specific Data отвечает неверно, хотя запросы от процессора полностью соответствуют спецификации. Схемотехнику перепроверили - вроде все верно. Есть предположение, что сама микросхема контрафактная.
|
|
|
Записан
|
|
|
|
yanvasilij
Пользователь
Сообщений: 16
|
|
« Ответ #8 : 06 Ноябрь, 2018, 10:35:49 » |
|
Пришла обновленная версия платы. Соответственно микросхема eMMC была из другой партии. Там все корректно заработало, удалось отформатировать и загрузиться с нее. Большое спасибо!
|
|
|
Записан
|
|
|
|
Алексей Луньков
Интересующийся
Сообщений: 3
|
|
« Ответ #9 : 05 Июнь, 2019, 11:00:52 » |
|
Добрый день! Возникла аналогичная проблема! Не могли бы Вы выслать драйвер на почту?
|
|
|
Записан
|
|
|
|
Владимир Махилёв
Сотрудник СВД ВС
Старожил
Сообщений: 704
|
|
« Ответ #10 : 05 Июнь, 2019, 11:44:04 » |
|
Добрый день! Возникла аналогичная проблема! Не могли бы Вы выслать драйвер на почту?
Напишите пожалуйста запрос по электронной почте или через форму обратной связи: http://kpda.ru/contacts/ask.php
|
|
|
Записан
|
|
|
|
|