Dear Everyone.
I’m trying to port QNX into my own SoC platform.
My own SoC platform is based ARM926EJ-S 32-bit RISC Core which operates
141MHz and has 32MB SDRAM(base: 0x10000000) and 1MB NOR Flash.
The tool is QNX Momentics 6.3.2 non-commercial version.
I was modifying IPL, startup, and serial device driver of the legacy Samsung
S3C2410 BSP which had developed by RT Solution ago.
I met the shutdown message with SIGBUS.
\
Shutdown[0,0] S/C/F=10/1/5 C/D=fe006950/% state(c0)= now lock
QNX Version 6.3.2 Release 2006/03/16-14:15:43EST
[0]PID-TID=1-1? P/T FL=00019001/09000000
armle context[fc43ff50]:
0000: fc404000 00000011 fe057060 fc404400 fc441140 fc441140 e3c0301f
fc439630
0020: 00000000 00000000 00000011 fc43ffa4 fc408000 fc43ff94 fe02dfe0
fc404624
0040: 600000d3
instruction[fc404624]:
d4 70 96 e5 40 70 c7 e3 d4 70 86 e5 01 20 a0 e3 12 24 a0 e1 08 20 8c e5 00
00
stack[fc43ff94]:
0000: fc43b6a8 fc43ffd8 fc43ffa8 fe02dc68 fe02df64 00000000 fe02b384
00000011
0020: fe05716c 00000001 fc439630 00000000 00000000 00000000 fc43ffec
fc43ffdc
0040: fe02bbcc fe02daf0 fc439630 fc43fffc fc43fff0 fe03e468 fe02bb7c
fc440f6c
0060: fc440000 fe0293e0 fe03e450 f7ffffff bdfffffe ffffdfff ffbfefdf
fffbffff
S/C/F => SIGBUS/BUS_ADRALN/FLTACCESS
C/D => Location of the kernel’s code and data
state => The state of the kernel
now – in the kernel
lock – nonpreemptible
exit – leaving kernel
specret – special return processing
any number – the interrupt nesting level
[x]PID-TID=y-z
On CPU x(think SMP), process y was running thread z when the
crash occurred
P/T:00019001 => 00010000 + => _NTO_PF_NOCLDSTOP
00000001 + => _NTO_PF_SLEADER
00008000 + => _NTO_PF_RING0
00001000 => _NTO_PF_CHECK_INTR
FL:09000000=> 08000000 + => _NTO_TF_NOMULTISIG
01000000 => _NTO_TF_ALIGN_FAULT
PF => The process flags for the ASPACE PID
context => The register set
instruction => fc404624 The instruction on which the error
occurred
stack The contents of the stack
Thus, I debugged my BSP by TRACE32 ARM In-Circuit Debugger.
Attached 2-1.PNG image file is my debugging information.
In pa_quantum_to_paddr, during “ldr r3,[r3,+r1, lsl #0x2]” execution at the
address 0xFE01CB08,
when r1 was 0x2, operation was good but when r1 was 0xFFDF, exception
happened.
Because r3 had abnormal address at that time, memory access violation
happened.
Pa_quantum_to_paddr is the function of the kernel and thus I have problems
to debug it.
What source code out of the startup source code or serial device driver
source code causes this problem ?
After meeting shutdown message, I saw where PC is located.
You can look at this at the attached file “trace32.0219.PNG”.
In addition, You can see QNX’s procnto is loaded and running.
Best regards.
Pusik.