0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

迅为2K1000龙芯开发板pmon BSP移植之配置CAN总线

北京迅为电子 2022-01-20 14:32 次阅读

移植pmon要比移植uboot难吗?

和 uboot 移植相比,给开发板移植 pmon 难吗?有什么区别呢。我们在移植 uboot 的时候,基本上是不 会在 uboot 的官网去下载纯净的 uboot 镜像的,而是用的半导体厂家提供的 bsp 包里面的 uboot。为什么要 这么做呢?并不是说 uboot 官网里面的 uboot 源码不能用,不能移植,而是 uboot 官网里面的 uboot 对相应的 CPU 的支持不是很好。你想哈,谁对 CPU 最熟悉呢?肯定是半导体厂家是不是,他们对自己的 CPU 肯定 是最熟悉的。所以他们提供的 bsp 里面的 uboot 是对他们的 CPU 支持最好的,驱动最全的。所以我们不会 在 uboot 官网去下载,然后在去移植。而且使用半导体厂家提供的 BSP 还有一个好处,就是移植非常简单。

就拿 uboot 移植来说,只需要基于半导体厂家的 BSP 来针对自己的开发板适配即可。所需要的工作并不多。

同理,在 LS2K1000 上我们使用的是 pmon,那这个 pmon 我们要去找原生的吗,显然不是。pmon 现在是龙 芯中科在进行维护,所以,龙芯中科提供的 pmon 会对自己的 CPU 支持的非常友好。基本上就是我们拿到 BSP 以后,稍加修改就可以完美的在开发板上来运行了。所以,pmon 的移植要比 uboot 的移植更加简单。

9.9.2 获取原厂 pmon 源码

源码 pmon 源码在:LS2K1000 开发板资料\12_原厂 BSP\1_pmon 源码

接着我们将 pmon 源码拷贝到 Ubuntu 虚拟机的任意目录下,然后按照手册 7.1 编译和 6.6 烧写 pmon 到开发板。可以发现,源码的 pmon 源码直接编译成功就可以在开发板上运行。非常友好。

9.9.3 配置 can 总线

我就进到 pmon 源码的 pmon-loongson3/Targets/LS2K/conf 路径下,使用命令 cp LS2K.dts LS2K.dts_back 备份一下设备树文件,如下图所示:

接着我们使用命令 vim LS2K.dts 打开设备树文件,找到 can0 和 can1 的设备节点,可以发现,在 BSP 里 面已经默认配置好了,不需要我们在额外配置,如下图所示:

接着我们来配置引脚的复用关系,通过 LS2K1000 的数据手册,可知地址 0x1fe10420 的第 16 到 17 位配置的是 can 引脚的复用关系,如下图所示:

通过上表可知,如果我们要把 GPIO 设置为 CAN 功能,我们需要将 16 到 17 位设置为 1,我们可以直接在 pmon 里面操作这个寄存器,比如使用在 Targets/LS2K/ls2k/tgt_machdep.c 文件中增加代码(volatile int *)0xbfe10420 |=(2<<16)将这俩位设置为 1,但是在 pmon 的 bsp 里面这些工作已经给我们做好了,只不过是没有编译进去而已。

在 Targets/LS2K/ls2k/tgt_machdep.c 文件的第 464 行使用了宏定义 PAI2 来决定包不包含 pai2.c 文件,如下图所示:

pai2.c 文件在路径 Targets/LS2K/ls2k/pai2.c 下,这个文件里面通过宏定义 SEL_CAN 来对 CAN 的管脚复用进行了配置,如下图所示:

所以我们是不是就不用在自己单独来添加代码了呢,我们只需要加上这 PAI2 和 SEL_CAN 这来个宏定义即可,我们打开 Targets/LS2K/conf/ls2k 文件,取消注释 option PAI2 并增加宏定义 option SEL_CAN,如下图所示:

然后我们重新编译 pmon 源码并烧写到开发板上,使用命令 devmem 0x1fe10420 来查看有没有成功将这俩个管脚的复用设置成 can,如下所示:

将 0x00131D49 换算成 2 进制,可以发现 16 到 17 位已经成功设置成了 1,所以这俩个 GPIO 已经成功被设置成 CAN。接着我们就可以来测试开发板的 CAN 功能了。

3.2.7 CAN 接口测试

开发板板载了两路 CAN 接口, 我们可以使用这两路 CAN 接口验证 CAN 的数据收发。首先我们使用电缆线连接 CAN1 和 CAN2(can 连接的时候: H 接 H、 L 接 L) , 如下图所示:

开发板上的两路 CAN 默认是关闭的, 我们在调试串口终端输入“ip link set can0 up type can bitrate

125000 triple-sampling on” 命令, 设置 CAN0 的波特率是 125000, 并打开 CAN0, 运行结果如下图所示:

然后我们在调试串口终端输入“

ip link set can1 up type can bitrate 125000 triple-sampling on” 命令, 设

置 CAN1 的波特率是 125000( CAN 总线在进行数据收发的时候,通信双方的波特率要设置成一致),并

打开 CAN1, 运行结果如下图所示:

接下来我们使用 CAN0 作为数据接收端, 我们需要在调试串口终端输入“candump can0 &” 命令, 运行结果如下图所示:

然 后 我 们 使 用 CAN1 作 为 数 据 发 送 端 , 我 们 在 调 试 串 口 终 端 输 入 “cansend can1 6A0#11.22.33.44.55.66.77.88”命令, 发送数据, 其中的 6A0 是帧 ID, #后面的是数据, 共 8 个字节。 运行结果如下图所示:

上图我们可以看到 CAN1 发送数据以后, 后台运行的 CAN0 接收程序收到了 CAN0 的数据, 并显示出来, 接收到的数据和发送的数据内容一致。

数据接收端和发送端也可以互换,可以参考上面的命令(主要是解释和发送程序的 CAN 接口设置对)。

相应视频教程:https://www.bilibili.com/video/BV1mT4y117eN?p=1

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 龙芯
    +关注

    关注

    2

    文章

    301

    浏览量

    30850
  • PMON
    +关注

    关注

    0

    文章

    7

    浏览量

    8200
收藏 人收藏

    评论

    相关推荐

    [广东龙芯2K1000/2K500开发板] OpenWRT 使用说明

    如何编译 从BSP 包的文件系统目录下找到OpenWrt 的源码并解码。 ##源码中已包含2k500和2k1000板卡的配置 ##2k50
    发表于 02-19 14:40

    全国大学生计算机系统能力大赛操作系统设计赛-LoongArch 赛道广东龙芯2K1000LA 平台资料分享

    ,可以参考龙芯开源社区,龙芯中科公司官网,龙芯在github的官方账号以及龙芯实验室大赛设置的文档仓库 内核赛道选用的
    发表于 02-04 15:37

    龙芯2K1000开发板加载PMON镜像

    ://192.168.1.38/gzrom-dtb.bin,其中 192.168.1.38 虚拟机 Ubuntu 的 IP 地址,如下图所示 烧写完成后重启开发板 PMON 即可更新成功。 更多文档可以查看 B站搜索-北京
    发表于 10-24 10:58

    龙芯开发板开发板系统烧写-启动系统

    上面所有的步骤我们都做完以后,输入命令 sync 确保我们之前的步骤都可以保存到 ssd,接着拔下 U盘,最后输入命令 reboot 重启开发板,如下图所示: 如果启动成功,我们会看到 pmon
    发表于 10-09 14:04

    LS2K0500开发板动态电源管理龙芯自主指令架构

    CPU LS2K0500开发板采用龙芯2K0500处理器,基于
    发表于 09-28 11:15

    龙芯2K1000核心板在智能座舱行业产品方案

    龙芯2K1000核心板在智能座舱行业产品方案-迅为电子
    的头像 发表于 09-26 14:18 493次阅读
    <b class='flag-5'>龙芯</b><b class='flag-5'>2K1000</b>核心板在智能座舱行业产品方案

    龙芯2K1000开发板通过汇编控制GPIO

    些。 我们打开 Targets/LS2K/ls2k/start.S 下的 start.S 文件,我们在 9.4.2 小节里面已经确定了他的位置,这里 就不在赘述了。 然后我们在第 487 行输入以下
    发表于 09-26 10:58

    Banana Pi BPI-5202中科龙芯2K1000嵌入式工控机扩展方案设计

    BPI-5202作为单纯的嵌入式通用控制器软硬件开发平台,采用龙芯2K1000LA芯片设计,基本配置中有2个独立MAC以太网端口、
    发表于 09-13 12:18

    Banana Pi推出基于龙芯2K1000LA处理器的信创工业控制开发平台

    Banana Pi推出基于龙芯2K1000LA处理器的信创工业控制开发平台:BPI-5202信创工业控制开发平台 BPI-5202 龙芯
    发表于 09-04 12:30

    iTOP-3A5000开发板外加机箱就是一台电脑主机国产龙芯

    。 核心+底板结构 iTOP-3A5000开发板核心+底板方式,底板规格按实现全国产照ATX规范来设计,外加机箱就是一台电脑主机。
    发表于 05-23 10:36

    广东龙芯2k500先锋2k1000星云板网络配置

    是使用2k1000 星云板作为例子,设置ip,此板卡存在两个网口。 可以看见下面有两个配置选项。这两个选项是在系统第一次开机的时候写入的。但是这个动作是人为规定的。即配置的名字只是一个例子,不是每个
    发表于 04-29 10:38

    广东龙芯2K500先锋规格书

    广东龙芯2K500先锋接口图 广东龙芯2K500先锋运行图 广东
    发表于 04-27 09:07

    广东龙芯2K1000LA星云板规格书

    广东龙芯2K1000星云板接口图 广东龙芯2K1000星云板整机图 广东龙芯2K1000星云板
    发表于 04-27 08:59

    广东龙芯LS2K500先锋使用介绍

    全国大学生系统能力大赛操作系统设计赛技术培训会 PPT 龙芯2K500先锋采用龙芯2K0500芯片作为主控芯片,板卡设计简洁小巧,是Loo
    发表于 04-22 21:26

    龙芯与开源鸿蒙的故事

    龙芯2K0500先锋2K1000LA星云板、润开鸿DAYU400(芯片2K0500)共计3
    发表于 04-21 22:40