Post Go back to editing

BF609 mcapi_test hangs on cces_msg1

https://docs.blackfin.uclinux.org/doku.php?id=test_mcapiI have been trying to test mcapi between the latest releast ucLinux 2014R1-RC2 on core0 and a CCES v2 application on core1.

 

I have been following https://docs.blackfin.uclinux.org/doku.php?id=test_icc and have run the icc test with the following result:

 

root:/> icc_loader -l bin/icc

load elf code to core B

writing to 0xc8088000, 0x7538    bytes: OK

writing to 0xff600000, 0xb8      bytes: OK

root:/> icc_loader -e bin/task1

kill current task and invalidate dcache on core B

load elf code to core B

writing to 0x07c00000, 0x12c     bytes: OK

task_init_addr 7c00000

task_exit_addr 7c00100

root:/> packet_test -s 123

sp packet 4

begin create ep

finish create ep session index = 1

696e6966

0

0

0

6873

root:/>

 

 

It is not clear to me whether this is working or not, but being optimistic (!!!) it does not report any errors to I continued to https://docs.blackfin.uclinux.org/doku.php?id=test_mcapi and hoped for the best.  The initial test seems to work:

 

root:/> icc_loader -l bin/icc

load elf code to core B

writing to 0xc8088000, 0x7538    bytes: OK

writing to 0xff600000, 0xb8      bytes: OK

root:/> icc_loader -e bin/mcapi_msg1

kill current task and invalidate dcache on core B

load elf code to core B

writing to 0x07c00000, 0x42cc    bytes: OK

task_init_addr 7c00118

task_exit_addr ffffffff

root:/> msg1

MCAPI_DEBUG:mcapi_trans_initialize 865

MCAPI_DEBUG:mcapi_trans_initialize_ 825

MCAPI_DEBUG:mcapi_trans_initialize_ 853 db addr 03480000 size 2c34c

MCAPI_DEBUG:mcapi_trans_initialize_ 857

MCAPI_DEBUG: node index 0 ep index 1

node=0, port=101

ep1 65

MCAPI_DEBUG: mcapi_trans_get_endpoint_internal node_num=1, port_num=5

node=1, port=5

ep2 10005

MCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

MCAPI_DEBUG:mcapi_trans_valid_endpoint endpoint=0x65 (database indices: n=0,e=101) rc=1

MCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:domain 0 node 1 endpoint 5

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

MCAPI_DEBUG:index 1, se 101, sn 0

MCAPI_DEBUG:index 1, re 5, rn 1

endpoint=101 has sent: [HELLO_MCAPI 0]

coreA: The 0 time sending, status 1

MCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

MCAPI_DEBUG:mcapi_trans_valid_endpoint endpoint=0x65 (database indices: n=0,e=101) rc=1

MCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:domain 0 node 1 endpoint 5

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

MCAPI_DEBUG:index 1, se 101, sn 0

MCAPI_DEBUG:index 1, re 5, rn 1

endpoint=101 has sent: [HELLO_MCAPI 1]

coreA: The 1 time sending, status 1

MCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

MCAPI_DEBUG:mcapi_trans_valid_endpoint endpoint=0x65 (database indices: n=0,e=101) rc=1

MCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:domain 0 node 1 endpoint 5

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

MCAPI_DEBUG:index 1, se 101, sn 0

MCAPI_DEBUG:index 1, re 5, rn 1

endpoint=101 has sent: [HELLO_MCAPI 2]

coreA: The 2 time sending, status 1

MCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

MCAPI_DEBUG:mcapi_trans_valid_endpoint endpoint=0x65 (database indices: n=0,e=101) rc=1

MCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:domain 0 node 1 endpoint 5

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

MCAPI_DEBUG:index 1, se 101, sn 0

MCAPI_DEBUG:index 1, re 5, rn 1

endpoint=101 has sent: [HELLO_MCAPI 3]

coreA: The 3 time sending, status 1

MCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

MCAPI_DEBUG:mcapi_trans_valid_endpoint endpoint=0x65 (database indices: n=0,e=101) rc=1

MCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

MCAPI_DEBUG:mcapi_trans_msg_available avail = 1

MCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

MCAPI_DEBUG:mcapi_trans_valid_endpoint endpoint=0x65 (database indices: n=0,e=101) rc=1

MCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

session_idx 1

MCAPI_DEBUG:index 1, se 5, sn 1

node=1, port=5

endpoint=101 has received: [HELLO_MCAPI 0]

CoreA : message recv. The 0 time receiving , status 1

MCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

MCAPI_DEBUG:mcapi_trans_valid_endpoint endpoint=0x65 (database indices: n=0,e=101) rc=1

MCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

MCAPI_DEBUG:mcapi_trans_msg_available avail = 3

MCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

MCAPI_DEBUG:mcapi_trans_valid_endpoint endpoint=0x65 (database indices: n=0,e=101) rc=1

MCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

session_idx 1

MCAPI_DEBUG:index 1, se 5, sn 1

node=1, port=5

endpoint=101 has received: [HELLO_MCAPI 1]

CoreA : message recv. The 1 time receiving , status 1

MCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

MCAPI_DEBUG:mcapi_trans_valid_endpoint endpoint=0x65 (database indices: n=0,e=101) rc=1

MCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

MCAPI_DEBUG:mcapi_trans_msg_available avail = 2

MCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

MCAPI_DEBUG:mcapi_trans_valid_endpoint endpoint=0x65 (database indices: n=0,e=101) rc=1

MCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

session_idx 1

MCAPI_DEBUG:index 1, se 5, sn 1

node=1, port=5

endpoint=101 has received: [HELLO_MCAPI 2]

CoreA : message recv. The 2 time receiving , status 1

MCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

MCAPI_DEBUG:mcapi_trans_valid_endpoint endpoint=0x65 (database indices: n=0,e=101) rc=1

MCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

MCAPI_DEBUG:mcapi_trans_msg_available avail = 1

MCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

MCAPI_DEBUG:mcapi_trans_valid_endpoint endpoint=0x65 (database indices: n=0,e=101) rc=1

MCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

session_idx 1

MCAPI_DEBUG:index 1, se 5, sn 1

node=1, port=5

endpoint=101 has received: [HELLO_MCAPI 3]

CoreA : message recv. The 3 time receiving , status 1

MCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

MCAPI_DEBUG:mcapi_trans_valid_endpoint endpoint=0x65 (database indices: n=0,e=101) rc=1

MCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

MCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

mcapi_finalize 322 

CoreA Test PASSED

root:/>

 

But then I try the core1 CCES application test, it hangs.  I have build the BF609 EZ BOARD installed C:\Analog Devices\ADSP-BF609_Evaluation_Board-Rel1.1.0\BF609_EZ-Board\Blackfin\Examples\services\mcapi\BF609_MCAPI_msg project in CCES v2 and tried to adjust as per https://docs.blackfin.uclinux.org/doku.php?id=test_mcapi though the instructions seem to be for an old version of CCES.  I have also adjusted my kernel boot command line parameters as per the instructions:

 

U-Boot 2013.07 (ADI-2014R1) (Jul 09 2014 - 18:59:03)

 

CPU: ADSP bf609-0.0 (Detected Rev: 0.0) (rsi master boot)

Board: ADI BF609 EZ-Kit board

Support: http://blackfin.uclinux.org/

Clock: VCO: 500 MHz, Core: 500 MHz, System0: 125 MHz, System1: 125 MHz, Dclk: 250 MHz

RAM: 128 MiB

Flash: 16 MiB

MMC: Blackfin SDH: 0

In: serial

Out: serial

Err: serial

KGDB: [on serial] ready

other init

Net: mii0

Hit any key to stop autoboot:  0

24127880 bytes read in 8187 ms (2.8 MiB/s)

## Booting kernel from Legacy Image at 04000000 ...

Image Name: bf609-0.0-3.10.10-ADI-2014R1

Image Type:   Blackfin Linux Kernel Image (gzip compressed)

Data Size:    24127816 Bytes = 23 MiB

Load Address: 00001000

Entry Point:  002b79ec

Verifying Checksum ... OK

Uncompressing Kernel Image ... OK

Starting Kernel at = 002b79ec

Linux version 3.10.10-ADI-2014R1 (vm@ubuntu) (gcc version 4.3.5 (ADI-2014R1-RC2) ) #21 Fri Jan 22 14:28:58 GMT 2016

register early platform devices

bootconsole [early_shadow0] enabled

ERROR: Not running on ADSP-BF609: unknown CPUID 0x0000 Rev 0.0

bootconsole [early_BFuart0] enabled

early printk enabled on early_BFuart0

Board Memory: 128MB

Kernel Managed Memory: 124MB

Memory map:

fixedcode = 0x00000400-0x00000490

text      = 0x00001000-0x001d8ac0

rodata    = 0x001d8ae4-0x00275cbc

bss       = 0x00276000-0x0028b434

data      = 0x0028b440-0x002b4000

stack   = 0x002b2000-0x002b4000

init      = 0x002b4000-0x030ad000

available = 0x030ad000-0x07b00000

  DMA Zone  = 0x07b00000-0x07c00000

Hardware Trace active and enabled

Blackfin support (C) 2004-2010 Analog Devices, Inc.

Compiled for ADSP-BF609 Rev 0.0

Blackfin Linux support by http://blackfin.uclinux.org/

Processor Speed: 500 MHz core clock, 125 MHz SCLk, 125 MHz SCLK0, 125 MHz SCLK1 and 250 MHz DCLK

NOMPU: setting up cplb tables

Instruction Cache Enabled for CPU0

External memory: cacheable in instruction cache

  L2 SRAM        : uncacheable in instruction cache

Data Cache Enabled for CPU0

External memory: cacheable (write-through) in data cache

  L2 SRAM        : uncacheable in data cache

Built 1 zonelists in Zone order, mobility grouping off.  Total pages: 31242

Kernel command line: root=/dev/mmcblk0p1 rw clkin_hz=(25000000) earlyprintk=serial,uart0,57600 console=ttyBF0,57600 mem=124M max_mem=128M icc_l2_mem=0x8000

PID hash table entries: 512 (order: -1, 2048 bytes)

Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)

Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)

Sorting __ex_table...

Memory available: 74940k/126976k RAM, (47076k init code, 1886k kernel code, 878k data, 1024k dma, 1172k reserved)

NR_IRQS:291

Configuring Blackfin Priority Driven Interrupts

Console: colour dummy device 80x25

Calibrating delay loop... 989.18 BogoMIPS (lpj=1978368)

pid_max: default: 32768 minimum: 301

Mount-cache hash table entries: 512

devtmpfs: initialized

Blackfin Scratchpad data SRAM: 4 KB

Blackfin L1 Data A SRAM: 16 KB (9 KB free)

Blackfin L1 Data B SRAM: 16 KB (16 KB free)

Blackfin L1 Instruction SRAM: 64 KB (51 KB free)

Blackfin L2 SRAM: 256 KB (224 KB free)

pinctrl core: initialized pinctrl subsystem

NET: Registered protocol family 16

Blackfin DMA Controller

ezkit_init(): registering device resources

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

i2c-bfin-twi i2c-bfin-twi.0: Blackfin on-chip I2C TWI Contoller, regs_base@ffc01e00

i2c-bfin-twi i2c-bfin-twi.1: Blackfin on-chip I2C TWI Contoller, regs_base@ffc01f00

pps_core: LinuxPPS API ver. 1 registered

pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti giometti@linux.it

PTP clock support registered

NET: Registered protocol family 23

Switching to clocksource bfin_cs_cycles

NET: Registered protocol family 2

TCP established hash table entries: 1024 (order: 1, 8192 bytes)

TCP bind hash table entries: 1024 (order: 0, 4096 bytes)

TCP: Hash tables configured (established 1024 bind 1024)

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

msgmni has been set to 146

io scheduler noop registered (default)

bfin-uart: Blackfin serial driver

bfin-uart.0: ttyBF0 at MMIO 0xffc02000 (irq = 88) is a BFIN-UART

console [ttyBF0] enabled, bootconsole disabled

console [ttyBF0] enabled, bootconsole disabled

CAN device driver interface

bfin_can bfin_can.0: bfin_can device registered(&reg_base=ffc00a00, rx_irq=47, tx_irq=48, err_irq=49, sclk=125000000)

stmmac - user ID: 0x10, Synopsys ID: 0x36

Enhanced/Alternate descriptors

            Enabled extended descriptors

Ring mode enabled

DMA HW capability register supported

RX Checksum Offload Engine supported (type 2)

Wake-Up On Lan supported

Enable RX Mitigation via HW Watchdog Timer

libphy: stmmac: probed

eth0: PHY ID 20005c90 at 1 IRQ 0 (stmmac-0:01) active

usbcore: registered new interface driver usb-storage

input: bfin-rotary as /devices/platform/bfin-rotary/input/input0

i2c /dev entries driver

bfin_wdt: initialized: timeout=20 sec (nowayout=0)

dma_alloc_init: dma_page @ 0x033b4000 - 256 pages at 0x07b00000

usbcore: registered new interface driver usbhid

usbhid: USB HID core driver

icc icc.0: initialized

TCP: cubic registered

NET: Registered protocol family 17

can: controller area network core (rev 20120528 abi 9)

NET: Registered protocol family 29

can: raw protocol (rev 20120528)

can: broadcast manager protocol (rev 20120528 t)

can: netlink gateway (rev 20130117) max_hops=1

Freeing unused kernel memory: 47076K (2b4000 - 30ad000)

mmc0: host does not support reading read-only switch. assuming write-enable.

mmc0: new SD card at address b368

mmcblk0: mmc0:b368 SMI   1.85 GiB

mmcblk0: p1

eth0: device MAC address 02:80:ad:20:31:e8

input: AD7879 Touchscreen as /devices/platform/bfin-spi3.0/spi_master/spi0/spi0.65/input/input1

BusyBox v1.21.1 (2016-01-18 11:18:53 GMT) hush - the humble shell

root:/> libphy: stmmac-0:01 - Link is Up - 100/Full

root:/> icc_loader -l /tmp/BF609_MCAPI_msg_Core1.dxe

load elf code to core B

writing to 0xff600000, 0x7f46    bytes: OK

writing to 0xff5005d0, 0x8       bytes: OK

writing to 0xff501118, 0x20c8    bytes: OK

writing to 0xff503720, 0xf8      bytes: OK

writing to 0xff500000, 0x59b     bytes: OK

writing to 0xff50059c, 0x34      bytes: OK

writing to 0xff5005d8, 0xb40     bytes: OK

writing to 0xff5031e0, 0x540     bytes: OK

writing to 0xc80a8000, 0x1a      bytes: OK

writing to 0xc8088210, 0x560     bytes: OK

writing to 0xc80a801c, 0x10      bytes: OK

root:/> cces_msg1

MCAPI_DEBUG:mcapi_trans_initialize 865

MCAPI_DEBUG:mcapi_trans_initialize_ 825

MCAPI_DEBUG:mcapi_trans_initialize_ 853 db addr 03640000 size 2c34c

MCAPI_DEBUG:mcapi_trans_initialize_ 857

MCAPI_DEBUG: node index 0 ep index 1

node=0, port=101

ep1 65

MCAPI_DEBUG: node index 0 ep index 2

node=0, port=2

ep4 2

MCAPI_DEBUG: mcapi_trans_get_endpoint_internal node_num=1, port_num=0

node=1, port=0

ep2 10000

MCAPI_DEBUG: mcapi_trans_get_endpoint_internal node_num=1, port_num=1

node=1, port=1

ep3 10001

MCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

MCAPI_DEBUG:mcapi_trans_valid_endpoint endpoint=0x65 (database indices: n=0,e=101) rc=1

MCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:domain 0 node 1 endpoint 0

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

MCAPI_DEBUG:index 1, se 101, sn 0

MCAPI_DEBUG:index 1, re 0, rn 1

endpoint=101 has sent: [1]

DSP data before

1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7fffffff80ffffff81ffffff82ffffff83ffffff84ffffff85ffffff86ffffff87ffffff88ffffff89ffffff8affffff8bffffff8cffffff8dffffff8effffff8fffffff90ffffff91ffffff92ffffff93ffffff94ffffff95ffffff96ffffff97ffffff98ffffff99ffffff9affffff9bffffff9cffffff9dMCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

MCAPI_DEBUG:mcapi_trans_valid_endpoint endpoint=0x65 (database indices: n=0,e=101) rc=1

MCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:domain 0 node 1 endpoint 1

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

MCAPI_DEBUG:index 1, se 101, sn 0

MCAPI_DEBUG:index 1, re 1, rn 1

endpoint=101 has sent: [1]

MCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

MCAPI_DEBUG:mcapi_trans_valid_endpoint endpoint=0x65 (database indices: n=0,e=101) rc=1

MCAPI_DEBUG:domain 0 node 0 endpoint 101

MCAPI_DEBUG:domain 0 node 1 endpoint 0

MCAPI_DEBUG:index 0 101

MCAPI_DEBUG:index 101 101

MCAPI_DEBUG:index 1, se 101, sn 0

MCAPI_DEBUG:index 1, re 0, rn 1

endpoint=101 has sent: [4]

MCAPI_DEBUG:domain 0 node 0 endpoint 2

MCAPI_DEBUG:index 0 2

MCAPI_DEBUG:index 101 2

MCAPI_DEBUG:index 2 2

MCAPI_DEBUG:mcapi_trans_valid_endpoint endpoint=0x2 (database indices: n=0,e=2) rc=1

MCAPI_DEBUG:domain 0 node 0 endpoint 2

MCAPI_DEBUG:index 0 2

MCAPI_DEBUG:index 101 2

MCAPI_DEBUG:index 2 2

session_idx 2

 

(forgive formatting, I am really struggling to use this forum editor ...)

 

And there it hangs ...

 

Any suggestions for what is wrong or how to fix it appreciated ...

 

  • I also tried this test and I have absolutely the same output. I found that cces_msg1 hangs at lines

      /* recv DSP data */

    recv(ep4, &status, MCAPI_SUCCESS);

    because there are nobody to answer. I also don't understand why this happens.

    I tried to connect Cross Core Studio debugger (set core1 to load symbols only) and I can't even see that core1-application running. I even can't start core1 application from CrossCore studio to debug it!

  • How are you handling concurrency issues?  For me the purpose of mcapi is the promise of a working library that is designed to be "light weight" and deals (I assume!) with all the concurrency issues, with the added advantage of portability should I later run a.n.other OS (e.g. an RTOS like uC/OS III) on core0 ... ymmv

  • Thanks Aaronwu, using your attached .dxe I get the same as you i.e. it works!

    Aaronwu wrote:

    Do you generate the dxe file on your own or using the built-in existing one?

    As stated in my original post:

    "I have build the BF609 EZ BOARD installed C:\Analog Devices\ADSP-BF609_Evaluation_Board-Rel1.1.0\BF609_EZ-Board\Blackfin\Examples\services\mcapi\BF609_MCAPI_msg project in CCES v2 and tried to adjust as per https://docs.blackfin.uclinux.org/doku.php?id=test_mcapi though the instructions seem to be for an old version of CCES."


    So that is where the problem is.  How did you build your working .dxe?

  • Please hold on, I'll try to investigate and be back to you, thanks for your patience.

    Basically all the documented materials are passed in our test, it's usually because we missed something or working on a temporal version instead of the stably released one if we can't pass the default examples.

  • , I found that I can write to L2 SRAM directly from my Qt app and then read it with cross core studio app, so I decided not to use mcapi at all.

  • We can ignore the first part of log about icc,  icc is something the mcapi is built on, as user focusing on the mcapi would be enough.

    Second part of the log shows it is working fine.

    I looked into your third test case, about Linux working with CCES bare-metal, and had a try on my side. Seems to work. I attached a copy of mine test files for both the uImage and the core B side BF609_MCAPI_msg_Core1.dxe. Please check my operation and output from the log.

    The BF609_MCAPI_msg_Core1.dxe is also available in the testsuites/mcapi folder of the buildroot source. Do you generate the dxe file on your own or using the built-in existing one? I'd recommend you to try this dxe file first if it does not work use it together with the attached uImage.

    root:/> icc_loader -l BF609_MCAPI_msg_Core1.dxe

    load elf code to core B

    writing to 0xff600000, 0x9aee    bytes: OK

    writing to 0xff5010f0, 0x233c    bytes: OK

    writing to 0xff503988, 0xe4      bytes: OK

    writing to 0xff500000, 0x59b    bytes: OK

    writing to 0xff50059c, 0x34      bytes: OK

    writing to 0xff5005d0, 0xb20    bytes: OK

    writing to 0xff50342c, 0x55c    bytes: OK

    writing to 0xc80a8000, 0x1a      bytes: OK

    writing to 0xc8088210, 0xc00    bytes: OK

    writing to 0xc80a801c, 0x10      bytes: OK

    root:/> [CORE1]: BF609_MCAPI_msg: c8088610

    coreb:create ep 0

    coreb:create ep 1

    create ep 0

    coreb: RequestPhaseMachine 1196 phase 9

    coreb: pMsgQueue pri 1 dst 2 src 65567

    EnqueueRemote 600 queue c8080208 sent 0 recv 0

    EnqueueRemote 602 queue c8080208 sent 0 recv 0

    EnqueueRemote 624

    EnqueueRemote 651

    EnqueueRemote 666 result 1

    coreb: RequestPhaseMachine 1196 phase b

    _adi_mcapi_dequeueLocal 724 wait request ff407eb8 endpoint ff501d8c

    _adi_mcapi_dequeueLocal 725 buf ff407f48

    root:/> cces_msg1
    MCAPI_DEBUG:mcapi_trans_initialize 865iccInterruptHandler 1137

    MCAPI_DEBUG:mcapi_trans_initialize_ 825
    MCAPI_DEBUG:mcapi_trans_initialize_ 853 db addr 04d80000 size 2c34c
    MCAPI_DEBUG:mcapi_trans_initialize_ 857
    MCAPI_DEBUG: node index 0 ep index 1
    node=0, port=101
    ep1 65
    coreb: processQueueIn 807 queue c8080104 pri 0 requestff502a94
    coreb: processQueueIn 837 dstep 31 srcep 2 type 3
    coreb: processQueueIn 838 ff501d8c
    coreb: processQueueIn 1027
    coreb: processQueueIn 1037
    coreb: EnqueueLocal 555
    coreb: EnqueueLocal 585 endpoint ff501d8c
    coreb: EnqueueLocal 596 pwait  ff407eb8
    coreb: processQueueIn 1051
    coreb: processQueueIn 1057
    coreb: processQueueOut 1069
    coreb: processQueueIn 807 queue c808030c pri 1 requestff502af4
    coreb: processQueueIn 1051
    coreb: processQueueIn 1057
    coreb: processQueueOut 1069
    coreb: RequestPhaseMachine 1196 phase c
    get ep 2
    coreb: dsp_command_loop 262
    receive_dsp_cmd 146 buf ff407f6c size 4
    coreb: mcapi_msg_recv 2600 request ff407ec0 dsp 65536 buf ff407f6c
    coreb: RequestPhaseMachine 1196 phase 6
    coreb: RequestPhaseMachine 1298 request ff407ec0 buf ff407f6c
    _adi_mcapi_dequeueLocal 724 wait request ff407ec0 endpoint ff5010f4
    _adi_mcapi_dequeueLocal 725 buf ff407f6c
    coreb: RequestPhaseMachine 1311
    MCAPI_DEBUG: node index 0 ep index 2iccInterruptHandler 1137

    node=0, port=2
    ep4 2
    MCcoreb: processQueueIn 807 queue c8080104 pri 0 requestff502b54
    API_DEBUG: mcapi_trans_get_endpoint_internal node_num=1, port_num=0
    node=1, port=0
    ep2 10000
    MCAPI_DEBUG: mcapi_trans_get_endpoint_internal node_num=1, port_num=1
    node=1, port=1
    ep3 10001
    MCAPI_DEBUG:domain 0 node 0 endpoint 101
    MCAPI_DEBUG:index 0 101
    MCAPI_DEBUG:index 101 101
    MCAPI_DEBUG:mcapi_trans_valid_endpoint endpoint=0x65 (database indices: n=0,e=101) rc=1
    MCAPI_DEBUG:domain 0 node 0 endpoint 101
    MCAPI_DEBUG:domain 0 node 1 endpoint 0
    MCAPI_DEBUG:index 0 101
    MCAPI_DEBUG:index 101 101
    MCAPI_DEBUG:index 1, se 101, sn 0
    MCAPI_DEBUG:index 1, re 0, rn 1
    endpoint=101 has sent: [1]
    DSP data before
    1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f601
    MCAPI_DEBUG:index 0 101
    MCAPI_DEBUG:index 101 101
    MCAPI_DEBUG:mcapi_trans_valid_endpoint endpoint=0x65 (database indices: n=0,e=101) rc=1
    MCAPI_DEBUG:domain 0 node 0 endpoint 101
    MCAPI_DEBUG:domain 0 node 1 endpoint 1
    MCAPI_DEBUG:index 0 101
    MCAPI_DEBUG:index 101 101
    MCAPI_DEBUG:index 1, se 101, sn 0
    MCAPI_DEBUG:index 1, re 1, rn 1
    endpoint=101 has sent: [1]
    MCAPI_DEBUG:domain 0 node 0 endpoint 101
    MCAPI_DEBUG:index 0 101
    MCAPI_DEBUG:index 101 101
    MCAPI_DEBUG:mcapi_trans_valid_endpoint endpoint=0x65 (database indices: n=0,e=101) rc=1
    MCAPI_DEBUG:domain 0 node 0 endpoint 101
    MCAPI_DEBUG:domain 0 node 1 endpoint 0
    MCAPI_DEBUG:index 0 101
    MCAPI_DEBUG:index 101 101
    MCAPI_DEBUG:index 1, se 101, sn 0
    MCAPI_DEBUG:index 1, re 0, rn 1
    endpoint=101 has sent: [4]
    coreb: processQueueIn 837 dstep 0 srcep 101 type 4000000
    coreb: processQueueIn 838 ff5010f4
    coreb: processQueueIn 842
    coreb: processQueueIn 899
    coreb: processQueueIn 1024
    coreb: processQueueIn 1027
    coreb: processQueueIn 1037
    coreb: EnqueueLocal 555
    coreb: EnqueueLocal 585 endpoint ff5010f4
    coreb: EnqueueLocal 596 pwait  ff407ec0
    coreb: processQueueIn 1051
    coreb: processQueueIn 1057
    coreb: processQueueOut 1069
    coreb: processQueueIn 807 queue c808030c pri 1 requestff502bb4
    coreb: processQueueIn 1051
    coreb: processQueueIn 1057
    coreb: processQueueOut 1069
    iccInterruptHandler 1137
    coreb: processQueueIn 807 queue c8080104 pri 0 requestff502c14
    coreb: processQueueIn 837 dstep 1 srcep 101 type 4000000
    coreb: processQueueIn 838 ff50115c
    coreb: processQueueIn 842
    coreb: processQueueIn 899
    coreb: processQueueIn 1024
    coreb: processQueueIn 1027
    coreb: processQueueIn 1037
    coreb: EnqueueLocal 555
    coreb: EnqueueLocal 568
    coreb: processQueueIn 837 dstep 0 srcep 101 type 4000000
    coreb: processQueueIn 838 ff5010f4
    coreb: processQueueIn 842
    coreb: processQueueIn 899
    coreb: processQueueIn 1024
    coreb: processQueueIn 1027
    coreb: processQueueIn 1037
    coreb: EnqueueLocal 555
    coreb: EnqueueLocal 568
    coreb: processQueueIn 1051
    coreb: processQueueIn 1057
    coreb: processQueueOut 1069
    coreb: processQueueIn 807 queue c808030c pri 1 requestff502c74
    coreb: processQueueIn 1051
    coreb: processQueueIn 1057
    coreb: processQueueOut 1069
    coreb: RequestPhaseMachine 1196 phase 7
    coreb: RequestPhaseMachine 1319
    coreb: RequestPhaseMachine 1329 size 4 addr 49933a0 buf ff407f6c
    coreb: RequestPhaseMachine 1347
    coreb: pMsgQueue pri 0 dst 101 src 65536
    EnqueueRemote 600 queue c8080000 sent 91 recv 76
    EnqueueRemote 602 queue c8080000 sent 92 recv 85
    EnqueueRemote 624
    EnqueueRemote 651
    EnqueueRemote 666 result 1
    coreb: RequestPhaseMachine 1358 status 1
    coreb: RequestPhaseMachine 1196 phase 8
    coreb: RequestPhaseMachine 1364
    coreb: mcapi_msg_recv 2603
    coreb: dsp_command_loop 280 cmd 1
    coreb: receive_dsp_data 176
    coreb: mcapi_msg_recv 2600 request ff407eb4 dsp 65537 buf ff5030c0
    coreb: RequestPhaseMachine 1196 phase 6
    coreb: RequestPhaseMachine 1298 request ff407eb4 buf ff5030c0
    coreb: RequestPhaseMachine 1311
    coreb: RequestPhaseMachine 1196 phase 7
    coreb: RequestPhaseMachine 1319
    coreb: RequestPhaseMachine 1329 size 128 addr 40af380 buf ff5030c0
    coreb: RequestPhaseMachine 1347
    coreb: pMsgQueue pri 0 dst 101 src 65537
    EnqueueRemote 600 queue c8080000 sent 112 recv 97
    EnqueueRemote 602 queue c8080000 sent 113 recv 106
    EnqueueRemote 624
    EnqueueRemote 651
    EnqueueRemote 666 result 1
    coreb: RequestPhaseMachine 1358 status 1
    coreb: RequestPhaseMachine 1196 phase 8
    coreb: RequestPhaseMachine 1364
    coreb: mcapi_msg_recv 2603
    coreb: receive_dsp_data 193 data ff5031c0
    receive_dsp_cmd 146 buf ff407f6c size 4
    coreb: mcapi_msg_recv 2600 request ff407ec0 dsp 65536 buf ff407f6c
    coreb: RequestPhaseMachine 1196 phase 6
    coreb: RequestPhaseMachine 1298 request ff407ec0 buf ff407f6c
    coreb: RequestPhaseMachine 1311
    coreb: RequestPhaseMachine 1196 phase 7
    coreb: RequestPhaseMachine 1319
    coreb: RequestPhaseMachine 1329 size 4 addr 4993fa0 buf ff407f6c
    coreb: RequestPhaseMachine 1347
    coreb: pMsgQueue pri 0 dst 101 src 65536
    EnqueueRemote 600 queue c8080000 sent 133 recv 118
    EnqueueRemote 602 queue c8080000 sent 134 recv 127
    EnqueueRemote 624
    EnqueueRemote 651
    EnqueueRemote 666 result 1
    coreb: RequestPhaseMachine 1358 status 1
    coreb: RequestPhaseMachine 1196 phase 8
    coreb: RequestPhaseMachine 1364
    coreb: mcapi_msg_recv 2603
    coreb: dsp_command_loop 297 cmd 4
    coreb: RequestPhaseMachine 1196 phase 2
    coreb: RequestPhaseMachine 1196 phase 3
    coreb: pMsgQueue pri 0 dst 2 src 65538
    EnqueueRemote 600 queue c8080000 sent 147 recv 132
    EnqueueRemote 602 queue c8080000 sent 148 recv 141
    MCAPI_DEBUG:domain 0 node 0 endpoint 2EnqueueRemote 624

    MCAPI_DEBUG:index 0 2
    MCAPI_DEBUG:index 101 2
    MCAPI_DEBUG:index 2 2
    MCAPI_DEBUG:mcapi_trans_valid_endpoint endpoint=0x2 (database indices: n=0,e=2) rc=1
    MCAPI_DEBUG:domain 0 node 0 endpoint 2
    MCAPI_DEBUG:index 0 2
    MCAPI_DEBUG:index 101 2
    MCAPI_DEBUG:index 2 2
    session_idx 2
    EnqueueRemote 651
    EnqueueRemote 666 result 1
    coreb: RequestPhaseMachine 1196 phase 4
    _adi_mcapi_dequeueLocal 724 wait request ff407eb4 endpoint ff5011c4
    _adi_mcapi_dequeueLocal 725 buf c8089510
    iccInterruptHandler 1137
    coreb: processQueueIn 807 queue c8080104 pri 0 requestff502cd4
    coreb: processQueueIn 837 dstep 2 srcep 2 type 4000001
    coreb: processQueueIn 838 ff5011c4
    coreb: processQueueIn 1027
    coreb: processQueueIn 1037
    coreb: EnqueueLocal 555
    coreb: EnqueueLocal 585 endpoint ff5011c4
    coreb: EnqueueLocal 596 pwait  ff407eb4
    coreb: processQueueIn 1051
    coreb: processQueueIn 1057
    coreb: processQueueOut 1069
    coreb: processQueueIn 807 queue c808030c pri 1 requestff502d34
    coreb: processQueueIn 1051
    coreb: processQueueIn 1057
    coreb: processQueueOut 1069
    coreb: RequestPhaseMachine 1196 phase 5
    receive_dsp_cmd 146 buf ff407f6c size 4
    coreb: mcapi_msg_recv 2600 request ff407ec0 dsp 65536 buf ff407f6c
    coreb: RequestPhaseMachine 1196 phase 6
    coreb: RequestPhaseMachine 1298 request ff407ec0 buf ff407f6c
    _adi_mcapi_dequeueLocal 724 wait request ff407ec0 endpoint ff5010f4
    _adi_mcapi_dequeueLocal 725 buf ff407f6c
    coreb: RequestPhaseMachine 1311
    MCAPI_DEBUG:index 2, se 2, sn 1
    node=1, port=2
    DSP data after precessing
    232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364651
    MCAPI_DEBUG:index 0 101
    MCAPI_DEBUG:index 101 101
    MCAPI_DEBUG:mcapi_trans_valid_endpoint endpoint=0x65 (database indices: n=0,e=101) rc=1
    MCAPI_DEBUG:domain 0 node 0 endpoint 101
    MCAPI_DEBUG:index 0 101
    MCAPI_DEBUG:index 101 101
    MCAPI_DEBUG:domain 0 node 0 endpoint 101
    MCAPI_DEBUG:index 0 101
    MCAPI_DEBUG:index 101 101
    mcapi_finalize 322
    CoreA Test PASSED

  • Sure it's totally fine to implement information sharing mechanism with shared memory between cores as needed, sometimes it can be convenient.

  • Will, in my case I will not have concurrency problems because only core 0 will begin transmission. Core 1 will set memory fields and set ready flag. Core 0 just write start flag, there are no variables which can be write at the same time by both cores.


    And the main advantage - I can do it in my Qt app without another mcapi provider.


    Aaronwu, I tried dxe from testsuites and I get correct results as you write. But dxe compiled by myself not work. I think there are problem in project configuration in Cross Core Studio.

  • Hi Aaronwu,

    I did add those lines, so I don't think it is that.  To be honest, I have given up on ucLinux on BF609, there is so much that is too old, and does not work, I could not use it as a basis of a product as it stands.  Thanks for your help but I will not be progressing this work further.

  • Hi Will, maybe you want to double check if the following is added before building, as described in the document test_mcapi [Analog Devices Open Source| Mixed-signal and Digital Signal Processing ICs]?

    dd sdram cplb entries to startup_ldr/app_cplbtab.c 

         /* SDRAM Memory */

    {0x0,       (ENUM_DCPLB_DATA_64MB | CPLB_DNOCACHE)},

    {0x4000000, (ENUM_DCPLB_DATA_64MB | CPLB_DNOCACHE)},