objdump: 라이브러리나 ELF(Executable and Linkable Format) 형식의 파일을 어셈블리어로 출력 as: 어셈블러 ld: 링커 addr2line: 주소를 파일과 라인으로 출력 nm: 오브젝트 파일의 심벌을 출력 readelf ELF 파일의 내용을 출력 objdump를 활용해 리눅스 커널의 오브젝트 파일인 vmlinux의 원하는 부분만 어셈블리어로 출력해 볼 수 있다. 앞으로 이런식으로 커널 어셈블리 코드를 확인한다. vmlinux와 System.map 파일을 재료로 사용한다. - vmlinux : 리눅스 커널을 포함하는 오브젝트 파일 - System.map : 커널에 의해 사용되는 심볼테이블 # cp ./out/lib/modules/4.19.127-v7+/build/vmlinu..
분류 전체보기
M1 Mac - (Ubuntu 18.04 docker image) - cross compile & scp - RPI 참고로 RPI3와 우분투 도커 이미지 시스템 정보는 다음과 같다. rpi Linux raspberrypi 4.19.127-v7+ #1 SMP Sun Dec 19 00:43:20 KST 2021 armv7l GNU/Linux Docker Linux d736e208743c 5.15.49-linuxkit #1 SMP PREEMPT Tue Sep 13 07:51:32 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux [2023/7/30 업데이트] m1에서 docker 생성 시 platform을 설정하지 않으면 aarch64 ubuntu가 만들어진다. 아래와 같이 --pl..
예쁜 터미널은 개발자의 마음에 안식을 가져다 줍니다. 매번 개발 환경을 설정할 때마다 새로 찾아보기가 번거로운데 이 기회에 정리합니다. oh-my-zsh 설치 sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" 플러그인 설치 # zsh-syntax-highlighting git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting # zsh-autosuggestions git clone https://githu..
진행은 느릴 테지만 언제까지고 지속해보고 싶은 개인적인 공부를 시작해보려고 한다. 이 포스팅은 다소 '오버'로 보일 수는 있으나 그 시작을 알림과 동시에, 초심을 기억하고자 남기는 글이다. 임베디드 개발자라면 리눅스 커널을 정말 잘 이해하고픈 욕심이 다들 있을 것이다. 하지만 그 길은 대개 고되고 어렵고 또 외로워서, 많은 사람들은 적당한 선에서 타협하고 중간에 공부를 포기하고 만다. 이것을 비단 개인의 의지박약 때문이라고만 치부할 수 없는 이유는 우리 개발 업계 환경에 있기도 하다. 제품 통합(Integration)과 양산에 모든 에너지를 쏟다 보니 업체 솔루션을 가져다가 포팅하기 바쁘거나, 이슈가 생기면 이때도 역시 업체를 푸쉬해서 이슈 클로징을 빨리 시키는 것만이 훈장처럼 여겨지기도 한다. 이런 인..

UART 일반적으로 TX/RX 2wire이고 hw flow control을 지원하는 경우 4wire이다. 2wire인 경우 start/stop bit를 통해 시작과 끝을 구분하고 baudrate 마다 1bit씩을 읽는다. 4wire의 경우 용어가 무척 헷갈리게 만들어놨는데 RTS(Request to Send: 나에게 데이터롤 보내줘 또는 나 받을 준비 됐어) CTS(Clear to Send: 어 알았어. 이제 보낼게) 이다. 순서상 RTS가 active low가 먼저 되어야 CTS가 그에 따라 low가 되고 TX 할 수 있는 상황이다. 두 경우 모두 asynchronous, full duplex 방식이라고 할 수 있다. SPI I2C처럼 slave address가 없는 대신 slave device 갯수만..