Thanks for the helpful answer David. I've already solved it. The reason it wasn't working is that 0x00300000 is a reserved space and it was reading all 0xFF. After flashing user data in different sector and reading from different address space works. So, I'm not sure whether it is possible to use reserved space or not. Also, other ways of reading data from CFLASH solutions works just fine too. It is just like reading from any other memory. Here are the examples:
1. memcpy (test, (char*)(0x002E0000), sizeof(test));
2. uint8_t *pointer;
pointer = (uint8_t *) 0x002E0000;
for(i = 0; i < sizeof(test); i++)
test[i] = *pointer;
pointer++;
}