trabalho de conclusão de curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual,...

78
UFSC UNIVERSIDADE FEDERAL DE SANTA CATARINA PREG PRÓ-REITORIA DO ENSINO DE GRADUAÇÃO CURSO DE CIÊNCIAS DA COMPUTAÇÃO Trabalho de Conclusão de Curso Odyr Apoena Bernanos de Zayas Sohn Florianópolis SC 2011

Upload: duongtu

Post on 11-Nov-2018

222 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

UFSC – UNIVERSIDADE FEDERAL DE SANTA CATARINA

PREG – PRÓ-REITORIA DO ENSINO DE GRADUAÇÃO

CURSO DE CIÊNCIAS DA COMPUTAÇÃO

Trabalho de Conclusão de Curso

Odyr Apoena Bernanos de Zayas Sohn

Florianópolis – SC

2011

Page 2: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

UNIVERSIDADE FEDERAL DE SANTA CATARINA

Desenvolvimento de aplicativo do driver sintonizador

com diversidade para Linux embarcado em Set Top

Box

Odyr Apoena Bernanos de Zayas Sohn

Florianópolis – SC

2011

Page 3: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

2

UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA

CURSO DE CIÊNCIAS DA COMPUTAÇÃO

Desenvolvimento de aplicativo do driver sintonizador com

diversidade para Linux embarcado em Set Top Box

Odyr Apoena Bernanos de Zayas Sohn

Trabalho de conclusão de curso apresentado como parte dos requisitos para obtenção do grau de Bacharel em Ciências da Computação.

Carlos Aurélio Faria da Rocha, Dr.

Orientador

Florianópolis - SC 2011

Page 4: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

v

Título: Desenvolvimento de aplicativo do driver sintonizador com diversidade

para Linux embarcado em Set Top Box

Aluno: Odyr Apoena Bernanos de Zayas Sohn

Banca Examinadora:

____________________________________

Prof. Carlos Aurélio Faria da Rocha, Dr. Orientador

____________________________________

Prof. Antônio Augusto Fröhlich, Dr.

____________________________________

Prof. Raimes Moraes, Ph.D.

Page 5: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

vi

SUMÁRIO

Resumo .............................................................................................................. vii

Figuras .............................................................................................................. viii

Códigos .............................................................................................................. ix

Siglas ................................................................................................................... x

1 Introdução .................................................................................................. 1

2 Fundamentação Teórica ............................................................................ 6 2.1 Sistema Operacional Linux .......................................................................... 6 2.2 Drivers para Linux ........................................................................................ 9 2.3 Plataforma de Desenvolvimento da ST (STAPISDK) ................................. 10 2.4 Set Top Box ............................................................................................... 11 2.5 Sistema de Transmissão de TV-Digital ISDB-T ......................................... 13 2.6 Sintonizador de TV-Digital ......................................................................... 15 2.7 Protocolo de Comunicação I2C .................................................................. 19 2.8 Ferramentas Utilizadas .............................................................................. 21 2.8.1 Picocom ..................................................................................................... 21 2.8.2 U-Boot ........................................................................................................ 22 2.8.3 i2c-tools ..................................................................................................... 23

3 Desenvolvimento ..................................................................................... 24 3.1 Compilando as Imagens do STLinux e do U-Boot ..................................... 24 3.2 Embarcando o U-Boot ............................................................................... 26 3.3 Adaptação do Driver para o Sintonizador SIRDAI ..................................... 30 3.4 Criação do aplicativo sintonizador ............................................................. 35 3.5 Integração do Aplicativo Sintonizador com a STAPI .................................. 37

4 Conclusão ................................................................................................ 42

REFERÊNCIAS .................................................................................................. 44

ANEXOS ............................................................................................................. 45 ARTIGO.............................................................................................................61

Page 6: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

vii

Resumo

A necessidade de uma melhor recepção do sinal digital motivou o

projeto SIRDAI-TVD a desenvolver um novo sintonizador com sistema de

recepção com diversidade. O sintonizador produzido foi instalado em um Set

Top Box de uso doméstico e facilmente encontrado no mercado. Este

trabalho apresenta procedimentos para embarcar um sistema operacional

Linux em um Set Top Box. Abordando desde a utilização de ferramentas para

diagnóstico do protocolo I2C e comunicação serial RS-232, assim como

procedimentos para compilar o U-Boot e o STLinux para a arquitetura Super-

H (SH4) do chip STi7109. A pesquisa também apresenta informações sobre o

sistema ISDB-T, objetivando a programação de funcionalidades relacionadas

a banda e frequência no rastreamento e sintonização de canais do SBTVD. O

estudo sugere diretrizes de como implementar, em linguagem C, um

aplicativo para o sintonizador com chip de diversidade de recepção. O

aplicativo terá a finalidade de sintonizar e rastrear canais do sistema

brasileiro de transmissão terrestre de TV-Digital no padrão ISDB-T executado

em um Set Top Box.

Palavras-chave: Sistemas Operacionais, Sistemas Embarcados, Linux, Set

Top Box, TV Digital, Transmissão Digital Terrestre, ISDB-T, STLinux, SH4,

Super-H.

Page 7: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

viii

Figuras

FIGURA 1 - EXEMPLO DE CAMADAS DO KERNEL DO LINUX. .......................................... 8

FIGURA 2 - ORGANIZAÇÃO DE CAMADAS DA STAPISDK ........................................... 11

FIGURA 3 – EXEMPLO DE UM DIAGRAMA DE BLOCOS DE STB. .................................... 12

FIGURA 4 - STB PROVIEW XPS-1000 UTILIZADO NESTE TRABALHO. .......................... 12

FIGURA 5 – DIAGRAMA BÁSICO PARA TRANSMISSÃO DO SINAL ISDB-T. ...................... 13

FIGURA 8 - ATRASO DEVIDO O CAMINHO PERCORRIDO PELO FLUXO DE DADOS. ........... 18

FIGURA 9 - SINTONIZADOR SIRDAI COM DOIS SOCS DIBCOM DIB8096. ................. 19

FIGURA 10 - EXEMPLO DO BARRAMENTO I2C............................................................ 20

FIGURA 11 - DIAGRAMA DE SINAIS PROTOCOLO I2C.................................................. 20

FIGURA 13 - SISTEMA MESTRE/ESCRAVO DOS CHIPS COM DIVERSIDADE. .................... 34

FIGURA 14 - CAMADAS DO LINUX, APLICATIVO SINTONIZADOR, STAPP. ..................... 41

FIGURA 15 - SEGMENTAÇÃO DO CANAL EM FORMATO ISDB-T. .................................. 56

FIGURA 16 - EXEMPLO DE DIAGRAMA DE BLOCOS DE UM FONT-END RECEPTOR .......... 57

FIGURA 17 - EXEMPLO DE DIAGRAMA DE BLOCOS DE UM BACK-END RECEPTOR. ......... 57

FIGURA 18 - INDICAÇÃO DOS POLOS PARA O CONECTOR TTL NA PLACA DO STB. ........ 59

FIGURA 19 - VISÃO GERAL DO EQUIPAMENTO UTILIZADO.. ......................................... 59

FIGURA 20 - DETALHE DO SINTONIZADOR SIRDAI. ................................................... 60

FIGURA 21 - DETALHE DA CONEXÃO DO SINTONIZADOR SIRDAI ................................ 60

Page 8: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

ix

Códigos

CÓDIGO 1 - UTILIZAÇÃO BÁSICA DO APLICATIVO PICOCOM. ................................................ 21

CÓDIGO 2 - CÓDIGO PARCIAL DE CONFIGURAÇÃO DA STAPISDK. ..................................... 25

CÓDIGO 3 - SEQUENCIA DE COMANDOS PARA COMPILAR O KERNEL DO STLINUX. ................ 26

CÓDIGO 4 - SEQUENCIA DE COMANDOS PARA COMPLIAR O U-BOOT PARA SH4. .................. 26

CÓDIGO 5 - TERMINAL 1, COM O CARREGAMENTO DO U-BOOT. .......................................... 28

CÓDIGO 6 - TERMINAL 2, COM A SAÍDA DA CONEXÃO SERIAL NO STB. ................................. 29

CÓDIGO 7 - PROCEDIMENTOS DE CONFIGURAÇÃO MANUAIS PARA O BOOT VIA NFS ............. 30

CÓDIGO 8 - UTILIZAÇÃO DO I2C-TOOLS, PARA RASTREAMENTO DE ENDEREÇOS. ................. 31

CÓDIGO 9 - PSEUDO-ALGORITMO PARA ESCRITA DOS ATRASOS NOS CHIPS. ........................ 33

CÓDIGO 10 - PSEUDO-ALGORITMO PARA IMPLEMENTAÇÃO DO SISTEMA MESTRE/ESCRAVO. . 35

CÓDIGO 11 - PSEUDO-ALGORITMO PARA IMPLEMENTAÇÃO DO APLICATIVO RASTREADOR. .... 36

CÓDIGO 12 - SEQUENCIA DE COMANDOS PARA COMPILAR E INSTALAR O STLINUX ............... 37

CÓDIGO 13 - PARTES MODIFICADAS DO ARQUIVO STAPISDK/STAPP/MAKEFILE ..................... 38

CÓDIGO 14 - SAÍDA DO APLICATIVO RASTREADOR DE CANAIS ISDB-T. ............................... 39

CÓDIGO 15 - EXEMPLO DE UTILIZAÇÃO DO PIPE COM FILE DESCRIPTOR NO LINUX. ............ 40

Page 9: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

x

Siglas

ST STMicroeletronics

STAPI Interface de programação de aplicativos da ST

STAPISDK

STM

Kit de desenvolvimento de aplicativos da STAPI

STMicroeletronics

STB

SO

TVD

SIRDAI-TVD

IIC

Set Top Box

Sistema Operacional

Sistema de Televisão Digital

Sistema de Recepção com Diversidade e Antenas

Inteligentes para TV Digital

Protocolo de Comunicação Inter-Integrated Circuit

Page 10: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

1

1 INTRODUÇÃO

A TV Digital é uma realidade no mundo inteiro, porém a maioria dos

países1 está em processo de transição tecnológica. É o caso do Brasil que

em 2007 instituiu o padrão ISDB-T2, sendo que São Paulo foi a primeira

cidade brasileira a disponibilizar o sinal de TVD. Atualmente, os olhares estão

voltados para 2016, data prevista para o switch-off do modelo analógico, ou

seja, plena ativação da transmissão digital.

Além de transmitir a programação tradicional das emissoras de TV, a TV

Digital possui características diferenciadas para os espectadores, não só na

qualidade de experiência audiovisual, mas também na acessibilidade e

possibilidade de interação. Com relação a interatividade, em Portugal, foram

realizadas experiências com interatividade no âmbito da TV a Cabo, relatadas

no livro de Nuno Bernardo, “O guia prático da produção de televisão

interactiva”. A definição de TV Digital Interativa, ou TVDI, de acordo com o

autor, é a seguinte:

“A Televisão Digital Interactiva (iTV – Interactive Television) permite que o telespectador possa interagir com uma aplicação que é entregue em complemento ao sinal de televisão, através de uma rede digital, que pode ser satélite digital, cabo digital ou digital terrestre. Esse é o resultado da união da televisão tradicional e o poder da Internet através da adição de elementos interactivos a programas de TV tradicionais.... A Interactividade varia de programa para programa, mas o telespectador poderá obter mais informações sobre o programa que está a visualizar, votar em

1 Há uma lista no Anexo A citando alguns países e seus respectivos prazos de

implantação da TV Digital. 2 Padrão de transmissão digital terrestre de serviços integrados.

Page 11: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

2

sondagens, enviar mensagens para os apresentadores do programa ou colocar uma questão directamente ao entrevistado de um talk show”. (BERNARDO, 2002, p. 16)

Os aparelhos decodificadores destinados ao uso doméstico, utilizados

no âmbito da TV Digital, são os chamados Set Top Box, ou STB. Este pode

ser ligado à maioria dos televisores brasileiros. Predicados importantes, como

a interatividade, se tornam mais fáceis de desenvolver devido à flexibilidade

da utilização de sistemas operacionais embarcados nos Set Top Boxes. O

sistema operacional Linux desempenha um papel muito importante nesta

área de aplicação, sendo popularmente utilizado nestes dispositivos.

No final dos anos 90 alguns usuários de TV a cabo já estavam

utilizando Linux embarcado em sistemas de captura e decodificação de TVs a

cabo nos Estados Unidos da América. Inicialmente, estes aparelhos eram

utilizados para burlar os sistemas de bloqueio das companhias de TV a cabo

e disponibilizar o sinal para usuários que não pagavam pelo serviço. Isto

demonstra a flexibilidade da utilização do SO Linux, sendo que os

desenvolvedores contavam com um sistema conhecido, suportes e drivers

básicos, além da possibilidade de programarem em linguagens como C,

facilitando depuração e produção de software para o dispositivo embarcado.

Quando se trabalha com sistemas embarcados, são comuns os casos

em que o SO Linux não possua suporte a algum hardware específico. Este

pode ter sido fabricado exclusivamente para o sistema embarcado, logo,

surge a necessidade de desenvolver um driver para este hardware ou

dispositivo ligado ao sistema. Com um driver, é possível acessar e disparar

funcionalidades específicas daquele hardware de maneira homologada pelo

seu fabricante. Ocasionalmente, pode ocorrer a omissão, pelos fabricantes,

de especificações técnicas do dispositivo, dificultando muito o

desenvolvimento do driver que usufrua corretamente de suas

Page 12: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

3

funcionalidades. Nestes casos, é preciso utilizar técnicas de engenharia

reversa para adquirir informações necessárias à criação do driver.

Os sistemas embarcados, Set Top Boxes, cuja principal funcionalidade

é receber o sinal da TV Digital, decodificar, descompactar este sinal

decodificado e mostrar a imagem ao expectador, não se limitam a apenas

estas funções básicas. Várias funcionalidades extras são desenvolvidas nos

sistemas operacionais Linux embarcados nos STBs. Um exemplo é a

gravação de programas da TV Digital, em horários pré-programados,

armazenando-os em dispositivos e mídias removíveis, como pendrives USB.

Outra aplicação é a interação com o usuário, como enquetes, por exemplo,

em que o expectador pode responder com o controle remoto do dispositivo e

suas respostas serem enviadas através de uma conexão do STB com a

internet.

Outra propriedade da TV Digital é em sua disponibilidade para

dispositivos móveis como celulares, por exemplo. Com a TV Digital é possível

transmitir dados codificados de maneira compatível com as características de

decodificação limitadas destes dispositivos, assim, necessitando de menor

poder embarcado para exibir o vídeo. Porém, nestes dispositivos móveis, um

grande problema é a recepção do sinal transmitido. Como se trata de

dispositivos que podem estar em movimento variável e em localidades com

baixa qualidade de sinal, é necessário que novas tecnologias na recepção do

sinal sejam desenvolvidas.

Com o objetivo de desenvolver uma nova tecnologia na recepção do

sinal de TV-Digital, o projeto SIRDAI-TVD foi criado a partir de um consórcio

entre INATEL, PUCRS, UNICAMP, UFSC, UFPR, Mackenzie e CTI. O

GPQCOM3, Grupo de Pesquisa em Comunicações do Departamento de

Engenharia Elétrica, representou a UFSC neste projeto, tendo como

3 GPQCOM - gpqcom.ufsc.br

Page 13: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

4

colaboradores atuantes no projeto, Prof. Carlos Aurélio Rocha, Prof. Raimes

Moraes, Prof. Leonardo Resende e Me. Eng. Eletr. Gustavo Corrêa Lima. Um

dos objetivos deste projeto foi um sistema de arranjo de antenas inteligentes

com suporte a diversidade de sinal. O sistema demandou o desenvolvimento

de um novo sintonizador com componentes ainda pouco vinculados no

mercado. Este protótipo desenvolvido utiliza chips DiB8096, da fabricante

DIBCOM, para efetuar a recepção e demodulação do sinal de TV Digital.

Como se tratava de um novo dispositivo ligado ao Set Top Box, não havia

suporte de drivers para este sintonizador no Linux embarcado, isto geraria a

necessidade do desenvolvimento de um novo driver. No entanto, foi

disponibilizado pelo fabricante do chip, um driver de referência utilizado como

base e adaptado para as funcionalidades requeridas neste novo sintonizador

de TV Digital do projeto SIRDAI-TVD.

O STB de desenvolvimento utilizava uma plataforma da

STMicroeletronics, com o processador STi7109 de arquitetura SuperH (SH4).

Desta maneira foi possível embarcar o sistema operacional STLinux, mantido

pela própria ST. Para a inserção do driver resultante na interface de

aplicações do Set Top Box, foi utilizada a plataforma de desenvolvimento da

ST para o STLinux, a STAPISDK, a qual dispôs de ferramentas que

facilitaram o desenvolvimento deste trabalho.

O sintonizador produzido pelo projeto SIRDAI-TVD utiliza o sistema de

transmissão em vias terrestres. Vias terrestres são aquelas transmitidas por

ondas de radiofrequência, em que os sinais digitais são transmitidos no ar e

necessitam de antenas e receptores apropriados para a sua recepção. Uma

das características deste sistema de transmissão é o custo econômico mais

baixo de implantação, sendo que não é preciso pagar pela transmissão, como

nos casos com transmissões via satélite, e também os custos de

infraestrutura são menores que os de transmissões via cabo, por exemplo.

Desta maneira basta que às emissoras de televisão transmitam e os

consumidores recebam com um aparelho decodificador de TV-Digital, pelo ar,

Page 14: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

5

sem a necessidade de cabeamento específico, ou aluguel de satélites. No

Brasil as transmissões terrestres de TV-Digital utilizam o padrão ISDB-T, que

trabalha na faixa VHF e UHF, sendo que cada canal tem uma banda de

6MHz [6] . Apesar de especificada a banda VHF, ainda é utilizada apenas a

UHF para transmissões da TV-Digital.

Será apresentado um estudo sobre algumas ferramentas que auxiliam no

desenvolvimento no sistema embarcado utilizado. Também algumas

diretrizes para o desenvolvimento de um aplicativo que utiliza o driver de um

sintonizador para rastrear canais da TV-Digital do sistema de transmissão

ISDB-T.

Page 15: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

6

2 FUNDAMENTAÇÃO TEÓRICA

2.1 SISTEMA OPERACIONAL LINUX

De acordo com Tanenbaum [1], um sistema computacional moderno é

composto por um ou mais processadores, memória principal, dispositivos de

armazenamento permanente (discos rígidos), dispositivos periféricos

(impressoras, scanners, etc.), teclado, monitor, interfaces de rede e outros

dispositivos de entrada e saída. É um sistema complexo, o que torna

extremamente difícil o desenvolvimento de programas capazes de controlar

todos estes componentes corretamente. Por esta razão, os computadores

fazem uso de um software especial denominado sistema operacional, cujas

funções principais concentram-se em gerenciar os diferentes componentes

de dispositivo e fornecer aos programas do usuário uma interface para

interação com este dispositivo de forma padronizada e mais simples.

O gerenciamento do acesso aos periféricos é uma das tarefas mais

importantes de um sistema operacional embarcado. Há diferentes formas de

um sistema operacional gerenciar esta comunicação, porém a forma mais

comum, utilizada pela grande maioria dos sistemas operacionais, é a criação

de camadas específicas para as interações que ocorrem entre programas de

usuários, na camada do usuário, e o dispositivo do computador, na camada

do kernel. Neste caso, sempre que um programa necessita algum tipo de

operação de entrada e saída, não a solicita diretamente ao dispositivo, mas

sim ao sistema operacional. Com este controle é possível uma maior

estabilidade do sistema operacional, bloqueando programas que não tem

permissão de utilizar ou interagir diretamente com o dispositivo e também

mantendo uma camada de abstração que possibilita maior conforto na

programação dos aplicativos do usuário.

Page 16: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

7

O finlandês Linus Torvalds, cientista da computação que idealizou e

criou o sistema operacional Linux, não imaginava o grande impacto que sua

iniciativa teria. Não somente quanto à modernização dos sistemas

operacionais, mas como na modelagem de uma nova cultura de fabricação e

disponibilização de produtos da computação. Ao lançar sua ideia para o

mundo, Linus Torvalds demonstra sua “ingenuidade” quanto a abrangência e

o impacto de seu projeto, algo que se pode ver em sua citação durante uma

lista de discussão por e-mail:

“I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones.” (Torvalds, Linus (1991-08-25). Post to comp.os.minix newsgroup)4

Linus Torvalds se baseou no sistema operacional Minix de Andrew S.

Tanenbaum (TANENBAUM, Andrew S., 2008, p23) para desenvolver o Linux.

Na época, o Minix era utilizado apenas como uma ferramenta de ensino em

ambientes acadêmicos. Este sistema não era adequado para uso em outros

ambientes. Atualmente em sua 3ª versão, o Minix ambiciona ser um sistema

operacional para aplicações reais com foco em sistemas de recursos

limitados, como, por exemplo, os sistemas embarcados.

Apesar de possuir concepções herdadas do Minix e Unix, os códigos

contidos no Linux foram totalmente reescritos. O Linux evoluiu muito

rapidamente desde sua concepção inicial e seu desenvolvimento ramificou-se

na tentativa de solucionar as mais diversas necessidades de sistemas

computacionais. Suas vertentes mais popularmente conhecidas são quanto

ao seu uso como um sistema operacional para usuários comuns - aqueles

que não sabem programar ou diagnosticar um sistema operacional[1]. Devido

a suas características para licenciamento de modificação de código e

4

http://groups.google.com/groups?hl=en&selm=1991Aug25.205708.9541%40klaava.

Helsinki.FI

Page 17: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

8

distribuição gratuita, o Linux se tornou uma ferramenta muito importante nas

vertentes de aplicações de sistemas operacionais em sistemas embarcados.

As tarefas mais importantes do sistema operacional são administradas

por um conjunto de códigos que formam o núcleo deste sistema. O núcleo do

SO Linux é chamado de kernel e possui a responsabilidade de gerenciar

recursos de E/S5, memória e processamento para os aplicativos do sistema

operacional. Na figura abaixo, observa-se as diferentes atribuições do Kernel.

Figura 1 - Exemplo de camadas do Kernel do Linux.

Para a utilização do Linux em uma plataforma embarcada, devemos

adequá-lo às condições desta. Características como a arquitetura do

processador e dispositivos anexos a plataforma são cruciais. Através de

ferramentas de cross-compiling, é possível desenvolver, compilar e testar

programas destinados a uma arquitetura de destino diferente da arquitetura

de origem. Como exemplo genérico, esta técnica possibilita compilar um

5 Entrada e Saída

Page 18: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

9

kernel Linux para processadores PowerPC, a partir de um ambiente de

desenvolvimento executado em um processador x86.

O STLinux6 é um sistema operacional Linux com componentes e

ferramentas específicas para plataformas da STM. O STB escolhido para

desenvolvimento possui o chipset STi7109, logo, o STLinux e suas

ferramentas facilitarão o desenvolvimento deste trabalho. Baseado no mesmo

kernel que pode ser encontrado no website kernel.org, o STLinux é otimizado

para rodar em plataformas e placas da STM de arquitetura Super H 4 (SH4),

além de prover total compatibilidade com drivers da STAPI, interface que

disponibiliza recursos avançados para hardwares e aplicações das placas da

STM.

2.2 DRIVERS PARA LINUX

Segundo Rubini [2], um driver é escrito para interagir de forma

planejada na camada do sistema operacional destinada a ele. No âmbito de

um sistema operacional Linux, na camada de usuário, o driver desempenha a

função de intermediar o acesso dos programas, aos dispositivos controlados

na camada do kernel. Utilizando-se de protocolos de comunicação

específicos do sistema ao qual o driver está acessando e também todas as

características de escrita e leitura de registradores para o controle deste

dispositivo. Estas informações são muitas vezes fornecidas pelo fabricante do

dispositivo. Desta forma, o programa na camada de usuário acessa apenas

funções que procuram abstrair procedimentos padronizados, intrínsecos às

características do dispositivo, promovendo estabilidade, segurança e

confiabilidade para o sistema, limitando o usuário a controlar o dispositivo da

forma arquitetada e validada pelo desenvolvedor do driver ou fabricante do

dispositivo.

6 Para baixar uma cópia do STLinux acesse ftp://ftp.stlinux.com/pub/stlinux/

Page 19: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

10

Em um sistema embarcado, devem-se levar em consideração as

características específicas deste sistema. Na adaptação do driver para o

dispositivo sintonizador do projeto SIRDAI-TVD, o sistema operacional

utilizado foi o STLinux, o qual oferece várias ferramentas importantes para

esta implementação. Também foi utilizada a STAPI, que promove um acesso

otimizado aos hardwares presentes no STB.

2.3 PLATAFORMA DE DESENVOLVIMENTO DA ST (STAPISDK)

A plataforma de desenvolvimento de software da STMicroeletronics, a

STAPISDK, possui ferramentas para a geração de sistemas operacionais

embarcados em placas da ST, além disso promove uma abstração da

camada do sistema operacional de desenvolvimento, sendo que pode ser

utilizada para desenvolvimento em ambientes Linux, OS21 e Windows.

O STB utilizado no projeto SIRDAI-TVD possuía placa da STM com o

chipset STi7109, versão 29bits. Para que aplicações que utilizam o kit de

desenvolvimento de software da ST pudessem usufruir do aplicativo para o

driver sintonizador, foi necessário inclui-lo na camada de aplicação STAPP,

de forma a tornar as funcionalidades do dispositivo sintonizador do projeto

SIRDAI-TVD disponível para aplicativos nesta camada. A seguir tem-se a

organização das camadas da STAPI.

Page 20: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

11

Figura 2 - Organização de camadas da STAPISDK

A camada da STAPI possui drivers específicos para as placas da STM,

como a placa do STB utilizado. Ela é instalada através de módulos no

STLinux, em tempo de execução. O pacote de módulos é chamado Multicom

e é compilado no mesmo momento em que a STAPISDK é compilada, mas

deve ser carregado através de um script gerado especificamente para aquela

compilação e após o boot normal do kernel.

2.4 SET TOP BOX

O Set Top Box, ou STB, é uma plataforma embarcada destinada

principalmente a recepção, transformação e disponibilização de sinal de TV-

Digital em conteúdo multimídia. Considere a figura abaixo como um diagrama

de componentes básicos de um STB.

Page 21: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

12

Figura 3 – Exemplo de um diagrama de blocos de STB.

No projeto SIRDAI-TVD, o aparelho STB escolhido foi do fabricante

Proview, devido a suas especificações técnicas e compatibilidade com a

plataforma da ST para desenvolvimento. O STB utilizado pode ser visualizado

na figura abaixo.

Figura 4 - STB Proview XPS-1000 utilizado neste trabalho. À direita, tem-se a placa retirada da caixa do STB.

Page 22: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

13

2.5 SISTEMA DE TRANSMISSÃO DE TV-DIGITAL ISDB-T

A sigla ISDB-T significa Terrestrial Integrated Services Digital

Broadcasting. É um sistema japonês, criado pela ARIB, Association of Radio

Industries and Businesses. Foi o sistema selecionado[6] como base para a

implantação nacional da transmissão de TV Digital. A característica principal

deste sistema é especificar a transmissão de vídeo, áudio e dados, de forma

independente ou em qualquer combinação destes. O receptor recebe um

sinal de radiofrequência e disponibiliza os dados para o decodificador. O

diagrama de blocos da figura seguinte representa as funcionalidades básicas

do sistema para sua transmissão e recepção.

Figura 5 – Diagrama básico para transmissão do sinal ISDB-T (as linhas pontilhadas representam fluxo de controle, enquanto que as contínuas, fluxo de sinal).

O ISDB-T suporta até cerca de 19Mbit/s e vários feixes de dados em

paralelo[5], traduzidos em transmissões diferentes de áudio, vídeo e dados.

Estes feixes de dados são conhecidos como Transport Stream, ou

abreviadamente TS. As camadas de áudio e vídeo são codificadas e então

multiplexadas. Opcionalmente pode ser multiplexada em conjunto com uma

Page 23: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

14

camada adicional de dados. Este TS resultante é então re-multiplexado com

demais TSs, em um bloco multiplexador de TSs, formando um feixe único de

dados contendo todos os demais. Este feixe único de dados resultante passa

por uma modulação e amplificação, para só então ser transmitido.

Embora interessantes, detalhes sobre a codificação e modulação de

um canal dentro do sistema ISDB-T não serão necessários para a

compreensão deste trabalho. Será utilizada apenas a frequência do canal

para que o sintonizador receba o sinal transmitido de forma adequada e

assim disponibilize o TS ao sistema embarcado do Set Top Box.

Para a transmissão digital foi reservada a faixa de 470 MHz a 806

MHz, com exceção da faixa de 608 MHz a 614 MHz, canal 37. Esta

transmissão ocorre dentro da faixa compreendida por UHF, Ultra-High

Frequency, pode-se traduzir em canais de 14 a 69, com exceção do canal 37.

Por uma questão organizacional, apenas depois de terminado o processo de

implantação da transmissão digital e encerramento das transmissões

analógicas é que a banda VHF, Very High Frequency, será utilizada também

para transmissões digitais.

Cada canal UHF dispõe de 6 MHz de banda, esta banda deve conter

14 segmentos, sendo que destes, apenas uma largura aproximada de 5,572

MHz, contendo 13 segmentos, são utilizáveis para a transmissão de dados. A

distribuição destes segmentos pode ser analisada de forma mais detalhada

na figura do Anexo D.

A transmissão no canal deve respeitar os limites de espaçamento e a

largura de banda utilizável normatizada pela ABNT NBR15601:2007, estes

limites podem ser vistos na figura abaixo.

Page 24: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

15

É possível verificar que há uma distância de 5/14 MHz para o início da

banda utilizável e que o primeiro segmento está no centro da banda utilizável

do canal. Logo, para sintonizar o receptor no segmento contendo o início do

TS, é preciso sintonizar na frequência resultante do centro da banda utilizável

contando com o deslocamento inicial da banda. Isto é equivalente tomar a

frequência base do canal e somar 3,142857 MHz. Por exemplo, a frequência

de sintonização do canal 40, cujo 626 MHz é sua frequência base, resultaria

em 629,142857 MHz.

2.6 SINTONIZADOR DE TV-DIGITAL

Um sintonizador de TV Digital pode ser separado em duas partes, são

elas o front-end e o back-end. De acordo com C. LI (2009) o front-end é o

bloco do conjunto do sintonizador receptor que opera na gama da

radiofrequência, chamados de blocos RF7, sendo o demodulador o

7 RF – Radiofrequência, faixa correspondente a frequência das ondas de rádio

Figura 6 - Limites de utilização da banda disponível normatizada pela ABNT 15601:2007.

Page 25: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

16

delimitador entre front-end e back-end. Já o back-end, ainda no caso do

receptor, opera após a demodulação na gama de frequências intermediárias8.

Abaixo pode-se visualizar o protótipo do sintonizador SIRDAI utilizado.

No sintonizador transmissor a saída do front-end é modulada e

passada aos blocos RF, que neste caso são chamados de back-end. Nota-se

que é o inverso do receptor.

Detalhando o bloco front-end dos receptores, Bowick (2007) diz que

um front-end RF9 inclui filtros RF, amplificadores de baixo ruído10 e mixers

necessários para processar sinais modulados recebidos pela antena. Ele é o

responsável pela seleção do canal, banda do canal e por todos os

procedimentos de limpeza de sinal necessários para uma boa qualidade de

recepção. Pode-se verificar na figura seguinte, um diagrama de blocos

genérico para um sintonizador receptor de sinal TVD.

O sintonizador com diversidade possui um bloco adicional, aqui

chamado de “Combinador de Diversidade”. Este bloco combina os sinais de

saída do bloco de equalização (EQ) e os sinais de outro demodulador. O

sistema de diversidade do sintonizador SIRDAI trabalha em um sistema de

mestre e escravos. No demodulador escravo o sinal de saída é o de seu

bloco combinador de diversidade. Portanto, ao tomar um caminho exclusivo e

8 Frequências intermediárias, também chamadas de low digital data rate

9 – Radiofrequência, faixa correspondente a ondas de rádio

10 LNA - low-noise amplifiers

Figura 7 - Diagrama de blocos genérico de um sintonizador.

Front-End Sinal RF Back-End TS

Page 26: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

17

não passando pelos demais blocos do demodulador, este sinal passa por um

barramento de diversidade para o demodulador seguinte da cadeia de chips.

O sintonizador mestre recebe a saída do bloco combinador de diversidade do

demodulador anterior na cadeia, combina com seu sinal e entrega a saída

para os blocos sequentes, que liberam o TS MPEG no canal se saída do

SIRDAI.

Figura 6 - Back-end receptor com diversidade, adicionado um bloco Combinador de Diversidade.

Na figura acima, tem-se o Back-End receptor com diversidade. Pode-

se verificar que o Combinador de Diversidade possui duas entradas e saídas

de sinal. Os blocos subsequentes, em vermelho, serão inabilitados nos chips

em que a saída Div OUT está ligada, denominados chips escravos. No chip

Saída do

Front-End

Conversor

A/D

Interpolação e Filtragem

FFT EQ

Combinador de Diversidade

Desentrelaçador Correção de

Erros MPEG TS

Div OUT

Div IN

Page 27: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

18

mestre, último chip da cadeia de diversidade, estes blocos serão ativados e a

saída Div OUT, desativada. Quando o sinal é captado pelo primeiro chip da

cadeia ele sofre um atraso adicional em relação ao sinal do chip seguinte.

Este atraso é decorrente da passagem pelo bloco Combinador de

Diversidade.

Figura 8 - Atraso devido o caminho percorrido pelo fluxo de dados.

O atraso é compensado no bloco combinador de diversidade do chip

seguinte na cadeia de diversidade. O bloco armazena fluxo de dados, em

modo FIFO11, pelo tempo necessário até que o atraso em relação ao primeiro

chip da cadeia seja alcançado, assim fica certificado que os dados de

recepção serão compatíveis com os dados de entrada do primeiro chip na

cadeia de diversidade. A informação sobre este atraso foi disponibilizada pelo

fabricante do chip para que ocorra a configuração apropriada dos chips em

modo de diversidade.

11

FIFO – First In First Out – modo em que o primeiro dado a chegar será o primeiro a

sair da fila.

Sinal RF da Antena

atraso

Sinal de saída do bloco Combinador de Diversidade

Page 28: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

19

Figura 9 - Sintonizador SIRDAI com dois SoCs12

DIBCOM DIB8096.

Na figura acima, pode-se visualizar o protótipo do sintonizador

resultante do projeto SIRDAI-TVD. Possuindo dois chips DIBCOM DIB8096,

suporta diversidade de recepção com duas entradas de antenas, conectadas

através dos conectores F coaxiais localizados na margem esquerda da

imagem.

2.7 PROTOCOLO DE COMUNICAÇÃO I2C

Grande parte dos sistemas operacionais Linux possuem suporte ao

protocolo I2C e o STLinux está incluso neste grupo. Isto facilitou, em termos

de depuração de problemas, a adaptação do driver de referência para o

sintonizador SIRDAI, uma vez que o controle dos chips no sintonizador é

realizado através deste barramento de comunicação no STB. Este protocolo

foi inicialmente concebido pela empresa Philips para a comunicação entre

componentes em televisores.

12

SoC – System on a Chip

Page 29: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

20

Figura 10 - Exemplo do barramento I2C, onde o dispositivo em azul se

tornou mestre e os em verde em escravos.

O Inter-Integrated Circuit (I2C), pode ser encontrado nos mais diversos

dispositivos. É um barramento que permite a comunicação serial entre

circuitos integrados em um sistema embarcado. A simplicidade do protocolo e

seus requisitos de hardware, permitem que ele seja implementado tanto em

hardware quanto em software utilizando poucos recursos.

Figura 11 - Diagrama de sinais protocolo I2C.

O barramento I2C requer duas conexões, uma para o sinal de clock

(SCL) e a outra para o sinal de dados (SDA). Todos os dispositivos, os quais

devem se comunicar, deverão conectar-se no mesmo barramento I2C. Desta

forma, qualquer dispositivo pode receber ou enviar informações para

qualquer outro ligado ao barramento I2C do sistema embarcado. O dispositivo

que inicia a comunicação se torna mestre, sendo que os outros dispositivos

Mestre

Barramento I2C

Escravo

Escravo Escravo

Page 30: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

21

se tornam escravos. Através de um sistema de endereçamento o dispositivo

mestre se comunica com o dispositivo escravo que responde àquele

endereço.

2.8 FERRAMENTAS UTILIZADAS

2.8.1 PICOCOM

É uma ferramenta para linux muito utilizada como terminal de

comunicação serial. Funciona através de emulação de terminais que

interpretam sinais básicos como CR e LF. A saída de terminal abaixo mostra

uma simples conexão serial utilizando o picocom.

Código 1 - Utilização básica do aplicativo Picocom.

# picocom -b 115200 /dev/ttyS0 picocom v1.4 port is : /dev/ttyS0 flowcontrol : none baudrate is : 115200 parity is : none databits are : 8 escape is : C-a noinit is : no noreset is : no nolock is : no send_cmd is : ascii_xfr -s -v -l10 receive_cmd is : rz -vv Terminal ready

Page 31: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

22

2.8.2 U-BOOT

Este utilitário gerencia de maneira mais simplificada as funcionalidades

para o carregamento de um sistema operacional. O procedimento de pre-

inicialização do sistema operacional é conhecido como boot loading, sendo

que o U-Boot13 é um aplicativo boot-loader. O U-Boot é utilizado

principalmente para dispositivos embarcados, pois suporta várias arquiteturas

de processadores como MIPS, ARM, Nios14, MicroBlaze15, entre outros. A

arquitetura SH416 é utilizada pelo chip STi7109 do Set Top Box de

desenvolvimento e é também uma das arquiteturas a qual o U-Boot oferece

suporte.

O U-Boot possui uma grande flexibilidade no carregamento de diversos

tipos de sistemas, pode-se carregar sistemas via interface de rede, cartões

de memória, dispositivos de armazenamento diversos17 e vários sistemas de

arquivos.

Dentre suas principais características, destacam-se:

Protocolos de carregamento via rede: TFTP, BOOTP, DHCP, NFS;

Suporte de carregamento via Serial: s-record, binary (via Kermit);

Modelos de memória Flash suportados: CFI NOR-Flash, NAND-Flash;

Utilitários de memória embutidos: copy, dump. crc, check, mtest;

Compatível com dispositivos de armazenamento: IDE, SATA, USB;

Tipos de sistemas de arquivos: raw block, ext2, fat, reiserfs;

Suporte a linha de comando busybox, com várias funcionalidades extras.

13

http://sourceforge.net/projects/u-boot 14

Nios é um soft-processor da Altera 15

MicroBlaze é um soft-processor da Xilinx 16

SH4 - Versão 4 da arquitetura SuperH 17

Pendrives USB, discos removíveis

Page 32: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

23

Logo, por sua flexibilidade e suporte a arquitetura SH4, o U-Boot foi

escolhido para carregar o STLinux no equipamento de desenvolvimento.

Visando agilidade nos processos de desenvolvimento, teste e depuração, foi

utilizada a opção de carregamento da imagem de kernel através do protocolo

de sistema de arquivos em rede, o NFS18. Este protocolo permite que o

sistema de arquivos seja armazenado na estação de desenvolvimento e

remotamente acessado como pasta raiz do sistema embarcado. Ao compilar

o STLinux e os fontes utilizados no projeto, foi possível acessa-los

diretamente no dispositivo embarcado, sem a necessidade de procedimentos

intermediários, como por exemplo, copiar os arquivos para um dispositivo de

armazenamento externo e preparar o dispositivo para se tornar pronto para o

boot.

2.8.3 I2C-TOOLS

O i2c-tools é um conjunto de ferramentas para depuração e controle de

dispositivos que se comunicam através do protocolo I2C. Já que a

comunicação com o chip do sintonizador SIRDAI utiliza o protocolo I2C, estas

ferramentas serviram para obter informações como o endereço do chip e se a

comunicação estava ocorrendo corretamente.

18

NFS - Network File System

Page 33: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

24

3 DESENVOLVIMENTO

O driver foi implementado na camada de aplicação da STAPISDK, o

código objetivou controlar o dispositivo utilizando o protocolo de comunicação

de entrada e saída serial Inter-Integrated Circuit (I2C) na arquitetura de

instrução SH4 do processador STi7109 da plataforma utilizada para testes no

STB da fabricante Proview. Desta forma foi possível ler e escrever nos

registradores específicos do chip DIB8096 controlando o que era necessário

para a sintonização de um canal de forma a aplicar a captura deste sinal com

diversidade de recepção, o que era o objetivo específico do projeto SIRDAI-

TVD. Este driver na camada de usuário do STLinux deveria ser portado para

a camada específica para aplicações de STBs, reprodutores de DVDs, entre

outros aparelhos que utilizam a STAPI como kit de desenvolvimento de

software para suas plataformas.

3.1 COMPILANDO AS IMAGENS DO STLINUX E DO U-BOOT

Quanto se está trabalhando com a STAPISDK, todas as configurações,

tanto das variáveis para configuração do kernel do STLinux quanto para

variáveis para a compilação da STAPI, estão no arquivo

/opt/STM/stapisdk/bin/setenv.sh. Para configurar o kernel STLinux deve-se

procurar a cláusula que define as variáveis de compilação no arquivo citado

anteriormente, no caso do STB utilizado neste trabalho, o modelo de sua

placa era MB442 (COCOREF_GOLD_7109_LINUX).

Page 34: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

25

Código 2 - Código parcial de configuração da STAPISDK, arquivo setenv.sh. Para maiores detalhes, verificar Anexo F.

É interessante ressaltar a variável $LINUX_PARAMETERS, que

representa os parâmetros de inicialização do kernel STLinux em seu

carregamento no STB. O endereço do cross-compiler SH4 é adicionado à

variável $PATH para que a STAPI e demais programas sejam compilados na

arquitetura da plataforma do STB.

Para carregar as configurações e variáveis de ambiente, execute os

procedimentos abaixo, podendo então compilar o kernel e a stapi após o

procedimento.

## STB7109 - COCOREF_GOLD/LINUX - Hardware configuration ## if [ "$1" = "COCOREF_GOLD_7109_LINUX" ] ; then echo COCOREF_GOLD_7109_LINUX Configuration selected ! (quebra de continuação) export PATH=/opt/STM/STLinux-$LINUX_VERSION/devkit/sh4/bin:$PATH export MANPATH=/opt/STM/STLinux-$LINUX_VERSION/host/man:$MANPATH export KDIR=/opt/STM/STLinux-$LINUX_VERSION/devkit/sources/kernel/linux-

sh4 export KTARGET=/opt/STM/STLinux-$LINUX_VERSION/devkit/sh4/target/root export LINUX_TARGETIP=192.168.0.10 export LINUX_SERVERIP=192.168.0.9 export LINUX_GWIP=192.168.0.1 export LINUX_NETMASK=255.255.255.0 export LINUX_NAME=stapisdk export LINUX_AUTOCONF=off export LINUX_SERVERDIR=/opt/STM/STLinux-

$LINUX_VERSION/devkit/sh4/target export LINUX_KERNEL=$KDIR/vmlinux export LINUX_PARAMETERS="console=ttyAS1,115200 \ root=/dev/nfs rw mtdparts=physmap-flash:256k,3072k,- \ nwhwconf=device:eth0,hwaddr:00:22:C2:00:78:15 \

nfsroot=$LINUX_SERVERIP:$LINUX_SERVERDIR,rsize=4096,wsize=8192,tcp \

ip=$LINUX_TARGETIP::$LINUX_GWIP:$LINUX_NETMASK:$LINUX_NAME:eth0:$LINUX_AUTOCONF \

mem=128m \ stmmaceth=phyaddr:5 \ coprocessor_mem=4m@0x10000000, 4m@0x10400000 \ bigphysarea=2500" fi

Page 35: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

26

Código 3 - Sequencia de comandos para compilar o kernel do STLinux.

Para compilar o U-Boot para a arquitetura SH4 deve ser utilizado o

procedimento abaixo. A placa utilizada no STB é a MB442, a qual deve ser

citada na configuração do compilador.

Código 4 - Sequencia de comandos para compliar o U-Boot para arquitetura SH4.

Desta forma obtêm-se as imagens necessárias para carregar o sistema

operacional embarcado no Set Top Box.

3.2 EMBARCANDO O U-BOOT

Para instalar o U-Boot, o STB precisa ser conectado através da

interface JTAG a um sistema host. Para isto foi necessário um dispositivo

especial19, fabricado pela própria ST. É necessário também, realizar uma

ligação serial RS-23220 entre a estação de desenvolvimento e o STB. A porta

serial da estação é do padrão RS-232-C, o qual prevê níveis de tensão entre 19

ST MicroConnect 20

Protocolo de comunicação serial

$ cd /opt/STM/STLinux-2.3/devkit/sources/u-boot/u-boot-sh4-1.3.1_stm23_0042/ $ make distclean $ make mb442_config $ make

$ cd /opt/STM/stapisdk/stapp $ source ../bin/setenv.sh COCOREF_GOLD_7109_LINUX $ make purge_kernel $ make kernel

Page 36: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

27

+- 3V e +- 15V. Já o STB possui interface RS-232 em nível TTL21, que utiliza

tensões de 0V e +5V, logo, foi necessário um conversor de TTL para RS-232-

C. Utilizando o chip MAX232 o Me. Eng. Comp. Pedro Giassi Jr. ajudou no

projeto, produzindo o conversor necessário para a comunicação. Fotos e

indicações das conexões estão disponíveis no Anexo H. As principais

ligações entre os dispositivos envolvidos nesta operação podem ser vistas na

figura abaixo.

Utilizando a ferramenta picocom inicia-se a conexão serial, com isso, a

saída deste terminal mostrará o resultado das operações realizadas no STB.

Em outro terminal, com a ferramenta sh4-linux-gdb, carrega-se o U-Boot para

o STB. O procedimento realizado para o carregamento do U-Boot no STB

pode ser verificado nas saídas de terminais abaixo.

21

TTL – Transistor-Transistor Logic

SET-TOP-BOX

ISDB-T MAX232

Figura 12 - Conexões entre os dispositivos no ambiente de desenvolvimento.

Antenas

HDMI

TTL

RS232

RJ45 x-over

Page 37: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

28

Código 5 - Terminal 1, com o carregamento do U-Boot através da conexão com o ST MicroConnect.

$ sh4-linux-gdb (gdb) sh4tp 192.168.0.10:mb442:st40,silent=1 The target is assumed to be little endian The target architecture is assumed to be sh4 0xa0000000 in ?? () (gdb) load /opt/STM/STLinux-2.3/devkit/sh4/target/boot/u-boot-

1.3.1_stm23_0042-mb442/u-boot Loading section .text, size 0x1f6b0 lma 0x93f00000 Loading section .rodata, size 0x834 lma 0x93f1f6b0 Loading section .rodata.str1.4, size 0x7ddc lma 0x93f1fee4 Loading section .data, size 0xcf0 lma 0x93f27cc0 Loading section .u_boot_cmd, size 0x570 lma 0x93f289b0 Start address 0x93f00000, load size 167712 (gdb) continue Continuing.

Page 38: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

29

Código 6 - Terminal 2, com a saída da conexão serial no STB durante o carregamento do U-Boot.

Será necessário acesso à interface de rede, uma vez que será utilizado

boot de kernel com sistema raiz de arquivos NFS. Para isso, no terminal

ligado à porta serial, ajusta-se o U-Boot com as configurações de rede locais.

Logo após pode-se salvar as configurações na memória e reiniciar o STB.

$ picocom -b 115200 /dev/ttyS0 picocom v1.4 port is : /dev/ttyS0 flowcontrol : none baudrate is : 115200 parity is : none databits are : 8 escape is : C-a noinit is : no noreset is : no nolock is : no send_cmd is : ascii_xfr -s -v -l10 receive_cmd is : rz -vv Terminal ready Board: STb7100-Reference (MB442) [29-bit mode] U-Boot 1.3.1 (Sep 30 2009 - 17:05:30) - stm23_0042 DRAM: 128 MiB NOR: 32 MiB *** Warning - bad CRC, using default environment In: serial Out: serial Err: serial MB442>

Page 39: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

30

Código 7 - Procedimentos de configuração manuais para o boot via NFS no U-Boot

Ao reiniciar o STB, ele irá procurar pela imagem de kernel de acordo

com a configuração22 prévia, no servidor NFS localizado em 192.168.0.9, na

pasta /opt/STM/STLinux-2.3/devkit/sh4/target.

No Anexo B, pode-se ver a saída do terminal conectado na porta serial

com o carregamento normal o STLinux embarcado no STB.

3.3 ADAPTAÇÃO DO DRIVER PARA O SINTONIZADOR SIRDAI

O fabricante do chip utilizado no sintonizador SIRDAI forneceu uma

API de driver referencial, em linguagem C, a qual possuía códigos

compatíveis com vários modelos de chips front-ends, inclusive o DiB809623.

Foram necessárias adaptações no código do driver para que funcionalidades

22

Como configurado no arquivo /opt/STM/stapisdk/bin/setenv.sh (Capítulo 3.1) 23

Chip da DIBCOM utilizado no sintonizador SIRDAI

MB442> setenv serverip 192.168.0.9 MB442> setenv netmask 255.255.255.0 MB442> setenv gatewayip 192.168.0.1 MB442> setenv ipaddr 192.168.0.10 MB442> setenv bootcmd nfs 0xa0040000 192.168.0.9:/opt/STM/STLinux-2.3/devkit/sh4/target \; bootm MB442> setenv bootargs console=ttyAS1,115200 root=/dev/nfs

nfsroot=192.168.0.9: /opt/STM/STLinux-2.3/devkit/sh4/target rw ip=192.168.0.10 MB442> saveenv Saving Environment to Flash... Unprotecting Flash.... done Un-Protected 1 sectors Erasing Flash...... done Erased 1 sectors Writing to Flash....... done Protecting Flash... done Protected 1 sectors MB442>

Page 40: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

31

requeridas pelo sistema de recepção com diversidade fossem habilitadas e

ocorressem dentro das especificações do fabricante.

A comunicação com os demoduladores é realizada através do

protocolo i2c. Para obter a informação sobre endereço I2C do chip front-end,

foi utilizado o programa i2cdetect, com ele foi possível rastrear e listar os

dispositivos presentes no barramento I2C. Para se ter certeza de que o

endereço é do dispositivo devem ser utilizadas as ferramentas i2cdump e

i2cget, as quais realizam leituras de registradores, assim comparando com a

documentação do chip buscado. Pode-se verificar na tela seguinte a

utilização o i2cdetect a partir do STLinux embarcado no STB.

Código 8 - Utilização do i2c-tools, para rastreamento de endereços.

No caso do sintonizador SIRDAI, há um controlador I2C para

comunicação interna entre os componentes do sintonizador. Este controlador

disponibiliza o acesso externo através de roteamento do sub-endereço,

extraindo este sub-endereço diretamente dos dados enviados. Por isso, é

possível comunicar-se com os demoduladores no sintonizador.

O sistema de recepção com diversidade trabalha com um chip para

cada entrada de sinal de radiofrequência, vindo da antena. Um arranjo de até

root@LDDE_LINUX:~# i2cdetect 0 WARNING! This program can confuse your I2C bus, cause data loss and worse! I will probe file /dev/i2c-0. I will probe address range 0x03-0x77. 0 1 2 3 4 5 6 7 8 9 a b c d e f

00: -- -- -- -- -- -- -- -- -- -- -- -- --

10: -- -- -- -- -- -- -- 17 -- -- -- -- -- -- -- --

20: -- -- 22 -- -- -- -- -- -- -- -- -- -- -- -- --

30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- 3e --

40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

50: -- -- -- -- -- -- -- -- -- -- -- -- 5c -- -- --

60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

70: -- -- -- -- -- -- -- --

Page 41: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

32

quatro antenas independentes pode ser conectado a estes chips, de forma a

melhorar a recepção deste sinal. É necessário que um dos chips se torne

mestre, enquanto que os outros trabalhem em modo escravo para ocorrer a

diversidade. Como há um atraso intrínseco ao caminho realizado pelo fluxo

de dados através dos blocos nos chips, é necessário especificar este atraso

corretamente na implementação do código para que o driver possa configurar

os registradores dos chips e compensar este atraso.

No driver de referência, um objeto é instanciado para cada chip. A

definição deste objeto contém todas as informações inerentes ao chip. Um

array contendo estes objetos é então utilizado no código para leitura dos

atributos inerentes aos chips. Destes objetos, a informação mais importante

para este trabalho é o atributo relativo ao atraso24 que cada chip deverá

utilizar para combinar os dados da diversidade. Um algoritmo genérico para

este procedimento seria o seguinte:

24

Para mais informações obre este atraso verificar capítulo “Sintonizador de TV-

Digital”.

Page 42: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

33

Código 9 - Pseudo-algoritmo para escrita dos atrasos nos chips sintonizadores.

No exemplo acima, temos 4 chips, cada um com seu sub-endereço I2C

e seus atrasos definidos. Os atrasos utilizados neste pseudo-algoritmo são

apenas ilustrativos. Esta informação depende de cada chip, logo, deverá ser

fornecida pelo fabricante do chip sintonizador com diversidade utilizado. A

função i2c_escreva_word_reg escreve uma palavra de 16bits em um

registrador de um componente interno do sintonizador, usando um endereço

base no barramento I2C base, no caso definido com o endereço 0x22 no

cabeçalho do código. O algoritmo mostrado registra os valores dos atrasos

em cada chip demodulador.

/// cabeçalho #define ENDEREÇO_BASE_SIRDAI_I2C 0x22 #define ENDEREÇO_REGITRADOR_ATRASO 56 struct chip { uint8_t subendereco_i2c; uint16_t atraso_diversidade; } /// código struct chip dib8096[4] = { { 0x90, 30 }, //chip mestre { 0x92, 20 }, //chip escravo { 0x94, 10 }, //chip escravo { 0x96, 0 }, //chip escravo (1

o da cadeia de recepção)

} for (int i = 0; i < sizeof(dib8096); i++){ i2c_escreva_word_reg(dib8096[i], ENDEREÇO_REGITRADOR_ATRASO,

dib8096[i].atraso_diversidade) } int i2c_escreva_word_reg(struct chip [ ], uint8_t reg, uint16_t dados) { uint32_t msg; msg = (chip.subendereco_i2c << 24) + (reg << 16) + dados; i2c_escreva (ENDEREÇO_BASE_SIRDAI_I2C, msg ); }

Page 43: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

34

Figura 13 - Sistema mestre/escravo dos chips com diversidade.

A imagem acima representa o caminho do sinal, através dos chips

sintonizadores, quando implementada a diversidade de recepção. As

entradas e saídas em vermelho estão desligadas, já as entradas e saídas em

verde, ligadas. Cada chip sintonizador está acoplado a uma antena de onde

recebe sinal RF25. Os tons em gradiente representam sinal melhorado e

também o aumento do atraso referente a passagem pelo bloco Combinador

de Diversidade em cada chip. O tom mais claro está com menor atraso que o

tom mais escuro. Este sistema ilustra o pseudo-algoritmo demonstrado no

Código 10.

25

RF – Radiofrequência, faixa correspondente a frequência das ondas de rádio

Sintonizador

Escravo 2

Div OUT

Div IN

T

S

O

U

T

Sintonizador

Escravo 1

Div OUT

Div IN

T

S

O

U

T

MPEG TS Sintonizador

Master

Div OUT

Div IN

T

S

O

U

T

Sintonizador

Escravo 0

Div IN

T

S

O

U

T Div OUT

RF

RF

RF

RF

Page 44: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

35

Código 10 - Pseudo-algoritmo para implementação do sistema mestre/escravo nos chips da cadeia de diversidade.

O pseudo-algoritmo acima, habilita a diversidade nos chips

configurando as saídas e entradas dos demoduladores para que se respeite a

hierarquia da cadeia de diversidade ilustrada na Figura 13.

3.4 CRIAÇÃO DO APLICATIVO SINTONIZADOR

Utilizando funções disponibilizadas pela API do driver de referência,

adicionalmente com as adaptações no driver vistas no capítulo anterior, foi

int count = sizeof(dib8096); uint16_t reg_div_e = 78; // endereco_registrador_entrada_diversidade uint16_t reg_div_s = 79; // endereco_registrador_saida_diversidade for (i = 0; i < count; i++) { if (i == count-1) { // Sintonizador Escravo 0 // configura a entrada de diversidade como desligada i2c_escreva_word_reg(dib8096[i], reg_div_e, 0); // configura a saida de diversidade como ligada i2c_escreva_word_reg(dib8096[i], reg_div_s, 1); } else { // demais Sintonizadores Escravos // configura a entrada de diversidade como ligada i2c_escreva_word_reg(dib8096[i], reg_div_e, 1); // configura a saida de diversidade como ligada i2c_escreva_word_reg(dib8096[i], reg_div_s, 1); } if (i == 0) { // Sintonizador mestre, apenas saida de TS ligada i2c_escreva_word_reg(dib8096[i], reg_div_s, 0); } }

Page 45: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

36

possível criar um aplicativo para rastrear os canais TVD disponíveis26 e

sintonizar em um canal específico para o recebimento do TS.

Código 11 - Pseudo-algoritmo para implementação do aplicativo rastreador de canais ISDB-T.

O algoritmo para rastreamento de canais produzido é baseado nas

normas oficiais do sistema de transmissão terrestre de TV Digital, adotado

pelo Brasil em 2007 (ABNT NBR 15601:2007). Com isso pode-se visualizar

na fração de código seguinte, todas as características intrínsecas às normas

brasileiras.

26

Com qualidade de sinal suficiente para sintonizar e receber o TS.

int bandwidth_kHz = 6000; // Largura da banda disponivel para o canal int RF_kHz = 177143; // Frequencia direta do primeiro canal VHF int RF_limite_VHF_kHz = 213143; // Frequencia do ultimo canal VHF int RF_limite_UHF_kHz = 803143; // Frequencia do ultimo canal UHF int salto_VHF_UHF_kHz = 260000; // Salto de 260MHz entre limites VHF e // UHF de transmissão // Canal 37 é reservado, quando chegar no 36 pula para o 38 int RF_canal_36 = 605143; while (RF_kHz <= RF_limite_UHF_KHz){ // Sintoniza todos os chips com diversidade sintoniza_div(dib8096, RF_kHz); // Verifica se o chip mestre encontrou um canal if(dib8096[0].status == STATUS_LOCKED){ // Adiciona a frequencia do canal no array de canais

encontrados canais[j] = RF_kHz; // Reinicia as configuracoes dos chips reiniciar(dib8096);

j++; } // Se atingiu o limite VHF, salta para UHF if (RF_kHz == RF_limite_VHF_kHz){ // Salto de 260MHz entre limites VHF e UHF de transmissão RF_kHz += salto_kHz } else if (RF_kHz == RF_36) { RF_kHz += 2 * bandwidth_kHz; // Salta o canal 37 (reservado) } else { // Soma a banda de canal, para testar o próximo canal RF_kHz += bandwidth_kHz; } }

Page 46: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

37

3.5 INTEGRAÇÃO DO APLICATIVO SINTONIZADOR COM A STAPI

Dois aplicativos foram produzidos, o tuner_tune e o tuner_scan, um

para realizar a sintonização em um canal, e o outro para rastrear canais

disponíveis. Os canais encontrados pelo tuner_scan serão impressos na

saída de terminal do STLinux.

Foi necessário o uso de ferramentas cross-compiling para compilar o

código direcionado ao STB (SH4). Estas ferramentas ficam localizadas no

diretório /opt/STM/STLinux-2.3/devkit/sh4/bin, porém sua utilização direta foi

desnecessária neste trabalho, uma vez que a STAPISDK automatiza todo o

procedimento utilizando makefiles. Na seguinte saída de terminal, podemos

ver como é executado o procedimento de compilação da STAPI.

Código 12 - Sequencia de comandos para compilar e instalar o STLinux e a STAPI no diretório raiz NFS para boot no STB

O driver foi inserido no makefile da STAPI de forma a ser compilado e

copiado para o sistema de arquivos do STLinux em conjunto com a

compilação normal da STAPI. Para isto foi adicionada uma variável de

$ cd /opt/STM/stapisdk/stapp $ source ../bin/setenv.sh COCOREF_GOLD_7109_LINUX $ make purge_all $ make all $ make install

Page 47: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

38

ambiente no arquivo setenv.sh chamada $SIRDAI. Esta variável é testada

dentro do makefile, caso ela exista o driver será compilado e instalado no

sistema embarcado. A seguir, podem-se ver trechos do

stapisdk/stapp/makefile:

Código 13 - Partes modificadas do arquivo stapisdk/stapp/makefile

Agora, quando a plataforma STAPI for compilada e instalada, estarão

disponíveis também no STB os aplicativos tuner_scan e tuner_tune. Abaixo

tem-se uma amostra da execução do aplicativo tuner_scan rodando no

STLinux embarcado no STB:

… … ifeq "$(SIRDAI)" "1" @$(ECHO) Building SIRDAI DRIVER... -@$(MAKE) all -C sirdai/main/ endif … … … ifeq "$(SIRDAI)" "1" install : install_make_dirs install_stapi install_stgfb install_sirdai else install : install_make_dirs install_stapi install_stgfb endif ... ... install_sirdai: -@$(CP) sirdai/main/tuner_tune $(KTARGET)/ -@$(CP) sirdai/main/tuner_scan $(KTARGET)/

Page 48: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

39

Código 14 - Saída do aplicativo rastreador de canais ISDB-T.

Para que fosse possível a integração com a STAPI, nesta etapa foi

implementada uma comunicação inter-processo utilizando o método de

acesso de arquivo na linguagem C. Este método abre um terminal Linux e

acessa diretamente seu file descriptor, permitindo que se execute um

comando no SO Linux e obtenha a sua saída de terminal padrão. Logo, como

o aplicativo tuner_scan imprime os canais na saída padrão, é possível obtê-

los com o método pipe dentro da STAPI.

STMicroelectronics Base Distribution version 2.3 LDDE_LINUX login: root Linux LDDE_LINUX 2.6.23.17_stm23_0116-COCOREF_GOLD_7109-STSDK #4

PREEMPT Wed Sep 30 15:00:07 BRT 2009 sh4 unknown unknown GNU/Linux Welcome to STMicroelectronics Base Distribution. Last login: Sat Jan 1 00:00:35 +0000 2000 on console. No mail. root@LDDE_LINUX:~# tuner_scan 521143 586143 root@LDDE_LINUX:~#

Page 49: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

40

Código 15 - Exemplo de utilização do PIPE com File Descriptor no Linux, em linguagem C.

Para teste da aplicação, foi utilizado o TestTool, programa de

depuração da STAPISDK. No código-fonte deste programa, foi criado um

comando que executava um rotina utilizando o método de pipe e file

descriptor para acessar os aplicativos tuner_tune e tuner_scan. Desta forma,

as saídas dos aplicativos eram tratadas dentro do programa TestTool,

disponibilizando informações destes aplicativos ao ambiente da camada

STAPP.

#include <stdio.h> … FILE *fp; char buffer[7]; fp = popen("./tuner_scan", "r"); while ( fgets( buffer, sizeof(buffer), fp)) { …. TUNER_Canais [n_canal] = atoi (buffer); …. } pclose(fp);

Page 50: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

41

Figura 14 - Camadas do Linux, aplicativo sintonizador, STAPP e comunicação entre processos e hardware no ambiente de desenvolvimento.

Nesta figura, é possível verificarmos a hierarquia das camadas

abordadas na integração do aplicativo com a STAPP e as setas mostram os

módulos de Kernel utilizados para acesso ao hardware. A imagem também

ilustra o barramento I2C interno ao Sintonizador SIRDAI, o qual é acessado

através do controlador I2C servindo como ponte para o barramento do Set

Top Box, assim disponibilizando o controle dos chips ao Kernel do STLinux.

(Linux PIPE)

Hardware (Set Top Box)

STDEBUG

STLinux (Kernel)

STAPI

Driver SIRDAI

STAPP

Aplicativo do

Sintonizador

Barramento I2C

Sintonizador SIRDAI

I2C

module

Multicom

modules

Barramento I2C interno

Controlador

I2C

Chip 0 Chip 1 Chip 2

Page 51: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

42

4 CONCLUSÃO

O sistema operacional Linux se mostra cada vez mais versátil, sendo

utilizado nas mais diversas áreas e aplicações. Os device drivers

desempenham um papel essencial, possibilitando a intercomunicação de

componentes de hardware com aplicações de vital importância para qualquer

sistema operacional.

Foi possível observar que as ferramentas utilizadas para portar e

embarcar o Linux em outras arquiteturas estão cada vez mais amigáveis,

expandindo os horizontes deste sistema operacional às mais diversas

aplicações em dispositivos dedicados.

Neste trabalho, foram abordados alguns procedimentos para a

aplicação de um SO Linux em um Set Top Box da TV Digital. Abrangendo

algumas etapas de instalação do STLinux no STB, com chipset de arquitetura

SH4, foi possível adquirir conhecimentos importantes sobre ferramentas e

procedimentos aplicáveis ao embarcar os mais diversos sistemas

operacionais Linux.

As pesquisas nas áreas de sistemas embarcados, sistemas de

transmissão de TV Digital e sistemas operacionais estão em constante

evolução. Novos conjuntos de ferramentas, bibliotecas e APIs emergem da

comunidade científica simplificando os procedimentos para análise,

depuração e desenvolvimento de sistemas embarcados, dos simples aos

mais complexos.

Convém dizer que o sintonizador produzido pelo projeto SIRDAI-TVD é

muito importante na evolução dos sistemas de recepção de TV Digital. Ele

Page 52: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

43

motivou a realização deste trabalho e proporcionou aprendizados de muito

valor. As pesquisas realizadas, como sobre a implantação da TV Digital no

brasil e normas de transmissão deste sistema para criar o aplicativo de

rastreamento de canais, formaram uma base de conhecimentos que

continuarão sendo aprofundados no futuro.

Page 53: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

44

REFERÊNCIAS

[1] TANENBAUM, Andrew S. : Modern operating systems. Upper Saddle River: 3ª edição, Prentice Hall do Brasil, 2008. [2] RUBINI, Alessandro; CORBET, Jonathan: Linux device drivers. 2nd ed., Beijing: O'Reilly, 2001. [3] MITCHELL, M.: Advanced Linux Programming. New Riders Publishing, 2001. [4] BOVETI, D.; CESATI, M.: Understanding the Linux Kernel, 3rd ed.: O´reilly, 2005. [5] Bowick, C.: RF circuit design. Newnes. 2007. [6] ABNT NBR 15601:2007 – Televisão Digital Terrestre – Sistema de Transmissão. 2007. [7] Nakahara, J.: ISDB-T for Sound Broadcasting. Terrestrial Digital Radio in Japan. ABU Seminar 2003. Disponível em www.rthk.org.hk/about/digitalbroadcasting/DSBS/ABU_AIR_2003/ses2.pdf

[8] TANENBAUM, ANDREW S.: Organização Estruturada de Computadores, Addison-Wesley Professional, 5nd edition, 2006. [9] GNU Make Manual Home Page, http://www.gnu.org/software/make/manual/make.html#Overview [10] Eric S. Raymond.: The Art of UNIX Programming. Addison Wesley, 2005.

Page 54: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

45

ANEXOS

Page 55: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

46

ANEXO A. Tabela dos países em processo de implementação da TVD

Page 56: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

47

Page 57: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

48

ANEXO B. Saída da porta serial do STB com o carregamento normal do STLinux embarcado.

picocom -b 115200 /dev/ttyUSB0 picocom v1.4 port is : /dev/ttyUSB0 flowcontrol : none baudrate is : 115200 parity is : none databits are : 8 escape is : C-a noinit is : no noreset is : no nolock is : no send_cmd is : ascii_xfr -s -v -l10 receive_cmd is : rz -vv Terminal ready Board: STb7100-Reference (MB442) [29-bit mode] U-Boot 1.3.1 (Sep 30 2009 - 17:05:30) - stm23_0042 DRAM: 128 MiB NOR: 32 MiB *** Warning - bad CRC, using default environment In: serial Out: serial Err: serial Hit any key to stop autoboot: 0 ## Booting image at a0040000 ... Image Name: Linux 2.6 Image Type: SuperH Linux Kernel Image (gzip compressed) Data Size: 2578493 Bytes = 2.5 MiB Load Address: 84601000 Entry Point: 84602000 Verifying Checksum ... OK Uncompressing Kernel Image ... OK Starting kernel console=ttyAS1,115200 root=/dev/nfs rw mtdparts=physmap-

flash:256k,3072k,- mem=36m stmmaceth=phyaddr:5 nwhwconf=device:eth0,hwaddr:00:22:C2:00:78:15 nfsroot=192.168.0.9:/opt/STM/STLinux-2.3/devkit/sh4/target,nfsvers=2,rsize=4096,wsize=8192,tcp ip=192.168.0.10::192.168.0.1:255.255.255.0:LDDE_LINUX::off bigphysarea=2500 - 0x00000000 - 0 ...

Linux version 2.6.23.17_stm23_0116-COCOREF_GOLD_7109-STSDK

([email protected]) (gcc version 4.2.4 (snapshot) (STMicroelectronics/Linux Base 4.2.4-42)) #4 PREEMPT Wed Sep 30 15:00:07 BRT 2009

Booting machvec: STb7100 Reference board Node 0: start_pfn = 0x4600, low = 0x6a00 Zone PFN ranges: Normal 17920 -> 27136 Movable zone start PFN for each node early_node_map[1] active PFN ranges

Page 58: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

49

0: 17920 -> 27136 STMicroelectronics STb7100 Reference board initialisation STx7109 version 3.x Chip version 3.2 Built 1 zonelists in Zone order. Total pages: 9144 Kernel command line: console=ttyAS1,115200 root=/dev/nfs rw mtdparts=physmap-

flash:256k,3072k,- mem=36m stmmaceth=phyaddr:5 nwhwconf=device:eth0,hwaddr:00:22:C2:00:78:15 nfsroot=192.168.0.9:/opt/STM/STLinux-2.3/devkit/sh4/target,nfsvers=2,rsize=4096,wsize=8192,tcp ip=192.168.0.10::192.168.0.1:255.255.255.0:LDDE_LINUX::off bigphysarea=2500

BPA2 (bigphysarea) @ 0x04b09000 size 0x009c3fff PID hash table entries: 256 (order: 8, 1024 bytes) Using tmu for system timer Using 16.594 MHz high precision timer. Console: colour dummy device 80x25 console [ttyAS1] enabled Dentry cache hash table entries: 8192 (order: 3, 32768 bytes) Inode-cache hash table entries: 4096 (order: 2, 16384 bytes) Memory: 21636k/36864k available (3669k kernel code, 834k data, 132k init) PVR=04061100 CVR=30480000 PRR=00009300 I-cache : n_ways=2 n_sets=256 way_incr=8192 I-cache : entry_mask=0x00001fe0 alias_mask=0x00001000 n_aliases=2 D-cache : n_ways=2 n_sets=512 way_incr=16384 D-cache : entry_mask=0x00003fe0 alias_mask=0x00003000 n_aliases=4 Mount-cache hash table entries: 512 CPU: STb7109 NET: Registered protocol family 16 Generic PHY: Registered new driver SCSI subsystem initialized usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb Time: SuperH clocksource has been installed. NET: Registered protocol family 2 IP route cache hash table entries: 1024 (order: 0, 4096 bytes) TCP established hash table entries: 2048 (order: 2, 16384 bytes) TCP bind hash table entries: 2048 (order: 1, 8192 bytes) TCP: Hash tables configured (established 2048 bind 2048) TCP reno registered JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc. JFS: nTxBlock = 169, nTxLock = 1353 io scheduler noop registered io scheduler anticipatory registered (default) io scheduler deadline registered io scheduler cfq registered STMicroelectronics ASC driver initialized stasc.0: ttyAS0 at MMIO 0x18032000 (irq = 121) is a stasc stasc.1: ttyAS1 at MMIO 0x18033000 (irq = 120) is a stasc RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize STMMAC driver: platform registration... <6>done! MAC 10/100 no valid MAC address; please, set using ifconfig or nwhwconfig! STMMAC MII Bus: probed STe100p: Registered new driver STe101p: Registered new driver pegasus: v0.6.14 (2006/09/27), Pegasus/Pegasus II USB Ethernet driver usbcore: registered new interface driver pegasus usbcore: registered new interface driver asix

Page 59: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

50

usbcore: registered new interface driver cdc_ether usbcore: registered new interface driver net1080 usbcore: registered new interface driver zaurus rt73: init usbcore: registered new interface driver rt73 usbcore: registered new interface driver zd1201 usbcore: registered new interface driver usb8xxx nwhw_config: (eth0) setting mac address: 00:22:C2:00:78:15 scsi0 : sata_stm ata1: SATA max UDMA/133 cmd 0xb9209000 ctl 0xb9209820 bmdma 0x00000000

irq 170 ata1: SATA link down (SStatus 0 SControl 300) physmap platform flash device: 02000000 at 00000000 physmap-flash: Found 1 x16 devices at 0x0 in 16-bit bank Intel/Sharp Extended Query Table at 0x010A Intel/Sharp Extended Query Table at 0x010A Intel/Sharp Extended Query Table at 0x010A Intel/Sharp Extended Query Table at 0x010A Intel/Sharp Extended Query Table at 0x010A Intel/Sharp Extended Query Table at 0x010A Using buffer write method Extended Query version 1.3 Feature/Command Support: 03E6 - Chip Erase: unsupported - Suspend Erase: supported - Suspend Program: supported - Legacy Lock/Unlock: unsupported - Queued Erase: unsupported - Instant block lock: supported - Protection Bits: supported - Page-mode read: supported - Synchronous read: supported - Simultaneous operations: supported - Extended Flash Array: unsupported Supported functions after Suspend: 01 - Program after Erase Suspend: supported Block Status Register Mask: 0001 - Lock Bit Active: yes - Lock-Down Bit Active: no - EFA Lock Bit: no - EFA Lock-Down Bit: no Vcc Logic Supply Optimum Program/Erase Voltage: 1.8 V Vpp Programming Supply Optimum Program/Erase Voltage: 9.0 V cfi_cmdset_0001: Erase suspend on write enabled 3 cmdlinepart partitions found on MTD device physmap-flash Creating 3 MTD partitions on "physmap-flash": 0x00000000-0x00040000 : "Partition_000" 0x00040000-0x00340000 : "Partition_001" 0x00340000-0x02000000 : "Partition_002" stm-ehci stm-ehci.0: STM EHCI Host Controller stm-ehci stm-ehci.0: new USB bus registered, assigned bus number 1 stm-ehci stm-ehci.0: irq 169, io mem 0x191ffe00 stm-ehci stm-ehci.0: USB 0.0 started, EHCI 1.00, driver 10 Dec 2004 usb usb1: configuration #1 chosen from 1 choice hub 1-0:1.0: USB hub found hub 1-0:1.0: 1 port detected stm-ohci stm-ohci.0: STM OHCI Host Controller stm-ohci stm-ohci.0: new USB bus registered, assigned bus number 2 stm-ohci stm-ohci.0: irq 168, io mem 0x191ffc00 usb usb2: configuration #1 chosen from 1 choice

Page 60: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

51

hub 2-0:1.0: USB hub found hub 2-0:1.0: 1 port detected Initializing USB Mass Storage driver... usb 1-1: new high speed USB device using stm-ehci and address 2 usb 1-1: configuration #1 chosen from 1 choice scsi1 : SCSI emulation for USB Mass Storage devices usbcore: registered new interface driver usb-storage USB Mass Storage support registered. mice: PS/2 mouse device common for all mice i2c /dev entries driver usbcore: registered new interface driver usbhid drivers/hid/usbhid/hid-core.c: v2.6:USB HID core driver STMicroelectronics - Coprocessors st231 Init st-coprocessor-0: No RAM reserved st231.0 Coprocessor ------------------------------------------- not configured! --------------------------------------------------------------- st-coprocessor-1: No RAM reserved st231.1 Coprocessor ------------------------------------------- not configured! --------------------------------------------------------------- stm_rng hardware driver 1.0 configured TCP cubic registered NET: Registered protocol family 1 NET: Registered protocol family 17 ieee80211: 802.11 data/management/control stack, git-1.1.13 ieee80211: Copyright (C) 2004-2005 Intel Corporation <[email protected]> stmmac_timer: TMU2 Timer ON (freq 256Hz) IP-Config: Complete: device=eth0, addr=192.168.0.10, mask=255.255.255.0, gw=192.168.0.1, host=LDDE_LINUX, domain=, nis-domain=(none), bootserver=255.255.255.255, rootserver=192.168.0.9, rootpath= Looking up port of RPC 100003/2 on 192.168.0.9 PHY: 0:05 - Link is Up - 100/Full scsi 1:0:0:0: Direct-Access Audio Player PQ: 0 ANSI: 0 CCS sd 1:0:0:0: [sda] 4083712 512-byte hardware sectors (2091 MB) sd 1:0:0:0: [sda] Write Protect is off sd 1:0:0:0: [sda] Assuming drive cache: write through sd 1:0:0:0: [sda] 4083712 512-byte hardware sectors (2091 MB) sd 1:0:0:0: [sda] Write Protect is off sd 1:0:0:0: [sda] Assuming drive cache: write through sda: sda1 sd 1:0:0:0: [sda] Attached SCSI removable disk Looking up port of RPC 100005/1 on 192.168.0.9 VFS: Mounted root (nfs filesystem). Freeing unused kernel memory: 132k freed INIT: version 2.86 booting Fast Starting Kernel event manager... Activating swap. Checking all file systems... fsck 1.39 (29-May-2006) Mounting local filesystems... Cleaning /tmp /var/run /var/lock. Setting up networking...done. Hostname: LDDE_LINUX. Setting up IP spoofing protection: rp_filter. Disable TCP/IP Explicit Congestion Notification: done. Configuring network interfaces: done. Starting portmap daemon: portmap.

Page 61: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

52

Fast Replaying boot udev events... STMicroelectronics Base Distribution version 2.3 LDDE_LINUX login: root Linux LDDE_LINUX 2.6.23.17_stm23_0116-COCOREF_GOLD_7109-STSDK #4

PREEMPT Wed Sep 30 15:00:07 BRT 2009 sh4 unknown unknown GNU/Linux Welcome to STMicroelectronics Base Distribution. Last login: Sat Jan 1 00:00:35 +0000 2000 on console. No mail. root@LDDE_LINUX:~#

Page 62: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

53

ANEXO C. Tabela de Canais UHF e suas respectivas frequências de sintonização. (ABNT)

Canal Freqüência inicial (MHz)

Freqüência final (MHz)

Freqüência de Sintonização (MHz)

14 470 476 473 + 1/7 MHz

15 476 482 479 + 1/7 MHz

16 482 488 485 + 1/7 MHz

17 488 494 491 + 1/7 MHz

18 494 500 497 + 1/7 MHz

19 500 506 503 + 1/7 MHz

20 506 512 509 + 1/7 MHz

21 512 518 515 + 1/7 MHz

22 518 524 521 + 1/7 MHz

23 524 530 527 + 1/7 MHz

24 530 536 533 + 1/7 MHz

25 536 542 539 + 1/7 MHz

26 542 548 545 + 1/7 MHz

27 548 554 551 + 1/7 MHz

28 554 560 557 + 1/7 MHz

29 560 566 563 + 1/7 MHz

30 566 572 569 + 1/7 MHz

31 572 578 575 + 1/7 MHz

32 578 584 581 + 1/7 MHz

33 584 590 587 + 1/7 MHz

34 590 596 593 + 1/7 MHz

35 596 602 599 + 1/7 MHz

Page 63: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

54

36 602 608 605 + 1/7 MHz

37 RESERVADO - Não utilizado para televisão

38 614 620 617 + 1/7 MHz

39 620 626 623 + 1/7 MHz

40 626 632 629 + 1/7 MHz

41 632 638 635 + 1/7 MHz

42 638 644 641 + 1/7 MHz

43 644 650 647 + 1/7 MHz

44 650 656 653 + 1/7 MHz

45 656 662 659 + 1/7 MHz

46 662 668 665 + 1/7 MHz

47 668 674 671 + 1/7 MHz

48 674 680 677 + 1/7 MHz

49 680 686 683 + 1/7 MHz

50 686 692 689 + 1/7 MHz

51 692 698 695 + 1/7 MHz

52 698 704 701 + 1/7 MHz

53 704 710 707 + 1/7 MHz

54 710 716 713 + 1/7 MHz

55 716 722 719 + 1/7 MHz

56 722 728 725 + 1/7 MHz

57 728 734 731 + 1/7 MHz

58 734 740 737 + 1/7 MHz

59 740 746 743 + 1/7 MHz

60 746 752 749 + 1/7 MHz

61 752 758 755 + 1/7 MHz

Page 64: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

55

62 758 764 761 + 1/7 MHz

63 764 770 767 + 1/7 MHz

64 770 776 773 + 1/7 MHz

65 776 782 779 + 1/7 MHz

66 782 788 785 + 1/7 MHz

67 788 794 791 + 1/7 MHz

68 794 800 797 + 1/7 MHz

69 800 806 803 + 1/7 MHz

Page 65: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

56

ANEXO D. ISDB-T Segmentação dos canais

Figura 15 - Segmentação do canal em formato ISDB-T.

Page 66: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

57

ANEXO E. Diagramas de blocos demoduladores

Figura 16 - Exemplo de diagrama de blocos de um Font-End receptor

Figura 17 - Exemplo de diagrama de blocos de um Back-End receptor.

Antena Entrada de

Sinal RF

Tratamento de RF

Saída para demodulador

Saída do front-end

Conversor

A/D

Interpolação e Filtragem

FFT EQ Desentrelaçador

Correção de Erros

MPEG-TS

Page 67: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

58

ANEXO F. Código parcial específico da placa ST do STB no arquivo de configurações da STAPISDK (setenv.sh)

########################################################### ## STB7109 - COCOREF_GOLD/LINUX - Hardware configuration ## ########################################################### if [ "$1" = "COCOREF_GOLD_7109_LINUX" ] ; then echo COCOREF_GOLD_7109_LINUX Configuration selected ! export STB7109ROOT=$STSDKROOT/apilib export DVD_MAKE=$STB7109ROOT/make export DVD_ROOT=$STB7109ROOT/src export DVD_EXPORTS=$STB7109ROOT/lib export DVD_INCLUDE=$STB7109ROOT/include export DVD_CONFIG=$STB7109ROOT/config export DVD_TRANSPORT=stpti4 export DVD_PLATFORM=cocoref_gold export DVD_BACKEND=7109 export DVD_FRONTEND_TUNER=FE_DIB8096T #FE_DNIS22CX241A export DVD_SERVICE=DVB export DVD_DISPLAY_SD=D_NTSC export DVD_DISPLAY_HD=D_1080I60HZ export HEAP_WITH_STSDK=0 export RUN_FROM_FLASH=1 export TARGET=192.168.0.3 export ARCHITECTURE=ST40 export DVD_OS=LINUX export LINUX_VERSION=2.3 export LINUX_UNIFIED_STAPI=1 export RPC_SOURCE=/opt/STM/MULTICOM/R3.2.2p2 export PATH=/opt/STM/STLinux-$LINUX_VERSION/devkit/sh4/bin:$PATH export MANPATH=/opt/STM/STLinux-$LINUX_VERSION/host/man:$MANPATH export KDIR=/opt/STM/STLinux-$LINUX_VERSION/devkit/sources/kernel/linux-

sh4 export KTARGET=/opt/STM/STLinux-$LINUX_VERSION/devkit/sh4/target/root export LINUX_TARGETIP=192.168.0.10 export LINUX_SERVERIP=192.168.0.9 export LINUX_GWIP=192.168.0.1 export LINUX_NETMASK=255.255.255.0 export LINUX_NAME=stapisdk export LINUX_AUTOCONF=off export LINUX_SERVERDIR=/opt/STM/STLinux-

$LINUX_VERSION/devkit/sh4/target export LINUX_KERNEL=$KDIR/vmlinux export LINUX_PARAMETERS="console=ttyAS1,115200 \ root=/dev/nfs rw mtdparts=physmap-flash:256k,3072k,- \ nwhwconf=device:eth0,hwaddr:00:22:C2:00:78:15 \

nfsroot=$LINUX_SERVERIP:$LINUX_SERVERDIR,rsize=4096,wsize=8192,tcp \ ip=$LINUX_TARGETIP::$LINUX_GWIP:$LINUX_NETMASK:$LINUX_NAME:eth0:$LINUX_AUTOCONF \ mem=128m \

stmmaceth=phyaddr:5 \ coprocessor_mem=4m@0x10000000, 4m@0x10400000 \ bigphysarea=2500" fi

Page 68: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

59

ANEXO G. Fotos das conexões com a placa do STB, sintonizador SIRDAI e o desktop de desenvolvimento.

Figura 18 - Indicação dos polos para o conector TTL na placa do STB.

Figura 19 - Visão geral do equipamento utilizado. À esquerda, o sintonizador SIRDAI conectado na placa do STB.

Page 69: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

60

Figura 20 - Detalhe do sintonizador SIRDAI. Pode-se reparar os dois chips DIBCOM DIB8096, promovendo a diversidade de recepção para duas antenas. Os conectores F acoplados no sintonizador.

Figura 21 - Detalhe da conexão do sintonizador SIRDAI com a placa do STB. É importante notar que foi utilizada a mesma interface de pinos do sintonizador original do STB. Este sintonizador original foi dessoldado.

Page 70: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

61

ARTIGO

Aplicativo para Sintonizador Utilizando Diversidade de

Recepção de Sinal

Odyr Apoena Bernanos de Zayas Sohn

Departamento de Informática e Estatística – Universidade Federal de Santa Catarina

Florianópolis – Santa Catarina - Brasil

[email protected]

Abstract. This meta-paper shows how we can enable the diversity chain on

tuners that have the diversity in signal reception, this way you can take

advantages of this technology and have a better signal reception.

Resumo. Este trabalho apresenta um estudo para implementação e

habilitação da cadeia de diversidade em sintonizadores com diversidade de

recepção, demonstrando como utilizar este recurso presente em alguns

receptores de alta tecnologia disponibilizados pela indústria de

telecomunicações.

1. 1. INTRODUÇÃO Este artigo apresenta como implementar, em linguagem C, um aplicativo para um

sintonizador com chip de diversidade de recepção de sinal de TV-Digital. A pesquisa

também apresenta informações sobre o sistema ISDB-T, objetivando a programação

de funcionalidades relacionadas ao espectro de freqüências do sistema para o

rastreamento e sintonização de canais do SBTVD. O aplicativo terá a finalidade de

sintonizar e rastrear canais do sistema brasileiro de transmissão terrestre de TV-

Digital no padrão ISDB-T executado em um Set Top Box.

2. 3. SET TOP BOX Os Set Top Boxes (STBs) são sistemas embarcados cuja principal funcionalidade é

receber o sinal da TV Digital, decodificá-lo, descompactá-lo e mostrar a imagem ao

expectador. Porém, estes dispositivos não se limitam a apenas estas funções básicas.

Sistemas operacionais são embarcados nos STBs para que tenhamos uma maior

flexibilidade e para que várias funcionalidades extras possam ser desenvolvidas para o

sistema. Um exemplo de funcionalidade extra, seria a gravação de programas da TV

Digital em horários pré-programados, armazenando-os em dispositivos e mídias

removíveis, como pendrives USB.

Page 71: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

62

Figura 22 – Exemplo de um diagrama de blocos de STB.

Outra aplicação é a interação com o usuário, como enquetes, por exemplo, em que o

expectador pode responder com o controle remoto do dispositivo e suas respostas

serem enviadas através de uma conexão do STB com a internet.

3. 2. SISTEMA DE TRANSMISSÃO DE TV-DIGITAL (ISDB-T) A sigla ISDB-T significa Terrestrial Integrated Services Digital Broadcasting. É um

sistema japonês, criado pela ARIB, Association of Radio Industries and Businesses.

Foi o sistema selecionado como base para a implantação nacional da transmissão de

TV Digital. A característica principal deste sistema é especificar a transmissão de

vídeo, áudio e dados, de forma independente ou em qualquer combinação destes. O

receptor recebe um sinal de radiofrequência e disponibiliza os dados para o

decodificador. O diagrama de blocos da figura seguinte representa as funcionalidades

básicas do sistema para sua transmissão e recepção.

Page 72: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

63

Figura 23 – Diagrama básico para transmissão do sinal ISDB-T (as linhas pontilhadas representam fluxo de controle, enquanto que as contínuas, fluxo de sinal).

Para a transmissão digital foi reservada a faixa de 470 MHz a 806 MHz, com exceção

da faixa de 608 MHz a 614 MHz, canal 37. Esta transmissão ocorre dentro da faixa

compreendida por UHF, Ultra-High Frequency, pode-se traduzir em canais de 14 a

69, com exceção do canal 37. Por uma questão organizacional, apenas depois de

terminado o processo de implantação da transmissão digital e encerramento das

transmissões analógicas é que a banda VHF, Very High Frequency, será utilizada

também para transmissões digitais.

Cada canal UHF dispõe de 6 MHz de banda, esta banda deve conter 14 segmentos,

sendo que destes, apenas uma largura aproximada de 5,572 MHz, contendo 13

segmentos, são utilizáveis para a transmissão de dados.

Page 73: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

64

A figura acima demonstra os limites de espaçamento e a largura de banda utilizável

normatizada pela ABNT NBR15601:2007. Tais limites deverão ser respeitados por

qualquer transmissora de sinal.

4.1 4. SINTONIZADOR DE TV-DIGITAL COM DIVERSIDADE DE RECEPÇÃO

Um sintonizador de TV Digital pode ser separado em duas partes, são elas o front-end

e o back-end. De acordo com C. LI (2009) o front-end é o bloco do conjunto do

sintonizador receptor que opera na gama da radiofrequência, chamados de blocos RF,

sendo o demodulador o delimitador entre front-end e back-end. Já o back-end, ainda

no caso do receptor, opera após a demodulação na gama de frequências

intermediárias.

4. Na figura acima, temos um diagrama genérico de um sintonizador para TV-Digital.

Na figura 5 tem-se o Back-End receptor com diversidade. Pode-se verificar que o

Combinador de Diversidade possui duas entradas e saídas de sinal. Os blocos

subsequentes, em vermelho, serão inabilitados nos chips em que a saída Div OUT está

ligada, denominados chips escravos. No chip mestre, último chip da cadeia de

diversidade, estes blocos serão ativados e a saída Div OUT, desativada. Quando o

sinal é captado pelo primeiro chip da cadeia ele sofre um atraso adicional em relação

Figura 25 - Diagrama de blocos genérico de um sintonizador.

Front-End Sinal RF Back-End TS

Figura 24 - Limites de utilização da banda disponível normatizada pela ABNT 15601:2007.

Page 74: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

65

ao sinal do chip seguinte. Este atraso é decorrente da passagem pelo bloco

Combinador de Diversidade.

Figura 26 - Back-end receptor com diversidade, adicionado um bloco Combinador de Diversidade.

Desta forma, para implementar um algoritmo rastreador e sintonizador, devemos

utilizar as informações de recepção do modelo de transmissão adotado no Brasil e do

hardware sintonizador demonstrado de maneira genérica. Este chip com diversidade

de recepção trabalha em conjunto com outros chips formando a cadeia de diversidade.

Como podemos verificar no diagrama abaixo.

Saída do

Front-End

Conversor

A/D

Interpolação e Filtragem

FFT EQ

Combinador de Diversidade

Desentrelaçador Correção de

Erros

Div OUT

MPEG TS

Div IN

Page 75: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

66

Figura 27 - Sistema mestre/escravo dos chips com diversidade.

5. APLICATIVO SINTONIZADOR Daremos uma abordagem genérica de como este algoritmo deverá ser implementado,

respeitando os limites e padrões do sistema ISDB-T de transmissão de TV-Digital no

Brasil. Utilizando os drivers do próprio fabricante podemos estruturar o código desta

maneira.

Sintonizador

Escravo 2

Div OUT

Div IN

T

S

O

U

T

Sintonizador

Escravo 1

Div OUT

Div IN

T

S

O

U

T

MPEG TS Sintonizador

Master

Div OUT

Div IN

T

S

O

U

T

Sintonizador

Escravo 0

Div IN

T

S

O

U

T Div OUT

RF

RF

RF

RF

Page 76: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

67

Figura 7 - Pseudo-algoritmo para escrita dos atrasos nos chips sintonizadores.

O pseudo-código acima demonstra como devem ser relacionados os atrasos que cada

chip deverá implementar no armazenamento do sinal de entrada para que o chip

anterior entregue o sinal em tempo sincronizado. O pseudo-código abaixo demonstra

como pode ser implementada a cadeia de diversidade.

/// cabeçalho #define ENDEREÇO_BASE_SIRDAI_I2C 0x22 #define ENDEREÇO_REGITRADOR_ATRASO 56 struct chip { uint8_t subendereco_i2c; uint16_t atraso_diversidade; } /// código struct chip dib8096[4] = { { 0x90, 30 }, //chip mestre { 0x92, 20 }, //chip escravo { 0x94, 10 }, //chip escravo { 0x96, 0 }, //chip escravo (1

o da cadeia de recepção)

} for (int i = 0; i < sizeof(dib8096); i++){ i2c_escreva_word_reg(dib8096[i], ENDEREÇO_REGITRADOR_ATRASO,

dib8096[i].atraso_diversidade) } int i2c_escreva_word_reg(struct chip [ ], uint8_t reg, uint16_t dados) { uint32_t msg; msg = (chip.subendereco_i2c << 24) + (reg << 16) + dados; i2c_escreva (ENDEREÇO_BASE_SIRDAI_I2C, msg ); }

Page 77: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

68

Figura 8 - Pseudo-algoritmo para implementação do sistema mestre/escravo nos chips da cadeia de diversidade.

O algoritmo para rastreamento de canais produzido é baseado nas normas oficiais do

sistema de transmissão terrestre de TV Digital, adotado pelo Brasil em 2007 (ABNT

NBR 15601:2007). Com isso pode-se visualizar na fração de código seguinte, todas as

características intrínsecas às normas brasileiras.

6. CONCLUSÃO Implementar um algoritmo de sintonização e rastreamento para a TV-Digital com

dispositivos de sintonização que utilizam diversidade de recepção para melhorar o

sinal. Demonstrado de forma genérica em pseudo-algoritmo similar a linguagem de

programação C. Assim pode-se fazer uso de tecnologias avançadas em recepção de

sinal de TV-Digital.

int count = sizeof(dib8096); uint16_t reg_div_e = 78; // endereco_registrador_entrada_diversidade uint16_t reg_div_s = 79; // endereco_registrador_saida_diversidade for (i = 0; i < count; i++) { if (i == count-1) { // Sintonizador Escravo 0 // configura a entrada de diversidade como desligada i2c_escreva_word_reg(dib8096[i], reg_div_e, 0); // configura a saida de diversidade como ligada i2c_escreva_word_reg(dib8096[i], reg_div_s, 1); } else { // demais Sintonizadores Escravos // configura a entrada de diversidade como ligada i2c_escreva_word_reg(dib8096[i], reg_div_e, 1); // configura a saida de diversidade como ligada i2c_escreva_word_reg(dib8096[i], reg_div_s, 1); } if (i == 0) { // Sintonizador mestre, apenas saida de TS ligada i2c_escreva_word_reg(dib8096[i], reg_div_s, 0); } }

Page 78: Trabalho de Conclusão de Curso - projetos.inf.ufsc.br · qualidade de experiência audiovisual, mas também na acessibilidade e ... informações sobre o programa que está a visualizar,

69

7. REFERÊNCIAS

Bowick, C.: RF circuit design. Newnes. 2007.

ABNT NBR 15601:2007 – Televisão Digital Terrestre – Sistema de Transmissão.

2007.

Nakahara, J.: ISDB-T for Sound Broadcasting. Terrestrial Digital Radio in

Japan. ABU Seminar 2003. Disponível em

www.rthk.org.hk/about/digitalbroadcasting/DSBS/ABU_AIR_2003/ses2.pdf

TANENBAUM, ANDREW S.: Organização Estruturada de Computadores,

Addison-Wesley Professional, 5nd edition, 2006.

Eric S. Raymond.: The Art of UNIX Programming. Addison Wesley, 2005