jetson-tx2平台mttcan驱动分析

本文详细分析了Jetson TX2平台上的MTTCAN驱动,包括驱动的网络设备注册、中断资源获取、设备分配及初始化过程,以及数据的发送和接收机制。驱动遵循platform架构,使用socket can,并涉及Bosch的CAN控制器硬件资源的配置和操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       tx2内部集成了can控制器,用的是Bosch的芯片。can的驱动在tx2内核中被注册为网络设备也就是socket can,说到这里相信很多人已经猜到了驱动的大致架构,下面记录了我分析驱动的过程。

    首先该驱动还是遵循platform架构,所以我们这里就直接进入到probe函数了。

static int mttcan_probe(struct platform_device *pdev)
{
    struct net_device *dev;//网络设备,socket can
    struct mttcan_priv *priv;//mttcan私有结构体
    
    match = of_match_device(mttcan_of_table, &pdev->dev);//资源匹配
    
    irq = platform_g et_irq(pdev, 0);//获取中断资源
    alloc_mttcan_dev();//分配mttcan
    {
       dev = alloc_candev(sizeof(struct mttcan_priv), MTT_CAN_TX_OBJ_NUM);//分配can
       {
           //分配一个网络设备,分配大小size,size大小为对齐之后的值
           alloc_netdev(size, "can%d", NET_NAME_UNKNOWN, can_setup);
           priv = netdev_priv(dev);//使用私有数据
       }
    
        priv = netdev_priv(dev);//转为mttcan_priv私有结构体
        //时序固定值
        priv->can.bittiming_const = &mttcan_normal_bittiming_const;
        priv->can.data_bittiming_const = &mttcan_data_bittiming_const;
        //设置波特率,模式等函数
        priv->can.do_set_bittiming = mttcan_do_set_bittiming;
        priv->can.do_s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值