비글본을 아두이노처럼 사용하기


<비글본을 아두이노처럼 사용하기>

 


지난번에 비글본보드및 다른 보드의 부팅 과정에 대해서 설명해 드렸습니다.

 


이번에는 부트로더 없이 바로 프로그램을 작성해서 실행하는. 이른바 bare metal 프로그래밍에 대해서 알아 보겠습니다.

 


(오로카의 나무꾼님께서 아이디어를 제공해 주셨습니다.@.@)

 


아두이노와 같은 저성능 보드의 경우에는 덩치가 큰 리눅스가 올라갈 수가 없어서 부트로더에서 바로 어플리케이션을 실행합니다.

 


그러나, 비글본 보드와 같은 고성능보드에서는 아예 리눅스가 기본 내장되어 있습니다.

 


그런데 아두이노의 이점이 장점이 될수 있는게 덩치가 큰 리눅스는 그 덩치만큼이나 부팅시간도 오래 걸립니다.

 


많게는 수십초 - 수 분이 걸리기도 하죠.

 


그렇지만 아두이노와 같은 보드는 전원이 인가되자마자 목적하는 프로그램을 실행시켜 줍니다.

 


그래서 각종 arm 보드에서도 아두이노처럼 간편하게 사용할 수있는 방법이 없나 연구해 보았습니다.

 


지난번 글에서도 말씀드렸지만 마스보드나, 큐비보드의 경우 섹터 쓰기 방식의 부트로더를 사용하는데,

 


섹터 쓰기방식의 불편함은 파일 자체를 만든후 반드시 섹터 쓰기 과정을 거쳐야 한다는 것이었습니다.

 


이와는 달리, 라즈베리 파이나 비글보드의 경우에는 FAT 파티션에서 파일을 읽어들여 부팅을 하므로

 


비교적 간단하게 (리눅스 호스트가 없는 컴퓨터에서도) 부트로더를 바꾸고 bare metal 프로그램을 작성할 수 있다는 것입니다.

 

 

 

 

 

 

그렇다면 필요한 것이 무엇인지 하나하나 알아보고 이것을 어떻게 프로그램 하는지 알아보겠습니다.

 


먼저 고려할 점은 u-boot 에서 생성되는 첫번째의 부트로더를 대치해야 한다는 것입니다.

 


이것은 u-boot의 첫번째 부트로더가 행하는 일을 우리가 작성할 MLO 에서도 해줘야 된다는 것입니다.

 


제일 처음 생각해 볼수 있는 방법은 u-boot 소스를 받아다가 우리가 수행하기 원하는 루틴을 넣는 방법입니다.

 


그렇지만 u-boot 자체도 이제는 너무 덩치가 커쳐서 분석하기가 만만치 않다는 것입니다.

 


그렇다고 해서 일일히 부트로더와 초기화 루틴을 처음부터 만들수는 없는 일.. 그래서 인터넷을 뒤졌습니다.

 


마침! TI 에서 StarterWare 라는 OS 없이 동작할 수있는 라이브러리를 제공해 줍니다.

 


http://processors.wiki.ti.com/index.php/StarterWare

 

 


StarterWare is a free software development package that provides no-OS platform support for ARM and DSP TI

processors. StarterWare includes Device Abstraction Layer (DAL) libraries and example applications that

demonstrate the capabilities of the peripherals on the TI processors. StarterWare also provides pre-built

binaries for quick evaluation on the target.

 

 

 

이야기인 즉슨 장치 추상화 레이어와 라이브러리를 제공한다는 것인데..

 


문제가(!) 있습니다.

 


'비글본' 보드까지만 지원을 한다는 것입니다. 비교적 최근 보드인 '비글본 블랙'은 지원하지 않습니다.

 


그래서 비글본 보드와 비글본 블랙 보드의 차이점을 발견하고,

 


이 차이점에 대한 패치를 해 줘야 비글본 블랙에서 돌아가는 bare metal 프로그램을 작성할 수 있음을 알 수 있습니다.

 


http://circuitco.com/support/index.php?title=BeagleBoneBlack

 


여기서 차이점을 살펴 봅시다.

 

 

 

 

 

비글본 보드와 비글본 블랙 보드의 차이점은 먼저 CPU 가 비글본 보드는 am3358 비글본 블랙은 am3359 입니다.

 


이것은 테크니컬 매뉴얼을 살펴보면 전부 am335x 계열로 분류가 되어있으므로 각종 i/o 어드레스는 호환이 가능함을

 


추측 할 수 있습니다.

 


그다음, 메인 클럭의 경우에도 비글본은 700MHz 비글본 블랙은 1GHz 입니다.

 


마지막으로 메모리의 경우에도 비글본의 경우는 DDR2 인데반해 비글본 블랙은 DDR3 입니다.

 


그렇다면 결론은 원래의 비글본 보드용 소스에서 PLL 클럭 세팅해 줘야하는 부분과 DDR2 메모리 초기화 부분을

 


고쳐주면 된다는 것을 알 수 있습니다.

 


일일히 고치려고 삽질을 하려는 찰라에.. 인터넷의 어떤 고마운 분께서 미리 해 놓으신 일을 찾을수 있었습니다.

 


할렐루야~

 


http://e2e.ti.com/support/embedded/starterware/f/790/t/271176.aspx

 


(이글이 올라갈때 쯤이면 이미 비글본 블랙을 위한 StarterWare가 공개되어 있을지도 모르겠습니다.)

 

 

 

 


그런데 완전한 MLO binary가 아니라서 (소스코드라서) 일일히 컴파일을 해 줘야 합니다.

 


위에서 가져온 3개의 파일을 원본파일과 교체하고,

 


비글본 헤더 beaglebone.h 의 오타 _BEALGEBONE_H_ 도 _BEAGLEBONE_H_ 도 교체합니다.

 


(벨게본이라니 TI ㅡ,.ㅡ 테스트도 안해본건지.)

 

 

  
 
#ifndef _BEALGEBONE_H_

#define _BEAGLEBONE_H_

 


 


#ifndef _BEAGLEBONE_H_

#define _BEAGLEBONE_H_

 



 
  

 


이후 컴파일을 진행합니다.

 


컴파일은 윈도우상의 cygwin에서도 실행할 수 있지만 저는 이미 리눅스 부팅가능한 노트북이 있으므로

 


리눅스에서 컴파일을 했습니다.

 


컴파일시에 고려해야 할 점을 설명드리겠습니다.

 


bare-metal 프로그램의 경우 일반 어플리케이션 프로그래밍과 다른점이 printf 등의 시스템콜 자원을 사용하는 함수를

 


쓸 수 없다는 것입니다.

 


printf 등의 함수는 내부적으로 시스템콜로 들어가는 루틴을 사용합니다.

 


이것은 시스템 콜로 링크되는 함수를 사용하는 컴파일러를 사용할 수 없다는 말입니다.

 


일반적으로 arm-linux-gnueabi-gcc 라는 크로스 컴파일러를 사용하는데

 


즉, 여기서는 이 컴파일러를 사용할 수 없습니다.

 


컴파일러 이름을 분석해 보면

 


arm - arm 용 크로스 컴파일러 라는 의미입니다.

 


linux - linux 시스템 콜을 이용하는 컴파일러라는 의미입니다.

 


gnueabi - gnueabi gnu 에서 만든 extended application binary interface 를 사용한다는 의미입니다.

 


 시스템 콜의 일종의 호출 규약을 정해놓은 것이라 생각하면 됩니다. 라이브러리에 링크를 하기위해서는 각각 알맞는 호출 규약을 따라야 합니다.

 


gcc - gnu compiler collection 이라는 의미입니다.

 

 

 

 


자 그럼 일단 이것을 이용할 수는 없다는 것을 알았습니다.

 


(다음의 링크를 보시면 bare metal 프로그램에서 시리얼 통신을 하는 예제를 보실수 있습니다. 직접 메모리 제어를 합니다)

 


http://balau82.wordpress.com/2010/02/28/hello-world-for-bare-metal-arm-using-qemu/

 

 

 

 


StarterWare에서도 명시적으로 단순히 gcc 컴파일러를 사용하지 않습니다.

 


arm-none-eabi-gcc 컴파일러를 사용합니다.

 


이제는 none 의 의미를 아시겠죠. 시스템콜을 이용하지 않는 함수를 라이브러리에 포함하고 있는 컴파일러 모음입니다.

 


즉 bare metal 프로그램을 위해서 만들어진 컴파일러 라는 것을 알 수 있습니다.

 


마침 이것은 데비안에서 이미 패키지로 제공해 주고 있습니다.

 


sudo apt-get install gcc-arm-none-eabi 명령으로 설치를 합니다.

 


그리고, StarterWare 의 build/arm7a/gcc 폴더로 들어가서 라이브러리 세팅을 해 줍니다.

 


(LIB_GCC, LIB_C를 우리가 받은 arm-none-eabi 컴파일러 위치로 변경해 줍니다.)

 


LIB_GCC=/usr/lib/gcc/arm-none-eabi/4.7.4/

 


LIB_C=/usr/arm-none-eabi/lib/

 


그리고 부트로더를 새로 작성해 줍니다.

 


다 되었습니다.

 


boot-ti.bin이 성공적으로 만들어 졌습니다.

 

 

 

p.s) 물론 arm-linux-gnueabi-gcc 컴파일러를 이용하되 시스템 콜을 안쓰는 프로그램을 만들면 위와 똑같은 결과를

 


얻을 수 있습니다.

 


하지만 링크되는 라이브러리의 문제점은 우리가 찾기도 힘들고, 소스코드도 우리가 만든 코드가 아니므로

 


문제가 발생할 수 있습니다. 따라서 애초에 arm-none-eabi-gcc 로 컴파일을 하는것이 좋습니다.

 

 

 

 


이제 bootloader 폴더에 boot-ti.bin 이 생겼습니다. 이것을 MLO 라고 이름을 바꾸고 microSD 의 루트에 넣습니다.

 


그리고 시험하고자 하는 어플리케이션의 이름을 app 로 바꾸고  microSD 의 루트에 넣습니다.

 


저는 gpioLEDBlink_ti.bin 을 app 으로 바꾸었습니다.(하기 힘든분들을 위해서 이미 만들어진 파일도 첨부 합니다.)

 


첨부된 MLO 와 app 을 microSD에 넣고 비글본 블랙의 S2 버튼을 누른채 전원을 켜면 D4 led 가 깜박거리는 것을

 


확인 할 수 있습니다.

 


동영상도 참고 하시기 바랍니다.

 

 

 

 

 

 

수고하셨습니다.

 

 

 

이상으로 비글본을 아두이노처럼쓰기 (bare metal programming)을 마칩니다.

 

 

 

 

 

 

결론

 


사실 아직 초기의 보드라서, 아두이노처럼 편리하게 빌드가 가능하지는 않습니다.

 


여기까지 따라온 분들만 해도 대단한 분이라는 생각이 듭니다.

 


앞으로는 BBB를 위해 아두이노처럼 bare metal 프로그램을 위한 쓰기 편한 개발툴과 라이브러리를 구축해 나가는 것이

 


과제라고 말씀드리고 싶습니다.

 


그리고 그 과제는 저와 이글을 읽는 모든 분들의 숙제로 남겨 놓습니다.

 


감사합니다.

[출처] 비글본을 아두이노처럼 사용하기 (오픈 H/W 마스보드&비글본블랙 사용자 Cafe) |작성자 고명호

비글본 블랙의 SD에 설치된 우분투를 eMMC에 설치하기

 

※ 테스트를 위한 보드는 ICBanQ에서 제공되었으며, 체험단활동의 일환으로 본 게시물이 작성되었음을 알립니다

 

0. 시작하기 전에...

SD카드에 설치한 ubuntu(http://lifeseed.tistory.com/68 , http://cafe.naver.com/ohboard/86 )를 eMMC로 옮겨서 SD카드 없이 eMMC로 부팅할 수 있으며, SD카드는 오로지 데이터 공간으로 사용할 수 있게 된다.

단지 SD에 설치된 ubuntu로 부팅 후 스크립트만 실행하면 된다.

http://elinux.org/BeagleBoardUbuntu#eMMC:_BeagleBone_Black 를 참조하면 더 많은 정보를 얻을 수 있다.

 

1. eMMC BackUp

1) eMMC의 정보를 확인 하자.

fdisk를 이용할 경우 아래와 같이 GPT 어쩌고 저쩌고 메세지와 함께 GNU parted를 사용하라고 한다.


root@arm:~# fdisk /dev/mmcblk0

WARNING: GPT (GUID Partition Table) detected on '/dev/mmcblk0'! The util fdisk doesn't support GPT. Use GNU Parted.

 

parted 명령을 이용해 메모리 정보를 파악하자.

cf) parted 명령어를 찾을 수 없다는 메세지가 나오면 apt-get install parted 를 이용하여 설치하면 된다.


root@arm:~# parted -l
Error: /dev/mmcblk1boot0: unrecognised disk label

Error: /dev/mmcblk1boot1: unrecognised disk label

Model: SD SU16G (sd/mmc)
Disk /dev/mmcblk0: 15.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      512B    67.8MB  67.8MB  primary  fat16        boot, lba
 2      67.8MB  1965MB  1898MB  primary  ext4
 3      1965MB  15.9GB  14.0GB  primary


Model: MMC MMC02G (sd/mmc)
Disk /dev/mmcblk1: 1921MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      32.3kB  74.0MB  74.0MB  primary  fat32        boot, lba
 2      74.0MB  1916MB  1842MB  primary  ext4

 

eMMC여서인지 sd카드 파티션이랑 동일한 이름인 mmcblk 로 partition이 잡혀있다.

용량을 보면 2G 인 /dev/mmcblk1 이 내장 eMMC partition임을 알 수 있다.

 

2) eMMC를 backup하자

dd 명령을 이용하여 USB 메모리 스틱, 네트워크 저장공간 혹은 SD카드의 남는 공간에 백업이 가능하다.

root@arm:~# dd if=/dev/mmcblk1 of=/some/place/with/enough/space

 

2. eMMC에 ubuntu 설치

1) Script 파일을 구하자.

github의 RobertCNelson 이라는 분께서 친히 스크립트를 만들어 놓으셨다.

아래 페이지에 접속해서 스크립트 부분만 복사해 파일을 만들어 실행해도 되고, git clone으로 받아도 된다.

script page : https://github.com/RobertCNelson/tools/blob/master/scripts/beaglebone-black-copy-microSD-to-eMMC.sh
 

root@arm:~# git clone https://github.com/RobertCNelson/tools

scripts 폴더에 bealglebone-black을 위한 몇개의 script가 있다.

그중 microSD-to-eMMC 스크립트를 사용할 것이다.

 

2) 스크립트 실행

루트 권한으로 beaglebone-black-copy-microSD-to-eMMC.sh 파일을 실행하자.

root@arm:~# ./beaglebone-black-copy-microSD-to-eMMC.sh
... ...

... ...

kernel/sound/pci/ac97/snd-ac97-codec.ko
kernel/sound/usb/
kernel/sound/usb/snd-usb-audio.ko
kernel/sound/usb/snd-usbmidi-lib.ko
kernel/sound/usb/6fire/
kernel/sound/usb/6fire/snd-usb-6fire.ko
kernel/sound/usb/caiaq/
kernel/sound/usb/caiaq/snd-usb-caiaq.ko
kernel/sound/usb/misc/
kernel/sound/usb/misc/snd-ua101.ko

sent 35055261 bytes  received 26520 bytes  4127268.35 bytes/sec
total size is 34959369  speedup is 1.00

This script has now completed it's task
-----------------------------
Note: Actually unpower the board, a reset [sudo reboot] is not enough.

 

이제 설치가 끝났다.

시스템을 종료하고 SD카드를 제거한 후 eMMC로 부팅하자.

 

root@arm:~# df -H
Filesystem      Size  Used Avail Use% Mounted on
/dev/mmcblk0p2  1.8G  609M  1.1G  37% /
none            4.1k     0  4.1k   0% /sys/fs/cgroup
udev            259M  4.1k  259M   1% /dev
tmpfs            52M  279k   52M   1% /run
none            5.3M     0  5.3M   0% /run/lock
none            260M     0  260M   0% /run/shm
none            105M     0  105M   0% /run/user
/dev/mmcblk0p1   74M   21M   54M  28% /boot/uboot
root@arm:~#

 

이로써 eMMC에 ubuntu 13.04 설치를 완료하였다.

 

 

cf) 인터넷 브라우저를 눌러도 아무런 응답이 없던 BBB용 우분투 13.04

아래 명령 한줄로 해결되었다.

# apt-get install chromium-browser

Chromium-browser이 설치되어 있지 않은채로 이미지가 배포되었나 보다.

 

이제 BBB에서 우분투를 즐겨 보자... ^^;;

 


[출처] 비글본 블랙의 SD에 설치된 우분투를 eMMC에 설치하기 (오픈 H/W 마스보드&비글본블랙 사용자 Cafe) |작성자 수야
 

 

Beaglebone Black 안드로이드 설치

비글본 블랙 보드에서 사용할 수 있는 micro SD 메모리에 안드로이드를 설치해보았습니다.

 

내장된 플래시 메모리의 리눅스는 덮어쓰지 않으므로 듀얼 부팅이 가능합니다.

 

먼저 결론부터 얘기드린다면 화면 전환이 꽤 느려서 일반적인 용도로는 활용하기 어렵습니다.

또한 GPU가 느리므로 동영상 재생도 좋지 않습니다.

 

설치 방법은 TI_Android_JB_4.2.2_DevKit_4.1.1_beagleboneblack.tar.gz 파일의 압축을 해제한 후 beagleboneblack\START_HERE\Setup.htm 파일에 자세히 나와 있으므로 참고 하실 수 있습니다.

 

작업 환경

 1) 우분투 10.04 이상의 버전에서 작업해야 합니다.

 2) SD 메모리를 리눅스에 연결합니다.

 3) SD 메모리의 인식을 확인합니다. (아래 예제는 /dev/sdf 로 인식 된 상태에서 진행됩니다.)

     주의 : 정확히 알지 못하는 경우는 다른 하드 디스크 등을 삭제 할 수 있으므로 작업하지 않는 것이 좋습니다.

 

1. 리눅스에서 비글본 블랙용 안드로이드 파일 (TI_Android_JB_4.2.2_DevKit_4.1.1_beagleboneblack.tar.gz 등)을 다운 받습니다.

( http://downloads.ti.com/sitara_android/esd/TI_Android_DevKit/TI_Android_JB_4_2_2_DevKit_4_1_1/exports/TI_Android_JB_4.2.2_DevKit_4.1.1_beagleboneblack.tar.gz )

 

2. 압축을 해제 합니다.


 # tar xvfz TI_Android_JB_4.2.2_DevKit_4.1.1_beagleboneblack.tar.gz

 

3. 압축을 해제한 디렉토리로 들어 갑니다.


 # cd bealgeboneblack

 

4. SD 메모리에 안드로이드를 설치합니다.


# ./mkmmc-android.sh /dev/sdf
Assuming Default Locations for Prebuilt Images
All data on /dev/sdf now will be destroyed! Continue? [y/n]
y
[Unmounting all existing partitions on the device ]
umount: /dev/sdf: not mounted
umount: /dev/sdf1: not mounted
umount: /dev/sdf2: not mounted
umount: /dev/sdf3: not mounted
umount: /dev/sdf4: not mounted
[Partitioning /dev/sdf...]
Disk /dev/sdf doesn't contain a valid partition table
DISK SIZE - 3965190144 bytes
CYLINDERS - 482
[Making filesystems...]
[Copying files...]
[Copying START_HERE folder to boot partition]
[Copying all clips to data partition]
[Done]

 

5. 파티션 생성을 확인합니다. (필수 아님)

 

 # fdisk -l /dev/sdf

Disk /dev/sdf: 3965 MB, 3965190144 bytes
255 heads, 63 sectors/track, 482 cylinders, total 7744512 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdf1   *          63      144584       72261    c  W95 FAT32 (LBA)
/dev/sdf2          144585     2072384      963900   83  Linux
/dev/sdf3         2072385     4000184      963900   83  Linux
/dev/sdf4         4000185     7743329     1871572+   c  W95 FAT32 (LBA)


 

6. micro SD를 비글본 블랙에 삽입하고 S2 버튼(micro SD 슬롯 옆의 버튼)을 누른 상태로 전원을 연결하면

micro SD에 담겨 있는 안드로이드로 부팅 됩니다.

 

설치는 리눅스 환경만 갖추어져 있다면 간단한 편이나 서두에 적었다시피 설치 후 화면 전환 등이 느려서 실사용 하기 어렵고

또한 마켓이 설치되어 있지 않기 때문에 필요한 프로그램은 apk 파일 등을 옮겨서 설치해야 하는 등 실사용에는 적합하지 않습니다.

 

또한 GPU가 유사한 보드(라즈베리파이, 마스보드, 큐비보드)들에 비해 좋지 않기 때문에 동영상 재생에도 적합하지 않습니다.

 

비글본 블랙은 많은 I/O 와 내장 플래시 메모리, OS를 사용할 수 있는 장점이 있는 반면에 멀티미디어용으로는 적합하지 않습니다.

하지만 간단하게 안드로이드 환경을 구축할 수 있고 기존 환경과 듀얼 부팅이 가능하므로 (여러개의 micro SD를 사용한다면 더 많은 OS로 부팅 가능) 목적에 맞는 경우 유용하게 사용할 수 있을 것 같습니다.

 

저는 NAS와 멀티미디어 기기에 관심이 많으므로 다음번에는 우분투 리눅스와 토렌트, USB 외장 하드와 DLNA 로 활용해볼 예정입니다.

 

본 제품은 ICbanQ에서 후원하고 ICbanQ 무상 체험단 10기 활동의 일환으로 체험 제품을 제공 받아 작성되었습니다.

[출처] Beaglebone Black 안드로이드 설치 (오픈 H/W 마스보드&비글본블랙 사용자 Cafe) |작성자 새벽늑대

 

비글본블랙(BeagleBone Black)으로 움직여보는 스텝모터

필자는 소형  CNC 조각기 한대를 직접 제작하여 사용하고 있습니다. 현재는 컴퓨터를 제어기로 사용하기 때문에 제어전용 컴퓨터를 놓고 사용하고 있습니다. 얼마전 ICbanQ에서 저가형 소형 ARM 보드인 비글본블랙(Beaglebone Black) 체험단 모집을 했었습니다. 소형 ARM 보드를 활용하여 현재사용하고 있는 제어전용 컴퓨터를 대체해볼 생각으로  응모하여 선정 되었습니다. 이 내용을 주제로 체험단 활동기간인 한달동안 아래 4회차의 연재로 구성하여 진행해 보도록 하겠습니다.

 


 
•1회. 비글본블랙(BeagleBone Black)과의 첫만남. - 상품수령 개봉기 [발행일 : 2013.10.16]
•2회. 비글본블랙(BeagleBone Black)으로 움직여보는 스텝모터. [발행일 : 2013.10.23]
•3회. 비글본블랙(BeagleBone Black)과 CNC 조각기로 제작해본 PCB 기판. [발행일 : 2013.10.30]
•4회. 제어 보드로 사용해본 비글본블랙(BeagleBone Black)  사용후기. [발행일 : 2013.11.06]


 


 

 

2회. 비글본블랙(BeagleBone Black)으로 움직여보는 스텝모터.

 

지난 1회. 비글본블랙(BeagleBone Black)과의 첫만남. - 상품수령 개봉기 에서 비글본블랙을 수령한후 부팅, usb연결및 모니터 연결등을 확인해 보았습니다. 필자가 비글본블랙을 가지고 하려하는 것은 DIY로 제작해서 사용하고 있는 CNC조각기의 제어기로 활용 해보는것 이었습니다. 제어기로 활용하기에 앞서 이번 2회에서는 비글본블랙에서 제어신호를 출력하여 스텝모터 구동 테스트를 수행해보도록 하겠습니다.

 


2-1. 준비사항


스텝모터를 구동하기 위해서는 스텝모터, 모터드라이버, 제어보드가 필요합니다. 스텝모터는 펄스제어 모터이므로 모터의 각상에 펄스를 인가하면 모터의스텝각 만큼 진행을 하며 연속적인 펄스를 인가해주면 회전을 하게 됩니다. 이미 제어 관련 서적및 인터넷 게시물등에 스텝모터 동작원리가 잘 설명 되어있는데다가 내용이 많은 관계로 여기에서는 스텝모터의 권선구조 및 자세한 동작 매커니즘에대한 설명은 생략하도록 하겠습니다.

 


필자가 테스트 용도로 사용하고 있는 스텝모터 입니다.

 

 

 

 

필자가 이전에 만들어 놓은 바이폴라 방식의 스텝모터 드라이버입니다.

*참고 : TB6560 스텝 모터 드라이버(바이폴라) 제작

 

제어보드로 사용할 비글본 블랙입니다.

 

 

 

모터구동의 경우 전압과 전류가 제어 보드에서 쓰이는것보다 높은것이 대부분일 것입니다. 그렇기 때문에 제어신호를 모터드라이버가 구동 전압및 전류로 변환해서 모터로 전달함으로서 구동을 하게됩니다. 우선 모터, 모터드라이버, 제어보드로 사용할 비글본블랙이 준비되었으므로 스텝모터를 구동해볼 준비가 되었습니다.

 

2-2. 모터 드라이버 회로와 비글본블랙을 연결 해보자!

 

준비물들이 갖춰졌으므로 각각의 준비물들을 연결하여 회로를 구성하여야 비로소 스텝모터가 동작을 할수 있을것 입니다. 스텝모터, 모터드라이버, 비글본 블랙및 보조 소자들을 더하여 스텝모터 구동 테스트회로를 구성하였습니다.

 

 

 

 

우선 출력포트로 사용할 핀을 확인하기위해 비글본블랙의 확장핀맵을 확인 하였습니다.

 

 

 

 

필자가 구성할 테스트 회로 입니다. 회로보호와 드라이버의 신호 레벨로 변환을 위해 포토커플러를 추가하였습니다.

(화면 좌측이 비글본 블랙, 우측이 스텝모터 드라이버입니다.)

 

 

 

 

 

실제로 구성한 회로의 사진입니다. 사진에는 아직 DIR 출력 라인의 연결을 해주지 않았네요.

 

비글본 블랙의 P8 확장핀중 13번핀은 PWM, 14번핀을 DIR의 출력핀으로 사용하였습니다. 그리고 회로 보호및 모터드라이버의 신호레벨로  변환해 주기위해 포토커플러를 추가하여 스텝모터 테스트 구동 회로를 구성하였습니다.

 

2-3. 비글본블랙으로 움직여보는 스텝모터.

 


회로 구성까지 완료 하였으니 이제 스텝모터를 구동해보는 일만 남았습니다. 비글본에서 제어신호를 출력해야 하므로 '비글본에서 간단하게 신호를 출력할수 있는 환경은 어떤것이 있을까?' 를 확인해보았습니다. 마침 1회. 비글본블랙(BeagleBone Black)과의 첫만남. 진행중에 비글본블랙의 USB 가상랜환경에서 사용해본 자체 웹페이지의 BoneScript 예제 실행 환경이 떠올랐습니다.

 

 

 

 

 

비글본 블랙의 USB 가상랜환경해서 접속한 BoneScript 예제 실행 페이지 모습니다.

 

이것을 이용해서 제어신호를 출력해 보기로 하고 간단한 스크립트 코드를 작성해서 입력후 실행해 보았습니다. 작성한 코드는 아래와 같습니다.

 

 

var b = require('bonescript');

var pwm = "P8_13";  // PWM 출력

var dir= "P8_14";  // 정/역방향(DIR) 출력

var state = 0;

 


b.pinMode(pwm, 'out');

b.pinMode(dir, 'out');

b.digitalWrite(dir, 0);

 


toggleSIG = function() {

    state = state ? 0 : 1;

    b.digitalWrite(pwm, state);

};

 


timer = setInterval(toggleSIG, 10);  //회전 속도

 


stopTimer = function() {

    clearInterval(timer);

};

 


setTimeout(stopTimer, 5000);  // 회전시간

 

 

 

코드 입력후 실행한 스텝모터 구동 영상입니다.

 

마치며...

 

비글본블랙이 출력해주는 신호를 가지고 스텝모터 구동을 수행해본 결과 모터가 동작하는 모습을 볼수 있었습니다. BoneScript라는 환경덕분에 테스트 수행이 훨씬 수훨했던것 같습니다. CNC조각기는 여러개의 모터를 제어해야 하기 때문에 다수의 출력핀이 요구됩니다. 또 센서를 연결하게되면 입력핀까지 필요하게 됩니다. 비글본블랙은 범용 입출력포트로 사용할수 있는 많은수의 확장핀을 제공하고 있습니다. 여기에 컨트롤러 소프트웨어를 설치하여 사용하게 된다면 조각기 제어에도 무리없이 사용될수 있을것으로 생각됩니다.

 


다음 3회에서는 실제로 필자가 사용하고 있는 CNC조각기를 비글본블랙으로 제어하여 간단한 PCB기판을 제작해보는것을 수행해보도록 하겠습니다.

 


많은 관심 부탁드리며 끝까지 읽어주셔서 감사합니다.

 

- 2013.10.23 물의날에 프미케 -

 

 

* 본 포스트는 필자가 운영중인 블로그(티스토리, 네이버) 에 전체 포스트를 동시게시합니다.

   - 티스토리 : 프미케의 낙서장(http://pmice.tistory.com)

   - 네이버블로그 : http://blog.naver.com/pmice

 


* 본 제품은 ICbanQ에서 후원하고 ICbanQ 무상 체험단 10기 활동의 일환으로 체험 제품을 제공받아 작성되었습니다.


[출처] 비글본블랙(BeagleBone Black)으로 움직여보는 스텝모터. (오픈 H/W 마스보드&비글본블랙 사용자 Cafe) |작성자 프미케

비글본 사용기:한개의 메모리카드를 각종의 개발보드에서 사용하기

한개의 메모리카드를 각종의 개발보드에서 사용하기
(마스보드에서 쓰던 t-flash를 비글본에서도 사용하기)

 

각각 SoC의 부팅특성을 이용해서 여러 보드에서 사용할 수 있는 범용 이미지를 만들 수 있습니다.

 


비글본 블랙에는 기본적으로 eMMC에 angstrom 이라는 리눅스가 세팅되어져 출하가 되고 있습니다.

 

그렇지만 간편한 설치및 패키지 인스톨이 지원되는 데비안 계열 리눅스를 한번 쓰면 그 편리성에 놀라게 됩니다.


(심지어는 안드로이드 핸드폰상에서도 데비안 패키지를 인스톨 할 수 있도록 해 주는 debian kit도 나와있습니다.)

 

그래서, 이전에 마스보드에서 쓰던 데비안 이미지를 담은 t-flash를 비글본 블랙에 바로 적용하는 방법을 알아보도록 하겠습니다.

pc의 부팅과 마찬가지로 임베디드 보드의 경우에도 부팅 과정이 필수적입니다

 

pc는 비교적 부팅 과정이 통일되어 있는데 반해서

 

SoC(system on chip: 칩하나에 주변기기의 기능을 내장한 cpu)의 경우에는

 

개발사들이 각각의 칩에 개발사만의 독특한 부트 프로세스를 구현하고 있기 때문에

 

한곳에서 이용한 이미지를 다른 곳에서는 이용할 수 없다는 단점이 있습니다.

 

그렇지만 각각의 보드의 특성을 이용해서 각 기기의 커널및 드라이버를 넣을 경우

 

각각의 보드에서 동시에 이용할 수 있는 이미지를 만들 수 있습니다.

 

 

 

다음에 설명드릴 내용은 각각의 보드에 리눅스 커널이 올라가기 직전까지의 프로세스를

 

간략히 설명하고, 이것을 실제로 한개의 메모리카드에 구현하는 방법이 되겠습니다.

 

예전의 개발보드에는 NOR 플래시라고 해서 어드레스버스와 연결된 메모리가 사용되었기 때문에

 

보드가 부팅되자마자 바로 플래시 메모리의 내용이 CPU에서 실행될 수 있었습니다.

 

그렇지만 NOR 플래시는 개발단가가 비싸서 고용량의 데이터를 저장할 수 없었고, 따라서

 

간단한 작업을 수행하는 임베디드 기기에서만 이용되었습니다.

 

이후에 NAND 플래시 기술의 발달로 PC에서는 하드디스크 대신 SSD가 OS저장용으로 사용되기에

 

이르렀는데, 드디어 임베디드 기기에도 하드디스크대신 대용량의 보조 기억장치가 탑재될 수 있는

 

계기가 마련되어, 반쪽짜리 운영체제가 아닌 PC의 그것과 동일한, 리눅스커널 자체가

 

바로 운영체제로 사용되기에 이르렀습니다.

 

(아이팟이 처음에는 하드디스크가 내장된 모델로 나오다가 나중에는 플래시 메모리를

 

쓴 아이팟 나노가 나왔죠. 이시기입니다)
 
즉 임베디드용으로 커스텀된 리눅스가 아닌 풀 빌드된 리눅스가 탑재될 수 있는 계기가

 

마련된 셈입니다.

 

그런데 NAND 플래시의 문제점은 어드레스버스로 제어가되지 않고

 

(즉 메모리처럼 사용되는 것이 아니고) 하드디스크처럼 이용할 수 밖에 없다는 것입니다.

 

그래서 부팅을 위한 특수한 작업이 필요하게 됩니다.

 

일반적으로 리눅스가 메모리에서 동작하기 위해서는 대개 세단계의 과정을 거칩니다.

 

(이후에 사용되는 SoC, CPU 는 비글보드등에 사용된 메인칩을 가리키는 용어입니다.)

 

 

<첫번째>

 

SoC 칩 자체에 내장된 롬의 프로그램이 sd-card 등 주변장치에서 1번째 부트로더를 실행합니다.

 

NAND메모리 자체가 어드레스 버스와 연결되어있지 않으므로 각 CPU칩에는 NAND 플래시를

 

읽기위해서 (메모리상의 주소에 매핑된) 특수한 i/o영역이 있고, 이 영역을 조작해서

 

NAND 플래시의 특정영역에서 1번째 부트로더를 가져와서 이것을 실행하게 됩니다.

 

아직 외부 d-ram이 초기화 되어있지 않기 때문에 1번째 부트로더는 대개 SoC에 내장된 s-ram 에서

 

실행됩니다. (이후에 이 s-ram은 I-cache나 D-cache로 이용됩니다)

 

<두번째>

 

1번째 부트로더는 s-ram에서 실행되기 때문에 그 크기에는 한계가 있습니다. (대개 64kb 이하입니다)

 

따라서 1번째 부트로더는 CPU 외부의 d-ram만(!)을 활성화 시키고 이 활성화 시킨 d-ram에

 

두번째 부트로더를 로딩한후 두번째 부트로더가 실행됩니다.

 

 

<세번째>

 

2번째 부트로더는 d-ram에서 실행되기 때문에 그 크기가 상당히 크며 하는 일도 꽤 많습니다.

 

이 두번째 부트로더중 가장 많이 쓰이는 것이 u-boot 입니다.

 

두번째 부트로더는 내장 LAN활성화, d-ram(재)활성화, UART 활성화 등을 하고,

 

이제 nand 상에 존재하는 리눅스 파티션을 인식하게 됩니다.

 

그리고, 드디어 리눅스 커널을 로드해서 실행하게 됩니다.

 

(사실은 첫번째 부트로더도 u-boot가 생성해 주기 때문에 리눅스 부팅전의 부트로더는 전부

 

u-boot 라고 보시면 되겠습니다)

 

 

 

그럼 각각 칩들은 어떻게 위의 로더를 구현하는지 알아 보겠습니다

 

먼저 비글 보드입니다.

 

첫번째 부트로더: 비글보드는 첫번쩨 FAT 파티션에서 MLO라고 이름붙여진 파일을 읽고 실행합니다.

 

두번째 부트로더: MLO는 같은 위치에서 u-boot.img 를 읽어 실행합니다.

 

 

다음은 마스보드, 큐비보드 입니다.

 

첫번째 부트로더 : micro SD 의 16번 섹터에서 32kb를 읽어서 실행합니다.

 

  그래서 (dd if=spl/sunxi-spl.bin of=/dev/sdX bs=1024 seek=8) 등의 섹터 조작 명령이

 

필요했었습니다.

 

두번째 부트로더 : micro SD 의 80번 섹터에서 200-300kb정도를 읽어서 실행합니다.

 

  u-boot.img 를 섹터에 직접 기록하기위해

 

  (dd if=u-boot.img of=/dev/sdX bs=1024 seek=40) 등의 섹터 쓰기 명령이 필요했습니다.

 

 

다음은 odroid 입니다.

 

첫번째 부트로더 : micro SD 의  31번 섹터에서 16kb를 읽어서 실행합니다.

 

두번째 부트로더 : micro SD 의  63번 섹터에서 200-300kb정도를 읽어서 실행합니다.

 

 

 

마지막으로 라즈베리파이 입니다.

 

첫번째 부트로더: 라즈베리파이는 첫번쩨 FAT 파티션에서 bootcode.bin라고

 

이름붙여진 파일을 읽고 실행합니다.

 

두번째 부트로더: bootcode.bin은 같은 위치에서 start.elf를 읽어 실행합니다.

 


일단 라즈베리파이는 하위 아키텍쳐이기때문에 다른보드들이 라즈베리파이용으로 빌드된

 

파일을 실행시킬 수는 있으나 다른보드에서 빌드된 프로그램을

 

라즈베리파이에서 실행시킬 수는 없습니다.

 

(그렇지만, 특정옵션을 사용하면 라즈베리에서도 사용가능한 실행파일을 만들 수 있습니다.

 

글의 말미에 라즈베리파이서도 구동되는 파일을 만드는 방법을 알아보겠습니다.)

 

 

자 그럼 종합하여 보겠습니다.

 

보시면 알겠지만, 섹터에서 부트로더를 읽는 cpu도 있고, 파일에서 부트로더를 읽는 cpu도 있습니다.

 

이러한 특성을 이용하면 1개의 micro SD 내에 부트로더와 커널을 두개이상을 넣을 수 있습니다.

 

(odroid와 마스보드는 프로그램이 위치한 섹터가 겹치므로 같이 놓을수 없습니다.

 

그렇지만 다른 것들은 함께 넣을수 있습니다.)

 

그렇게 1개의 micro SD 에 첫번째 부트로더, 두번째 부트로더, 커널, 커널 드라이버까지 놓으면

 

일반 어플리케이션은 두곳에서 동일하게 실행시킬 수 있습니다.

 

커널 드라이버는 lib/modules/ 폴더내에 커널버전과 함께 놓으면 됩니다.

 

사진상의 파일 목록을 살펴보시면 두 종류의 부트로더가 있음을 알 수 있습니다.

 

비글보드:MLO, u-boot.img

마스보드:script.bin, uImage, uEnv.txt

 

 

<사진 1> FAT 파티션내에 존재하는 두종류의 부트로더들

 

 

 


커널 드라이버도 두 종류가 있음을 알수 있습니다.

 

비글보드: 3.8.13-bone20

마스보드: 3.4.43-sun7i+

 

<사진 2> /lib/modules 내의 커널이 두개이상 위치한 화면

 

 

 

그리고 마지막으로 해야할 작업들이 있습니다.

 

비글보드에서는 문자입력을 위한 입력장치의 이름이 바뀌었습니다.

 

대개 문자입력장치는  tty 로 시작되는 디바이스 파일인데

 

마스, 큐비보드, 라즈베리등은 이것을 ttyS + 숫자 이렇게 사용하는데

 

비글보드는 ttyO + 숫자 이렇게 이름붙여서 사용합니다.

 

그래서 /etc/inittab 파일내에서 콘솔 이름을 ttyS0 으로 시작되는 부분을 ttyO0 으로

 

바꾸어 주어야 합니다.

 

이렇게 해서, 한쪽에서 하던 작업들을 다른쪽에서 바로 실행시킬수 있는 상태가 되었습니다.

 

심지어는 x-window도 돌릴수 있습니다.

 

 

<그림3> 비글보드에서 실행한 큐비보드 데비안 이미지 입니다.

 

 

 

<그림4>옆에서 비글보드도 같이 출연했습니다..

 

 

 

<마스보드와 큐비보드의 차이점>

 

큐비보드는 마스보드에 없는 전원관리칩이 내장되어 있습니다.

 

이 전원관리칩 때문에 큐비보드는 전원종료명령시에 자동으로 전원이 차단되는데

 

마스보드는 그렇지 않습니다.

 

그렇지만 마스보드에도 장점이 있는데 -전원관리 칩이 없기때문에-

 

바로 랩독의 usb포트를 마스보드의 USB에 연결해서

 

전원공급과 USB장치 연결을 동시에 할 수 있습니다.

 

(큐비보드는 전원을 따로 빼 내어 연결을 해줘야 합니다.

 

라즈베리파이도 전원관리 칩이 없어서 전원공급과 USB장치 연결을 동시에 할 수 있습니다.)


 

또한 사용되는 램 종류도 다르기 때문에 1차 부트로더와 2차 부트로더를 각각

 

하드웨어 사양에 맞는 부트로더를 사용하여야 제대로 부팅이 가능합니다.

 

가끔 큐비보드용 부트로더가 마스보드에서 동작하는 경우가 있는데

 

이 경우는 마스보드의 램이 오버클럭되어 동작하는 것입니다.

 

(즉, 오버 클럭이 잘 되는 램이 내장된 것입니다. 따라서 부팅이 되지 않는 마스보드가

 

불량이 아니라 부팅이 되는 마스보드가 운이 좋게도(!) 오버클럭이 잘 되는

 

램을 가지고 있는 것입니다.)

 

 

<라즈베리파이에서도 실행되는 파일만들기>

 

라즈베리파이는 다른 개발보드에서 만들어진 실행파일을 그대로 실행시킬 수는 없습니다.

 

라즈베리파이의 아키텍쳐는 armv6, 기타 다른 개발보드의 아키텍쳐는 armv7 이기 때문입니다.

 

이 두 아키텍쳐의 차이는 armv6은 fpu가 vfpv2, 다른 개발보드(cortex-a8)의 fpu는 vfpv3 지원입니다.

 

vfpv2는 부동소수점 연산 레지스터가 32개, vfpv3은 부동소수점 연산 레지스터가 16개 이지만

 

thumb 모드에서도 실행가능합니다.

 

그리고, armv6 은 thumb2 를 지원하지 않고, cortex-a8 은 thumb2 를 지원합니다.

 

그래서, 각각 gcc에서 실행된 파일을 분석해 보니 thumb 코드는 사용하지 않고 빌드를 한경우

 

양쪽에서 실행가능한 파일이 생성되었습니다.

 

-march=armv6 옵션을 주거나 아니면 -marm으로 arm 전용의 코드를 생성하면

 

라즈베리파이에서도 실행되는 실행파일을 만들 수 있습니다.


<참고자료>

 

비글보드용 데비안 이미지

 

http://circuitco.com/support/index.php?title=Debian_On_BeagleBone_Black

 

큐비보드용 데비안 이미지

 

http://www.cubieforums.com/index.php?topic=442.0

[출처] 비글본 사용기:한개의 메모리카드를 각종의 개발보드에서 사용하기 (오픈 H/W 마스보드&비글본블랙 사용자 Cafe) |작성자 고명호

 

 

[BBB] 비글본 블랙 HDMI 연결 및 터미널 상에서 이더넷 설정(Angstrom Linux)

그 동안 micro HDMI 케이블이 없어 HDMI 출력을 해 보지 못했었다.

급한 마음에 아래와 같은 젠더를 구매하여 기존 HDMI 케이블로 연결해봤다.

 

 

 

 

Micro HDMI와 Mini HDMI 둘 다 일반 HDMI로 변환할 수 있는 어댑터이다.

Mini HDMI는 지금 당장은 쓸 일이 없지만 차후에 Mini HDMI단자가 필요해지면 사용해볼 수 있을 듯 하여

2 in 1 제품을 선택했다.

 

단자가 2개로 나뉘어져 있어 신호감쇄가 있지 않을까 걱정했지만 다행이 깨끗한 화면을 보여주었다.

 

 

 

 

실제 제품은 이런 형태이다.

 

 

 

 

 

비글본에 기본 내장된 Angstrom Linux의 화면이다.

인터넷을 해보려고 IP설정을 하려했으나, USB포트가 하나뿐인 관계로 마우스만 꽂았더니 하기 힘들었다.

그래서 콘솔로 접속해서 IP설정을 했다.

콘솔에서 IP 설정하는 방법은 아래 URL을 참조했다.

 

http://www.gigamegablog.com/2012/02/06/beaglebone-linux-101-assigning-a-static-ip-address-with-connman/

 

요약.

1. 패키지 인스톨

    # opkg install connman-tests

 

2. 현재 설정 확인

    # cd /usr/lib/connman/test/
    # ./get-services

 

3. 이더넷 장치 ID

   위 명렁어를 입력하면 아래와 같은 정보가 출력된다.

    제일 윗 줄에 service/ 다음에 이어지는 스트링이 장치명이다. 요걸 카피.

 

    [ /net/connman/service/ethernet_405fc276b749_cable ]
    IPv6.Configuration = { Method=auto Privacy=disabled }
    AutoConnect = true
    Proxy.Configuration = { }
    Name = Wired
    Nameservers = [ 206.47.244.104 206.47.199.155 ]
     이하 생략....

 

4. IPv4 아이피 세팅


    # ./set-ipv4-method <service> [off|dhcp|manual <address> [netmask] [gateway]]

  ex) ./set-ipv4-method ethernet_405fc276b749_cable manual 192.168.1.2 255.255.255.0 192.168.1.1

 

5. DNS 세팅

    # ./set-nameservers <service> [nameserver*]

  ex) ./set-nameservers ethernet_405fc276b749_cable 168.126.63.1 168.126.63.2

 

6. 리부팅

 

이걸 따라 해 보면서 Angstrom Linux의 패키지 관리 명령어가 opkg라는 것을 알았다.

대충 살펴 본 바로는 Apache, Mysql등 서버 관련 패키지가 설치되어있지 않은 것 같았는데 이 명령어로 설치하면 되는가보다. 나중에 웹서버 세팅할 때 참고해야겠다.

 

웹브라우져는 파이어폭스와 크로니움이 기본 설치되어 있었는데, 속도는 큐비보드의 우분투 환경에서보다 더 빠른 것 같았다.

그러나 역시 한글 폰트 설정이 되어 있지 않아 한글은 다 깨지고...

이거 손보려면 또 하글폰트 설치해야하고 번거로워 일단 그냥 두었다.

GUI 환경에서 사용할 일은 극히 드물 것 같아서....

 

본 제품은 ICbanQ에서 후원하고 ICbanQ 무상 체험단 10기 활동의 일환으로 체험 제품을 제공 받아 작성되었습니다.

[출처] [BBB] 비글본 블랙 HDMI 연결 및 터미널 상에서 이더넷 설정(Angstrom Linux) (오픈 H/W 마스보드&비글본블랙 사용자 Cafe) |작성자 케이

 

비글본 블랙에 MicroSD부팅용 ubuntu를 설치하자


※ 본게시글은 개인 블로그 (http://lifeseed.tistory.com) 에서 작성되었으며,테스트를 위한 보드는 ICBanQ에서 제공되었으며, 체험단활동의 일환으로 본 게시물이 작성되었음을 알립니다

 

0. 들어가기 전에

비글본블랙 보드에 우분투 이미지를 설치해봤습니다.

BeagleBoard.org의 Beagleboneblack 에 링크된 우분투 위키를 참조하였습니다.

참조페이지 : http://elinux.org/BeagleBoardUbuntu#eMMC:_BeagleBone_Black

설치 버전은 Raring 13.04 armhf 입니다. ( 4.1.1 Raring 13.04 armhf )

 

우선 인증 샷 부터...

 

 

 

 

 

 

잠깐 서본 소감은...

1. 어플을 실행하기 전까지 마우스 아이콘이 보이지 않습니다. ㅡ,.ㅡ

드래그를 이용하여 위치를 대충 파악하여 아래 메뉴에서 어플을 실행하니 그 때부터 나타 나더군요.

2. WebBrowser가 실행되지 않습니다. ㅡ,.ㅡ ;;;

이건 말할것도 없네요.

12.10 버전이 있긴한데.. 우선 끝까지 달려 봤습니다.

 

작업 설명이 리눅스 기준이더군요. 그래서 리눅스 머신에서 진행하였습니다.

 

Default User ID 및 Password는 ubuntu / temppwd 입니다.

이제부터 설치기 들어갑니다.

 

1. Get prebuild Image

0) 최소 2G의 microSD카드를 준비한다.

1) 아래 명령을 이용하여 이미지를 다운 받는다.

 

$ wget https://rcn-ee.net/deb/rootfs/raring/ubuntu-13.04-console-armhf-2013-09-26.tar.xz
mirrors (will take some time to update):
$ wget http://ynezz.ibawizard.net/beagleboard/raring/ubuntu-13.04-console-armhf-2013-09-26.tar.xz

 

cf) md5sum 명령을 이용해서 다운 받은 이미지가 제대로 다운되었는지 확인 가능하다.

 

$ md5sum ubuntu-13.04-console-armhf-2013-09-26.tar.xz  (엔터)

(결과값)

b99907a57109fcf1328c0dbb5a0cd9de  ubuntu-13.04-console-armhf-2013-09-26.tar.xz


2) Unpack image

tar 명령을 이용하여 이미지의 압축을 풀면 폴더가 하나 생성된다.

 

$ tar xJf ubuntu-13.04-console-armhf-2013-09-26.tar.xz
$ cd ubuntu-13.04-console-armhf-2013-09-26

 


2. Install using Setup Script

압축을 푼 폴더에 들어가면 설치 스크립트가 존재 한다.

이때 리눅스 머신에 삽입된 SD카드의 device name을 알아야 함. (본인의 경우엔 /dev/sdc 임)

 

$ sudo ./setup_sdcard.sh --mmc /dev/sdc --uboot bone

 

cf) Beaglebone 및 BeagleboneBlack이 아닌 경우 --uboot 뒤에 파라미터가 달라지니 위 참조 위키페이지를 확인할 것.

 

이렇게 하면 SD카드에 ubuntu이미지가 설치가된다.

SD카드를 보드에 삽입하고 부팅을 하자.

 

3. Xwindow 설치

기본적인 이미지는 콘솔로 부팅되는 서버 이미지다.

본인의 경우엔 eMMC에 default로 들어 있는 이미지 처럼 Virtual Com Port가 인식이 되긴하였으나, Terminal에서 로그등을 확인할 수 없었다.

 

1) Console 연결

UART를 연결하거나 공유기 정보등을 이용하여 SSH로 접속하자.

다시 한번 언급하면, Default User 정보는 ubuntu /temppwd 이다.

 

2) Root Password 생성

아래의 명령으로 루트권한의 Password를 생성하자.

 

$ sudo passwd

 

이후 root로 user를 변경하거나 sudo 명령을 이용하여 root 권한을 얻어올 수 있다.

(cf. sudo를 이용할 경우 ubuntu의 password를 입력해야한다.)

 

3) X-window 설치

설치된 이미지의 /boot 폴더에 X-window 설치가 가능한 Script가 있다.

해당 script를 실행하자.

 

$ sudo /bin/sh /boot/uboot/tools/ubuntu/small-lxde-desktop.sh

 

대략 2시간 가량 걸렸던것 같다. 느긋하게 기다리자.

본인은 root 계정으로 변경후 명령을 시작하였다.

시작 및 종료시 로그를 첨부한다.

 

root@arm/home/ubuntu#/bin/sh /boot/uboot/tools/ubuntu/small-lxde-desktop.sh
Hit http://ports.ubuntu.com raring Release.gpg
Hit http://ports.ubuntu.com raring-updates Release.gpg
Hit http://ports.ubuntu.com raring Release
Hit http://ports.ubuntu.com raring-updates Release
Hit http://ports.ubuntu.com raring/main Sources
Hit http://ports.ubuntu.com raring/universe Sources
Hit http://ports.ubuntu.com raring/multiverse Sources
Hit http://ports.ubuntu.com raring/main armhf Packages
Hit http://ports.ubuntu.com raring/universe armhf Packages
Hit http://ports.ubuntu.com raring/multiverse armhf Packages
Get:1 http://ports.ubuntu.com raring/main Translation-en [832 kB]

...

...

...

 

Setting up xserver-xorg-video-modesetting (0.7.0-0ubuntu2) ...
Setting up xserver-xorg-input-evdev (1:2.7.3-0ubuntu2b2) ...
Setting up xserver-xorg-input-synaptics (1.6.2-1ubuntu6) ...
Setting up xserver-xorg-input-all (1:7.7+1ubuntu4) ...
Setting up xserver-xorg-input-wacom (1:0.19.0-0ubuntu1) ...
Setting up xserver-xorg (1:7.7+1ubuntu4) ...
Setting up xterm (278-1ubuntu2) ...
update-alternatives: using /usr/bin/xterm to provide /usr/bin/x-terminal-emulator (x-terminal-emulator) in auto mode
update-alternatives: using /usr/bin/uxterm to provide /usr/bin/x-terminal-emulator (x-terminal-emulator) in auto mode
update-alternatives: using /usr/bin/lxterm to provide /usr/bin/x-terminal-emulator (x-terminal-emulator) in auto mode
Setting up libxtst6:armhf (2:1.2.1-1ubuntu0.13.04.1) ...
Setting up at-spi2-core (2.8.0-1) ...
Setting up libgtk-3-0:armhf (3.6.4-0ubuntu8) ...
Setting up libgcr-3-1 (3.6.2-0ubuntu2) ...
Setting up gcr (3.6.2-0ubuntu2) ...
Setting up gnome-keyring (3.6.3-0ubuntu2) ...
Setting up x11-utils (7.7~1ubuntu1) ...
Setting up gvfs-daemons (1.16.1-0ubuntu1) ...
Setting up gvfs:armhf (1.16.1-0ubuntu1) ...
Setting up gvfs-backends (1.16.1-0ubuntu1) ...
Setting up gvfs-fuse (1.16.1-0ubuntu1) ...
Setting up libgtk-3-bin (3.6.4-0ubuntu8) ...
Setting up policykit-1-gnome (0.105-1ubuntu4) ...
Processing triggers for dictionaries-common ...
Setting up miscfiles (1.4.2.dfsg.1-9) ...
install-info: warning: maintainer scripts should not call install-info anymore,
install-info: warning: this is handled now by a dpkg trigger provided by the
install-info: warning: install-info package; package miscfiles should be updated.
install-info: warning: maintainer scripts should not call install-info anymore,
install-info: warning: this is handled now by a dpkg trigger provided by the
install-info: warning: install-info package; package miscfiles should be updated.
Processing triggers for dictionaries-common ...
Setting up gconf-service (3.2.6-0ubuntu1) ...
Setting up gconf-service-backend (3.2.6-0ubuntu1) ...
Setting up gconf2 (3.2.6-0ubuntu1) ...
update-alternatives: using /usr/bin/gconftool-2 to provide /usr/bin/gconftool (gconftool) in auto mode

(gconftool-2:11526): GConf-WARNING **: Client failed to connect to the D-BUS daemon:
Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
Setting up libgksu2-0 (2.0.13~pre1-6ubuntu2.1) ...
update-alternatives: using /usr/share/libgksu/debian/gconf-defaults.libgksu-sudo to provide /usr/share/gconf/defaults/10_libgksu (libgksu-gconf-defaults) in auto mode
Processing triggers for gconf2 ...
Setting up gksu (2.0.2-6ubuntu2) ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place
Processing triggers for initramfs-tools ...
update-initramfs: Generating /boot/initrd.img-3.11.1-armv7-x14
grep: /boot/config-3.11.1-armv7-x14: No such file or directory
Processing triggers for sgml-base ...
Processing triggers for ureadahead ...
--------------------
/tmp/xorg.conf -> /etc/X11/xorg.conf
Please Reboot
root@arm:/home/ubuntu#

 

이로써.. X-Window가 탑재된 우분투 13.04의 설치를 마친다.

 

CF) 관심있는 분들은 Wikipage에 소개된 Image 빌드 관련 정보를 참조하여 직접 이미지 빌드가 가능할듯...

 

Advanced: Build Image:
Built with a fork of project-rootstock (ARM native mode, run directly on BeagleBoard), using a script from omap-image-builder:
git clone git://github.com/RobertCNelson/omap-image-builder.gitcd omap-image-buildergit checkout v2013.09 -b v2013.09touch [출처] 비글본 블랙에 MicroSD부팅용 ubuntu를 설치하자  (오픈 H/W 마스보드&비글본블랙 사용자 Cafe) |작성자 수야

 

 

우와~ 비글이는 usb연결로 시리얼 통신과 ssh 접속이 가능하네요

 

 

 

 

비글본블랙을 컴터usb 포트에 연결해보았습니다. 가상 시리얼포트와 usb 가상이더넷이 지원되는군요 pc 쪽에 드라이버만 설치하면 usb로 리눅스접속이 가능하네요


[출처] 우와~ 비글이는 usb연결로 시리얼 통신과 ssh 접속이 가능하네요 (오픈 H/W 마스보드&비글본블랙 사용자 Cafe) |작성자 프미케

Serial로 BBB에 접속하기...


USB ssh로 연결하니 넘 느려서 serial로 접속해 본다.

USB2TTL을 BeagleBone Black board J1에 아래와 같이 결선하고

Vcc <-> Nc

GND <-> Pin 1

TxD <-> Pin 4

RxD <-> Pin 5

 

 

 

 

TeraTerm 터미널도 아래 그림과 같이 설정을 한다.

 

 

 

 

 

 

조금 기다리면 아래 처럼 메시지가 계속해서 나오는데

Angstrom 로고 나오고,

beaglebone login: 이 나올때까지 기다리면 된다.

 

 

 

 

 

이제 login: root 엔터

password없이 바로 login이 된다.

뭐가 있는 지 ls -al로 한번 보니 list가 쭉 나오네요.

 

 

 

 


그나마 USB ssh로 보는 것 보단 원할하게 연결되고 속도 때문에 답답하지는 않네요.

모니터가 있으면 이런 건 필요 없게지요.

 

 

[출처] Serial로 BBB에 접속하기... (오픈 H/W 마스보드&비글본블랙 사용자 Cafe) |작성자 동네얼신
 

 

[체험기] 비글본 블랙 개봉기


제주도 여행 후 받아본 비글본 블랙 ^^..(회사 출근 후 급 기분이 좋아졌다.)

 

비글본 블랙이란 녀석을 구매해 보려고 알아보던 중 ICbanQ에서 체험단 모집을 한다는 공고를 보고 앞뒤보지않고 바로 신청했다. 그리고 담담히 기다리던 중 기분좋은 체험단 당첨소식 ㅎㅎ..아니였음 바로 구매했을 것이다.

 

구매를 해보려한 의도는 서버로서의 가능성과 미디어 플레이어로서의 가능서을 확인해보고자 했었다. (한마디로 개인적 취미로 인한 장난감 구매다..ㅎ)

 

아래 그림은 보내주신 비글본 블랙을 펼쳐본 이미지이다. 첫 개봉의 느낌은 아주 심플한 것 같다는 느낌이다. 보드 크기도 명함크기로 작고 깔끔하다. 한마디로 이쁘고 고급스럽다. (포장은 조금 약하고 싼티가 좀 난다.)

 

 

 

 

 

 

 


받아본 후 바로 케이블을 PC와 연결해 본다. 아래 이미지같이 "BeagleBone Getting Started" 드라이버가 잡힌다. (강아지 아이콘이 맘에 든다. 귀엽네~ 고녀석)

 

 

 

 

START.htm을 실행해 본다. (공식처럼 자연스럽게 누가 가르쳐주지 않아도 늘 그런 방식으로~)

 

 

 

 

그렇지.. PC와 연동을 위한 드라이버 설치가 있었다.

나한테 맞는 드라이버를 설치한다.

설치 마법사 실행한 후 진행하면 중간에 게시자 확인 불가 메시지가 뜬다. (인증을 받기 위해서는 돈이 들기 때문에 별도로 신청하지 않은 것 같다. 그래야 단가도 싸지겠지.)

그냥 무시하고 확인하고 설치를 완료한다.

 

 

 

 

 

 

 

설치가 완료되면 아래와 같이 정상적으로 연결되었다는 메시지를 확인할 수 있다. (참 간단하게 연결되니 좋네. 역시 깔끔해~)

 

 

 

 

연결된 상태에서 아래와 같은 스크립트 실행으로 보드를 제어해 볼 수 있다. 샘플은 2초동안 LED가 켜졌다가 꺼진다. (BoneScript라는 스크립트를 제공한다.)

처음 접하는 스크립트다. 보드를 제어하는데 제공되는 스크립트로 한번 익혀봄직하다. 다음에는 스크립스 사용법 올려봐야겠다.

 

 

 

 

아래 그림은 Cloud9 IDE라는 통합 제공툴이다. 클라우드로 서비스되는 형태다. 다양한 형태로 사용가능함을 확인할 수 있다. (점점 더 매력있네.ㅎ)

 

 

 

 

아래 이미지는 putty를 이용하여 ssh로 접속한 모습이다.

 

 

 


처음 이미지는 깔끔하고 소박한 느낌이었으나, 개봉 후 약간의 조작을 통해 살펴봤을 때 상당히 무게감이 느껴졌다. 처음 의도했던 작업들이 생각보다 수월하게 진행될 것 같은 느낌이다.

잘 선택한 것 같다. 당분간은 비글본 블랙의 마법에 푹 빠져 지날 것 같다. (좋으다~)

 

이로써 오늘의 개봉기를 마친다.

 

본 제품은 ICbanQ에서 후원하고 ICbanQ 무상 체험단 10기 활동의 일환으로 체험 제품을 제공받아 작성되었습니다.

 

[출처] [체험기] 비글본 블랙 개봉기 (오픈 H/W 마스보드&비글본블랙 사용자 Cafe) |작성자 아랏차차버럭