2014년 9월 11일 목요일

IOTG100 Build & Working Guide_130801


  1. 툴체인(Cross-Compiler) 설치


    1. arm-2010q1-202 다운로드


      1. CRZ FTP Server 이용


위 링크에서 다운로드 받습니다. 사용하는 툴체인은 GCC 4.4.1 입니다.


arm-2010q1-202-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 선택해서 다운로드 받습니다.

      1. Mentor Graphics Sourcery 이용



Download Lite Edition을 선택합니다.


우리가 사용하는 것은 ARM CPU를 기반으로 한 것이기 때문에 ARM processors 부분에서 Download the GNU/Linux Release를 선택합니다.


각종 정보들을 입력한 후에 Get Lite를 클릭합니다. Get Lite를 클릭한 후에 잠시 기다리면 자동으로 발송된 이메일을 받을 수 있습니다.


받은 이메일에 다운로드 할 수 있는 링크가 존재합니다. 위 이메일 내용 중에서 http://go.mentor.com/2f7e9 부분입니다.


현재까지 릴리즈된 버전들의 수는 무척 많습니다. 이 중에서 우리가 사용할 버전은 Sourcery G++ Lite 2010q1-202입니다. 최신 버전을 사용하는 것도 가능하겠지만 검증된 컴파일러를 사용하는 것이 좋습니다.


IA32 GNU/Linux TAR 부분을 선택해서 다운로드 받습니다. 다운로드 받은 파일은 CRZ FTP Server에 존재하는 것과 완전히 동일한 것입니다.

    1. 툴체인 설치


설치 작업은 특별한 인스톨 과정을 거치는 것은 아니고 다운로드 받은 파일을 단순히 압축을 풀어놓는 과정입니다.

yhoh@ubuntu:~$ sudo cp arm-2010q1-202-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 /opt/
yhoh@ubuntu:~$ cd /opt
yhoh@ubuntu:/opt$ sudo tar xvf arm-2010q1-202-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

다운로드 받은 파일을 /opt 폴더에 복사한 후에 /opt 폴더로 이동을 해서 위와 같이 압축을 풀었습니다. /opt 부분은 루트 권한으로 접근 가능한 곳이기 때문에 sudo로 작업하셔야 합니다. 압축을 풀면 arm-2010q1 디렉토리가 생성되면서 압축이 풀려있는 것을 볼 수 있습니다.


arm-2010q1 폴더 안을 보면 여러 폴더가 생성되어 있습니다. 그 중에서 우리의 관심 부분은 bin 디렉토리에 존재하는 툴들입니다.

    1. 툴체인 환경 설정


환경 설정은 쉘 초기화 파일에 해당 설정 매크로를 적어 주는 것으로 전부입니다. bash 환경 설정 파일이 .bashrc 파일에 아래와 같은 내용을 추가해 줍니다.

export ARCH=arm
export CROSS_COMPILE=arm-none-linux-gnueabi-
export PATH=/opt/arm-2010q1/bin:$PATH

이와 같이 설정한 이후에 설정된 내용이 적용되는 것은 아래와 같이 source를 수행함으로써 적용됩니다. 물론 사용하는 터미널을 종료한 이후에 다시 수행시켜도 설정한 내용이 적용되게 됩니다.

yhoh@ubuntu:~$ source .bashrc

  1. 소스 코드 및 이미지 파일 준비


본 매뉴얼에서 작업할 파일은 아래와 같습니다. 각각에 대해서 간략히 설명드리도록 하겠습니다. 배포되는 소스 코드와 이미지의 날짜에 따라서 이름은 달라질 수 있습니다.

  • keti_asem_c210_linux_xxxxxx.tgz
  • keti_asem_c210_linux_xxxxxx_image.tgz

xxxxxx 부분은 실제 릴리즈 되는 날짜에 따라서 130603 등으로 년도와 날짜가 기술될 것입니다.

    1. keti_asem_c210_linux_xxxxxx_image.tgz


keti_asem_c210_linux_xxxxxx_image.tgz의 압축을 풀면 keti_asem_c210_linux_xxxxxx_image 폴더가 생성되고 아래의 파일들이 존재합니다.

$ tar xvf keti_asem_c210_linux_130603_image.tgz
$ cd keti_asem_c210_linux_130603_image
$ ls
AttachHeader.exe  c210_bl_kernel_writer  fastboot-script.bat            mkbl1_make  u-boot.bin
bl1_attach.bat    custom_rootfs.tar      fastboot_image_onlyKernel.bat  rootfs.tar  zImage
bl1aa             custom_rootfs_make.sh  mk_bl1.sh                      sdwriter
bl1ah             fastboot-linux.sh      mk_bl1.sh.bak                  split

    1. keti_asem_c210_linux_xxxxxx.tgz


$ tar xvf keti_asem_c210_linux_130603.tgz

keti_asem_c210_linux_xxxxxx.tgz의 압축을 풀면 아래의 폴더와 파일이 존재합니다.
  • buildroot-2012.08, kernel, uboot
  • mango_build_clean.sh: 모든 폴더에서 빌드된 것을 Clean하는 작업 수행
  • app: 어플리케이션 파일

  1. SD Card Fusing 작업 및 구동


T-Flash를 이용한 SD-MMC 부팅을 설명 합니다.

    1. 부팅 모드 설정


부트 스위치 1번은 Off, 2번은 On으로 설정해야 SD로 부팅을 할 수 있습니다.

    1. T-Flash SD 카드 준비


T-Flash SD 카드를 준비합니다.


아래에서 설명드리는 작업은 8 Gbytes T-Flash SD 카드를 사용하였습니다. 먼저 Windows에서 디스크 관리자를 열어서 모든 파티션을 삭제하고 하나의 파티션으로 만들었습니다.

      1. 리눅스 PC 장착 후 디바이스 이름 확인


df 명령을 통해서 현재 장착된 T-Flash 카드의 디바이스 이름을 확인해야 합니다. /dev/sdb가 디바이스 이름이 되겠습니다. 경우에 따라 이 이름은 sdc, sdd 등이 될 수 있습니다.


    1. SD Fusing 작업 1 - U-Boot, Kernel 기록


$ mount
... ... ... ... ... ... ...
/dev/sdb1 on /media/C4C0-882C type vfat (rw,nosuid,nodev,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,showexec,flush,uhelper=udisks)
$ df
Filesystem     1K-blocks      Used Available Use% Mounted on
... ... ... ... ... ... ...
/dev/sdb1        1840948         4   1840944   1% /media/C4C0-882C

mount나 df 명령으로 확인을 해볼 수 있습니다. /dev/sdb1인 것을 알수 있습니다. 사용자의 환경에 따라서 이것이 sdc일수도 있고 sdd일수도 있습니다. 꼭 확인이 필요합니다.

yhoh@ubuntu:~/sd_fusing_image/keti-c210$ sudo ./c210_bl_kernel_writer sdb c210
Write mango310  BL1 : 32+0 records in
32+0 records out
16384 bytes (16 kB) copied, 0.0201851 s, 812 kB/s
success
Write mango310  Uboot : 520+1 records in
520+1 records out
266612 bytes (267 kB) copied, 0.30907 s, 863 kB/s
success
Write gbox  kernel : 7668+1 records in
7668+1 records out
3926236 bytes (3.9 MB) copied, 55.7337 s, 70.4 kB/s
success

keti_asem_c210_linux_xxxxxx_image 폴더 내에 c210_bl_kernel_writer 파일이 존재 합니다. 이 파일을 사용합니다. Super User 권한으로 ./c210_bl_kernel_writer sdb c210를 수행합니다. 위와 같이 정상적으로 수행이 되어야 합니다. SD 카드를 꺼내서 망고 보드에 장착합니다.

SD 카드를 꺼내는 작업을 조심해서 수행해야 합니다. 반드시 시스템에서 완전히 제거하는 명령을 수행한 후에 커내야 합니다. 함부로 꺼내는 경우에는 U-Boot 부팅된 상태에서 아무런 명령어가 수행되지 않는 경우가 발생하기도 합니다. 만약 그런 상황이 발생하면 위 작업을 다시 수행해보시기 바랍니다.

    1. SD Fusing 작업 2 - 파티션 및 포맷


이제 제거한 SD 카드를 보드에 장착합니다.
보드의 전원을 인가하면 아래와 같이 출력되면서 부팅이 됩니다.

U-Boot 2010.03 ( 6ì›” 04 2013 - 11:53:14) for C210 Linux
CPU:    S5PC210 [Samsung ASIC on SMP Platform Base on ARM CortexA9]
       APLL = 1000MHz, MPLL = 800MHz
PMIC:   ARM 1.3V
... ... ... ... ... ... ...
board_late_init
Hit any key to stop autoboot:  0
C210 #

"Hit any key to stop autoboot" 부분에 표시되는 초가 지나기 전에 스페이스 키를 누르면 위와 같은 프롬프트 상태가 될 수 있습니다. 현재 커널까지는 기록이 되어 있기 때문에 부팅이 되지만 파일시스템이 기록되어 있지 않기 때문에 Kernel panic이 발생하게 됩니다. 반드시 부팅 후 스페이스 키를 눌러서 위와 같이 프롬프트 상태가 되도록 해야 합니다.

C210 # fdisk -c 0
fdisk is completed
partion #    size(MB)     block start #    block count    partition_Id
  1          1541         12326160         3157440          0x0C
  2          1000            30360         2049300          0x83
  3          4002          2079660         8197200          0x83
  4          1000         10276860         2049300          0x83

U-Boot 부팅 상태에서 위와 같이 fdisk를 수행해서 파티션을 나눕니다.

C210 # fdisk -c 0
Unknown command 'fdisk' - try 'help'

경우에 따라서 위와 같이 fdisk 명령이 정상적으로 인지되지 않는 경우가 있습니다. 이 경우에는 위에서 수행했던 "SD Fusing 작업 1 - U-Boot 기록" 부분을 다시 수행해서 시도해야 합니다.

이 상태에서 보드 전원을 끄고 SD Card를 제거해서 다시 리눅스 PC에 연결해서 인식시킵니다.

yhoh@ubuntu:~$ sudo fdisk -l
... ... ... ... ... ... ...
Disk /dev/sdb: 8010 MB, 8010072064 bytes
255 heads, 60 sectors/track, 1022 cylinders, total 15644672 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/sdb1        12326160    15483599     1578720    c  W95 FAT32 (LBA)
/dev/sdb2           30360     2079659     1024650   83  Linux
/dev/sdb3         2079660    10276859     4098600   83  Linux
/dev/sdb4        10276860    12326159     1024650   83  Linux
Partition table entries are not in disk order

우분투에서 fdisk로 검사를 해보면 위와 같이 변경된 것을 확인할 수 있습니다. 최초의 상황과 달리 4개의 파티션으로 나뉘어 있습니다.

yhoh@ubuntu:~$ sudo mkfs.vfat /dev/sdb1
yhoh@ubuntu:~$ sudo mkfs.ext4 -j /dev/sdb2
yhoh@ubuntu:~$ sudo mkfs.ext4 -j /dev/sdb3
yhoh@ubuntu:~$ sudo mkfs.ext4 -j /dev/sdb4

이제 차례로 위 명령을 수행합니다. sdb1은 fat으로 나머지는 ext4로 포맷을 하는 것입니다. 모든 작업을 마치면 4개의 파일시스템이 차례로 인식되게 됩니다.

    1. SD Fusing 작업 3 - 파일시스템 퓨징


SD 카드를 우분투에서 장치 제거를 했다가 다시 장치를 인식 시킵니다.

yhoh@ubuntu:~$ df
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda1      152754284 14126152 130868672  10% /
udev              757192        4    757188   1% /dev
tmpfs             306404     1320    305084   1% /run
none                5120        0      5120   0% /run/lock
none              766004      200    765804   1% /run/shm
/dev/sdb2         103699     5646     92698   6% /media/899c4ef5-1c5d-46d3-9639-843dd72bc62c
/dev/sdb3         303717    10254    277781   4% /media/2da6e853-fffb-40e3-a563-6f3e9399b61f
/dev/sdb4         103699     5646     92698   6% /media/a896d711-14a0-494e-897c-95a79f5a598a
/dev/sdb1        7245680        4   7245676   1% /media/8222-9340

현재의 파티션 내용으로 보면 /dev/sdb1으로 FAT 파일시스템이고, /dev/sdb2, /dev/sdb3, /dev/sdb4는 모두 ext4 파일시스템입니다. 이들 중에서 어떤 것을 사용해도 무방합니다. 보드에서 적절한 파일시스템 위치를 지정해 주기만 하면 됩니다. 가장 크기가 큰 /dev/sdb3를 사용하도록 합니다.

yhoh@ubuntu:~/sd_fusing_image/keti-c210$ ls -l custom_rootfs.tar
-rwx------ 1 yhoh yhoh 133662720 Jun  3 18:12 custom_rootfs.tar

~/sd_fusing_image/keti-c210 부분에 custom_rootfs.tar를 복사해 두었습니다.

$ cd /media/2da6e853-fffb-40e3-a563-6f3e9399b61f/
yhoh@ubuntu:/media/2da6e853-fffb-40e3-a563-6f3e9399b61f$ sudo tar xvf ~/sd_fusing_image/keti-c210/custom_rootfs.tar
yhoh@ubuntu:/media/2da6e853-fffb-40e3-a563-6f3e9399b61f$ sudo tar xvf ~/sd_fusing_image/keti-c210/rootfs.tar

파일시스템의 퓨징은 단순히 복사를 하는 것입니다. tar로 묶여있는 파일을 /dev/sdb3 부분에 압축을 풀어놓은 것입니다.

$ sync

모든 복사 작업이 끝난 후에는 반드시 sync를 수행해 주어야 합니다. sync를 수행하지 않으면 복사가 이루어진 것처럼 보이지만 복사가 되지 않는 경우가 발생할 수 있습니다.

이제 다음부터는 압축된 파일시스템 전체를 복사하는 것이 아니라 필요한 파일들만 골라서 원하는 위치에 복사해 주면 됩니다.

    1. 환경 변수 설정 및 리눅스 부팅


현재 상태에서 보드를 부팅하면 정상적으로 부팅이 이루어질 것입니다. 하지만 환경 변수가 적절히 설정되어 있지 않으면 부팅이 되지 않을 수 있습니다.

C210 # print
bootargs_base=noinitrd console=ttySAC1,115200 rw root=/dev/mmcblk0p3 rootfstype=ext4 rootwait
bootcmd=movi read kernel 40008000;bootm 40008000
bootdelay=3
baudrate=115200
ethaddr=00:40:5c:26:0a:5b
ipaddr=192.168.0.20
serverip=192.168.0.10
gatewayip=192.168.0.1
netmask=255.255.255.0
stdin=serial
stdout=serial
stderr=serial
bootargs=noinitrd console=ttySAC1,115200 rw root=/dev/mmcblk0p3 rootfstype=ext4 rootwait ethaddr=00:40:5c:26:0a:5b
Environment size: 439/16380 bytes

위 내용은 현 상태에서 U-Boot까지만 부팅해서 print로 살펴본 내용입니다. 위와 같이 환경 변수가 설정되어 있으면 문제없이 부팅이 될 것입니다.

중요한 부분은 bootargs_base, ethaddr, bootcmd와 bootargs 부분입니다. 아래의 명령을 통해서 설정할 수 있습니다.

# setenv bootcmd 'movi read kernel 0 40008000; bootm 40008000'
# setenv bootargs_base 'noinitrd console=ttySAC1,115200 rw root=/dev/mmcblk0p3 rootfstype=ext4 rootwait'
# setenv ethaddr 12:34:56:78:ab:cd
# save

/dev/sdb3를 사용하였기 때문에 root=/dev/mmcblk0p3로 설정한 것입니다. 만약 /dev/sdb2를 사용했다면 root=/dev/mmcblk0p2로 설정하면 됩니다.

bootargs는 따로 설정할 필요가 없습니다. 혹 다른 값으로 설정한다고 하더라도 그것은 적용이 되지 않습니다. bootargs는 bootargs_base와 ethaddr을 합쳐서 설정이 됩니다. U-Boot 코드 상에서 자동으로 이렇게 수행되도록 구현되어 있습니다.

ethaddr는 MAC address입니다. U-Boot에서 설정된 MAC 주소를 커널로 전달하기 위해서 bootargs 부분에 포함시켜준 것입니다. 변경하려는 MAC 주소를 설정하면 이것이 커널단의 MAC 주소까지 변경되게 됩니다.

[root@mangoC210 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:40:5C:26:0A:5B  
         inet addr:192.168.55.24  Bcast:192.168.55.255  Mask:255.255.255.0
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:5 errors:0 dropped:0 overruns:0 frame:0
         TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000
         RX bytes:1714 (1.6 KiB)  TX bytes:978 (978.0 B)
         Interrupt:86

커널 부팅까지 완료한 상태에서 ifconfig 수행후 eth0의 HWaddr 부분을 참조하면 됩니다.

    1. 커널 업데이트 - with fastboot


c210_bl_kernel_writer를 이용할 경우 U-Boot와 Kernel 모두를 퓨징하게 됩니다. 여기서 살펴볼 것은 커널만 따로 퓨징하는 방법입니다.

보드의 USBOTG 부분과 PC를 USB 케이블로 반드시 연결해 주어야 합니다.

      1. fastboot 배치 파일


image 폴더에 fastboot_image_onlyKernel.bat 배치 파일이 존재합니다. fastboot_image_onlyKernel.bat의 내용은 아래와 같습니다.

fastboot flash kernel zImage

fastboot_image_onlyKernel.bat는 Kernel을 업데이트 하는 용도로만 사용되는 것입니다.

      1. 커널 퓨징


C210 # fastboot
[Partition table on MoviNAND]
ptn 0 name='bootloader' start=0x0 len=N/A (use hard-coded info. (cmd: movi))
ptn 1 name='kernel' start=N/A len=N/A (use hard-coded info. (cmd: movi))
ptn 2 name='ramdisk' start=N/A len=0x300000(~3072KB) (use hard-coded info. (cmd: movi))
ptn 3 name='system' start=0xEF1000 len=0x6897000(~107100KB)
ptn 4 name='userdata' start=0x7788000 len=0x1324C800(~313650KB)
ptn 5 name='cache' start=0x1A9D4800 len=0x6897000(~107100KB)
ptn 6 name='fat' start=0x2126B800 len=0xBB1B2800(~3065546KB)

보드에서 fastboot를 수행합니다.

Fastboot disconnect detected
Insert a OTG cable into the connector!

USB 케이블이 정상적으로 장착되어 있지 않거나 드라이버의 문제가 있으면 위와 같이 표시됩니다.

Windows PC의 파일탐색기 상에서 image 폴더로 이동해서 fastboot_image_onlyKernel.bat를 수행합니다.

Received 17 bytes: download:003be8dc
Starting download of 3926236 bytes
...
downloading of 3926236 bytes finished
Received 12 bytes: flash:kernel
flashing 'kernel'
writing kernel.. 1089, 8192
MMC write: dev # 0, block # 1089, count 8192 ... .8192 blocks written: OK
completed
partition 'kernel' flashed

위와 같이 출력되면 커널 퓨징이 완료한 것입니다.

  1. 소스 코드 빌드 작업


소스 코드를 빌드하는 작업에 대해서 알아보도록 하겠습니다.

    1. image 폴더 생성


가장 먼저 해야하는 일은 image 폴더를 만드는 작업입니다. keti_asem_c210_linux_xxxxxx_image.tgz의 압축을 풀어서 생긴 폴더를 image로 이름을 변경해서 이동시켜 놓습니다.

    1. U-Boot 빌드


$ cd uboot/
/uboot$ ./build_uboot config
make -j9 smdkc210_android_config
/uboot$ ./build_uboot

uboot 폴더로 이동해서 build_uboot config를 수행한 후 build_uboot를 수행합니다. 환경에 따라 다르지만 수십 초 후에는 빌드가 완료됩니다.

/image$ ls -l u-boot.bin
-rwxrwxr-x 1 yhoh yhoh 266612  6월  4 11:53 u-boot.bin

image 폴더를 보면 빌드된 결과가 복사되어 있는 것을 알 수 있습니다.

/uboot$ build_uboot clean

빌드된 결과를 지우려면 uboot 폴더로 이동해서 build_uboot clean을 수행합니다. image 폴더에 복사된 이미지들은 지워지지 않습니다.

    1. Kernel 빌드


kernel 폴더로 이동해서 먼저 build_kernel 스크립트 파일을 열어서 내용을 살펴봅니다.

INSTALL_BINDIR=../image
INSTALL_BINDIR_2=/home/image/yhoh
KERNEL_IMAGE=zImage
# Default kernel configurations
KERNEL_CONFIG=keti_asem_c210_defconfig

내용 중에서 위 내용을 발견할 수 있습니다. INSTALL_BINDIR 부분은 빌드가 종료되었을 때 바이너리를 복사하는 폴더 이름을 지정한 것입니다.

make keti_asem_c210_defconfig 부분이 kernel config 부분입니다. config 파일을 불러와서 이를 이용해서 설정 작업이 수행됩니다. keti_asem_c210_defconfig 파일은 arch/arm/configs 폴더에 존재합니다.

/kernel$ ./build_kernel defconfig
/kernel$ ./build_kernel
... ... ... ... ... ... ...
 Kernel: arch/arm/boot/zImage is ready
Total compile time is 1 minutes 50 seconds
cp -a arch/arm/boot/zImage ../image/zImage

빌드가 종료되면 만들어진 zImage 파일은 image 폴더에 자동으로 복사가 됩니다.

/kernel$ ./build_kernel clean

build_kernel-clean을 수행하면 빌드되었던 모든 내용이 지워집니다.

    1. 리눅스 파일시스템 빌드


buildroot-2012.08 폴더로 이동해서 작업합니다.

      1. buildroot-2012.08_download 복사


buildroot-2012.08/dl 폴더에는 현재는 아무런 파일도 들어 있지 않습니다. buildroot 빌드 작업이 모두 완료되면 필요한 파일들을 이 폴더로 다운로드 받게 됩니다.

자동으로 인터넷을 통해서 다운로드 받기 때문에 상관없지만 다운로드 받는 시간을 절약하기 위해서 keti_asem_c210_buildroot-2012.08_download.tgz 파일의 압축을 풀어서 dl 폴더에 복사해 둡니다.

      1. build_rootFS 스크립트 이용 빌드


buildroot-2012.08 폴더로 이동해서 먼저 build_rootFS_FULL.sh 스크립트 파일을 열어서 내용을 살펴봅니다.

./build_rootFS_clean.sh
./build_rootFS.sh

단순히 build_rootFS_clean.sh을 수행하고 build_rootFS.sh를 수행하는 것입니다. build_rootFS_clean.sh의 수행은 모든 내용을 Clean하는 것입니다. 그러므로 완전히 지우고 다시 빌드를 하려면 build_rootFS_FULL.sh 스크립트를 수행하시고 그렇지 않으면 build_rootFS.sh를 수행하면 됩니다.

CONFIG_FILE=mangoC210.config
cp $CONFIG_FILE .config
make
cp -f ./output/images/rootfs.tar ../image/

build_rootFS.sh를 살펴보면 위와 같이 간략하게 나타낼 수 있습니다. mangoC210.config 파일을 .config로 복사하고 단순히 make를 수행하는 것입니다. 빌드가 끝나면 output/images 폴더에 rootfs.tar 파일이 생성되고 이것을 image 폴더로 복사하는 것입니다.

buildroot-2012.08$ ./build_rootFS.sh
... ... ... ... ... ... ...
Total compile time is 29 minutes 41 seconds

최초에는 빌드된 결과가 없기 때문에 위와 같이 build_rootFS.sh를 수행하면 됩니다. 시스템에 따라 다르지만 빌드되는 시간은 약 30분에서 한시간까지 걸립니다.

      1. arm-2010q1 사용시 buildroot 에러 (BTN_TRIGGER_HAPPY)


arm-2010q1을 사용해서 빌드할 경우 아래와 같이 에러가 나타납니다.

src/udev-builtin-input_id.c: In function 'test_key':
src/udev-builtin-input_id.c:165: error: 'BTN_TRIGGER_HAPPY' undeclared (first use in this function)
src/udev-builtin-input_id.c:165: error: (Each undeclared identifier is reported only once
src/udev-builtin-input_id.c:165: error: for each function it appears in.)
 CC     src/udevadm-udevadm.o
make[3]: *** [src/udevadm-udev-builtin-input_id.o] Error 1
make[3]: *** Waiting for unfinished jobs....
make[2]: *** [all-recursive] Error 1
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/yhoh/wk-keti-c210/keti_asem_c210_linux_130603_Pooh/buildroot-2012.08/output/build/udev-182'
make: *** [/home/yhoh/wk-keti-c210/keti_asem_c210_linux_130603_Pooh/buildroot-2012.08/output/build/udev-182/.stamp_built] Error 2

udev-builtin-input_id.c에서 'BTN_TRIGGER_HAPPY' undeclared 에러가 발생합니다.

./output/build/udev-182/src/udev-builtin-input_id.c
위 파일을 수정하면 됩니다.

#include "udev.h"

#ifndef BTN_TRIGGER_HAPPY
#define BTN_TRIGGER_HAPPY 0x2c0
#endif

/* we must use this kernel-compatible implementation */
#define BITS_PER_LONG (sizeof(unsigned long) * 8)

위 내용을 추가해 줍니다.

      1. 루트 파일 시스템 작업


image 폴더에 루트 파일 시스템 부분이 존재합니다.

rootfs.tar
custom_rootfs.tar

rootfs.tar 파일은 buildroot를 빌드하면 자동으로 생성되는 파일입니다. 대부분의 파일시스템 파일들이 이 압축 파일에 존재합니다.

custom_rootfs.tar 부분은 보드 부팅 후 root 폴더에 존재하는 파일들만 저장하고 있습니다. 기타 추가적으로 필요한 파일들이 있으면 이 부분에 추가해서 만들 수 있습니다.

댓글 없음:

댓글 쓰기