Hello again,
Yes, alt_epcs_flash_write does erase the block. If it already contains data which you want to preserve, you have to read it out, add your new data, then write the whole lot back.
I use the function alt_epcs_flash_write_block, which doesn't erase the block first, so if you know the area you are writing to has already been erased you can append data. The function prototype is very similar except there is an unused argument e.g.
alt_epcs_flash_write_block(p_epcs_fd, 0, 0, (void*)buffer_write, 16);
alt_epcs_flash_write_block(p_epcs_fd, 0, 16, (void*)buffer_write, 16);
alt_epcs_flash_write_block(p_epcs_fd, 0, 32, (void*)buffer_write, 16);
alt_epcs_flash_write_block(p_epcs_fd, 0, 48, (void*)buffer_write, 16);
where the 0 in the second argument is ignored. This change should make your code do what you expected.
I've written a very simple set of functions where I can store a data structure in the flash, then if I want to update it I read it out, modify it, write it back to a new location and invalidate the old version. This saves having to constantly erase the flash. Depending on your application you will have to decide the best approach to take.