This is the bug/patch tracker for Rockbox. Click here for more information.
Quick links: Bugs · Patches · Rockbox frontpage
FS#8686 - Creative Zen Vision:M Rockbox Port
Attached to Project:
Rockbox
Opened by Maurus Cuelenaere (mcuelenaere) - Wednesday, 05 March 2008, 21:02 GMT+1
Last edited by Maurus Cuelenaere (mcuelenaere) - Wednesday, 30 July 2008, 18:00 GMT+1
Opened by Maurus Cuelenaere (mcuelenaere) - Wednesday, 05 March 2008, 21:02 GMT+1
Last edited by Maurus Cuelenaere (mcuelenaere) - Wednesday, 30 July 2008, 18:00 GMT+1
|
DetailsThis is the Creative ZVM Port FlySpray task; I opened it on request of NicolasP.
More information is available on http://forums.rockbox.org/index.php?topic=3320.new and http://www.rockbox.org/twiki/bin/view/Main/CreativeZVMPort. Current attached diff contains code which isn't very clean and certainly not formatted according to Rockbox guidelines, I'll have to look in to this (later). |
This task depends upon
Closed by Maurus Cuelenaere (mcuelenaere)
Wednesday, 30 July 2008, 18:00 GMT+1
Reason for closing: Accepted
Additional comments about closing: Already in SVN for a long time
Wednesday, 30 July 2008, 18:00 GMT+1
Reason for closing: Accepted
Additional comments about closing: Already in SVN for a long time
I formatted some files according to the guidelines and cleaned some code.
Current problems have to do with IRQ, sometimes the device gives me an not-set interrupt and this seems to be for example when I want to assign a start value to a char array.
Also the load_context() problems aren't solved either, and I think it is related to the above problem (something with IRQ-stack <-> normal stack?)
I tried making a basic Rescue Mode, but as the current button driver can't announce key releases it is hard to use them (there has to be some kind of command to the PIC to get the current pressed buttons, but I haven't found it yet -> do_write() )
Maybe a last remark should be that the player crashes when IRQ and FIQ mode is disabled -> I don't think this should happen?
So finally the code is running stable on the device (except for the load_context() part, which still isn't resolved).
I optimized the button driver and added a system_reboot(), the I²C driver now interprets addresses as the OF (although it is feed differently to the I²C registers), a basic rescue mode is available by pressing the Menu button (bottom right); I think that's all: for more info, see the code.
i2c.diff: adds support for I²C
spi.diff: adds support for ZVM + ZVM's LCD
system.diff: adds system_reboot(), support for ZVM and resets interrupts to default priorities + some minor changes
* threading now works apart from sleep_thread() -> I haven't figured out yet what's wrong with that
* I reworked scramble so now Creative FW generating is fully done during building (no more need to build a CIFF structure around it)
* ATA seems to work pretty decently, but the FS still hasn't been figured out yet
* some other changes
This patch hasn't been reviewed for unwanted changes, so it could affect other targets.
* added support for Zen V in scramble
* ATA works perfectly until it spins down; it won't spin up anymore currently..
* there's a simple FS info dialog when you press PLAY -> BACK -> CUSTOM -> BACK -> CUSTOM
* the sleep() bug still exists
* sleep() bug is fixed with workaround
* ATA problem is solved, it will spin up and down when it's needed
* some basic HDD browsing is implemented when PLAY is pressed (see code for more info)
* basic USB driver added
* 'normal' compiling works due to stub code added
* optimizations and (bug)fixes here and there
I also think clearing the interrupt at core level shouldn't be done? That's why I used the imx31 implementation as you suggested.
1) Making core_sleep does not actually sleep if an interrupt becomes pending after checking if the run list is NULL and the core_sleep operation has been committed to. Processor that allow wakeup with them still masked make this easy. SH and s3c2440 need some tricks to do it atomically since they won't wake with them masked.
2) Having them masked and forcing a task switch can leave them masked for an unbounded length of time anyway since the nesting doesn't operate as such when turning control to other code.
* new USB int handler making USB code totally stable
* some code is committed to SVN
The only problem now is that I only get SUSP, VBUS & RESM statuses..
* do endpoints like described in the manual(s)
* do NOT set up endpoint 0 as a non-control endpoint :)
* other changes I forgot to mention
* some (minor) USB changes
* added missing files in the patch
* fixed bug in button driver where first button wouldn't get detected correctly
* the usual USB changes without any useful results :(
Now I can receive the EP0SETUP and identify it as a GET_CONFIG, but that's as far as I currently can get.
* added keymappings
* non-bootloader can get to app_main(), but fails when some function uses IRAM-allocated data (something is currently wrong with IRAM) e.g. lcd_init()
* it boots Rockbox :)
* current requirements for booting Rockbox is that you've deleted the cfs partition and replaced it by a fat partition
* keymap is badly implemented, almost no keys work
* keys are for some unknown reason repeated indefinitely on main menus, so you can only choose the first and last item
* debug menu works
* code cleanup
It doesn't yield any (very) interesting results though, I'm waiting for the SoC project which I'm planning to help with porting to the DM320.