참을 수 없는 버그의 단순함

하드웨어/소프트웨어 동시설계에서 이 둘 사이의 인터페이스(디바이스 드라이버, and so on)를 자동으로 생성해주는 것은 상당히 중요하다. 특히 우리 연구실에서 채택한 Heterogeneous Modeling 방법에서 이는 필수요소라고 할 수 있다.

졸업하신 춘호형이 개발한 Hinge를 현재 우리의 개발환경에 맞게 수정하는 것이 내가 할 일 중에 하나였고, 그에 앞서 꼭 기존의 Hinge가 만들어낸 인터페이스가 동작해야만 했다. 졸업을 해야하니까! 문제는 쉽게 동작하는 모습을 볼 수 없었고, 하드웨어를 포함한 실험이라 무엇이 문제인지 좀처럼 찾아낼 수 가 없다는 것.

매일 이 것에 매달린 것은 아니지만 2,3주 동안 여러가지 가설을 세워가며 문제가 될만한 곳을 찾아보았다. 생전 나와 관련이 없어보였던 Verilog HDL도 공부했다. 결국 문제는 그동안 문제가 없을 것이라며 블랙박스로 여겼던 디바이스 드라이버에 있었다!

버그는 단지 little-endian 으로 인한 것이였다. 16비트 1을 쓰게 되면 이 때 1이 위치한 비트가 내가 생각한 위치와 달랐던 것이 문제였다! 덕분에 하드웨어와 소프트웨어를 걸쳐서 각종 다양한 지식을 섬렵할 수 있었으나 지나간 세월은 …

자랑스럽게 빛나는 LED

소프트웨어에서 하드웨어로 가는 신호가 인가되었을 때, LED를 켜지게 만들었는데 너무나 당당하게 불을 내뿜는 것이 아닌가! 우리가 고안한 프로그램이나 시스템이 원하는 바 그대로 동작되었을 때 느끼는 쾌감! 개발자들은 이 맛에 힘든 개발자의 길을 묵묵히 걸어가고 있는 것이 아닐까?

Co-Design Environment

우리 연구실에서 하는 메인 프로젝트는 하드웨어/소프트웨어 동시설계 도구를 개발하는 것이다. 전체시스템을 하드웨어나 소프트웨어로 나누지 않고 하나의 표현으로 기술한 후, 적절한(?) 기준에 따라 나중에 분할하는 방법론에 대해서 연구하고 그 방법론이 녹아있는 도구를 개발하는 것이다.

분할된 하드웨어와 소프트웨어 사이의 인터페이스에 해당하는 부분을 생성하는 논문을 정한형과 함께 작성하여 EUC06에 제출하였고 오늘 accept 되었다는 사실을 알았다. 올해는 유난히 우리나라에서 열리는 학회가 많다. 국제학회이지만 개최장소는 건국대학교, 개최날짜는 8월 1일, 그 때는 서울에 집이 없겠지 …

학회는 일단 접어두고, 발등에 떨어진 불부터 꺼야한다. 6월 22일 부터 프로젝트 데모를 해야한다. 동시설계 프레임워크는 그동안 내가 맡아서 개발해왔는데, Java Swing으로 되어 있던 것을 올해 초 부터 Eclipse 플러그인 형태로 다시 개발하게 되었다.  그동안 <자바 개발자를 위한 이클립스 바이블> 이라는 두꺼운 책을 거의 다 공부하면서 나름 힘겨운 시간을 보냈다.

‘이게 과연 혼자서 가능할까?’ 싶은 생각이 들때면, ‘다 사람이 하는건데 뭐…’ 라고 스스로 다독였다. 그리고 …

Co-Design Environment
아직은 매우 단순하지만, 시스템 전체를 표현하고 그 것을 C코드로 컴파일 하는 것을 구현할 수 있었다. 책의 대부분을 한번 이상 공부한 지금은 처음에 비하면 꽤나 자신감이 붙어, 노력하면 충분히 할 수 있다고 생각하고 있다.  그리고 꼭 해내야한다. 대학원 컴파일러 수업의 논문 작성과 영어 발표 그리고 월드컵까지 겹쳐 쉽지 않은 5, 6월이 될 것 같다. 시간관리를 철저히 잘해서  살아남아야겠군!