Перейти к содержанию
    

zemlemer

Участник
  • Постов

    94
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о zemlemer

  • Звание
    Частый гость
    Частый гость

Посетители профиля

2 727 просмотров профиля
  1. Добрый день. Долгие бодания с DMA ни к чему не привели. Т.е. привели к работе, но с полной загрузкой процессора. Есть несколько вопросов по PRU. 1. Я правильно понимаю, что само упраление предельно простое: Поставить через CONTROL регистр в reset и снять enable, загрузить программу и выстваить enable. 2. Можно ли написать короткую программу на C и собрать ее как-то для PRU? 3. Есть примеры работы с PRU? Я не нашел нормальных примеров работы с PRU, а в тех что есть используеся pasm, пытался собрать с asm6x - не получилось.
  2. Добрый день, У меня, в связи с аварией, произошла перестановкв операционки на ubuntu 22.04. Возникли проблемы сщ сборкой u-boot и ядра. Когда запускаю arm-oe-linux-gnueabi-gcc, то получаю "error while loading shared libraries: libm.so.6: cannot open shared object file: No such file or directory" Если напрямуюi прописать в консоли переменную"export LD_LIBRARY_PATH="/home/......./ti-processor-sdk-linux-omapl138-lcdk-06.03.00.106/linux-devkit/sysroots/x86_64-arago-linux/lib" то вылетает "version `GLIBC_2.34' not found (required by make)" build-essential libncurses5-dev и другие 32-битные библиотеки поставлены. Есть предоположения куда копать дальше?
  3. Добрый день. У меня возникла проблема с DSP частью OMAPL138. Есть программа написанная с использованием BIOS от TI т.к. многое завязано на mailbox-ы с ARM-овской частью. Мне необходимо отлавливать прерывания более 100 КГц на GP ногу и делать элеметарное: посылать в SPI байт. Сделал по документации HWREG_32(GPIO_DIR8) |= (1 << 2); // input HWREG_32(GPIO_DIR8) &= ~(1 << 1); // output HWREG_32(GPIO_CLR_DATA8) |= (1 << 1); // Enabling interrupt in a busy signal Error_init(&errBlock); Hwi_Params_init(&hwiExtIntParams); hwiExtIntParams.eventId = GPIO_B8_EVENT_ID; hwiExtIntParams.priority = GPIO_B8_INT_ID; hwiExtIntParams.maskSetting = Hwi_MaskingOption_SELF; // don't allow this interrupt to nest itself hwiExtIntHandle = Hwi_create(GPIO_B8_INT_ID, hwiGP82Isr, &hwiExtIntParams, &errBlock); if(NULL == hwiExtIntHandle) { Log_print0(Diags_INFO, "-beam adc- GPIO8[2] interrupt handle was not initialized"); return -1; } if (Error_check(&errBlock)) { Log_print0(Diags_INFO, "-beam adc- GPIO8[2] hardware interrupt setup failed"); return -1; } Hwi_enable(); // TODO: Check and remove later // Configuring busy signal to falling egde HWREG_32(GPIO_SET_FAL_TRIG8) |= (1 << 2); HWREG_32(GPIO_CLR_RIS_TRIG8) |= (1 << 2);; // Enable Bank8 interrupt HWREG_32(GPIO_BINTEN) |= (1 << 8); static void hwiGP82Isr(UArg arg0) { SPI0_SET_CS; Hwi_clearInterrupt(GPIO_B8_INT_ID); HWREG_32(GPIO_INTSTAT8) = 0xFFFFU; //(1 << 2); // 0xFFFFU; SPI0_CLR_CS; return; } Процессор, судя по отдалке внутри прерывания(дергаю ногой), не успевает обработать его. При зтом сама обработка прерывания быстрая, по времени укладываюсь. Сложилось впечатление, что сам диспечер задач BIOS тормозит вхождение в прерывание. Можно ли написать прерывание не привязанное к BIOS? Если да, то как лучше это сделать? Спасибо.
  4. 1. Есть StarterWare, примеры моджно брать оттуда. Если ножка не дергается, проверяйте syscfg.
  5. Добрый день. Никто не подскажет как заставить dsp часть omap печатать в linux консоль отладочную информацию (System_printf или Log_print0) из программы? Может что в cfg рпавить надо?
  6. Заработало. Забыл добавить config.bld линкеру чтою память начиналась с 0xC3100000. Теперь хоть грузится.
  7. Это понятно. Просто не ясно куда в этой ситуации копать. в конфиге есть строка /* Enable Memory Translation module that operates on the BIOS Resource Table */ var Resource = xdc.useModule('ti.ipc.remoteproc.Resource'); Resource.loadSegment = "DDR" При попытке добавить в код программы extern UInt32 xdc_runtime_SysMin_Module_State_0_outbuf__A; #include <ti/ipc/remoteproc/rsc_table_omapl138.h> ругается что ti_ipc_remoteproc_ResourceTable уже был раньше определен. Командник линкера берется из сборки постобработки конфига. Что ему не так? app.cfg
  8. Добрый день. Столкнулся со следующей проблемой: не могу загрузить из linux программу для DSP. Программа вроде как успешно грузится через jtag и работает на ядре DSP. Когда гружу из linux, то получаю сообщение «Failed to process resources». RootFS — из arago-tiny-image-omapl138-lcdk.tar.xz с необходимыми модулями. Строка загрузки: setenv nfsopts 'nolock,v3,tcp,rsize=4096,wsize=4096' setenv netargs 'setenv bootargs console=${console} ${optargs} root=/dev/nfs nfsroot=${serverip}:${rootpath},${nfsopts} rw ip=192.168.1.101 rproc_mem=16M@0xC3000000' setenv netbootcmd 'nand read ${loadaddr} 0x100000 0x400000; run netargs; bootz ${loadaddr}' setenv bootcmd 'run netbootcmd' Кто скажет куда копать? root@omapl138-lcdk:~# mount -t debugfs none /debug root@omapl138-lcdk:~# modprobe remoteproc root@omapl138-lcdk:~# modprobe da8xx_remoteproc da8xx_fw_name=dsp_test.out davinci-rproc 11800000.dsp: assigned reserved memory node dsp-memory@c3000000 remoteproc remoteproc0: dsp is available root@omapl138-lcdk:~# remoteproc remoteproc0: powering up dsp remoteproc remoteproc0: Booting fw image dsp_test.out, size 4376876 remoteproc remoteproc0: erroneous trace resource entry remoteproc remoteproc0: Failed to process resources: -22
  9. Добрый день. Никак не получается заставить работать ipc модуль на code composer studio. Поставил модуль в корень установки студии. Студия его успешно подхватила.Но когда я прописываю в конфигурацию проекта app.cfg Ipc = xdc.useModule('ti.sdo.ipc.Ipc'); // GateMP - dynamical creation // Notify - dynamic allocation // Shared region var SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion'); var SHAREDMEM = 0x80000000; var SHAREDMEMSIZE = 0x00020000; SharedRegion.setEntryMeta(0, { name: "SR0", base: SHAREDMEM, len: SHAREDMEMSIZE, ownerProcId: 0, cacheEnable: false, isValid: true }); проект перестаёт собираться. subdir_rules.mk:10: recipe for target 'build-1402654625-inproc' failed js: "/home/kirill/Projects/Lumex/Infralum/DSP/dsp_infralum/app.cfg", line 30: xdc.services.global.XDCException: xdc.PACKAGE_NOT_FOUND: /home/kirill/ti/ipc_3_40_01_08/packages/ti/sdo/ipc/package.xdc found along the package path, but no schema file was found. Ensure that the package 'ti.sdo.ipc' is completely built. На фоне этого я попытался пересобрать модуль ipc. Поправил products.mak в соответствии с документацией и опять никак. При запуске make -f ipc-linux.mak config PLATFORM=omapl38 получаю checking for C compiler default output file name... configure: error: C compiler cannot create executables See `config.log' for more details. make: *** [ipc-linux.mak:57: config] Error 77 Внутри config.log есть ругань на отсутствие библиоек типа /ti-processor-sdk-linux-omapl138-lcdk-06.03.00.106/linux-devkit/sysroots/x86_64-arago-linux/usr/libexec/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/8.2.0/real-ld: cannot find crt1.o: No such file or directory и.т.д. Кто с таким сталкивался? Можно ли где-то в products.mak добавить путь к библиотекам? Может куда-то скопировать нужные библиотеки из поставки lsdk? config.log products.mak
  10. Если кому интересно, то на будущее: 1. В документации на ядро при конфигурировании omap-а через rmii ошибка: вместо ti,davinci-rmii-en = <1>; надо писать ti,davinci-rmii-en = /bits/ 8 <1>; 2. При загрузке из нанд-а при сборке ядра надо вкомпилить в ядро davici Nand and raw nand, а не оставлять модулями.
  11. Не помогло ни одно ни другое. С USB - невозможно - хитрый разъем. Я тут пытаюсь mtdpatrs указать, не получается. mtdparts add nand0 0x20000@0x20000 u-boot_env mtdparts add nand0 0x20000@0x80000 u-boot ro mtdparts add nand0 0x400000@0x200000 kernel ro mtdparts add nand0 0xD00000@0x600000 filesystem после Этого вывод mtdparts пустой. Как правильно указывать? Строка загрузки, если указать mtdpatrs, должна быть 'console=ttyS2,115200n8 root=ubi0:filesystem rw ubi.mtd=filesystem, 2048 noinitrd rootfstype=ubifs mem=256M rootwait=1' ?
  12. Что-то какое-то катастрофическое везение с этим проектом. Пытался сделать загрузку через NAND. 1. Запустил ubifs mkfs.ubifs -m 2048 -e 128KiB -c 2000 -x lzo -r $filesys_path ./ubifs.img 2. На полученый файл натравил ubinize ubinize -o ubi.img -m 2048 -p 128KiB -s 2048 ubinize.cfg ubinize.cfg: [ubifs] mode=ubi image=ubifs.img vol_id=0 vol_size=256MiB vol_type=dynamic vol_name=rootfsys vol_flags=autoresize 3. Добавил партиции в dts partitions { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; partition@0 { label = "u-boot env"; reg = <0 0x020000>; }; partition@20000 { /* The LCDK defaults to booting from this partition */ label = "u-boot"; reg = <0x020000 0x080000>; }; partition@0x200000 { /* Kernel partition */ label = "kernel"; reg = <0x200000 0x400000>; }; partition@0x600000 { /* root partition */ label = "rootfsys"; reg = <0x600000 0>; }; /* partition@a0000 { label = "free space"; reg = <0x0a0000 0>; }; */ }; Поставил в U-Boot setenv bootcmd 'nand read.e 0xc0700000 0x200000 0x400000;nand read.e 0xc1180000 0x600000 0xD00000;bootm 0xc0700000' setenv bootargs 'console=ttyS2,115200n8 root=ubi0:rootfsys rw ubi.mtd=rootfsys,2048 noinitrd rootfstype=ubifs mem=256M rootwait=1' Выхлоп в результате: Booting Linux on physical CPU 0x0 Linux version 4.19.59-g5f8c1c6121 (kirill@kirill-GA-770TA-UD3) (gcc version 8.2.0 (GCC)) #4 PREEMPT Thu Aug 6 18:13:58 MSK 2020 CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=0005317f CPU: VIVT data cache, VIVT instruction cache OF: fdt: Machine model: DA850/AM1808/OMAP-L138 LCDK/Infralum Memory policy: Data cache writethrough Reserved memory: created CMA memory pool at 0xc3000000, size 16 MiB OF: reserved mem: initialized node dsp-memory@c3000000, compatible id shared-dma-pool cma: Reserved 24 MiB at 0xce800000 DaVinci da850/omap-l138/am18x variant 0x1 random: get_random_bytes called from start_kernel+0x88/0x42c with crng_init=0 Built 1 zonelists, mobility grouping on. Total pages: 64960 Kernel command line: console=ttyS2,115200n8 root=ubi0:rootfsys rw ubi.mtd=rootfsys,2048 noinitrd rootfstype=ubifs mem=256M rootwait=1 Dentry cache hash table entries: 32768 (order: 5, 131072 bytes) Inode-cache hash table entries: 16384 (order: 4, 65536 bytes) Memory: 208756K/262144K available (6820K kernel code, 357K rwdata, 2148K rodata, 256K init, 120K bss, 12428K reserved, 40960K cma-reserved) Virtual kernel memory layout: vector : 0xffff0000 - 0xffff1000 ( 4 kB) fixmap : 0xffc00000 - 0xfff00000 (3072 kB) vmalloc : 0xd0800000 - 0xff800000 ( 752 MB) lowmem : 0xc0000000 - 0xd0000000 ( 256 MB) modules : 0xbf000000 - 0xc0000000 ( 16 MB) .text : 0x(ptrval) - 0x(ptrval) (6822 kB) .init : 0x(ptrval) - 0x(ptrval) ( 256 kB) .data : 0x(ptrval) - 0x(ptrval) ( 358 kB) .bss : 0x(ptrval) - 0x(ptrval) ( 121 kB) SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 rcu: Preemptible hierarchical RCU implementation. Tasks RCU enabled. NR_IRQS: 245 clocksource: timer0_1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns Console: colour dummy device 80x30 Calibrating delay loop... 148.88 BogoMIPS (lpj=744448) pid_max: default: 32768 minimum: 301 Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) CPU: Testing write buffer coherency: ok Setting up static identity map for 0xc0008400 - 0xc0008458 rcu: Hierarchical SRCU implementation. devtmpfs: initialized VFP support v0.3: not present clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns futex hash table entries: 256 (order: -1, 3072 bytes) pinctrl core: initialized pinctrl subsystem NET: Registered protocol family 16 DMA: preallocated 256 KiB pool for atomic coherent allocations cpuidle: using governor ladder cpuidle: using governor menu mux: initialized RTC_ALARM mux: Setting register RTC_ALARM mux: PINMUX0 (0x00000000) = 0x44880101 -> 0x24880101 gpiochip_add_data_with_key: GPIOs 0..143 (davinci_gpio.0) failed to register, -517 edma 1e30000.edma: memcpy is disabled edma 1e30000.edma: TI EDMA DMA engine driver SCSI subsystem initialized media: Linux media interface: v0.10 videodev: Linux video capture interface: v2.00 pps_core: LinuxPPS API ver. 1 registered pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <[email protected]> PTP clock support registered Advanced Linux Sound Architecture Driver Initialized. clocksource: Switched to clocksource timer0_1 NET: Registered protocol family 2 tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes) TCP established hash table entries: 2048 (order: 1, 8192 bytes) TCP bind hash table entries: 2048 (order: 1, 8192 bytes) TCP: Hash tables configured (established 2048 bind 2048) UDP hash table entries: 256 (order: 0, 4096 bytes) UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) NET: Registered protocol family 1 RPC: Registered named UNIX socket transport module. RPC: Registered udp transport module. RPC: Registered tcp transport module. RPC: Registered tcp NFSv4.1 backchannel transport module. workingset: timestamp_bits=14 max_order=16 bucket_order=2 NFS: Registering the id_resolver key type Key type id_resolver registered Key type id_legacy registered Block layer SCSI generic (bsg) driver version 0.4 loaded (major 248) io scheduler noop registered (default) io scheduler mq-deadline registered io scheduler kyber registered pinctrl-single 1c14120.pinmux: 160 pins, size 80 Serial: 8250/16550 driver, 10 ports, IRQ sharing disabled console [ttyS2] disabled 1d0d000.serial: ttyS2 at MMIO 0x1d0d000 (irq = 61, base_baud = 9375000) is a TI DA8xx/66AK2x console [ttyS2] enabled brd: module loaded libphy: Fixed MDIO Bus: probed davinci_mdio 1e24000.mdio: davinci mdio revision 1.5, bus freq 2200000 davinci_mdio 1e24000.mdio: detected phy mask fffffffc libphy: 1e24000.mdio: probed davinci_mdio 1e24000.mdio: phy[0]: device 1e24000.mdio:00, driver Micrel KSZ8041RNLI davinci_mdio 1e24000.mdio: phy[1]: device 1e24000.mdio:01, driver Micrel KSZ8041RNLI i2c /dev entries driver davinci-wdt 1c21000.wdt: heartbeat 60 sec sdhci: Secure Digital Host Controller Interface driver sdhci: Copyright(c) Pierre Ossman sdhci-pltfm: SDHCI platform and OF driver helper ti-aemif 68000000.aemif: cannot get clock 'aemif' NET: Registered protocol family 10 Segment Routing with IPv6 sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver NET: Registered protocol family 17 Key type dns_resolver registered edma 1c00000.edma: memcpy is disabled edma 1c00000.edma: TI EDMA DMA engine driver UBI error: cannot open mtd rootfsys, error -2 console [netcon0] enabled netconsole: network logging started davinci_emac 1e20000.ethernet: incompatible machine/device type for reading mac address davinci_emac 1e20000.ethernet: using random MAC addr: 52:4f:de:37:a8:e5 input: gpio-keys as /devices/platform/gpio-keys/input/input0 hctosys: unable to open rtc device (rtc0) ALSA device list: No soundcards found. VFS: Cannot open root device "ubi0:rootfsys" or unknown-block(0,0): error -19 Please append a correct "root=" boot option; here are the available partitions: 0100 32768 ram0 (driver?) Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) ]--- random: fast init done Смущает ti-aemif 68000000.aemif: cannot get clock 'aemif' Такое ощущение, что теперь не видно NAND-а.....
  13. Безусловно. Но оба процесса делают одно и то же: Инициализируют PINMUX. Если он в U-Boot-е проинициализирован, то повторять в dts можно, но проблемы не решит. У меня ощущение, что dtb файл ядром не читается. Это можно как-то проверить? Можно dtb положить в отдельный раздел nand? Если да, то как сообщить об этом ядру?
  14. Включена. На всякий случай добавил поддеожку NFS v4. Только ошибки такого рода появились. Duplicate name in testcase-data, renamed to "duplicate-name#1" ### dt-test ### start of unittest - you will see error messages OF: /testcase-data/phandle-tests/consumer-a: could not get #phandle-cells-missing for /testcase-data/phandle-tests/provider1 OF: /testcase-data/phandle-tests/consumer-a: could not get #phandle-cells-missing for /testcase-data/phandle-tests/provider1 OF: /testcase-data/phandle-tests/consumer-a: could not find phandle OF: /testcase-data/phandle-tests/consumer-a: could not find phandle OF: /testcase-data/phandle-tests/consumer-a: arguments longer than property OF: /testcase-data/phandle-tests/consumer-a: arguments longer than property OF: /testcase-data/phandle-tests/consumer-b: could not get #phandle-missing-cells for /testcase-data/phandle-tests/provider1 OF: /testcase-data/phandle-tests/consumer-b: could not find phandle OF: /testcase-data/phandle-tests/consumer-b: arguments longer than property ### dt-test ### end of unittest - 162 passed, 0 failed davinci_mdio 1e24000.mdio: resetting idled controller Micrel KSZ8041RNLI 1e24000.mdio:00: attached PHY driver [Micrel KSZ8041RNLI] (mii_bus:phy_addr=1e24000.mdio:00, irq=POLL) IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready Там стандартное дерево из поставки ti-processor-sdk-linux-omapl138-lcdk-06.01.00.08. bin boot dev etc home init lib linuxrc media mnt opt proc run sbin srv sys tmp usr var Пробовал все варианты. Результат: Micrel KSZ8041RNLI 1e24000.mdio:00: attached PHY driver [Micrel KSZ8041RNLI] (mii_bus:phy_addr=1e24000.mdio:00, irq=POLL) IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready random: fast init done davinci_emac 1e20000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready IP-Config: Complete: device=eth0, hwaddr=9e:19:94:90:e7:10, ipaddr=192.168.228.253, mask=255.255.255.0, gw=192.168.228.1 host=192.168.228.253, domain=, nis-domain=(none) bootserver=192.168.228.116, rootserver=192.168.228.116, rootpath= random: crng init done VFS: Unable to mount root fs via NFS, trying floppy. VFS: Cannot open root device "nfs" or unknown-block(2,0): error -6 Please append a correct "root=" boot option; here are the available partitions: 0100 32768 ram0 (driver?) Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0) ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0) ]--- Доже пытался dhcp прописать, говорит что ответа нет. По поводу пинов в da850.dtsi: я из прописал на всякий случай rmii_pins: pinmux_rmii_pins { pinctrl-single,bits = < /* * RMII_TXD_1, RMII_TXD_0, RMII_TXEN * RMII_RXD_1, RMII_RXN_0, RMII_RXER */ 0x38 0x88888800 0xffffff00 /* * RMII_MHZ_50_CLK, RMII_CRS_DV */ 0x3c 0x00000080 0x000000ff >; }; Но это, по сути, дублирование кода из board_init от u-boot-а. Были бы пины неправильно проинициализированы - не работал бы TFTP в U-Boot-е.
×
×
  • Создать...