Lower level system development
How "low" do you want to go?

The standard Arduino IDE is not really for low level programming. You have ready-to-use libraries with high level interfaces, you don't really have to care about correct SFR initialisation, memory layout and other details.

Raspberry usually has a Linux OS running, and you develop very "high leveled". It's a powerful and flexible system, by far not only for children, but it's surely not the best solution to start with when you want to understand the lower levels of a computer.

My suggestion, as you already have an Arduino:
Study the microcontroller's datasheet and use the standard Atmel IDE instead of that high level Arduino development stuff. Start programming it in assembler instead of C. This is really low level fun :-)

If you want an even lower level, go for FPGA design. Try to get a softCore library, learn VHDL, and you can examine practically and very detailed what's going on in a CPU.