EE 14

[Principles][1]Tools and Development Environment

Directory Structure RTL 폴더는 모든 Verilog 코드가 저장되어 있는 곳을 뜻합니다. DMAC_CFG : RTL 파일 filelist.f : Compile, debug, synthesis 위한 Verilog 코드의 집합 SIM 폴더는 시뮬레이션 관련 데이터를 저장하는 폴더입니다. 안에 있는 TB 폴더에 테스트벤치 코드가 저장되어 있습니다. 원격서버의 Verilog Compile Tool과 Verdi 활용 컴파일을 위한 리눅스 서버가 있으며 이를 활용해 개발을 진행합니다. 아래의 경우, SSH 연결로 진행하였습니다. ./run.sim ./run.waveform ./run.verdi WSL Ubuntu 와 iverilog 활용 iverilog는 Verilog 컴파일용 오픈소스 툴. 다음..

[Android][3] On-Board LED 제어하기

Android 기기에서 UI로 직접 하드웨어를 제어할 수 있는 어플리케이션을 만드려면 JNI (Java Native Interface)의 도움을 받아야 합니다. 이제부터는 IDE 사용법과 makefile 작성보다는 개발을 위한 프로세스에 초점을 맞추도록 하겠습니다. 실제 코드로직 작성 이외의 작업은 Eclipse에서 제공하는 툴에 의존합니다. 토글버튼을 터치하면 보드에 내장된 LED를 켜고 끌 수 있는 어플리케이션과 디바이스드라이버를 만들도록 하겠습니다. 우선 화면을 구성하는 Activity를 정의하기 위해 XML 파일을 작성합니다. 더보기 메인 화면의 이벤트 처리를 담당하는 MainActivity.java 파일입니다. package edu.skku.sm5baseled; import android.app..

EE/Embedded Systems 2021.09.24

[Android][2] Device Driver 컴파일

보드는 FPGA의 Memory Mapped IO Interface로 구성되어 있습니다. 이러한 특징을 이용해 특정 메모리에 값을 쓰면 LED가 켜지고, 부저가 울리게 할 수 있습니다. 이를 위해 특정 역할을 하는 디바이스 드라이버를 작성하여야 합니다. 드라이버 작성 준비 kdriver라는 Makefile Project를 생성합니다. 만든 프로젝트를 선택 후 Miscelleneous Device Driver를 만듭니다. 드라이버 파일 명은 kdriver를 그대로 사용합니다. Project Explorer 에 다음과 같이 Driver를 위한 개발 환경이 IDE에서 자동으로 생성되었습니다. 이제 kdriver를 컴파일하게 되면 컴파일 후 보드로 다운로드까지 실행됩니다. kdriver로 자동생성된 샘플코드는 다..

EE/Embedded Systems 2021.09.17

[Android][1] 커널 빌드

[HBE-SM5-S4210 BASE] 리눅스 커널을 기반으로 하는 Android Board의 디바이스 드라이버를 작성하고 어플리케이션에서 추가된 하드웨어를 쓸 수 있도록 한다. Android Operating System 모바일 디바이스를 가지고 여러 서비스를 제공하기 위한 Software Stack 이다. 운영체제 + 미들웨어 + 어플리케이션을 포함한다. 많은 부분이 오픈소스 기반. 일부는 유료이며 오픈소스가 아닙니다. 컴포넌트 기반의 아키텍처를 가진다. 프로그램이 실행되고 종료될 때까지 Life Cycle 을 관리해주기도 한다. 커널 부분은 C, 런타임 라이브러리도 C로 되어있지만, 어플리케이션 개발자는 Java, Kotlin으로 개발한다. 크게 4개의 Layer로 나뉘어져 있다. 커널은 디바이스의 ..

EE/Embedded Systems 2021.09.17

Bio-signal for Emotion Classification

Referred to Signal Processing Lecture by Dr. Ajay Kumar Verma 이산 웨이브렛 변환을 이용한 고각성 부정 감성의 GSR 신호 분석(2017, 임현준 외 2) https://www.sciencedirect.com/topics/engineering/detail-coefficient https://bookdown.org/yuaye_kt/RTIPS/ttest.html Project Timeline 1번부터 3번까지는 Matlab에 존재하는 신호처리 API를 활용하여 Preprocess 1. Upsampling : Sensor Data와 Emotion Data의 데이터 주기를 맞춥니다. 2. Nearest Interpolation : 실험에서 데이터가 비어있어 오류가..

[nRF52BLE][4]C Development with SoftDevice API

4) Actual Code / API Use 개발환경 : Seggar Embedded Studio (SES) 개발보드 : nRF52DK (PCA10040) i) - SDK폴더\examples에 폴더 생성 (폴더 이름은 마음대로) ii) - 첨부된 파일의 압축을 풀고 폴더 안에 위치 (모든 dependency가 상대경로로 지정되어 있기 때문에 정확한 디렉토리 위치에 있지 않을 경우 컴파일되지 않는다) iii) - 컴파일 수정하고 추가한 모든 파일이 Application 폴더 안에 존재하게끔 되어 있다. CTRL + F 로 각 numbering 된 단계를 따라가시면서 코드를 봐주시면 된다. 주기적으로 송신되는 센서의 값은 nRF 에 내장된 프로세서 온도이고, 이를 응용해 GPIO로 받아지는 센서 출력을 받게..

EE/Embedded Systems 2021.01.04

[nRF52BLE][3]Components for Data Transfer

3) Components for Data Transfer Attribute Protocol (ATT) 에 대하여 이전에 간략히 보았던 것처럼 프로토콜을 완성시키기 위하여 몇 가지 Layer가 쌓여 있다. 어플리케이션은 GATT를 이용해 생성할 수 있고 GATT 는 ATT 의 상위에 위치한다. ATT는 Client ←→ Server 관계에 기반을 둔다. 서버는 센서의 값과 같은 정보를 갖고 있고, 이 정보는 table에 정리되어 있다. 이를 Attribute Table 이라 한다. Table의 각 Attribute는 여러 속성(Property)으로 연관되어 있다. 예를 들어 설명하겠습니다. 아래에는 1개의 Table이 있는데, 각 Row는 각 Attribute 를 뜻한다. 각 Attribute는 handl..

EE/Embedded Systems 2021.01.04

[nRF52BLE][2]Connection and Softdevice

2) Connection 참고: https://devzone.nordicsemi.com/nordic/short-range-guides/b/bluetooth-low-energy/posts/bluetooth-smart-and-the-nordics-softdevices-part-2 Connection 요소는 크게 Initializing - Connection Parameters - Whitelisting - Connection Terminating 으로 나눌 수 있는데, 어떻게 진행되는지, API 요구사항은 뭔지 알아본다. IoT와 밀접한 연관을 가지는 블루투스가 어떤 구조를 목표로 했는지를 먼저 본다. 아래 그림과 같다. 하나의 Central (Master)가 여러개의 Peripheral과 연결될 수 있는 ..

EE/Embedded Systems 2021.01.04

[nRF52BLE][1]Bluetooth Communication Scheme

참고: https://devzone.nordicsemi.com/nordic/short-range-guides/b/bluetooth-low-energy/posts/bluetooth-smart-and-the-nordics-softdevices-part-1 첫 포스팅에서는 간략한 BLE 작동을 보았고, 이번에는 모든 프로세스와 관련된 개발에 대해 더 자세히 알아보려 한다. BLE를 이용하기 위한 Nordic의 SW Stack은 API로만 접근할 수 있으며 5개의 Link Layer 상태가 존재한다 Standby - Advertising - Scanning - Initiating - Connection 따라서 다음 순서로 설명을 이어나가도록 하겠다. Advertising Connection (outdated a..

EE/Embedded Systems 2021.01.04

Nordic nRF52 UART 통신

Introduction Universal Asyncronous Receiver / Transmitter (UART) 는 데이터 통신에 널리 쓰이는 통식 방식중 하나이다. Asynchronous인 이유는 두 디바이스 간 통신 시 Clock 이 비동기 이기 때문이다. 각 디바이스는 고유한 Clock 을 발생시킨다. 같은 Clock Source로 통신을 동기화시킬 경우 Universal Synchronous Asynchronous Transmitter/Receiver (USART) 로 볼 수 있다. 하나의 Packet은 다음과 같이 구성된다. Baud Rate는 보통 9600 b/s 또는 115200 b/s 로 설정된다. 마이크로컨트롤러끼리 UART로 통신할 경우 한 Device의 Tx Pin 이 반대쪽의 R..

EE/Embedded Systems 2020.12.23