반응형 컴퓨터/Linux25 [Linux C] TCP 서버 프로그램 Linux TCP 서버의 C 프로그램 코드는 다음과 같다. // 소켓 생성 socket_desc = socket(AF_INET, SOCK_STREAM, 0); if (socket_desc == -1) printf("Could not create socket"); server.sin_family = AF_INET; server.sin_addr.s_addr = INADDR_ANY; server.sin_port = htons(8888); int option = 1; setsockopt(socket_desc, SOL_SOCKET, SO_REUSEADDR, &option, sizeof(option)); // Bind if(bind(socket_desc,(struct sockaddr *)&server, sizeof.. 2022. 10. 5. Raspberry Pi UART 교환 라즈베리파이는 2개의 UART가 있다. ls -l /dev 명령어로 다음과 같이 확인할 수 있다. serial0 -> ttyS0 serial1 -> ttyAMA0 serial0은 GPIO14와 GPIO15에 연결되어 있다. serial1는 내부 블루투스에 연결되어 있다. ttyS0는 GPU 클럭을 사용하고 ttyAMA0에 비해 성능이 좋지 않다. GPIO14와 GPIO15에 ttyAMA0을 사용하기 위해서는 ttyS0와 ttyAMA0를 교환해야 한다. ttyS0와 ttyAMA0를 교환하는 방법은 다음과 같다. 1. sudo nano /boot/config.txt 2. 마지막줄에 다음 중 하나를 입력하고 저장한 후 나온다. dtoverlay = pi3-disable-bt dtoverlay = pi3-min.. 2022. 9. 23. Raspberry Pi UART 사용 (C 프로그램) 라즈베리파이에서 UART를 사용하는 C 코드는 다음과 같다. #include #include #include // Configure int uart0_filestream = -1; uart0_filestream = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY); //Open in non blocking read/write mode if (uart0_filestream == -1) { printf("Error - Unable to open UART. Ensure it is not in use by another application\n"); } struct termios options; tcgetattr(uart0_filestream, &options); optio.. 2022. 9. 22. Raspberry Pi UART 설정 라즈베리파이에서 UART를 사용하기 위해 설정하는 방법은 다음과 같다. 1. sudo raspi-config 입력 2. "5 Interfacing Options" 선택 3. "P6 Serial" 선택 4. login shell No 선택, serial port hardware Yes 선택 5. 다음 명령으로 확인 ls -l /dev serial0 -> ttyS0 serial1 -> ttyAMA0 6. 다음 명령을 입력하면 UART로 데이터가 나간다. echo "12345" > /dev/ttyS0 ☞ 라즈베리파이 UART 2022. 9. 21. Raspberry Pi의 GPIO 사용 (직접제어) 라즈베리파이에서 GPIO를 사용할 때 라이브러리를 사용하지 않고 직접제어하는 방법은 다음과 같다. //#define BCM2708_PERI_BASE 0x20000000 // Pi3 이전 모델 #define BCM2708_PERI_BASE 0x3F000000 // Pi3 #define GPIO_BASE (BCM2708_PERI_BASE + 0x200000) #include #include #include #include #include #define PAGE_SIZE (4*1024) #define BLOCK_SIZE (4*1024) int mem_fd; void *gpio_map; volatile unsigned *gpio; #define INP_GPIO(g) *(gpio+((g)/10)) &= ~(7 2022. 9. 21. Raspberry Pi 설치 방법 Raspberry Pi를 설치하는 방법은 다음과 같다. 1. 여기에서 Imager 프로그램을 다운받아 설치한다. 2. Imager를 실행한다. 3. SD 카드를 꽂은 후 운영체제와 저장소를 선택하고 쓰기를 클릭한다. 4. SD 카드에 쓰기가 끝나면 SD 카드를 라즈베리파이에 꽂고 파워를 켜면 라즈베리파이가 부팅이 된다. 5. 끝 2022. 9. 20. Raspberry Pi 윈도우 원격 데스크탑 제어 Raspberry Pi에서 원격 제어를 위해 VNC를 사용할 수 있지만 윈도우 원격 데스크탑을 사용할 수도 있다. 다음과 같은 순서로 한다. 1. 최신 업데이트를 한다. sudo apt-get update sudo apt-get upgrade 2. xrdp를 설치한다. sudo apt-get install xrdp 3. 라즈베리파이 IP를 확인한다. hostname -I 4. 윈도우에서 원격 데스크탑을 실행한 후 라즈베리파이 IP를 입력하여 접속한다. 5. 라즈베리파이 id와 pw를 입력한다. 6. 끝 2022. 9. 20. Raspberry Pi의 GPIO 사용 (wiringPi 라이브러리) ------------------------------------------------------------- 현재 wiringPi는 잘 안된다. ------------------------------------------------------------- 라즈베리파이에서 GPIO를 사용하기 위해 하드웨어를 직접 엑세스하는 방법도 있지만 wiringPi 라이브러리를 이용하는 방법도 있다. 1. wiringPi 설치 다음의 순서로 wiringPi를 설치한다. sudo apt-get install git-core sudo apt-get update sudo apt-get upgrade git clone git://git.drogon.net/wiringPi cd wiringPi ./build gpio -v :.. 2022. 9. 20. 라즈베리 파이에서 2개이상의 UART 사용하기 라즈베리 파이에는 기본적으로 1개의 UART 포트를 제공한다. 라즈베리 파이에서 2개 이상을 사용하기 위해서는 다음과 같은 방법이 있다. 1) USB-UART 컨버터 사용하기 2) SPI/I2C UART 컨버터 사용하기 ☞ 라즈베리 파이 SPI 속도 ☞ 라즈베리 파이 핀 배열 ☞ USB-UART 변환 IC ☞ SPI-UART 변환 IC 2021. 12. 15. 라즈베리파이 종료 명령어 라즈베리파이를 종료하기 위한 명령은 다음과 같다. sudo shutdown -h now 재부팅 명령어는 다음과 같다. sudo reboot 라즈베리파이를 종료 명령 없이 파워를 꺼면 sd 카드가 깨질수 있다. 2021. 10. 6. 리눅스 mutex 프로그래밍 리눅스에서 뮤텍스(mutex)는 다음과 같이 사용한다. #include // mutex 선언 pthread_mutex_t mutex; // mutex 초기화 pthread_mutex_init(&mutex,NULL); // mutex 해제 pthread_mutex_destroy(&mutex); // mutex lock pthread_mutex_lock(&mutex); // mutex unlock pthread_mutex_unlock(&mutex); mutex를 선언하고 초기화한후 lock이 필요한 지점에서 pthread_mutex_lock을 실행하고 빠져나올 때는 pthread_mutex_unlock을 실행한다. pthread_mutex_lock을 실행했을 때 다른 쓰레드가 lock하고 있으면 다른 쓰레드.. 2021. 10. 1. 리눅스 ls 명령어 ls는 파일과 디렉토리 리스트를 출력하는 명령어이다. ls -a : 모든 파일과 디렉토리를 표시하다. ls -l : 파일/디렉토리 리스트를 자세히 출력한다. ls -l에서 앞에 나오는 10자리에서 첫글자는 파일(-), 디렉토리(d), 링크(l)를 나타낸다. 나머지 9글자는 파일/디렉토리에 대한 권한을 나타낸다. 2021. 9. 28. 라즈베리파이 초기 아이디와 암호 라즈베리파이 초기 아이디는 pi이고 암호는 raspberry이다. 2021. 9. 28. 리눅스 명령어 결과 저장 리눅스에서 명령어 결과를 파일로 저장하는 방법은 다음과 같다. ls > result.txt '>' 기호를 사용하면 ls의 결과값이 result.txt 파일에 텍스트로 저장된다. 이 방법은 에러가 나지 않았을 때 유효하고 명령어 실행 결과 에러가 났을 때는 저장되지 않는다. 에러 결과값까지 저장하려면 다음과 같이 사용해야 한다. ls &> result.txt 2020. 5. 3. 리눅스 로그 보기 리눅스에서 로그 파일을 실시간으로 계속 확인할 수 있는 명령어는 tail 이다. 다음과 같이 -f 옵션을 주면 파일의 마지막 10줄을 실시간으로 계속 출력한다. tail -f logmsg.txt 실시간 출력을 종료하려면 Ctrl+c를 누른다. 2020. 5. 3. 슈퍼 컴퓨터 운영체제 현재 대부분의 슈퍼 컴퓨터에 사용되는 운영체제는 리눅스 계열의 Rocks Cluster Distribution이다. 2000년 이전의 슈퍼 컴퓨터는 유닉스 운영체제를 사용했지만 이후 리눅스가 점유율을 넓혀 지금은 대부분의 슈퍼 컴퓨터가 리눅스를 사용한다. Rocks는 처음에는 Red Hat Linux로 기반으로 만들었지만 이후 CentOS 기반으로 바뀌었다. 슈퍼 컴퓨터는 각각의 컴퓨터의 특성이 다르기 때문에 그에 맞는 운영체제를 개발해야 한다. 리눅스는 오픈소스이기 때문에 각 슈퍼 컴퓨터에 맞게 수정하여 사용할 수 있다. 리눅스는 무료이기 때문에 수 많은 컴퓨터로 구성된 병렬 컴퓨터의 운영체제 라이센스 비용을 절약할 수 있다. http://www.rocksclusters.org/ Rockscluster.. 2020. 3. 29. 서버에 가장 많이 사용되는 리눅스 배포판 순위 2020년 기준 서버에 사용되는 리눅스 배포판의 순위와 점유률은 다음과 같다. 1. Ubuntu 38.2%2. Debian 22.1%3. CentOS 17.7%4. Gentoo 2.3%5. Red Hat 2.2% 2020. 3. 29. 리눅스 sudo 명령어 sudo은 원래 superuser do을 약자였지만 현재는 substitute user do의 약자이다. sudo은 다른 사용자로 명령을 실행할 수 있도록 한다. 디폴트는 root 사용자로 명령을 실행한다. 2020. 3. 29. 리눅스의 apt와 apt-get의 차이 apt를 실행하면 옵션에 따라 apt-get 또는 apt-cache가 실행된다. 예를 들면 apt install은 apt-get install과 동일한 동작을 하고 apt search를 실행하면 apt-cache search가 실행된다. 그리고, apt는 인스톨 진행 상태를 볼 수 있는 등 apt-get 보다 더 편하게 사용할 수 있다. 2020. 3. 29. 리눅스 배포판 CentOS CentOS는 RHEL (Red Hat Enterprise Linux)와 호환되는 리눅스 배포판이다. CentOS는 2004년 출시되었다.2019년 9월에 7.7-1908 버전이 나왔다.2020년 1월에 9.1.1911 버전이 나왔다. CentOS는 PC 보다는 서버용으로 사용하기 적합하다. https://www.centos.org 2020. 3. 26. 리눅스 쉘 스크립트 작성 방법 리눅스의 쉘 스크립트는 MS-DOS의 batch 파일과 같은 것으로 스크립트 내의 명령이 순서대로 실행된다. 다음과 같은 파일 스크립트 파일을 텍스터 에디터를 이용하여 만든다. 파일 이름은 myscript.sh로 한다. #!/bin/bash # 주석 echo "Hello" 다음과 같이 실행하여 실행 권한을 부여한다. chmod 755 myscript.sh 다음과 같은 명령으로 스크립트를 실행한다. ./myscript.sh 2020. 3. 8. 리눅스 GUI 환경에서 파일 복사, 삭제, 이동 등이 안될 때 리눅스의 GUI 파일 관리자 프로그램에서 파일 복사, 삭제, 이동 등을 할 때 Permission Denied 메세지가 뜨고 실행이 안될 때는 파일 관리 프로그램을 Root 권한으로 실행하면 된다. 예를 들면, PCMan File Magnager를 Root 권한으로 실행시키기 위해서는 터미널에 다음과 같이 입력하면 된다. gksudo pcmanfm 여기서, sudo가 Command Line에 사용된다면 gksudo는 GUI 프로그램에 사용된다. pcmanfm은 PCMAn File Manger 프로그램의 실행파일 이름이다. 우분투에서는 다음과 같이 입력한다. gksudo nautilus 2019. 10. 27. 실시간 리눅스 Linux는 원래 RTOS가 아니다. Real-time Linux는 Linux의 RTOS 버전이다. Real-time Linux와 RTLinux는 서로 다른 종류이다. Real-time Linux를 사용하지 않고 일반 Linux를 RTOS 처럼 사용하기 위해서는 다음과 같이 Patch 해야 한다. https://wiki.linuxfoundation.org/realtime/documentation/howto/applications/preemptrt_setup Ubuntu에서 Real-time patch 하는 방법 https://stackoverflow.com/questions/51669724/install-rt-linux-patch-for-ubuntu https://ubuntuforums.org/showt.. 2019. 8. 8. 리눅스 SSH 연결 상태 확인하는 방법 외부에서 SSH로 연결하였을 때 연결된 세션을 확인하기 위해서는 터미널에 다음과 같이 입력한다. sudo netstat -tnpa | grep 'ESTABLISHED.*sshd' 2018. 8. 26. Linux 보드의 종류 - 비글본, 라즈베리 파이, 아두이노 윤 리눅스 보드 종류 보드 종류 특 징 BeagleBone TI에서 만든 리눅스 보드 출시 : 2008년 오픈 소스 회로도 공개 보드 종류 : BeagleBone, BeagleBone Black, BeagleBone X15 등 SOC : TI의 AM5728, AM3358/9 등 CPU : ARM Cortex-A8 또는 A15 동작 주파수 : 720~1500 MHz 홈페이지 : https://beagleboard.org Raspberry Pi Raspberry Pi Foundation에서 만든 Linux 보드 출시 : 2012년 소스 비공개 회로도 비공개 보드 종류 : Pi Zero, Model A, Model B SOC : Boradcom의 BCM2835, BCM2837 등 동작 주파수 : 700 ~ 140.. 2018. 3. 18. 이전 1 다음 반응형