What is going on on ARM7 CPU?
Posted: Wed Oct 22, 2014 9:18 pm
Hello,
I'm not sure whether this really belongs to libnds or devkitARM section, but I've recently restarted trying to code for the DS.
I have known for a while that the DS has two CPUs, one ARM7 and one ARM9, and that the ARM7 has less processing power and less hardware access (it seems to deal with the parts that already existed on the GBA).
What I didn't realize until a few hours ago is that we're advised against writing ARM7 in homebrews, but I don't really understand why.
Is it a libnds-related decision, so that all library services execute in parallel with the homebrew? Or is there some deep hardware reason that I missed?
If it's only libnds architecture, is there any documentation (other than the code) on what would break if I use my own ARM7 image? Or what precautions I should take when writing one? Or is it completely "proprietary" and ARM7 should just be considered as a static black box, just like the GPUs?
A secondary question, that I would understand being not answered, is if I give up the comfort of libnds, are there specific things that must be done on the ARM7 in my baremetal homebrew?
Just to be clear, I'm not questioning the architecture, I'm just trying to get a clear understanding of the limits, so I can play safely inside the box ("playing" here meaning at first porting a basic Ada runtime so I can code in my preferred language).
Thanks in advance for your help
I'm not sure whether this really belongs to libnds or devkitARM section, but I've recently restarted trying to code for the DS.
I have known for a while that the DS has two CPUs, one ARM7 and one ARM9, and that the ARM7 has less processing power and less hardware access (it seems to deal with the parts that already existed on the GBA).
What I didn't realize until a few hours ago is that we're advised against writing ARM7 in homebrews, but I don't really understand why.
Is it a libnds-related decision, so that all library services execute in parallel with the homebrew? Or is there some deep hardware reason that I missed?
If it's only libnds architecture, is there any documentation (other than the code) on what would break if I use my own ARM7 image? Or what precautions I should take when writing one? Or is it completely "proprietary" and ARM7 should just be considered as a static black box, just like the GPUs?
A secondary question, that I would understand being not answered, is if I give up the comfort of libnds, are there specific things that must be done on the ARM7 in my baremetal homebrew?
Just to be clear, I'm not questioning the architecture, I'm just trying to get a clear understanding of the limits, so I can play safely inside the box ("playing" here meaning at first porting a basic Ada runtime so I can code in my preferred language).
Thanks in advance for your help