基於ubuntu下stm32開發環境搭建(ubuntu+st-link+libopencm3)


玩8位、16位、32位單片機之類的開發國內基本上都是用windows操作系統,用的是keil、iar之類的開發工具。以stm32為例,開發有stm32官方提供的標准庫,就是類似於STM32Fxxx_StdPeriph_Lib_Vx.x.x這種,配合keil用起來也是相當順手,而且在這種環境下開發資源豐富,遇到的問題也容易解決。

前段時間公司開發stm32項目,由於有國外現成的開源方案,只是不湊巧國外的大牛開發stm32的項目用的是linux開發環境,用的是libopencm3庫,好在以前是在linux下做嵌入式開發的,不然真的抓瞎,這些問題倒騰倒騰整理一下分享給大家。

一、開發環境搭建

這里用的操作系統是ubuntu14.04 
1、下載必要的工具 
sudo apt-get install git libusb-1.0.0-dev(libusb是st-link要的底層驅動)

2、添加gcc-arm-embedded源,初始化編譯器 
sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded 
sudo apt-get update 
sudo apt-get install gcc-arm-none-eabi

3、初始化ST-LINK調試與燒寫器驅動(有人喜歡用J-LINK,在Linux下也可以,不過安裝驅動就是稍微麻煩一點,有興趣的可以自己研究) 
git clone https://github.com/texane/stlink.git 
cd stlink/ 
./autogen.sh 
./configure 
make && make install 
此時連接st-link 這時用lsusb命令就可以查看到相關的設備已經連接上,如下圖 
這里寫圖片描述

4、此時整個編譯環境與下載環境搭建好了,做STM32開發還有一個重要的東西,那就是開發庫,用開發庫可以幫我們省不少時間嘛。這里我用項目中使用開源的libopencm3庫來演示,當然stm32的官庫也可以在linux下使用,只是要自己寫Makefile來編譯,這個有興趣的可以自己動手編譯一下。 
git clone git://github.com/libopencm3/libopencm3.git 
cd libopencm3 
make 
在lib目錄下面編譯出來會有相關的xxx.a文件,這里針對你的芯片來做鏈接,比如你是stm32f1xx系列芯片,項目里面的連接就使用libopencm3_stm32f1.a

二、構建項目

1、現在整個開發庫與開發環境都構建完成了,那我們要開始寫代碼,編譯,調試、下載到開發板啊,這里由於涉及到Makefile的編寫,這里就直接用我STM32F205項目中的dfu demo做為示例,項目源代碼請參考: 
https://github.com/ykevin/blog/tree/master/embedded/dfu 
2、關於src目錄下面,里面有一個memory.ld、Makefile.include文件,其中memory.ld文件是芯片的連接腳本文件,這個根據你的芯片來選擇,Makefile.include是用來編譯項目的文件,具體的請看Makefile相關手冊。 
3、進入src目錄,直接make就可以編譯完成項目(記得要先編譯libopencm3庫)。 
4、下程序,只需要在src目錄make flash就可以(當然前提是你的st-link已經正確連接並識別)

三、調試

1、對於linux下的嵌入調試,這里使用的是強大的gdb工具,對於gdb的使用我就不做說明,這里我只演示怎么用gdb調試stm32 
2、終端上執行以下命令 
sudo st-util 
arm-none-eabi-gdb 
tar extended-remote :4242 
load dfu.elf 
3、到上面一步后就跟在x86下面gdb調試一樣。

四、資源

1、關於libopencm3的使用網上有一個libopencm3-example的合集里面有各種國外經典開發板的各個模塊的小demo,有興趣的可以自己研究。 
https://github.com/libopencm3/libopencm3-examples


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM