2020년 5월 10일 일요일

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

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


<주요 주제>
a) 다양한 SBC & embedded processor 검토(datasheet, schematics  등) - ARMv7-M/A, ARMv8-A, MIPS32, x86, PowerPC ...
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 ARM Mbed OS) programming
e) Application programming(system programming, android app, Qt app, Python app, web programming)
f) Networks(TCP/IP, L2/L3, Wired/wireless, LTE), security(Wireguard, SoftEther VPN), LoRaWAN etc.





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 보드는 매우 널리 사용되고 있으며, 인터넷에서 관련 자료를 쉽게 찾을 수 있음. ARM Mbed OS, Zephyr Project, RIOT OS에서 지원하고 있는 보드임.

<my postings>
a) http://slowbootkernelhacks.blogspot.kr/2017/03/riot-os.html
b) http://slowbootkernelhacks.blogspot.kr/2017/03/riot-os-2.html
c) http://slowbootkernelhacks.blogspot.kr/2017/03/zephyr-project.html
d) https://slowbootkernelhacks.blogspot.com/2020/05/posting-linux-os-arm-mbed-os-disco.html


2) DISCO-L072CZ-LRWAN1 - B-L072Z-LRWAN1 LoRa Discovery Kit, ARM 32bit Cortex M0+ CPU

<특장점>
LoRaWAN 센서를 만들기에 적합한 보드이며, ARM Mbed OS를 지원한다. 원문 내용을 그대로 옮겨 보았다. 
"The B-L072Z-LRWAN1 LoRa®Discovery kit is a development tool to learn and develop solutions based on LoRa®and FSK/OOK technologies. This Discovery kit features an all-in-one open module CMWX1ZZABZ-091 (by Murata). The module is powered by an STM32L072CZ and an SX1276 transceiver."
<my postings>



ARMv7-A Series(32 bits)
3) 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


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

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

<my postings>
5) 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


6) 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


7) 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가 안됨).


8) MediaTek BPI-R2 - MediaTek MT7623N Quad-core ARM Cortex-A7, 2GB DDR3, 8GB eMMC, 5 10/100/1000 Ethernet Ports


<특장점>
Wi-Fi AP를 만들어 보는 시험을 하기에 적합할 듯 하다. BSP가 OpenWrt 기반으로 되어 있다. 같은 회사에서 만든 BPI-R64도 괜찮아 보인다.

<my postings>
a) https://slowbootkernelhacks.blogspot.com/2020/05/openwrt-access-point.html


9) ST STM32MP157C-DK2 - STM32MP157 ARM Cortex-A7(32 bit) + Cortex-M4(32 bit) MPU, ST PMIC STPMIC1, 4-Gbit DDR3L, 4" TFT 480x800 LCD, 5V/3A USB Type-C power supply ...

<특장점>
ST의 장점을 살려 Cortex-M4 MPU(coprocessor)와 ARM Cortex-A7 MPU(main processor)를 하나로 통합하였으며, main processor에는 Yocto로 생성한 OpenSTLinux를 기본으로 탑재하고 있다. TFT LCD가 기본으로 장착되어 있어, GUI나 동영상 관련 app을 개발 & 실험하기에 적합하다. 뿐만아니라 (모양은 좀 허접해 보이지만) STM32 MPU wiki page의 내용이 아주 잘 정리되어 있어, 개발에 많은 도움이 될 것으로 보인다.


<my postings>






g) https://slowbootkernelhacks.blogspot.com/2020/07/linux-kernel-programming-gpio-interrupt.html


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

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


11) 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.)에서 개발한 아래 보드도 관심이 간다.


12) 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라는 점도 특이점임 ...

<my postings>
a) https://slowbootkernelhacks.blogspot.com/2020/04/espressobin-wireguard-vpn.html


13) Gl-iNet MV1000 - Marvell ARMADA 88F3720 chip, dual-core ARM Cortex A53, 1.0GHz, 64bit capable, Official website

<특장점>
ESPRESSObin board 보드와 거의 동일 spec의 완제품임. OpenWrt가 기본으로 탑재되어 있으나, Ubuntu를 올릴 수도 있음.


<my postings>
a) https://slowbootkernelhacks.blogspot.com/2020/05/glinet-mv1000-softether-vpn.html


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



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

 Slowboot         

댓글 12개:

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

    답글삭제
  2. 올해 국내 출시한 Asus Tinker 보드가 rock3288 32bit core 를 사용하는데, 비교적 전성비가 좋다고 알려져 있어 기대가 됩니다.

    CPU: Rockchip RK3288 - Quad core 1.8 GHz ARM Cortex-A17 (32-bit)
    GPU: 600MHz Mali-T764 GPU

    https://tinkerboarding.co.uk/wiki/index.php/Hardware#Specifications

    답글삭제
  3. tefillar-heArlington Ebony Guzman click
    obclamvolldis

    답글삭제
  4. I like your all post. You have done really good work. Thank you for the information you provide, it helped me a lot. I hope to have many more entries or so from you.
    Very interesting blog.
    Eset Smart Security Premium Crack
    Helicon Focus Pro Crack
    Wondershare Dr.Fone Crack
    AOMEI Partition Assistant Crack
    Tenorshare iCareFone Crack

    답글삭제