plain hardware [ mp3redux [ dev-log | images | tech page | downloads ] ]

devlog


22.11.2004 still alive. live's a bit turbulent right now.
all case parts are done. integrating a gps-module. built a desktop system for development.
29.6.2004 did work on pg-apps. trying to integrate the tmc-data into the radio application. it's a bit buggy still.
i'm constructing a frame for the board and disc with a bit of rubber dampening.
28.5.2004 it's been a long time. but i haven't been totally inactive. i built a case. but it's still waiting to be filled.
slowly continuing.
2.4.2004 the tmc-decoder does a good job. implemented a first shot at persistence/lifetime. doing some cleanup in the code. adapted the picogui-radio-app to the library, it even displays the tmc messages.
i will finish the rds/tmc-libs, then go back to ui/apps.
hardware: the int-controller in the isplsi needs to be finalized.
9.3.2004 tmc-decoding running quite well. i'm trying to get all information (quantifiers is next) together. getting a "good" textual representation of the message content seems to be non trivial.
a friend pulled my attention to sqlite. might be a good solution for all my persistence problems (rds-database and locations/events).
25.2.2004 i decoded my first tmc message (by hand ;-)) and heard it 5 minutes later in the traffic announcement. whoaaa!
development is somewhat slow due to other projects (related to earning money) ;-) .
implemented oda handling. oda-handlers register at the decoder, when a station receives a group for which a oda-id is transmitted, it tries to deliver the group to the registered oda-handler.
12.2.2004 reorganizing the rds-lib: will change the af handling (including EON). will implement oda handling. i WANT a tmc decoder ;-).
the decoder can write the station-list to a file (but not yet read it again).
9.2.2004 the rds-decoder does a good job now. it supports every standard group-type. it even does some of the EON features. i'm still trying to find strategies for alternative frequencies, EON-linking and (future) quality-scanning.
some of the decoders (string, e.g. station-name) will no longer be tied to the top-level decoder, but move over to the station structures. next big-point will be oda-handling.
the TMC-data arrived (location- and event-list). ;-) after some cleanup i'll go for a TMC-decoder ...
31.1.2004 the c++-decoder takes shape. ported my group0-decoder to the new lib (no AFs yet).
the stations are a (pi-sorted) linked-list. there will be standard group-decoders and pluggable oda-decoders. the topmost put-block-function returns flags for every received update to the station-information. the application then retrieves the (changed and supported) information from the station-structures.
i ordered the tmc location-code-list for germany. finally i'll get the data.
21.1.2004 enhanced the decoding-lib for all standard groups but EON. it does decode quite good now.
started an oo-design for a "real" lib.
14.1.2004 did a bit of research on the shared-ints. it seems i have to put a simple interrupt-controller in the isplsi. reworked the driver. it seems to be a bit more stable/reliable and does give less overruns. it can work in saa6588's standard ( double int-rate, with a way to recover one overrun) and reduced mode (half int-rate) now.
the decoding library does decode (groups0 and group2) quite good although the design _and_ the implementation is crap ;-) .
have to think first ...
2.1.2004 both prototypes work. only a single wrong connection (soldered together a smd-pad and a via). it nevertheless took quite some time to find. the new 1016 isplsi also works. decoding rds works better, but it is still possible to have no further interrupts triggered. a driver reload (radio) cures this. this is up next.
there is some aluminium sheet-metal in my cellar waiting to become a case ;-) .
some weeks ago i started a rds-decoding library. although i don't like the internals and i don't support too much yet (only group0), it works ok.
30.12.2003 i built 2 more prototypes with my remaining pcb's. want to build 2 cases ( 1 double-height, 1 single-height) and have real demo systems. the third pcb is for development in a standard pc using a pc104-to-isa adapter.
will use a fully syncronized 1016 for one board (to see if i the int-problems go away). starting to think about pcb rev.2 .
i'm writing this log for 1 year now. kind of interesting to see what i have done (and what i haven't).
as this will be my last entry for this year, i wish everyone a happy new year. maybe i could get some more feedback next year to keep motivated ;-) .
14.11.2003 worked on the rds-drivers, stability improves. inserted a "memset(0)" on the kmalloc'ed i2c_client-structures (the mixer tried to use 10bit addresses sometimes).
i found that one of the main picogui developers has "lost the interest". another investment in a dead technology?
10.11.2003 last week, i finally found the time to power up the system again. the select/poll-stuff for rds worked right out of the box.
i found a small machine to bend sheet metal on ebay. should arrive in the next 2 days. my first try will be a double-height din car-stereo case. PS: ARRIVED TODAY!! LOOKING GOOD.
15.10.2003 slowly starting work again. lots of things i'm thinking of:
picogui apps, driver stability, build an rds-decoder-library. the biggest problem: i'm covering every aspect from hardware, drivers, os-support to user-applications. this is a really _big_ project.
14.10.2003 still alive. yet no time, no development.
started some smaller modifications of the drivers. especially the rds and event stuff. implemented (at least i hope so) the poll-call for the rds-device.
the event-device can only be opened once: following opens do never receive an event. writing the led_events does only work sometimes. need to investigate.
12.09.2003 hacked together a basic cd-player. this is even pre-alpha. it nevertheless works.
maybe i''l be able to test on the "real" hardware over the weekend. development is extremely slow right now. i do not find the time ...
8.09.2003 back at work. so maybe development will continue ;-) .
13.08.2003 right now i'm experimenting with "context mode": pressing the "ok" button for longer digs deeper into contexts/hierarchy. i then mostly "unfold" some initially 0-sized panels with options.
not sure where and how far this may lead me. ;-)
the playlist stuff works quite good (still only adding is implemented).
i'm still not sure how arranging/starting/stopping applications should work (maybe with contexts?).
12.08.2003 hacking around with picogui. i can browse files and select a playlist. must add playlist load/save, directory adding, setup ...
6.08.2003 picogui apps are getting almost usable. working on playlist management. i've not yet decided on general ui philosophy.
see release.
1.08.2003 working on picogui apps.
kind of progress. i can use it with the buttons/knob. implemented a first try on messaging for the applications.
31.07.2003 working on picogui apps. i'm having a hard time figuring out a concept to control the picogui apps with my 4-buttons + wheel (and a keyboard/mouse if available).
i've not yet decided on a ui philosphy.
22.07.2003 released cajun patches.
picogui-radio kind of working. pg-mp3play tested, prev/next, play/pause, ff/rev work.
18.07.2003 finally. i released my current state (almost). even the irmp3 patches.
working on a radio-app for picogui. small driver modifications.
very slow. no time and no power. very hot.
7.07.2003 no real news. except that there are none.
i will never promise a software release again. i'll just release. ;-)
may i can help a german car manufacturer to get internet in his high end cars. would be an interesting project to help with.
still looking for a case (or a way to build one).
i plan to do a microwindows-driver for my display (320x240 at first). related to another project (read above), this could be very interesting.
23.06.2003 back from vacation. i did play a bit with rds decoding. the fmscan2 tool does a way better job now at finding stations and station-names. i modified the rds decoder to reliably read the Alternative Frequencies. "Bayern 3" has a list of 60 frequencies so this a good test case.
i modified the int-handling for the radio(-tuner) driver. right now it seems to lock for scans really reliable. i'm thinking of changing the device semantics for my /dev/radioXs: allow one to open rw, and multiple to open r and add a ioctl to allow group-filtering for rds. this could result in simpler clients (for a tmc decoder e.g.). but maybe we need the whole datastream to allow for stream verification.
i plan to get a general software update ready in the near future ;-) . including the cajun/irmp3 patches.
11.06.2003 i've been struggling with picogui and threads. the mp3-player has a picogui/foreground-thread to handle the ui and a "background"-thread to handle the mp3-device. i did not understand (if it is possible at all) how to update the ui from both threads. but there is a certain progress, at least it plays.
will be heading off for italy tomorrow (without the car-pc) for some days with my family. expect no updates before 22.6.03. (if anyone is reading this?!) ;-) .
5.06.2003 long time, no write. i've been programming on ui.
did a simple mp3-player: added picogui to the mpg345 tool.
started a crude app-framework to host the various car-pc applications.
started enhancing the rds-parser, reworked the af-code. will start a picogui program for the radio-tuners. no luck with tmc- specs and databases, any sources known?
i need picogui clients for a mixer, a playlist-editor, a cd-player and a navigation-system (i'm heading off for holidays on 12th ;-) ).
19.05.2003 i'm in the process of evaluating the ui options:
- microwindows: had it running for the first time. using vga-framebuffer. slow. no usable lcd-driver.
- picogui: there is even a sed1330 driver! compiled, tested. lots of demo applications. random pixel-noise though. promising. need to understand functional structure. mouse moves, but does rarely "click".
- fresco: will eval tomorrow, update: read about X11 and CORBA, this will be too heavy for (my) embedded systems.
13.05.2003 i compiled the secondary-console-driver for the sed (after changing it for my hw-interface). it works. it seems i lost the reverse-attribute after some time (yes, attribs _are_ compiled in). it uses 40x30 chars. maybe i will change it for a 6x8 font and 53x30 chars. if adapted for primary console, the system would not necessarily need a graphics card anymore, this could make a complete system somehow cheaper.
i'm looking at ebay for a metal sheet bending machine (is this the name?). i need to make cases to fit into the standard car-radio in-dash slot. i missed a good (and rather cheep) one on the weekend :-( .
12.05.2003 (late) i've tested the output capabilities of my event driver. it did work (after minor modifications). used it to make the screen backlight switchable. had an oops when reloading the driver, need to investigate.
tested irmp3 with the big screen: the browsed lines are now dynamically adapted to the display (on part of mod_lcdproc)(see screenshots). kind of nice when selecting, although there is to much unused room (when playing) ;-) . i will go for a console driver asap.
12.05.2003 i've been in contact with joris robijn, the or one of the maintainers of lcdproc's sed driver, to show my sed-work and get an update on the drivers state and heading. directed him to this little wesite: he wrote me some kind words on my work here. i liked it ;-).
i made 3 more photo's of system, gfx-controller and my tft-display. i will try to add some more tonight. i hope i can include screenshots of the working system. (time is the problem, not my hardware ... ;-) ).
9.05.2003 the 320x240 display + controller works.
the calculated timing works, had to hack lcdproc's sed133x driver a bit: changed to 240 lines (not 200) and adapted the memory map to the bigger screen. contrast adjustment works (in a way). the display is a bit noisy, i will try to smoothen the bias voltage.
this weekend i will do some photo's of the system.
8.05.2003 yesterday i tried to go back to 2 tantal caps (35v): they die immediately.
soldered together the sed1335 and SRAM: the signals seem ok. i calculated a new timing for the 320x240 display this afternoon. the cable is already soldered onto the display. can't wait to test. i will make some new shots as soon as it works.
6.05.2003 (late) bias-voltage gen working as expected. i removed the compensation cap. perfectly matching the voltage, perfectly stepping up/down and resetting. i'll try to get the sed1335 and 320x240 display up and running asap (maybe even this evening).
6.05.2003 still fiddling around with the bias-voltage gen. the maxim tech support told me everything i already know about the max749 ;-) . One tip might be good: the compensation capacitor might be too large. will test.
hacked up a simple utility for up/down/reset of the generator: it does work.
as soon as the voltage gen will work, i will build the sed1335 controller and get the display working (hopefully).
28.04.2003 built and tested the lcd bias voltage generator using the max749.
once again i found an error in the schematic (and layout and pcb), can be easily patched.
the generator did _not_ work. did a lot of measuring ... it seems, i have killed the capacitors to smooth the output voltage at the very first test. today i replaced the 10u 35V with a 1u 63V (after 3 days of measuring). it does kind of work: i get a negative volatge around 17V with a lot of ripple. but i know i'm on the right track.
15.04.2003 it seems my hacking is getting better all the time ;-). apart from minor problems, the driver works, and is delivering input-events. i am thinking of integrating infrared into this too. if there only were a (lirc) daemon for this.
the corrected hardware gives 2 switchable ouput pins. i have not tested the input-core part of it though.
14.04.2003 hacked together an input-event-driver for io. it compiles without errors. once again i found an existing driver that had almost the needed functionality. i had to convert it from usb to i2c. seems to be quite easy. could not test yet.
12.04.2003 the modules do work. once again i have an error in my layout: the fet's need to be connected with vcc and gnd swapped.
i modified my board, but could not test yet.
11.04.2003 tested an io-module: ir works (with tsop1738). i2c detects, but does not work. my pull-up seems to be too weak. will add another 10k (which is quite high by itself) on the module. the resulting 5k should suffice.
i will put together a lcd-controller (maybe tonight).
i'm not sure what to do with the io stuff. maybe i should integrate it into the lirc-driver?! if i could find more information about the kernel's event interface, i would go this way.
6.04.2003 on friday, i tried to make a longer cable from the elan-board to my tft-panel: it did not work, looked like only every second column were shown. went back to old cabling: the same effect. FRUSTRATION!
on sunday, i tried both variants: both worked. the display now has apple-cinema-display-like "case", made out of transparent acryl. kind of cool.
i just soldered together one of my io-boards. did not test though, i have to make a cable first. i hate making cables: cutting, crimping ... takes a lot of time. when its ready, you only have a simple cable. necessary though ;-).
2.04.2003 still no time left ...
21.03.2003 the PCBs for the io and graphics boards arrived. looking good.
my (paid) work does leave no time for my own projects. waiting ...
9.03.2003 i enhanced mpg345 with id3-tag support. id3-tags and mp3-header information is displayed with proper messages (@I and @S).
enhanced irmp3 to show mp3 stream-info. the browser can display more lines now. i still don't think that this is the way to go.
applied a little fix to the mp3-driver: always clear the int-req, regardless if the data_req is actually active.
4.-7.03.2003 i finalized my designs for the i2c-io-adapter and the graphics controller. in 10 working days we'll see ;-) .
20/21.02.2003 modified mp5play to support mpg123's remote interface. now i can use my hardware in almost any application available. not sure what to do with id3 tags and stream parameters.
fixed cajun to allow my 2 tuners, mixer source is selected via config param. i like cajun's configurability and the way screens and layout are handled, but it's way too slow to be usable on my hardware.
set-up irmp3. this is _much_ faster (and does not need a database):
screen setup is fixed. this is bad. i don't like the browser. no cddb (as in cdcd). no radio.
but it is _usable_ (compared to cajun). i will see if i can improve this ;-).
18.02.2003 cajun running. i had to implement a lirc input-module for cajun. in fact an ugly hack (parsing irw output). mixer works, radio works, cdcd kind of works. the system is not very responsive. no wonder, i have only 16mb of ram, but mysql, apache, cajun ... running.
i need a mpg123 (remote-like-) interface for my hardware. this way i could integrate my stuff in a lot of existing projects. i will rewrite mp5play to simulate the mpg123 remote interface.
in the long run, i need a own ui framework. maybe i'll use the t6963 and sed1330 console drivers, add in framebuffer drivers and set up microwindows. and in 10 years time i will be finished ;-).
16.02.2003 i tried to get everything together for a cajun install. not running yet.
tried to load all my drivers at once and test the whole system. did not work out of the box. will investigate.
i did also change the isplsi to trigger interrupts on both edges for ALL signals. maybe this was too much for my drivers. _need_ to adapt the radio driver to this (although it should work, but give warnings).
15.02.2003 i modified the lirc-plcdio driver to work with the mp3redux design and made a small ir receiver with a sh5110. this time with a big C and the resistor as in the application note. works like a charm.
also hacked together a sound mixer driver for the tea6320. it does work. but the tea6320 gave some headaches. it seems it can't take long transfers with autoincrement, at least it didn't work for me.
13.02.2003 the irq-timeout timer caused the oops. as i do not need it, i disabled it. it's playing fine now.
investigating in player ui. cajun seems to be what i want, yet text-only. i will use it to get something working.
starting mixer driver. maybe do a quick hack for a lirc driver. i want the whole thing to be usable.
12.02.2003 elan / state machine issue resolved.
did a little bit more logic-analyzing: there was a race between isa_clk and isa_iow. some state bits must have longer internal paths from isa_iow to the state bit than others. if isa_iow was getting close to isa_clk, some of the state bits did see a changed isa_iow (short path), some the unchanged signal (longer paths). i "just" latched isa_iow to synchronize it with isa_clk.
the new design still fits in a 2032. thinking of switching to a 1016 though, to resolve the irq sensing. will switch to 4a5 or 4a3 in the long term.
right now, i get an oops in mp5play, and shortly afterwards a kernel oops if i do a pause/continue or ff/rew. back to driver work ;-).
11.02.2003 elan / state machine issue still unresolved.
will try a fully synchronized state machine (in a isplsi1016 though) tonight. worked on radio/rds driver. implemented hardware search ioctl. can read rds data from both tuners. will also modify the "shared" interrupt logic to trigger an interrupt on both edges for every signal. this way i will be able to service all interrupts properly. at least i will _exactly_ know when to service what interrupt.
the tuning/search logic needs more work.
4/5.02.2003 elan / state machine issue still unresolved.
converted the radio tasklet to a kernel_thread (thx adrian cox). now it does work without a kernel panic. ;-)
added an ioctl for the hardware search (will test tonight). there is 20ms time to service the saa6588, seems to work with the thread. will measure thread-latency some time.
added locking for the tuner/rds data structures.
28.01.2003 mp3 playing improving ;-). on the elan board the state-machine "short-cuts" sometimes, but constantly, after shifting out 2 bits. tried to contact lattice and comp.arch.fpga to get a hint for these problems. will check "new" isplsi-file tonight. will check if there _is_ a reset.
using a lvx00, not a hct03, for level-shifting gives great pulse shapes ;-).
the elan issue takes all time. no driver work.
21.01.2003 i could not stop to debug earlier than 2.00 in the morning ;-).
reworked the isplsi-programming. the pcf8584 has now a state machine for isa-accesses: i can use the "400ns" isa-timing of my elan520 board. the pcf is quite picky with bus cycles. cs _has_ to go low _before_ any rd/wr signal. realizing this, i could even simplify the state-machine and get a bit more room in the packed 2032.
does not play mp3 though. will try the "softreset" fix when downloading firmware to sta013. this could explain everything: why it works on the (slower) cpu board, why it never deactivates data_req ... the relaxed dma-transfer mode seems to work with the elan. once again the pjrc website gave me this hint.
21.01.2003 started here.

maintained by ms@plain.de, Monday, 22-Nov-2004 12:53:25 CET