목록임베디드 (13)
모든 정리
https://kevinboone.me/linuxfbc.html framebuffer memory - 4byte pixel(blue, green, red, alpha) https://medium.com/@avik.das/writing-gui-applications-on-the-raspberry-pi-without-a-desktop-environment-8f8f840d9867 해상도가 이상할 경우 /boot/config.txt 세팅 framebuffer_width=480 framebuffer_height=320 http://raspberrycompote.blogspot.com/2012/12/low-level-graphics-on-raspberry-pi-part_9509.html puthon framebuf..
[커널] 금오공대 커널강좌 http://www.kocw.net/home/cview.do?lid=53dc1e2a1a7facf1 리눅스 커널 연구회 강좌 https://kernel.bz/boardPost/118679/1?boardPage=2 https://www.kernel.bz/kernel-sched?boardPage=3 커널스터디노트 http://www.iamroot.org/xe/index.php?mid=Note&page=8 라즈베리파이로 배우는 커널 블로그 http://rousalome.egloos.com/ 아무거나 연구소 운영체제 강의 https://www.youtube.com/watch?v=zGBm37kze9I&list=PLHqxB9kMLLaOs2BM2KbuvttBYCgDoFm-5 서울대 커널 강의..
ndevilla/iniparser: ini file parser (github.com) GitHub - ndevilla/iniparser: ini file parser ini file parser. Contribute to ndevilla/iniparser development by creating an account on GitHub. github.com iniparser - c 에서 쓸수 있는 ini 파싱 라이브러리 - read 할때 aaa:bbb 형식으로 section:key 를 조회한다. - 저장할때는 iniparser_dump_ini 함수를 이용하면 loadable ini 형식으로 저장해 준다고 한다. ==> 그런데 문제는 모두다 소문자로 하고 불필요한 주석같은 것들을 모두 지워버린다. ==> ..
https://devanix.tistory.com/169 [gcc] 옵션 정리 [ GCC 전역 옵션] 옵션 설명 -E 전처리 과정 화면에 출력 -S 어셈블리 파일 생성 -c 오브젝트 파일 생성 -v 컴파일 과정 화면에 출력 --save-tmps 컴파일 시 생성되는 중간 파일 저장 -da 컴파일 과정에서 devanix.tistory.com gcc는 내부적으로 여러 프로그램(전처리기, 컴파일러, 링커, etc.)을 실행한다. 1. gcc 자체옵션 2. 전처리기 (cpp0) 옵션 - 소스내에서 사용된 헤더 파일과 define 매크로와 관련된 옵션들이다. 3. c컴파일러 (cc1) 옵션 - c언어 관련 옵션 4. 어셈블리 (as) 옵션 - 어셈플러 관련 5. 링크 (ld) 옵션 - 링크 옵션 ex) -I../s..
자료형이 다른 두 변수를 연산 할 때, 숫자의 범위가 큰 자료형으로 자료형들이 바뀐다. 실수 연산 정수 ==> 실수 컴퓨터에서 정수는 2 의 보수 표현법을 사용해서 나타낸다 2의 보수 부동소숫점 고정소숫점 C 에서 [] 라는 연산자가 쓰이면 arr[3] ==> *(arr + 3) 으로 바뀌어서 처리가 된다 따라서 3[arr] == *(3+arr) == arr[3] == *(arr + 3) ==> 동일한 효과다. strlen - 문자열의 길이를 구하는 함수 - "aaa", a[10] = "aaa" ==> 둘다 문자열의 길이만큼만 리턴한다. sizeof - 연산자로 피연산자의 메모리 크기를 바이트 단위로 계산한다. - "aaa", a[10] = "aaa" => 앞에 것은 포인터의 크기만 알려주고, 뒤의것은 ..
uid - 사용자번호 login name - 사용자이름, uid에 매핑된다. euid(effective user id) - 현재 프로세스가 행사하는 uid setuid 1. a유저가 생성한 파일 a1 이 있다. 2. a유저만 리드 권한을 주었다. 3. b유저는 a1파일에 대하여 리드 권한을 행사 할 수 없다. 4. a1파일에 setuid bit를 1로 설정하면 5. b 유저가 a1파일을 실행될때 a1파일의 euid 가 a유저가 되어 권한을 행사 할수 있게 된다.
문자열 선언종류 1. 문자열을 메모리 어딘가에 읽기 전용으로 생성하고 그 주소만 가져온다. 쓰기 불가 char *s1 = "Hello"; 2. 넉넉하게 할당, 쓰기도 가능 char s1[10] = "Hello"; 3. 문자열을 할당할 때 배열의 크기를 생략하는 방법, 딱맞게 할당 , 쓰기도 가능 char s1[] = "Hello";
시리얼통신 모드 1. canonical (정식) - 한 줄 단위로 처리 - NL(New Line, ASCII는 LF), EOF(End of File), EOL(End of Line) 로 문자열 종료구분 --> CR(Carriage Return) 문자는 디폴트 세팅에서 한 줄의 종료 문자로 인식되지 않는다. 1.1 동기 1.2 비동기 2. non canonical (비정식) - 한 번 읽을 때마다 정해진 크기의 문자만을 읽어낼 수 있다. - 타이머를 두어서 일정 시간까지 read()가 리턴하지 않는 경우 강제 리턴을 할 수 있다. 2.1 동기 - c_cc[VTIME]과 c_cc[VMIN] 두 가지를 설정해야 한다. - c_cc[VTIME]은 타이머의 시간을 설정하고, Time-out 값은 TIME * 0...
멀티플렉싱 - 하나의 프로세스가 여러개의 IO를 처리해 준다는 개념 select 함수 - 하나의 프로세스에서 select 함수를 통해 여러개의 파일 디스크립터를 감시 할 수 있다. 1. 시리얼 통신 테스트를 하는데 왜 계속 select 함수에서 0을 리턴할까? select(1, &testfds, 0, 0, (struct timeval*)&timeout) - 1개 파일만 사용할 예정이니 관찰할 파일갯수를 1이라고 넘겨주면 되겠지? --> 문제는 fd_set 구조에 0번부터 차례대로 관찰할 파일 번호가 정의 되어있다는 것이다. 0번 파일 디스크립터를 관찰한다면 괜찮지만 다른 소켓이나 파일이라면 관찰대상에서 빠지게 된다. 그래서 아무리 기다려도 항상 0을 리턴하면서 타임아웃 되게 된다. --> FD_SETSI..
[해외] Linux Serial Ports Using C/C++ https://blog.mbedded.ninja/programming/operating-systems/linux/linux-serial-ports-using-c-cpp/ Linux Serial Ports Using C/C++ A walk-through on how to configure serial ports correctly in Linux. blog.mbedded.ninja Example serial code for Linux and macOS in C https://www.pololu.com/docs/0J73/15.5 Pololu - 15.5. Example serial code for Linux and macOS in C User’s..