Coder Social home page Coder Social logo

Comments (30)

GoogleCodeExporter avatar GoogleCodeExporter commented on September 26, 2024
Brian, I am unable to reproduce this issue. 

I load the prop with PropForthKernel.spin, version stamp is PropForth v4.3 
2011FEB28,19:10 0

I set the fstop to 20000 ( I deduce this from the fact that fsls shows 98304 
bytes free

I load fs.f

and all works properly.

Can you give ma any additional details to reproduce this issue.

Original comment by [email protected] on 13 Mar 2011 at 4:50

from propforth.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 26, 2024
1. Load PropForthKernal.spin to EEPROM
2. Copy/Paste fs.f (doesn't matter if fstop is 10000 or 20000)
3. execute fsclear
4. execute fsls twice in a row

  --------------------------------
Prop0 Cog6 ok
fsclear
Prop0 Cog6 ok
fsls


32768  bytes free in files system

Prop0 Cog6 ok
fsls


CON:Prop0 Cog6 RESET - last status: 90 UNKNOWN ERROR

Prop0 Cog6 RESET - last status: 90 UNKNOWN ERROR
Prop0 Cog6 ok
fsls


32768  bytes free in files system

Prop0 Cog6 ok
fsls


CON:Prop0 Cog6 RESET - last status: 90 UNKNOWN ERROR

Prop0 Cog6 RESET - last status: 90 UNKNOWN ERROR
Prop0 Cog6 ok

  --------------------------------

5. Executing fsls twice in a row triggers error, reset clears whatever, fsls 
will run OK again, but run it  second time and it blows again.

6. Now, Load PropForthBootKernal.spin to EEPROM
7. Copy/Paste fs.f (doesn't matter if fstop is 10000 or 20000)
8. execute fsclear
9. execute fsls twice in a row

  --------------------------------
Prop0 Cog6 ok
fsclear
Prop0 Cog6 ok
fsls


8000  bytes free in files system

Prop0 Cog6 ok
fsls


8000  bytes free in files system

Prop0 Cog6 ok
decimal
Prop0 Cog6 ok
fsls


32768  bytes free in files system

Prop0 Cog6 ok
fsls


32768  bytes free in files system

Prop0 Cog6 ok
  --------------------------------
10. NO ERROR

11. Hypothesis, I notice a bunch of "ifndef"s in fs.f . I assume they cover 
words in propforth.f and not in the BootKernel. Could it be that one of these 
words in propforth.f  got damaged in the act of copying it out to fs.f ????? 
The fact that the error does not occur with fs.f and the BootKernel seems to 
point at the culprit is in propforth.f .




Original comment by [email protected] on 22 Mar 2011 at 10:14

from propforth.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 26, 2024
I don't know if it has any bearing, but I forgot to add to my above comment 
that I also did

 1. Loaded PropForthKernal.spin to EEPROM

 2. Copy/Paste fs.f (doesn't matter if fstop is 10000 or 20000)

 3. execute saveforth

 4. execute reboot

 5. same sequences of words executed above, produced same errors in same fashion


Original comment by [email protected] on 23 Mar 2011 at 5:55

from propforth.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 26, 2024
prof_braino was not able to reproduce the error using the instructions above.  
See attached test log.  Used protoboard, demoboard, SCHMART board, Pro 
Development board, and spineret.

Question:  What EEPROMs are needed to reproduce the issue?
My tests all showed
32768  bytes free in files system not 98304  bytes free.
Are three parts of 64k on the test unit that had the error?
Part number, size, datasheet, number of parts present, please.

Original comment by [email protected] on 28 Mar 2011 at 12:44

Attachments:

from propforth.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 26, 2024
1. Host hardware/software
   - Apple iMac 2.66 GHZ 4 GB RAM - Mac OS X Snow Leopard v10.6.7
   - Propeller IDE - BST v19.3 (latest stable)
   - terminal program - Zterm v1.1b7

2. Propeller Hardware
   - Original (through hole version) Propeller Platform @80 MHz
   - 2 24LC512 EEPROMs one each at adr 0 and adr 1.

3. Start with a clean fresh load to EEPROM of PropForthKernal.spin

4. Copy/Paste fs.f with fstop set to 20000

5. Execute - all execute as expected
     - fsclear
     - 8000 100 edump
     - 10000 100 edump
     - fsls

6. Execute - all execute as expected without error
     - 8000 100 edump
     - 10000 100 edump
     - fsls

7. Execute - as soon as you do fsls two in a row the Error occurs. Something in 
the edump word 'clears' the problem.
     - fsls

-------------------------
Prop0 Cog6 ok
         hex
Prop0 Cog6 ok
fsclear
Prop0 Cog6 ok
80000 100 edump

080000 000100:
080000: 000 0B4 0C4 004 06F 00C 010 000 0A4 07F 0AC 07F 040 07F 0B4 07F   
.4D.o...$,@4
080010: 094 07F 002 000 030 07F 004 000 0F0 0B1 0BC 0A0 0F0 0A5 0BC 0A0   
..0..p1< p%<
080020: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000   
................
080030: 004 0B0 0FC 080 058 0A2 0BC 008 0F0 0A7 0BC 0A0 053 0A8 0BC 0A0   
.0|X"<.p'< S(<
080040: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000   
................
080050: 03E 0AE 0FC 0A0 051 0EC 0BF 068 056 0AA 0BC 05C 0F2 0A1 03C 062   >.| 
Ql?hV*<\r!<b
080060: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000   
................
080070: 0F1 0BB 0BC 080 04F 0BA 0BC 080 056 0AA 0BC 05C 05D 0B0 0BC 0A0   
q;<O:<V*<\]0<
080080: 0F1 0B1 0BC 084 000 0B0 07C 0C1 018 000 04C 05C 0F2 0A1 03C 061   
q1<.0|A..L\r!<a
080090: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000   
................
0800A0: 0FF 0B6 0FC 060 052 09A 0BC 080 04D 0B6 03C 000 052 09A 0BC 084   
6|`R<M6<.R<
0800B0: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000   
................
0800C0: 053 0BE 0BC 004 000 0BF 07C 062 029 000 054 05C 000 0B1 0FC 0A0   
S><..?|b).T\.1|
0800D0: 053 0B0 03C 004 000 0BF 0FC 068 002 0BE 0FC 02C 001 0BE 0FC 068   
S0<..?|h.>|,.>|h
0800E0: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000   
................
0800F0: 04F 0C2 0BC 080 057 0AC 0BC 05C 061 0B0 0BC 0A0 0F1 0B1 0BC 084   
OB<W,<\a0< q1<
Prop0 Cog6 ok
8000 100 edump

008000 000100:
008000: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000   
................
008010: 00D 00D 068 065 078 00D 00D 031 020 077 063 06F 06E 073 074 061   
..hex..1 wconsta
008020: 06E 074 020 062 075 069 06C 064 05F 070 072 06F 070 066 06F 072   nt 
build_propfor
008030: 074 068 00D 00D 00D 00D 05B 069 066 020 063 074 072 061 00D 031   
th....[if ctra.1
008040: 046 038 009 077 063 06F 06E 073 074 061 06E 074 020 063 074 072   
F8.wconstant ctr
008050: 061 020 05D 00D 00D 05B 069 066 020 063 074 072 062 00D 031 046   a 
]..[if ctrb.1F
008060: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000   
................
008070: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000   
................
008080: 009 077 063 06F 06E 073 074 061 06E 074 020 066 072 071 061 020   
.wconstant frqa
008090: 05D 00D 00D 05B 069 066 020 066 072 071 062 00D 031 046 042 009   
]..[if frqb.1FB.
0080A0: 077 063 06F 06E 073 074 061 06E 074 020 066 072 071 062 020 05D   
wconstant frqb ]
0080B0: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000   
................
0080C0: 063 06F 06E 073 074 061 06E 074 020 070 068 073 061 020 05D 00D   
constant phsa ].
0080D0: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000   
................
0080E0: 06F 06E 073 074 061 06E 074 020 070 068 073 062 020 05D 00D 00D   
onstant phsb ]..
0080F0: 05B 069 066 020 076 063 066 067 00D 031 046 045 009 077 063 06F   [if 
vcfg.1FE.wco
Prop0 Cog6 ok
10000 100 edump

010000 000100:
010000: 020 065 06C 073 065 020 030 020 00D 020 020 020 020 020 020 020    else 
0 .
010010: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000   
................
010020: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000   
................
010030: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000   
................
010040: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000   
................
010050: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000   
................
010060: 020 020 020 074 068 065 06E 020 00D 075 06E 074 069 06C 00D 064      
then .until.d
010070: 075 06D 06D 079 00D 00D 034 038 020 073 064 05F 073 068 069 066   
ummy..48 sd_shif
010080: 074 05F 06F 075 074 020 020 020 020 020 020 020 020 020 020 020   t_out
010090: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000   
................
0100A0: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000   
................
0100B0: 073 068 069 066 074 05F 06F 075 074 020 06C 06F 06F 070 020 064   
shift_out loop d
0100C0: 072 06F 070 00D 031 020 073 064 05F 073 068 069 066 074 05F 06F   rop.1 
sd_shift_o
0100D0: 075 074 00D 061 061 020 073 064 05F 073 068 069 066 074 05F 06F   ut.aa 
sd_shift_o
0100E0: 075 074 00D 038 037 020 073 064 05F 073 068 069 066 074 05F 06F   ut.87 
sd_shift_o
0100F0: 075 074 00D 00D 062 065 067 069 06E 020 073 064 05F 073 068 069   
ut..begin sd_shi
Prop0 Cog6 ok
fsls


18000  bytes free in files system

Prop0 Cog6 ok
8000 100 edump

008000 000100:
008000: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000   
................
008010: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000   
................
008020: 06E 074 020 062 075 069 06C 064 05F 070 072 06F 070 066 06F 072   nt 
build_propfor
008030: 074 068 00D 00D 00D 00D 05B 069 066 020 063 074 072 061 00D 031   
th....[if ctra.1
008040: 046 038 009 077 063 06F 06E 073 074 061 06E 074 020 063 074 072   
F8.wconstant ctr
008050: 061 020 05D 00D 00D 05B 069 066 020 063 074 072 062 00D 031 046   a 
]..[if ctrb.1F
008060: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000   
................
008070: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000   
................
008080: 009 077 063 06F 06E 073 074 061 06E 074 020 066 072 071 061 020   
.wconstant frqa
008090: 05D 00D 00D 05B 069 066 020 066 072 071 062 00D 031 046 042 009   
]..[if frqb.1FB.
0080A0: 077 063 06F 06E 073 074 061 06E 074 020 066 072 071 062 020 05D   
wconstant frqb ]
0080B0: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000   
................
0080C0: 063 06F 06E 073 074 061 06E 074 020 070 068 073 061 020 05D 00D   
constant phsa ].
0080D0: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000   
................
0080E0: 06F 06E 073 074 061 06E 074 020 070 068 073 062 020 05D 00D 00D   
onstant phsb ]..
0080F0: 05B 069 066 020 076 063 066 067 00D 031 046 045 009 077 063 06F   [if 
vcfg.1FE.wco
Prop0 Cog6 ok
10000 100 edump

010000 000100:
010000: 020 065 06C 073 065 020 030 020 00D 020 020 020 020 020 020 020    else 
0 .
010010: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000   
................
010020: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000   
................
010030: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000   
................
010040: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000   
................
010050: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000   
................
010060: 020 020 020 074 068 065 06E 020 00D 075 06E 074 069 06C 00D 064      
then .until.d
010070: 075 06D 06D 079 00D 00D 034 038 020 073 064 05F 073 068 069 066   
ummy..48 sd_shif
010080: 074 05F 06F 075 074 020 020 020 020 020 020 020 020 020 020 020   t_out
010090: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000   
................
0100A0: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000   
................
0100B0: 073 068 069 066 074 05F 06F 075 074 020 06C 06F 06F 070 020 064   
shift_out loop d
0100C0: 072 06F 070 00D 031 020 073 064 05F 073 068 069 066 074 05F 06F   rop.1 
sd_shift_o
0100D0: 075 074 00D 061 061 020 073 064 05F 073 068 069 066 074 05F 06F   ut.aa 
sd_shift_o
0100E0: 075 074 00D 038 037 020 073 064 05F 073 068 069 066 074 05F 06F   ut.87 
sd_shift_o
0100F0: 075 074 00D 00D 062 065 067 069 06E 020 073 064 05F 073 068 069   
ut..begin sd_shi
Prop0 Cog6 ok
fsls


18000  bytes free in files system

Prop0 Cog6 ok
fsls


CON:Prop0 Cog6 RESET - last status: 90 UNKNOWN ERROR

Prop0 Cog6 RESET - last status: 90 UNKNOWN ERROR
Prop0 Cog6 ok

-------------------------

Original comment by [email protected] on 29 Mar 2011 at 9:02

from propforth.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 26, 2024
It occurs to me that this may be a bug in the BST compiler. I will journey over 
to "the Dark Side" and dust off my Winders stuff and compile and build an 
EEPROM binary there and load that and see how that goes.

Original comment by [email protected] on 29 Mar 2011 at 9:10

from propforth.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 26, 2024
fsclear is a pretty simple word, it writes FFFF at the base of the eeprom,

so if the data is correct, we are seeing an error writing to the eeprom.

It may be possible the forth routines to drive the eeprom are out of spec.

So if I may suggest a path:

fsclr - writes blanks to the eeprom

8000 100 edump

10000 100 edump

-1 8000 EW!

8000 100 edump
10000 100 edump

This should verify we can read and write to the eeprom. 

After that we can try to figure out if we have a bug in the eeprom driver
or it is something else.

Original comment by [email protected] on 29 Mar 2011 at 10:22

from propforth.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 26, 2024
NOPE!

1. I went to WinXP 
    - compiled and loaded with Propeller Tool 1.2.7. 

2. I went back to the Mac OS
    - Copy/Pasted fs.s into Zterm

3. Executed - it errored after second fsls
    - fsclear
    - fsls
    - fsls

Original comment by [email protected] on 29 Mar 2011 at 10:30

from propforth.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 26, 2024
OK, Sal, I did as you asked 

 1. On my standard board (24LC512) using EW! and fsclr ad eddump
    - -1 8000 EW! works
    - -1 8002 EW! gets an EEPROM Write Error (or any other address)
    - fsclr, only writes blanks to $8000-$83ff regardless of fstop setting.

 2. ON a different board with an AT24C512
    - -1 8000 EW! works
    - -1 8002 EW! works (or any other address)
    - fsclr, still only writes blanks to $8000-$83ff regardless of fstop setting.

 3. I have attached the data sheet for the 24LC512

 4. The problem appears to be EEPROM specific, but I'll be darned of I can figure out why $8000 can be written to but not other addresses and why blanks got written (residue from past versions?)

 5. second problem, possibly un related, why does fsclr stop at $83ff?

 6. I am going to set both boards back to 4.0 and check this out. I know, because I saw residue of my 4.0 files while this, that I had fswritten well into the upper reaches of the second eeprom

Original comment by [email protected] on 30 Mar 2011 at 12:08

Attachments:

from propforth.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 26, 2024
My earlier mistake, fsclr does only clear out the first 1k bytes.

Used to clear out whole eeprom, but it took too long, and was really only for 
debugging.

The first word, which is FFFF, for the last file is all that is really 
necessary.

One other thought, make sure the board has pullup resistors. The routines put 
the pins to input when the eeprom is not being used, this allows multiple cogs 
to use the eeproms, but could leave the eeprom is a strange state. I had an 
with eeproms similar to this on a breadboard.

Otherwise:

if the eeprom is in a strange state, this should fix it, and that will
help narrow the cause
repeat the test with these slightly modified routines:

fl


\ eereset ( -- ) initialize the eeprom in case it is in a weird state
[ifndef eereset
: eereset _eestart _sdah 9 0 do _sclh _scll loop _eestart _eestop  ; ]


\
\
\ eewritepage ( eeAddr addr u -- t/f ) return true if there was an error, use 
lock 1
: eewritepage
    begin
        1 lockset 0=
    until
\ resets the eeprom if it is in a starnge state
    eereset
    1 max rot dup ff and swap dup 8 rshift ff and swap 10 rshift 7 and 1 lshift
    _eestart A0 or _eewrite swap _eewrite or swap _eewrite or
    rot2 bounds
    do
        i C@ _eewrite or
    loop
    _eestop 10 delms
    1 lockclr drop
;
\
\
\ EW! ( n1 eeAddr -- )
: EW!
    swap t0 W! t0 2 eewritepage
    if
        A ERR
    then
;

Original comment by [email protected] on 30 Mar 2011 at 5:43

from propforth.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 26, 2024
1. My standard 2 x 24lc512 hardware setup
2. V4.3 PropForthKernal.spin with fs.f applied and saveforth-ed
3. Your code above Copy/Pasted (had to add hex word inside the fl word)

-------------------------------------
CON:Prop0 PROP REBOOT PropForth v4.3 2011FEB28 19:10 1

CON:Prop0 Cog0 RESET - last status: 0 ok

CON:Prop0 Cog1 RESET - last status: 0 ok

CON:Prop0 Cog2 RESET - last status: 0 ok

CON:Prop0 Cog3 RESET - last status: 0 ok

CON:Prop0 Cog4 RESET - last status: 0 ok

CON:Prop0 Cog5 RESET - last status: 0 ok

CON:Prop0 Cog6 RESET - last status: 0 ok

Prop0 Cog6 RESET - last status: 0 ok
Prop0 Cog6 ok
fl

Prop0 Cog0 ok
hex
Prop0 Cog0 ok

Prop0 Cog0 ok
[ifndef eereset
Prop0 Cog0 ok
: eereset _eestart _sdah 9 0 do _sclh _scll loop _eestart _eestop  ; ]
Prop0 Cog0 ok

Prop0 Cog0 ok

Prop0 Cog0 ok
: eewritepage
 begin
  1 lockset 0=
 until
 eereset
 1 max rot dup ff and swap dup 8 rshift ff and swap 10 rshift 7 and 1 lshift
 _eestart A0 or _eewrite swap _eewrite or swap _eewrite or
 rot2 bounds
 do
  i C@ _eewrite or
 loop
 _eestop 10 delms
 1 lockclr drop
;
Prop0 Cog0 ok
: EW!
 swap t0 W! t0 2 eewritepage
 if
  A ERR
 then
;
Prop0 Cog0 ok

Prop0 Cog0 ok

Prop0 Cog6 ok
fsclear
Prop0 Cog6 ok
hex
Prop0 Cog6 ok
8000 40 edump

008000 000040:
008000: 0FF 0FF 020 020 020 020 020 020 020 020 020 020 020 020 020 020
008010: 020 020 020 020 020 020 020 020 020 020 020 020 020 020 020 020
008020: 020 020 020 020 020 020 020 020 020 020 020 020 020 020 020 020
008030: 020 020 020 020 020 020 020 020 020 020 020 020 020 020 020 020
Prop0 Cog6 ok
fsls

008000 002020
00A080 002020
00C100 002020
00E180 002020

CON:Prop0 Cog6 RESET - last status: 90 UNKNOWN ERROR

Prop0 Cog6 RESET - last status: 90 UNKNOWN ERROR
Prop0 Cog6 ok
fsls


CON:Prop0 Cog6 RESET - last status: 90 UNKNOWN ERROR

Prop0 Cog6 RESET - last status: 90 UNKNOWN ERROR
Prop0 Cog6 ok

-------------------------------------

Original comment by [email protected] on 1 Apr 2011 at 1:28

from propforth.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 26, 2024
Ok, it is fairly clear we have an error on the read. I think I see a path. Will 
post some code to verify tomorrow, just want to test it first.

Original comment by [email protected] on 1 Apr 2011 at 2:15

from propforth.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 26, 2024
Current hypothesis:

The eeprom goes into a strange state for whatever reason:

Test: load the following routines right after forth is installed, and before
fs, or the saveforth. If it changes behavior, we can pursue this path. If it 
does
not, then something is out of spec, and we will have to take a different path.


fl

hex

\ eereset ( -- ) initialize the eeprom in case it is in a weird state
: eereset _eestart _sdah 9 0 do _sclh _scll loop _eestart _eestop  ;

\
\
\ eewritepage ( eeAddr addr u -- t/f ) return true if there was an error, use 
lock 1
: eewritepage
    begin
        1 lockset 0=
    until
\ resets the eeprom if it is in a strange state
    eereset
    1 max rot dup ff and swap dup 8 rshift ff and swap 10 rshift 7 and 1 lshift
    _eestart A0 or _eewrite swap _eewrite or swap _eewrite or
    rot2 bounds
    do
        i C@ _eewrite or
    loop
    _eestop 10 delms
    1 lockclr drop
;
\
\
\ EW! ( n1 eeAddr -- )
: EW!
    swap t0 W! t0 2 eewritepage
    if
        A ERR
    then
;
\ _eeread ( t/f -- c1 ) read a byte from the eeprom, ackbit in, byte out
: _eeread _sdai 0 8 0 do 1 lshift _sclh _sda? _scll if 1 or then loop
swap if _sdah else _sdal then _sdao _sclh _scll _sdal ;

\ the eereadpage and eewritePage words assume the eeprom are 64kx8 and will 
address up to 
\ 8 sequential eeproms
\ eereadpage ( eeAddr addr u -- t/f ) return true if there was an error, use 
lock 1
: eereadpage
    begin
        1 lockset 0=
    until
\ resets the eeprom if it is in a strange state
eereset
1 max rot dup ff and swap dup 8 rshift ff and swap 10 rshift 7 and 1 lshift dup 
>r
_eestart A0 or _eewrite swap _eewrite or swap _eewrite or
_eestart r> A1 or _eewrite or
rot2 bounds
do lasti? _eeread i C! loop _eestop 1 lockclr drop ;


\
\ saveforth( -- ) write the running image to eeprom UPDATES THE CURRENT VERSION 
STR
: saveforth
    c" here" find
    if
        version W@ dup C@ + dup C@ 1+ swap C!
        pfa>nfa here W@ swap
        begin dup W@ over EW! 2+ dup 3F and 0= until
        do
            ibound i - 40 min dup i dup rot 
            eewritepage if 8003 ERR then _p? if 2e emit then
        +loop    
    else
        drop
    then
    _p?
    if
        cr
    then
;






Original comment by [email protected] on 1 Apr 2011 at 2:30

from propforth.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 26, 2024
1. I followed the instructions in Comment 13 to the letter using my standard 2 
x 24lc512 platform and code from 4.3 . All _appeared_ well. Then I tried to 
Copy/Paste the demo code in the front of fs.f and that _appeared_ to go well.

2. Then I did   fsload demo and it all  came unglued. Unsure if the fswrites 
were good and the reads in the fslaods were bad, ,or the fswrites were bad and 
reads were good, or both were bad.

3. I then took my alternate platform with the surface mount prop and single sm 
at24c512 and loaded the same setup. I copy/pasted the fs.f demo code and did 
fsload demo and it worked fine no errors at all.

4. I then went back to my standard platform and loaded PF4.0a 
02-propforth.spin, 22-fs.f,and saveforth-ed. Then I used the same fs.f demo. It 
worked without error. I did an fswrite of 23-propforth.f to get  a big file 
write and an fsload propforth.f to get a big file read ....all OK.

5. Same hardware works under 4.0a, blows up under 4.3 ... I have to ask the 
question, what changes to fs.f from 4.0 to 4.3 ???? ... changes that work on 
some EEPROMs and not on others ... adjust a timeout???  ... send a sequence too 
fast/too slow ???


Original comment by [email protected] on 2 Apr 2011 at 4:20

from propforth.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 26, 2024
I still have not been able to reproduce this bug.

There were no changes between 4.0 and 4.3. So my current hypothesis
is we have a timing bug. It explains the weirdness, I did some analysis
and think I have found a bug in how bits are read. Do not know whether or not 
this
is the cause of what we are seeing, but it is a deviation from spec.

I will cut a new drop tonight with the fix for the deviation, test it, and post
it here.

Original comment by [email protected] on 4 Apr 2011 at 4:29

from propforth.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 26, 2024
The failing board has 10K pullups on both SDA and SCL.

Original comment by [email protected] on 4 Apr 2011 at 7:58

from propforth.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 26, 2024
I have cut a new version. Just test it on the board that failed, it has passed 
on all the system I have.

It should fail, there have been no timing changes. We will use this as a 
baseline
for changes.

compile and load PropForthKernelA.spin into eeprom

load the demo files


fsload demo



Here is my test run:

reboot

CON:Prop0 Cog0 RESET - last status: 0 ok

CON:Prop0 Cog1 RESET - last status: 0 ok

CON:Prop0 Cog2 RESET - last status: 0 ok

CON:Prop0 Cog3 RESET - last status: 0 ok

CON:Prop0 Cog4 RESET - last status: 0 ok

CON:Prop0 PROP REBOOT PropForth v4.4EEBUG-A 2011APR04 16:15 0

CON:Prop0 Cog5 RESET - last status: 0 ok

CON:Prop0 Cog6 RESET - last status: 0 ok

Prop0 Cog6 RESET - last status: 0 ok
Prop0 Cog6 ok
fsclear
Prop0 Cog6 ok
fsls


32768  bytes free in files system

Prop0 Cog6 ok
fsls


32768  bytes free in files system

Prop0 Cog6 ok
fl

Prop0 Cog0 ok
fswrite demo
fsload hello.f
fsload bye.f
fsload aloha.f
Prop0 Cog0 ok

Prop0 Cog0 ok

Prop0 Cog0 ok
fswrite hello.f
: hello ." Hello world" cr ;
Prop0 Cog0 ok

Prop0 Cog0 ok
fswrite bye.f
: bye ." Goodbye world" cr ;
Prop0 Cog0 ok

Prop0 Cog0 ok
fswrite aloha.f
: aloha if ." Hello" else ." Goodbye" then ."  world" cr ;
Prop0 Cog0 ok

Prop0 Cog0 ok

Prop0 Cog6 ok
fsload demo
fsload hello.f
: hello ." Hello world" cr ;
Prop0 Cog1 ok

Prop0 Cog0 ok
fsload bye.f
: bye ." Goodbye world" cr ;
Prop0 Cog1 ok

Prop0 Cog0 ok
fsload aloha.f
: aloha if ." Hello" else ." Goodbye" then ."  world" cr ;
Prop0 Cog1 ok

Prop0 Cog0 ok

Prop0 Cog6 ok
hello
Hello world
Prop0 Cog6 ok
bye
Goodbye world
Prop0 Cog6 ok
0 aloha
Goodbye world
Prop0 Cog6 ok
1 aloha
Hello world
Prop0 Cog6 ok

Original comment by [email protected] on 5 Apr 2011 at 1:44

Attachments:

from propforth.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 26, 2024
As per Comment 17
------------------------

Prop0 Cog6 ok

CON:Prop0 Cog0 RESET - last status: 0 ok

CON:Prop0 Cog1 RESET - last status: 0 ok

CON:Prop0 Cog2 RESET - last status: 0 ok

CON:Prop0 Cog3 RESET - last status: 0 ok

CON:Prop0 Cog4 RESET - last status: 0 ok

CON:Prop0 PROP REBOOT PropForth v4.4EEBUG-A 2011APR04 16:15 0

CON:Prop0 Cog5 RESET - last status: 0 ok

CON:Prop0 Cog6 RESET - last status: 0 ok

Prop0 Cog6 RESET - last status: 0 ok
Prop0 Cog6 ok
fsclear
Prop0 Cog6 ok
fsls


32768  bytes free in files system

Prop0 Cog6 ok
fsls


CON:Prop0 Cog6 RESET - last status: 144 UNKNOWN ERROR

Prop0 Cog6 RESET - last status: 144 UNKNOWN ERROR
Prop0 Cog6 ok
reboot

CON:Prop0 Cog0 RESET - last status: 0 ok

CON:Prop0 Cog1 RESET - last status: 0 ok

CON:Prop0 Cog2 RESET - last status: 0 ok

CON:Prop0 Cog3 RESET - last status: 0 ok

CON:Prop0 Cog4 RESET - last status: 0 ok

CON:Prop0 PROP REBOOT PropForth v4.4EEBUG-A 2011APR04 16:15 0

CON:Prop0 Cog5 RESET - last status: 0 ok

CON:Prop0 Cog6 RESET - last status: 0 ok

Prop0 Cog6 RESET - last status: 0 ok
Prop0 Cog6 ok
fl

Prop0 Cog0 ok
fswrite demo
fsload hello.f
fsload bye.f
fsload aloha.f
Prop0 Cog0 ok

Prop0 Cog0 ok

Prop0 Cog0 ok
fswrite hello.f
: hello ." Hello world" cr ;
Prop0 Cog0 ok

Prop0 Cog0 ok
fswrite bye.f
: bye ." Goodbye world" cr ;
Prop0 Cog0 ok

Prop0 Cog0 ok
fswrite aloha.f
: aloha if ." Hello" else ." Goodbye" then ."  world" cr ;
Prop0 Cog0 ok

Prop0 Cog0 ok

Prop0 Cog6 ok
fsload demo

CON:Prop0 Cog6 RESET - last status: 144 UNKNOWN ERROR

Prop0 Cog0 ok

Prop0 Cog0 ok
Prop0 Cog6 RESET - last status: 144 UNKNOWN ERROR
UNDEFINED WORD Prop0
Prop0 Cog0 ok
hex
Prop0 Cog0 ok

Prop0 Cog0 ok
Prop0 Cog6 ok
UNDEFINED WORD Prop0
Prop0 Cog0 ok
8000 100 edump

8000 0100:
8000: 2B 00 04 64 65 6D 6F 66 73 6C 6F 61 64 20 68 65   +..demofsload he
8010: 6C 6C 6F 2E 66 0D 66 73 6C 6F 61 64 20 62 79 65   llo.f.fsload bye
8020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
8030: 20 20 20 20 20 20 20 20 20 20 1D 00 07 68 65 6C             ...hel
8040: 1D 00 07 68 65 6C 6C 6F 2E 66 3A 20 68 65 6C 6C   ...hello.f: hell
8050: 6F 20 2E 22 20 48 65 6C 6C 6F 20 77 6F 72 6C 64   o ." Hello world
8060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
8070: 20 20 20 20 20 20 20 20 20 20 1D 00 05 62 79 65             ...bye
8080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
8090: 20 47 6F 6F 64 62 79 65 20 77 6F 72 6C 64 22 20    Goodbye world"
80A0: 63 72 20 3B 0D 20 20 20 20 20 20 20 20 20 20 20   cr ;.
80B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3B 00 07                ;..
80C0: 3B 00 07 61 6C 6F 68 61 2E 66 3A 20 61 6C 6F 68   ;..aloha.f: aloh
80D0: 61 20 69 66 20 2E 22 20 48 65 6C 6C 6F 22 20 65   a if ." Hello" e
80E0: 6C 73 65 20 2E 22 20 47 6F 6F 64 62 79 65 22 20   lse ." Goodbye"
80F0: 74 68 65 6E 20 2E 22 20 20 77 6F 72 6C 64 22 20   then ."  world"
Prop0 Cog0 ok

Prop0 Cog0 ok

Prop0 Cog0 ok

Prop0 Cog0 ok
8000 0100:
UNDEFINED WORD 0100:
Prop0 Cog0 ok
fsls

8000 002B demo

CON:Prop0 Cog0 RESET - last status: 144 UNKNOWN ERROR

Prop0 Cog0 RESET - last status: 144 UNKNOWN ERROR

CON:Prop0 Cog6P oRES ECTo g- 0 oak
t status: 144 UNKNOWN ERROR

Prop0 Cog0 ok

Prop0 Cog0 ok
Prop0 Cog6 RESET - last status: 144 UNKNOWN ERROR
UNDEFINED WORD Prop0
Prop0 Cog0 ok
fsls

32768 00043 demo

CON:Prop0 Cog0 RESET - last status: 144 UNKNOWN ERROR

Prop0 Cog0 RESET - last status: 144 UNKNOWN ERROR

CON:Prop0 Cog6P oRES ECTo g- 0 oak
t status: 144 UNKNOWN ERROR

Prop0 Cog0 ok

Prop0 Cog0 ok
Prop0 Cog6 RESET - last status: 144 UNKNOWN ERROR
UNDEFINED WORD Prop0
Prop0 Cog0 ok

Original comment by [email protected] on 5 Apr 2011 at 11:09

from propforth.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 26, 2024
I am uploading a test program to run on the version of forth in the last 
comment. 

It does the fs operations while using cog 0 to scope the sda and scl pins. If 
there is any timing strangeness, it should show up.

Can you please run on the failing board and send me the output.

Load PropForthKernelA.spin on the board

Paste in the contents of eebugtest.f

run test

Original comment by [email protected] on 5 Apr 2011 at 11:18

Attachments:

from propforth.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 26, 2024
Console output of "test" attached

Original comment by [email protected] on 6 Apr 2011 at 12:36

Attachments:

from propforth.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 26, 2024
executed test then watchsee - console attached


Original comment by [email protected] on 6 Apr 2011 at 1:05

Attachments:

from propforth.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 26, 2024
The traces were a great help.

I have been through the traces, and from what I can see the pullup on the SDA 
line is flaky. There are multiple places where it oscillates when there is no 
reason. Trace 1 around cycle 2304, 2944, 3072. Specifically trace 2 around 
cycle 24064. The _eestop clearly sends the stop to the eeprom and sets SDA and 
SCL to inputs. SCL goes high, and SDA seems to float up and down and then wind 
up lo.

This will definitely cause the next operation to fail, because the SDA line is 
never driven high so the next start sequence is invalid. It is expected to 
already be pulled high. This was the possible timing problem I referred to 
earlier. While we could fix this in SW, the floating line could cause data 
errors.

If I had the board present my next step would involve analogue tests. Can you 
check the SDA pullup please and let me know if this is the issue, or we have 
something else
really weird going on, like a device misbehaving on the serial bus.

I will try to come up with other tests to try and isolate further.




Original comment by [email protected] on 7 Apr 2011 at 3:04

from propforth.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 26, 2024
I got somewhat diverted by real life ... I am back. I am still trying to get a 
good 'look' at the pullups. IN the meantime I blew the dust off my PPDB (Prop 
is DIP40 also, EEPROM only has one 10K pull up on P29/SDA) and pulled the 
24LC256 and put in a 24LC512 and repeated the last test

1. loaded PropForthKernalA.spin
2. c/p-ed fs demo, then fsload demo, etc ... all ran well well
3. c/p-ed eebugtest.f then executed test
4. console output attached

Do you want me to run it with a pullup on P28/SCL ?

Random thought ... bad P28 and/or P29 on Propeller? Maybe I should try swapping 
new CPUs and/or EEPROM in/out.

Original comment by [email protected] on 10 Apr 2011 at 8:18

Attachments:

from propforth.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 26, 2024
Real life, is that is the time between soldering and programming :)?

The trace is exactly what I would expect, SDA line goes high, and SCL goes lo, 
which is OK. The SDA pin on the eeprom is an open collector output, so it is 
the only one that really requires the pullup.

All I can say for sure (with 95% confidence, as there is always some chance 
something else is causing the issue) is that the prop does not see the SDA line 
high, so I am assuming the eeprom does not either, since it fails, and that is 
exactly what we would expect.

Might be a flaky pin, but I would put highest odds on pullup / pullup 
connection. Once that is eliminated, I would go after the prop, and then the 
actual eeproms.

Thank you for following up.

Original comment by [email protected] on 10 Apr 2011 at 11:44

from propforth.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 26, 2024
Unless there is further feedback on this one I suggest we close this issue.

Original comment by [email protected] on 5 Jul 2011 at 2:47

from propforth.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 26, 2024
Developer has determined the issue and made necessary fix.
Moved to 'Fixed' 
Waiting on originator to report fix is satisfactory (or not)
[If no response and not other reports of error after fix, we will move to 
"Done']

Original comment by [email protected] on 8 Jul 2011 at 7:00

  • Changed state: Fixed

from propforth.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 26, 2024
will test fix in lates code revision tonight 7/8/2011

Original comment by [email protected] on 8 Jul 2011 at 2:58

from propforth.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 26, 2024
Does not appear to be fixed. Used v4.5 ... is there newer code? TRied two 
different PP boards, both of which work under 4.0a

0 - using original Propeller Platform board with two 24LC512s

1 - fresh load of PropForthKernal.spin v4.5

2 - copy/paste fs.f (fstop edited to $20000)

3 - saveforth

4 - fsclear

5 - fsls

6 - terminal output
-------------------
Prop0 Cog6 ok
saveforth
................................................................................
..........................................
................................................................................
.......................
Prop0 Cog6 ok
reset

CON:Prop0 Cog6 RESET - last status: 0 ok

Prop0 Cog6 RESET - last status: 0 ok
Prop0 Cog6 ok
reboot

CON:Prop0 Cog0 RESET - last status: 0 ok

CON:Prop0 Cog1 RESET - last status: 0 ok

CON:Prop0 Cog2 RESET - last status: 0 ok

CON:Prop0 Cog3 RESET - last status: 0 ok

CON:Prop0 Cog4 RESET - last status: 0 ok

CON:Prop0 PROP REBOOT PropForth v4.5 2011MAY31 17:30 1

CON:Prop0 Cog5 RESET - last status: 0 ok

CON:Prop0 Cog6 RESET - last status: 0 ok

Prop0 Cog6 RESET - last status: 0 ok
Prop0 Cog6 ok
fsls


CON:Prop0 Cog6 RESET - last status: 10 EEPROM WRITE ERROR

Prop0 Cog6 RESET - last status: 10 EEPROM WRITE ERROR
Prop0 Cog6 ok

-------------------

7 - unable to test issue 22 because of this.

Original comment by [email protected] on 8 Jul 2011 at 10:32

from propforth.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 26, 2024

Original comment by [email protected] on 14 Jul 2011 at 1:37

  • Changed state: ToTest

from propforth.

GoogleCodeExporter avatar GoogleCodeExporter commented on September 26, 2024
The one offending board is now permanently mounted and doing regression test 
duty. Version 5.0 fs filesystem regression test passes.

Original comment by [email protected] on 20 Jan 2012 at 2:19

  • Changed state: Verified

from propforth.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.