This is the bug/patch tracker for Rockbox. Click here for more information.
Quick links: Bugs · Patches · Rockbox frontpage
FS#7113 - Gigabeat F really fast restart (resume)
Attached to Project:
Rockbox
Opened by Alex Gerchanovsky (shoora) - Saturday, 05 May 2007, 22:41 GMT+2
Last edited by Alex Parker (BigBambi) - Sunday, 06 June 2010, 01:21 GMT+2
Opened by Alex Gerchanovsky (shoora) - Saturday, 05 May 2007, 22:41 GMT+2
Last edited by Alex Parker (BigBambi) - Sunday, 06 June 2010, 01:21 GMT+2
|
DetailsThis patch enables fast resume from sleep mode.
Currently Rockbox just put Gigabeat to sleep. But firmware uses permanent GSTATUS3 register for return address. On coldstart this register set to linux loader in firmware. This address is 0x10300. Good thing is - stack is set to boot RAM, so all content of RAM is untouched. There is only only one problem - at this point none of hardware (including MMU) is initialized. So I had to put some additional initialization which is normally done by linux loader. Instead of full implementation of 'suspend' function I just made shortcut directly to to gigabeat RTL initialization (0x30000100) bypassing linux loader and Rockbox bootloader. This saves a few seconds. We can continue work on this implement instant resume! Then you may consider this as proof of concept. |
This task depends upon
I have some problems dealing with LED driver. May be somebody Markun will help us?
I like this patch and I would be interested in committing this, but there are a couple of bugs that need to be worked out.
First we need to get rolo working before this patch is committed. Development a pain if work is being done on the core and we can't update the code without power cycling.
Second, I get strange problems with the hard drive after using this patch for about a day where the drive takes forever to spin down on startup and consequently takes a while to turn off.
I don't think that you need the modifications to the backlight-meg-fx.c file anymore with my latest commit. I have been trying to make this patch work smoother in the process of fixing the various button/backlight bugs in the code. I didn't check with my last few changes before commit, but I will look later today hopefully.
Finally, we should flip these bits in a more appropriate section if they are necessary: GPGDAT = (GPGDAT & ~(1 << 12)) | (1 << 11); I will check into those bits as well though, we currently don't know where GPG12 connects (I suspect it enables/disables usb charging), GPG11 should be initialized (GPGCON, GPGUP) in power-meg-fx under the ide_power_enable section (and this may fix the ide spinning problems). Specifically gpg11 enables/disables the 3.3 volt line to the hard drive.
Also, what is the purpose of the changes to thread.c?
We don't need to patch new backlight-meg-fx.c.
I needed change in thread.c to compile it with ARM-GCC 4.1.1.
2. Debug menu item "Restart" for cold restart.
3. Simple implementation of rolo_load. Now after question "Reboot now?" system will actually reboot.
I changed the tabs into spaces, removed the LCD init code and moved your gcc fix and fake rolo to seperate files.
http://svn.rockbox.org/viewvc.cgi/trunk/firmware/thread.c?r1=14878&r2=14879
It looks like the above change removed the lines (line 100) that the GCC patch was replacing.
Then added this in its place
static inline void store_context(void* addr)
if I knew how to program I would fix the patch but I don't :( (but I am getting a book on C)
Can someone look into this?
There are plans to completely replace the toshiba firmware in flash as Oleh mentioned - this does speed up the startup of rockbox by a few seconds and also gives way to adding some other features. Currently, flash replacement is being tested and bugs are being ironed out, but do not expect a user release anytime soon due to the real possibility of bricking your gigabeat with no method to recover without some special equipment (see GigabeatJTAG in wiki).