OS 선택하기+알파

by Audvans | 2017-05-22 16:38
android audio dsp linux modular multi effects p212 신호처리 오디오

재료

  • S905x mini board PC 1개

첨부파일

프로젝트에서 사용할 미니 보드 PC는 Amlogic S905x가 들어있는 안드로이드 TV box이다. Raspberry pi 3라든가 Khadas Vim 혹은 ODROID C2 같은 보드들도 성능은 대동소이 하다. 성능을 꼭 비교하자면 이들은 Cortex A53이 4개 들어있는 CPU로 만들어진 것들이라 흔히 octacore로 알려진 big.little 구조로 된 스마트폰 용 AP에 비해서 많이 느리다. 그렇다고 멀티 이펙트 기능을 동작시키는 것까지 해내지 못할 정도로 느리진 않다.

core가 4개 이므로 1개는 UI를 위해서 쓰고 나머지 3개를 적절히 활용할 수 있겠다 하는 생각을 해볼 수 있는데, 이것을 어떻게 구현하겠느냐는 어떤 OS를 선택하느냐에 따라 달라진다. 어차피 이 프로젝트는 저가 부품과 장비를 활용하여 고가 제품의 기능을 구현하겠다는 것을 목표로 하고 있으므로 사실상의 선택권이 없다고 볼 수 있다.

즉! linux가 아니면 조금 더 노력해서 android로 구현할 수 있고, 하드웨어 플랫폼 역시 고가의 초고속 DSP이거나 x86이 아닌 arm based로 가야한다. 불행히도 arduino level에서는 원하는 기능을 전부 구현할 수 없다. 한 두 가지 기능은 구현이 가능할 수도 있을 것으로 보이지만, 그러한 환경에서 개발을 할 수는 없다. 일반적으로 시스템 로드가 1.5-2 정도의 여유를 가지고 있어야 개발을 하든 최적화든 할 수 있기 때문이다.

처음 이 프로젝트의 목표는 안드로이드가 올라가는 최저가의 mini board type의 개발환경에서 android용으로 app을 구현하고 android가 제공하는 다양한 네트워크 접속 환경을 이용해서 이펙트 기능을 업데이트 한다거나 이펙트 패치를 다른 플레이어들과 공유하기도 하고 BT로 사운드 입출력을 받는다거나 WIFI로 remote를 한다거나나 하는 것이었는데, 이것은 사실상 이 프로젝트가 본좌 혼자 진행되는 프로젝트이고 아무런 펀딩이 없는 관계로 경험 많은 개발자들과 같이 일할 수 없으므로 속도를 조금 늦춰서 linux 환경에서 먼저 돌게 한 뒤에 android로 옮겨가려는 계획을 하고 있다.

현재 구할 수 있는 미니보드 PC(?) 혹은 개발환경 중에서 가장 가성비가 높은 게 무엇이냐 하면 다양한 의견이 있을 수 있는데, raspberry pi 3와 S805/S905/905x/912로 가는 amlogic의 CPU를 사용한 보드가 되겠다. 후자의 경우는 대부분 android tv box의 형태로 되어 중국에서 대량 생산되어 전세계적으로 팔리고 있고, 국내에는 사실 케이블 사업자들이 능력이 좋기 때문인 것인지 가격대가 잘 형성되어있기 때문인지 타국에 비해 상대적으로 안드로이드 박스의 인기는 별로 없는 것 같다. 무슨 말이냐면 해당 지역에서 케이블 티비 서비스가 좋다든가 사람들이 필요로 하는 컨텐츠가 적정한 가격에 제공되고 있다면 구태여 이런 보드가 필릴 이유가 없는데, 싼 것을 찾는 이들이 많은 곳에서는 안드로이드 티비 박스 혹은 KODI를 올릴 수 있는 mini board PC가 대박을 쳤다.

인터넷을 잠시 돌아다니면 알 수 있지만, 비슷한 류의 미니PC인 firestick (rockchip inside) 같은 것에도 linux를 올리고 kodi를 올리는 시절이라 android box도 사실상 android를 이용해서 게임도 하고 여타 안드로이드로 할 수 있는 일도 하지만 youtube와 kodi가 주된 목적이라고 볼 수 있다. netflix나 hulu은 덤이라고 봐야 한다. firestick이 있는데 구태여 여기에 linux을 올리고 kodi설치하는 쑈를 시전할 필요는 없기 때문이다.

흐름이 밖으로 샜는데, 가성비를 추구하는 미니 보드 PC중에서 가성비가 가장 높은 군이 S905x 정도 되겠다. 1-2시간만 인터넷을 돌아다니면 답은 금방 나온다. 본론으로 돌아와서 S905x가 들어있는 안드로이드 TV box를 사용하는 이유는 linux로 시작해서 android로 끝낼 수 있을 뿐더러 사용자층이 엄청나게 넓기 때문에 100% 장담할 수는 없으나 third party에 의해 추후의 android version up도 기대해 볼 수 있다. raspberry pi 3의 경우는  4k가 안된다는 것이 큰 걸림돌이고 android tv box처럼 케이스 및 remote control sensor까지 완벽하게 갖춘 플랫폼이 아니라는 것에 있다. RPI3를 위한 안드로이드는 이미 돌아다니고 있지만 S905x S912 android tv box와는 경쟁이 어렵다. 


위 사진은 S905x를 사용하는 Khadas VIM의 모양새 되겠다. 안드로이드까지 올리는 보드가 되다보니 무선랜과 BT 모두 지원된다. 그러나 보다시피 미니보드 PC인 만큼 audio in은 없다. 이것이 이 미니보드를 기타이펙트로 쓸 수 없게 하는 가장 큰 문제 되겠다. 이것은 다음 포스팅에서 다루기로 한다. 어쨋든 그림으로 봤을 떄 필요한 기능은 기대 이상으로 많이 갖추고 있다. 가격이 애매한데 계속 얘기하는 것처럼 android tv box가 답이다. 케이스와 전원, 그리고 기본적으로 안드로이드 OS가 끼어오면서도 가격이 이 보드보다 싸다. 

현재 S905/905x/912 전용으로 정식 배포되는 linux 배포판은 아직 없다. architecture를 보면 arm64인데 왜 기존의 arm linux를 못 설치하느냐 할 수 있는데, 알다시피 bootloader를 포함해서 일단 kernel, 또 기존에 안드로이드 OS를 쓰는 사람들이 못해도 듀얼부트는 할 수 있게 해줘야 armv8 혹은 arm64용 S/W를 돌릴 수 있기 때문이다. 러시아 개발자들 1-2인 정도가 이런 저런 linux 배포판을 뿌리고 있는데, 다소 아쉬운 부분이 있지만 쓸만하다. 아쉽다는 말은 디바이스 드라이버가 애매하다는 것에 있다.

중요한 이펙터의 소스들은 모두 C/C++로 되어있다. 안드로이드로 가더라도 어쩔 수 없이 architecture 별로 검파일 해서 바이너리로 들고 있을 수 밖에 없다. 그나마 속도를 좀 올리려면 답이 없다. 성능/음질과 타협을 아주 많이 해도 실시간으로 동작시킬 수 있을지는 알 수 없기 떄문이다. 일단 linux에서는 ALSA의 기본적인 지원을 받아서 동작시킬 수 밖에 없다. 



댓글 0

MADE BY

Audvans

analog audio, audio dsp, c/c++, digital audio, dsp, guitar playing, hackintosh, mpich, Node.js, orcad, parallelism, pascal, perl, Python, raspberry pi, s905x, spice