MyMPx.org

MyMPx.org (http://mympx.org/forum/)
-   General Discussion (http://mympx.org/forum/general-discussion/)
-   -   Hooray!!! Rockchip SDK! (http://mympx.org/forum/general-discussion/43348-hooray-rockchip-sdk.html)

AleMaxx 19th Sep 2009 4:32 am

Code:

ROM:600815A0                BL      delay_nops
ROM:600815A4                LDR    R1, =0x119
ROM:600815A8                SUB    R0, R1, #0x17
ROM:600815AC                BL      Mcupanel_RegSet
ROM:600815B0                MOV    R0, #0xA
ROM:600815B4                BL      delay_nops
ROM:600815B8                MOV    R1, #0x3000
ROM:600815BC                LDR    R0, =0x103
ROM:600815C0                BL      Mcupanel_RegSet
ROM:600815C4                MOV    R0, #0x32
ROM:600815C8                BL      delay_nops
ROM:600815CC                MOV    R1, #0x8F
ROM:600815D0                LDR    R0, =0x282
ROM:600815D4                BL      Mcupanel_RegSet
ROM:600815D8                MOV    R0, #0xA
ROM:600815DC                BL      delay_nops
ROM:600815E0                MOV    R1, #0x15
ROM:600815E4                ADD    R0, R1, #0x26C
ROM:600815E8                BL      Mcupanel_RegSet
ROM:600815EC                LDR    R1, =0x1BE
ROM:600815F0                SUB    R0, R1, #0xBC
ROM:600815F4                BL      Mcupanel_RegSet
ROM:600815F8                MOV    R0, #0xA
ROM:600815FC                BL      delay_nops
ROM:60081600                MOV    R1, #0
ROM:60081604                MOV    R0, #0x210
ROM:60081608                BL      Mcupanel_RegSet
ROM:6008160C                MOV    R1, #0xEF
ROM:60081610                LDR    R0, =0x211
ROM:60081614                BL      Mcupanel_RegSet
ROM:60081618                MOV    R1, #0
ROM:6008161C                LDR    R0, =0x212
ROM:60081620                BL      Mcupanel_RegSet
ROM:60081624                LDR    R1, =0x18F
ROM:60081628                ADD    R0, R1, #0x84
ROM:6008162C                BL      Mcupanel_RegSet
ROM:60081630                MOV    R1, #0xEF
ROM:60081634                MOV    R0, #0x200
ROM:60081638                BL      Mcupanel_RegSet
ROM:6008163C                LDR    R1, =0x18F
ROM:60081640                ADD    R0, R1, #0x72
ROM:60081644                BL      Mcupanel_RegSet
ROM:60081648                MOV    R1, #0x21
ROM:6008164C                MOV    R0, #7
ROM:60081650                BL      Mcupanel_RegSet
ROM:60081654                MOV    R0, #0x28
ROM:60081658                BL      delay_nops
ROM:6008165C                MOV    R1, #0x61
ROM:60081660                MOV    R0, #7
ROM:60081664                BL      Mcupanel_RegSet
ROM:60081668                MOV    R0, #0x64
ROM:6008166C                BL      delay_nops
ROM:60081670                LDR    R1, =0x173
ROM:60081674                MOV    R0, #7
ROM:60081678                BL      Mcupanel_RegSet
ROM:6008167C                MOV    R0, #0x12C
ROM:60081680                BL      delay_nops
ROM:60081684                LDR    R0, =0x202
ROM:60081688                BL      Mcupanel_Command
ROM:6008168C                MOV    R5, #0
ROM:60081690
ROM:60081690 loc_60081690                            ; CODE XREF: Mcupanel_PowerOnInit+3A0
ROM:60081690                MOV    R4, #0
ROM:60081694
ROM:60081694 loc_60081694                            ; CODE XREF: Mcupanel_PowerOnInit+394
ROM:60081694                MOV    R0, #0xFF0
ROM:60081698                BL      Mcupanel_Data
ROM:6008169C                ADD    R4, R4, #1
ROM:600816A0                CMP    R4, #400
ROM:600816A4                BLT    loc_60081694
ROM:600816A8                ADD    R5, R5, #1
ROM:600816AC                CMP    R5, #240
ROM:600816B0                BLT    loc_60081690
ROM:600816B4                LDMFD  SP!, {R3-R5,PC}
ROM:600816B4 ; End of function Mcupanel_PowerOnInit

You can add your own lcd init function. Use hw_fd5420.c -> Fd5420_PowerOnInit as a reference and take the above disassembly to fill in the correct values. Here is an example:
Code:

ROM:60081314                MOV    R1, #1
ROM:60081318                MOV    R0, #0x600
ROM:6008131C                BL      Mcupanel_RegSet
ROM:60081320                MOV    R0, #0xA
ROM:60081324                BL      delay_nops

translates to:
Code:

Mcupanel_RegSet(0x600, 1);
delay_nops(10);  // (10 dec = 0xA hex)

Good luck!

ChipRocker 19th Sep 2009 7:43 am

Hi!

I'm a new user of Rockchip players.
My one is Rizone hacked "32GB" (actually 4GB), and the chip is RK2705 (almost equal to RK2706).
It has 400x240 touchscreen, microsd slot and 4 buttons (+reset).
I've put my firmware here: http://www.mediafire.com/chiprocker

What I've found by now:
1) The player supports SDHC class6 cards (mine is 8GB).
2) It's easy to compile the firmware using RK27SDK, but it doesn't work on player.
Haven't tested the emulator yet.
3) It's easy to use SDK to compile RKW file from original firmware folders you've dumped from your player.
This way the process of recovery with RK27DM becomes very easy.
4) Inside the player I've found a 24MHz quartz; however, there's a 12MHz value in SDK files. Maybe, it should be changed.

I'm rather experienced C/C++ coder and I'm interested in good firmware for the player too. Maybe I'll try porting roxkbox when we collect some more info.

Alemaxx, how do you work with firmwares in IDA?

knob 19th Sep 2009 8:34 am

hi ChipRocker. Welcome. The more members who can help out the better, we are in need of anyone with c/c++ experience. :)
We have a lot of information already we just need to get enough members with the right experience interested.
Quote:

It's easy to use SDK to compile RKW file from original firmware folders you've dumped from your player.
not tried that, how did you do it? I could do with a RKW recovery firmware.


Quote:

You can add your own lcd init function. Use hw_fd5420.c -> Fd5420_PowerOnInit as a reference and take the above disassembly to fill in the correct values.
Thank you very much AleMaxx I'll try it out, I think it ought to work.

AleMaxx 19th Sep 2009 8:47 am

Hi ChipRocker,
yes, I use IDA and sometimes arm-elf-objdump. If you have IDA, load the BASE.RKW as embedded rom-image, choose ARM architecture and load address (ROM) 0x5FFFFFD4. When its loaded go to location 0x60000000 and press 'c'. This should give you a branch (/jump) to some code thats installs the ARM exception handlers. Following the reset vector directs you to the firmwares main(). By comparing the disassembly with the source from the SDK (rename those sub_XXX by pressing 'n') its quite easy to make sense out of it. For a more detailed description have a look at this: RKW Firmware Patching (dont use that patching program on the page).
Btw, Im also working on getting a real firmware running on the rk27 platform to get rid of this ultra crappy RockOS. So far I was aiming at ucLinux. I didnt get the UART working, so development is going really slow. A major step would be to get some virtual UART via USB (using CDC and ACM). I already found code for a virtual usb uart implementation for another platform but this doesnt seem to become easy at all (at least for me).

Regards

AleMaxx 19th Sep 2009 10:17 am

Here is what I got for the init code
(warning: may contain wrong values, this is an error-prone preocedure):
Code:

void KnobsLCD_PowerOnInit(void)
{
    Mcupanel_RegSet(0x600, 1);
    delay_nops(10);
    Mcupanel_RegSet(0x600, 0);
    delay_nops(10);
    Mcupanel_RegSet(0x606, 0);
    Mcupanel_RegSet(0x001, 0);
    Mcupanel_RegSet(0x003, 0x10B8);
    Mcupanel_RegSet(0x002, 0x100);
    Mcupanel_RegSet(0x006, 0);
    Mcupanel_RegSet(0x008, 0x808);
    Mcupanel_RegSet(0x009, 1);
    Mcupanel_RegSet(0x00B, 0x10);
    Mcupanel_RegSet(0x00C, 0);
    Mcupanel_RegSet(0x00F, 0);
    Mcupanel_RegSet(0x400, 0x3100);
    McuPanel_RegSet(0x401, 1);      // ORR    R0, R1, R1,LSL#10
    McuPanel_RegSet(0x404, 0);
    McuPanel_RegSet(0x500, 0);
    McuPanel_RegSet(0x501, 0);
    McuPanel_RegSet(0x502, 0x18F);
    McuPanel_RegSet(0x503, 0);
    McuPanel_RegSet(0x504, 0);
    McuPanel_RegSet(0x505, 0);
    McuPanel_RegSet(0x010, 0x11);
    delay_nops(10);
    McuPanel_RegSet(0x011, 0x202);
    McuPanel_RegSet(0x012, 0x300);
    delay_nops(10);
    McuPanel_RegSet(0x020, 0x21E);
    McuPanel_RegSet(0x021, 0x202);
    McuPanel_RegSet(0x022, 0x100);
    McuPanel_RegSet(0x090, 0);
    McuPanel_RegSet(0x092, 0);
    McuPanel_RegSet(0x300, 0x101);
    McuPanel_RegSet(0x301, 0);
    McuPanel_RegSet(0x302, 0x16);
    McuPanel_RegSet(0x303, 0x2913);
    McuPanel_RegSet(0x304, 0x260B);
    McuPanel_RegSet(0x305, 0x101);
    McuPanel_RegSet(0x306, 0x1204);
    McuPanel_RegSet(0x307, 0x415);
    McuPanel_RegSet(0x308, 0x205);
    McuPanel_RegSet(0x309, 0x303);
    McuPanel_RegSet(0x30A, 0xE05);
    McuPanel_RegSet(0x30B, 0xD01);
    McuPanel_RegSet(0x30C, 0x10D);
    McuPanel_RegSet(0x30D, 0x50E);
    McuPanel_RegSet(0x30E, 0x303);
    McuPanel_RegSet(0x30F, 0x502);
    McuPanel_RegSet(0x007, 1);
    McuPanel_RegSet(0x110, 1);
    McuPanel_RegSet(0x112, 0x60);
    delay_nops(50);
    McuPanel_RegSet(0x100, 0x16B0);
    delay_nops(10);
    McuPanel_RegSet(0x101, 0x147);
    delay_nops(10);
    McuPanel_RegSet(0x102, 0x119);
    delay_nops(10);
    McuPanel_RegSet(0x103, 0x3000);
    delay_nops(50);
    McuPanel_RegSet(0x282, 0x8F);
    delay_nops(10);
    McuPanel_RegSet(0x281, 0x15);
    McuPanel_RegSet(0x102, 0x1BE);
    delay_nops(10);
    McuPanel_RegSet(0x210, 0);
    McuPanel_RegSet(0x211, 0xEF);                // 239 (= 240 - 1)
    McuPanel_RegSet(0x212, 0);
    McuPanel_RegSet(0x213, 0x18F);                // 399 (= 400 - 1)
    McuPanel_RegSet(0x200, 0xEF);
    McuPanel_RegSet(0x201, 0x18F);
    McuPanel_RegSet(0x007, 0x21);
    delay_nops(40);
    McuPanel_RegSet(0x007, 0x61);
    delay_nops(100);
    McuPanel_RegSet(0x007, 0x173);
    delay_nops(300);
    McuPanel_Command(0x202);                // write to GRAM

    for (j = 0;j < 240;j++)
    for (i = 0;i < 320;i++) Mcupanel_Data(0x000000);        // pure black
}

// not sure if this is really a "ScanDirSet" - its a subroutine taking two arguments
void KnobsLCD_ScanDirSet(UINT16 XSize, UINT16 YSize)
{
    Mcupanel_RegSet(0x201, XSize);
    Mcupanel_RegSet(0x200, YSize);
    Mcupanel_Command(0x202);
}

// possibly data is of type struct { uint16_t x; uint16_t y, uint16_t w, uint16_t h; };
void KnobsLCD_Unknown(uint16_t *data)
{
    Mcupanel_RegSet(0x210, (short)data[1]);
    Mcupanel_RegSet(data[1] + data[3], data[1] - 1);
    Mcupanel_RegSet(0x212, data[0]);
    Mcupanel_RegSet(0x213, data[0] + data[2] - 1)
    KnobsLCD_ScanDirSet(data[0], data[1]);
}

in hw_define.h change
Code:

-#define    LCDPANEL        MCUIF_ILI9320_16B
+#define    LCDPANEL        MCUIF_KNOBSLCD_18B
#define      LCDTYPE        MCU18_PANEL  // make sure this is defined

in hw_mcupanel.c add these lines
Code:

void Mcupanel_PowerOnInit(void)
{
#if(LCDPANEL == MCUIF_KNOBSLCD_18B)
    KnobsLCD_PowerOnInit();
#endif
...

and some more things to change...

ChipRocker 19th Sep 2009 10:49 am

AleMaxx, thanks a lot!

Looking at your disassembly I've found similiar code in my own firmware.
And...... the code is from hw_Ili9320.c!
Hmm... that means my code is already used when building firmware...

AleMaxx 19th Sep 2009 12:37 pm

Hi ChipRocker,
so the firmware you build ends up as an .RKW file and if you copy it to the System folder it does not get executed? What exactly does happen? In my first attempts to write my own code I modified a firmware internal filename ("HOLDON.BIN") to get some feedback. The firmware will write to/create this file when the player is turned off. You could compare the disassembly of your built against the original firmware maybe using
Code:

arm-elf-objdump -D -m arm -b binary BASE.RKW | cat > BASE.asm
arm-elf-objdump -D -m arm -b binary NEW_BASE.RKW | cat > NEW_BASE.asm
diff BASE.asm NEW_BASE.asm

Another issue maybe that the crc32 codes (for header and/or code) of your new BASE.RKW are incorrect this would prevent the loader from executing it but I think it will load the backup version from "SYSTEM00" folder instead. Compatible crc32 generation code can be found in that rkwpatch.c thats available from the link I did mention earlier.

Wait, did you check whether you have an 16bit or 18bit interfaced lcd? Locate that transform function thats called from within mcu_writereg and then its a matter of 0xFC00 or 0x3F00 iirc.

Regards

ChipRocker 19th Sep 2009 1:20 pm

When I use the base.rkw built with sdk, and try turning the player on, it just gives a single flash of backlight and does nothing more.
Reset gives the same reaction. However, when plugging USB in, the screen shows a few lines of crap, and the player gives access to all disks.
Looks like a problem is not in screen init, but it's more fundamental.

Yes, I'm comparing the firmwares using IDA. Looks similiar, but there are differences. Continue digging...

No, I don't think the problem is in CRC; if you try running 'version.exe -F:base.rkw' it says, that CRC32 is ok.

Both firmwares have 0xFC00.

AleMaxx 19th Sep 2009 2:04 pm

Okay, I dont have anymore ideas but to actually confirm that the initialization is okay you could try changing the fill color in the last part of the init to something else then black possibly adding a "delay_nops" after or inside the loop. Btw, there is some more code in the lcd init procedure that gets executed afterwards and prevents access to the screen via mcu_xxx routines. If you out comment these lines:
Code:

/*
        clr_regbits32(BUFF_CTRL, b_MCU_BYPASS);
        write_reg32(LINE0_YADDR, 0x7fe | b_ALPHA_EN);
        write_reg32(LINE1_YADDR, (XSize - 2) | b_ALPHA_EN);
        write_reg32(LINE0_UVADDR, 0x7ff);
        write_reg32(LINE1_UVADDR, (XSize - 1));
        write_reg32(LINE2_YADDR, (2*XSize - 2) | b_ALPHA_EN);
        write_reg32(LINE3_YADDR, (3*XSize - 2) | b_ALPHA_EN);
        write_reg32(LINE2_UVADDR, (2*XSize - 1));
        write_reg32(LINE3_UVADDR, (3*XSize - 1));
        write_reg32(DELTA_X, 0x200);
        write_reg32(DELTA_Y, 0x200);
        write_reg32(ALPHA_ALX, XSize - 16);
        write_reg32(ALPHA_ATY, 0x0);
        write_reg32(ALPHA_ARX, XSize - 1);
        write_reg32(ALPHA_ABY, YSize);
//        write_reg32(INTR_MASK, b_INTR_PERLINE | b_VERT_INTR);
*/
        // Lcdctrl_Display(ON);
        clr_regbits32(LCDC_CTRL, b_LCDC_STOP);
//        set_regbits32(BUFF_CTRL, b_RS_HIGH | b_BUFF_WRITE | b_BUFF_START);
        // Screen_Configure->Intr_Disable(INTC_LCDC);

(I slightly renamed the function names) mcu_xxx comands will still allow you to access the screen (maybe useful if you want to output messages to the lcd). I have some font code that works this way, I could upload it if you think it may be useful.

ChipRocker 19th Sep 2009 2:33 pm

Oh, I've mistaken a bit.
The code was just _like_ in hw_Ili9320.c, but actually not the same.
I've spent about an hour rewriting this file using the disassembly of original firmware, and now what.... I have the screen working!!!

The player still doesn't start with play button - just flashes backlight (any ideas?).
BUT when I plug in usb, it gives access to disks, and shows random pictures (the order is wrong) from resources on red background!!
That means that the screen init function works OK!!

knob 19th Sep 2009 3:39 pm

My screen is working now too. But it is flickering badly. Just copied the settings from the dump above into hw_lli9320.c too.

Needs some more work, but its a lot better at least I can make out the menu option I'm in.. just
My start/stop/play/pause button works ok and so do the navigation buttons, but they are mixed up.

AleMaxx 19th Sep 2009 3:49 pm

No, I dont have any ideas, this could be related to just anything that follows the lcd init and currently we dont have any real debugging capabilities to pin it down. I never compiled the firmware myself but I wrote some tool to make the hidden partition show up. It basically sends a SCSI Read12 command with LBA=0xFFFFFFFE and LUN=0xE0 (bottom of BulkOnly.c). If the USB mass storage is working you could plugin some more cases there basically establishing a communication link. You could even upload code and execute it on the device, fetch messages, etc...
If that works you could define some debug-printf alike function that writes messages to a buffer that you later on fetch via the above method. What do you think? Btw, if youre on linux I can send you my SCSI code as a starting point for the host side app. If youre on Windows I think its possible to emulate these SCSI commands with bulk transfers using libusb. There is some firmware tool for rk26xx players that does just that SourceForge.net Repository - [s1mp3] Index of /trunk/rockchip/rkfwx (iirc).

Good luck!

knob, you used the c code I pasted? Did you compare it to the disassembly? Also did you keep the ScanDirSet and Standby functions from the original ILI? These may not work with your lcd and may lead to this behaviour. I assume you set LCD_W and all other defined appropriately.

knob 19th Sep 2009 4:11 pm

I'll recheck the code against the disassembly. LCD_W and LCD_H I already set for the emulator.

Yes I did keep the ScanDirSet and Standby functions from the original ILI so that might be the problem. Thanks for your help we are making good progress. ;)

AleMaxx 19th Sep 2009 4:21 pm

Well, your init code looks to be much more similar to fd5420 then to ili9320 and for the fd5420 ScanDirSet is just left empty. If that doesnt fix it maybe try to plug in the other functions that I posted where they seem to make sense. Although the one that takes the array/struct argument doesnt seem to fit anywhere I think.

flasher86 20th Sep 2009 1:46 am

Hey, I am thinking of buying a new player, 2706 based. And I wonder which one would be the best for my needs.

My player should have:
- normal buttons, on the right (not on upper or lower side)
- no touch screen
- no big screen
- components supported by SDK, so I would create some stuff

Any tips?

knob 20th Sep 2009 2:13 am

This is the best Rk27xx I found so far for the price, its the one I am working on now:-
8GB 3 16:9 QVGA MP3 MP4 MP5 Player FQ5-8R [MP4] - $43.74 : TinyDeal Direct Online Store, MP4/MP3 Player, Mobile Phone, Memory Card, Accessories

you can get a 4GB for a bit less too

knob 20th Sep 2009 12:18 pm

Got the display perfect now just had to set the right screen in sysconfig.h to 400x240:-
Quote:

//LCD ¿í¶ÈºÍ¸ß¶È.
#define LCD_W 400//knob
#define LCD_H 240
Only thing now is the setting is not right in standby mode, but I'll try the setting from fd5420 as AleMaxx as suggested. The settings from the dump were spot on. Thanks to Alemaxx.

update yes!. The display is fully sorted now. Just copied the standby setting from fd5420.
Noticed the loudspeaker doesn't work when the earphone is unplugged. Need to look at that next. :)

http://i203.photobucket.com/albums/a...a/P1010096.jpg:D

flasher86 21st Sep 2009 2:33 am

Well, knob, your player seems to be good. Resolution 400x240 is just perfect for me, although are those buttons doing their job? I mean, isn't it tiresome to click them? I want to have player with really nice and easy keyboard input. I looked through the list of functions and I noticed that it has fewer functions that SDK has. Is it correct? By creating your firmware you will get NES and AlbumArt support?

And one more thing, I am from Poland, how to check on that site the cost of shipment?

AleMaxx 21st Sep 2009 5:15 am

Hi flasher86,
I dont know what particular features this player has, but from the button layout I would say its not suited for playing nes-games. Actually I havent seen any rockchip player that has a game-friendly keyboard layout. If youre looking for such kind of player I would recommend one of these Sunplus SPMP305x players (Main Page - Sp305x wiki). The CPU is less powerful, its an ARM9 @ approx. 168MHz but its an ARM9 so it has an MMU which the rk27s ARM7(+dsp) lacks.
The shipping costs at tinydeal are zero Zloty I think (top of page).

Regards

flasher86 21st Sep 2009 5:27 am

Actually I am not so interested in games. I would stick to rockchip. But despite unfortunate button layout it is possible to expand functionality of the player, assuming that SDK RK2706 is even more up to date than original firmware. I'm just thinking

For example, on seller-site knob gave it says that it doesn't support FLAC nor APE, while SDK includes the codecs for them. Though I may be wrong at this.

AleMaxx 21st Sep 2009 5:55 am

Of course you can add all kind of codecs, they're not hardware dependent. Btw, gamewise a touchscreen player would be just perfect for any type of games that rely on mouse control like those old lucas arts adventures (ScummVM) etc.. Anyway, things like FM-radio, touch-screen and the like have to be supported from the start and you cant use the SDK/software to add these later on.

Regards

knob 21st Sep 2009 9:36 am

Quote:

Originally Posted by flasher86 (Post 283128)
Well, knob, your player seems to be good. Resolution 400x240 is just perfect for me, although are those buttons doing their job? I mean, isn't it tiresome to click them? I want to have player with really nice and easy keyboard input. I looked through the list of functions and I noticed that it has fewer functions that SDK has. Is it correct? By creating your firmware you will get NES and AlbumArt support?

And one more thing, I am from Poland, how to check on that site the cost of shipment?

Well the code is in there for a lot more functionality than my player has. I think it is just a matter of enabling it to suit my player.

For me it is more important to be able the make the player the way I want it than how the player looks.

I'm not worried about the buttons because they can be remapped anyway if you got the SDK.

flasher86 22nd Sep 2009 1:13 am

Quote:

make the player the way I want it
KNOB. I'd like that too. I care about small little thing which my player must have :D

BTW. SWRIL has answered about file access in RKP files. Currently it works only on SLC memory, and I am not sure how he did it. As I looked through the file he uploaded, it seems that he modified the firmware to add file system functions to memory of Platform_fun. If I am correct, then file access will be available only on modified firmwares, therefore such a solution is not helpful for most people (including me with keyboard problem, and including you with lack of backup firmware for your rk2608 player). I hope I'm wrong, because if I am not, I still don't get file access.

EDIT: I was right, file functions are usable only by using modified firmware.

knob 23rd Sep 2009 8:29 am

There is a nasty bug in the SDK.

The audio only plays one channel, but through both earphones, My original firmware is ok, so it should be fixable in the SDK, however this could be difficult as we do not have any RK27xx datasheets at all.

I wonder if anyone else is getting this? If we can't get this fixed the project is dead in the water. :(

flasher86 23rd Sep 2009 9:29 am

I looked through the code and it looks ok. Perhaps player thinks it is in speaker mode (even RK260X players controls speaker digitally). Check whether this happens to all the audio codecs. If you can, make some on screen messages in audio source files, so you can see what happens with buffers and variables. Make a check function which will check if Right and Left buffers are the same. And if they are different, then check at what point they become the same. In RK260X pcm buffer is joined together from two channels, maybe it is the same with 2706. If that so, also check whether it combines the channels properly. It should be combined into buffer of INT. One left INT, next right INT and so on.

If there's a bug in compiled codecs, then it is for sure dead project. I hope you will figure this out, because I already made a decision to buy 'your' player, but only if SDK works perfectly.

borelg 23rd Sep 2009 10:01 am

I buyed this player last week LINK. In Options-> System information it says:

Product name: RK27SDK
Major version ID:2.2
Hardware ID:080722

The memory size is 16 gb. There is a problem reproducing music: the volume of the singer in all songs is too low! The instruments and the base of the song is perfect but the singer volume is very low!! do you know why? Is it possible to modify my new firmware with another firmware only in the part that regards music player?
Thank you in advance guys!

knob 23rd Sep 2009 10:32 am

Quote:

Perhaps player thinks it is in speaker mode (even RK260X players controls speaker digitally).
flasher. I think you are right. The loudspeaker doesn't work when I unplug the earphone.

There is no worry with the codecs, they are installed in a folder outside the firmware in Rk27xx, so you can swop them around as long as the firmware supports them.

I'll have a dig around to see if I can turn the "speaker mode" off.

borelg 24th Sep 2009 9:22 am

Quote:

Originally Posted by borelg (Post 283184)
I buyed this player last week LINK. In Options-> System information it says:

Product name: RK27SDK
Major version ID:2.2
Hardware ID:080722

The memory size is 16 gb. There is a problem reproducing music: the volume of the singer in all songs is too low! The instruments and the base of the song is perfect but the singer volume is very low!! do you know why? Is it possible to modify my new firmware with another firmware only in the part that regards music player?
Thank you in advance guys!

Help me please :(

flasher86 24th Sep 2009 9:34 am

Quote:

Originally Posted by borelg (Post 283200)
Help me please :(

It's really weird man. I know that all the songs (no matter what format) store some information for surround effect (phase position) so stereo music can be expanded to 5.1 channels, using for example AC3Filter of FFDShow. Therefore it is possible to explicit only voice from the stream, or only background. But I didn't heard that any portable player is up to this (what's the reason anyway).

BUT, What is even more weird, is that when I had problems with mini-jack socket in my player (already fixed) sometimes it happened that I heard only background of the music (though distorted) without the voice (or at low level). I don't know how was it possible that it was splitting the sound because of broken minijack, but that's a fact.

Perhaps it is the same with you. I would recommend you to test mono music file in your player (as it doesn't store surround phase information) and see if the voice is louder.

If it helps, you must reconvert every single song, cutting of the surround phase information (but I don't know yet how to cut it off, I don't know software for that).

DSX 24th Sep 2009 10:15 am

Knob, could you post your source code for your player's firmware because I have the 4 gig version of your player, but, every time I try to compile the firmware and copy it to my player, it formats both my partitions and so I keep having to revert to my original firmware.

Also, does the vol key on your player work as the back button, because I think I have found the problem if that's the case.

knob 24th Sep 2009 10:27 am

Ok I'm uploading it now. LINK:- http://www.sendspace.com/file/fjfwpa
I have been playing around with the bmps and fonts though and trying to remap the keys.
My "up" volume works ok, but I can't remap the down volume!

I don't have any problem with the partitions, not sure if it will help, your player could be different.

Does music play ok on your player?
Please post your findings, we need many members involved.

flasher86 24th Sep 2009 11:41 am

Hi knob, I've been trying to get to audio sources in your SDK, and I have terrible news so far! :( The most important audio functions are precompiled into this file: RK27XX_EQ_V071228R.a

It's a shame, because SDK for RK260X has these functions kept open source.

look at msaudspapi.h file. There are functions listed connected with processing audio buffer at very last point of decoding data (uploading PCM data to audio digital processor).

You can try changing the arguments of calling these functions. There are interesting values to set like ms_set_leq_target.

I really hope you'll fix the audio, because I want to buy the player as yours as soon as possible. $43 and free shipping is not big money, you know it's tempting :D

DSX 24th Sep 2009 12:02 pm

I think something is wrong with my compiler, it will not compile certain commands. It declares them as variables.

Knob, thanks for the source code, now i know that I'm getting somewhere because my screen now initialises :D but then goes red.:(.

Could you post a compiled version of your firmware because I'm pretty sure my player has the same hardware as yours just less storage space and i think my compiler dosen't like me (:confused:)

knob 24th Sep 2009 12:15 pm

Here's compiled firmware from SDK ;-
http://www.sendspace.com/file/e732nq

DSX 24th Sep 2009 12:19 pm

Thanks knob, much appreciated!

flasher86 25th Sep 2009 1:37 am

Hey knob, what's new? Have you looked at HW_rockcodec.c file in order to try to solve your audio problem?

borelg 25th Sep 2009 9:22 am

Quote:

Originally Posted by borelg (Post 283184)
I buyed this player last week LINK. In Options-> System information it says:

Product name: RK27SDK
Major version ID:2.2
Hardware ID:080722

The memory size is 16 gb. There is a problem reproducing music: the volume of the singer in all songs is too low! The instruments and the base of the song is perfect but the singer volume is very low!! do you know why? Is it possible to modify my new firmware with another firmware only in the part that regards music player?
Thank you in advance guys!

I tried 32 ohm earphone and 16 ohm earphone. It works with only with this earphone LINK and only in Wireless mode... Why?:confused:
I contacted the seller and he says to me that he can remplace the player but I ship me the player only after he received my player (the one that I've now). Who guarantee to me that he ship me the new player?
Thank you in advance guys :(

knob 25th Sep 2009 10:24 am

Quote:

Originally Posted by flasher86 (Post 283219)
Hey knob, what's new? Have you looked at HW_rockcodec.c file in order to try to solve your audio problem?

Yes I already had a look at this. I tried to enable some settings for another player, but I still have the same problem.

I'm sure there must be a way to make this work, this firmware is designed for more than 1 player type, but I can't see anything that looks like a solution.

I was hoping the audio would be ok, this is a difficult area for me to fix. :(

I was hoping someone else would test the firmware out on a different player, I'm SURE someone has, I just wish members would share information a bit more.:(

flasher86 26th Sep 2009 5:16 am

Too bad, it would be great if someone who has a working SDK verified one-channel audio problem. As I looked SDK provides 2 or 3 different types of codecs for that. Have you tried to switch them? And perhaps trying unplug headphones and see whats happening on different codecs.

I'm looking forward to the solution, and also I'll try to get deeply into the source, there should be something.

AleMaxx 26th Sep 2009 6:35 am

Hi Knob,
so your selfbuilt firmware has audio problems while the original firmware doesnt? In that case I would recommend to look at the working firmware code and compare it to the sdk source. This would require some ARM assembler knowledge and I recommend the non-free IDA disassembler. Have a look at one of my previous posts where I explained how to load a BASE.RKW firmware file if youre not familiar with this. If youve got any further questions, just ask. I havent dealt with sound so far. Also are you interested in getting a real OS running on your player or just modifying that rockchip firmware?

Regards


All times are GMT -7. The time now is 8:38 pm.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2015, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.6.0 RC 2