전체 글

전체 글

    PowerShell 명령 조금 더 쉽게 입력하기(Alias 설정)

    길이가 긴 명령어를 입력하기 번거로울 때 명령어를 축약하거나 다른 이름(별칭, alias)으로 호출하고 싶을 때 사용할 수 있는 방법입니다. alias 설정 확인 > Get-Alias 이 명령으로 이미 지정된 alias 설정값을 확인할 수 있습니다. alias 설정 하기 > Set-Alias [별칭] [대상 명령] 위와 같은 형식으로 alias를 설정할 수 있습니다. 저의 경우 Vim을 쓰다가 최근 NeoVim으로 넘어왔는데, nvim이 아니라 습관적으로 vim을 입력하곤 합니다. 따라서 vim이나 vi라고 입력하여도 nvim이 실행되도록 설정하였습니다. > Set-Alias vim nvim > Set-Alias vi nvim 이제 제대로 별칭이 지정되었는지 확인해보겠습니다. > Get-Alias .....

    [STM32] 레지스터 직접 접근 방식으로 UART 통신 예제 구현하기

    HAL 드라이버 없이, 레지스터 접근만으로 UART 통신 예제를 만들었다. 처음 시작할 때는 어디서부터 시작해야 할 지 몰라 막막했고, 하나하나 이해하면서 진행하느라 완성하는 데 약 2시간이 걸렸다. 전체 흐름을 이해하니 생각보다 별것 아니라는 것을 알게 되었다. 레지스터에 직접 접근하는 것도 익숙해졌고, 각 페리페럴에 공급될 클록 신호가 만들어지는 과정도 살펴볼 수 있었다. 프로젝트를 만들 때 HAL 드라이버를 포함하지 않았기 때문에 접근할 레지스터 주소를 데이터 시트를 확인해가며 직접 입력하여 만들었다. Reference Manual(RM0008)의 3.3 Memory Map을 참고하면 좋다. 이번 예제에 필요한 레지스터 주소는 아래와 같다. (사실 USART1은 사용하지 않는데 모르고 만들었다. 아..

    Windows 터미널에서 WSL 시작 경로 변경하기

    Windows 터미널에서 WSL 시작 경로 변경하기

    시작 경로를 변경하기 위한 설정값 Windows 터미널에서 WSL을 시작하면 시작 경로가 윈도 기준으로 C:\Users\로 되어있습니다. 매번 리눅스 디렉터리의 Home 경로로 변경하는 것이 번거로워서 시작 경로를 바꿀 수 있는 방법을 찾아보았습니다. 다행히 Microsoft 공식 문서에서 방법이 설명되어 있었습니다. 설정 파일에 아래의 값을 추가하면 시작 경로를 자신의 계정의 Home 경로로 설정되는 것을 확인하였습니다. { "startingDirectory" : "//wsl$/Ubuntu/home/", } Windows 터미널 설정 방법을 모른다면 이렇게 하세요. Windows 터미널의 설정을 위해서는 상단 탭에서 아래 방향 꺾쇠 버튼①을 클릭하고 펼쳐진 메뉴에서 설정②을 클릭하면 됩니다. Windo..

    키보드로 EOF값 입력 방법

    TCPL의 예제 1-6을 풀던 중 EOF(End of file)를 입력해야 하는 상황이 생겼습니다. 키보드로 EOF를 입력해야 할 때는 Ctrl+D를 누르면 되는 것을 확인하였습니다. 참고로, 리눅스 환경에서 확인하였습니다. 윈도나 맥에서도 똑같이 동작하는지는 확인하지 않았습니다.

    [다시 C언어] 함수 반환형, 안적어도 될까?

    Keringhan의 "The C Programming Language"에 실려있는 예시 코드들을 보면 main 함수 반환형이 적혀있지 않은 것을 발견하였습니다. 아래 처럼요. main() { ... } 평소 같았으면 저자가 코드를 빠트렸나보다 생각했었을 것입니다. 그러나 내용을 충분히 곱씹으며 봐야 한다는 keringhan의 책이어서 혹시나 하는 마음으로 책 내용과 똑같이 반환형 없이 코드를 작성하고 빌드해 보았습니다. 결과는 아래와 같은 경고 문구가 출력되었습니다. Ex_01-03.c:3:1: warning: return type defaults to ‘int’ [-Wimplicit-int] 3 | main() | ^~~~ 그렇습니다. 이것은 경고(warning)이지 오류(error)가 아닙니다. 따라..

    [다시 C언어] 시작하며.

    왜 다시 C언어를 공부할까? RTOS를 만들어보는 공부를 시작하면서 잘 모르던 C언어 문법을 만나게 된 것이 계기입니다. 구조체를 이용한 비트 필드 표현이나 가변 인자 함수가 있다는 것을 알게 된 것도 최근 일이지요. 저는 C언어를 그래도 좀 안다고 생각했는데 너무 얕게 알고 있었던 모양입니다. 그래도 개발을 하면서 밥을 벌어 먹고사는 사람이 자신의 주력 언어는 자신 있게 '잘 안다'고 말할 수 있어야 하지 않을까 생각했습니다. 그래서 다시 C언어를 공부하기 시작했습니다. 무슨 책을 참고하지? 제가 처음 C언어를 접하게 된 것은 2013년 대학원 생활을 시작하면서였습니다. 예술과 공학을 융합한 학과에서 '비전공자' 신분으로 개발 공부를 시작하였지요. 그때는 많은 C언어 입문 ..

    C언어에서 가변 인자 함수를 만들려면?

    C언어에서 그게 되는거였어? 최근에 알게 된 사실인데 C언어도 가변 인자 함수를 사용할 수 있습니다. 가변 인자 함수가 무엇이냐 하면 함수의 인자(인수) 개수가 고정되어있지 않은 것을 말합니다. C언어라고 하면 오래된 만큼 조금 고리타분하다는 인상을 받고 있었습니다. 그래서 그렇게 유연한 기능이 있다는 것을 생각지도 않고 있었지요. 그런데 가만히 생각해보면 평소에 가변 인자 함수를 아주 흔하게 사용하고 있었습니다. 바로 printf()함수이지요. 첫 번째 인자에 출력하고자 하는 문자열 형식(template)이 들어가고 그 이후부터는 앞서 정한 형식에 들어가는 변수들을 나열하지요. 문자열 형식을 어떻게 작성했느냐에 따라 뒤따라오는 인자가 0개가 될 수도 있고 2개, 3개, 10개도 될 수 있습니다. 가변 ..

    ABI, EABI 그 의미를 이해하고 툴 체인 이름까지 해석하기

    ABI와 EABI, 그게 뭐야? 아무 생각 없이 공부 자료를 보다가 문득 'ABI'의 의미를 알아야겠다는 생각이 들었습니다. 이에 대해 알아보고 정리한 자료입니다. ABI 'Application Binary Interface'의 약자입니다. 바이너리 수준의 인터페이스 규약을 말합니다. 서로 다른 컴파일러가 소스 코드를 컴파일하더라도 오브젝트 파일끼리 링킹이 될 수 있도록 합니다. EABI 임베디드 환경의 ABI를 의미합니다. ABI와 EABI의 차이점 이런 것들이 있습니다. 권한 명령이 응용 프로그램 코드 안에서 실행됩니다. 동적 링크 요구하지 않으며 아예 허용하지 않을 수도 있습니다. 메모리 저장을 위해 더 작은 스택 프레임을 가집니다. 위에 적힌 차이점 중에서 가장 크게 ..