Page 2 of 6

Posted: Thu Jan 31, 2008 8:09 am
by xyjamepa
@Dex:
Why would you go with ARM?
and what's used for?

Thanx.

Posted: Thu Jan 31, 2008 8:09 am
by Zacariaz
Since i first started to investigate the ARM architecture i have been very much in love with it. It seems to be everything i have ever wanted from an architecture. Simplistic, low power consumption/heat, yet powerfull. However there is one problem, which may not be a problem at all, but i have trouble regarding which ARM processors, if any, includes a proper FPU. Floating point calculations without one is something that will be very complicated i think.

I also have have yet to find a osdev tutorial for the ARM architecture. Im sure its out there, but i haven't found anything of interest. Someone, maybe Dex? promised that he would do some work on a tutorial, and while i know that it is something that can't be done overnight, i havent heard anything about it since.

Anyway, ARM rules.

Posted: Thu Jan 31, 2008 10:09 am
by Dex
@abuashraf, Most new stuff is ARM base, from your router, to your Nintendo DS or your i-phone or mobil phone, or tv settop box.

Its all Zacariaz pointed out and more, but the big plus is you will find it easy to get a job, even if your OS is not taken up.
Its also easy to code a OS for, example in 90% of arm chip, the first 4k of nand is loaded to the beginning of ram and jump to, thats how it boots.
And this is what is loaded there

Code: Select all

:****************************************;
; ARM BootLoader.                        ;
;----------------------------------------;
; Prog by Dex.                           ;
; Coded with FasmARM.                    ;
; Part of the the x86 to ARM DexOS port. ;
; C:\fasmarm ArmBoot.asm ArmBoot.bin     ;
;                                        ;
;  C & B Bamford.2006(c)                 ;
;****************************************;
format binary
org	0			      ; code starts at offset 0.
use32				      ; use 32-bit code.

        b     reset                   ;
        b     undefined_instruction
        b     software_interrupt
        b     prefetch_abort
        b     data_abort
        b     not_used
        b     irq
        b     fiq

align 4

;********************************;
; boot start.                    ;
;********************************;
reset:
	mov r0, 0x4000000
	mov r1, 0x400
	add r1, r1, 3
	str r1, [r0]

	mov r0, 0x3101000
	mov r1, 0xff
	mov r2, 0x12c00
loop1:
	strh r1, [r0], 2
	subs r2, r2, 1
	bne loop1

LetsLoop:
	b LetsLoop

;********************************;
; just Loop For Now ;)           ;
;********************************;
undefined_instruction:
software_interrupt:
prefetch_abort:
data_abort:
not_used:
irq:
fiq:
LetsLoopForNow:
	b     LetsLoopForNow
Now "b label" is the same as "jmp label" in x86. so to setup software interrupts or IRQ is as simple as place you test code after the right label eg: "software_interrupt"
or "irq" etc.

The first bit of code thats run after booting or resetting, is it jumps to label "reset".
You can also making very small desktops
http://www.advantage6.com/products/A9home.html

@Zacariaz, Its a case of time, i have so many things to work on, but i will see what i can do.

Posted: Thu Jan 31, 2008 5:41 pm
by ucosty
ARM would be my choice, if I had access to some good hardware. Something like http://www.simtec.co.uk/products/EB2410ITX/avail.html would be nice.

Posted: Fri Feb 01, 2008 12:34 am
by AndrewAPrice
I think you're looking for something higher level than I'm suggesting, but if you want to start from scratch (building a custom PC + OS together) then look at http://www.opensparc.net/.

The T2 runs at around 1.4GHz. You just need to find somewhere that'll synthesise the Verilog source into an IC (must cheaper a prebuilt processor).

Then you'll need to build your own bridges for managing ports and interrupts which you'll might find designs for on the Internet. And a system clock.

For graphics you can find simple 2D microprocessors online, of you could look at a NVidia GoForce if you want advanced 3D power.

Physically building the system basically consists of using breadboards and stripboards and connecting connecting the pins together.

Posted: Sat Feb 02, 2008 1:06 am
by binutils
practically, we have few choices to programming, as you mentioned x86/arm/etc.

--
PS: Impractically, but my own choice is mmix or homebrewcpu or combo of that.

Posted: Sat Feb 02, 2008 5:35 pm
by bloodhound23
I wonder if you could write an OS for a GBA?

Posted: Sat Feb 02, 2008 5:40 pm
by Alboin
bloodhound23 wrote:I wonder if you could write an OS for a GBA?
Homebrew has been accomplished on nearly every console, so yeah, it's possible. (eg. DSLinux)

I've been recently playing around with the DS myself.

Posted: Sat Feb 02, 2008 5:45 pm
by bloodhound23
I'll look this up, but how would you get an OS on to a GBA. What features does it have or could be added?(memory,hard disk, etc.)

Posted: Sat Feb 02, 2008 5:55 pm
by Alboin
bloodhound23 wrote:I'll look this up, but how would you get an OS on to a GBA.
Via a flash cart. It'd be just like it was playing a game.

Posted: Sat Feb 02, 2008 6:03 pm
by bloodhound23
Is there anywhere I can find a manual for the GBA?

Posted: Sat Feb 02, 2008 6:40 pm
by Alboin
gbadev.org seems to have quite a bit of info. (Please note that I've never done any GBA dev.)

Posted: Sat Feb 02, 2008 7:03 pm
by bloodhound23
I have decided against GBA dev.

Posted: Sat Feb 02, 2008 7:04 pm
by bloodhound23
I might try to make a custom system out of a z80 or two. If that's possible

Posted: Sat Feb 02, 2008 7:36 pm
by earlz
Go out and buy a TI-83+...they are Z80