Configuración del bus CAN negro de BeagleBone

3

Estoy intentando conectarme a una red de bus CAN con mi BeagleBone Black y SN65HVD230. Lo he conectado como en la foto.

Estoy corriendo:

root@beaglebone:~# cat /etc/dogtag BeagleBoard.org BeagleBone Debian
Image 2014-04-23

Cargué kmódulos:

sudo modprobe can
sudo modprobe can-dev
sudo modprobe can-raw

Lo verifiqué:

root@beaglebone:~# lsmod |grep can
can_raw                 4733  0
can_dev                 7957  0
can                    21085  1 can_raw

Y luego ordena:

root@beaglebone:~# sudo ip link set can0 up type can bitrate 500000
Cannot find device "can0"

El comando falla. ¿Cómo podría solucionar este problema?

Hay algunas cosas de superposición que deben configurarse, pero uno de los documentos de Capes (SerialCape) dice que Debian más reciente no tiene que hacer ningún cambio, y todo está incorporado ya. No uso cape, pero la única diferencia es que me he conectado a mis pines directamente con el controlador.

    
pregunta user505160

2 respuestas

6

Hay un concepto llamado superposición del árbol de dispositivos y puedes considerarlo como una solicitud de configuración de pin específica en el propio dispositivo.

Algunos pines en la placa están dedicados de manera predeterminada para fines específicos, SPI o I2C o solo para propósitos generales, pero algunos como PUEDEN definirse para su uso y eso es lo que debemos hacer.

Folder / lib / firmware contiene una lista de archivos de superposición binaria preconfigurados que podrían cargarse y que configuraría una lista específica de pines para un propósito específico.

Al principio, esos archivos se definen como archivos de origen que son archivos de texto normal con una sintaxis específica, pero en el momento en que deseamos usarlos necesitamos compilarlos con el comando dtc. Esta es la razón por la que tenemos la extensión dts para la fuente y dtbo para binario.

Por lo tanto, el proceso para CAN es el siguiente:

Inside / lib / firmware create file BB-DCAN1-00A0.dts :

/dts-v1/;
/plugin/;

/ {
    compatible = "ti,beaglebone", "ti,beaglebone-black";

    /* identification */
    part-number = "dcan1pinmux";

    fragment@0 {
        target = <&am33xx_pinmux>;
        __overlay__ {
            dcan1_pins_s0: dcan1_pins_s0 {
                pinctrl-single,pins = <
                    0x180 0x12  /* d_can1_tx, SLEWCTRL_FAST | INPUT_PULLUP | MODE2 */
                    0x184 0x32  /* d_can1_rx, SLEWCTRL_FAST | RECV_ENABLE | INPUT_PULLUP | MODE2 */
                >;
            };
        };
    };

    fragment@1 {
        target = <&dcan1>;
        __overlay__ {
             #address-cells = <1>;
             #size-cells = <0>;

             status = "okay";
             pinctrl-names = "default";
             pinctrl-0 = <&dcan1_pins_s0>;
        };
    };
};

Ahora es necesario crear una superposición binaria con el siguiente comando en el mismo directorio:

root@host:/lib/firmware# dtc -O dtb -o BB-DCAN1-00A0.dtbo -b 0 -@ BB-DCAN1-00A0.dts

Finalmente ejecuta:

 root@host:/lib/firmware#echo BB-DCAN1 > /sys/devices/bone_capemgr.*/slots

Ahora carga los módulos del kernel:

root@host# modprobe can
root@host# modprobe can-dev
root@host# modprobe can-raw

Herramientas de compilación:

root@host# svn co svn://svn.berlios.de/socketcan/trunk
root@host# cd trunk/can-utils/
root@host# make

Configurar la velocidad del bus:

root@host# ip link set can0 up type can bitrate 500000
root@host# ifconfig can0 up
    
respondido por el user505160
-1

en su documentación, el repositorio de origen debe actualizarse:

enlace

También puede apuntar a las utilidades existentes de Debian para versiones recientes de Debian.

Ver los cambios recomendados en

enlace

    
respondido por el Oliver Hartkopp

Lea otras preguntas en las etiquetas