작업환경
1.Main OS : Windows 8.1K for x64
2.Virtual OS : Ubuntu14.04.5(VirtualBox)
3.Equipment : Hybus-Smart4412TKU
파일
https://drive.google.com/drive/folders/0B1BHFmZx9XP6aVRHOUFhSnFweUE
1. 초기설정
- 우분투 설치 후 터미널 창에서 mkdir /Smart4412
- Smart4412 디렉토리에 다운받은 Development 디렉토리 복사
- Development 디렉토리 구조
● Image : Bootloader , Kernel , Filesystem Image
● Source : Bootloader , Kernel , Filesystem Source
● Toolchain : Compiler
- sudo apt-get install gcc-4.4 g++-4.4 g++-4.4-multilib gcc-4.4-multilib (C컴파일러 설치)
- sudo apt-get install u-boot-tools (부트로더 개발에 필요한 유틸리티 설치)
- Toolchain 설치
● cd Smart4412/Development/Toolchain
● sudo cp ./arm-2010q1.tgz /usr/local (압축파일 로컬로 옮기기)
● cd /usr/local
● sudo tar zxvf ./arm-2010q1.tgz (압축풀기)
● cd /usr/local/CodeSourcery/Sourcery_G++_Lite/bin/ (Toolchain 설치 경로로 이동하여 개발에 사용되는 컴파일러 정보를 확인)
● cd /Smart4412Linux/Developmnet/Toolchain/
● sudo cp ./gnueabi.tgz /opt
● cd /opt
● sudo tar zxvf ./gnueabi.tgz
● cd /opt/gnueabi/opt/ext-toolchain/bin (Toolchain 설치 경로로 이동하여 개발에 사용되는 컴파일러 정보를 확인)
● sudo apt-get install lib32z1
- 컴파일 테스트 해보기
● hello.c 프린트프 hello 하는 파일만들기
->/opt/gnueabi/opt/ext-toolchain/bin/arm-linux-gnueabihf-gcc -o hello_test hello.c
내가 설치한 arm용 gcc로 컴파일 돌리기 !
● file [파일명] 파일의 정보 arm 용인지 확인
● gcc -m32 -o hello_test hello.c
-> file hello_test 해보면 32비트 라고 뜸!
2. Bootloader File 생성
- cd /Smart4412Linux/Development/Source/bootloader/
- sudo tar zxvf ./uboot_4412_20131202.tgz
- cd uboot_4412
- make distclean (기존에 작업하였던 object , config를 삭제하고 초기화상태로 만든다)
- make smdk4412_config config (부트로더 빌드)
( *만약 안된다면
-sudo dpkg --add-architecture i386 && sudo apt-get update
-sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0
-sudo dpkg --add-architecture i386
-echo "foreign-architecture i386" > etc/dpkg/dpkg.cfg.d/multiarch
-sudo apt-get update
-sudo apt-get install libc6:i386
-sudo apt-get install ia32-libs
)
- make (부트로더 컴파일 , 현재폴더 uboot_4412에서 make --> bl2.bin 과 u-boot.bin 파일이 생성)
3. Kernel File 생성
- cd /Smart4412Linux/Development/Source/kernel/
- tar -zxvf kernel_4412_linux.tgz
- cd ./kernel_4412/drivers/net/wireless -> gedit Kconfig 부팅시 필요한 정보가 적혀있음
- sudo apt-get install libncurses5-dev
- kernel_4412 폴더로 돌아와서 make menuconfig
- 현재 폴더(kernel_4412)에서 make distclean 초기화
- cd kernel_4412/arch/arm/boot ls 해보면 그전 작업 전부 지워진걸 알 수 있음.
- kernel_4412 폴더에서 ./build_kernel
- make (커널을 압축해서 파일 만들기 시작 20분소요)
- cd ./arch/arm/boot (ls 해보면 zImage가 생김)
4. Filesystem File 생성
- cd /Smart4412Linux/Development/Source/filesystem
- chmod 777 mkfs.sh (mkfs.sh를 실행하기 전 권한 설정이 주어져 있지 않은 경우 권한을 주도록 한다)
- sudo tar zxvf rootfs_H4412.tgz
- cd filesystem
- sudo ./mkfs.sh (rootfs_ext4.img 이미지 파일 생성)
5. Kernel Porting
1)Tera term으로 커널 포팅(Windows 환경)
- 시리얼 통신 프로그램 설치(Tera Term)
Tera Term 설치-> (H-Smart4412장비와 시리얼 통신을 하게 해주는 프로그램다운로드 , 사이트 http://ttssh2.osdn.jp/) -> 다운로드
-> Tera Term exe 파일 다운로드 -> USB to Serial Driver(파일명 : CDM20814_Setup) 설치 -> 제어판 모든 제어판 항목 ->
장치관리자 포트가 추가되는지 확인 ! ex) usb serial port (com3) -> tera term 시작 -> 시리얼 (e) 선택 -> usb serial port(com3) 선택후 확인
- 설정 시리어포트 속도 115200 후 lcd 키면서 엔터 입력 (Auto Boot 모드 상태이기 때문에 엔터를 입력하여 Stop한다)
- 파티션 나누기 fdisk -c 0 -> fastboot 입력
- 장치관리자 맨위에 Alcatel ADB Device 누르고 Alcatel ADB Interface 오른쪽 클릭 드라이버 소프트웨어 업데이트 클릭
-> 컴퓨터에서 드라이버 찾기 -> OTG_USB_Driver_for_HSMART4412
- adt_bundle 파일 받기 -> 압축풀기 -> platform-tools 안에 bl2.bin , u-boot.bin zImage , rootfs_ext4.img 복사붙여넣기
- platform-tools 안에서 쉬프트 + 마우스 우클릭으로 이 폴더에서 cmd 창 열기 (cmd 창에서 platform-tools 경로로 이동)
- cmd 창안에서 다음 명령어 입력
● fastboot.exe flash bootloader u-boot.bin
● fastboot.exe flash bl2 bl2.bin
● fastboot.exe flash kernel zimage
● fastboot.exe flash system rootfs_ext4.img
● fastboot.exe reboot
- 만약 fastboot.exe 실행시 fail이 뜬다면 테라텀 연결끊기 먼저 꼭 하고 fdisk -c 0 부터 다시 시작
- 부팅 완료!
2)ubuntu에서 커널 포팅(Linux 환경)
- sudo apt-get install android-tools-fastboot
- USB를 설정해준다(FTDI FT232R USB UART [0600]을 체크해준다)
- mkdir porting(porting 디렉토리에 bl2.bin , u-boot.bin zImage , rootfs_ext4.img를 이동시킨다)
- cd porting(터미널 창을 새로 하나 연다)
● fastboot flash bootloader u-boot.bin
● fastboot flash bl2 bl2.bin
● fastboot flash kernel zimage
● fastboot flash system rootfs_ext4.img
● fastboot reboot
- 부팅 완료!
'Embedded > Kernel Porting' 카테고리의 다른 글
[Kernel Porting] LED 점멸하기2 (1) | 2016.12.18 |
---|---|
[Kernel Porting] LED 점멸하기1 (0) | 2016.12.18 |
[Kernel Porting] Hello World 출력하기 (0) | 2016.12.18 |
[Kernel Porting] Embedded Programming 컴파일 및 테스트 (0) | 2016.12.17 |
[Kernel Porting] H-Smart4412 부트로더 설치 (0) | 2016.12.16 |