Energia Serial Correction Linux

Post on 06-Nov-2015

30 views 18 download

description

Energia Linux

Transcript of Energia Serial Correction Linux

  • Correo para a Serial do Energiahttps://orenkishon.wordpress.com/2014/06/29/msp430-ez430-rf2500-linux-support-guide/

    26 de maio de 2015

    1 Verso do Kernel do LinuxO primeiro passo para a correo da serial

    descobrir a verso atual do Kernel do Linux. Paraisso, abra o terminal e rode o seguinte comando:

    uname -r

    O resultado ser a informao desejada. Noexemplo, foi obtido:

    3.13.0-53-generic

    Apenas os 3 primeiros nmeros da verso(3.13.0) so importantes.

    2 Download do cdigo fonteO problema da serial encontra-se no m-

    dulo cdc-acm do Kernel. Para corrig-lo, ne-cessrio baixar o cdigo fonte do mdulo, que seencontra nos arquivos cdc-acm.c e cdc-acm.h.Tais arquivos podem ser baixados nos seguinteslinks:

    http://lxr.free-electrons.com/source/drivers/usb/class/

    necessrio apenas escolher a versodo Kernel na regio superior da pgina,abaixo do banner, e fazer o downloadde cada arquivo fonte separadamente.

    https://www.kernel.org/pub/linux/kernel/

    necessrio escolher o diretrio cor-respondente verso do Kernel, fazero download do arquivo (no exemplo:linux-3.13.tar.gz), extrair em um lo-cal qualquer e encontrar os arquivos napasta /drivers/usb/class/.

    Aps o download, os arquivos devem sermovidos para uma pasta separada (p. ex., ~/cdc-acm/).

    3 Correo do cdigo, compilao e trocado mdulo cdc-acm

    No arquivo cdc-acm.c, os seguintes blocosde cdigo devem ser comentados:

    1) if (0 > acm_set_control(acm, acm->ctrlout= ACM_CTRL_DTR | ACM_CTRL_RTS) &&(acm->ctrl_caps & USB_CDC_CAP_LINE))goto bail_out;

    2) acm_set_control(acm, acm->ctrlout = 0);

    Dependendo da verso do Kernel, as linhasacima podem estar escritas de uma maneira sutil-mente diferente:

    1) acm->ctrlout = ACM_CTRL_DTR | ACM_CTRL_RTS;if (acm_set_control(acm, acm->ctrlout)< 0 &&(acm->ctrl_caps & USB_CDC_CAP_LINE))goto error_set_control;

    2) acm->ctrlout = 0;acm_set_control(acm, acm->ctrlout);

    A compilao feita executando-se os se-guintes comandos no terminal:

    echo obj-m += cdc-acm.o > Makefile

    make -C /lib/modules/uname -r/buildM=$PWD modules

    Com isso, um arquivo cdc-acm.ko deveaparecer na pasta. Por fim, substitui-se o mdulocdc-acm original pelo mdulo corrigido, utilizando-se os comandos abaixo:

    sudo rmmod cdc-acm

    sudo insmod ./cdc-acm.ko

    1

    Verso do Kernel do LinuxDownload do cdigo fonteCorreo do cdigo, compilao e troca do mdulo cdc-acm