MEMORY
{
FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 0x20000
SRAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x5000
}
/* Section Definitions */
SECTIONS
{
.text :
{
KEEP(*(.isr_vector .isr_vector.*))
*(.text .text.*)
*(.rodata .rodata*)
_etext = .;
} > FLASH
.data : AT (_etext)
{
_data = .;
*(.data .data.*)
. = ALIGN(4);
_edata = . ;
} > SRAM
/* .bss section which is used for uninitialized data */
.bss (NOLOAD) :
{
_bss = . ;
*(.bss .bss.*)
*(COMMON)
. = ALIGN(4);
_ebss = . ;
} > SRAM
.stackarea (NOLOAD) :
{
. = ALIGN(8);
*(.stackarea .stackarea.*)
. = ALIGN(8);
} > SRAM
. = ALIGN(4);
_end = . ;
}
补充一些
我一般在项目中有一个port目录,下面有IAR和GCC2个子目录,分别放置IAR和GCC需要的启动文件和其他一些和编译平台有关的一些移植文件。
IAR中,直接使用IAR目录下的相关文件;GCC中也直接使用GCC目录下的文件(目录下建立gcc-bulid,然后项目目录建立Makefile-C到gcc-build里的Makefile)。这样做的话,GCC和IAR可以公用一个项目目录,甚至如果以后使用MDK的话,也只是在port下建立一个MDK子目录而已。如果需要的话,可以做一个示例项目。
Linux下开发的话,还有一个问题,我一直没有找到Linux下公开的ISP软件(这个一般都不兼容,因为Windows下串口是COMX,而Linux下是ttySX或者ttyACMX等)。所以我也自己修改了stm32boot,使得可以直接在Windows下或者Linux下编译通过。
PS:现在wine已经做的非常不错了,使用最新Dev版本(感觉比稳定版本速度快),直接可以在Linux下使用IAR EWARM,并同样可以正常通过OpenOCD调试目标芯片。
还不是写程序!
POWER PC 有 FREESCALE CODEWARRIOR DEVELOPMENT STUDIO
ARM CORTEX-M3/A8 有 ARM KEIL; IAR ;
TI DSP 有 TI CCS3.3
AD DSP 有 AD VISUAL DSP++
怎么调试呢
在LINUX下能用HJTAG、JLINK或者ULINK来调试吗