728x90
반응형

분류 전체보기

728x90
반응형
Embedded system/임베디드 리눅스 프로그래밍 완전정복

[2장/툴체인] Crosstool-NG를 이용한 라즈베리파이 3B+ 툴체인 빌드 (isl: download failed 에러)

[ 라즈베리파이용 configure ] crosstool-NG는 각기 다른 여러 가지 조합의 툴체인 빌드를 할 수 있다. 아래의 명령어는 다양한 플랫폼에 대한 설정에(arch: armv7, armv8, aarch64 등, 라이브러리: uClibc, libc 등) 대해 미리 정의된 구성을 보여준다. $ ./ct-ng list-samples crosstool-NG는 라즈베리파이 3 모델에 대한 config를 갖고 있기 때문에 그걸 이용해서 ARMv8 아키텍처와 libc 라이브러리용 64Bit 툴체인을 만들 수 있다. 이름에 접두어 show-를 붙이면 다음과 같이 default 구성을 볼 수 있다. ./ct-ng show-aarch64-rpi3-linux-gnu 표준 라이브러리는 glibc이며, 나중에 변경 ..

프로그래밍/C & C++

[C++] 업캐스팅(Upcasting) & 다운캐스팅 (Downcasting)

[ 업캐스팅 ] int main() { Base p; Derived c; std::cout

Embedded system/[KOCW] 운영체제

[운영체제] Virtual Memory 7 (Page-Falut Frequency)

[ PFF (Page-Fault Frequency) ] 멀티프로그래밍 Degree를 조절하면서 Thrashing을 방지하는 알고리즘이다. 이 방식은 Working-Set 알고리즘처럼 Working-Set을 추정하는 방식이 아니라 직접 Page Fault Rate을 본다. ​ 현재 시점에 이 시스템에서 Page Fault가 얼마나 일어나는지를 보고, 특정 프로그램이 Page Fault를 얼마나 내는지 본다. 프로그램이 Page Fault를 많이 내고 있으면, 이 프로그램의 Working-Set은 메모리에 보장이 안 되어 있는 상태라고 판단하여 페이지를 더 내어준다. ​ 보통 일반적으로 프로그램에 할당되어 있는 메모리의 크기가 커지면 Page Fault 발생 비율이 줄어든다. 프로그램의 상황에 따라 곡선의 ..

Embedded system/임베디드 리눅스 프로그래밍 완전정복

[2장/툴체인] crosstool-NG 설치

댄 케겔(Dan Kegel)이 크로스 개발 툴체인을 만드는 스크립트와 makefile을 작성하고 crosstool라고 불렀다. 그 기반을 이용해 차세대 crosstool인 crosstool-NG를 만들었으며, 소스로부터 독립형 크로스 툴체인을 만드는 가장 편리한 방법이다. [ crosstool-NG 설치 ] 우분투 Host PC에서 crosstool-NG를 사용하려면 다음 명령으로 패키지들을 설치해야 한다. $ sudo apt-get install automake bison chrpath flex g++ git gperf gawk libexpat1-dev libncurses5-dev libsdl1.2-dev libtool python2.7-dev texinfo 설치 후, crosstool-NG git에서..

Embedded system/임베디드 리눅스 프로그래밍 완전정복

[2장/툴체인] 툴체인(toolchain)이란?

툴체인은 임베디드 리눅스의 첫 번째 요소이자 프로젝트의 시작점으로 장치에서 실행될 모든 코드는 툴체인을 통해 컴파일된다. 초기 단계에서의 선택이 최종 산출물에 엄청난 영향을 끼칠 수도 있다. ● 툴체인 요건 프로젝트에 필요한 언어를 지원해야 한다. POSIX (Portable Operatin System Inerface) 및 기타 시스템 인터페이스에 대한 구현을 갖고 있어야 한다. 보안 결함이나 버그가 발견되면 업데이트가 되어야 한다. 프로젝트 내내 바뀌지 않아야 한다. (프로젝트 도중 컴파일러와 개발 라이브러리를 바꾸면 버그가 생기기 쉽다.) ● 툴체인 얻는 방법 파일을 다운로드해서 설치 crosstool-NG 도구를 통해 소스 코드로부터 툴체인 빌드 빌드 시스템이 생성한 툴체인 [ 툴체인 소개 ] 소..

Embedded system/[KOCW] 운영체제

[운영체제] Virtual Memory 6 (Working Set)

[ Working-Set ] 프로그램들이 메모리에서 원활하게 실행이 되려면 어느 정도의 Page Frame을 갖고 있어야 한다. 또한, 프로그램은 특정 시간에는 특정 메모리 위치만 집중적으로 참조하는 특징이 있다. (Reference의 Locality) ​ 예를 들어, for Loop가 실행이 되고 있는 동안에는 Loop를 구성하는 페이지만 집중적으로 참조가 된다. 프로그램이 실행이 되면 함수 구조로 되어있는데, 그 함수를 구성하는 페이지만 집중적으로 참조한다. Working Set은 적어도 한꺼번에 올라와 있도록 보장해 줘야 Page Fault가 자주 발생하지 않는다. ​ 동시에 너무 많은 프로그램들이 메모리에 올라가 있으면 Working Set을 보장할 수 없는 상태가 된다. ​ 예를 들어, Work..

프로그래밍/C & C++

[C++] char/wchar_t & string/wstring 차이

[ char ] C언어는 미국에서 만들어져 문자 표현은 미국 표준 문자인 ASCII 코드를 표현한다. ASCII : American Standard Code for Information Interchange C언어에서 문자를 표현할 때 char 형식을 사용하며 char 형식은 ASCII 코드를 표현할 수 있는 크기로 설계되었다. 영문 알파벳과 대/소문자, 숫자 문자 및 기타 문자를 포함해도 1byte면 표현이 가능하기 때문에 char는 크기가 1byte로 정해졌다. 하지만 한글 또는 여러 나라의 문자들은 256개를 초과하므로 char형으로 한글 문자를 표현하지 못한다. 때문에 전 세계 모든 문자들을 컴퓨터로 표현할 수 있도록 설계된 표준이 유니코드(Unicode)이다. 영문이 아닌 한글처럼 ASCII 코..

Embedded system/[KOCW] 운영체제

[운영체제] Virtual memory 5 (Page Frame 할당, Thrashing)

[ Page Frame 할당 ] 프로그램 여러 개가 물리적 메모리에 같이 올라와 있는데, 어떤 프로세스의 페이지인지 무관하게 그냥 가장 오래된 페이지를 쫓아냈다. 그런데 프로그램들이 CPU에서 실행이 되면서 Page Fault를 내지 않고 원활하게 실행이 되려면 일련의 페이지들이 다 같이 올라와 있어야 효율적이다. ​ 예를 들어, Instruction을 실행할 때 Loop를 돌고 있는데 그 for 문에 속한 페이지가 3개라고 해보자. 그럼 이 프로그램한테 이 세 개의 페이지를 할당해야 Page Fault가 일어나지 않는다. 즉, for 문을 백만 번 돌고 있을 때, 이 프로그램에게 3개의 페이지만 할당해 주면 Page Fault가 일어나지 않는다. 만약 이 프로그램에게 Page 두 개를 할당시키면 100..

728x90
반응형
라닝
'분류 전체보기' 카테고리의 글 목록 (4 Page)