macOS 개발환경 구성 - nRF / ESP

  • HomeBrew 설치
    • macOS 패키지 관리 도구
    • Command Line for Xcode 함께 설치 됨
      % /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
      % (echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> /Users/gon/.zprofile
      % eval "$(/opt/homebrew/bin/brew shellenv)"
  • CLI 환경 구성
    • oh-my-zsh 프레임워크 설치
      % sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
    • agnoster theme 및 syntax highlight 설치
      % brew install zsh-syntax-highlighting
      % vi ~/.zshrc
      
      ...
      
      ZSH_THMEM="agnoster"
      
      ...
      
      # 맨 마지막 라인에 추가
      source /opt/homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
    • Command Line 개행 명령어
      % vi ~/.oh-my-zsh/themes/agnoster.zsh-theme
      
      ...
      
      # newline() 추가
      prompt_newline() {
        if [[ -n $CURRENT_BG ]]; then
          echo -n "%{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR
          %{%k%F{blue}%}$SEGMENT_SEPARATOR"
        else
          echo -n "%{%k%}"
        fi  
          echo -n "%{%f%}"
          CURRENT_BG=''
      }
      
      ## Main prompt
      build_prompt() {
        RETVAL=$?
        prompt_status
        prompt_virtualenv
        prompt_aws
        prompt_context
        prompt_dir
        prompt_git
        prompt_bzr
        prompt_hg
        prompt_newline # 추가
        prompt_end
      }
    • vim color schema 적용  - jellybeans theme
      % mkdir ~/.vim/colors
      % cp molokai ~/.vim/colors
      
      # vimrc 생성 및 설정 내용
      % vi ~/.vimrc
      colorscheme jellybeans
      
      if has("syntax")
          syntax on
      endif
      
      set number
      set statusline=3
      
      set expandtab
      set tabstop=2
      set shiftwidth=2
      set smartindent
      set hlsearch
      
      set enc=utf-8
      set fenc=utf-8
      set fencs=utf-8,cp949,cp932,euc-jp,shift-jis,big5,ucs-2le,latin1
      
      au BufReadPost *
      \ if line("'\"") > 0 && line("'\"") <= line("$") |
      \   exe "normal g`\"" |
      \ endif
  • Rosetta 설치
    • Intel macOS 환경에서 빌드된 응용프로그램을 M1, M2 환경에서 실행할 수 있는 프레임워크
      % /usr/sbin/softwareupdate --install-rosetta --agree-to-license
  • 파이썬 3.10 설치
    • ESP 빌드 환경의 의존성 문제로 파이썬 3.10 버전을 설치해야 함
      % brew install python@3.10
      % vi ~/.zshrc
      
      ...
      export PATH="/opt/homebrew/opt/pyqt@5:$PATH"
    • 펌웨어 다운로더 및 OTA 이미지 생성을 위한 패키지 설치
      % brew install python-tk@3.10
      % brew install pyqt5
      % pip install sip
      % pip install pynrfjproj
      % pip install intelhex
      % pip install cryptography
      % pip install pyserial
      % pip install pillow
  • 빌드에 필요한 패키지 설치
    % brew install cmake ninja coreutils
    % sudo ln -s /opt/homebrew/opt/coreutils/bin/gsha256sum /usr/local/bin/sha256sum
  • nRF 개발환경
    • nRF58240 빌드 의존성 문제 arm-none-eabi 10.1-2021.10 버전 설치
      % tar xvf gcc-arm-none-eabi-10.3-2021.10-mac.tar.bz2
      % sudo gcc-arm-none-eabi-10.3-2021.10 /opt/arm-none-eabi-10.3-2021.10
      % cd /opt
      % sudo ln -s arm-none-eabi-10.3-2021.10 arm-none-eabi
      
      % vi ~/.zshrc
      
      ...
      export PATH="/opt/arm-none-eabi/bin:$PATH"
      ...
    • 노르딕 J-Link 및 Command Line tool(nrfjprog / mergehex) 설치
  • ESP 개발환경
    • GitHub에서 받은 소스코드에서 external/esp-idf 디렉토리 이동 후, 아래 커맨드 최초 한번은 실행
      % cd <working_dir>
      % cd external/esp-idf
      % ./install.sh esp32
    • 빌드를 위한 환경변수 등록 스크립트 실행 (콘솔 생성시 마다)
      % cd <workding_dir>
      % source load_env.sh
      % make
  • 개발자가 확인되지 않는 응용 프로그램 실행 허가
    % sudo spctl --master-disable # 허용
    % sudo spctl --master-enablie # 불가