[라즈베리파이] 인터럽트 백터 어셈블리 코드 및 동작 분석
By Guillermo Austin Kim | 2018년 2월 13일 |
인터럽트가 발생하면 __irq_svc 벡터로 점프합니다. 물론 해당 프로세스는 하던 일을 멈출 수 밖에 없는데요.그럼 인터럽트 벡터에서 어떤 동작을 하는 지 어셈블리 코드를 분석하겠습니다. #__irq_svc 코드 리뷰[1]: 스택 공간을 0x4C 바이트만큼 확보합니다. [2]--[3]: 현재 실행 중인 레지스터 R0부터 R14, PC까지 스택에 푸쉬합니다. [4]: 0x80705398 메모리 공간에 있는 메모리 덤프 0x80c089ac를 로딩합니다. 0x80c089ac는 handle_arch_irq란 함수 포인터 역할을 하는 변수인데 이 변수에는 gic_handle_irq가 지정되어 있습니다.crash> p -x handle_arch_irqhandle_arch_irq = $3 = 0xc01
리눅스 민트 17.3에서 인텔 I218-LM 이더넷 드라이버 설치
By 반달가면 | 2017년 1월 10일 |
작업용으로 사용하기 위해 HP Z440 워크스테이션에 우분투 14.04 LTS 기반의 배포판인 리눅스 민트 17.3을 설치하였으나, 네트워크 아답터가 제대로 동작하지 않는 문제가 발생했다 -_-; 먼저 이더넷 아답터 종류를 알아보았다. 터미널창에서 아래와 같이 입력 # PCI 장치 목록에서 네트워크 아답터 확인 lspci | grep Ethernet 결과를 보니 인텔 I218-LM 기가비트 이더넷 어댑터다. 인터넷을 한참 뒤져 본 결과, 해결 방법을 찾았다. 인텔에서 드라이버를 다운로드해서 설치해야 한다. 다른 USB 네트워크 아답터를 이용하던가 해서 먼저 어떻게든 인터넷에 연결은 해야 한다. 연결이 되었으면 우선 build essential 패키지를 설치. sudo apt-ge
리눅스에서 cp 명령으로 복사를 하다가 중단한 것을 나중에 재개하는 문제
By 반달가면 | 2019년 3월 12일 |
cp 명령으로 복잡한 디렉토리 구조의 엄청 많은 파일을 복사하던 중에 시간이 없어서 중단하고 내일 다시 이어서 복사를 진행해야 하는 상황이 벌어졌을 경우에 대한 내용이다. 가끔 이런 일이 벌어지는 관계로 작업 절차를 정리해 두기로. # ~/src 디렉토리의 내용 전체를 ~/backup 디렉토리로 복사 cp -r ~/src ~/backup 예를 들어 ~/src 디렉토리를 ~/backup 디렉토리 하위에 복사를 하고 있던 중에 ctrl-c 눌러서 중단을 했는데, 이미 복사된 것들을 다 지우고 다시 처음부터 복사하자니 그동안 들인 시간이 아깝다. 문제는 파일이 워낙 많다 보니, 대체 어느 파일을 복사하다가 중간에 끊어졌느냐를 찾아야 한다는 점. find 명령을 이용해서 ~/backup 하위에서
[bash: function] 함수의 반환값을 변수에 할당할 때 유의할 점
By 반달가면 | 2017년 9월 7일 |
셸 스크립트에서 함수(function)를 사용하다가 간혹 실수할 때가 있어서 정리해 두기로. 우선 함수에 대한 기본적인 내용은 이전 게시물을 참고하자. 여기로 함수에서 뭔가 작업을 한 결과를 변수에 저장하는 경우를 생각해 보자. 함수 test_func에서 도출된 결과값을 변수 test_val에 저장한다면 아래와 같은 모양일 것이다. # 함수 정의 function test_func() { ... } # 결과값을 변수에 할당 test_val=`test_func` 위와 같이 역따옴표(`)를 이용해서 함수를 호출하고 그 결과를 변수에 할당할 경우, 함수 안에서 해당 결과값은 echo 명령으로 출력하도록 해야 한다. 개인적으로 아무 생각 없이 echo 대신 return을 쓰는 바람에 오동작