Embedded : : Linux/: : Linux 21

PCIe Bus

PCIe BusPcie는 bus 구조로 이어져 있는데 시스템이 처음 켜질 때 시스템 호스트 프로세서에서 실행되는 구성 소프트웨어는 버스 0개의 존재만 인식한다. 소프트웨어가 바로 모든 버스를 인식하지 못한다는 뜻이다. Pcie가 initalize될 때 host bridge는 버스 넘버링(depth-first algo)을 사용하여 PCI 버스를 인식한다. 버스 트랜잭션은 ID 번호로 주소 지정 되도록 구성되는데, ID번호는 bus, device, function number로 구성된다.  Bus number : PCI bus tree에서 몇몇의 PCI bridge는 다른 PCI bridge를 포함한다. System SW는 DFS(depth-first) 알고리즘을 통해 모든 PCI 버스를 but tree n..

Device Tree 주소 지정 방법

디바이스의 주소를 디바이스 트리에 명시하기 위해 정해진 속성엔 3가지가 있다. 1) #address-cells (부모노드에서 지정)2) #size-cells (부모노드에서 지정)3) reg (자식노드에서 지정)이 속성들은 서로 연관관계를 가지고 있다. ​​"#address-cells"속성과 "#size-cells"속성은 reg속성 데이터에 대한 갯수 규칙을 지정한다. -> 몇개의 길이를 지정할 것인가 ? #size-cells-> 몇개의 주소를 지정할 것인가 ? #address-cells​​​reg속성은 다음과 같은 형식을 가진다.reg = 1 길이1 [주소2 길이2] [주소3 길이3] ... [주소n 길이n] >*주소와 길이는 하나의 묶음이 된다. - 보드의 길이를 제어하기 위해 하나의 주소일수도 있고 ..

repo 명령어 정리

repo 명령어 정리   1.  REPO  INIT$ repo init -u [URL] [OPTIONS]현재 디렉터리에 .repo 디렉터리를 생성하고 그 안에 URL로부터 다운 받은 manifest.xml을 두고 이 파일이 실제 .repo/manifest/ 디렉터리에 있는 manifest file을 symbolic link로 지정한다. ​    2.  REPO  SYNC$ repo sync [PROJECT_LIST]project_list를 넣지 않으면 모든 repository를 sync한다. 첫 repo sync시에는 $git remote update와 같은 동작을 하고 ,그 후의 repo sync 시에는 $git rebase origin/BRANCH와 같은 동작을 한다.  [OPTION]  -d : t..

[shell script] "$*" 과 "$@"의 차이

흔히 $*와 $@를 구분 없이 많이 사용하고 있는데, 사실 약간은 다르다. 레퍼런스에 보면 아래와 같이 정의되어 있다."$*" All the positional parameters (as a single word) *"$@" All the positional parameters (as separate strings)무슨 뜻이냐면, $*는 모든 parameter를 하나의 단어로 취급한다는 의미고, $@는 별도의 문자로 취급한다는 의미다. (응?) 다시말해, $*는 입력되는 모든 parameter를 한개의 단어로 취급한다는 뜻. $@는 공백으로 구분된 별도의 문자열로 취급한다는 의미다. 아래와 같은 스크립트 코드가 있다.#!/bin/shecho "================="echo "\$@ sectio..

리눅스의 디렉터리 구조

리눅스의 디렉터리 구조    arch  arch 하부 디렉터리에는 아키텍처별로 동작하는 커널 코드가 있습니다.  Ÿ arm: 32비트 계열 ARM 아키텍처 코드가 있으며, 라즈비안도 이 하부 디렉터리 코드를 실행합니다.  Ÿ arm64: 64비트 계열 ARM 아키텍처 코드가 있습니다.  Ÿ x86: 폴더 이름과 같이 인텔 x86 아키텍처 코드가 있습니다. ​  /bin  ​일반 사용자 및 관리자가 사용하는 명령어의 실행파일이 배치되어있는 디렉터리입니다.  특히 시스템과 관련된 중요한 명령어를 포함하고 있습니다.    /dev  디파이스 파일이 배치되어있는 디렉터리입니다. 디바이스 파일이란 디스크나 키보드 등 하드웨어를 다루기 위한 특수파일입니다.​     drivers​  모든 시스템의 디바이스 드라이버..

Linux, 부팅, Swap, Dependency, Boosting

Linux, 부팅, swap, dependency, booting (tistory.com) Linux, 부팅, swap, dependency, bootingLinux 시스템이 너무 빨리 부팅되어 대부분의 출력이 너무 빨리 스크롤되어 콘솔로 전송된 텍스트(시작 중인 서비스 표시)를 읽을 수 없습니다. 따라서 부팅 문제/오류를 관찰하는 것은 우리에게flightsim.tistory.com     0.  Intro   Linux 시스템이 너무 빨리 부팅되어 대부분의 출력이 너무 빨리 스크롤되어 콘솔로 전송된 텍스트(시작 중인 서비스 표시) 를 읽을 수 없습니다. 따라서 부팅 문제 오류를 관찰하는 것은 우리에게 약간의 도전이 됩니다  이 기사에서는 Linux 시스템 부팅 프로세스의 여러 단계를 간략하게 설명한 다..

Partition 1 does not start on physical sector boundary.

노트북에서의 컴파일은 결국 한계를 느끼고,Main PC에 Ubuntu 20.04를 새로 설치하는 중 SSD에선 잘만 깔리더만PC Sub Hard drive는 파티션을 인식하지 못한다. Disk /dev/nvme0n1: 476.96 GiB, 512110190592 bytes, 1000215216 sectorsDisk model: Samsung SSD 970 PRO 512GB Units: sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisklabel type: gpt..

Linux - diff 명령어 사용법 (파일비교)

diff 명령어  : 리눅스에서 파일을 비교하는 명령어. file1과 file2를 비교하여 차이점을 찾아냄$diff [옵션] file1 file2   옵션  -b  : 연속된 공백 무시-i   : 대소문자를 구분하지 않음-t   : 출력 라인에 TAB 문자를 넣음-w  : 두 행의 비교 시 공백을 무시--brief : 파일 비교 후 결과 표시(같은지, 다른지)-d  : 세세한 차이까지 검색-H  : 큰 파일을 빠르게 처리할 때 사용-q  : 두 파일의 차이점만 출력-s   : 두 파일이 같은 지 확인-r   : 두 디렉토리의 차이점 출력-u  : undirectional new file 옵션으로 비교하는 파일/디렉토리가 빠져있을 경우 dummy로 처리해서 출력을 통일시킴-r   : recursive 하위..

리눅스 동적 정적 라이브러리

1.  동적 라이브러리   5.5.1  OCRAM protection 실행 시간에 라이브러리 파일을 찾아 코드를 포함하기 때문에 동적라이브러리라고 부릅니다.즉, 정적 라이브러리는 컴파일 시간에 코드를 결정하기 때문에 소스가 변경되면 새로 컴파일 해야하지만, 동적 라이브러리의 경우 라이브리만 교체하는 것으로도 변경이 가능합니다.$ gcc -c -fPIC test.c$ gcc -c app.c fPIC옵션은 Position-Independent Code의 약자이며 test.o파일을 동적라이브러리로 사용하도록 컴파일 하는 옵션입니다.이렇게 컴파일된 오브젝트 파일을 .so파일로 묶으면 됩니다.$ gcc -shared -fPIC -o libtest.so test.o컴파일은 아래와 같이 하면 됩니다.$ gcc -o ..