임베디드 개발324 PCIe PCIe에 대해 한번 알아보자. 먼저 PCI와 PCIe는 어떻게 다를까 1. PCI vs PCIe1.1 PCI (Peripheral Component Interconnect)개념 : PCI는 1992년에 인텔이 개발한 병렬 버스 인터페이스로 CPU와 주변 장치를 연결하는데 사용되었다.동작 방식 :병렬 전송 방식 : 여러 비트의 데이터를 병렬로 동시에 전송한다.버스 아키텍처 : 여러 장치들이 동일한 버스를 공유하여 데이터를 전송하는데 한 번에 하나의 장치만 버스를 사용할 수 있다. 또한 이 버스는 제한된 대역폭(32비트 또는 64 비트 폭, 33MHz 또는 66MHz 클럭속도)을 가진다.주소 기반 메모리 접근 : CPU는 PCI장치와 직접 메모리 주소를 기반으로 통신한다.속도 : 최대 533 MB/s의 속.. 2024. 10. 8. LDD ] printk를 활용한 디버깅 1. printk커널 공간에서는 C 표준 라이브러리를 사용할 수 없으므로 printf와 유사한 printk를 사용한다. 2. printk 사용법사용법은 printf와 거의 동일하며 단순히 printf를 printk로 대체하면 된다.단, %f, %e 등 부동소수점 형식의 포맷지정자는 지원하지 않으며, linux/Documentation/printk-formats.txt에서 사용 가능한 포맷지정자를 확인할 수 있다. ex.printk("num: %d, hex: %x\n", num, hex_num); Typeprintk format specifierint%d / %xunsigned int%u / %xlong%ld / %lxunsigned long%lu / %lxlong long%lld / %llxunsig.. 2024. 10. 6. LDD ] 리눅스 커널 모듈 In-tree building In-tree 빌드란? In-tree 빌드는 커널 모듈을 리눅스 커널 소스 트리 안에 추가하여 커널 빌드 시스템이 커널과 함께 해당 모듈을 빌드하도록 하는 방법이다. 이 방법을 사용하면 사용자는 menuconfig 명령어를 통해 메뉴 형태로 구성된 커널 설정 화면에서 모듈을 선택하거나 선택해제할 수 있다. In-tree building 과정 요약리눅스 커널 소스 트리 내에 모듈 추가로컬 Kconfig 파일 작성로컬 Makefile 작성상위 레벨 Kconfig 파일에 로컬 Koconfig 파일 추가상위 레벨 Makefile에 로컬 Makefile 추가커널 소스 루트 디렉토리로 이동해서 make menuconfig를 이용해 설정 (Optional)커널 소스 루트 디렉토리로 이동해서 모듈 빌드 1. 리눅.. 2024. 10. 4. LDD ] Hello World 커널 모듈 + Makefile 작성법 가장 단순한 예시인 Hello World 모듈로 커널 모듈을 빌드하고 실행해보면서 커널 모듈 작성법을 익혀보자. hello.c /* HEADER SECTION BEGIN */#include/* HEADER SECTION END *//* CODE SECTION BEGIN */static int __init hello_init(void){ pr_info("Hello world\n"); return 0;}static void __exit hello_exit(void){ pr_info("Goodbye world\n");}/* CODE SECTION END *//* REGISTRATION SECTION BEGIN */module_init(hello_init);module_exit(hello_e.. 2024. 10. 2. modprobe와 insmod의 차이 1. modprobe커널 모듈을 로드하는데 사용하는 명령어로 모듈의 이름만 지정하면 /lib/modules/$(uname -r) 경로에서 해당 모듈과 모듈의 의존성을 자동으로 처리해 로드한다.(ex. modprobe e1000e) 2. insmod커널 모듈 파일을 직접 로드하는 명령어로 모듈 파일(.ko)의 경로를 지정하여 로드해야 하며 모듈의 의존성을 자동으로 처리하지 않는다.(ex. insmod /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/intel/e1000e.ko) 2024. 9. 30. 리눅스 커널 모듈 (Linux Kernel Module) 1. Linux Kernel Module리눅스 커널 모듈은 리눅스 커널에 동적으로 로드하거나 언로드할 수 있는 코드 조각으로 커널의 기능을 확장하거나 특정 기능을 추가할 때 사용된다. 커널 모듈은 실행 중인 커널에 동적으로 추가될 수 있어 커널을 재부팅하지 않고도 기능을 추가하거나 제거할 수 있는 장점이 있다. 2. Linux Device Driver디바이스 드라이버는 특정 하드웨어 장치를 제어하기 위해 커널에서 실행되는 소프트웨어이다. 하드웨어 장치와 커널 간의 인터페이스를 제공하여 응용 프로그램이 하드웨어를 제어할 수 있게 하는 용도로 사용되며, 대부분의 디바이스 드라이버는 커널 모듈로 구현된다. 이를 통해 사용자가 원하는 하드웨어를 커널에 동적으로 추가하거나 제거할 수 있다. 즉, 커널 모듈은 .. 2024. 9. 28. BBB ] 커널 업데이트 Host PC 정보 : Ubuntu 16.04 LTS, 64비트 1. 커널 소스 크로스 컴파일을 위한 툴체인 설치호스트는 x86이고 타겟은 ARM 아키텍처이므로 Linaro 사이트에서 크로스 컴파일을 위한 툴체인을 특정 경로에 다운받아 놓는다. https://releases.linaro.org/components/toolchain/binaries/$wget -c https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/arm-linux-gnueabihf/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz 압축 해제$tar xf gcc-linaro-7.5.0-2019.12-x86_64.. 2024. 9. 26. BBB ] Internet over USB 설정 전원공급에 사용되는 USB 케이블을 통해 PC의 인터넷 연결을 공유해서 사용할 수 있는 Internet over USB 기능 활성화 방법 호스트(Linux PC) 설정/etc/sysctl.conf에 다음 문장 주석 해제하여 IP 패킷 포워딩 enable$sudo vim /etc/sysctl.confnet.ipv4.ip_forward=1 ifconfig 명령으로 인터넷과 연결된 인터페이스의 이름을 확인해 둔다.$ifconfig 그 다음은 매번 리부트 시마다 실행시켜야 하는 명령이라 다음과 같이 스크립트 파일로 만들어 두고 실행 권한을 부여한다.$vim usbnet.shsudo iptables --table nat --append POSTROUTING --out-interface [인터페이스명] -j.. 2024. 9. 24. ADC SNR ADC SNR (Signal to Noise Ratio) 신호와 잡음의 비율을 나타내는 SNR은 ADC 회로 상에서 발생하는 노이즈와 신호의 비율을 나타내기 위해서도 사용한다. 즉, 해당 값이 클수록 설계한 ADC 시스템이 신호에 비해 잡음이 얼마나 적고, 신호를 얼마나 정확하게 전달하는지 나타낸다. 이전 글(https://eteo.tistory.com/917)에서도 설명하였는데 SNR은 신호 수준 대 노이즈 수준의 비에 상용로그를 취한 뒤 20을 곱하여 dB 스케일로 표현한다. 단, ADC SNR을 말할 때의 '노이즈'는 양자화 오류만을 고려한 값이다. SNR은 내부 회로의 잡음이나 열 잡음, 전자기 간섭이로 인한 잡음 등 추가 잡음원을 고려하지 않고 양자화 오류만을 고려한 이상적인 값으로 ADC 시스.. 2024. 9. 8. OP Amp 연산증폭기(OP-Amp, Operational Amplifier)는 회로 설계에 따라 다양한 용도로 사용될 수 있다. 몇가지 기본 회로에 대해서 한 번 알아보자. 1. 버퍼 (Buffer) - 구성 : 연산 증폭기의 비반전 입력(+)에 신호를 연결하고, 출력은 반전 입력(-)으로 피드백 된다 - 특징 전압 이득이 1이라서 입력 신호가 그대로 출력으로 전달되는데, 입력 전압과 출력 전압이 동일한 점 때문에 전압 팔로워(Voltage Follower)라고도 부른다.버퍼 회로는 입력 임피던스가 매우 높고 출력 임피던스가 낮아 입력 신호를 다른 회로에 전달할 때 소스 신호에 영향을 미치지 않고 전압 수준을 그대로 유지하면서 전달하는 용도로 사용된다. 2. 비교기 (Comparator) -.. 2024. 9. 6. 이전 1 2 3 4 5 6 7 ··· 33 다음