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.