comparison fluid-mnf/README @ 365:f888ae294b1b

fluid-mnf/README: should be complete now
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 15 Mar 2020 08:59:12 +0000
parents 37d647dfb920
children
comparison
equal deleted inserted replaced
364:37d647dfb920 365:f888ae294b1b
263 115200 baud. 263 115200 baud.
264 264
265 * The D-Sample board has an extra 14.745600 MHz crystal oscillator and a special 265 * The D-Sample board has an extra 14.745600 MHz crystal oscillator and a special
266 circuit (controlled by bits in a register mapped into Calypso nCS3 address 266 circuit (controlled by bits in a register mapped into Calypso nCS3 address
267 space) that can switch the Calypso clock input from the regular 13 MHz coming 267 space) that can switch the Calypso clock input from the regular 13 MHz coming
268 from the RF section to this special 14.745600 clock. Of course no GSM 268 from the RF section to this special 14.745600 MHz clock. Of course no GSM
269 functions can work in this state, but feeding this special clock to Calypso 269 functions can work in this state, but feeding this special clock to Calypso
270 allows its UARTs to produce "standard" baud rates of 230400, 460800 and 921600 270 allows its UARTs to produce "standard" baud rates of 230400, 460800 and 921600
271 bps! This feature is apparently called XXO for eXternal Xtal Oscillator, and 271 bps! This feature is apparently called XXO for eXternal Xtal Oscillator, and
272 is supported by FLUID, including our fluid-mnf port: just select the desired 272 is supported by FLUID, including our fluid-mnf port: just select the desired
273 baud rate with the -b option, and if the target is D-Sample, it will just 273 baud rate with the -b option, and if the target is D-Sample, it will just
368 flashed; in the case of fc-loadtool the new flash e-program-m0 command was used. 368 flashed; in the case of fc-loadtool the new flash e-program-m0 command was used.
369 The version of fc-loadtool used for this test is the one that is about to be 369 The version of fc-loadtool used for this test is the one that is about to be
370 released with fc-host-tools-r13; previous versions would be even slower. In 370 released with fc-host-tools-r13; previous versions would be even slower. In
371 the case of fluid-mnf the -C option was used to disable delta downloads, making 371 the case of fluid-mnf the -C option was used to disable delta downloads, making
372 the test operation independent of previous flash state. 372 the test operation independent of previous flash state.
373
374 Where to go from here
375 =====================
376
377 So now we have two competing tools for operating on the flash memory of Calypso
378 GSM devices: fc-loadtool and fluid-mnf. Which one should you use? In most
379 practical use cases only fc-loadtool will work:
380
381 * FLUID only works on D-Sample, Caramel and Openmoko targets. If you are
382 working with an FCDEV3B, any Mot C1xx phone, Pirelli DP-L10 or a GTM900 module
383 with the newer Samsung K5L3316CAM flash chip, then fc-loadtool is the only
384 choice.
385
386 * Both fc-loadtool and fluid-mnf can read flash dumps, saving them in either
387 binary or S-record format. However, FLUID only accepts *.m0 S-record files
388 (16-bit moko-style by default, but 8-bit and 32-bit variants can be used too)
389 as the data source for flash programming. Binary format is much more
390 convenient for flash backups, but restoring such backups with FLUID would be
391 a complicated matter, requiring an external converter that extracts the
392 desired subrange out of a binary flash dump file and makes an m0 image out of
393 it.
394
395 * fc-loadtool and its loadagent back end are only one part of a larger loadtools
396 and target-utils suite that supports many other operations besides flash
397 manipulation.
398
399 On the other hand, if your target is one of the few which are supported by FLUID
400 and your desired operation is to flash a firmware image built in m0 format,
401 then you can use fluid-mnf and enjoy faster speed - or enjoy the dancing LED
402 patterns if the target is a TI D-Sample board.
403
404 We got into the present situation we find ourselves in because of the culture
405 of suppression that was built around our dear Calypso by the Closed Moko
406 Company: back when we started FreeCalypso in 2013, the source for FLUID was
407 wrongfully withheld from Humanity, thus producing a from-scratch replacement
408 like our own fc-loadtool was the only viable option. And because the project
409 was essentially a battle for the liberation of Calypso, performance was not a
410 major concern at that time, which is how we ended up with a tool that is not
411 optimized for speed like FLUID is.
412
413 If I (Mother Mychaela) had been a Calypso modem engineer for a truly Open kind
414 of Moko instead of those NDA-worshipping Germans back in 2006-2008, with access
415 to all documentation, firmware sources and FLUID from day 0, and working in a
416 fully open culture with everything freely published like in current FreeCalypso,
417 I would have initially produced something very similar to the present fluid-mnf
418 port, just to get the existing and known working tool running under Linux
419 instead of Windows. If the project had stayed with Samsung K5A32xx or Spansion
420 S71PL-J flash chips, such a Linux port of FLUID would have been sufficient. If
421 new requirements came along to support S71PL-N flash, second flash bank
422 operations, significantly different Calypso targets like Mot C1xx, or anything
423 else that does not fit well into FLUID architecture, then my solution would
424 have been to produce a new tool that is free of unmaintainable FLUID gunk
425 (support for hw that no longer exists and thus can't be tested, old FLUID
426 bootloader protocol), but keeps those parts of FLUID architecture that make it
427 so fast. But as they say, history does not know subjunctive mood.
428
429 So what can we do in the present? We have targets and operations which would
430 be very difficult to shoehorn into the architecture of FLUID, but which are
431 well-supported by fc-loadtool - how can we make them as fast as FLUID? One
432 promising approach would be to extend our loadagent yet again, adding a flash
433 programming protocol similar to FLUID, with parallelized flash operations and
434 serial stream Rx and with LZ77 decompression, and change fc-loadtool to use
435 this new protocol for flash programming while keeping all other functionality
436 as it already works. But given the sorry state of FreeCalypso funding, this
437 idea may never get implemented. :-(