반응형
https://insightbooklist.wordpress.com/books/programming-insight/%EB%8F%84%EC%A0%84-%EC%9E%84%EB%B2%A0%EB%94%94%EB%93%9C-os-%EB%A7%8C%EB%93%A4%EA%B8%B0/%EC%86%8C%EC%8A%A4%EC%BD%94%EB%93%9C%EC%99%80-%EC%B0%B8%EA%B3%A0-%EC%9E%90%EB%A3%8C/

어떤 착한 분이 임베디드 관련 자료들을 다 복원해주셨다 ㅜㅜ 우선 다 다운받아놓기 ....

 

1.gumstix_uboot.tgz 다운

위에서 다운받으면 되지만 vmware는 32bit , OS는 64bit여서 자꾸 다운됨 ㅜㅜ 그래서 wget 명령어 사용함

$wget -O gumstix_uboot.tgz https://drive.google.com/file/d/0B6crpDdRQpLzVDM0clpoWG5ROHc/edit

##이거 안돼서 

https://tttsss77.tistory.com/76

로 공유 폴더 만들고 gumstix_uboot.tgz 공유 폴더로 만듬 

 

ubuntushare 폴더에서 gumstix_uboot.tgz 를 root로 cp

$ cp gumstix_uboot.tgz ~
$ ls
Desktop    examples.desktop   Pictures    qemu-2.1.2.tar.bz2  workspace
Documents  gumstix_uboot.tgz  Public      Templates
Downloads  Music              qemu-2.1.2  Videos

 

 

2. uboot 압축 품

$tar -xvf gumstix_uboot.tgz

 

3.폴더 이동해 make distclean  입력

$cd gumstix_uboot
$make distclean

 

4.파일 삭제되는 것을 볼 수 있습니다

@ubuntu:~/gumstix_uboot$ make gumstix_config
Configuring for gumstix board...
$make all

하고 ls 하면 u-boot.bin이 생성된 것을 볼 수 있음

jisu@ubuntu:~/gumstix_uboot$ ls
arm_config.mk dtt lib_nios nios_config.mk board dump lib_nios2 post CHANGELOG examples lib_ppc ppc_config.mk common fs m68k_config.mk pro compilelog i386_config.mk MAINTAINERS README config.mk include MAKEALL rtc COPYING lib_arm Makefile System.map cpu lib_generic microblaze_config.mk tools CREDITS lib_i386 mips_config.mk u-boot disk lib_m68k mkconfig u-boot.bin doc lib_microblaze net u-boot.map drivers lib_mips nios2_config.mk u-boot.srec
jisu@ubuntu:~/gumstix_uboot$ /usr/local/bin/qemu-system-arm -M connex -pflash u-boot.bin -nographic
qemu-system-arm: failed to read the initial flash content
qemu-system-arm: Initialization of device cfi.pflash01 failed

64비트와 32비트 차이로 오류가 났다 ㅜㅜ >> 명령어 입력 >> flash.bin이 생성 > uboot.bin을 대체한다고 생각

jisu@ubuntu:~/gumstix_uboot$ dd if=/dev/zero of=flash.bin bs=4096 count=4096
4096+0 records in
4096+0 records out
16777216 bytes (17 MB) copied, 0.0392093 s, 428 MB/s
jisu@ubuntu:~/gumstix_uboot$ dd if=u-boot.bin of=flash.bin bs=4096 conv=notrunc
38+1 records in
38+1 records out
158832 bytes (159 kB) copied, 0.00100775 s, 158 MB/s

해결하고 다시 명령어 입력해보면 완성!

jisu@ubuntu:~/gumstix_uboot$ /usr/local/bin/qemu-system-arm -M connex -pflash flash.bin -nographic
pxa2xx_clkcfg_write: CPU frequency change attempt


U-Boot 1.1.4 (Sep 23 2019 - 04:51:26) - 200 MHz - 

*** Welcome to Gumstix ***

U-Boot code: A3F00000 -> A3F26C70  BSS: -> A3F5BD8C
RAM Configuration:
Bank #0: a0000000 64 MB
Flash: 16 MB
Using default environment

SMC91C1111-0
Net:   SMC91C1111-0
Hit any key to stop autoboot:  0 
Instruction Cache is ON
### JFFS2 loading 'boot/uImage' to 0xa2000000
Scanning JFFS2 FS:  done.
find_inode failed for name=boot
load: Failed to find inode
### JFFS2 LOAD ERROR<0> for boot/uImage!

 

 

지긋지긋한 설치 완성 

이러고 나서 또 에러나면 그냥 ㅘㄱㅁ,ㅇ라ㅣㅇㄴ러ㅣ마어리ㅏㅇㄴ

반응형
반응형

qemu 설치

1.qemu 받을 폴더 만들고 -> wget로 파일 받음

$mkdir workspace
$wget http://wiki.qemu-project.org/download/qemu-2.1.2.tar.bz2 

 

2. 다운 완료 되면 압축 풀어줌

$tar -xvf qemu-2.1.2.tar.bz2

$ls
>>qemu-2.1.2   qemu-2.1.2.tar.bz2

3.qemu-2.1.2 폴더로 이동 -> ./configure

$cd qemu-2.1.2/
$./configure

4.패키지 여러 개 설치     (설치하고 -> make 하면 에러가 뜬다)

아니 뭐가 문젠지는 모르겠지만 make 하기전에 패키지를 다 깔고 들어가도 되지 않을까 싶어서 시작했는데 된다! 

glib-2.12와 gthread-2.0이 컴파일하는데 필요

$sudo apt-get install libglib2.0
autoreconf를 못찾는다는 에러

$sudo apt-get install autoconf
http://theintobooks.wordpress.com/2012/10/30/installing-qemu/
에러 참고

$sudo apt-get install libtool
flex와 bison을 찾지 못함
$sudo apt-get install aptitude // 다른 설치 툴 사용
$sudo aptitude install flex        //flex 설치
$sudo aptitude install bison     //bison 설치

##make 시 에러가 나면 ctrl + c 정지 후 -> sudo make clean -> make 

 

$sudo make install 

5.install 완료

오랜시간이 걸려 완료 후 정상적으로 설치되었는지 확인하려면

$ls /usr/local/bin

완료 완료!

반응형
반응형

ARM 크로스 컴파일 환경구축

1.arm-linux-gcc 파일 다운로드

$mkdir workspace
$cd workspace/ 
$wget ftp://ftp2.de.freebsd.org/pub/linux/handhelds/projects/toolchain/arm-linux-gcc-3.3.2.tar.bz2

-> 현재 있는 폴더로 다운로드 됨

 

2.압축해제

해당파일을 루트로 옮기고 압축품

$sudo cp ./arm-linux-gcc-3.3.2.tar.bz2/
$cd/
$sudo tar xvf arm-linux-gcc-3.3.2.tar.bz2/

 

3.압축해제 확인 및 유저프로파일 수정

압축 풀린 것 확인 -> 없으면 잘못된것

$ls /usr/local/arm/3.3.2
$cd ~

vi 명령어 사용해서 profile 파일을 고쳐주라는데 자꾸 에러나서 걍 gedit -> 이렇게 해도 상관읎다!

$gedit .profile

맨 하단에 PATH 설정 후 저장

PATH=/usr/local/arm/3.3.2/bin:/usr/local/arm/3.3.2/sbin:"${PATH}"  

 

4.변경사항 적용 및 확인

편집 완료되면 명령어로 변경된 사항을 적용시켜줌

$source ~/.profile

변경사항 잘 정용되었나 확인해보는 명령어

$echo $PATH

아까입력한 PATH 나오면 성공!

반응형
반응형

도전! 임베디드 OS만들기(부제 : 코딩하며 배우는 운영체제 원리)

저자 : 이만우 (숭실대 컴퓨터학부 졸업, SSM, 삼성전자 반도체 총괄중.)

 

이 책을 보고 따라하며 내용을 정리합니다

교수님 환경을 따라하고, 하다가 조금 더 나은 환경으로 구축하겠습니다

 

https://blog.naver.com/goodkus/220199301787

이 블로그를 참조하여 진행합니다. 문제가 된다면 삭제하겠습니다 ^0^

 

 

운영체제란?

 - 응용 프로그램과 하드웨어 사이에서 인터페이스 역할을 하며 시스템의 동작을 제어하는 시스템 소프트웨어. -> 시스템의 자원과 동작을 관리하는 소프트웨어.

 

운영체제의 역할

- 프로세스 관리

- 스레드, 프로세스

- 스케줄링

- 동기화

- IPC

- 저장장치 관리

- 메모리 관리

- 가상 메모리

- 파일 시스템

- 네트워킹

- TCP / IP

- 기타 여러 프로토콜

- 사용자 관리

- 계정 관리

- 접근권한 관리

- 디바이스 드라이버

- 순차접근 장치

- 임의접근 장치

- 네트워크 장치

 

프로세스 관리 

  운영체제에서 작동하는 응용 프로그램을 관리하는 기능. 현재 프로세서를 점유해야 할 프로세스를 결정하고, 프로세서(CPU)를 프로세스에 할당하며, 프로세스 간 공유 자원 접근과 통신 등을 관리.

 

저장장치 관리 

  시스템의 메인 메모리와 하드디스크등을 관리하는 기능.

 

네트워킹 

  네트워킹에 필요한 프로토콜 지원.

 

디바이스 드라이버

하드웨어를 추상화하여 관리해주는 기능.

 

 

 

임베디드 시스템(embedded system)

특정 기능을 수행하는 규모가 있는 전자적 시스템으로 구성되는 컴퓨터 시스템 이며, 실시간(real-time computing) 능력의 제한을 갖는다.

http://ko.wikipedia.org/wiki/%EC%9E%84%EB%B2%A0%EB%94%94%EB%93%9C_%EC%8B%9C%EC%8A%A4%ED%85%9C

 

 

 

책에서 나오는 나빌룩스란?

 책 저자의 닉네임을 붙여서 만든 임베디드 OS.

 

나빌룩스의 구성. 

- 메모리 관리자

- 메모리 정적 할당

- 메모리 동적 할당

- 태스크 관리자

- 태스크 생성

- 태스크 간 전환(컨텍스트 스위칭)

- 스케줄러

- 메시지 관리자

- 태스크 간 통신

- 상호배제(뮤텍스)

- 세마포어

- 디바이스 드라이버 관리자

- 순차접근 장치 

- 커널 서비스

- OS timer

- 시스템 콜

- IRQ 핸들러

 

 

 

환경 구축하기

  원래 임베디드 장비는 PC에 비해서 성능이 떨어진다. 그래서 PC에서 컴파일하고 빌드하여 나온 이미지를 장비로 옮기는 것이 효율적인데, 그것에 대한 환경을 구축해야한다. 이런 환경을 구축하는 것을 ‘목표 플랫폼에 맞추어 크로스 컴파일 환경을 구축’한다라는 용어로 책에 소개되어 있다. 조금 더 정리하자면 컴파일하고 빌드한 이미지가 목표한 플랫폼에서 실행되도록 환경을 구축한다는 것이다.

 

책 저자가 사용한 플랫폼.

ARM 아키텍쳐. 가장 많이 사용함.
http://ko.wikipedia.org/wiki/ARM_%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98

 

MCU(Micro Controller Unit) :

CPU기능은 물론이고 일정한 용량의 메모리, 입출력 제어 인터페이스, 주변장치 컨트롤러 회로까지 칩 하나에 내장한 반도체.

 

책 저자의 개발환경

1. arm-linux v3.3.2, 이지보드 사용
2. linux, arm-linux v3.3.2, qemu v0.9.1(gcc-3.x), gumstix_uboot 사용. 

 

  1번의 경우 돈이 충분하다면 이지보드를 구입하여 하면 된다. (약 10만원정도로 알고 있다.) 

 

  2번의 경우 qemu의 버전이 옛날 버전이라 gcc를 3.x버전으로 다운그레이드 해야한다.(2014-12 기준으로 ubuntu에는 3.x 패키지를 지원안함.) 번거로운 작업이 된다. 환경구축하다가 빡쳐 죽을뻔했다.

 

 

나의 개발환경

1. ubunt, arm-linux v3.3.2, qemu 최신판, ezboot 사용.
  이렇게 사용 할 것이다. 책에는 qemu 0.9.1버전을 사용하려면 gcc를 다운그레이드 해야하지만 나는 gcc 4.x버전으로 qemu 최신버전을 돌릴 것이다. 

반응형

+ Recent posts