본문 바로가기

IT56

LLVM clang IR(*.ll) 변환 Case 1: $ clang clang -c -emit-llvm main.c -o main.bc $ llvm-dis main.bc Case 2: $ clang -S -emit-llvm -Xclang -disable-O0-optnone main.c 2020. 9. 11.
LLVM basic block call flow graph LLVM에서 call flow graph를 생성하기 위해 바로 보거나, dot 파일 등으로 저장할 수 있다. dot 파일을 위해 graphviz를 설치한다 $ sudo apt install graphviz 이후 LLVM 으로 cfg 를 생성한다. bitcode 생성 $ clang -c -emit-llvm main.c -o main.bc ll 생성 $ llvm-dis main.bc cfg 생성 $ opt -analyze -dot-cfg main.ll 코드에 따라서 1개 이상의 .dot 파일이 생성된다. 만약 x11 환경이라면 -dot-cfg 옵션 대신에 -view-cfg 옵션을 통해 바로 cfg 를 볼 수 있다. dot 파일을 직접 볼 수 없으므로 png 로 변경한다. $ dot -Tpng -o main... 2020. 9. 7.
VS Code에서 remote ssh로 라즈베리 파이 연결하기 기존에는 WinSCP와 Putty를 사용해서 개발을 진행했었는데, 불편함을 느끼던 와중에 VS Code에서 remote ssh를 사용할 수 있는 것을 알게 되었습니다. 설치 방법은 VS Code에서 Extention을 설치하고 연결만 하면 될 정도로 간단합니다. 1. SSH Extension 설치 Extension 탭에서 'Remote - SSH' 혹은 'Remote developemnet'를 설치합니다. 2. SSH 설정 설치가 되면 Remote를 위한 탭이 생성됩니다. 해당 탭을 누르고 SSH TARGETS에서 '+ 버튼'을 눌러 장치를 추가합니다. 아래의 창에 보이는 것과 같이, 'ssh 계정명@서버 IP -A'를 입력합니다. 서버 IP와 계정이 올바르면 아래와 같이 SSH 설정 파일을 어디에 저장.. 2020. 9. 2.
라즈베리파이 현재 클럭 프리퀀시 확인 라즈베리파이에서 현재 CPU 클럭 프리퀀시(frequency)를 확인할 때에는 아래의 명령을 사용한다. $ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq 위 명령어는 cpu0 만 확인하는 것으로, 한 번에 다수의 cpu의 클럭 확인은 중간에 cpu0 대신에 cpu*를 사용한다. $ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq 2020. 8. 21.
라즈베리 파이3 시리얼(Uart) 설정 라즈베리 파이 3과 PC의 시리얼 통신을 하기 위해 GPIO의 4번(GND), 8번(TXD)과 10번(RXD) 핀에 USB to TTL 케이블을 연결합니다 (자세한 핀 맵은 https://www.raspberrypi.org/documentation/usage/gpio/ 을 참고하시면 됩니다). 라즈베리파이와 케이블을 연결할 때는 케이블의 TXD를 라즈베리의 RXD에, RXD를 TXD에 각각 교차해서 연결해야 합니다. 저는 PL2303TA 칩을 사용한 USB to TTL 케이블 (https://www.devicemart.co.kr/goods/view?no=1164522)을 사용하였습니다. (참고로 저는 해당 케이블을 5개 정도 구매했는데 2개 정도는 불량이었습니다.. 구매하신다면 여분의 케이블을 구매하시는.. 2020. 8. 6.