Hi Daniel, Davidlohr and Andrei

This is a very interesting thread...

I too have been working on using the libfprint library on an embedded (cris) architecture, and as of last night now have a working model, where a fingerprint is read on an embedded cris Linux machine and send it to a Linux i386 machine which performs the identification, the results are then sent back to the cris Linux machine. The cris machine is too slow to perform the identification process by itself - partly because it runs at 100MHz and even more so because it has no Floating Point Unit - (doubles are used heavily by the bozorth3 and mindtct algorithms in the nbis code).

At the moment I've hacked the libfprint library with a series of #ifndef that control which part of the project is built. But as Davidlohr suggested a set of smaller libraries, may well be a lot cleaner and easier to use. Specifically in the embedded world. In our case the cris machine only has 4MB of flash disk space - so using glib and ImageMagick is totally out of the question.

The big question, that's running around my head at the moment is what to do with these changes.

Since this is primarily Daniel's project, it makes sense to see if all the changes that embedded developers are making could be folded back into either the main source line, or branched sources for each version that Daniel releases. Daniel, is this option, or would you prefer a new separate embedded project altogether (although this seems a pity)?

List of tasks (done)
----------------------------
In v0.03 only - customised for the cris embedded device, that only captures the fingerprint
1. #ifndef out all the bits that use ImageMagick
2. A small subset of glib function (g_free g_malloc g_malloc0 g_realloc g_memmove) written using stdlib c library functions
3. include a small subset of glib types
4. #ifndef out all the bits that use all other glib functions (e.g. GSList linked lists etc).
5. Expose some of the internal functions through fprint.h
   e.g. dev_to_img_dev
6. Only include the one driver we are using (uru4000)
7. Hand copy config.h and Makefile - since I can't ./configure for my embedded architecture (you can in theory - but in practise it doesn't work well enough always)
8. #ifndef out all nbis code - since I don't need that code
9. I've then written some wrapper code (in my project - but I'm half tempted to put this back into the libfprint library code), that hacks together all the devices, drivers, usb_ids, discover devices, image drivers & images so that one can capture fingerprints without having to run fp_discover_devs() (which has glib dependencies).


List of tasks (done)
----------------------------
In v0.05 only - customised for i386 device, that needs to reconstruct an image (which it didn't capture on this machine and then perform identification) 1. #ifndef out all the bits that use the Crypto Library since I don't use AES_encrypt etc. 2. Expose some of the internal functions through fprint.h, as in my project I need to be able to construct an image from raw data that's sent to the function via TCP/IP, and I then need to identify the image without a fingerprint being captured.

As, you probably guessed, it's all been a bit of hack up till now - which is fine as this was to prove the concept works (which I can now happily say it does). And so I am wanting to formalise these changes now, in a way that's clean, and also useful to other people doing similar projects.

List of tasks (to do)
----------------------------
- update the embedded version to v0.05
- expose the necessary internal structs and functions through fprint.h
- possible add my wrapper functions (??)
- as well as exposing direct access to the nbis functions (and possibly also some of their settings too) - look into seeing if you can have a sig_atomic_t that is checked in the fingerprint capture loop code, so that it's possible to abort a fingerprint capture even while you are say await_finger_on(). - investigate the interrupt of Death - which I still sometimes get using the uru4000 - investigate profiling of the nbis code - although I am guessing the coders at NIST have done this.

Your thoughts and comments would be appreciated.

Daniel, thanks again for a fantastic project. Well done. I hope your lectures give you top marks.

Cheers
Jono







Davidlohr Bueso wrote:
Currently I am doing major fprint modifications. Removing glib/imagemagick, fixing leaks, separating the project into different little independent modules. I will have get this proyect working on a little ARM machine. Hopefully I will have something ready to show soon.

The basic idea is that a rather heavy monolithic fprint library is separated into smaller, lighter, simpler (usually) independent modules (libraries actually) that can be used in a wide range of devices and architectures (like ARM, microblaze, etc). So, for example, if I wanted to implement a matching server, I can use that specific lib, and not care about enrolling, capturing, etc.

2008/1/11, Gustavo Chain <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>:

    El Tue, 8 Jan 2008 16:01:03 -0800
    "Jeff White" <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>
    escribió:

    > I am trying to get fprint to work on an embedded system,
    specifically
    > a microblaze processor.
    > I am running uclinux and using a secugen hamster III reader. Is
    there
    > any way to strip down the libraries and code needed to the bare
    > minimum. I don't need any graphical interface, just the capture and
    > verification.
    >
    > I have been havening difficulties with getting libiconv and gettext
    > that are needed for glib to compile. Are they really needed, if not
    > is there a way around them.
    >
    > Thanks,
    >
    > Jeff White

    You will have to rewrite a big chunk of code, removeing routines
    (Imagemagick, etc).

    By the way, lots of fingerprint aplication/solution are installed on
    embedded system, libfprint should try to minimize dependencies (glib?)
    and be designed modular (optional builds)



    --
    Gustavo Chaín Dumit
    http://0xff.cl
    _______________________________________________
    fprint mailing list
    [email protected] <mailto:[email protected]>
    http://lists.reactivated.net/mailman/listinfo/fprint


------------------------------------------------------------------------

_______________________________________________
fprint mailing list
[email protected]
http://lists.reactivated.net/mailman/listinfo/fprint
_______________________________________________
fprint mailing list
[email protected]
http://lists.reactivated.net/mailman/listinfo/fprint

Reply via email to