zemlemer
Участник-
Постов
94 -
Зарегистрирован
-
Посещение
-
Добрый день. Долгие бодания с DMA ни к чему не привели. Т.е. привели к работе, но с полной загрузкой процессора. Есть несколько вопросов по PRU. 1. Я правильно понимаю, что само упраление предельно простое: Поставить через CONTROL регистр в reset и снять enable, загрузить программу и выстваить enable. 2. Можно ли написать короткую программу на C и собрать ее как-то для PRU? 3. Есть примеры работы с PRU? Я не нашел нормальных примеров работы с PRU, а в тех что есть используеся pasm, пытался собрать с asm6x - не получилось.
-
Добрый день, У меня, в связи с аварией, произошла перестановкв операционки на 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-битные библиотеки поставлены. Есть предоположения куда копать дальше?
-
zemlemer подписался на OMAP_L138 interrupts
-
OMAP_L138 interrupts
zemlemer опубликовал тема в Сигнальные процессоры и их программирование - DSP
Добрый день. У меня возникла проблема с 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? Если да, то как лучше это сделать? Спасибо. -
1. Есть StarterWare, примеры моджно брать оттуда. Если ножка не дергается, проверяйте syscfg.
- 4 ответа
-
- dsp
- tms320c6745
- (и ещё 6 )
-
omapl138 console output
zemlemer опубликовал тема в Сигнальные процессоры и их программирование - DSP
Добрый день. Никто не подскажет как заставить dsp часть omap печатать в linux консоль отладочную информацию (System_printf или Log_print0) из программы? Может что в cfg рпавить надо? -
Заработало. Забыл добавить config.bld линкеру чтою память начиналась с 0xC3100000. Теперь хоть грузится.
-
Это понятно. Просто не ясно куда в этой ситуации копать. в конфиге есть строка /* 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
-
Добрый день. Столкнулся со следующей проблемой: не могу загрузить из 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
-
Добрый день. Никак не получается заставить работать 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
-
Если кому интересно, то на будущее: 1. В документации на ядро при конфигурировании omap-а через rmii ошибка: вместо ti,davinci-rmii-en = <1>; надо писать ti,davinci-rmii-en = /bits/ 8 <1>; 2. При загрузке из нанд-а при сборке ядра надо вкомпилить в ядро davici Nand and raw nand, а не оставлять модулями.
-
Не помогло ни одно ни другое. С 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' ?
-
Что-то какое-то катастрофическое везение с этим проектом. Пытался сделать загрузку через 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-а.....
-
Безусловно. Но оба процесса делают одно и то же: Инициализируют PINMUX. Если он в U-Boot-е проинициализирован, то повторять в dts можно, но проблемы не решит. У меня ощущение, что dtb файл ядром не читается. Это можно как-то проверить? Можно dtb положить в отдельный раздел nand? Если да, то как сообщить об этом ядру?
-
Включена. На всякий случай добавил поддеожку 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-е.