日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ESD-CAN安装调试笔记

發布時間:2023/12/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ESD-CAN安装调试笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

方法一 編譯帶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安装调试笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。