Rockbox Development > New Ports
Creative Zen Vision:M
mcuelenaere:
--- Quote from: Falafel on February 20, 2008, 10:32:11 AM ---Hmm, but what exactly is it that this does?
I mean, I've changed it a bit and my screen gets garbled.. And if I set Height and width to 480x640 (because of the portrait-mode) it fills the screen almost, but it still misses a piece on the right side if I hold in the ZVM way. (too bad I have to go, because now I don't have time to take pictures)
--- End quote ---
Never mind that one, as it seems you don't have that problem I've got.
I think your problem is the BASEPX and BASEPY values: these should get adjusted to the Zen Vision ones (they can be found by disassembling the original firmware; they appear in FRESC and in ©TL)
mitch04:
hey mcuelenaere can you please take a photo of your zen please?
mcuelenaere:
Progress is hard as a lot of the internal Nucleus messaging and tasking functions are used instead of just direct calls to the hardware, so I'll first have to figure out where they are stored and what's done on that particular value etc..
My current theory is that all keys, key-backlighting, hold switch (and maybe ON/OFF switch) are controlled by the PIC which communicates with the CPU through DM320 built-in I2C.
Also the RTC is controlled through I2C. I haven't found anything about power management nor LCD backlighting, although I do know that LCD can be shut off through BITSET2/BITCLR2.
The LCD is driven directly by the DM320 built-in OSD support, so switching between LCD and TV-out shouldn't be that hard.
If anyone wants to join in figuring out the OF, all help is appreciated ;)
@mitch04: there are some pictures at page 29
@Falafel: if you install CreativeWizard, the source is included in the installation directory (Program Files/CreativeWizard/Source)
Falafel:
Unable to figure out how to find BASEPX and Y in the OF I just randomly picked a number..
And it happened to be right :)
But on a sidenote, I wouldn't mind helping you, but I'm not sure how and where to start.. Your using IDA to look for functions and memory addresses right?
mcuelenaere:
--- Quote from: Falafel on February 22, 2008, 09:57:51 PM ---Unable to figure out how to find BASEPX and Y in the OF I just randomly picked a number..
And it happened to be right :)
But on a sidenote, I wouldn't mind helping you, but I'm not sure how and where to start.. Your using IDA to look for functions and memory addresses right?
--- End quote ---
Right, so if you could get a hold on a version of IDA (I use v.5.2, so >5.0 should be good) that'll help a lot.
Then the most important files at the moment are FRESC and (C)TL; they both consist kind of the same (speaking of the internals) but FRESC is a smaller version of (C)TL (i.e. it doesn't have to initialize sound and DRM etc..).
Currently I'm working on FRESC; my IDA database of (C)TL is growing a bit too big (>300MB) ;)
I could upload my current IDA databases, but it won't be easy to understand at first.
What you have to know:
* the format (FRESCUE structure) is made so data X can be loaded in memory address Y etc.
Zook already made a IDA parser for this, so you don't have to worry about that
* there is a memory part (0x1C0000) named USER_DATA which contains again data to be loaded in memory; structure={int Size; int Address; char Data[Size];} (to be loaded in 0xB00000)
Again, zook made a parser for this.
* The DM320 regs start at 0x30000; so it is important to know which functions refers to here (that's why it is included in the database).
Again (;)), zook made an IDA importer for this
* Now the init goes like this: MMU is initialized, I- and D-Cache are enabled, USER_DATA mappings are performed and Nuclues values are initialized. Then there's a jump to the Nucleus kernel init.
* Here are all the Nucleus kernel internals initialized and there is a branch to Application_Initialize()
* (this is Creative custom code): SDRAM, PLL is init'ed; GIO default values are set and 2 threads are added: bootup() and infinite_loop()
(infinite_loop() waits for an interrupt and then calls TCC_Relinquish)
* After Application_Initialize() threading is started
* bootup(): devices are initialized in register_devices(), a lot of to be figured out code and the loading of (C)TLSome info about the devices:
* I presume 'iic' is a driver to the DM320 builtin I²C
* I think 'mcu' controls the PIC and trough this the buttons, button backlighting, hold switch etc
* I don't know what 'tvenc' is; either it is the TV Encoder or something else
A last sidenote: to really understand all of the IO_* regs, you'll have to sign a NDA to be able to view the DM320 documentation.
Oh and BTW, don't open FRESC directly; it is encrypted: zook's zen_crypt is able to decrypt it.
Download link
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version