Ubuntu:STM32(Cortex-M3)交叉编译时使用什么gcc?
我正在尝试开始使用STM32(Cortex-M3),我的计划是从Ubuntu(9.04/AMD64)开始使用 首先,我得到了标题板和jtag,在此基础上,我可能会使用OpenOCD、gcc和Eclipse 但是现在我正在研究使用什么版本的gcc,以及如何设置它以能够交叉编译代码 似乎有一些arm项目,但我不知道从什么开始, 有人能把我推到正确的方向吗 谢谢 约翰Ubuntu:STM32(Cortex-M3)交叉编译时使用什么gcc?,gcc,ubuntu,arm,cortex-m3,stm32,Gcc,Ubuntu,Arm,Cortex M3,Stm32,我正在尝试开始使用STM32(Cortex-M3),我的计划是从Ubuntu(9.04/AMD64)开始使用 首先,我得到了标题板和jtag,在此基础上,我可能会使用OpenOCD、gcc和Eclipse 但是现在我正在研究使用什么版本的gcc,以及如何设置它以能够交叉编译代码 似乎有一些arm项目,但我不知道从什么开始, 有人能把我推到正确的方向吗 谢谢 约翰 更新: 似乎有我想要的东西, 但他们似乎关注IA32,而不是AMD64 然而,在支持的设备中,我发现Cortex-M3 ARM E
更新: 似乎有我想要的东西, 但他们似乎关注IA32,而不是AMD64 然而,在支持的设备中,我发现Cortex-M3
- ARM EABI,ARM M剖面模拟器-mcpu=cortex-m3-mthumb
- 因为这个答案有点“不可读”,
我用这个信息创建了一个页面
这是一个基于这两个指南的免费解释,但我必须更改版本并应用一些补丁才能使其正常工作
vi configure
mkdir build
cd build
../configure --target=arm-none-eabi --prefix=$TOOLPATH --enable-interwork --disable-newlib-supplied-syscalls --with-gnu-ld --with-gnu-as --disable-shared
make CFLAGS_FOR_TARGET="-ffunction-sections -fdata-sections -DPREFER_SIZE_OVER_SPEED -D__OPTIMIZE_SIZE__ -Os -fomit-frame-pointer -mcpu=cortex-m3 -mthumb -D__thumb2__ -D__BUFSIZ__=256" CCASFLAGS="-mcpu=cortex-m3 -mthumb -D__thumb2__"
make install
cd ../..
更多gcc
总结
现在,我刚刚向我的~/.bashrc添加了一些路径
#STM32 gcc...
export TOOLPATH=/usr/local/cross-cortex-m3
export PATH=${TOOLPATH}/bin:$PATH
我应该为下一步做好准备…请看Buildroot适用于更大的arm:s,如ARM9、ARM11、Cortex-A8(如果您想在其上运行Linux)。但对于MCU风格的Cortex-M3(更像是ARM7)就不是这样了。不过还是要谢谢你。在我们重组了eLua网站之后,你在那里的链接不再正确了,你可以在这里找到相同的页面:仅供参考,我有一些单独的说明,用于在OS X上构建64位CodeSourcery的工具链。让它们也在Linux上工作可能不太难:同样值得注意的是,由于Ubuntu 64位安装可以运行32位应用程序,CodeSourcery的工具在Ubuntu/AMD64安装上运行应该没有问题。(免责声明:我是CodeSourcery的员工。)感谢您在AMD64上的注释,我用信息更新了问题。非常感谢您发布此消息。多年来,我一直在努力研究如何为Cortex M3芯片制造。我仔细研究了我以前最喜欢的问题,发现了这个问题,我将把它作为我所有的参考资料。再次感谢!
wget http://ftp.gnu.org/gnu/binutils/binutils-2.19.tar.bz2
tar -xvjf binutils-2.19.tar.bz2
cd binutils-2.19
mkdir build
cd build
../configure --target=arm-none-eabi --prefix=$TOOLPATH --enable-interwork --enable-multilib --with-gnu-as --with-gnu-ld --disable-nls
vi ../gas/config/tc-arm.c
make
make install
export PATH=${TOOLPATH}/bin:$PATH
cd ../..
wget ftp://ftp.sunet.se/pub/gnu/gcc/releases/gcc-4.3.4/gcc-4.3.4.tar.bz2
tar -xvjf gcc-4.3.4.tar.bz2
cd gcc-4.3.4
mkdir build
cd build
../configure --target=arm-none-eabi --prefix=$TOOLPATH --enable-interwork --enable-multilib --enable-languages="c,c++" --with-newlib --without-headers --disable-shared --with-gnu-as --with-gnu-ld
make all-gcc
make install-gcc
cd ../..
wget ftp://sources.redhat.com/pub/newlib/newlib-1.17.0.tar.gz
wget http://www.esden.net/content/embedded/newlib-1.14.0-missing-makeinfo.patch
tar -xvzf newlib-1.17.0.tar.gz
cd newlib-1.17.0
patch -p1 -i ../newlib-1.14.0-missing-makeinfo.patch
vi configure
mkdir build
cd build
../configure --target=arm-none-eabi --prefix=$TOOLPATH --enable-interwork --disable-newlib-supplied-syscalls --with-gnu-ld --with-gnu-as --disable-shared
make CFLAGS_FOR_TARGET="-ffunction-sections -fdata-sections -DPREFER_SIZE_OVER_SPEED -D__OPTIMIZE_SIZE__ -Os -fomit-frame-pointer -mcpu=cortex-m3 -mthumb -D__thumb2__ -D__BUFSIZ__=256" CCASFLAGS="-mcpu=cortex-m3 -mthumb -D__thumb2__"
make install
cd ../..
cd gcc-4.3.4/build
make CFLAGS="-mcpu=cortex-m3 -mthumb" CXXFLAGS="-mcpu=cortex-m3 -mthumb" LIBCXXFLAGS="-mcpu=cortex-m3 -mthumb" all
make install
#STM32 gcc...
export TOOLPATH=/usr/local/cross-cortex-m3
export PATH=${TOOLPATH}/bin:$PATH