Hello, after finally getting the EEPROM working which now holds the calibration data for the touchpad I get a hardfault. When the data is retrieved with ginput_lld_mouse_calibration_load(). The function returns a const char* to the previously saved calibration data. The code now casts to the struct Calibration* and stores the pointer in pc. Then pc is dereferenced using the [] operator (same as *pc); This causes the compiler to generate code which copies the struct completely. While executing this code I get a hardfault on a STM32F103ZET. Exchanging the compiler generated code with memcpy all works fine. if (MouseConfig.fnloadcal && (pc = (Calibration *)MouseConfig.fnloadcal(instance))) { //MouseConfig.caldata = pc[0]; memcpy(&MouseConfig.caldata,pc,sizeof(MouseConfig.caldata)); MouseConfig.flags |= (FLG_CAL_OK|FLG_CAL_SAVED); if ((MouseConfig.flags & FLG_CAL_FREE)) Anybody here who can explain this? My compiler ist arm-none-eabi-gcc.exe (GCC) 4.7.2. Thanks for your help. Regards Michael