01 Platform파트 업무에 대해서 간단히 설명 부탁 드립니다.
예전에 비해 반도체 집적도가 높아지고 성능이 높아짐에 따라 기존의 간단한 Micom 수준 레벨 Software 개발 수준에서 Desktop-PC 레벨 Software 개발 수준으로 변화하고 있습니다.
따라서 현재에는 다양한 Application이 반도체 및 외부 장치를 동시에 안정적으로 접근하도록 반도체 설계 초기 단계부터 고려하는 게 반도체 개발에서 매우 중요한 부분으로 고려되고 있습니다.
Platform 파트는 업무는 크게 두 가지로 구분될 수 있습니다. 첫 번째는 반도체 요구되는 Application S/W 이 원활하게 동작할 수 있도록 BootLoader, OS(Operation system), Device Driver, System Application 및 Application 개발 환경 등 Platform S/W를 개발합니다. 두 번째는 반도체에 존재하는 각 H/W 블록들의 기능이 S/W platform에서 적절하게 운용 가능한지 설계 초기에 검토를 하고 설계 이후에는 의도대로 설계가 되었는지 검증을 진행합니다.
02 Platform파트 주요 업무와 과제는 무엇이고, 어떻게 진행되나요?
Platform 파트의 첫 번째 중요 업무는 반도체가 설계된 의도대로 최적화되어 작동하도록 하는 것입니다. 반도체 개발 단계별로 설명을 하자면, 초기 개발에서는 CPU 및 Memory , I/O, 각종 Media/AI 가속기를 분석하고 Software를 위한 H/W 요구 사항을 검토하고 반도체 설계팀에 개발 요청을 합니다.
또한 이때 어떤 식으로 H/W 검증할지까지 검토 완료를 합니다. 이 과정이 끝나면 FPGA(field programmable gate array) 또는 가상화 S/W를 통해 반도체 Prototype를 개발을 반도체 설계팀에 요청하고 각종 Software 구동 시 문제가 있는지 중간 평가를 진행합니다.
이 단계가 끝나면 반도체 ES(Engineering Sample, 반도체 초기 샘플) 개발이 진행되게 됩니다. ES 수령 후 OS(Operation System)를 Porting 하게 되고 다양한 반도체 내/외의 다양한 H/W 블록 또는 장치들을 위해 다양한 Device Driver 들을 구현하여, 초기 의도된 성능이 나오는지 평가하고 문제가 없다면 다양한 Application 구현할 수 있도록 BSP(Board Support Package) 및 SDK(Software development kit)를 개발하여 반도체 개발 최종 단계를 마무리하게 됩니다.
03 Platform파트 직무의 매력은 무엇인가요?
SoC는 System-on-chip이라는 의미이지만 현역에서 반도체 개발에 참여하는 S/W 엔지니어 입장에서는 Software-on-chip라는 의미로 다가옵니다. 반도체 설계 엔지니어보다 H/W 블록의 기능에 대해 더 명쾌하게 정의할 수 있어야 하며 순수 S/W 엔지니어 보다 더 정확하게 사용할 Application S/W에 대한 이해가 필요합니다. H/W에서부터 S/W까지 모든 단계를 이해하고 시스템을 설계한다는 것은 순수 반도체 엔지니어나 순수 S/W 엔지니어가 경험하지 어려운 특별한 경험이 되지 않을까 생각 됩니다.
04 어떤 커리어 패스를 걸어오셨나요?
처음 실무에서 맡은 일이 화면 장치 드라이버(LCD 화면 제어 S/W) 구현이었습니다. 그 후 VideoCodec (MPEG4, H262, H263, H264) 알고리즘 모델 설계 및 구동 Firmware 개발을 진행하였으며, 반도체에 있는 모든 Peripheral(NandFlash, eMMC, SD, USB, Network, … etc) 드라이버 개발을 진행하였습니다.
추후 모든 Peripheral에 익숙해진 후 OS(WindowCE, Linux, RTOS) 및 Filesystem (FAT32, extFAT, FlashFS, ext2) Porting 업무를 진행하게 되었습니다. 또한 다양한 반도체를 적용한 MP3 및 BlackBox, Navigation 등 다양한 세트 개발도 진행하였습니다. 이런 Platform 관련 다양한 경험들이 현재 반도체 S/W Platform 개발에 대한 이해를 높였던 것으로 보입니다.
05 Platform파트에서 일하기 위해 필요한 직무 수행 역량은 어떤 것이 있을까요?
우선 다양한 프로그램 언어를 알아야 합니다. Platform S/W는 다양한 언어로 구성되어 있습니다. Assembler, C/C++, Python, Shell script까지. 따라서 다양한 환경에서 다양한 언어를 이해하는 능력이 필요합니다.
두 번째로 시스템에 대한 이해가 필요합니다. 즉 세트라는 개념이 필요합니다. 흔히 말하는 핸드폰은 크게 AP, Memory, Storage, Network, Display, Battery로 크게 구성되어 있습니다. 이런 세트(핸드폰)를 세분화해서 분석할 수 있는 능력 또는 흥미가 필요합니다.
마지막으로 가장 중요한 끈기가 필요합니다. Platform 개발은 H/W부터 S/W까지 개발 범위가 넓으며 어쩌면 가장 어려운 개발 작업을 진행하고 있을 때가 많습니다. 이때는 포기하지 않고 몇 번이라도 계속 반복해서 해결책을 찾으려는 근성이 필요합니다.
06 Platform파트에서 업무를 수행하면서 보람을 느낄 때는 언제인가요?
S/W로 개선하여 반도체 자체 기능보다 더 많은 기능 및 성능을 구현할 때 가장 보람을 느꼈고 많은 Application 엔지니어들이 안정적으로 S/W 개발을 하여 기능을 구현할 때 일에 즐거움을 느꼈네요.
07 우리 부서에서 일하기를 꿈꾸는 미래의 후배들에게 한마디
Platform S/W는 모든 종류의 Software가 유기적으로 연결되어 다양한 서비스를 제공하는 거대한 S/W 덩어리입니다. 저도 처음부터 모든 걸 알고 시작하지는 않았습니다.
그때 그때 실무에 필요한 지식을 갖추지 못해 항상 집에 못 가고 고민하던 아직도 선하네요. 뭐 지금은 다르겠죠? 더 양질의 교육을 받고 더 많은 정보를 공유할 수 있으니까요. 어려운 상황에 부딪혀 포기하고 싶은 순간이 온다 하더라도 끈기를 갖고 끝까지 노력해 보시기 바랍니다. 원하는 일이 있으면 절대 포기하지 마세요.