close

CANBUS Pinmux DTS Driver

 

 


 

 

PinMux

 

 

PinMux Tool:http://www.ti.com/tool/pinmuxtool

可以獲得以下DTS Pinctrl,另外兩個是board文件,也可以用此方式設定

 

mydcan1_pins_default: mydcan1_pins_default {
pinctrl-single,pins = <
0x16c ( PIN_INPUT_PULLUP | MUX_MODE2 ) /* (E17) uart0_rtsn.dcan1_rx */
0x168 ( PIN_OUTPUT_PULLUP | MUX_MODE2 ) /* (E18) uart0_ctsn.dcan1_tx */
>;
};


 

DeviceTree

在uart3_pins_default 後加上 mydcan1 , pin 沒有被調動不會生效的

uart3_pins_default: pinmux_uart3_pins_default {
       pinctrl-single,pins = <
                   0x168 (PIN_INPUT_PULLUP | MUX_MODE1)    /* uart0_ctsn.uart4_rxd */
                   0x16c (PIN_OUTPUT_PULLDOWN | MUX_MODE1)       /* uart0_rtsn.uart4_txd */
       >;
};

mydcan1_pins_default: mydcan1_pins_default {
           pinctrl-single,pins = <
                   0x16c ( PIN_INPUT_PULLUP | MUX_MODE2 ) /* (E17) uart0_rtsn.dcan1_rx */
                   0x168 ( PIN_OUTPUT_PULLUP | MUX_MODE2 ) /* (E18) uart0_ctsn.dcan1_tx */
           >;
};

 

將&uart3 註解掉,並新增 &dcan1

/*
&uart3 {
pinctrl-names = "default";
pinctrl-0 = <&uart3_pins_default>;
status = "okay";
};
*/
&dcan1 {
       pinctrl-names = "default";
       pinctrl-0 = <&mydcan1_pins_default>;
       status = "okay";
};


 

compatible 是 am3352-d_can

dcan1: can@481d0000 {
       compatible = "ti,am3352-d_can";
       ti,hwmods = "d_can1";
       clocks = <&dcan1_fck>;
       clock-names = "fck";
       reg = <0x481d0000 0x2000>;
       syscon-raminit = <&am33xx_control_module 0x644 1>;
       interrupts = <55>;
       status = "disabled";
};

 

Make dtb

export PATH= your toolchain
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- am335x-boneblack.dtb


 

Kernel and Driver

Make menuconfig

 

選取Networking support

 

 

選取 CAN Bus subsystem support

 

選取下列三項,Gateway 應該可以不用

 

選取CAN Device driver 後如下選取

 

選取 Bosch C_CAN/D_CAN device > Generic Platform Bus based C_CAN/D_CAN driver

 

 

make

 

檢查

檢查 pinmux 是否正確

cd /sys/kernel/debug/pinctrl/44e10800.pinmux
cat pinmux.-pins
pin 90 (44e10968.0): 481d0000.can (GPIO UNCLAIMED) function mydcan1_pins_default group mydcan1_pins_default
pin 91 (44e1096c.0): 481d0000.can (GPIO UNCLAIMED) function mydcan1_pins_default group mydcan1_pins_default

 

cat pins

pin 90 (44e10968.0) 00000012 pinctrl-single

pin 91 (44e1096c.0) 00000032 pinctrl-single

 

可以知道pinmux 有沒有正確作用

 

檢查CAN裝置

ip link set can0 up type can bitrate 125000
ifconfig
can0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
         UP RUNNING NOARP  MTU:16 Metric:1
         RX packets:0 errors:0 dropped:0 overruns:0 frame:0
         TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:10
         RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
         Interrupt:71

 

 

因為要分析Canbus driver 架構

之前用過buildroot ,這次用 yocto 好了

預計

yocto > network driver > canbus driver 
 

arrow
arrow
    文章標籤
    CANBUS
    全站熱搜

    Frank 發表在 痞客邦 留言(0) 人氣()