하드웨어/소프트웨어 동시설계에서 이 둘 사이의 인터페이스(디바이스 드라이버, and so on)를 자동으로 생성해주는 것은 상당히 중요하다. 특히 우리 연구실에서 채택한 Heterogeneous Modeling 방법에서 이는 필수요소라고 할 수 있다.
졸업하신 춘호형이 개발한 Hinge를 현재 우리의 개발환경에 맞게 수정하는 것이 내가 할 일 중에 하나였고, 그에 앞서 꼭 기존의 Hinge가 만들어낸 인터페이스가 동작해야만 했다. 졸업을 해야하니까! 문제는 쉽게 동작하는 모습을 볼 수 없었고, 하드웨어를 포함한 실험이라 무엇이 문제인지 좀처럼 찾아낼 수 가 없다는 것.
매일 이 것에 매달린 것은 아니지만 2,3주 동안 여러가지 가설을 세워가며 문제가 될만한 곳을 찾아보았다. 생전 나와 관련이 없어보였던 Verilog HDL도 공부했다. 결국 문제는 그동안 문제가 없을 것이라며 블랙박스로 여겼던 디바이스 드라이버에 있었다!
버그는 단지 little-endian 으로 인한 것이였다. 16비트 1을 쓰게 되면 이 때 1이 위치한 비트가 내가 생각한 위치와 달랐던 것이 문제였다! 덕분에 하드웨어와 소프트웨어를 걸쳐서 각종 다양한 지식을 섬렵할 수 있었으나 지나간 세월은 …
소프트웨어에서 하드웨어로 가는 신호가 인가되었을 때, LED를 켜지게 만들었는데 너무나 당당하게 불을 내뿜는 것이 아닌가! 우리가 고안한 프로그램이나 시스템이 원하는 바 그대로 동작되었을 때 느끼는 쾌감! 개발자들은 이 맛에 힘든 개발자의 길을 묵묵히 걸어가고 있는 것이 아닐까?