원나라의 귀화인이다. 1359년(공민왕 8) 홍건적의 침략을 격퇴하였던 공적을 기록하면서 1363년 그 공적으로 2등공신이 되었다.
그 뒤 여러 번 자리를 옮겨 판도판서(版圖判書)가 되었다. 1374년에는 제주도의 목호(牧胡: 말을 기르던 몽고인)들이 말의 공출을 거부하자 동지밀직사사로서 부원수가 되어 최영(崔瑩) 등과 함께 제주도를 평정하였다.
교동만호(喬桐萬戶)가 되었으나 왜구가 침입하였을 때 도망한 죄로 순위부(巡衛府)에 갇혔다. 그러나 다시 1375년(우왕 1) 밀직부사로서 서해도상원수 겸 도순문사(西海道上元帥兼都巡問使)가 되어 심왕(瀋王)이 원나라로부터 돌아와 왕위에 오를 것이라는 소식에 대비하였다.
이듬해 전라도상원수 겸 도안무사(全羅道上元帥兼都安撫使)가 되었는데, 이때 부령현(扶寧縣: 지금의 전북특별자치도 부안)에서 왜구를 크게 격파하였으며, 뒤이어 판개성부사(判開城府事)가 되었다.
그 뒤 강화 등지에서 왜구 격퇴에 공을 세워 연안군(延安君)에 봉해졌으며, 1380년 해도원수(海道元帥)가 되어 심덕부(沈德符) · 최무선(崔茂宣) 등과 함께 전함 100척을 이끌고 진포(鎭浦: 지금의 충청남도 서천)에서 최무선이 만든 화약과 화포를 실전에 처음으로 사용하여 왜선 500척을 쳐부수는 전과를 거두었다.
이 공으로 문하평리가 되었다가 1381년 동강도원수(東江都元帥)가 되고, 1383년 해도원수를 거쳐 다시 경상도조전원수(慶尙道助戰元帥)가 되어 왜구를 방어하였다.
조선이 개국된 뒤 참찬문하(參贊門下)로 치사(致仕)하였으나, 1393년(태조 2) 다시 연해등처병선조전절제사(沿海等處兵船助戰節制使)가 되고, 1397년에는 경기풍해도서북면등처도추포사(京畿豐海道西北面等處都追捕使)가 되어 왜구를 방어하였다.