1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
This directory contains a new UBI toolchain which is intended to replace
the old one. All utilities support "-h" option which prints sufficient
usage information. See the MTD web-site for more information.
Motivation for new tool-chain.
I was doing very active UBI development and had to add new features like
dynamic UBI devices and auto-resize feature. Because of the mess in the
the old tools I basically could not figure out how to upgrade them. In
my humble oppinion, they are unmaintainable. The original authors did not
show enthusiasm when I mailed them and asked to clean-up the tool-chain
[1]. Thus, I re-implemented them, but I did borrow things from the old
tool-chain and preserved copyrights and author names.
I really did try to clean-up the old tool chain, but gave up (see git
history for confirmation). So,
1. I found the source codes very difficult to navigate and read, especially
those related to pdd, pfi, and bootenv. Try to do this yourself - they
are a puzzle.
2. I foud the concept of PFI needlesly complecated - PFI file is nothing
else but the initial configuration .ini file + the contents of the
UBI volumes packed into one file, but with some changes of the .ini file's
format. The PFI file format is not very nice and it is difficult to parse,
especially because the PFI headers do not tell you data star and end for
each data chunk, and you have to do additional parsing.
So basically, you have .ini file + images, then you transfer this to pfi,
which does not add any other information. For .ini you have libraries
which may parse them, for pfi - not. Then you have to parse this pfi
which adds unneeded and complex code. This all needs lists, hashmaps,
and so on - for no reason.
3. I found the command line options of the utilities to be inconsistent.
This is OK when you script your single task and do not touch it anymore.
But when you have to use the utilities while developing and testing,
It is difficult to remember their inconsistent options.
4. I found it wrong to add development options to user utilities like
"broken update". End users should not see them.
5. I did not find any consistent style and convention inside which
irritated me.
6. I found it weird to introduce needless "logging infrastructure" instead
of just re-directing stdout and stderr to another file.
7. I found the tool to be rather IBM-setup oriented. For example, the VID
header position was hard-coded. Some utilities were just weird, like
mkbootenv, which changed some ethernet addresses mentioned in a
configuration file.
8. Finally, it was very difficult to realize what is pfi and pdd, what for,
why I need this transiant pfi file when I just want to create an UBI
image. There was zero documentation.
And so on.
Feb 19, 2008, Artem Bityutskiy.
[1]. http://lists.infradead.org/pipermail/linux-mtd/2007-December/020134.html
|