Das Problem ist, dass Literale wie "Hallo" ja irgendwie im PROGRAMM-Speicher stehen.
"strcpy" liest (und schreibt) aber normalerweise aus dem SRAM.
Also muß irgendwer zuerst das Literal aus dem Flash in den SRam kopieren.
Da kommt's auf den C an. Manche kopieren solche Literale automatisch in den SRAM, manche wohl nicht.

wenn du z.B. schreibst

char hallo[] = "Hallo"

und dann strcpy(string, hallo)

sollte es auf jeden Fall gehen.