該方法是將原生的linux核心(linux-4.4.32)打上esdcan的補丁(esdcan_patch),然後使用apollo提供的build.sh 指令碼編譯成實時核心。下面具體介紹操作步驟。
git clone
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卡驅動的指令碼,在本人的機器上,親測可用。
這個比較快,操作也簡單,請參考apollo官方文件
方法一
操作那麼複雜,存在意義是什麼呢,我簡單嘮叨兩句:
折騰這麼久,你肯定想看看這個can能不能正常工作嘍。然而當你按照apollo官方文件進行測試時,並不能順利進行。下面我總結一下正確的測試過程,希望對大家有幫助。額,測試之前,首先看看你啟動的核心是不是那個帶著esd-can的。
在目錄apollo/modules/monitor/hardware/can/esdcan_tools/
你需要在docker中用bazel編譯。步驟如下:
#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
attention: 入行不深,疏漏難免,歡迎批評&&指正,不勝感激!
references:[1]
[2][3]
[4]
mysql cache除錯筆記
mysql cache除錯筆記 1 可以使用下列命令開啟mysql的select cache功能 set global query cache size 102400000 因為當query cache size預設為0時,是不開啟cache功能的。2 除錯 檢視cache的設定 show vari...
GDB 除錯筆記
chmod 777 r 給許可權包括子目錄下的所有檔案 ls l 顯示檔案的許可權大小時間等資訊 break 5 在第五行打斷點 break test 在函式test 打斷點 info break 顯示所有斷點 i b delete 2 刪除第二個斷點 list 顯示 list 1 從第一行向下顯示...
gdb除錯筆記
gcc main.c sum.c o main g gdb main info breakpoints 檢視所有的斷點 b main.c 24 設定斷點 b main.c main 可以用行號或者函式名字來設定斷點 break main.c 25 if a 109 條件斷點 disable 禁用所有...