Você está na página 1de 9

Introdução (1/2)

Sistemas Embarcados
• Necessidade de armazenamento de dados
• Questões:
• Tipo de dispositivo a ser utilizado no armazenamento?
• Armazenamento permanente ou volátil?
• Forma de organizar
g e acessar os dados?
Sistemas de arquivos
• Sistemas operacionais respondem a essas questões através
de sistemas de arquivos
• Conjunto de arquivos e diretórios mantidos em uma partição de
um dispositivo de armazenamento
• e.g: ext2, ext3, NTFS, reiserfs, etc
• Módulo de software que provê acesso ao arquivos

Aula 08
INF01059 - Sistemas Embarcados 2

Introdução (2/2) Dispositivos de bloco e MTD

• Armazenamento em sistemas embarcados • Block devices (dispositivos de bloco)


• ROM: armazenamento de dados para leitura (read only) • Floppy ou discos rígidos (SCSI, IDE, etc)
• NVRAM: armazenamento de dados para leitura/escrita (Non • Flash empregadas como discos IDE
Volatile) • Ramdisks
• Memórias flash são exemplos típicos • Dispositivos
p de loop
p
• NVRAM são usados normalmente para armazenar: • Memory Technology Devices (MTD)
• Boot loader • Flash, ROM ou RAM
• Imagem do sistema operacional • Emulação de MTD em dispositivos de bloco
• Aplicações e bibliotecas
• Arquivos e dados de configuração Possuem características diferentes que impactam no tipo de
sistema de arquivo a ser usado

Vários tipos de sistemas de arquivos

INF01059 - Sistemas Embarcados 3 INF01059 - Sistemas Embarcados 4


Sistemas de arquivos convencionais RAM filesystems

• Dispositivos de bloco • Prático para armazenar dados que não precisam ser
• Sistemas não jornalizados mantidos entre sucessivos boot do sistema
• Pode gerar inconsistências após um desligamento abrupto ou • Emula na RAM um dispositivo de armazenamento tipo bloco
colapso (crash = pendurada) • Sistema de arquivos convencional orientado a bloco
• Exemplos tradicionais • Tamanho fixo
• Linux: ext2 e fsck • Espaço não usado da RAM é desperdiçado
• Windows: FAT e scandisk • Ocupa espaço duplo na RAM (uma cópia em cache e outra no
• Sistemas de arquivos jornalizados dispositivo)
• Garantem a consistência após desligamentos ou crashes • Versão melhorada: tmfs
• Todas as escritas são “logadas” em um jornal antes de • Elimina o desperdício na RAM
serem efetivadas no disco (commit) • Mantém apenas uma cópia dos dados
• Exemplos: • Consome memória por demanda
• ext3, ext4, reiserFS, JFS (ibm), XFS (sgi), NTFS...
INF01059 - Sistemas Embarcados 5 INF01059 - Sistemas Embarcados 6

cramfs squasfs

• Compressed block filesystem • http://squashfs.sourceforge.net


• Emprega a bibliteca zlib (usada no zip) • Evolução sobre o cramfs
• Principais características • Tamanho máx. do sistema de arquivos e de arquivos é de 264 bytes
• Simples • Principais características:
• Read-onlyy • Sistema de arquivos read
read-only
only e comprimido
• Projetado para sistema embarcados • Emprega gzip ou LZMA para compressão
• Tamanho máximo do sistema de arquivos: 256 MBytes • Integrado no kernel 2.6.29
• Maior arquivo possível: 16 MB • Anteriormente era disponibilizado apenas via patch
• Utilizado na maioria das distribuições live de linux combinado
com o unionfs

INF01059 - Sistemas Embarcados 7 INF01059 - Sistemas Embarcados 8


Union mounts Memórias flash

• Permite vários sistemas de arquivos serem montados a partir • Organizadas em regiões de 32, 64 ou 128 KB (eraseblocks)
de um único ponto de montagem • Possuem três operações básicas: read, write e erase
• Sobrepõe vários sistemas de arquivos • Para escrever é necessário apagar
• Um diretório pode possuir arquivos de vários sistemas de • O procedimento de erase apresenta alguns detalhes:
arquivos
• Executado sobre um eraseblock inteiro (não dá para apagar bytes!!)
• Não há um ponto de montagem único por sistema de arquivo
• Um eraseblock tem um número limitado de apagamentos (vida útil)
• Geralmente um sistema de arquivos é montado como read-write
• Wear leveling: escrever uniformemente na flash para aumentar a
e os demais como read-only
vida útil
• Implementado através do unionfs e do aufs
• Construídas de duas formas diferentes (NOR e NAND)

INF01059 - Sistemas Embarcados 9 INF01059 - Sistemas Embarcados 10

Flash NOR versus Flash NAND Diferenças entre discos e dispositivos MTD

NOR NAND
Acesso a dados Acesso randômico a dados Área é dividida em blocos e estes em Discos (block devices) MTD
páginas. O acesso é a páginas
Composto por setores Composto por blocos (eraseblocks)
Operações Read, write e erase (eraseblocks) Read e write (páginas) e erase (blocos)
Interface c/ sistema Barramento de dados e endereços Diferentes formas. Normalmente através de
um barramento de 8 bits (dados/comandos) Setores são pequenos (512, 1024 bytes) Erase blocks são grandes (32, 64, 128 KB)
Código para Permite execução do código Necessário copiar código para memória
execução diretamente armazenado Duas operações básicas: read e write Três operações: read eraseblock, write
Desempenho Leitura rápida, escrita e apagamento Leitura, escrita e apagamento rápidos erasabloc e erase eraseblock
lentos
Bad-sectors são remapeados e escondidos Bad-blocks devem ser tratados pelo software
Bad blocks Normalmente não tem esse problema Dispositivos de armazenamento de baixo pelo hardware (LBA disk drives)
porque foram projetadas para custo. Possui bad blocks, mas eles são
armazenar dados de sistema. marcados e não usados. Setores de disco tem um grande ciclo de vida Eraseblocks tem ciclo de vida limitado a 104
Utilização Execução de código (boot loader) Armazenamento de dados (mp3, set-top ou 105 ciclos de apagamento
boxes, etc).

INF01059 - Sistemas Embarcados 11 INF01059 - Sistemas Embarcados 12


Memória flash e sistemas de arquivos O que existe para o mundo de embarcados...

• Sistemas de arquivos convencionais não são adequados para • Flash Translation Layer
flash • Idéia é adaptar sistemas de arquivos convencionais para os
• O apagamento é feito sobre blocos grandes ao passo que dispositivos do tipo flash
dispositivos orientados a disco os blocos são pequenos • Sistemas de arquivos específicos para flash
• Usam cache em RAM para desempenho • Arquitetura
q MTD
• Inconsistências do sistema de arquivos em caso de corte de • Mecanismos e primitivas para acesso a flash
alimentação
• Convencionais: sync periódicos e saída via shutdown
• Embarcados podem ficam sem energia repentinamente
(bateria)
• Vantagem dos sistemas convencionais
• Existem e tem um conjunto apropriado de primitivas e vasto
suporte do sistema operacional

INF01059 - Sistemas Embarcados 13 INF01059 - Sistemas Embarcados 14

Flash Translation Layer (FTL/NFTL) Journaling Flash File System v2 – jffs2

• Camada de software que emula um dispositivo de bloco para • Projetado para homogeneizar escrita em setores de flash
flash • Problema da limitação do número de escritas na flash
• Objetivo é usar toda a infra-estrutura já existente de sistemas de • Sistema de arquivos comprimido
arquivos
• Permitir o máximo de dados em um setor da flash
• Desvantagem: • Compensar
p o tempo
p de acesso a flash
• Não trata das inconveniências dos Sistema de arquivos convencional
(ext2, ext 3 etc)
sistemas de arquivos tradicionais
• Desempenho FTL/NTFL
• Trata uma flash como se fosse um
dispositivo orientado a bloco
Flash
• Patenteado
FLT: memórias NOR
NFLT: memórias NAND

INF01059 - Sistemas Embarcados 15 INF01059 - Sistemas Embarcados 16


Yet Another Flash Filing System – yaffs2 Memory Technology Device (MTD)

• http://www.aleph1.co.uk/yaffsoverview • Solução software livre para tratar dispositivos NVRAM (flash)


• Características: • Integrado no núcleo do linux a partir da versão 2.4
• Destinada para flash do tipo NAND • http://www.linux-mtd.infradead.org
• Sem suporte a compressão • Filosofia: tratar dispositivos de memória como tal e não como
discos
• Composto por duas partes: drives e aplicativos
• Dispositivos MTD (Pleonasmo)
• Flash (NAND, NOR non CFI e NOR CFI compliant)
• Commom Flash Interface
• Flash disks (ATA-based e linear)
• Armazenamento de massa

INF01059 - Sistemas Embarcados 17 INF01059 - Sistemas Embarcados 18

Arquitetura MTD Arquitetura MTD (outra visão...)

Aplicações MTD
Linux filesystem interface User-space applications

MTD “User” modules


Flash Translation Layers Regular fs (cramfs) MTD apps (jffs 2, nftl)
for block device emulation
jffs2 Char device Block device Caution: patented algorithms!

FTL NFTL INFTL MTD core Block device Char device Raw device
yaffs2 Read-only block device

sync( ) Flahs Drivers Flash BSP


MTD Chip drivers erase( )
CFI flash RAM chips read( )/write( ) BSP for
Low-level
Block device Virtual memory
lock( )/unlock( ) flash
drivers
NAND flash DiskOnChip flash ROM chips Virtual devices appearing as read_oob( )/write_oob( )
MTD devices read_ecc( )/write_ecc( )
suspend( )/resume( )
Memory devices hardware
Hardware (Flash+Placa)
19 INF01059 - Sistemas Embarcados 20
Mapeamento da flash Inicialização da mtd_info

• struct mtd_info (include/linux/mtd/mtd.h) • Para flashes NOR:


• Ponto central do MTD • Endereço E/S onde a flash está mapeada
• Estrutura de dados que mantém ponteiros para rotinas do core e • O tamanho da flash
das aplicações, tipo de flash (NOR ou NAND) e seu • Largura do barramento (8, 16, 32 bits)
mapeamento • Rotinas p
para read, write e cópia
p de blocos
• Mapeamento = divisão da flash em partições • Para flashes NAND
• Dividido em duas partes: • NAND recebe comandos a partir da CPU, portanto deve haver
• Criação e inicialização da estrutura mtd_info uma configuração inicial
• Registrar a estrutura mtd_info no core MTD • Uma vez configurada é necessário definir a mtd_info
• Auxilio de funções nand_chip( ); nand_scan( )

INF01059 - Sistemas Embarcados 21 INF01059 - Sistemas Embarcados 22

Registro da mtd_info Dispositivos de bloco/caracter

• Adicionar o dispositivo na estrutura do núcleo • O MTD oferece dois drivers diferentes para serem usados:
• Particionamento: • Caracter: /dev/mtd? /dev/mtdr? (? = 0, 1, 2,...15)
• Permite criar múltiplas partições na flash (pode ter diferentes • Bloco: /dev/mtb? (?=0, 1, 2... 15)
FS) e tamanho
• Feito com auxilio de estruturas de dados (struct mtd_partition) e
/d // td1
/dev//mtd1 Major=90; minor=1 /dev/mtdb1 Major=31; minor=1
funções (add_mtd_partition)
• Concatenação
• Possibilidade de fazer com que duas flashes sejam vistas como
uma única flash (virtual) Char device Block device

mdt_table

INF01059 - Sistemas Embarcados 23 INF01059 - Sistemas Embarcados 24


Mtdutils package Sistemas de arquivos para embarcados

• Conjunto de programas para criação, utilização, inicialização • Ramdisk


e testes de dispositivos MTD • RAMFS
• Utilitários: • CRAMFS (Compressed File System)
• erase, eraseall, nftl_format, nftldump, doc_loadbios,doc_loadip1, • JFFS e JFFS2 (Journaling Flash File Systems)
nandum, nandtest, nandwrite, mkfs.jffs2, lock, unlock,
mtd_debug, fcp • NFS
• PROC File system

INF01059 - Sistemas Embarcados 25 INF01059 - Sistemas Embarcados 26

O que é necessário em um sistema linux


Dica 1: Swap, usar ou não usar? Eis a questão...
embarcado real

• Arquivos imprescindíveis • Swap


• init (o processo que será o pai de todos, pid = 1) • Sem controle direto do programador
• Bibliotecas necessárias a carga de processos • Gerenciado pela MMU
• Libc, para permitir a execução de aplicativos • Diminui tempo de resposta (page faults)
• Arquivos
q desejados
j • “Fatal” p
para dispositivos
p baseados em flash
• Binutils: vários utilitários empregados por scripts de inicialização • Número de escritas limita a vida útil
e por outros programas • Recomendação:
• Shell (para permitir scripts e interação na console remota/local) • Reduzir a ocupação de memória e desabilitar swap no kernel
• Acesso remoto (telnet, ssh, etc...) • Opção de fazer a MMU do processador realizar a proteção
• Selecionar entre ligações estáticas ou dinâmicas de memória com limite de endereçamento existente de
memória RAM

INF01059 - Sistemas Embarcados 27 INF01059 - Sistemas Embarcados 28


Dicas 2: Sistemas de arquivos a blocos para flash Roadmap para escolha de sistema de arquivos

• Tipicamente para armazenamento de dados Orientações genéricas


• Não se pode usar jff2 ou yaffs
• Emulação MTD pode ser usada, mas pode haver conflitos nas
Tipo de Bloco Não Não Não
politicas de escritas do jffs/yaffs com o gerenciamento feito on- Dados
armazenamento Read-only? É flash?
chip voláteis?
?
• Não usar sistemas de arquivos jornalizados Sim
• A manutenção do jornal e escrita regular em mesmo setores MTD
Sim Sim
compromote a vida util Usar jffs2 ou yaffs2
usar ext2 Usar ext3, reiser4,
read-only ou read-
• Empregar um sistema de arquivo tipo fat ou ext2 com as write com noatime + sync XFS or JFS
seguintes opções de montagem como opções para mount

• noatime: não põe data de modificação nos i-nodes Usar Squashfs


read-only usar tmpfs
• sync: escrita imediata sem passar pela cache de E/S
• Reduz inconsistências em caso de falta de energia

29 30

Dicas 3: misturar sistemas de arquivos read-only e


Utilitários comuns
read-write

• Separar os espaços de endereçamentos • Criação de um sistema de arquivos (filesystem)


• Usar um sistema de arquivos read-only com compressão, • Definir quais são os diretórios e arquivos necessários
como o squashfs, para o rootfs • Criar uma imagem no sistema de desenvolvimento
• Compressão economiza espaço • Colocar a imagem no dispostivo (tftp, gravador externo, monitor,
• O que tem no rootfs dificilmente é modificado (binários, kernel, etc..)
scritps etc)
scritps,
• Evita problemas de inconsistências • Alguns exemplos de ferramentas:
• Partição read-write jornalizada para armazenar dados de • mkcramfs (script), mkisofs (utiliário), mkfs.jffs (utilitário), cpio
configuração ou do usuário • Script para criar ramdisks
• Garante a consistência em caso de falta de energia • Referência: Linux Initial RAM disk (initrd) overview, de Tim
• Atividade que não é feita corriqueiramente Jones, em http://www.ibm.com/developerworks/linux
• Partiçãoem RAM read-write para arquivos temporários • Buildroot
• Uso do tmpfs • Busybox
• ...

31 INF01059 - Sistemas Embarcados 32


Leituras complementares

• P. Ragavahn, A. Lad, S. Neelakandan. Embedded Linux


System Design and Developement. Auerbach, 2006.
• C. Hallinan. Embedded Linux Primer: A Practical Real-World
Approach. Prentice Hall, 2006.
• K. Yaghmour.
g Building
g Embedded Linux Systems.
y Oreilly,
y
2003.

INF01059 - Sistemas Embarcados 33

Você também pode gostar