Apps? Store? How will THAT work?

A project log for CalcHack

CalcHack is a project to add missing features to graphic calculators. It adds many exciting functions students wanted for a long time.

Sean Dylan Goff 08/18/2014 at 20:550 Comments

Well, it isn`t implemented yet, but there will be a very simple app system:

Apps are going to be ARM hex files with custom endings stored on the internal SD card (there is a SD card holder, the user may choose the appropriate size).

There will be a very simple file management system that each app has a unique folder (say sdcard/appdata/myawesomeapp/) where the app itself is contained, an icon and all data the app brings or adds at runtime (in a game this could be level data and highscores for example)

When you start CalcHack you will be able to choose an app by name and Icon, and then the corresponding ARM hex file is loaded into RAM and executed. Because apps will run from the fast CCM (core coupled memory) in the STM32F4 app size is limited to 64kb. As many libraries and engines are preloaded into the 1mb Flash this will be enough  for most applications. Bigger apps can be split into parts and the parts run one after the other (say a game that does`t fit because there are many quests might have an executable for each quest run one after the other - load times with SD cards connected to SDIO are quite fast after all)

For simplicity, efficiency and flexibility there will not be a real OS running in the background when an app is open, but only a settings / app choose program in the beginning (and upon quitting an app, of course)

For getting the apps there will be more than one way:

- You might just download them from the internet and save them to the SD card using a PC

- You can get them from others in the same network as a payload in a messenger

- The final plan is to make a simple website based "Store" (this is an open project, every app will be free of course)  allowing the router to download apps for a client and then transfer it to the client in the local CalcHack network.