'waiting for hw sem' loop

Showing results for 
Search instead for 
Did you mean: 

'waiting for hw sem' loop

Contributor I

I have been working on some ipc examples to demonstrate data flow between DSPs and PPC on the B4860 eval board. The examples worked with data transferring between the PPC and StarCore. Then I started working on the ipc_integration example provided by Freescale to give our team a more simple example to work from, but a little while after I started, the hardware semaphore that syncs the PPC and StarCore to allow messages to be sent and received no longer worked: I just got "sleep 1, waiting for hw sem", repeated (while using /ipc/dsp_bt to load the DSPs with the binaries compiled by CodeWarrior). I also tried to revert to my old examples, which previously worked, and they had the same response. IPC just stopped working. I then looked to CodeWarrior to see what was happening, and when I entered the Debug configuration, the instruction pointer was at 0x0, and I could only see DEAD BEEF in memory. Any thoughts as to why this is happening and what I can do about it?

Labels (1)
0 Kudos
2 Replies

NXP TechSupport
NXP TechSupport

Hello Chandra Mills,

According to your description, it seems that DSP side doesn't boot up correctly. Probably the problem is related with ipc tool or DSP boot code. Please refer to the following procedure to setup IPC channel to load DSP boot code.

System configuration to build images:

1. Disable the Kernel dma engine

Device Drivers  --->
 [ ] DMA Engine support  --->

2. Enable Userspace's I/O driver

Device Drivers  --->
 <*> Userspace I/O drivers  --->
  <*> Freescale DMA support

3. Build below packages into rootfs

NOTE: meta-fsl-networking/images/fsl-image-core.bb


    ipc-ust \
    ipc-modules-single \
    ipc-modules-multi \

Actions on the target board.

1. Append bootargs with 'default_hugepagesz=256m hugepagesz=256m hugepages=1' 

2. Add  new environemnet varible by

=> setenv bootm_size 0x70000000

3. Insmod required kernel moduls:

# insmod /usr/driver/IPC/single_rat/hetmgr.ko
# insmod /usr/driver/IPC/single_rat/shm.ko
# insmod /usr/driver/IPC/single_rat/l1d.ko

4. Create device nodes for above kernel modules:

# mknod /dev/het_mgr c 251 0
# mknod /dev/fsl_shm c 250 0
# mknod /dev/fsl_l1d c 249 0

5. Set shmmax value:

# echo 0x10000000 > /proc/sys/kernel/shmmax

6. Copy DSP binaries to board:

7. Load SDOS images to DSP cores:

# ./dsp_bt -h 1 -c 0 -i c0.bin -c 1 -i c1.bin

8. Start ipc:

# ./ipc_test -r 0 -i 10

(10) Msg Sent on ch#5
(10) Msg Recieved on ch#4
(10) Msg Sent on ch#2
(10) Msg Recieved on ch#3
Success on ch#2-ch#3 pair
Success on ch#4-ch#5 pair





0 Kudos

Contributor I

Thanks for your reply.

Is there any guide to converting code from version 10.8.3 to 10.9?

0 Kudos