Entrevista com Gustavo Denardin

Em 17/09/2010, em Entrevistas, por Sergio Prado

Esta sem­ana con­ver­sei com Gus­tavo Denardin, pro­fes­sor da Uni­ver­si­dade Tec­nológ­ica Fed­eral do Paraná, e autor do BRTOS, um Sis­tema Opera­cional de Tempo Real 100% nacional. Ele falou sobre sua car­reira, o pro­jeto BRTOS e deu algu­mas dicas para quem esta começando na área de sis­temas embarcados.

Gus­tavo, fale um pouco sobre você, sua for­mação e como você começou a tra­bal­har com sis­temas embar­ca­dos.
Sou de Santa Maria/RS, me formei em Engen­haria Elétrica na UFSM em 2002 e começei o mestrado. Não sabia prati­ca­mente nada de micro­con­tro­ladores e sis­temas embar­ca­dos na época, e no meu mestrado desen­volvi um power modem de baixo custo. Foi quando tive meu primeiro con­tato com sis­temas embar­ca­dos. Come­cei pro­gra­mando em Assem­bly para o HC08. No fim do mestrado come­cei uma empresa, a Advance Sis­temas Eletrôni­cos, ter­ce­i­rizando desen­volvi­mento de sis­temas embar­ca­dos. Em 2005, fui infor­mado de um con­curso para pro­fes­sor na UTFPR (naquela época CEFET-PR), em Pato Branco/PR. Sem muita per­spec­tiva, pois nunca havia pen­sando em ser pro­fes­sor, prestei a prova. Fui aprovado e come­cei a lecionar. A empresa foi fechada pois meu sócio havia se mudado para Porto Ale­gre e começado a tra­bal­har no CIETEC. Lecionei durante 4 anos, de 2005 a 2008, sem nunca ter pen­sado em RTOSes. Assumi as cadeiras de con­t­role, sis­temas micro­proces­sa­dos e redes indus­tri­ais da uni­ver­si­dade. Tra­bal­hei bas­tante com C e máquina de esta­dos, mas nada ainda com sis­temas operacionais.

Quais foram as moti­vações para o desen­volvi­mento do BRTOS? Fale um pouco do histórico.
No iní­cio do doutorado, estava tra­bal­hando com pro­to­co­los de rede para redes de sen­sores sem fio, e meu ori­en­ta­dor e um colega comen­taram sobre RTOSes. Com o menor inter­esse, recu­sei a idéia. Então me mostraram o FreeR­TOS, mas pouco se sabia de RTOSes em nosso grupo de pesquisa. Está­va­mos começando a apren­der a utilizá-lo. Até que meu ori­en­ta­dor me pas­sou o código de um chaveador de con­texto, e resolvi portá-lo para o HCS08. Quando entendi a idéia fiquei mar­avil­hado. Então li o livro do Jean Labrosse do uc/OS-II, e os con­ceitos de um RTOS ficaram bem claros para mim. Out­ras pes­soas começaram a me incen­ti­var a mel­ho­rar este chaveador de con­texto. Fomos sentindo neces­si­dade de out­ras coisas como semá­foros, mutex, filas, etc. E tudo foi sendo imple­men­tado sob demanda. Assim nasceu o BRTOS.

B de Brazil­ian ou de Basic?
De Brazil­ian mesmo, por pura falta de cria­tivi­dade. Quem bati­zou foi um colega, porque o nome orig­i­nal era MyR­TOS. Até que vi que ja exis­tia um, então demos o nome de BRTOS.

Quem tra­bal­hou no desen­volvi­mento deste pro­jeto e onde ele é uti­lizado hoje?
No iní­cio o código foi prati­ca­mente todo escrito por mim, mas tive um colega muito impor­tante por um motivo: crit­i­cava tudo (sem­pre críti­cas pos­i­ti­vas). O que estava ruim, o que podia mel­ho­rar. O nome dele é Car­los Hen­rique Bar­riquello. Atual­mente todas as mod­i­fi­cações e mel­ho­rias do BRTOS são dis­cu­ti­das com o Car­los. Inclu­sive, algu­mas otimiza­ções do ker­nel da ver­são 1.05 e as funções Pend e Post das filas foram imple­men­tadas por ele. Hoje o BRTOS é usado em vários pro­je­tos acadêmi­cos em que nosso grupo de pesquisa está envolvido e começou a ser uti­lizado na cadeira de Sis­temas Embar­ca­dos na UFSM. Já recebi alguns con­tatos de empre­sas querendo saber mais infor­mações, mas a ver­dade é que ele é um pro­jeto de ape­nas 1 ano. Ainda está em caráter exper­i­men­tal. Abri­mos o código sob a licença MIT de forma que pudésse­mos encon­trar mais colaboradores.

Que tipo de algo­ritmo você usa no escalon­ador de tare­fas e como você geren­cia as pri­or­i­dades? O algo­ritmo usado evita prob­le­mas como inver­são de pri­or­i­dade?
O escalon­ador é pre­emp­tivo por pri­or­i­dades, com 32 níveis (0–31), sendo 0 a tarefa de maior pri­or­i­dade. As pri­or­i­dades são fixas, salvo quando se usa mutex, que uti­liza um algo­ritmo de pri­or­ity ceiling.

Quais são as defi­ciên­cias do BRTOS hoje?
O BRTOS fun­ciona bem e não com­pro­m­ete em desem­penho. Mas pen­samos mais do que por­tar para out­ras arquite­turas. Esta­mos avaliando uma reestru­tu­ração com­pleta, para uma segunda ver­são. A prin­ci­pal defi­ciên­cia na minha opinião é o tempo de latên­cia, já que algu­mas tare­fas do sis­tema blo­queiam as inter­rupções. Tam­bém não gosto muito do escalon­ador, dá para mel­ho­rar seu algoritmo.

Exis­tem 40 chamadas à OSEn­ter­Crit­i­cal nos fontes do BRTOS. Qual o impacto disso no tempo de latên­cia para o trata­mento de inter­rupção?
B
om, ten­tei min­i­mizar o codigo den­tro destas chamadas, mas nem sem­pre foi pos­sível. O mutex por exem­plo ficou um pouco com­plexo, e pos­sui mais código blo­queado do que eu gostaria. Na última ver­são obtive­mos baixa latên­cia, pior caso em torno de 10us. Fize­mos esta medição através da troca de estado de um pino em uma inter­rupção per­iódica e um osciloscó­pio de altís­sima res­olução, com diver­sas inter­rupções lig­adas e vários serviços de sis­temas sendo chama­dos ao mesmo tempo.

Hoje o BRTOS suporta o Cold­fire V1, HCS08 e o MSP430. Quais os desafios de por­tar para out­ras arquite­turas?
Quase nen­huma, é rel­a­ti­va­mente sim­ples. Basi­ca­mente, pre­cisamos con­fig­u­rar a insta­lação das tare­fas, o timer do sis­tema, os modos de baixo con­sumo, a função de troca de con­texto (geral­mente inter­rupção de soft­ware) e o salvamento/restauramento do con­texto. O resto são dri­vers. Já pen­samos em por­tar para PIC e ARM Cor­tex M3, mas falta tempo para focar neste desen­volvi­mento dev­ido ao meu doutorado. 

Quem quiser colab­o­rar, o que deve fazer?
Entrar em con­tato comigo ou com o Car­los Bar­riquelo através da página do pro­jeto. A con­tribuição pode ser feita de diver­sas maneiras, enviando sug­estões, mel­ho­rando o código ou por­tando para out­ras arquite­turas. É tra­bal­hoso, mas tam­bém é diver­tido. Uma vez dormi na frente do teclado às 5 da manhã de um sábado, porque tinha ficado muito emo­cionado com os primeiros resul­ta­dos do projeto…:)

Que fer­ra­men­tas você usa no dia a dia para desen­volver soft­ware embar­cado?
Já usei o Code Com­poser da Texas, quando tra­bal­hei com DSPs. Usei tam­bém o Keil quando brin­quei um pouco com 8051. Agora uso o Code­War­rior. Sem­pre em ambi­ente Win­dows. Já pen­sei em migrar para Linux, mas sinto falta de boas fer­ra­men­tas. Atual­mente estou pen­sando em começar a uti­lizar o Eclipse, mas ainda acho ele um pouco pesado.

Dê algu­mas dicas para quem esta começando a car­reira na área?
Tenho notado que o pes­soal mais novo quer tudo de “mão bei­jada”, tudo pronto. E acaba não enten­dendo o que está acon­te­cendo por “baixo dos panos”, então min­has dicas são: nunca pense que é um bom pro­gra­mador, você nunca deixará de apren­der; pro­cure con­hecer um pouco da arquite­tura que esta uti­lizando, assem­bly, CPU, etc; e nem sem­pre o cam­inho mais curto é o mel­hor; no ini­cio tente desen­volver seus próprios códi­gos, que o apren­dizado não tem preço.

Para fechar, se você fosse para uma ilha deserta, qual CPU, lin­guagem de pro­gra­mação e sis­tema opera­cional você levaria?
Cold­fire V1, lin­guagem C e claro, o BRTOS. O prob­lema seria quando acabasse a bateria…:)

Quem estiver inter­es­sado em colab­o­rar com o pro­jeto do BRTOS, entre em con­tato com o Gus­tavo através do site do pro­jeto.

Atu­al­iza­ção: Aque­les que estiverem inter­es­sa­dos em desen­volver um porte do BRTOS para outra arquite­tura, podem aces­sar este how-to aqui.

Um abraço,

Ser­gio Prado

VN:F [1.9.14_1148]
Rat­ing: 0.0/10 (0 votes cast)

Sem posts relacionados.

Tags:  
  • Fer­nando

    Opa,

    Que legal a ini­cia­tiva.
    Gostei da ideia e vou estu­dar com car­inho a ajuda para um port para ARM.

    VA:F [1.9.14_1148]
    Rating: 0.0/5 (0 votes cast)
  • Gus­tavo

    Olá Fer­nando, legal que gostaste do pro­jeto.
    Escrevi um pequeno doc­u­mento aju­dando no port do sis­tema, caso tenha interesse. Esta na Wiki do pro­jeto.
    http://code.google.com/p/brtos/wiki/BRTOS_port_config
     
    Grande Abraço,
    Gustavo

    VA:F [1.9.14_1148]
    Rating: 0.0/5 (0 votes cast)