I still believe the segmentation fault happens somewhere within the DeviceDriver_Intialize() function - your EwPrint() messages are maybe not transferred because of the missing "\n".
Try to find the erroneous location e.g. by putting a lot of simple but unique messages within your code, e.g.:
void DeviceDriver_Initialize( void )
{
EwPrint("A\n");
if (!bcm2835_init())
return 1;
EwPrint("B\n");
bcm2835_spi_begin();
EwPrint("C\n");
bcm2835_spi_setBitOrder(BCM2835_SPI_BIT_ORDER_MSBFIRST); //default
EwPrint("D\n");
bcm2835_spi_setDataMode(BCM2835_SPI_MODE1); //default
EwPrint("E\n");
bcm2835_spi_setClockDivider(BCM2835_SPI_CLOCK_DIVIDER_256);//default
EwPrint("F\n");
bcm2835_gpio_fsel(SPICS, BCM2835_GPIO_FSEL_OUTP);//
EwPrint("G\n");
bcm2835_gpio_write(SPICS, HIGH);
EwPrint("H\n");
bcm2835_gpio_fsel(DRDY, BCM2835_GPIO_FSEL_INPT);
EwPrint("I\n");
bcm2835_gpio_set_pud(DRDY, BCM2835_GPIO_PUD_UP);
...