Hello all,
I'm trying to run the multicore test from the platform SDK v1.1 on my SABER-SDB rev A (i.MX6Q).
I built the bin file with "./tools/build_sdk -t mx6dq -b smart_device -board_rev a". And downloaded "./output/mx6dq/sdk_unit_test/smart_device_rev_a/sdk_unit_test_ALL.bin" to an SD card with cf_imager.
"cfimager -raw -f ./sdk_unit_test_ALL.bin -d i -a"
The board boots perfectly, and other tests works fine. But when it comes to the multicore test, the program stuck after CPU0 sent SGI to CPU1.
Select test to run:
mc
Running the GIC Multicore Test
Starting and sending SGIs to secondary CPUs for "hello world"
secondary main cpu: 1
secondary main cpu: 2
secondary main cpu: 3
Hello from CPU 0
"secondary main cpu: x" indicates that all CPUs are on, but it seems CPU1 dosen't receive any SGI signal or maybe the gic isn't initialized properly on CPU1. I didn't modify any code of the platform SDK, and i have re-downloaded the SDK and tried again, but it was still not working.
Has anyone runs the multicore test successfully? I need some hints.
Thanks
Dean Chu
解決済! 解決策の投稿を見る。
Hi Dean Chu,
Please apply the following patch, I have verified on imx6dq sd board.
Patch:
--- a/sdk/drivers/cpu_utility/test/multicore_test.c
+++ b/sdk/drivers/cpu_utility/test/multicore_test.c
@@ -128,6 +128,7 @@ void multicore_entry(void * arg)
else
{
printf("secondary main cpu: %d\n", cpu_id);
+ arm_set_interrupt_state(true);
if (cpu_id == (cpuCount - 1))
{
Test Result on imx6dq:
**************************************************************************
Platform SDK (1.1) for MX6DQ TO1.2 Smart Device (SD) rev. C
Build: Dec 12 2013, 05:10:10
Copyright (c) 2012-2013 Freescale Semiconductor, Inc. All rights reserved.
**************************************************************************
========== Clock frequencies ===========
CPU: 792000 kHz
DDR: 528000 kHz
IPG: 66000 kHz
Debug UART: 80000000 Hz
========================================
SDK Unit Tests
--------------
e - epit test
g - gpt test
i - i2c test
w - pwm test
s - sdma test
r - snvs rtc test
v - snvs srtc test
t - tempmon test
u - uart test
d - usdhc test
c - gic test
m - microseconds timer test
wa - watchdog test
o - ocotp test
wp - cpu workpoint test
h - hdmi test
ip - ipu test
mc - multicore test
sa - sata test
a - audio test
ca - camera test
us - usb test
n - spi nor test
pc - pcie test
en - enet test
k - keypad test
x - accelerometer test
q - Exit menu.
Select test to run:
mc
Running the GIC Multicore Test
Starting and sending SGIs to secondary CPUs for "hello world"
secondary main cpu: 1
secondary main cpu: 2
secondary main cpu: 3
Hello from CPU 0
Hello from CPU 1
Hello from CPU 2
Hello from CPU 3
End of test
Hi Dean Chu,
Please apply the following patch, I have verified on imx6dq sd board.
Patch:
--- a/sdk/drivers/cpu_utility/test/multicore_test.c
+++ b/sdk/drivers/cpu_utility/test/multicore_test.c
@@ -128,6 +128,7 @@ void multicore_entry(void * arg)
else
{
printf("secondary main cpu: %d\n", cpu_id);
+ arm_set_interrupt_state(true);
if (cpu_id == (cpuCount - 1))
{
Test Result on imx6dq:
**************************************************************************
Platform SDK (1.1) for MX6DQ TO1.2 Smart Device (SD) rev. C
Build: Dec 12 2013, 05:10:10
Copyright (c) 2012-2013 Freescale Semiconductor, Inc. All rights reserved.
**************************************************************************
========== Clock frequencies ===========
CPU: 792000 kHz
DDR: 528000 kHz
IPG: 66000 kHz
Debug UART: 80000000 Hz
========================================
SDK Unit Tests
--------------
e - epit test
g - gpt test
i - i2c test
w - pwm test
s - sdma test
r - snvs rtc test
v - snvs srtc test
t - tempmon test
u - uart test
d - usdhc test
c - gic test
m - microseconds timer test
wa - watchdog test
o - ocotp test
wp - cpu workpoint test
h - hdmi test
ip - ipu test
mc - multicore test
sa - sata test
a - audio test
ca - camera test
us - usb test
n - spi nor test
pc - pcie test
en - enet test
k - keypad test
x - accelerometer test
q - Exit menu.
Select test to run:
mc
Running the GIC Multicore Test
Starting and sending SGIs to secondary CPUs for "hello world"
secondary main cpu: 1
secondary main cpu: 2
secondary main cpu: 3
Hello from CPU 0
Hello from CPU 1
Hello from CPU 2
Hello from CPU 3
End of test
Thanks! It works!
We are working to replicate your issue, we get back as soon as we can.