PXA270 BSP

Hi,

I am trying to get the DBPXA270DP BSP running on my PXA270-based
device.

I am using a custom bootloader to load the image and so far it is
running through the startup code okay, but halts when it goes to
start procnto.
I think it could be because of the bootloader I am using, but am
unsure why it would make the startup code run successfully without
getting to the kernel. I am using QNX 6.3.

My debug output is as follows:

Operating System loaded successfully!Running image from RAM
Dcache: 1024x32 WB
Icache: 1024x32
pxa270 rev 7 149MHz
Header size=0x0000009c, Total Size=0x000005d8, #Cpu=1, Type=4
Section:system_private offset:0x000001d8 size:0x00000068
syspage ptr user:fc404000 kernel:fc404000
cpupage ptr user:fc404bc0 kernel:fc404bc0 spacing:32
kdebug info:00000000 callback:00000000
boot pgms: idx=0
0) base paddr:a020c000 start addr:fe0203a4
ramsize:00000000 pagesize:00001000
Section:qtime offset:0x00000148 size:0x00000048
boot:00000000 CPS:0000000000319750 rate/scale:307692307/-15 intr:26
Section:callout offset:0x000000a0 size:0x00000048
reboot:00000000 power:fc404a24
timer_load:fc404a3c reload:fc404a74 value:fc404abc
0) display:fc404ae4 poll:fc404b08 break:fc404b2c

  1. display:00000000 poll:00000000 break:00000000
    Section:cpuinfo offset:0x00000190 size:0x00000020
  2. cpu:69054117 flags:40000001 speed:00000095 cache i/d:1/0 name:62
    Section:cacheattr offset:0x00000598 size:0x00000040
  3. flags:32 size:0020 #lines:0400 control:fc404644 next:255
  4. flags:11 size:0020 #lines:0400 control:fc40469c next:255
    Section:meminfo offset:0x000005d8 size:0x00000000
    Section:asinfo offset:0x00000318 size:0x000001c0
  5. 0000000000000000-00000000ffffffff o:ffff a:0010 p:100
    c:00000000 n:21
  6. 0000000000000000-0000000004000000 o:0000 a:0005 p:100
    c:00000000 n:28
  7. 0000000004000000-0000000008000000 o:0000 a:0005 p:100
    c:00000000 n:28
  8. 0000000040000000-0000000008000000 o:0000 a:0013 p:100
    c:00000000 n:32
  9. 0000000040000000-0000000008000000 o:0060 a:0003 p:100
    c:00000000 n:39
    00a0) 0000000008000000-0000000008000100 o:0000 a:0013 p:100
    c:00000000 n:32
    00c0) 0000000008000000-0000000008000100 o:00a0 a:0003 p:100
    c:00000000 n:39
    00e0) 00000000a0000000-00000000a3ffffff o:0000 a:0017 p:100
    c:00000000 n:42
  10. 00000000a020b110-00000000a0323a1b o:0000 a:0005 p:100
    c:00000000 n:69
  11. 00000000a0200008-00000000a020b10f o:0000 a:0007 p:100
    c:00000000 n:77
  12. 00000000a020b110-00000000a0323a1b o:0000 a:0007 p:100
    c:00000000 n:85
  13. 00000000a0000000-00000000a0007fff o:00e0 a:0007 p:100
    c:00000000 n:93
  14. 00000000a0014be0-00000000a0200007 o:00e0 a:0007 p:100
    c:00000000 n:93
    01a0) 00000000a0323a1c-00000000a3ffffff o:00e0 a:0007 p:100
    c:00000000 n:93
    Section:hwinfo offset:0x000002d0 size:0x00000048
  15. size:3 tag:3 isize:3, iname:0, owner:65535, kids:1
  16. size:3 tag:17 isize:3, iname:9, owner:0, kids:1
  17. size:3 tag:3 isize:3, iname:46, owner:12, kids:1
  18. size:4 tag:55 isize:4, iname:50, owner:24, kids:0
    00 00 00 00
    Section:typed_strings offset:0x00000240 size:0x00000028
    off:0 type:5 string:‘DBPXA270DP’
    off:16 type:2 string:‘localhost’
    Section:strings offset:0x00000268 size:0x00000068
    [0]‘hw’ [3]‘Group’ [9]‘unknown’ [17]‘Bus’ [21]‘memory’ [28]‘rom’
    [32]‘device’
    [39]‘io’ [42]‘ram’ [46]‘rtc’ [50]‘NONE’ [55]‘Device’ [62]‘pxa270’
    [69]‘imagefs’ [77]‘startup’ [85]‘bootram’ [93]‘sysram’
    Section:intrinfo offset:0x000004d8 size:0x000000c0
  19. vector_base:00000000, #vectors:34, cascade_vector:7fffffff
    cpu_intr_base:00000000, cpu_intr_stride:0, flags:0000
    id => flags:8000, size:0074, rtn:fc4046d0
    eoi => flags:9000, size:0048, rtn:fc404744
    mask:fc40478c, unmask:fc4047d4, config:00000000
  20. vector_base:00000100, #vectors:119, cascade_vector:0000000a
    cpu_intr_base:00000000, cpu_intr_stride:0, flags:0000
    id => flags:8000, size:0094, rtn:fc404854
    eoi => flags:9000, size:0000, rtn:fc4048e8
    mask:fc4048e8, unmask:fc4048f0, config:00000000
  21. vector_base:00000200, #vectors:20, cascade_vector:00000008
    cpu_intr_base:00000000, cpu_intr_stride:0, flags:0000
    id => flags:0000, size:0048, rtn:fc404958
    eoi => flags:1000, size:002c, rtn:fc4049a0
    mask:fc4049cc, unmask:fc4049f8, config:00000000
    Section:smp offset:0x000005d8 size:0x00000000
    Section:pminfo offset:0x000005d8 size:0x00000000
    Section:mdriver offset:0x000005d8 size:0x00000000
    Section:boxinfo offset:0x000001b0 size:0x00000028
    hw_flags:00000000
    Section:cpu offset:0x00000128 size:0x00000020
    page_flush:fc404600 page_flush_deferred:fc404640
    upte_ro:0000002f upte_rw:0000007f
    kpte_ro:0000000f kpte_rw:0000005f
    mask_nc:0000004c

System page at phys:a0014000 user:fc404000 kern:fc404000
Starting next program at vfe0203a4



My build file contains the following:

###########################################################################

START OF BUILD SCRIPT

###########################################################################


[virtual=armle,raw +compress] .bootstrap = {
startup-dbpxa270dp -vvvvv

#######################################################################

PATH set here is the safe path for executables.

LD_LIBRARY_PATH set here is the safe path for libraries.

i.e. These are the paths searched by setuid/setgid

binaries.

(confstr(_CS_PATH…) and confstr(_CS_LIBPATH…))

#######################################################################
PATH=:/proc/boot:/bin:/usr/bin
LD_LIBRARY_PATH=:/proc/boot:/lib:/usr/lib:/lib/dll procnto -vvvvv
}

[+script] .script = {
procmgr_symlink …/…/proc/boot/libc.so.2 /usr/lib/ldqnx.so.2

display_msg Welcome to QNX Neutrino 6.3 on the Intel DBPXA270
Development Platform

#######################################################################

SERIAL driver

This board uses FFUART as /dev/ser1, BTUART as /dev/ser2

#######################################################################
devc-serpxa250 -e 0x40100000,22 0x40200000,21
waitfor /dev/ser1
reopen /dev/ser1

slogger
pipe



Any help would be greatly appreciated.

Thanks,
Will.

For anyone interested, the startup code, after initialising the MMU,
wasn’t waiting until the MMU was ready before jumping to the virtual
procnto address. This was causing it to hang.

Will.