3

我正在使用 TI Stellaris LM3S1968。该 MCU 具有 ARM Cortex-M3。

我在装有 Windows 7 的笔记本电脑上安装了一个 VM,并在那里安装了GNU Tools for ARM Embedded Processors。然后我安装了Stellaris Flash Programmer、GUI 和命令行。我还安装了Stellaris FTDI 驱动程序

最后,我下载并解压了EK-LM3S1968 固件开发包

在提取的文件夹中,有一些示例。其中之一是眨眼的。如果我去 /StellarisWare/board/ek-lm3s1968/blinky/gcc/ 有一个名为 blinky.bin 的文件。使用 Stellaris Flash Programmer,我可以将它连接到我的计算机并对其进行闪存,它会工作的。我尝试了各种示例,它们都有效。

现在我的目标是编译 /StellarisWare/board/ek-lm3s1968/blinky/ 中提供的示例代码,并将其烧写。但是,我运气不佳,因为我对 C 或微控制器编程不是很有经验。

我将 LM3S1968 库从 StellarisWare 文件夹复制到编译器的包含文件夹。然后我按照我在网上找到的一些例子,但我没有成功。这是我尝试过的:

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 和谷歌搜索中搜索,但我无法找到答案。

4

1 回答 1

0

I believe the linker is discarding the startup code. A good way to make sure it gets included is using KEEP in your linker script. This will make sure the linker does not discard your startup code. If you don't have your startup code in a section, you need to do that first.

于 2013-03-06T11:48:28.797 回答