Designing the ASIC is not the most important stuff, actually it's the rather easy one in this product. You just have to get a 8/16-bit MCU (8051 is the most popular one used in this kind of ASIC), then design your USB I/F, sector buffer management, Flash device interface and ECC circuits. Besides, you have to study the FTL (Flash translation layer) documents regarding to how to manage the logical to/from physical addressing translation. Smart media related documents is a great starting point. For the open source, finding the MTD of linux is a another way. As to the USB portion, you are able to getting related docuemnt from usb org's web site. All above informations are free, and open. Some source code examples are also available in the cypress's web site, but it's in assemble one. I'm also studying this topic right now, if you feel good, lets share these with each other. But one more thing has to be said at first, the M-system held the USB storgae petent, it may cause prolems in the future if you want to make commerial.