Ubuntu 下 ODrive 固件開發環境搭建
以下內容適用於希望修改ODrive固件的開發人員。因此,它假定您瞭解諸如如何使用Git,什麼是編譯器之類的知識。如果這聽起來很陌生,以下內容對您來說可能不適合。
注意:所使用的 Ubuntu 版本爲 Ubuntu18.04
文章目錄
1 Visual Studio Code
1.1 安裝 Visual Studio Code
-
Visual Studio Code 官網下載鏈接:https://code.visualstudio.com/download
-
百度網盤下載鏈接:
鏈接 https://pan.baidu.com/s/1osfaEsfw5dNKcDjoJhrrRQ
提取碼 zxgy
雙擊下載到的 Visual Studio Code_1.42.0-1580986622_amd64.deb 安裝包,按照提示保持默認安裝即可。
1.2 安裝 Visual Studio Code 擴展插件
- 所需擴展插件:
- C/C++
- Cortex-Debug
- 推薦安裝的擴展插件:
- Include Autocomplete
- Path Autocomplete
- Auto Comment Blocks
插件安裝方法:
- 啓動 Visual Studio Code
- 點擊紅框
- 在紅框內輸入 vscode Enter
- 單擊 Visual Studio Code 圖標已啓動
- 點擊紅框
- 點擊紅框打開插件管理視圖
- 在紅框中輸入要安裝插件的名稱 (如:C/C++) 回車
- 點擊紅框中的 Install 安裝
- 等待安裝完成即可
注意: 安裝完所需插件後請關閉 Visual Studio Code 再進行下邊的步驟
2 安裝 make & make-guile
sudo apt install make
sudo apt install make-guile
驗證安裝是否正確
make --version
3 安裝 tup
sudo add-apt-repository ppa:jonathonf/tup && sudo apt-get update && sudo apt-get install tup
驗證安裝是否正確
tup --version # should be 0.7.5 or later
4 安裝 gcc-arm-embedded 工具鏈
sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa && sudo apt update && sudo apt install gcc-arm-embedded
驗證安裝是否正確
arm-none-eabi-gcc --version
5 安裝 openocd
sudo apt-get install openocd
驗證安裝是否正確
openocd --version # should be 0.10.0 or later
6 安裝 git
sudo apt install git
驗證安裝是否正確
git --version
7 設置 python3 爲默認 python
由於 Ubuntu18.04 默認已安裝 python3,所以只需要設置 python3 爲默認的 python 即可
sudo rm -f /usr/bin/python
sudo ln -s /usr/bin/python3 /usr/bin/python
驗證安裝是否正確
python --version
8 嘗試編譯固件源碼
推薦使用 git clone ODrive 固件源碼到本地,但是由於政策問題 clone 會非常慢,因此,下面提供了額外的百度網盤下載鏈接。
- github
- 百度網盤下載:
鏈接 https://pan.baidu.com/s/1RVbYDL99u2blRTe4mNc5dQ
提取碼 mjq4
注意:以下使用百度網盤下載地址
下載的固件進行編譯
解壓 ODrive-fw-v0.4.11-19-g1c947631.zip
進入 ODrive-fw-v0.4.11-19-g1c947631
文件夾,鼠標右鍵單擊 ODrive_Workspace.code-workspace
文件,點選 Open With Other Application,然後選擇 Visual Studio Code 打開
單擊紅框中的 tup.config.default
文件,配置硬件版本,修改爲如下代碼:
# Copy this file to tup.config and adapt it to your needs
# make sure this fits your board
CONFIG_BOARD_VERSION=v3.5-24V
CONFIG_USB_PROTOCOL=native
CONFIG_UART_PROTOCOL=ascii
CONFIG_DEBUG=false
# Uncomment this to error on compilation warnings
#CONFIG_STRICT=true
然後將 tup.config.default
文件重命名爲 tup.config
然後保存。
依次點擊菜單中的 Terminal -> Run Build Task… 等待構建、編譯完成
雖然編譯完成了,但是上邊的構建過程存在一些問題,這是由於我們使用的源碼包而不是通過 git clone 到本地的(如果是通過 git clone 到本地則不存在這個問題),所以執行 version.py 腳本時無法正確獲取固件版本信息。可以修改一下 version.py 內部代碼,不通過 git 命令獲取版本信息而是手動填寫版本信息。修改 version.py 內第22行 get_version_from_git() 函數如下:
修改前:
def get_version_from_git():
script_dir = os.path.dirname(os.path.realpath(__file__))
try:
# Determine the current git commit version
git_tag = subprocess.check_output(["git", "describe", "--always", "--tags", "--dirty=*"],
cwd=script_dir)
git_tag = git_tag.decode(sys.stdout.encoding).rstrip('\n')
(major, minor, revision, is_prerelease) = version_str_to_tuple(git_tag)
# if is_prerelease:
# revision += 1
return git_tag, major, minor, revision, is_prerelease
except Exception as ex:
print(ex)
return "[unknown version]", 0, 0, 0, 1
修改後:
def get_version_from_git():
return "fw-v0.4.11-19-g1c947631*", 0, 4, 11, True
9 完成開發環境搭建
9.1 構建工程
- Terminal -> Run Build Task…
終端窗口將被打開。VSCode配置會在此終端中運行命令 make -j4
,來編譯工程。
9.2 燒錄固件
- Terminal -> Run Task… -> flash
終端窗口將被打開。 VSCode配置會在此終端中運行命令make flash
,來燒錄固件。
9.3 調試
Cortex-Debug 擴展插件,專門用於調試ARM Cortex項目。 您可以在此處閱讀有關Cortex-Debug的更多信息:https://github.com/Marus/cortex-debug
- 確保將固件源碼文件夾作爲當前文件夾
- 用最新固件加載到ODrive (如果使用調試模式可以不需要此操作)
- 點擊Debug -> Start Debugging (或鍵盤 F5)
- 處理器將重置並進入暫停
- 設置斷點。注意: 您只能在處理器暫停時設置斷點,如果在運行模式下設置斷點,則不會應用它們
- 運行 (F5)
- Stepping over/in/out, 重新運行, 按下
pause
(F6) 按鈕然後重新設置斷點等 - 當調試完畢後,您可以按下
stop
(Shift+F5) 停止調試。同時它會自動關閉openOCD
9.4 清除構建文件
如果您想構建新的代碼分支您可能需要清理構建時生成的文件。
- 打開命令終端 (View -> Terminal) 然後在命令終端中輸入
make clean
回車
如果您有任何問題或疑問,歡迎您加入ODrive社區或QQ羣 851421965 進行交流。