Comments (30)
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.
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.
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.
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:
- [Issue25 notes DAW 20110327-1840.txt](https://storage.googleapis.com/google-code-attachments/propforth/issue-25/comment-4/Issue25 notes DAW 20110327-1840.txt)
from propforth.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Console output of "test" attached
Original comment by [email protected]
on 6 Apr 2011 at 12:36
Attachments:
from propforth.
executed test then watchsee - console attached
Original comment by [email protected]
on 6 Apr 2011 at 1:05
Attachments:
from propforth.
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.
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.
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.
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.
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.
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.
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.
Original comment by [email protected]
on 14 Jul 2011 at 1:37
- Changed state: ToTest
from propforth.
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)
- Loading EEprom 1430 bytes - different on windows and linux HOT 3
- Remove all copyright as they are encountered HOT 3
- add37 with no parameter gives no error HOT 1
- Backspace on Android HOT 2
- self signed version of green? HOT 1
- HC06 bluetooth name query command
- Bluetooth init script questions
- setDriftCorrection confusion HOT 2
- How to determine current setDriftCorretion for logger?
- To make Chineese identifers? HOT 1
- new single cog VGA drivers available
- EEWRITE ACK bit read afterr clock goes low
- Logger 2 Existing logfile HOT 4
- Goterm, Gomux term with SDkernel?
- request for goterm + time HOT 3
- Discuss Time Radio sync
- 20140102 errors HOT 5
- Definition of PropForth word "serial" HOT 2
- 1 step test suite
- Driver for radar gun? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from propforth.