TINY

HCC Embedded » File systems » TINY

TINY는 작은 소거 섹터(small erasable sectors)를 가지고 있는 모든 Flash 디바이스를 위해 설계된 안전한 파일시스템입니다. 그것은 대부분의 표준 시리얼 플래시 뿐만 아니라 작은 섹터를 지울수 있는 플래시 기반 Micro Controllers(ex. MSP430) 및 RAM 드라이브에 이상적입니다.
  • 100% power failsafe
  • Small code footprint (typically 5-10K)
  • Tiny RAM usage (<100 Bytes possible)
  • Configurable filename length
  • Directory handling
  • Multiple files open simultaneously
  • Standard file API
  • Reserved sectors
  • ANSI C compliant source code
  • Sample drivers for several devices
  • Detailed implementation guide
  • uCDrive connectivity
TINY는 다른 플래시 메모리 모듈의 다양한 uCDrive 개발보드에서 테스트하실수 있습니다.
TINY는 새로운 칩 타입의 설정과 쉬운 통합을 위해 설계되었습니다. HCC는 새로운 디바이스 타입을 추가하거나 기존의 것을 수정하는 경우에 무료 컨설팅을 제공합니다. 또한 하드웨어 레퍼런스 설계 정보를 이용하실 수 있습니다.

이론적 설명(Rationale)

플래시 기술은 끊임없이 변화하고 있으며 많은 변종으로 제공됩니다. 특정 플래시 배열로부터 정보를 얻어내려면 플래시 파일시스템은 플래시 디자인 고유의 여러 특성과 복잡성을 고려한 섬세한 기술이 필요할 것입니다. TINY는 작은 소거 섹터(small erasable sectors)를 가지고 있는 플래시와 함께 작동하도록 설계되었습니다.

TINY 장점:
1.TINY는 안전합니다.
2.TINY는 매우작은 ROM 공간(small ROM footprint)에 최소의 RAM만 필요합니다.
3.TINY는 매우 작은 마이크로 컨트롤러에 사용하기가 적합합니다.

전통적으로 대부분의 플래시 디바이스는 매우 큰 소거 섹터(Very large erasable sectors:일반적으로 32KB 또는 그 이상)였습니다. 파일시스템을 만들 때 항상 단편화(fragmentation) 문제가 발생됩니다. 이 문제에 대한 HCC의 솔루션들은 특정 플래시 메모리의 특성에 부합되도록 TINY의 다양한 버전을 설계했습니다. 그것으로 말미암아 개발자는 최소한의 자원을 사용하는 파일시스템을 선택하여 사용할 수 있습니다.

추가적으로 HCC의 uCDrive 기술과 함께 사용하게 되면, 마이크로 컨트롤러는 최소한의 오버헤드로 완벽하게 구성하고, 드라이브안에서 관리할 수 있습니다.

TI사의 MSP430Fxxxx 시리즈와 같은 마이크로 컨트롤러는 어플리케이션 프로그래밍과 작은 섹터를 지울수 있는 플래시가 포함되어 있습니다. TINY와 함께 사용할 때 새로운 가능성이 많이 생깁니다. 예를들어, 설정 파일은 표준 .ini 또는 .txt 파일로 저장하거나 새로운 .wav 파일은 플래시 레이아웃 및 단편화 문제에 대해 걱정할 필요없이 마이크로 컨트롤러에서 처리합니다.

비교적 작은 소거 섹터(Small erasable sector) 크기를 가지고 있으므로 플래시의 조직과 일치하는 파일시스템의 혜택이 있는 Standalone Flash Device(특히 직렬 플래시 디바이스)가 있습니다.

표준 NOR Flash 디바이스는 매우 긴 지우기 시간(종종 1초보다 더 긴 시간)의 단점이 있습니다. 그러나, 작은 소거 섹터 장치(Smaller erasable sector device)를 이용하면 일반적으로 수 밀리초에 지울 수 있습니다. 빠른 삭제기능으로 말미암아일종의 스토리지상에서 Microcontroller기반 제품이 필요로 하는 기능을 새롭게 디자인할 수 있습니다.

전통적으로 마이크로 컨트롤러 개발자들은 필연적으로 따라오는 오버헤드때문에 파일시스템을 사용하지 않는 경향이 있었습니다. 하지만, 지금은 ROM/RAM의 과도한 양을 사용하지 않으면서 뛰어난 성능을 유지하는 독립적인 스토리지의 이점을 얻기 위해서 파일시스템을 사용합니다. 이것은 마이크로 컨트롤러기반 제품의 구성 및 관리를 위해서 중요한 새로운 가능성을 열게 된 것입니다.

Power-Fail

TINY is a system that is 100% safe against power failure.

Why is it needed?

PC 호환장치와 같이 임베디드 디바이스는 정교한 디스크 복구 프로그램은 없습니다. 임베디드 디바이스 파일시스템이 “삭제” 또는 “쓰기” 작업중에 예기치 않게 종료되어 손상되었다면, 시스템에 무슨일이 생길거 같습니까? 섹터를 잃게 될까요? 전체 디바이스의 손실? 어떻게 복구하시겠습니까? 많은 경우에 충분히 대비하지 못합니다: 시스템은 그것이 손상된 시점부터 파일시스템을 복원할 수 있도록 설계되어야 합니다.

The TINY file system does this!!

How is it done?

동작의 기본 방법은 매우 간단합니다 : 모든 정보가 삭제되기 전에 완전한 새 파일시스템을 사용할 수 있어야 합니다. 이러한 방법을 이용하여 최악의 상황이 발생한다면, 시스템은 사전 작성 양식(Pre-write form:쓰기전 처음단계) 또는 새로운 수정사항 포함하여 리빌드할 수 있어야 합니다. 이것은 DOS 호환 파일시스템(따라서, 디스크 복구 소프트웨어의 유포)과 많은 다른 파일 시스템에서 보장할 수 없습니다.

“쓰기” 전에 삭제된 섹터를 요구하는 플래시 디바이스와 함께 효율적으로 구현하는 컨셉은 상대적으로 심플합니다. 쓰고 지우는 시간이 플래시 디바이스에서 상대적으로 길 수 있어서 이 작업의 개수를 최소화하는 게 매우 중요합니다. TINY는 매우 효율적인 작은 소거 섹터(Small Erasable Sectors)와 함께 플래시 디바이스를 관리합니다.

How is it verified?

검증하는 주요 방법중 하나는 파일시스템의 PC 시뮬레이션을 통하여 비교적 쉽게 수천의 Test cases를 실행할 수 있습니다. 이 모드에서는 가상의 플래시 디바이스에서 코드를 실행할 수 있습니다. 코드는 무작위로 정지하거나 일부 지점에서 정지하면서 시스템의 데이터가 손실되었는지와 안정적으로 다시 시작하는지를 검사합니다.

Supported Devices

TINY is specifically designed for use with flash devices that have small erasable sectors. Typically this means devices with erasable sector size less than 4K Bytes, although it can be used on much larger devices.
TINY는 특별하게 작은 소거 섹터를 가지고 플래시 디바이스와 함께 사용하도록 설계되었습니다. 그것은 훨씬 더 큰 디바이스에서 사용할 수 있다고 할지라도 일반적으로 지울수 있는 섹터 크기가 4KB보다 적은 디바이스를 의미합니다.

TINY는 오랫동안 테스트되어 검증되었고 아래의 샘플 드라이버를 가지고 있습니다:

  • MSP430 internal flash
  • RAM drive in battery backed RAM
  • Atmel DataFlash
  • ST serial flash for data
  • SST serial flash devices
위의 Flash들은 uCDrive 개발보드에서 테스트 및 평가되었습니다.

Porting

TINY는 쉽게 포팅할 수 있게 설계되었으며, RTOS가 없는 많은 Stand-alone 시스템에서 테스트되었습니다. RTOS abstraction file(port.c)을 모든 RTOS에 쉽게 통합하기 위하여 제공합니다.
모든 코드는 ANSI 호환 ‘C’ 입니다. 시스템은 몇개의 다른 개발환경에서 빌드되었고 높은 수준의 호환성을 보장하기 위해 문법 검사기(Syntax Checker)를 통해서 실행됩니다.
하드웨어 의존성에 대한 레퍼런스와 다양한 미디어 타입에 대한 샘플 드라이버를 포함하고 있습니다.
개발자 가이드에서는 포팅의 모든 측면에 대한 자세한 정보를 제공하고 특정 호스트 시스템에 대해서 수정해야 하는 영역을 명확하게 나타냅니다.

특히, 호스트 시스템에서 제공할 수 있는 것:

  • 1. 시간/날짜 정보를 위한 실시간 클럭.
    시간/날짜 정보가 기록되는 파일에 저장하는 경우에 필요합니다.
    2. 상호배제를 위한 세마포어(Semaphores for mutual exclusion).
    이것은 선점형 시스템(pre-emptive system)에서만 필요합니다.
다양한 디바이스를 위한 샘플 드라이버 파일들이 제공됩니다.
다른 설정을 수정하는 방법으로 세부적인 지침서가 있습니다.
HCC는 풍부한 경험을 가지고 있으며 프로젝트를 위해서 Customized design 및 개발 작업이 가능합니다.

Standard File API

General File System Functions
fgetversion Get File System Version Number
finit Initialize File System

Drive Functions
fformat Format a Drive
fgetfreespace Get Usage Information From a Drive

Directory Functions
fgetcwd Get Current Working Directory
fgetdcwd Get a Drives’ Current Working Directory
fmkdir Make a Directory
fchdir Change Directory
frmdir Remove a Directory

File Access Functions
fopen Open a File
fclose Close a File
fwrite Write to a File
fread Read from a File
fseek Set Position in a File
f_tell Get Current File Position
feof Check if at End of File
frewind Move to Start of File
fputc Put a Character to a File
fgetc Get a Character from a File

File Control Functions
frename Rename a File or Directory
fdelete Delete a File or Directory
ffilelength Get the Current Length of a File
ffindfirst Find a File or Directory in the Specified Path
ffindnext Find Next File or Directory in the Specified Path
fsettimedate Set the Time and Date on a File or Directory
fgettimedate Get the Time and Date from a File or Directory