:::: MENU ::::

Simplicity Studio 5 – 맥에서 이슈 해결

Silab 사의 개발 환경인 Simplicity Studio 5 를 맥(Big Sur)에서 사용시 프로젝트를 구성을 할 때 Bluetooth Configurator 가 제대로 안되고 에러가 난다.

An internal error occurred during: “Generating apack_btConfig for project_name“.

Failed to generate setup apack_btConfig exited with 134:

dyld: Library not loaded: /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation

  Referenced from: /Applications/Simplicity Studio.app/Contents/Eclipse/developer/adapter_packs/python/bin/python3

  Reason: image not found

문제를 해결하기 위해서는 /Applications/Simplicity Studio.app/Contents/Eclipse/developer/adapter_packs/python/bin/ 이 위치에 설치된 파이썬을 사용하지 않고 Python 3.6버전을 사용하고 이 버전에 심볼릭 링크를 거는 것이다.

1.  Create a python 3.6 anaconda environment. Activate it and find the location of python in the env.

In my case, it is /Users/user_name/opt/anaconda3/envs/studio/bin/python

2. Soft link all python files to that location in the following location.
/Applications/Simplicity Studio.app/Contents/Eclipse/developer/adapter_packs/python/bin

ln -s /Users/yaoyu/opt/anaconda3/envs/studio/bin/python ./python

ln -s /Users/yaoyu/opt/anaconda3/envs/studio/bin/python ./python3

ln -s /Users/yaoyu/opt/anaconda3/envs/studio/bin/python ./python3.6

참고: https://www.silabs.com/community/software/simplicity-studio/forum.topic.topic.15.15.html/macos_big_sur_support-UO87 

 



TinyML 관련 정보들

최근 TinyML 관련 프로젝트를 하고나서, 그동안 괜찮았던 내용들을 정리한다. 물론 가장 기본이 되는 것은 구글의 TensorFlow Lite for Microcontrollers의 내용과 깃헙의 자료이다.


PlatformIO, Arduino에서의 핀매핑 정보

펌웨어 개발을 할때 MCU의 I/O핀을 맵핑해서 사용을 하게 된다. 아두이노의 경우에는 실제 HW 핀 매핑을 MCU 벤더에서 제공하는 것 처럼 low level로 access하지 않고, 보드의 실크에 적혀있는 핀 번호로 access할 수 있도록 추상화를 해 놓았다. 실제로 핀 매핑이 어떻게 되는지 보려면 맥의 경우 $HOME/라이브러리/Arduino15/packages 아래에 각 플랫폼 별로 되어 있는 폴더를 확인해 봐야 한다. 예를 들면 adafruit의 경우 /packages/adafruit/hardware/nrf52/0.21.0/variants/feather_nrf52840_express/variant.h파일과 variant.cpp 파일을 확인해 보면 된다.

PlatformIO도 아두이노와 마찬가지로 VSCode에 설치를 하면 맥에서는 $HOME/.platformio/packages 폴더 아래에 각각의 프레임워크에서 사용하는 bootloader, library들이 설치가 되어 있다.


Anaconda를 사용하여 Tensorflow 설치

$ conda upgrade pip
$ pip install upgrade

// 가상환경 만들기 (tensoflow 2.4 버전에서는 python 3.8을 사용함)
$ conda create -n tf14 python=3.6

// 가상환경 활성화
$ conda activate tf14
(tf14) pip install tensorflow==1.14.0

// Tensorflow 설치
(tf14) pip install –ignore-installed –upgrade tensorflow-cpu

// TF lite 코드 다운로드 (github CLI를 설치했음)
(tf14) gh repo clone tensorflow/tensorflow

// Hello World 예제의 테스트 빌드로 확인
$ make -f tensorflow/lite/micro/tools/make/Makefile test_hello_world_test


I2C 프로토콜의 NACK

I2C 프로토콜은 필립스반도체(지금의 NXP)에서 만든 프로토콜로 I2C의 약자는 Inter-Integrated-Circuit 이다. SDA, SCL 2 wire 만 필요해서 간단한데, SPI와 마찬가지로 마스터-슬레이브 구조를 가진다. 데이터를 전송하고 ACK가 오면 통신에 이상이 없는 것이지만 NACK의 상황도 있다.

하기 표와 같이 NACK의 상황중 가장 많은 경우가 Slave Address가 틀릴 경우일 것 같은데, 데이터 시트에서 명기한 주소가 7 bit address인지 아지면 8 bit인지 확인이 필요하고, 칩 벤더에서 제공하는 드라이버 코드가 8bit를 받아서처리하는 것인지, 7bit를 받아서 처리하는 루틴인지 확인이 필요하다. 참고 문서




SES(Segger Embedded Studio)에서 NRF_LOG_INFO 문제

SES환경에서 NRF_LOG_INFO(“Blinky example started!!!”)와 같은 같은 디버그 문구가 Debug Terminal에 보이지 않는 이슈 해결 방법

sdk_config.h 파일에서 다음과 같이 기존에 1로 설정되어 있던 값을 0 으로 수정한다.

#define NRF_LOG_DEFERRED 0
#define NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED 0

#define NRF_LOG_BACKEND_RTT_ENABLED 1
#define NRF_LOG_ENABLED 1
이 설정도 되어 있어야 함.

그런데 다음 설정은 0으로 되야 함
#define NRF_LOG_BACKEND_UART_ENABLED 0

그리고 보드가 바뀌면 아래 핀 설정도 같이 해야 함.
#define NRF_LOG_BACKEND_UART_TX_PIN 6


Poly Switch 사용법 – 스펙 결정

PolySwitch

회로에 과전류가 유입되면 열에 의하여 폴리스위치의 저항값이 커진다. 이에 따라 과전류를 제한하여 기기의 내부회로를 보호하게 된다. 반대로 소자의 온도가 낮아지게되면 저항값은 다시 초기상태로 돌아와 회로가 정상동작 하게 된다.

용어

  • Ih ( Hold Current ) : 최대 사용가능 전류
    주위온도 20℃에서 이 전류값까지는 절대 동작(전류차단)하지 않으며, 정상적으로 동작하는 전류의 최대값을 말함.
  • It ( Trip Current ) : 최소 동작가능 전류
    주위온도 20℃에서 이 전류값부터는 절대적으로 동작(전류차단)하며, 과전류로 판단할 수 있는 최소전류값을 말함

즉 Ih 부터 It사이에서 동작을 하는데, 얼마나 빠르게 퓨즈가 동작하는지 여부는 Time-to-Trip Graph를 참조해야 한다.

  • Vmax ( Maximum Device Voltage ) : 최대 사용가능 전압
    이 전압값은 각 Part의 내전압을 의미하며 이 전압값이내에서는 각 Part의 사용이 가능
  • Imax ( Maximum Device Current ) : 최대 허용 전류
    이 전류값은 각 Part의 내전류를 의미하며 이 전류값이내에서는 각 Part의 사용이 가능
  • Rmax ( Maximum Device Resistance ) : 최대 초기 저항치.
  • Rmin ( Minimum Device Resistance ) : 최소 초기 저항치.
  • R1max ( Minimum Device Resistance measured 1 hour post trip ) : Solder or 첫 Tirp후 1시간 이후의 최대 저항치

Pages:1234567...55