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

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년도 관련 동영상



NXP LPC 시리즈 맥에서 개발 환경 – Flash Magic

NXP의 LPC 시리즈는 이클립스 기반의 툴인 LPCExpresso를 제공한다. 대부분의 개발 환경은 지난 포스팅을 참고. 따라서 Mac에서도 윈도우즈와 동일한 개발환경을 구축할 수 있다.  LPC 시리즈 칩 역시 시리얼 부트로더가 내장이 되어 있어서 쉽게 flash를 write할 수 있으며, FlashMagic이라는 툴을 사용한다. 원래 윈도우 기반으로 개발된 툴을 Mac에 Wine을 사용하여 포팅이 되어 있다. 그래서 시리얼 포트도 COM1, COM2 이런 식으로 표시가 된다.
FlashMagic

Mac에서 잡힌 시리얼 포트를 FlashMagic이 구동이 될때 COM1, COM2.. 으로 매핑이 되는데, 이것을 확인해서 해당되는 COM 포트를 넣어주면 된다. 매핑된 포트를 찾는 방법은 다음의 그림을 참고… 대개 serial to USB 컨버터를 사용하는데, Mac에서는 cu.*의 형태와 tty.*의 형태가 잡히는데, cu.*의 형태로 잡힌 포트를 사용하면 된다.
FlashMagic 포트찾기
즉 명령어는

ls -l /Applications/FlashMagic.app/Contents/Resources/dosdevices

그런데 문제는 추가적으로 연결되는 Seirial to USB 케이블들을 찾아주지를 못한다. 따라서 이때는 기존에 저장된 정보를 지우고 스크립트를 다시 실행해서 정보를 업데이트 해야 한다.

rm ./FlashMagic.app/Contents/Resources/dosdevices/COM*
./FlashMagic.app/Contents/Resources/WineskinStartupScript
ls -l ./FlashMagic.app/Contents/Resources/dosdevices

관련정보: http://forum.flashmagictool.com/index.php?topic=4130.0


WIZnet mbed 라이브러리

W5500 Ethernet 라이브러리를 mbed에 포팅후 W5100,W5200, W5500까지 지원을 하는 라이브러리를 만들어 mbed.org에 업로드했다. 사용법은 간단하다. 라이브러리를 import하고 사용하는 Wiznet칩 또는 모듈에 따라서 wiznet.h에 있는 #define문에서 사용할 칩만 나두고 나머지는 주석 처리하면 된다.


ARM 개발 환경

hex to bin / bin to hex

MAC에서 개발 환경을 세팅하다보니 윈도우즈 기반의 툴들에서 쉽게 찾던 것들을 구글링하게 된다. ARM 이클립스 개발환경에서 hex, bin을 만들어 주는 툴은 arm-none-eabi-objcopy 인테, 다음과 같이 hex와 binary간의 변환이 가능하다.

arm-none-eabi-objcopy -I binary -O ihex filename.bin filename.hex

arm-none-eabi-objcopy -I ihex -O binary filename.hex filename.bin

물론 이클립스의 프로젝트 설정에서 Cross ARM GNU Create Flash Image설정에서 Raw binary 또는 Intel Hex를 설정이 가능함.

flash downloader demonstrator

STM32 칩들은 내부에 시리얼 부트로더가 있어서 쉽게 flash를 업데이트 가능하다. ST에서도 flash downloader demonstrator라는 프로그램을 제공하는데 윈도우즈만 제공한다. Mac에서 사용할 수 있는 것은 stm32loader scryptstm32ld program이다.

stm32loader의 사용법 (-e : erase, -w: write, -v: verify)

./stm32loader.py -e -w -v example/main.bin



mbed – SeeedArch 프로그래밍하기

SeeedArch

mbed의 플랫폼 중의 하나인 Seeedstudio에서 만든 보드, SeeedArch를 테스트중이다. 이 보드의 스펙은 다음과 같다.

  • mbed enabled
    • online development tools
    • easy to use C/C++ SDK
    • lots of published libraries, projects
  • Standard Arduino Appearance, two Grove connectors
    • available with 3.3V compatible shields
    • a large number of grove modules
  • Drag-n-drop programming
  • NXP LPC11U24 MCU
    • Low power ARM Cortex-M0 Core
    • 48MHz, 32KB Flash, 8KB RAM, 4KB EEPROM
    • USB Device, 2xSPI, UART, I2C

이 보드의 가장 큰 특징은 보드의 형태가 아두이노 보드와 같아서 아두이노 쉴드를 연결할 수 있다.

.png”>800px-Arch_Pinout.jpg.png” width=”560″ height=”455″ />

코딩은 mbed의 웹컴파일러로 하고 다운로드 역시 msd로 잡히는 외장드라이브에 copy를 하면 되는데, Mac이나 Linux에서는 Windows와 달리 drag & drop이 안된다.

프로그래밍 방법 (Mac)

  • 보드의 왼쪽에 있는 리셋 버튼을 길게 누른다. (짧게 누르면 H/W 리셋이고, 길게 누르면 ISP 모드이다.)
  • 그러면 Finder에 CRP DISABLED 라고 스토리지가 잡힌다. Windows에서는 이 폴더에 있는 firmware.bin을 지우고 새로운 firmware.bin을 copy하면 되지만 Mac에서는 Terminal에서 다음과 같이 dd 명령어로 copy한다.
  • dd if=새로운 firmware 파일명 of=/Volumes/CRP\ DISABLD/firmware.bin conv=notrunc

좀 더 쉽게하기위해서 Mac의 Automator를 사용하여 쉘 스크립트를 만든다.

  • dd if=$* of=/Volumes/CRP\ DISABLD/firmware.bin conv=notrunc

Automator_SeeedArch

LED blink 프로그래밍

SeeedArch

관련정보: SeeedStudio WiKi


ARM Cortex M0 – 기술적 개요

일반적인 정보

  • 폰노이만 아키텍처(단일버스 인터페이스)를 가지는 32비트 RISC 프로세서
  • ARMv6 아키텍쳐 : M0, M1(FPGA에 최적화)이 ARMv6 아키텍쳐이며, M3는 ARMv7 아키텍처임. 상위호환이 가능해 M0코드가 M3로 쉽게 이식이 가능.
  • 56개의 명령어: Thumb 명령어 지원, Thumb-2 명령어의 일부 지원

Cortex-M0 block diagram

ARM Cortex-M0의 특징

  • 0.9DMIPS/MHz
  • 프로세스 코어는 3단계 파이프라인
  • NVIC: 프로그램 가능한  4개의 서로 다른 우선 순위 레벨을 가질 수 있으며, 32개까지의 interrrupt request를 받을 수 있다.
  • WIC (Wakeup Interrupt Controller)는 옵션
  • OS지원을 위한 System Tick지원

ARM Cortex-M0의 장점

  • 에너지 효율성 – 슬립모드와 연계되어 있다. 즉 평소에는 슬립모드에 있다가 인터럽트가 발생을 하면 빨리 처리하고 다시 슬립모드로 들어감.
  • 8, 16비트의 제약을 극복 – 32비트 linear address 사용(더 큰 메모리의 사용 가능), 더 큰 스텍사용(참고로 8051은 256바이트), 향상된 명령어 셋으로 더 작은 크기의 코드 가능( 참고로 8051은 항상 ACC를 사용해야 함)

저전력을 가능하게 하는 요소들

  • 적은 게이트수 : 최소 설정으로는 12K, 일반적으로 17~25K
  • 높은 효율성 : 0.9 DMIPS/MHz (80486DX가 0.81 DMIPS/MHz 였다는…)
  • 슬립모드 : WIC(Wakeup Interrupt Controller), 2 개의 슬립모드: WFI(Wait for Interrupt ), WFE(Wait for Event)
  • 로직셀 향상 : Ultra Low Leakage 로직 셀 라이브러리 도입

average current

즉 물리적으로 누설전류가 적은 로직셀, 최적화된 게이트 수를 통해 성능이 좋은 칩으로 슬립모드를 제공하므로 저전력이 가능하다.

관련자료 다운로드


Pages:123