方法一 编译带ESD-CAN的Apollo-RT-Kernel

该方法是将原生的Linux内核(linux-4.4.32)打上esdcan的补丁(esdcan_patch),然后使用apollo提供的build.sh 脚本编译成实时内核。下面具体介绍操作步骤。

下载apollo-kernel,命令如下:

git clone https://github.com/ApolloAuto/apollo-kernel.git

内核文件准备工作

  • 下载Linux内核
    点击该链接即可下载:
    Linux Kernel 4.4.32

    tar zxvf linux-4.4.32.tar.gz

    将解压后目录下的所有文件copy到 apollo-kernel/linux路径下。你会发现在linux/drivers/路径中没有esdcan的目录。所有的内核驱动都是在其根目录drivers下的,esdcan驱动不是linux支持的,因此没有其源代码。

  • 打esdcan的补丁
    在 ~/apollo-kernel/linux/patches路径下,将文件esdcan.patch复制到linux目录中。

    在linux目录下,执行如下命令进行打补丁操作:
    patch -p1 < esdcan.patch
    此时查看./drivers/路径 ,发现esdcan目录已经存在。

  • 根据你选用的ESD-CAN卡型号,在附赠光盘中选取对应的驱动,解压,将 src/路径下除Makefile之外的所有文件copy到 ~/apollo-kernel/linux/drivers/esdcan/ 路径下。命令为:
    cd ~/apollo-kernel/linux/drivers/esdcan/ cp -ri ./src/* . #请将源路径替换成自己驱动src目录所在的路径
  • 执行如下命令
    cd drivers/esdcan/;ln -s Makefile.esd Makefile;ln -s Kconfig.esd Kconfig;cd ../.. #如果链接不成功,删掉 Makefile或 Kconfig重新进行进行即可

    编译

    成功执行完上述操作,你当前的路径应该是
    ~/apollo-kernel/linux/$
    在该路径下执行apollo官方提供的脚本进行编译:

./build.sh rt #rt参数表示只编译实时(RT)内核,其他参数参数请用"./build help"查看,或者直接打开该脚本一饱眼福,哈哈

编译整个内核啊,这是一个漫长的过程,在我新嘎嘎的 Nuvo-6108GGC E3-1275-V5 八核处理器上,编译了半个多小时呢。编译刚开始时,你可以看看前面输出的信息,说是编译的RT内核,ESD-CAN支持 ,blablabla...... 蓦然回首,一个编译好的鲜活生动的内核已经出炉!你可以在
~/apollo-kernel/linux/install/rt/路径下看到install.tgz文件,这就是内核安装包。解压,执行install路径下的脚本进行安装。如果你多看一眼,你会发现还有一个装N卡驱动的脚本,在本人的机器上,亲测可用。

内核默认启动选项修改

至此,带有ESD-CAN支持的apollo-rt-kernel的编译安装工作已经结束。但是你reboot会发现,启动的还是之前的内核。此时,你需要在grub.cfg中修改默认启动内核选项啦,具体做法,不会的请自行
百度一下。

方法二 Build & Install Out-of-Tree ESD Kernel Driver

这个比较快,操作也简单,请参考apollo官方文档
方法一
操作那么复杂,存在意义是什么呢,我简单唠叨两句:

  • 编译好的内核,你可以保存下来,以后直接安装就行(ESD-CAN的型号一致的话)。
  • 艺多不压身啊,有些时候你不得不编译内核

ESD-CAN调试

折腾这么久,你肯定想看看这个CAN能不能正常工作喽。然而当你按照APOLLO官方文档进行测试时,并不能顺利进行。下面我总结一下正确的测试过程,希望对大家有帮助。额,测试之前,首先看看你启动的内核是不是那个带着ESD-CAN的。

用bazel编译esdcan_test_app

在目录
apollo/modules/monitor/hardware/can/esdcan_tools/
下,有一个ESD-CAN卡的测试文件:
esdcan_test_app.cpp
你需要在docker中用bazel编译。步骤如下:

  • 开一个新的终端(不要进入docker),在路径
    apollo/third_party/can_card_library/esd_can
    下,新建两个目录:lib 和 include
  • 按照apollo官方文档中步骤2操作,即:
    #Copy ntcan.h to include/#Copy 64-bit libntcan.so.4.0.1 to lib/#Do the following to add the necessary symbolic links:cd ./lib/;ln -s libntcan.so.4.0.1 libntcan.so.4;ln -s libntcan.so.4.0.1 libntcan.so.4.0
  • 用下面的命令进行编译
    cd modules/monitor/hardware/can/esdcan_tools/#注意:在docker内 bazel build //modules/monitor/hardware/can/esdcan/esdcan_tools:esdcan_test_app # 这是一个完整的命令,双斜杠不是注释!
  • 编译成功,在目录
    apollo/bazel-bin/modules/monitor/hardware/can/esdcan_tools/
    下有可执行文件:
    esdcan_test_app
    在该路径下输入以下命令对ESD-CAN进行测试:
    ./esdcan_test_app --details=true

ATTENTION: 入行不深,疏漏难免,欢迎批评&&指正,不胜感激!

References:[1] https://github.com/ApolloAuto/apollo-kernel/blob/master/linux/ESDCAN-README.md

[2][https://github.com/ApolloAuto/apollo-kernel](https://github.com/ApolloAuto/apollo-kernel)

[3]https://github.com/ApolloAuto/apollo/blob/master/docs/howto/how_to_troubleshoot_esdcan.md

[4]https://github.com/ApolloAuto/apollo/tree/master/third_party/can_card_library/esd_can

ESD-CAN安装调试笔记相关推荐

  1. tensorflow学习笔记一:安装调试

    denny的学习专栏 徐其华 博客园 首页 新随笔 联系 管理 订阅 随笔- 129  文章- 0  评论- 791  tensorflow学习笔记一:安装调试 用过一段时间的caffe后,对caff ...

  2. 调试笔记--jlink 变量转实时波形小技巧

    调试笔记–jlink 变量转实时波形小技巧 上篇讲了jlink RTT组件在RAM中开辟一段内存,将printf字符串存入然后通过jlink调试接口读取RAM,将printf字符串在jlink-RTT ...

  3. 调试笔记--keil 测量周期小技巧

    调试笔记–keil 测量周期小技巧 本文参考安富莱专题教程第7期 http://www.armbbs.cn/forum.php?mod=viewthread&tid=87176&ext ...

  4. gpio驱动广播Android,[RK3288][Android6.0] 调试笔记 --- 通用GPIO驱动控制LED【转】

    Platform: ROCKCHIP OS: Android 6.0 Kernel: 3.10.92 由于板子没有lcd无法得知sd卡升级是否完成,因此使用LED显示. Recovery中升级完成后控 ...

  5. 伦茨8400变频器面板按键说明_变频器调试笔记

    笔者于年后换了家工作单位,有机会跟踪学习了一条汽车生产线总装车间设备的安装调试.其中有几个典型的变频器调试案例,笔者整理整理笔记,来和大家分享一下. 案例一:问题描述:从底盘线转往综合线的空中EMS的 ...

  6. keil4怎么移植其他人的程序_【调试笔记】韦东山:在100ask_imx6ull上移植使用六轴传感器ICM20608...

    之前发了LCD调试笔记,大家很感兴趣,所以这次再来一篇:六轴传感器ICM20608驱动移植笔记,大家还需要什么移植笔记?可以留言.我们尽量满足. 1.1 移植思路 先找到驱动:也许内核里已经有,也许需 ...

  7. RK3399 GT1X触摸屏驱动调试笔记

    硬件环境 1.Firefly AIO-3399(AI)开发版: 2.恒智的5寸电容触摸屏800X480,I2C驱动支持GT5688. 操作系统 Android 7.2 for rockship Ste ...

  8. Rockchip基于RK3566/RK3568 WiFi AP6256调试笔记

    1.开发平台 CPU:RK3566 编译环境:Ubuntu18.04 内核版本:kernel 4.19 2.目的 因为RK3566/RK3568支持SDIO3.0并且向下兼有SDIO2.0接口,由于核 ...

  9. OMAPL138调试笔记

    title: Linux 嵌入式使用 tags: 新建,模板,小书匠 grammar_cjkRuby: true Copyright (C) @2018 Widic Filename:File-fun ...

最新文章

  1. 计算机系统的备份与还原实验报告,数据库《数据备份与还原》实验报告.doc
  2. Unity 找到隐藏的UGUI
  3. 没有bug队——加贝——Python 55,56
  4. 数据3分钟丨​俄罗斯金融监控局4.6亿卢布招标国产数据库;Meta被欧盟罚款1900万美元;达观数据和天云数据分获数亿元融资...
  5. 部分基于layui的时间函数
  6. Python抓取打印机硒鼓和组件剩余量的爬虫
  7. python语言format用法_format()函数的定义和用法总结
  8. 残差网络 ResNet 为什么能训练出1000层的模型 动手学深度学习v2
  9. 【无标题】IDM + 油猴 + 百度云
  10. Windows 本地安全策略
  11. python求平方值,python – 字典的平方值
  12. iphone个系列尺寸_iPhone9只是套模iPhone8,这些才是iPhone经典款,你用过哪些?
  13. 手写一个springboot的starter
  14. HDU1847:Good Luck in CET-4 Everybody!(SG博弈)
  15. 新浪微博情感分析--含爬虫及数据分析
  16. 关于星环TDH产品的Java通过Kerberos安全认证连接hyperbase
  17. No qualifying bean of type ‘com.bruceliu.mapper.UserMapper‘
  18. 期货开户不同客户手续费不同
  19. Xcode10 开启暗黑模式(dark mode)
  20. 全方位体验Windows的日历功能

热门文章

  1. [转载] 中华典故故事(孙刚)——26 叫了王承恩
  2. java hid_Java HIDAPI - 异步读取
  3. python中callable什么意思_Python中的callable是基于什么样的机制实现的
  4. Android AccountManager帐号管理(一)
  5. 苹果手机 jquery点击事件无效
  6. IE网页出现js错误修复方法_离水的鱼_新浪博客
  7. 欧姆龙NJ/NX使用POD映射拓展轴功能块与应用案例
  8. 单目相机内参标定注意事项
  9. Transformers库安装报错
  10. 神经网络之传递函数(sigmoid ,双S)