00:04
Guest32 has joined ##raspberrypi-internals
00:05
Guest32 has left ##raspberrypi-internals [##raspberrypi-internals]
00:16
fxsheep has joined ##raspberrypi-internals
00:19
fxsheep has quit [Client Quit]
00:39
fxsheep has joined ##raspberrypi-internals
00:40
<
fxsheep >
Hello everyone,
00:41
<
fxsheep >
I tried dumping rpi1 bootrom via lk-overlay (rpi3-bootcode), and there's a weird symptom
00:43
<
fxsheep >
Every even-numbered dword is overwritten with the one before it (odd numbered)
00:49
<
clever >
fxsheep: do ou have an example of the corruption? what command did you use?
00:50
<
fxsheep >
e.g. 0x60000004, 0x6000000C... reads the content of 0x60000000, 0x60000008 ...instead, while 0x60000000, 0x60000008 is fine
00:50
<
fxsheep >
bootram 0x60008000 isn't affected
00:50
<
clever >
and what command did you use?
00:50
<
fxsheep >
No matter what memory access I use, same (hexdump, dw db etc)
00:51
<
clever >
thats strange, i had no issues dumping the rom with LK
00:51
<
clever >
can you paste an example line?
00:52
<
fxsheep >
currently away from pi, I'll paste 3hrs later
00:53
<
clever >
fxsheep: i'll be asleep then, but can help out more tomorrow
00:55
fxsheep55 has joined ##raspberrypi-internals
00:56
fxsheep55 has quit [Client Quit]
00:56
fxsheep73 has joined ##raspberrypi-internals
01:00
fxsheep73 has quit [Client Quit]
01:00
fxsheep has quit [Quit: Client closed]
02:52
fxsheep has joined ##raspberrypi-internals
02:52
<
fxsheep >
] hexdump 0x60000000 0x20
02:52
<
fxsheep >
0x60000000 00 b0 00 01 00 b0 00 01 e0 00 00 6d e0 00 00 6d |...........m...m|
02:52
<
fxsheep >
0x60000010 1d c0 41 07 1d c0 41 07 00 60 19 e8 00 60 19 e8 |..A...A..`...`..|
02:52
<
fxsheep >
] dw 0x60000000 0x20
02:52
<
fxsheep >
0x60000000: 0100b000 0100b000 6d0000e0 6d0000e0
02:52
<
fxsheep >
0x60000010: 0741c01d 0741c01d e8196000 e8196000
02:52
<
fxsheep >
] db 0x60000000 0x20
02:52
<
fxsheep >
0x60000000: 00 b0 00 01 00 b0 00 01 e0 00 00 6d e0 00 00 6d
02:52
<
fxsheep >
0x60000010: 1d c0 41 07 1d c0 41 07 00 60 19 e8 00 60 19 e8
02:52
<
fxsheep >
] dh 0x60000000 0x20
02:52
<
fxsheep >
0x60000000: b000 0100 b000 0100 00e0 6d00 00e0 6d00
02:52
<
fxsheep >
0x60000010: c01d 0741 c01d 0741 6000 e819 6000 e819
02:53
<
fxsheep >
actual content should be:
02:53
<
fxsheep >
00000000 00 b0 00 01 f0 81 00 c0 e0 00 00 6d 82 18 0d 1f |...........m....|
02:53
<
fxsheep >
00000010 1d c0 41 07 18 e8 00 80 00 60 19 e8 47 80 00 60 |..A......`..G..`|
02:53
<
clever >
] db 0x60000000 0x5000
02:53
<
clever >
0x60000000: 00 b0 00 01 f0 81 00 c0 e0 00 00 6d 82 18 0d 1f
02:53
<
clever >
this is what my dump had, yeah that matches up
02:55
<
clever >
ive never seen it do something like that before, we can try to debug it more tomorrow
02:55
<
fxsheep >
btw I have rpi1 A+ V1.1, with old style revision number
02:55
<
fxsheep >
maybe has to do with chip revision
02:57
<
clever >
fxsheep: oh, do the logs mention the VPU frequency?
02:58
<
fxsheep >
there is, `VPU now at 500mhz(500), PLLC_CORE0 at 500mhz, PLLC_PER at 500MHz, PLLC at 500mhz
02:59
<
clever >
ah, i think the pi1 is only rated for 250mhz
02:59
<
clever >
it might just be overclocked too hard
03:01
<
clever >
fxsheep: try adding PLLC_CORE0_DIV := 2, to your project/rpi3-bootcode.mk file
03:04
<
fxsheep >
yeah it worked :P
03:07
<
clever >
that would explain things perfectly then
03:07
<
clever >
hermanhermitage's stuff never touches the clock config
03:07
<
clever >
so its running at a slow 19.2mhz
03:07
<
clever >
i'll need to add some model detection, and force a 250mhz limit on the pi1
03:57
<
fxsheep >
same thing causes `Fatal VPU Exception: Forbidden instruction` on rpi3-start
03:58
<
fxsheep >
strange that official overclock sets core to 500mhz and it worked well
04:01
<
fxsheep >
is it right to be stuck at `legacy layer`? don't have A/V cable yet
04:24
<
clever >
fxsheep: is the shell enabled in the project file?
04:25
<
clever >
starting app shell
04:25
<
clever >
fxsheep: does it print this line?
05:36
Stromeko has quit [Ping timeout: 268 seconds]
05:40
Stromeko has joined ##raspberrypi-internals
06:34
jcea has quit [Ping timeout: 256 seconds]
08:05
fxsheep86 has joined ##raspberrypi-internals
08:06
fxsheep86 has quit [Client Quit]
08:08
<
fxsheep >
yes it's enabled and no it doesn't print :(
09:24
bonda_000 has joined ##raspberrypi-internals
09:43
<
bonda_000 >
good morninh
09:43
<
bonda_000 >
morning
09:43
<
bonda_000 >
:clever can you look at isp_schedule lines 58-63?
09:43
<
bonda_000 >
in the start_x.elf
09:44
fxsheep has quit [Quit: Client closed]
09:44
<
bonda_000 >
whatever the result of iVar7 is, is a isp params struct
09:44
<
bonda_000 >
it's then passed into isp_program and from there every isp_write_X that modifies hardware regs takes values from that struct
09:45
<
bonda_000 >
while ((iVar7 = iVar3, iVar6 != 0 &&
09:45
<
bonda_000 >
what does this even mean
09:46
<
bonda_000 >
around line 58
09:57
fxsheep has joined ##raspberrypi-internals
10:10
<
bonda_000 >
that doesn't even look like C
10:22
<
bonda_000 >
imgur.com/a/hgvXT7E
10:22
<
bonda_000 >
iVar6 = isp.globals._4_4_
10:27
<
bonda_000 >
ISP2_7ea00000.TILE_ADDR = param_1 & 0x3fffffff | 0x40000000;
10:27
<
bonda_000 >
puts tiles in a '4' alias, L2 cache coherent (non-allocating)
10:53
<
bonda_000 >
it runs in a loop
10:54
<
bonda_000 >
starts at iVar6 = isp_globals._4_4_;
10:54
<
bonda_000 >
and then increments iVar6 = *(int *)(iVar6 + 0x11a9c);
10:54
<
bonda_000 >
on each loop iteration
12:58
fxsheep has quit [Quit: Client closed]
13:20
jcea has joined ##raspberrypi-internals
13:37
fxsheep has joined ##raspberrypi-internals
13:37
fxsheep has quit [Client Quit]
14:29
<
bonda_000 >
the only problem with the gp
14:29
<
bonda_000 >
is the actual data those globals point to, the structs, don't get XREFS
15:28
<
bonda_000 >
the solution I came up with so far is
15:29
<
bonda_000 >
allocate some memory, say at 0x20000000 and that will be our "isp_struct area"
15:31
<
bonda_000 >
and then assign a data type to that area "isp_struct" and make it of size 0x11a9c
15:32
<
bonda_000 >
if you set register value gp=0ef07e00 for this function, isp_schedule
15:32
<
bonda_000 >
then it will point to a global variable "isp_globals"
15:32
<
bonda_000 >
isp_globals is undefined8 initially
15:33
<
bonda_000 >
I initialized that memory segment and using byte editor wrote 0x20000000 to the top word of isp_globals (at 0ef09dc0)
15:34
<
bonda_000 >
you can see that three loops in this function isp_schedule traverse some kind of array of such isp_structs
15:36
<
bonda_000 >
each of those entries it passes through the function isp_tiles_ready and whichever one it stops at (isp_struct) is passed as param_1 to isp_program
16:48
bonda_000 has quit [Ping timeout: 268 seconds]
17:36
bonda_000 has joined ##raspberrypi-internals
17:50
<
bonda_000 >
:clever u here?
20:02
Bitweasil- is now known as Bitweasil
21:38
bonda_000 has quit [Quit: Leaving]