[raspi-internals] I got ARM to work.

  • From: "Kristina Brooks" <tinab@xxxxxxx>
  • To: raspi-internals@xxxxxxxxxxxxx
  • Date: Sun, 15 May 2016 14:01:59 +0100

Sooo, I got ARM to boot, kind of.
In short, with herman's assistance and getting the right values for
PLL registers for ARM (as well as various other bits), I got the ARM
core to start up and actually do something useful. For now, my ARM
code is very simple and simply starts with two nops and writes a
counter there, incrementing it after a looped delay.
On RPi2 this works fine, the counter keeps running and incrementing
the memory value (even though the error register says ARM halted in
debug mode according to the header, it's still running):
ERRHALT: 0x20 STATUS: 0x4 MemStart: 0x9ERRHALT: 0x20 STATUS: 0x4
MemStart: 0x9ERRHALT: 0x20 STATUS: 0x3 MemStart: 0x9ERRHALT: 0x20
STATUS: 0x4 MemStart: 0xBERRHALT: 0x20 STATUS: 0x2 MemStart:
0xCERRHALT: 0x20 STATUS: 0x2 MemStart: 0xEERRHALT: 0x20 STATUS: 0x1
MemStart: 0x10ERRHALT: 0x20 STATUS: 0x5 MemStart: 0x12ERRHALT: 0x20
STATUS: 0x2 MemStart: 0x13ERRHALT: 0x20 STATUS: 0x2 MemStart:
0x13ERRHALT: 0x20 STATUS: 0x2 MemStart: 0x15ERRHALT: 0x20 STATUS: 0x3
MemStart: 0x16ERRHALT: 0x20 STATUS: 0x4 MemStart: 0x19ERRHALT: 0x20
STATUS: 0x3 MemStart: 0x1A
On RPi1 things are not so great, it appears to fetch the instruction
correctly and makes a single write to memory (which I can pick up from
VPU side) but after that appears to hang. To quote myself from IRC:
12:20 <        kristina> ARM hangs after the first write12:20 <       
kristina> either AXI is not acking the bus tx (however, it still
manages to fetch correctly???)12:21 <        kristina> or i did reset
incorrectly which can lead to the core misbehaving12:21 <       
kristina> or i clocked it wrong12:25 <        kristina> on rpi2 this
works though12:25 <        kristina> maybe it's because i didn't
configure the cache12:25 <        kristina> arm on rpi1 tries to use
the cache and silently dies12:25 <        kristina> if it's wthrough
L212:26 <        kristina> even though it's uncached sdram it might
still hit the cache subsystem and bug out12:26 <        kristina> on
rpi2 it starts all 4 cores and it increments the counter over and over
which is good12:27 <        kristina> on rpi1 is increments it once
and hangs

Other related posts: