Energia Serial Correction Linux

1
Correção para a Serial do Energia https://orenkishon.wordpress.com/2014/06/29/msp430-ez430-rf2500-linux-support-guide/ 26 de maio de 2015 1 Versão do Kernel do Linux O primeiro passo para a correção da serial é descobrir a versão atual do Kernel do Linux. Para isso, abra o terminal e rode o seguinte comando: uname -r O resultado será a informação desejada. No exemplo, foi obtido: 3.13.0-53-generic Apenas os 3 primeiros números da versão (3.13.0) são importantes. 2 Download do código fonte O problema da serial encontra-se no mó- dulo cdc-acm do Kernel. Para corrigí-lo, é ne- cessário baixar o código fonte do módulo, que se encontra nos arquivos cdc-acm.c e cdc-acm.h. Tais arquivos podem ser baixados nos seguintes links: http://lxr.free-electrons.com/ source/drivers/usb/class/ É necessário apenas escolher a versão do Kernel na região superior da página, abaixo do banner, e fazer o download de cada arquivo fonte separadamente. https://www.kernel.org/ pub/linux/kernel/ É necessário escolher o diretório cor- respondente à versão do Kernel, fazer o download do arquivo (no exemplo: linux-3.13.tar.gz), extrair em um lo- cal qualquer e encontrar os arquivos na pasta /drivers/usb/class/. Após o download, os arquivos devem ser movidos para uma pasta separada (p. ex., ~/cdc-acm/). 3 Correção do código, compilação e troca do módulo cdc-acm No arquivo cdc-acm.c, os seguintes blocos de código 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 versão do Kernel, as linhas acima 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 compilação é feita executando-se os se- guintes comandos no terminal: echo ’obj-m += cdc-acm.o’ > Makefile make -C /lib/modules/‘uname -r‘/build M=$PWD modules Com isso, um arquivo cdc-acm.ko deve aparecer na pasta. Por fim, substitui-se o módulo cdc-acm original pelo módulo corrigido, utilizando- se os comandos abaixo: sudo rmmod cdc-acm sudo insmod ./cdc-acm.ko 1

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