2013-02-18 73 views
3

我正在使用TI Stellaris LM3S1968。該MCU具有ARM Cortex-M3。如何編譯和鏈接示例代碼以獲取二進制文件?

我在我的筆記本電腦安裝了虛擬機與Windows 7就可以了,還有我安裝GNU Tools for ARM Embedded Processors。然後我安裝了Stellaris Flash Programmer, GUI and command line。我也安裝了Stellaris FTDI Drivers

最後,我下載並提取EK-LM3S1968 Firmware Development Package

在提取的文件夾中,有一些示例。其中之一是閃爍。如果我去/ StellarisWare/board/ek-lm3s1968/blinky/gcc /有一個名爲blinky.bin的文件。使用Stellaris閃存編程器,我可以將它連接到我的電腦並閃存,並且它可以工作。我用各種例子嘗試過,他們都工作。

現在我的目標將是編譯/的StellarisWare /板/ EK-LM3S1968 /的Blinky /提供的示例代碼,並閃爍它。但是,我沒有太多的運氣,因爲我對C或編程微控制器不熟悉。

我將LM3S1968庫從StellarisWare文件夾複製到編譯器的include文件夾中。然後我跟着我在網上找到的一些例子,但我沒有成功。這是我嘗試過的:

arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb blinky.c -nostartfile -T blinky.ld -o blinky.o 
arm-none-eabi-ld -T blinky.ld -o blinky.out blinky.o 
arm-none-eabi-objcopy -Obinary blinky.out blinky.bin 

當我刷新這個.bin文件時,它什麼都不做,LED就一直亮着。

我想這是因爲有一個startup_gcc.c文件,它處理運行程序之前啓動MCU。但我不確定如何捆綁它。

有很多是針對不同的IDE文件,但他們不自由,所以我想用GNU工具。

我試着在StackOverflow和Googling搜索這裏,但我無法找到答案。

+0

從粗略的角度來看,我認爲你必須做兩件事。 (1)將startup_gcc.c編譯爲startup_gcc.o,並修改arm-none-eabi-gcc的調用版本,然後(2)將調用修改爲arm-none-eabi-ld,使其包含startup_gcc .o - 從來不是(手工生成的)makefile或cmd-line構建過程的粉絲。你可以(幾乎可以肯定)用Code :: Blocks ide來使用arm編譯器。我傾向於用它來緩解構建過程。我有C :: B,但是發現很難證明50+ MB的下載來測試arm編譯器。 :-p – enhzflep 2013-02-18 18:02:17

+0

從我發佈這些http://lmistuff.blogspot.com/2008/01/blinker3.html我現在使用github.com/dwelch67已經很長時間了。 Luminary micro是ti購買的,產品名稱stellaris在購買之後仍然保留。我的示例中沒有一個使用stellaris庫或代碼,我徹底解決了這些問題,並且具有非常簡單,開銷較低的示例。所有源代碼都在包中,它不依賴於編譯器及其鏈接器腳本或啓動代碼。覆盆子pi目錄有更多的信息(baremetal),可能會更多關注如何使用gnu工具進行這類工作 – 2013-02-19 05:13:01

回答

0

我相信鏈接器是放棄啓動代碼。 確保其包含的一個好方法是在鏈接描述文件中使用KEEP。這將確保鏈接器不會丟棄您的啓動代碼。如果您的部分沒有啓動代碼,則需要先執行該操作。

相關問題