LX2160A multi-core configuration example for Codewarrior

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

LX2160A multi-core configuration example for Codewarrior

2,291件の閲覧回数
user12
Contributor I

Hello,

I have been trying to run a bare-metal multi-core Hello World on top of the LX2160A using Codewarrior for QorIQ LS series, ARMv8 ISA, version 11.5.5.

I'm able to run the test in a single core configuration and also in cores 0 and 1 in a two-core configuration, but I have been unable to extend this to the rest of the cores. I have used the Hello World example provided by Codewarrior in the following directory:

ARMv8/CodeWarrior_Examples/HelloWorld_C_AMP_Bare/

I have unsuccessfully tried extending the example to cores>1. I'm not able to get past the memset call zeroing the bss segment. The call stack is as follows:

defaultHandler() at exceptions.c:83

_handleISR() at exceptions.c:78

currELSyncSPx() at exceptions.c:45

LS3_vectors() at exceptions.S:56

This happens in every core>1, while cores 0 and 1 work as expected. The exception seems caused by the memset function call to zero the bss segment.

To configure cores>1 I have followed the readme/readme.txt file included in the example. As explained there I have modified the linker script and modified the debug configuration.

I have tried reducing the __MEMORY_SIZE in the linker script from 0x1000000 to 0x800000 for each core to try to check if the issue could be an access out of memory bounds, but the problem persists.

I attach two screenshots showing how cores 0 and 1 are paused at main() as expected, while cores 2 and 3 are stuck in the exception loop.

Any pointers on what could be wrong?

Thank you, regards.

0 件の賞賛
1 返信

2,234件の閲覧回数
yipingwang
NXP TechSupport
NXP TechSupport

In the Target Connections panel, please duplicate LX2160A_RDB to generate LX2160A_RDB(2), in this Connection Configuration, please modify Target Initialization File as the following.

CORE_CONTEXT = ":ccs:LX2160A:CortexA72#2"
SAP_CORE_CONTEXT = ":ccs:LX2160A:SAP#2"

###################################################################
# This is the actual function called by debugger, flash, etc.
###################################################################
def run_init_file():
Prepare_Env()

# Reset()

Init_TZASC()

# if not USE_SAFE_RCW:
# DDR_freq = Detect_DDR_Freq()

# if Init_DDR_PHY(DDR_freq):
# Init_DDRC(DDR_freq)

Init_CCN()
# Init_FSPI()
# Config_Flash_Devices()

Config_L2_RAM_Latency()

 

Please configure HelloWorld_AMP_Core2 launch configuration as the following.

Debugger panel please check "Execute target initialization file" and "Use launch specific connection", please specify the Configuration as LX2160A_RDB(2), Core as "CortexA72#2".

In Startup panel, please uncheck "Reset and Delay(seconds):"

 

Please configure HelloWorld_AMP_Core3 launch configuration as the following.

In Debugger panel, uncheck "Execute target initialization file", Configuration as "LX2160A_RDB(2)"

In Startup panel, please uncheck "Reset and Delay(seconds):"

0 件の賞賛