Professional Documents
Culture Documents
1~7주차(중간)
21511866 이승호
update. 2019. 10. 16
<1주차>
1. 임베디드 특징
: 특정한 목적에 맞게 디자인, 작고 가벼움, 저전력, 다양한 환경에서도 잘 돌아감
2. Real-time system
: 기능적 측면뿐만 아니라 시간적 측면에 따라 정확성이 결정되는 시스템
: 어떤 일을 처리하는데 기한이 있는 것
5. Microprocessor VS Microcontroller
: Microprocessor – CPU core에 독립적으로 존재
: Microcontroller – CPU core에 메모리, 주변장치가 같이 들어있음
7. RAM
: 주로 큰 프로그램과 데이터를 저장하는데 사용
: DRAM – 대용량 저장소로 사용
: SRAM – 제한된 메모리 용량
1 임베디드 개념_명령어(중간)_이승호.hwp
<2주차>
1. RM(Rate Monotonic) <<★★족보 2014년>>
: 주기가 짧을수록 우선순위를 높게 하는 것
: 주기가 제일 짧은 Task를 먼저 실행
: Task(i)의 response time이 Task(i)의 period time보다 작거나 같고, 모든 Task에 대해서 response time이
period time보다 작거나 같으면 RM으로 스케줄링 가능
: ≤ 조건 만족하면 RM 가능(schedulable)
: (unschedulable)
: ≤ 이면 알 수 없음(inconclusive)
2 임베디드 개념_명령어(중간)_이승호.hwp
<3주차>
1. EDF(Earliest Deadline First) <<★★족보 2014년>>
: Optimal dynamic priority scheduling
: deadline까지 남아있는 시간이 짧은 것을 우선순위를 높게 설정
: 이보다 더 좋은 scheduling algorithm은 없음
: ≤ 이면, EDF 가능(schedulable)
: 하나의 deadline miss가 다른 연속적인 deadline miss를 발생시킬 수 있음
2. RM vs EDF
: RM – Period가 고정되있고 그에 따른 우선순위가 결정되기 때문에 구현이 간단함
: EDF – 전체 프로세스를 활용, 예기치못한 상황이 발생 가능
5. Priority Ceiling
: deadline 문제를 해결
: 어떤 task가 임계구역(mutex를 잡으면)을 들어가면 그 mutex에 관련된 모든 task의 우선순위보다 높은 task의 우
선순위로 만들어줌
: 문제점 – 무조건 우선순위를 높여주기 때문에 원래의 철학과는 맞지 않음
3 임베디드 개념_명령어(중간)_이승호.hwp
<4주차>
1. Linux Command
: adduser / useradd – 새로운 사용자 추가(ex. adduser [option] [id]) <<★★족보 2014년>>
: passwd – 패스워드 생성 변경(ex. passwd [option] 사용자 ID)
: Mkdir – 특정한 디렉토리를 만듬(ex. mkdir /root/test)
: cd – 디렉토리 이동 (ex. cd /root : 최상위에서 가고자하는 디렉토리, cd test : 현재 가고자하는 디렉토리)
: rmdir – 디렉토리 삭제, 디렉토리 안이 empty상태여야함. (ex. rmdir [option] [directory name])
: alias – 어떤 명령어를 다른 이름으로 사용 (ex. alias cpf=’cp –rf’ -> 자주 사용하는 긴 명령어를 사용할 때)
: cat – 입력을 읽어서 standard output으로 출력 (ex. cat > test.txt -> 키보드로 입력 받아서 text.txt로 저장,
cat < test.txt 파일을 읽어서 standard output으로 출력, cat test1.txt test2.txt > test12.txt -> 합병)
: df – disk space 용량 계산 (ex. df[option])
: dmesg – 커널에서 나오는 메시지를 보여주는 명령어 (ex. dmesg | grep usb -> 특정한 문자열을 찾아줌)
: du – 디렉토리 혹은 파일의 수를 출력해주는 명령어
: grep – 특정 파일, 디렉토리에서 특정한 문자열을 찾아주는 명령어 <<★★족보 2012년, 2014년, 2016년>>
( -r : sub directory 까지 찾음, ex. grep ‘AAA’ * -> 현재 디렉토리 안에 있는 모든파일에서 AAA를 찾음, grep
–r ‘AAA’ * -> 현재 디렉토리 포함 sub-directory까지 포함한 모든 파일에서 AAA를 찾음)
: history – 현재 사용했던 명령어들의 기록 (ex. history | grep cp -> 히스토리 결과 중 cp만 찾음)
: ps – 현재 실행하고 있는 프로세스를 보여주는 것 (ex. ps –ax -> service or background 까지 보여줌,
ps –ax | grep xinet -> 특정 프로세스만 찾을 수 있음)
: Kill – 어떤 특정 프로세스를 강제로 종료 (ex. Kill –9 pid)
: pwd – 현재 디렉토리에 full path name을 보여줌(최상위부터 현재까지) (ex. pwd [-LP])
: rm – 파일 삭제
(-f : yes/no 없이 삭제, -i : 삭제할 때 사용자 동의 얻음, -r : 현재 이름의 디렉토리를 삭제, -v : 어떤일을 했을
때 설명을 같이 해줌)
(ex. rm test, -> 디렉토리라면 -> rm –r text -> yes/no 없이 하려면 -> rm –rf test)
(많이 사용 하는 ex. rm –rf * -> 모두 삭제) <<★★족보 2012년, 2013년, 2017년>>
: su – super user의 사용자를 바꿈 (ex. su kittens -> 키튼으로 로그인, su root -> super user로 됨
<<★★족보 2017년>>
: exit – 다 사용하고 종료
: tar – 여러개의 파일을 하나로 묶어주는 명령어 (ex. tar [option] [archive-file] [files or directories])
(ex. -x : 풀 때, -c : 만들 때, -v : 처리된 파일을 상세하게 나열, -f : 보관 파일 또는 장치 사용,
-z : gzip 되어 있는 것을 한꺼번에 풀 때)
(ex. tar zxvf a.tar.gz -> 압축 해제, z대신 c면 만들 때) <<★★족보 2012년, 2013년, 2015년, 2017년>>
: w – 시스템 usage를 보여줌(시스템 얼마나 사용하는지) (ex. w -> 토탈 뷰, w kittens -> 키튼 사용자)
: ln – 링크 명령어 (ex. ln –s /usr/bin/dir ls_dir -> /usr/bin/dir 디렉토리를 ls_dir로 만듬)
: ping – 네트워크 관련
: ifconfig – 리눅스에서 네트워크를 설정해주는 명령어, IP Addr을 설정, 관리 해주는 명령어
<<★★족보 2014년, 2015년, 2017년>>
(ex. ifconfig eth0 192.xxx.xxx.xxx -> IP Addr 설정, ifconfig eth0 down -> interface를 멈출 때)
4 임베디드 개념_명령어(중간)_이승호.hwp
3. Cross Compiler <<★★족보 2012년, 2014년, 2016년>>
: Host System에서 컴파일 하면, 그 코드가 Target System에서 실행이 될수 있도록 해주는 컴파일러
4. Cross debugger
: Target System에 대한 제어를 debugger를 통해 해줌
Host system에서 컴파일러가 타켓 시스템용 binary를 만드는 것.
5. daemon
: 시스템에서 background로 실행되는 프로그램으로 특정한 request가 왔을 때 처리
5 임베디드 개념_명령어(중간)_이승호.hwp
10. Booting Sequences by TFTP/NFS
1) TFTP request
2) TFTP reply
3) Download compressed kernel
4) Branch to Kernel
5) Branch & un-compress kernel RAM
6) Mount NFS
6 임베디드 개념_명령어(중간)_이승호.hwp
<5주차>
1. VIM mode <<★★족보 2012년>>
: command mode – 명령어를 입력 후 명령어에 따라 실행(ESC) <<★★족보 2017년>>
: insert mode – I, a, o, s 타이핑하는 text가 입력이 되는 것 <<★★족보 2013년>>
: EX mode – 어떤 문자열을 찾거나 바꿈, file을 열거나 저장
2. File Open
: File Open – 특정 파일 open (ex. vim HelloWorld.c)
4. EX mode
:wq! -> 저장하고 종료
:o file -> open file
:e file -> open file
:e -> 현재 파일을 다시 open
:ZZ -> 수정한 것을 저장하고 vi를 끝냄
7 임베디드 개념_명령어(중간)_이승호.hwp
<Delete Command>
x -> 현재 커서가 있는 character 삭제
dl -> 현재 커서가 있는 character 삭제
dw -> word 삭제
D -> 현재 커서로부터 라인 끝까지 삭제
dd -> 현재 커서의 그 라인을 삭제 <<★★족보 2012년, 2014년, 2017년>>
<Copy and Paste>
yw -> 현재 커서가 있는 워드가 복사
yy -> 현재 커서가 있는 라인이 복사
[n]yy -> 현재 라인으로부터 n 라인을 복사
p -> 복사
[n]p -> 현재 커서 앞에 n번 복사
dd -> 커서가 있는 그 라인이 없어짐
<Block>
y -> 블락에 있는 텍스트 복사
d -> 블락에 있는 텍스트 삭제
> -> 블락의 현재 라인 앞에 탭 추가
< ->블락의 현재 라인 앞에 탭 삭제
: -> ex mode
U -> 대문자 변경
u -> 소문자 변경
<Undo and Redo>
ctrl + r -> 전에 했던 명령어를 다시 반복(redo)
u -> 전에 했던 명령어를 취소(undo)
<Search>
ex. EX mode에서 /aaa -> vi editer에서 현재 editing하고 있는 그 문서에서 aaa를 찾음
b -> 전 aaa 찾을때
n -> 다음 aaa 찾을 때
<Replacement> - 특정한 문자열을 a에서 b로 바꿈
:%s/windows/linux/g -> 문서 전체에서 사용자 동의 없이 windows를 linux로 바꿈 <<★★족보 2013년, 2014년,
2015년, 2016년>>
:%s/hong/HONG/gc -> 문서 전체에서 사용자 동의를 얻고 hong을 HONG으로 바꿈
:-2.+5s/cat/dog/g -> 현재 커서 앞 2라인, 밑 5라인 까지 그 안에 cat을 dog으로 바꿈
8 임베디드 개념_명령어(중간)_이승호.hwp
<6주차>
1. Bootloader <<★★족보 2012년, 2014년, 2015년, 2016년>>
: 어떤 시스템에서 처음으로 실행되는 프로그램을 load 하는 것
OS 로딩, H/W check
loader : flash memory에 있는 어 코드나 데이터를 memory로 올려줌
- uboot loading
- 전원이 켜지면 CPU가 ROM address로 감
- memory에 올라가서 실행함
2. U-boot Loading
1) bootloader 실행
2) memory에 올려주고
3) 커널 올려주고
4) 커널이 실행 될 수 있게 함
3. U-Boot 전체 흐름
: CPU 초기화, start_armboot() call
: 코드 작성
: Bootloader에서 명령어가 들어오면 그 명령어를 처리
: C에서 Linux 부팅
4. U-Boot Commands
<Information Commands>
: bdinfo -> board information
: coninfo -> console information
: flinfo -> flash memory information
: iminfor -> image information
: help -> help
<Memory Commands>
: base -> base address 출력, 세팅
: crc32 -> 특정한 범위에서 crc 체크
: cmp -> 두 개의 메모리 공간 값 비교
: cp -> 메모리 복사
: md -> 특정한 메모리를 보여줌
: mm -> 메모리값을 어떤 특정한 값으로 바꿔줌
: mtest -> 메모리 테스트
: mw -> 메모리 쓰기
: nm -> 메모리 수정
: loop -> 주소 범위의 무한 루프
<Flash Memory Commands>
: cp -> 메모리 복사
: flinfo -> 플래시 메모리 정보
: erase -> 플래시 메모리 삭제
: protect -> 플래시 보호
9 임베디드 개념_명령어(중간)_이승호.hwp
: mtdparts -> 메모리 기술 장치 정의
<Execution Control Commands>
: autoscr -> 스크립트 실행
: bootm -> 메모리로부터 앱 이미지를 사용해서 부팅
: go -> 특정한 메모리 주소로 이동
<Download Commands>
: bootp -> BOOTP/TFTP 프로토콜을 사용한 네트워크를 통해서 이미지 부팅
: dhcp -> IP Addr 자동으로 받게함
: loadb -> 시리얼 라인을 통해 binary file을 로딩
: loads -> 시리얼 라인을 통해 S-Record 파일 로딩
: rarpboot -> RARP/TFTP 프로토콜을 사용한 네트워크를 통해 이미지를 부팅
: tftpboot -> TFTP 프로토콜을 사용한 네트워크를 통해 이미지를 부팅
<Environment Variables Commands>
: printenv -> 현재 환경 변수 출력
: saveenv -> 현재 환경 변수 값을 저장장치에 저장
: setenv -> 환경 변수 설정 <<★★족보 2012년>>
: run -> 명령 실행
: bootd -> default로 부팅
10 임베디드 개념_명령어(중간)_이승호.hwp
<7주차>
1. NOOBS
: 라즈베리파이의 운영체제를 쉽게 설치해주기 위한 프로그램
2. Kernel
: 컴퓨터에서 항상 실행되고 있는 프로그램 중 하나
: process management, CPU scheduling, input/output control 등을 관리해주는, 기능을 제공해주는 운영체제의
핵심 기능
5. linux kernel 역할
: process management - 스케쥴링
: memory management - 매핑
: file system management – 다양한 파일 시스템 지원
: device management – micro kernel이 관리
: network management
11 임베디드 개념_명령어(중간)_이승호.hwp
7. Kernel Source
1) 커널 소스를 host system의 NFS 디렉토리로 복사 (service nfs-kernel-server restart)
2) Target system의 NFS 디렉토리로부터 커널 소스 복사
3) 커널 버전 확인
4) 컴파일 환경 설정
5) 커널을 빌드하기 위한 configuration
6) 컴파일, 커널 이미지 쓰기
8. Reboot
1) Execute minicom
2) check linux kernel version
12 임베디드 개념_명령어(중간)_이승호.hwp
<족보 관련>
1. chmod XXX [file] <<★★족보 2012년, 2013년, 2014년>>
: Read(4) Write(2) Execute(1)
: XXX(사용자, 그룹, 다른 사용자
6. command to compile the file “test.c” and create the execution file “test.exe”
<<★★족보 2013년, 2015년, 2017년>>
gcc –o test.exe test.c
8. move the cursor to the end of the current line <<★★족보 2016년>>
$
13 임베디드 개념_명령어(중간)_이승호.hwp
12. embedded system VS real-time system <<★★족보 2016년>>
: embedded system – 큰 시스템에 어떤 컴퓨팅 시스템에 한 component로 들어가는 시스템
: real-time system – 어떤 operation이 동작할 때 시간적 제한 요소를 가지고 있는 시스템
14 임베디드 개념_명령어(중간)_이승호.hwp