2017년 7월 12일 수요일

Single Board Computer를 이용한 Embedded Linux 분석 및 Kernel Programming

본 blog에서는 아래 열거한 몇가지 single board computer(TI, Atmel, Freescale, Allwinner, Qualcomm, Marvell, ST, Rockchip, MediaTek 등)(100$ 이하의 보드만을 대상으로 함)를 기초로 하여, bootloader, device tree, linux kernel & device driver, Buildroot, Yocto project, Android, system programming 및 application programming 등과 관련된 내용을 지속적으로 분석해 봄으로써, embedded linux & RTOS 개발에 필요한 기초 지식을 정리 & 공유해 보고자 하고자 한다.


<주요 주제>
a) 다양한 SBC 검토(datasheet, schematics  등) - ARMv7-M/A, ARMv8-A, MIP32
b) Buildroot, Yocto project, OpenWRT, Android 등 적용
c) bootloader(u-boot, Little Kernel 등), device tree, linux kernel 코드 분석
d) Linux kernel module, device driver programming, RTOS(RIOTZephyr and NuttX) programming
e) application programming(system programming, android app, Qt app, Python app, web programming)
f) networks(TCP/IP, L2/L3, Wired/wireless, LTE, SDN/NFV)



ARMv7-M Series(32 bits)
1) Nucleo F103RB - STM32F103RB ARM Cortex-M3 MCU
<특장점>
ST-Link/V2-1 programmer(debugger)가 on board되어 있어, 별도의 jtag debugger가 필요치 않다(console cable도 필요치 않음). ST micro 보드는 매우 널리 사용되고 있으며, 인터넷에서 관련 자료를 쉽게 찾을 수 있음. RIOT OS에서 지원하고 있는 보드임.

<my postings>
ARMv7-A Series(32 bits)
2) BeagleBone Series - Sitara AM335x 1GHz ARM Cortex-A8 (***** Best website for developers)
<특장점>
현재 다른 보드에 비해 널리 알려져 있어, 관련 자료(book 포함)를 확보하기에 매우 유리하다. 2~3년 전에 BBB를 사용해 보았는데, 최근에 출시된 BB Green, BB Blue(Robot, Drone 용)도 사용해 보고 싶은 마음이다.

<my postings>
e) http://slowbootkernelhacks.blogspot.kr/2016/12/booting-beaglebone-black-with-yocto.html


3) SAMA5DX Series - Atmel ARM Cortex-A5 (536Mhz ~)  (***** Best website for developers)

<특장점>
Atmel 공식 site에 올라와 있는 내용이 매우 잘 정리되어 있어, 보고 따라 하는데 매우 효과적이다. 개인적으로 (여러가지 면에서) 매우 좋은 보드라고 생각한다 :)

<my postings>
4) RIoTBoard - Freescale(NXP) i.MX 6Solo, ARM Cortex-A9

<특장점>
Freescale(NXP를 거쳐 현재는 Qualcomm에 인수됨)보드가 대부분 가격이 비싼데 반해, 상대적으로 저렴한 편이다. 공식 site의 관련 내용이 상대적으로 빈약한 편이지만, freescale community site를 활용하면 충분할 것으로 보인다.

<my postings>
a) http://slowbootkernelhacks.blogspot.kr/2017/01/riot-board-based-on-freescale-imx-6solo.html
b) http://slowbootkernelhacks.blogspot.kr/2017/01/riot-board-device-tree-analysis.html
c) http://slowbootkernelhacks.blogspot.kr/2017/05/yocto-project-linux-device-driver.html
d) http://slowbootkernelhacks.blogspot.kr/2017/06/yocto-embedded-linux-systems-programming.html


5) UDOO NEO - Freescale(NXP) i.MX6 SoloX(ARM Cortex-A9 core + Cortex-M4 core)
<특장점>
ARM Cortex-A9와 Cortex-M4 I/O real-time co-processor(아두이노 용)를 통합한 processor를 사용. Freescale(NXP) chip을 사용하며, Wi-Fi/Bluetooth, 9 Axis sensor(accelerometer, Gyroscope, Magnetometer)를 장착하고 있음. 관련 website의 자료가 잘 정리되어 있어 개발자에게 충분한 도움이 될 것으로 보인다. 현재 Android 6.0.x Marshmallow version을 지원함.

<my postings>
a) http://slowbootkernelhacks.blogspot.kr/2017/02/how-to-build-android-sources-for-udoo.html
b) http://slowbootkernelhacks.blogspot.kr/2017/02/device-tree-analysis-for-udoo-neo-board.html
c) http://slowbootkernelhacks.blogspot.kr/2017/03/linux-kernel-programming-guide.html
d) http://slowbootkernelhacks.blogspot.kr/2017/03/efficient-linux-kernel-4x-programming.html
e) http://slowbootkernelhacks.blogspot.kr/2017/04/linux-device-driver-programming-using.html


6) NXP PICO-IMX6UL - Freescale(NXP) i.MX6UL(Cortex-A7) 528Mhz, hobbitboard

<특장점>
Android things(Android 기반의 IoT)를 지원하는 보드(이 밖에도 Google이 지원하는 Android things용 보드로는 Intel Edison, Raspberry Pi 3 등이 있음). Base board와 SOM board가 분리되어 있는 특징이 있음. Android 기반의 IoT를 생각하고 있다면 한번 써 보는 것도 좋을 듯 .. 근데, 아직은 Android things가 개발자 preview 상태인 듯 함(Brillo source를 내려 받았으나, build가 안됨).


ARMv8-A Series(64 bits)
7) DragonBoard 410c - Qualcomm Snapdragon 410, Quad-core ARM Cortex A53, 1.2GHz, 64bit capable

<특장점>
휴대폰 시장의 최강자인 Qualcomm chip을 사용한다는 점... 관련 site의 내용이 그럭 저럭 잘 정리되어 있는 듯 보인다. 또한, ARM Cortex A53, 64bit라는 점도 특이점이다. 96board !


8) PINE64 - Allwinner A64, Quad-core ARM Cortex A53, 1.2GHz, 64bit capable

<특장점>
Mobile application processor 중, 나름 강자인 Allwinner 사의 A64 chip을 사용하고 있으며, 아주 저렴한 가격($15 ~  $29)을 자랑한다. 주변 accessory 가격(예: 7인치 LCD가 $35.99)도 대부분 저렴한 편이다. 다양한 OS 즉, Armbian, Android, Remix(PC용 android), Windows IoT 등을 지원한다. 뿐만아니라 같은 chip으로 PINEBOOK이라는 매우 탐나는 노트북을 만들어 판매(주문하면 2달후 쯤에 받을 수 있는 듯)하고 있는데 가격이 $99(14인치 LCD 기준)이다.

<my postings>
a) https://slowbootkernelhacks.blogspot.kr/2017/07/pine-a64-64-bit-arm-linux.html

ROCK64 - Rockchip  RK3328, Quad-core ARM Cortex A53, 64bit, 4GB DDR3, USB 3.0
같은 회사(Pine microsystems Inc.)에서 개발한 아래 보드도 관심이 간다.


9) ESPRESSObin - Marvell ARMADA 3700 chip, dual-core ARM Cortex A53, 1.2GHz, 64bit capable, Official website
<특장점>
Marvell이 network에서 강점을 보인다고 할 수 있는데, Marvell chip을 사용하고 있다는 점이 장점이라면 장점임. 또한 앞서 소개한 SBC에 비해 Router(Gateway)를 target으로 한다는 점이 특이하다고 볼 수 있음. 물론 ARM Cortex A53, 64bit라는 점도 특이점임 ...
(*) 예정보다 release 시점이 매우 늦어지고, 지원에 다소 문제가 있는 듯 보인다.
(*) 그리고, Marvell은 기본 datasheet 조차도 open하지 않는 문제가 있다.


=========================================================================================

MIPS32 Series(32 bits)
10) WiTi board - MediaTek MT7621A Dual-Core@880Mhz chip(MIPS, 32bit), wiki pagehttps://github.com/mqmaker/witi-openwrt


<특장점>
오랫만에 MIPS를 기반으로 하는 SBC로써, Wi-Fi Router를 target으로 한다. 4 port LAN 및 2 port WAN이 모두 Giga를 지원하며, 2.4GHz WiFi와 5GHz WiFi(802.11a/n/ac, up to 867Mbps)를 지원한다. 또한 SATA 3.0 interface에 외장 hdd를 달아 NAS 서버로도 활용 가능하며, USB 3.0을 지원하고 expansion 포트를 제공한다.


현재 예정은 이와 같으나, 상황(새로운 것, 사용해보고 싶은 것)에 따라 다른 board로 대체될 수 있음을 미리 밝힌다.

 Slowboot         

댓글 1개:

  1. 이전 글에 비춰봐서는 좋은 글이 올라 올 것 같습니다.

    답글삭제