I've dropped the PROGMEM subjects and I'm going to focus on ARM. I'm going to develop a phone OS. Actually, it's not a phone. It's like a mobile PC that can optimizedly do things that Android phones can't.
The phone that I'd like to make would have capabilities like Sony Ericsson C510 which has ARM9, but only more powerful. That phone could do a lot (includes video editing) with so little RAM and Androids can't do that (without rooting XD)!
I don't know should I look for ARM9. Does anyone use ARM9 for any projects? Should I move on to a more modern processor? Which? I think I read somewhere that it's Harvard and that ARM7 (or ARM6) is Von Neumann. I don't want anything Harvard where there's a need for LPM/ELPM. A boot-up flash memory on the address space is okay.
The phone would be running something like Windows XP. I don't mean Windows XP literally, but I mean that all programs should run smoothly like Windows XP does on a 256MB RAM 1GHz computer. Not like on Android where Android just launches apps automatically in the background like it wants so you have to use task killers. That's stupid. That is the very reason why I'm making my own OS. In Windows XP, you have services, startup tasks and tasks that you run yourself and close whenever you want.
The programs it must be able to run are:
- the basic of every phone (settings, dialer, calls, messages, organizer apps, calculator, alarm (which also means turning on the phone if it's off to wake up the user!)...),
- camcoder (recording with camera),
- sound recorder,
- file manager,
- text editor,
- pdf reader,
- office file editor,
- media player (that supports all kinds of formats and codecs!),
- picture editor,
- video editor,
- music editor (MIDI score writer, MOD tracker),
- media converter,
- SDK IDE for my OS and AVR8,
- AVRdude (so I can use it to program my AVR devices on the go XD),
- task manager,
- web browser,
- networking (like port forwarding, hosing a game server, hosting a ftp server, ftp client)
- J2ME emulator
- Flash player (or something that's a mockoff of that because I doubt Adobe will make a Flash player for some OS appearing from nowhere)
Yep. Now, don't worry about all the programs. I can either write my own programs, port an open-source non-GPL program or have a team of people making software for my phone.
About the hardware, the phone needs to support these things:
- Audio jack input that has combined headphones and microphone contacts
- 2 USB 2.0 hosts (yeah, it's a PC!)
- 1 miniUSB 2.0 device slot
- 2 microSD cards each up to 16GB (for file transfer)
- 1 internal flash memory that's 2GB
- Little speaker
- Big speaker
- On-board keyboard with joysticks
- Double-touch screen
- Flash light (for the camera. I enjoyed the moments when I showed off my C510 camera's "reflector" while walking in the dark)
- Regular rechargeable battery (Li-Polymer or something like that) that lasts more than 24 hours under constant usage
The processor itself should have 1GHz speed and 512MB RAM.
What can I say? I'm trying to make a phone with PC's capabilities. If C510 could do that and Androids with more RAM and frequency can't, then I can make optimized software for Android-like hardware making it more powerful and optimized than Androids are (because Android uses Java (lol)). For an Android to do what a PC does, it needs to be more expensive and have 2x+ more RAM and frequency to do its job. I think that's really unoptimized. A cheap device with many capabilities is my goal.
So I'm asking you people. Which ARM processor should I use?