I'm reading about these two dev kits - Beagle Bone Black and Rasberry PI.
My goal is to better understand the ARM operation - for example, write directly into the processor, and be able to write into its low-level registers so I could totally controll its I/O pins - and not for example just being exposed to some API.
I'd also rather work in known IDE (as IAR) and write in C.
Which one of these two gets me closer to the processor?
They are built to get you into an operating system. Linux, android, etc.
You can get a simple arm board with no ethernet connection for, slightly less money to 2x more money. Typically you will pay more for less hardware. These boards are made (for not profit).
Either board will run C. There must be 100 compilers.
I can find arm only boards for more than the price of the pi. By the time you add a ethernet connection then the boards come with high level software.
Pi verses Black....for $10 you get much more.
There are Chinese UART-to-Ethernet converters on eBay. If your Internet needs are very simple, you can use these with your MCU. You can configure them to use a TCP connection or UDP sockets.
Most of the little ARM boards only have a arm. (rs232 and USB)
The PI and Beagle Black have Internet and video and USB and RS232. The point of the PI is to connect it to a TV and USB keyboard & mouse and have a stand alone development system. If you have a PC you can connect through the USB and develop on the PC and download. The point is that you can't get much of a 8-bit computer for that price so why not a ARM? There are many places where a PC is doing a very small job where a PI could do that job. Like send a email when the green house temperature is not right.
There are two ways to get an IP address. One is to simply assign it. This is called fixed IP. The other is to make your device to get the IP address from a DHCP server (the one that runs on your local network and assign IP addresses to the devices). Both are very easy to do with ARM/Linux. Only fixed IP is straightforward with the devices I mentioned.
For a server (which waits for TCP connections or UDP packets), fixed IP address is better. This is because the software that is going to connect to the server needs to know the IP address that it wants to connect to. If your device doesn't have a fixed address, you need to supply a mechanism which will tell what IP address your device currently has, such as dynamic DNS server. Fixed address doesn't require neither DHCP or dynamic DNS.
If you go with ARM/Linux, it is very simple to orgamize a socket communication with PC (or whatever it is) because you just write a communication program which is totally abstracted from the physical layer by Linux operating system.
Linux is an OS which lets your programs run on the computer as you would do in PC. To learn Internet communications, you need to find a good tutorial to use sockets in C. I searched for "socket tutorial" and there were too many, very few good ones though. This one is decent.