아래와 같은 m4 빌드 에러는 우분투 18.04 이상 버전을 사용할 경우 발생한다. | ../../m4-1.4.17/lib/freadahead.c: In function ‘freadahead’: | ../../m4-1.4.17/lib/freadahead.c:91:3: error: #error "Please port gnulib freadahead.c to your platform! Look at the definition of fflush, fread, ungetc on your system, then report this to bug-gnulib." | 91 | #error "Please port gnulib freadahead.c to your platform! Look at the definitio..
우분투 20.04 버전의 glibc 버전은 2.31이 설치되어 있으며, 아래의 명령어로 glibc 설치 버전을 확인할 수 있다. $ getconf -a | grep glibc RDK 4.0 레시피 빌드 과정중 rpm에서 아래와 같은 에러가 발생하며, 이것은 호스트 환경의 glibc 버전이 2.30 이상이라면 에러가 발생한다. | x86_64-linux-libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../../rpm-5.4.15/rpmio -I.. -I../../rpm-5.4.15/rpmio -I../../rpm-5.4.15 -I../../rpm-5.4.15/build -I../../rpm-5.4.15/lib -I../lib -I../../rpm-5.4.15/rpmdb -I..
임베디드 회사에 입사하면서 특정 하드웨어를 제어하기 위한 펌웨어을 개발하다보니, Node.js와 같은 최신 기술 동향에 대해선 문외하게 되고 관심밖에 있었으나, 최근 웹 트랜드 및 기술에 관심도 생기고 C언어 하나만으로 부족하다고 생각하여 접근성이 좋은 파이썬을 보기 시작하였다. 파이썬으로 간단한 GUI 프로그램 만들정도 수준이지만, 최종 목표는 Django 또는 Flask를 사용하여 웹어플리케이션을 만드는 것이 목표이다. 우선 파이썬 언어와 친숙해지고 개발 스타일을 익혀야 하기 때문에 회사업무에 필요한 간단한 유틸리티를 파이썬으로 포팅해보려고 한다. 파이썬으로 간단한 프로그램은 만들수 있지만, 이것이 파이썬답게 코딩한 것인지 아닌지 검증을 받을 수 없어 제대로 개발한 것이 맞는지 틀린지 검수할 수 있는..
일반적으로 HDD 배드블럭 검사는 특정 섹터를 읽는 시간이 500ms 이상인 경우 bad block로 평가한다. HDD 배드블럭 검사는 전체 섹터를 검사하기 때문에 오랜 검사 시간을 요구한다. 우분투는 GUI가 아닌 CLI의 badblocks 명령어를 사용하여 HDD bad block 검사가 가능하다. badblocks는 rw 모드로 배드블럭을 확인 할 수 있다. w 모드를 사용할 때 데이터 유실될 수 있으니 옵션을 정확히 확인하여야 한다. -n HDD 데이터를 유지한 상태로, 각 섹터에 대해 rw 실행하여 검사 -w 옵션과 동시 사용 불가 -w HDD 데이터 손실되며, 각 섹터에 임의의 데이터를 기록하며 검사 -s 검사 진행 상태를 출력 -v 배드블럭 검사 결과 출력 일반적으로 -sv 옵션을 사용하여 ..
원격 키보드 & 마우스 기능을 제공하는 수많은 스마트폰 앱이 존재하나 우분투 버전의 서버를 제공하는 앱은 거의 찾을 수 없다. 대부분의 앱의 PC 서버 프로그램은 윈도우와 맥OS만 지원하는 경향이 있다. 상대적으로 리눅스 사용자가 다른 OS에 비해 비교할 수 없을 만큼 사용자 층이 적기 때문에 어쩔수 없다. 그런데, Remote Mouse 앱은 iOS 및 안드로이드 버전을 제공하며, 서버 프로그램도 모든 OS를 지원하고 있다. 즉 우분투에도 서버 설치가 가능하다는 것이다. Remote Mouse를 사용하여 iPhone과 iPad, Android를 무선 모바일 마우스/트랙패드/키보드로 전환하세요. 뉴스 & 팁 최신 기능에 대한 뉴스, 경험 향상을 위한 팁, 그리고 간혹 진행되는 개선 사항 및 새로운 기능에..
타켓보드의 GDB Server에 연결하려면 호스트는 gdb-multiarch 필요하다. gdb-multiarch는 우분투 기본 저장소에 등록되어 있어 PPA 추가없이 설치가 가능하다. $ sudo apt install gdb-multiarch Buildroot GDB server 패키지를 추가해야 하며, 빌드 옵션은 가급적 'debug_level=0'으로 설정하고 '-g' 옵션을 추가하도록 한다. 그리고 방화벽이 설정되어 있다면 GDB가 사용할 포트번호는 허용해야 한다. 참고로, 방화벽 설정은 BR2_PACKAGE_GDB_SERVER 옵션이 추가되면 8844 포트를 허용하였으나, 방화벽 변경 사항 및 GDB 라이브러리 및 바이너리 추가로 rootfs가 변경되어 타겟보드에 rootfs 이미지를 re-wri..
Buildroot는 wget 사용하여 패키지를 다운받으며, 네트워크 연결 타임아웃 값을 3초로 설정하여 네트워크 연결 실패로 인한 빌드 에러가 자주 발생한다. 아래와 같이 타임아웃을 15초로 설정하면 네트워크 상태에 따라 네트워크 연결이 조금 늦더라도 네트워크 연결 실패로 인한 빌드 에러는 발생하지 않는다. --- package/pkg-download.mk(리비전 13107) +++ package/pkg-download.mk(리비전 13117) @@ -364,7 +364,7 @@ # the next time the download is tried. define DOWNLOAD_WGET test -e $(DL_DIR)/$(2) || \ -($(WGET) --no-check-certificate -T 3 -..
배터리 문제로 로지텍 k810 키보드는 지금 사용하고 있지 않지만, 나중에 다시 사용할 때 참고하고자 블로그에 정리한다. 참고로 이글을 작성할 당시 테스트 환경은 우분투 16.04 버전까지 확인하였고, 우분투 18.04 이상 버전에서 정상 동작 하는지 확인이 필요하다. 로지텍 k810 키보드는 F1~F12 기능을 사용하려면, FN 키와 함께 입력을 해야 한다. 기본값이 F1 ~ F12 key 입력이 아닌 function key로 할당되어 있다. 윈도우와 맥OS 환경에서는 SetPoint 프로그램을 사용하여 쉽게 변경이 가능하나 우분투 버전의 SetPoint는 지원하지 않기 때문에 별도의 작업을 해야 한다. Logitech K810 Keyboard Configurator | trial-n-error Rec..
Nord 테마를 기반으로 만들어진 Nord Deep 테마는 Constrast를 높여 코드 가독성도 좋고 눈의 피로도가 적어 Monokai 테마에서 갈아탄 Visual Studio Code 테마이다. Nord Deep 테마의 색상은 대부분 만족하지만, cursor foreground의 색상이 배경색과 비슷하여 가독성이 매우 떨어지는 단점이 있다. 이것 때문에 다른 테마로 변경하는 것도 그래서 주석 색상만 변경할 수 있는지 찾아본 결과, settings.json 파일에서 특정 토큰(키워드)에 대해 색상을 재정의를 할 수 있다. settings.json 파일의 아래 내용을 추가하면 기존 테마에서 주석 색상만 변경할 수 있다. "editor.tokenColorCustomizations": { "comments"..
MIPS 계열 또는 임베디드 시스템 환경에서 개발을 한다면 Host PC 플랫폼과 상관없이 특별한 상황을 제외하고 대부분 32bit 라이브러리 기반으로 개발을 한다. 즉, Host PC 플랫폼과 상관없이 개발 보드는 32bit 라이브러리를 필요로 한다. 이것은 Host PC가 64bit 운영체제가 설치되어 있더라도 개발용 32bit 라이브러리가 함께 설치되어 있어야 한다는 것을 의미한다. 캐노니컬이 모든 32bit 개발 지원을 중단한다는 공지에 맹폭을 맞고 선택적으로 개발 지원을 유지하는 것으로 선회한 만큼 여전히 32bit 라이브러리는 여러 분야에서 사용되고 있다. 하지만 캐노니컬이 전체가 아닌 선택적으로 지원하는 것이기 때문에 일부 패키지 대해서만 한정적으로 지원할 것으로 보인다. 참고로, 이 포스팅..
간단한 테스트 코드를 작성하는 것이 아니라면 가급적 SW 구조 및 모듈화를 생각하면서 코딩하려고 한다. 파이썬 역시 소스 코드를 모듈화하기 위한 방법으로 패키지를 사용한다. 패키지 관계 및 module path를 설명하기 위해 아래와 같은 패키지 구조를 만들어 테스트 하였으며, main.py 파일이 실행 시작 위치이다. 극단적인 구조를 만들기 위해 아래와 같이 모듈간 서로 꼬리를 물며 다른 모듈의 클래스를 생성하고 있다. src 디렉토리에서 main.py 파일을 실행하는데에는 전혀 문제가 되지 않지만, 각 모듈을 검증하기 위해 서브 디렉토리에서 a_module.py, b_module.py 등을 실행하면 모듈을 찾을 수 없다는 에외가 발생한다. 파이썬의 패키지나 모듈을 검색하는 순서는 아래 글을 참고하면 ..
MS에서 제공하는 Python Extension을 설치하여 파이썬 런타임 환경과 인텔리센스 등과 같은 다양한 기능을 사용할 수 있어 파이썬 개발의 효율을 높일 수 있다. Visual Studio Code는 파이썬 코딩 스타일을 실시간으로 검사하고 있으며, 개발 PC에 pylint 패키지가 설치되어 있지 않다면 아래와 같은 메시지가 출력된다. 기본적으로 파이썬은 코딩 스타일을 강제하고 있어, 다른 언어보다 코드 가독성이 높다. 코딩 스타일을 pylint로 검사하기 때문에 pip를 사용하여 설치하도록 한다. $ sudo apt install python3-pip $ pip3 install pylint pylint 설치로 파이썬이 권장하는 코딩 스타일이 아닌 경우 Visual Stdio Code에서 오류 표시..
우분투 환경에서 Visual Studio Code(VSCode)의 전역 설정 파일은 ~/.config/Code/User 디렉토리에 위치한다. 에디터 및 워크벤치와 같은 작업 환경은 settings.json 파일에 저장한다. 그리고 단축키 설정이 가능한데, VSCode는 다양한 플랫폼을 지원하므로 단축키 설정에 대한 동기화 설정은 주의를 해야 한다. 단축키 설정 파일은 keybindings.json 파일에 저장한다. 그리고 프로젝트 단위로 settings.json 파일을 설정할 수 있을 뿐만 아니라 빌드 속성 및 런타임 환경도 설정이 가능하다. 프로젝트 단위 설정 파일은 project_dir/.vsocde 디렉토리에서 settings.json / launch.json / c_cpp_properties.js..
ALi linux_FT_Tool을 사용하여 윈도우 디버그 도구인 WinGDB 없이 우분투 환경에서 ALi Probe를 사용하려면 아래의 패키지를 설치해야 한다. $ sudo apt install libusb-dev libusb-1.0-0-dev ALi Probe는 CYPRESS USB 라이브러리를 사용하기 때문에 ALi Probe 드라이버(ALiProbe_Linux64_Driver.zip)를 설치하도록 한다. $ cd ALiProbe_Linux64_Driver $ sudo ./install.sh 위 명령어 실행으로 ALi Probe 드라이버 설치 및 udev 스크립트가 추가되며, ALi SDK 패키지에 포함된 linux_FT_Tool을 사용하여 우분투에서 바로 Jtag 연결이 가능하다. linux_FT_..
우분투는 커널 및 라이브러리 그리고 패키지 등이 지속적으로 업데이트가 이루어진다. 때에 따라 이런 업데이트 때문에 예상치 않는 개발 중인 모듈을 빌드할 때 에러가 발생하기도 한다. 예전에 작성 글인데, 우분투 16.04는 bison 3.x 버전이 설치되어 있고, 우분투 12.04는 bison 2.7 버전이 설치되어 있다. 우리가 개발중인 것은 bison 2.7 버전에서는 문제 없이 빌드가 되지만, bison 3.x에서는 빌드 에러가 발생하기 때문에 2.7 버전으로 롤백하려면 아래와 같은 방법으로 bison 3.x 삭제한 후 PPA를 통하여 2.7 버전으로 다운그레이드 시키는 것이다. $ sudo apt autoremove bison $ sudo add-apt-repository ppa:salehi/bis..