|
Rockbox mail archiveSubject: Roadmap for the imx233 targetRoadmap for the imx233 target
From: Amaury Pouly <amaury.pouly_at_gmail.com>
Date: Wed, 12 Jun 2013 14:06:23 +0200 Hello everybody, I felt I should disclose some information about the imx233 target and the roadmap that I have been pursuing in the last months. I'll try to start from scratch and give you an overview of what I'm doing and why. For those for don't know about it, the imx233 is a port to the Sigmatel STMP3780 (aka Freescale i.MX233) SoC. It is used in at least three recent devices: Creative Zen X-Fi2, Zen X-Fi3 and Sansa Fuze+. The port to the Fuze+ is close to stable, same for the Zen X-Fi3 and the Zen X-Fi2 is unstable but already has a solid basis. The world seemed beautiful and all but then someone came and told us he had a device based on the STMP3700 SoC for which we didn't have the datasheet but some Linux code. It was obvious from the start that this chip was extremely close to the imx233 and that a Rockbox port was possible. At this point, we realised that some other devices were using another undocumented chip named STMP3770 and we even realised that the older and documented STMP3600 family was also very close. Here is a list of devices with those SoCs to give you an idea of the situation (you can find more information on http://www.rockbox.org/wiki/SigmaTelSTMP3xxx) * I.MX233: Zen X-Fi Style, Zen X-Fi2, Zen X-Fi3, Sansa Fuze+ * STMP3770: Zen Style M100/300 * STMP3700: Zen, Zen Mozaic, Zen X-Fi, YP-Q2 * STMP3600: Sansa Express, Zen V (Plus), YP-Z5 * Unsure: Zen MX, Zen Style 100/300 (probably STMP3700 and STMP 3780) To summarise, there are lots of target out there using those chips and I thought that it would be great to port Rockbox to them. I concluded that it was possible to handle them all in the imx233 port with a reasonable amount of modification and with careful handling. A major pain in handling those SoC at once is that the registers are very similar but not exactly similar and there are many of them (~500). Another major issue was that we had the datasheet of the STMP3600 and i.MX233 but not the STMP3700/3770. I am glad to say today that I solved both issues. I managed to get my hand on the two missing datasheets, that wasn't exactly easy but I managed to got them without any NDA or anything! (please contact me if you are interested). In order to solve the issue of keeping consistent a set of three big register set, I decided that the best way was to automatically generate the headers for them, out of the messy and buggy sigmatel/freescale headers extracted from Linux ports. This works in two steps: first I produced an XML description of the register map from those headers and then I produced the rockbox headers from the XML description. The register set is chosen at compile time with a switch in the target specific configuration header. This way we ensure a correct use of registers at all time. A byproduct of this register map being available is the (wonderful) hwstub tool: it is a small blob that one can upload to any STMP device and allows to control the device over USB. Using the shell tool I wrote, one can identify the chip, load the register description and poke at registers easily. The tool is scriptable in Lua which makes it easy and painless to hack and debug early code for a device. The tool itself is not really STMP specific and could be used on other SoC provided the blob is ported to those obviously (the TCC and RK27xx are good candidates for it). This is still work in progress but the majority of the switch to the new headers has now been done in my personal branch and proven successful. With the help of Lorenzo we are currently porting Rockbox to the STMP3600 and specifically to the Creative ZEN V and YP-Z5. I also have some solid codebase for the STMP3700 with the Zen Mozaic and Zen X-Fi, port to the Zen is in progress too. I will start to integrate those changes in the trunk soon. The amount of modifications outside of the imx233/ subdir should be minimal (mostly SOURCES, tools and configure) so I don't expect any breakable*. If you have any comment/objection, please do so quickly before I begin merging some code. If you would like all/some of those changes to go on gerrit before being committed so that everyone is given a chance to review, i'll be happy to do so. Long life to Rockbox! Amaury Pouly PS(*): the only expected potential breakage is the mkzenboot tool which I improved/fixed for the more recent STMP based devices. It is used by the Creative ZVM port I think. I have no way to check this though. Received on 2013-06-12 Page template was last modified "Tue Sep 7 00:00:02 2021" The Rockbox Crew -- Privacy Policy |