I write software for electronic funds transfer terminals. For this project in particular I am using a Verifone Vx570 terminal (www.verifone.com).
The platform consists in a 32 bit ARM9 processor with 4-32 MB battery backed up RAM and 4-32 flash. The operating system is called Verix. It supports multi-tasking, but multithreading is rather limited. For example a file handle opened in one thread cannot be used by another thread. The compiler I will be using is ARM Real View Compiler 2.01. My app will have approximately 80 tables, so I want to add ACID transaction support, fast indexed lookups, compressed tables and SQL query support. I don“t want to use standard flat files, since I will end up writing a lot more code. I already made that mistake in a previous project, trying to reinvent the wheel. I will probably have to create a single threaded DB Engine task and use pipes to send messages between tasks, since shared memory is not supported either. I want to keep only one instance of the engine loaded to save memory. Is this the correct approach or should I just dynamically link the sqlite engine to all my tasks and forget about pipes to make my life easier? Any ideas/suggestions? Has anyone here written a port like this? What about the memory limitations? Is this too strict? Regards Axel