:::: MENU ::::
Browsing posts in: ARM

J-link 인터페이스

Segger사의 J-link 디버거는 JTAG과 SWD인터페이스를 제공한다.

JTAG  pin-out

SWD를 사용하기위해서는 위 20핀에서 필요한 4핀만 연결하면 된다. 여기서 VTref신호는 디버거에서 타겟보드의 전압을 체크하고 전압레퍼런스로 사용하기 때문에 타겟 보드의 전원을 연결하고, 프로그래밍을 할 MCU의 전압과 연결해야 한다. 그렇지 않을 경우 VTref is 0.xxxxV라고 에러메시지가 나면서 연결이 되지 않는다.

*참고로 J-link와 같은 디버거를 DIY형태로 개발을 해서 OSHW로 판매를 하는 것이 있다.  OSHChip_CMSIS_DAP_V1.0

참고: https://www.segger.com/interface-description.html


BBC Microbit 오프라인에서 사용하기

BBC microbit를 오프라인에서 사용하려면 링크를 참고 하고 Manuall Installation 항목을 따라서 환경을 셋업한다.

1. yotta설치

Mac OS의 경우

brew tap ARMmbed/homebrew-formulae
brew install python cmake ninja arm-none-eabi-gcc
pip install yotta

Trouble shooting
brew 관련 아래과 같은 문제가 있을 경우

sudo chown -R $(whoami):admin /usr/local
cd $(brew –prefix) && git fetch origin && git reset –hard origin/master

터미널에서 다음과 같은 에러메시지가 나올때
error: connection error: (“bad handshake: Error([(‘SSL routines’, ‘ssl3_get_server_certificate’, ‘certificate verify failed’)],)”,)

pip install -U certifi

참고: https://github.com/ARMmbed/yotta/issues/744

2. Srecord 설치

brew install srecord

3. 예제 코드 받기

git clone https://github.com/lancaster-university/microbit-samples
cd microbit-samples

4. 타겟을 miccrobit로 설정

yt target bbc-microbit-classic-gcc

5. 프로젝트 빌드

yt build

6. 마이크로비트에 다운로드 하기
마이크로비트는 MICROBIT라는 이름의 외장디바이스로 되어 있으니 hex파일을 copy하면 된다.

cp ./build/bbc-microbit-classic-gcc/source/microbit-samples-combined.hex /Volumes/”MICROBIT”

참고
https://lancaster-university.github.io/microbit-docs/offline-toolchains/
http://yottadocs.mbed.com/#installing


BBC micro:bit 분석

BBC micro:bit는 영국에서 컴퓨터 교육용으로 디자인된 마이크로컨트롤러 보드이다.

개발에 참여한 파트너사들

하드웨어

  • 메인 MCU: ARM CortexM0 코어에 블루투스 LE 내장된 노르딕사의 nRF51822 (256KB flash, 16KB SRAM)
  • 인터테이스 : USB 2.0 OTG 내장된 NXP KL26Z (CortexM0+) DAPLink를 제공하여, 가상 USB 플래시 드라이브를 제공해서 펌웨어 업데이트를 가능하게 하며, USB 파워를 받아서 전압 레귤레이터의 역할. 관련 포스팅
  • 3 가속도 : NXP MMA8652, 메인 MCU I2C 연결
  • 3 지자기센서 : NXP MAG3110, 메인 MCU I2C 연결
  • 5×5 LED 어레이
  • 2개의 버튼

핀아웃

소프트웨어

모두다 브라우저기반의 컴파일러를 제공하며, 난이도에 따라 아래 그림 처럼 3가지로 나뉠 수 있다.

아키텍처

기타

관련자료


Freescale FRDM-K82F 보드

Freescale FRDM-K82F 보드의 개발 환경설정

1. 이클립스 업데이트 파일 설치

“Help”->Check for Updates를 누르고, Processor Expert for Kinetis만 선택하고 업데이트 한다.

“Help” -> “Install New Software”를 선택하고 Add 버튼 > Archive 버튼을 눌러서 SDK 설치 폴더 아래 /tools/eclipse_update 폴더에서 KSDK_<version>_Eclipse_Update_zip file. 를 선택한다

2. 플랫폼 라이브러리 빌드하기

“File->Import”를 선택후 “General”을 눌러서 “Existing Projects into Workspace”를 선택한다.
루트 디렉토리는 <install_dir>/lib/ksdk_platform_lib/kds/K82F25615 를 선택하고 finish를 클릭한다.
메뉴에 헤머 아이콘을 눌러 빌드한다.

3. 데모 프로그램을 빌드하기

<install_dir>/examples/frdmk82f/demo_apps/<demo_name>/kds 아래있는 데모 프로그램을 플랫폼 라이브러리 빌드 할때와 마찬가지로 빌드한다.

예를 들면 hello_world의 경우 <install_dir>/examples/frdmk82f/demo_apps/hello_world/kds
메뉴에 헤머 아이콘을 눌러 빌드한다.

4. 데모 프로그램을 다운로드 및 디버깅

FRDM-K82F는 기본적으로 mbed/CMSIS-DAP debug interface 가 설치가 되어있으므로 KDS에서 다운로드 디버깅을 하기위해서는 J-Link OpenSDAv2.1를 설치해야 한다. 리셋 버튼을 누른상태에서 “SDA USB” USB 포트를 연결해서 전원을 연결한다. 그러면 BOOTLOADER로 폴더가 잡힌다.
https://www.segger.com/opensda.html 여기에서 OpenSDA V2.1: Download JLink_OpenSDA_V2_1_2015-10-13.zip 을 다운로드후 압축을 풀고 bin파일을 BOOTLOADER 폴더에 넣으면 다시 JLINK라는 폴더로 잡힌다.

Run > Debug Configurations에서 맨 아래있는 GDB SEGGER J-Link를 선택하고 디버깅을 한다.
Hellow World의 경우 시리얼 터미널 설정은 115200. 보드의 전원 및 디버깅을 위해서 USB SDA 포트와 PC를 연결한다.

관련 튜토리얼 페이지


Teensy 사용하기

Teensy는 아두이노 호환 보드로 Cortex M0, M4기반의 보드가 있어서 보다 높은 프로세싱이 필요한 응용에 적합하다. 이 보드를 사용하기 위해서는 Teensyduino라는 프로그램을 설치해야 하는데, 이것은 기존 아두이노 IDE에 추가적으로 설치되는 코드들과 다운로드를 위한 프로그램이 포함되어 있다.

Teensy_USB_Development_Board_1

Teensy_USB_Development_Board

먼저 아두이노를 설치하고 https://www.pjrc.com/teensy/td_download.html 이 사이트에서 파일을 다운로드해서 설치하는데 문제는 아두이노 1.0과 아두이노 1.6.x 이 동시에 설치가 되어 있으면 아두이노 1.0쪽에만 설치가 된다.(아두이노 1.6.x쪽을 지정이 안됨) 따라서 일단 아두이노 1.0을 언인스톨하고 1.6.x에 설치를 한 후 다시 아두이노 1.0을 설치를 해야 한다. Teensy 3.2의 경우 Cortex M4이기 때문에 SPI를 사용하는 응용은 Teensy 라이브러리에서 SPI 드라이버(faster SPI library for Teensy 3.0)도 같이 설치를 해야한다. 그리고 나머지 필요한 라이브러리는 아두이노 1.6.x의 라이브러리 매니저에서 추가한다.

*코드중에 호환이 안되는 것중 하나 – isDigit ==> isdigit 으로 바뀌어야 함.


SD 메모리 SPI로 제어하기 – 2

지난번 포스팅 “SD 메모리 SPI로 제어하기“의 내용만으로는 부족하여 추가적으로 정리한다.

SD 메모리 카드는 기본적으로 전원이 들어오면 SDIO로 동작을 한다. 따라서 대부분의 칩벤더에서는 SDIO인터페이스를 사용하는 예제를 제공하는데, SDIO가 없는 작은 MCU에서는 SPI를 사용해야 한다. 따라서 다음 그림과 같은 초기화 루틴이 필요하다.

SPI모드에서 SD 메모리 초기화 루틴

SD 메모리 커맨드

How_to_Use_MMC_SDC

  • 1번: CS, MISO를 High로 하고 74개 이상의 SPI dummy clock을 전송한다.
  • 2번: CRC가 반드시 일치해야 한다.

위 표에서 CMD0은 0, CMD8은 8을 전송하는 형태이고, ACMD41은 CMD55를 전송후 CMD41를 전송하는 것이며, argument로 30번째 비트가 세트된 32비트를 전송한다.

커맨드 응답

커맨드의 응답은 다음과 같다. R1은 1바이트이고, R3, R7은 R1+ 32비트이니 5바이트이다.

How_to_Use_MMC_SDC

관련 코드: STM32F429IDiscovery보드에서 테스트한 코드가 github에 업로드되어 있으니 코드를 보면서 참고 문서를 보면 이해가 될 듯.. SD memory control with SPI


Fabless: The Transformation of the Semiconductor Industry

무료로 다운로드 받은 책 : 다운로드
Book Cover Final
Table of Contents
Chapter 1: The Semiconductor Century
Chapter 2: The ASIC Business
In Their Own Words: VLSI Technology
In Their Own Words: eSilicon Corporation
Chapter 3: The FPGA
In Their Own Words: Xilinx
Chapter 4: Moving To The Fabless Model
In Their Own Words: Chips And Technologies
Chapter 5: The Rise Of The Foundry
In Their Own Words: TSMC And Open Innovation Platform
In Their Own Words: GLOBALFOUNDRIES
Chapter 6: Electronic Design Automation
In Their Own Words: Mentor Graphics
In Their Own Words: Cadence Design Systems
In Their Own Words: Synopsys
Chapter 7: Intellectual Property
In Their Own Words: ARM
In Their Own Words: Imagination
Chapter 8: What’s Next For The Semiconductor Industry

SD 메모리 SPI로 제어하기

SD 메모리 카드

SD메모리 는 SDC(Secure Digital Memory Card)를 지칭하며 MMC(Multi Media Card)와 호환된다. 이 SD메모리 카드는 SDIO 또는 SPI로 제어가 가능하다.

SD card pinout

SD 메모리 SPI로 제어하기

SPI 모드는 4가지가 있는데, SD를 제어하기 위해서는  Mode 0를 사용한다. 즉 CPHA = 0, CPOL = 0

SD_SPI_CMD

SPI로 제어시 command는 Command Index(1바이트) + Argument(4바이트) + CRC(1바이트) = 총 6바이트로 구성이되며, 항상 응답코드가 있다. CRC는 CMD0의 경우 0x95, CMD8의 경우 0x87이며, 나머지는 코드에서 0xFF로 처리한다. 아래 링크의 스펙 문서의 부록에 command list 참고

SD spec: https://www.sdcard.org/downloads/pls/simplified_specs/archive/partE1_200.pdf

SD 메모리카드의 인터페이스는 기본적으로 SD모드 이므로 SPI모드로 바꾸기 위해서는 절차가 필요하다.

SD Initialize using SPI

참고할만한 자료


ARM mbed – 데모 (big mouth billy bass)

ARM mbed는 2008년 ARM사의 직원이었던 Simon과 Chris가 Rapid Prototyping을 위한 개발 보드를 기획하면서 프로젝트가 시작이 되었다. 이때 ARM 코어를 사용하는 NXP사의 LPC1768칩을 사용하여 모듈을 구성하였으며, 2009년에 보스턴에서 열린 ESC(Embedded System Conference)에서 NXP사의 부스에서 모듈이 릴리즈가 되었고 물고기가 트위터 메시지를 네트워크로 수신해서 음성으로 출력하는 데모를 진행하였다.
2009년도 관련 동영상



Pages:123