Using PIC32 Flash for storage
You can declare your data in your code using the 'const' storage class to tell the compiler to place the variable in flash instead of RAM.  

So something like:

const char array_of_stuff[2048] = {0, 1, 2, 3, 4, 5, ... , 2047};


or even

const struct {
   int   thing0,
         thing1;
   char  smaller_thing,
         lots_of_little_things[512];
  etc ...
 } interesting_stuff = {
   123,
   456,
   'p',
   {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', .... },
   etc ...
 };


or, if your data is stored in something like an external .csv file

const char my_data[2048] = {
#include "my_data.csv"
};


Leaving out the 'const' keyword might at first seem to produce the same effect, but in fact what you'll have is a big area of initialised RAM which the compiler will arrange to have populated with all of your stuff at startup instead of locating your variable(s) in flash 'directly'.