| Home | Forums | Register | FAQ | Search | Today's Posts | Mark Forums Read |
|
Welcome to the misticriver forums. You are currently viewing our boards as a guest which gives you limited access to view most discussions and access our other features. By joining our free community you will have access to post topics, communicate privately with other members (PM), respond to polls, upload content and access many other special features. Registration is fast, simple and absolutely free so please, join our community today! If you have any problems with the registration process or your account login, please contact contact us. |
![]() |
|
|
LinkBack | Thread Tools | Display Modes |
|
|||
|
PMP emulator progress
So, the PMP emulator I'm working on. I started this thing knowing absolutely nothing about emulation whatsoever, so it might take a little while as I still have much to learn - I've never touched any sort of hardware-related stuff before, being more of a software kind of guy; game extractors, RPG making tools, MMO engines are the sort of thing I'd do.
But anyway. The emulator currently boots part of rrload before it goes belly-up. I'm working on hooking up the rrload debug map, so that I can see what methods are being called and therefore where it's dying - I suspect I'll have to do a better job on the emulation of certain GIO pins before it'll boot any futher. I am getting some serial output, so I know that the CPU emulation is (so far) working correctly, as well as some basic serial port, ISA cache and clock controller emulation - just enough for the thing to kludge its way futher into rrload. There's also a basic debugger, but I'm going to add more disassembly/breakpoint type stuff when I start to need it. |
|
|||
|
Quote:
|
|
|||
|
Having support is always good
Hooked up the debug map, and it turns out that everything actually works as it should - the PMP is turning itself off. As the power button isn't being pressed on the unit or the remote, it must've been woken by the charger, and it turns off. I have no idea how to get around this - I can't force the power button to be permanently on, as it'll pick that up later and turn off. I might just force it to be on until x ticks have elapsed, and that should do for now. If I pull out all 1's from GIO - everything on - it keeps going, and tells me that it's hit an unencoded CPU isntruction. Progress. No-one minds if I post really tech, geeky progress news here to help organise my thoughts, I hope? Might be interesting. |
|
|||
|
Thread stuck. Keep up the good work and please keep discussion of things not related to the Emulator off this thread. Take it to PM if you have to or start a new thread. Anything off topic will be deleted.
A |
|
|||
|
Quote:
Anyways; szevvy have you thought about making your progress/work open-source? This way other people can look at your work and maybe comment something importante.
__________________
PMP-140 User....and REALLY UNhappy. Man I hope someone finishes ShamrockMan's firmware! |
|
|||
|
Yeah, I'm planning to set up a sourceforge project within the next few days.
edit: Actually - there's a few major issues I have to fx first. It will open source, though - eventually. Hopefully sooner rather than later. Last edited by szevvy : January 21st, 2006 at 07:33 PM. |
|
|||
|
As I am kind of a programming person, I would also be very interrested to see what you have already and to test it out and help getting it up and running as that would really help in getting a self compiled firmware up and running, instead of breaking my PiMP which actually runs quite well IMHO but is lacking some features which would not be all too hard to builtin. I won't unfortunately be able to commit a lot of time, though depending on the level of interrest I usually do *whistle* so bring it on
|
|
|||
|
Found why it's not copying flash => SDRAM; it seems there's a problem with CPU emulation. I'm not sure what's going on - perhaps someone could help me?
Here's the thing. In ARM7, a BCC (branch if unsigned lower) will execute if the carry flag is 0 - on Intel, a JB (jump if below) will execute if the carry flag is 1. WTF? edit: So...I'm assuming I'd need to negate the carry flag on a subtract and cmp - anything else? Last edited by szevvy : January 25th, 2006 at 02:51 AM. |
|
|||
|
I do have a ARM proc/compiler to test some stuff on, if you need it. I'm looking into getting some good doc's on the ARM proccessor.
When is the code going to appear on Sourceforge? I'd love to help code it. |
|
|||
|
I've got comment what I've got so far, mark things that aren't done, fix up nuances - the version of wxWidgets I'm using is outdated, etc. Then I'll put it up.
Last edited by szevvy : January 25th, 2006 at 05:18 AM. |
|
|||
|
Quit a few months - once the CPU and basic chips are hacked together, there's still the whole DM270 shemozzle, virtual HDD...
progress: 'Vimp' has been approved as a sourceforge project. Fixed a CPU bug that was causing the emulator to crash, but this has unearthed at least 2 more issues. Added a 'run till method call' button that makes it very easy to charge through code. If anyone can tell me if what instructions I need to invert the carry flag on I'd be grateful - just SUB and CMP or the whole lot? edit: Put what memory mapping I've done on http://www.misticriver.net/wiki/inde...ies_Memory_Map Last edited by szevvy : January 26th, 2006 at 03:32 AM. |
|
|||
|
Quote:
They already have ARM7TDMI support and can boot uclinux, which is what the PiMP is using afaik. |
|
|||
|
For one reason: this is my first foray into the lands of hardware and emulation. Unless I write the code myself at least once, I'm going to have no idea what's going on. I simply won't be able to extend SkyEye, as I won't know what GIO is and how it works, and so on. Also, SkyEye doesn't support the DM270 chip, only the ARM7TDMI CPU, which is the least of my worries. Thanks for the link though - I can now throw code at both and see if my CPU emulation is correct, these damn arithmetic flags are driving me nuts.
edit: best idea ever - anyone want to port openGL to the DM270? *drools* edit: ZOMG! Booting into rrload main menu! ![]() No input support yet. edit: Input support for the serial connection, I can browse menus and do stuff, yay! It doesn't boot any further...perhaps it needs a real firmware file, not just rrload. Last edited by szevvy : January 27th, 2006 at 02:29 AM. |
|
|||
|
is your e(si)mulator somewhere? or you could send it to me? iam interested in "playing" with rrload .. There is some /proc files from my PMP i think that could by useful ...
__________________
RE isn't crime: Z!L0G80[t4C], owner PMP 120 ...... ____________________ ___________________ PS.>Sorry for my bad English, Iam only a human |
|
|||
|
Quote:
I'm going on a holiday for a few days, so I'll put up what I have before I clean it up and put it on SourceForge... http://www.szevvy.com/Vimp.zip A few things to note: 1. The exe is the debug build. It runs very, very slow. 2. I haven't fixed an issue with the serial window - you have to click on the text box after every character, it's losing focus (I know why though) 3. The firmware file is from the source we have, rrload only (patched somewhat to give me more debugging info) - I haven't stiched in linux etc. 4. As part of my debugging, the program writes out every method call to method_trace.txt - it's not unusual for this file to grow to 50 megs of text. 5. Closing the app if the deubg / serial windows are open does not close the program, you have to ctrl-alt-del to close it 6. The exit menu funtion doesn't work 7. The source we got from iRiver is for a version not used it shipped pmp's...it drops into the rrload menu by default, and you have to set the default boot command as 'auto_boot' before it'll keep going. It crashes shortly after due to unfinished CPU emulation 8. The 'trace call' button in the debug window runs the CPU until it hits a method call, the 'step over' button runs the CPU until it gets to the instruction after the current one - this button is dangerous, the CPU sometimes never gets to the instruction after the current one 9. I haven't commented much yet. 10. Some disassembly is broken - writeback on a LDR/STR, shifted-register offest, etc. 11. This requires an older version of wxWidgets to build (2.61 I think), for anyone crazy enough to try and build it. 12. Make sure you go window->serial 0 before running, or it'll seem the emulator has hung when it's just waiting for you to give input 13. Don't backspace in the serial window. It won't work. All in all, very very unpolished, a pain in the ass to use, and not really meant for anyone yet...but you can have a play and a look, I guess. |