What TCP stack are you using?
FTP requires TCP requires IP requires Ethernet. There's a huge amount of work in TCP and IP that you don't want to repeat.
So your choice of FTP should match your choice for TCP. A good TCP stack might even include FTP.
FTP is also a *FILE* Transfer protocol, so it pretty much assumes an operating system with a file system (with files and folders and so on). So it has to interface to that as well.
Do you want the CLIENT side or the SERVER side? What do you want FTP for? Do you want it as a client for copying files to a device, or do you want to access it from elsewhere to get files from it? If the latter, then a small web server might be more suitable.
Are you using FNET, uTasker or something else? That should be your starting point.
I thought FNET would come with FTP already, but I see it doesn't. That's probably because FNET has no idea of what File System you might have (if any). FNET does have TFTP and a web server.
I've just done a quick search for FTP sources (based on a search for the string "421 System overloaded, try again later.", which appears in some code I ported back in 1999, and found this:
ftp://ftp.back2roots.org/pub/back2roots/cds/fred_fish/goldfish_vol2_9412_cd1/files/comm/net/ftpdaemo...
Tom