devf-generic problem

I’m using the MPC8540ADS bsp on a custom board.
We tested the hardware and we can access the flash, with the JTAG and
the boot loader (U-boot). The boot loader as a CFI flash driver which
work perfectly.
QNX is started from flash by the boot loader and works good, I’m using
QNX 6.3.0 SP1.
I’ve got a problem using the devf-generic with flash memory (Spansion
29GL256M).
Physical configuration is: 2 chips, CPU bus width 32 bits.

I tried the commands bellow. Did i miss something obvious or did I
choose the wrong flash chip, because CFI_MirrorBit_Workaround doesn’t
sound good ?

devf-generic -s0xfc000000,8M,128k,4,2 -vvvvv:

calloc f3s_start, 181: 0x80
calloc f3s_start, 211: 0x40
calloc f3s_start, 235: 0x30
calloc f3s_start, 257: 0x48
calloc f3s_start, 271: 0x98
devf: fs0 socket generic
QRY string = QRY
dbase->geo_num = 1
dbase->geo_vect[0].unit_pow2 = 17
dbase->geo_vect[0].unit_num = 512
devf: chip total = 1
devf: bus width = 4
devf: chip interleave = 2
calloc f3s_array_alloc, 21: 0x18
calloc f3s_array_alloc, 22: 0x800
calloc f3s_array_alloc, 23: 0x400
calloc f3s_array_alloc, 24: 0x200
calloc f3s_array_alloc, 25: 0x200
calloc f3s_array_alloc, 26: 0x800
malloc f3s_array_alloc, 27: 0x4800
devf: fs0 array CFI_MirrorBit_Workaround U: 200 S: 020000
malloc f3s_array_attach, 135: 0x10
calloc f3s_array_attach, 139: 0x80
calloc f3s_array_attach, 140: 0x80
calloc f3s_array_attach, 143: 0x88
calloc f3s_array_attach, 146: 0x30
calloc f3s_array_attach, 147: 0x30
devf: fs0p0 raw U: 00
malloc f3s_array_attach, 135: 0x10
calloc f3s_array_attach, 139: 0x80
calloc f3s_array_attach, 140: 0x80
calloc f3s_array_attach, 143: 0x88
calloc f3s_array_attach, 146: 0x30
calloc f3s_array_attach, 147: 0x30
devf: fs0p1 raw U: 00
malloc f3s_array_attach, 135: 0x10
calloc f3s_array_attach, 139: 0x80
calloc f3s_array_attach, 140: 0x80
calloc f3s_array_attach, 143: 0x88
calloc f3s_array_attach, 146: 0x30
calloc f3s_array_attach, 147: 0x30
devf: fs0p2 raw U: 00
malloc f3s_array_attach, 135: 0x10
calloc f3s_array_attach, 139: 0x80
calloc f3s_array_attach, 140: 0x80
calloc f3s_array_attach, 143: 0x88

continuing forever

======================== OR ========================

#devf-generic -s0xfc000000,8M -vvvvv:
calloc f3s_start, 181: 0x80
calloc f3s_start, 211: 0x40
calloc f3s_start, 235: 0x30
calloc f3s_start, 257: 0x48
calloc f3s_start, 271: 0x98
devf: fs0 socket generic

trying device width = 4

devf: bus width = 8
devf: trying chip inter = 2
devf: bus width = 4
devf: trying chip inter = 1

trying device width = 2

devf: bus width = 8
devf: trying chip inter = 4
devf: bus width = 4
devf: trying chip inter = 2
devf: bus width = 2
devf: trying chip inter = 1

trying device width = 1

devf: bus width = 8
devf: trying chip inter = 8
devf: bus width = 4
devf: trying chip inter = 4
devf: bus width = 2
devf: trying chip inter = 2
devf: bus width = 1
devf: trying chip inter = 1

trying device width = 4

devf: bus width = 8
devf: trying chip inter = 2
devf: bus width = 4
devf: trying chip inter = 1

trying device width = 2

devf: bus width = 8
devf: trying chip inter = 4
devf: bus width = 4
devf: trying chip inter = 2
devf: bus width = 2
devf: trying chip inter = 1

trying device width = 1

devf: bus width = 8
devf: trying chip inter = 8
devf: bus width = 4
devf: trying chip inter = 4
devf: bus width = 2
devf: trying chip inter = 2
devf: bus width = 1
devf: trying chip inter = 1

trying device width = 4

devf: bus width = 8
devf: trying chip inter = 2
devf: bus width = 4
devf: trying chip inter = 1

trying device width = 2

devf: bus width = 8
devf: trying chip inter = 4
devf: bus width = 4
devf: trying chip inter = 2
devf: bus width = 2
devf: trying chip inter = 1

trying device width = 1

devf: bus width = 8
devf: trying chip inter = 8
devf: bus width = 4
devf: trying chip inter = 4
devf: bus width = 2
devf: trying chip inter = 2
devf: bus width = 1
devf: trying chip inter = 1

trying device width = 4

devf: bus width = 8
devf: trying chip inter = 2
devf: bus width = 4
devf: trying chip inter = 1

trying device width = 2

devf: bus width = 8
devf: trying chip inter = 4
devf: bus width = 4
devf: trying chip inter = 2
QRY string = QRY
dbase->geo_num = 1
dbase->geo_vect[0].unit_pow2 = 17
dbase->geo_vect[0].unit_num = 512
devf: chip total = 1
devf: bus width = 4
devf: chip interleave = 2
calloc f3s_array_alloc, 21: 0x18
calloc f3s_array_alloc, 22: 0x800
calloc f3s_array_alloc, 23: 0x400
calloc f3s_array_alloc, 24: 0x200
calloc f3s_array_alloc, 25: 0x200
calloc f3s_array_alloc, 26: 0x800
malloc f3s_array_alloc, 27: 0x4800
devf: fs0 array CFI_MirrorBit_Workaround U: 200 S: 020000
malloc f3s_array_attach, 135: 0x10
calloc f3s_array_attach, 139: 0x80
calloc f3s_array_attach, 140: 0x80
calloc f3s_array_attach, 143: 0x88
calloc f3s_array_attach, 146: 0x30
calloc f3s_array_attach, 147: 0x30
devf: fs0p0 raw U: 00
malloc f3s_array_attach, 135: 0x10
calloc f3s_array_attach, 139: 0x80
calloc f3s_array_attach, 140: 0x80
calloc f3s_array_attach, 143: 0x88

continuing forever

You have 64M byte flash and tell the driver you only have 8M?



Armand Ciejak wrote:

I’m using the MPC8540ADS bsp on a custom board.
We tested the hardware and we can access the flash, with the JTAG and
the boot loader (U-boot). The boot loader as a CFI flash driver which
work perfectly.
QNX is started from flash by the boot loader and works good, I’m using
QNX 6.3.0 SP1.
I’ve got a problem using the devf-generic with flash memory (Spansion
29GL256M).
Physical configuration is: 2 chips, CPU bus width 32 bits.

I tried the commands bellow. Did i miss something obvious or did I
choose the wrong flash chip, because CFI_MirrorBit_Workaround doesn’t
sound good ?

devf-generic -s0xfc000000,8M,128k,4,2 -vvvvv:

calloc f3s_start, 181: 0x80
calloc f3s_start, 211: 0x40
calloc f3s_start, 235: 0x30
calloc f3s_start, 257: 0x48
calloc f3s_start, 271: 0x98
devf: fs0 socket generic
QRY string = QRY
dbase->geo_num = 1
dbase->geo_vect[0].unit_pow2 = 17
dbase->geo_vect[0].unit_num = 512
devf: chip total = 1
devf: bus width = 4
devf: chip interleave = 2
calloc f3s_array_alloc, 21: 0x18
calloc f3s_array_alloc, 22: 0x800
calloc f3s_array_alloc, 23: 0x400
calloc f3s_array_alloc, 24: 0x200
calloc f3s_array_alloc, 25: 0x200
calloc f3s_array_alloc, 26: 0x800
malloc f3s_array_alloc, 27: 0x4800
devf: fs0 array CFI_MirrorBit_Workaround U: 200 S: 020000
malloc f3s_array_attach, 135: 0x10
calloc f3s_array_attach, 139: 0x80
calloc f3s_array_attach, 140: 0x80
calloc f3s_array_attach, 143: 0x88
calloc f3s_array_attach, 146: 0x30
calloc f3s_array_attach, 147: 0x30
devf: fs0p0 raw U: 00
malloc f3s_array_attach, 135: 0x10
calloc f3s_array_attach, 139: 0x80
calloc f3s_array_attach, 140: 0x80
calloc f3s_array_attach, 143: 0x88
calloc f3s_array_attach, 146: 0x30
calloc f3s_array_attach, 147: 0x30
devf: fs0p1 raw U: 00
malloc f3s_array_attach, 135: 0x10
calloc f3s_array_attach, 139: 0x80
calloc f3s_array_attach, 140: 0x80
calloc f3s_array_attach, 143: 0x88
calloc f3s_array_attach, 146: 0x30
calloc f3s_array_attach, 147: 0x30
devf: fs0p2 raw U: 00
malloc f3s_array_attach, 135: 0x10
calloc f3s_array_attach, 139: 0x80
calloc f3s_array_attach, 140: 0x80
calloc f3s_array_attach, 143: 0x88

continuing forever

======================== OR ========================

#devf-generic -s0xfc000000,8M -vvvvv:
calloc f3s_start, 181: 0x80
calloc f3s_start, 211: 0x40
calloc f3s_start, 235: 0x30
calloc f3s_start, 257: 0x48
calloc f3s_start, 271: 0x98
devf: fs0 socket generic

trying device width = 4

devf: bus width = 8
devf: trying chip inter = 2
devf: bus width = 4
devf: trying chip inter = 1

trying device width = 2

devf: bus width = 8
devf: trying chip inter = 4
devf: bus width = 4
devf: trying chip inter = 2
devf: bus width = 2
devf: trying chip inter = 1

trying device width = 1

devf: bus width = 8
devf: trying chip inter = 8
devf: bus width = 4
devf: trying chip inter = 4
devf: bus width = 2
devf: trying chip inter = 2
devf: bus width = 1
devf: trying chip inter = 1

trying device width = 4

devf: bus width = 8
devf: trying chip inter = 2
devf: bus width = 4
devf: trying chip inter = 1

trying device width = 2

devf: bus width = 8
devf: trying chip inter = 4
devf: bus width = 4
devf: trying chip inter = 2
devf: bus width = 2
devf: trying chip inter = 1

trying device width = 1

devf: bus width = 8
devf: trying chip inter = 8
devf: bus width = 4
devf: trying chip inter = 4
devf: bus width = 2
devf: trying chip inter = 2
devf: bus width = 1
devf: trying chip inter = 1

trying device width = 4

devf: bus width = 8
devf: trying chip inter = 2
devf: bus width = 4
devf: trying chip inter = 1

trying device width = 2

devf: bus width = 8
devf: trying chip inter = 4
devf: bus width = 4
devf: trying chip inter = 2
devf: bus width = 2
devf: trying chip inter = 1

trying device width = 1

devf: bus width = 8
devf: trying chip inter = 8
devf: bus width = 4
devf: trying chip inter = 4
devf: bus width = 2
devf: trying chip inter = 2
devf: bus width = 1
devf: trying chip inter = 1

trying device width = 4

devf: bus width = 8
devf: trying chip inter = 2
devf: bus width = 4
devf: trying chip inter = 1

trying device width = 2

devf: bus width = 8
devf: trying chip inter = 4
devf: bus width = 4
devf: trying chip inter = 2
QRY string = QRY
dbase->geo_num = 1
dbase->geo_vect[0].unit_pow2 = 17
dbase->geo_vect[0].unit_num = 512
devf: chip total = 1
devf: bus width = 4
devf: chip interleave = 2
calloc f3s_array_alloc, 21: 0x18
calloc f3s_array_alloc, 22: 0x800
calloc f3s_array_alloc, 23: 0x400
calloc f3s_array_alloc, 24: 0x200
calloc f3s_array_alloc, 25: 0x200
calloc f3s_array_alloc, 26: 0x800
malloc f3s_array_alloc, 27: 0x4800
devf: fs0 array CFI_MirrorBit_Workaround U: 200 S: 020000
malloc f3s_array_attach, 135: 0x10
calloc f3s_array_attach, 139: 0x80
calloc f3s_array_attach, 140: 0x80
calloc f3s_array_attach, 143: 0x88
calloc f3s_array_attach, 146: 0x30
calloc f3s_array_attach, 147: 0x30
devf: fs0p0 raw U: 00
malloc f3s_array_attach, 135: 0x10
calloc f3s_array_attach, 139: 0x80
calloc f3s_array_attach, 140: 0x80
calloc f3s_array_attach, 143: 0x88

continuing forever

That was obviously the problem, thanks!

PS: Not a good idea to start something new on friday afternoon :slight_smile:

Armand

Wensheng Zheng wrote:

You have 64M byte flash and tell the driver you only have 8M?



Armand Ciejak wrote:

I’m using the MPC8540ADS bsp on a custom board.
We tested the hardware and we can access the flash, with the JTAG and
the boot loader (U-boot). The boot loader as a CFI flash driver which
work perfectly.
QNX is started from flash by the boot loader and works good, I’m using
QNX 6.3.0 SP1.
I’ve got a problem using the devf-generic with flash memory (Spansion
29GL256M).
Physical configuration is: 2 chips, CPU bus width 32 bits.

I tried the commands bellow. Did i miss something obvious or did I
choose the wrong flash chip, because CFI_MirrorBit_Workaround doesn’t
sound good ?

devf-generic -s0xfc000000,8M,128k,4,2 -vvvvv:

calloc f3s_start, 181: 0x80
calloc f3s_start, 211: 0x40
calloc f3s_start, 235: 0x30
calloc f3s_start, 257: 0x48
calloc f3s_start, 271: 0x98
devf: fs0 socket generic
QRY string = QRY
dbase->geo_num = 1
dbase->geo_vect[0].unit_pow2 = 17
dbase->geo_vect[0].unit_num = 512
devf: chip total = 1
devf: bus width = 4
devf: chip interleave = 2
calloc f3s_array_alloc, 21: 0x18
calloc f3s_array_alloc, 22: 0x800
calloc f3s_array_alloc, 23: 0x400
calloc f3s_array_alloc, 24: 0x200
calloc f3s_array_alloc, 25: 0x200
calloc f3s_array_alloc, 26: 0x800
malloc f3s_array_alloc, 27: 0x4800
devf: fs0 array CFI_MirrorBit_Workaround U: 200 S: 020000
malloc f3s_array_attach, 135: 0x10
calloc f3s_array_attach, 139: 0x80
calloc f3s_array_attach, 140: 0x80
calloc f3s_array_attach, 143: 0x88
calloc f3s_array_attach, 146: 0x30
calloc f3s_array_attach, 147: 0x30
devf: fs0p0 raw U: 00
malloc f3s_array_attach, 135: 0x10
calloc f3s_array_attach, 139: 0x80
calloc f3s_array_attach, 140: 0x80
calloc f3s_array_attach, 143: 0x88
calloc f3s_array_attach, 146: 0x30
calloc f3s_array_attach, 147: 0x30
devf: fs0p1 raw U: 00
malloc f3s_array_attach, 135: 0x10
calloc f3s_array_attach, 139: 0x80
calloc f3s_array_attach, 140: 0x80
calloc f3s_array_attach, 143: 0x88
calloc f3s_array_attach, 146: 0x30
calloc f3s_array_attach, 147: 0x30
devf: fs0p2 raw U: 00
malloc f3s_array_attach, 135: 0x10
calloc f3s_array_attach, 139: 0x80
calloc f3s_array_attach, 140: 0x80
calloc f3s_array_attach, 143: 0x88

continuing forever

======================== OR ========================

#devf-generic -s0xfc000000,8M -vvvvv:
calloc f3s_start, 181: 0x80
calloc f3s_start, 211: 0x40
calloc f3s_start, 235: 0x30
calloc f3s_start, 257: 0x48
calloc f3s_start, 271: 0x98
devf: fs0 socket generic

trying device width = 4

devf: bus width = 8
devf: trying chip inter = 2
devf: bus width = 4
devf: trying chip inter = 1

trying device width = 2

devf: bus width = 8
devf: trying chip inter = 4
devf: bus width = 4
devf: trying chip inter = 2
devf: bus width = 2
devf: trying chip inter = 1

trying device width = 1

devf: bus width = 8
devf: trying chip inter = 8
devf: bus width = 4
devf: trying chip inter = 4
devf: bus width = 2
devf: trying chip inter = 2
devf: bus width = 1
devf: trying chip inter = 1

trying device width = 4

devf: bus width = 8
devf: trying chip inter = 2
devf: bus width = 4
devf: trying chip inter = 1

trying device width = 2

devf: bus width = 8
devf: trying chip inter = 4
devf: bus width = 4
devf: trying chip inter = 2
devf: bus width = 2
devf: trying chip inter = 1

trying device width = 1

devf: bus width = 8
devf: trying chip inter = 8
devf: bus width = 4
devf: trying chip inter = 4
devf: bus width = 2
devf: trying chip inter = 2
devf: bus width = 1
devf: trying chip inter = 1

trying device width = 4

devf: bus width = 8
devf: trying chip inter = 2
devf: bus width = 4
devf: trying chip inter = 1

trying device width = 2

devf: bus width = 8
devf: trying chip inter = 4
devf: bus width = 4
devf: trying chip inter = 2
devf: bus width = 2
devf: trying chip inter = 1

trying device width = 1

devf: bus width = 8
devf: trying chip inter = 8
devf: bus width = 4
devf: trying chip inter = 4
devf: bus width = 2
devf: trying chip inter = 2
devf: bus width = 1
devf: trying chip inter = 1

trying device width = 4

devf: bus width = 8
devf: trying chip inter = 2
devf: bus width = 4
devf: trying chip inter = 1

trying device width = 2

devf: bus width = 8
devf: trying chip inter = 4
devf: bus width = 4
devf: trying chip inter = 2
QRY string = QRY
dbase->geo_num = 1
dbase->geo_vect[0].unit_pow2 = 17
dbase->geo_vect[0].unit_num = 512
devf: chip total = 1
devf: bus width = 4
devf: chip interleave = 2
calloc f3s_array_alloc, 21: 0x18
calloc f3s_array_alloc, 22: 0x800
calloc f3s_array_alloc, 23: 0x400
calloc f3s_array_alloc, 24: 0x200
calloc f3s_array_alloc, 25: 0x200
calloc f3s_array_alloc, 26: 0x800
malloc f3s_array_alloc, 27: 0x4800
devf: fs0 array CFI_MirrorBit_Workaround U: 200 S: 020000
malloc f3s_array_attach, 135: 0x10
calloc f3s_array_attach, 139: 0x80
calloc f3s_array_attach, 140: 0x80
calloc f3s_array_attach, 143: 0x88
calloc f3s_array_attach, 146: 0x30
calloc f3s_array_attach, 147: 0x30
devf: fs0p0 raw U: 00
malloc f3s_array_attach, 135: 0x10
calloc f3s_array_attach, 139: 0x80
calloc f3s_array_attach, 140: 0x80
calloc f3s_array_attach, 143: 0x88

continuing forever