Infinity Project
an additional memory for GLCD
where to store programs
This is a project by FoxDelta Project Team
Documentation and Firmware are available here
Unlike projects, where a dedicated CPU and hardware to address a specific task are used, FoxDelta “Project INFINITY" Graphic CPU is developed keeping in mind the purpose to use same CPU/LCD/Hardware for various purposes or different projects.
Projects like
· PM4 (Dual Channel 500MHz RF Meter)
· SWM4 (Dual Channel GRAPHIC LCD SWR Meter)
· FC4 (FC4: 500MHZ Frequency Counter and RF Meter)
· SWRA (Antenna Analyzer)
· MultiMeter
are designed to fully implement the features offered by the Project INFINITY" Graphic CPU (GLCD in the following).
Due to the performances (small memory capacity) and to the architecture (mainly lack of dynamic memory allocation) of the pic 18F family, usually only one f/w application at the time can be flashed to the program memory and executed.
The current firmware architecture, common to all FoxDelta projects, segments the pic program memory (flash memory) in two areas: the upper area is hosting a special program called “Bootloader” the lower part is dedicate to store the user application.
The “Bootloader” is permanently resident in that memory area and it allows to “load” a new f/w from an external source (PC) and “reprogram” the content of the application area.
The PC stores in his large disk the user applications.
The primary job of the “Bootloader” is to talk with the PC receiving the f/w and copying it byte by byte to the pic program memory (flash memory).
At the end of this process it passes the control to the new application and remains stand by until his next activation.
This is the easiest method to upgrade an application to a new version or to replace it with a different one, because NO special h/w like a pic programmer is required. Just a PC, an USB cable and a free s/w are needed.
So with this implementation, switching from a FoxDelta project to a second one is just matter to connect the GLCD (via USB) to the PC and download the new application.
Although this is a very smart and simple job there are two constraints:
· need of a PC connection.
· loading a new application to pic means overwrite the current one recalling the original f/w of the second application stored in the pc. That is: current values (like status and calibration values) are lost while default values of the second application are restored.
This simple job when running GLCD stand alone (not connected to the PC) or when a precise calibration was done or when a frequent application switching is required, could be an unrealistic approach.
To go over these limits we developed the solution to
add to GLCD an external memory, where to store the available f/w, and a management system that allows to save current application status, select a new one, load and launch it.
We choose the Secure Digital Card (SD) as additional memory to be connected to GLCD and FAT16 as File System.
These choices are compliant with almost all PC OS and SD card readers, so they allow to prepare and manage this support without any additional buy.
Having no PC resources, this requires that the job to list available files, select the application, load and launch it, should implement by the pic.
For this purpose we developed a new “SD Bootloader” and a special “SD File System Manager”.
To keep the size of SD Bootloader as small as possible, in order to leave the rest of the memory free for user applications, and implement a file system compliant with the PC standards, the main functions of the file management are implemented by a separate module we called “SD File System Manager”.
This module is automatically loaded and discharged when needed.
SD File System Manager and SD Bootloader strictly cooperate to manage the f/w stored in the SD memory.