正如标题说的那样,中间过程就不细说了,参考了很多网上的资料。
---------------------------------------------------------------------------
1、确定jlink是否识别ARM11核,我们链接好jlink和开发板,打开jlink commander如下所示:
如果出现上面的画面,意味着你的jlink能识别ARM11核,如果识别不了,可以换个jlink驱动试试。
-----------------------------------------------------------------------------------
2、
先用IAR建立一个工程,裸机的初始化文件,就用安装目录中的
IAR Systems\Embedded Workbench 6.0\arm\src\lib\arm\cstartup.s稍作修改即可,其实修改的很简单,如下所示:
------------------------------------------------------------------------
原文件修改的部分:
;; Turn on core features assumed to be enabled.
FUNCALL __iar_program_start, __iar_init_core
BL __iar_init_core
;; Initialize VFP (if needed).
FUNCALL __iar_program_start, __iar_init_vfp
BL __iar_init_vfp
;;;
;;; Add more initialization here
;;;
;;; Continue to __cmain for C-level initialization.
FUNCALL __iar_program_start, __cmain
B __cmain
END
------------------------------------------------------------------------
修改后的部分:
;; Turn on core features assumed to be enabled.
; FUNCALL __iar_program_start, __iar_init_core
; BL __iar_init_core
;; Initialize VFP (if needed).
; FUNCALL __iar_program_start, __iar_init_vfp
; BL __iar_init_vfp
;;;
;;; Add more initialization here
;;;
;;; Continue to __cmain for C-level initialization.
; FUNCALL __iar_program_start, __cmain
B main
END
-----------------------------------------------------------------------
然后就可以把我们自己的c语言写的主函数文件加进去了,下面这个是网上找的流水灯,可以根据自己的开发板修改:
#include <stdlib.h>
#define rGPMCON (*(volatile unsigned *)(0x7F008820))
#define rGPMDAT (*(volatile unsigned *)(0x7F008824))
#define rGPMPUD (*(volatile unsigned *)(0x7F008828))
void msDelay(int time)
{
volatile unsigned int i,j;
for(i = 0; i < 2000000; i++)
for(j=0; j<time; j++);
}
void GPIO_Init(void)
{
rGPMCON = 0x11111;
rGPMPUD = 0x00;
rGPMDAT = 0X1F;
}
void LedTest(void)
{
volatile unsigned int i;
while (1)
{
for(i=0; i<4; i++)
{
rGPMDAT = ~(1<<i);
msDelay(10);
}
}
}
void main(void)
{
GPIO_Init();
LedTest();
}
-------------------------------------------------------------------------
3、
还涉及到一个文件,是链接是要用到的,可以用下面这个文件稍作修改,修改后,放到自己的工程目录下,下面要用到。
IAR Systems\Embedded Workbench 6.0\arm\config\generic.icf
------------------------------------------------
其实主要修改下面这一部分,把它改为自己的内存配置即可:
/*###ICF### Section handled by ICF editor, don't touch! ****/
/*-Editor annotation file-*/
/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\a_v1_0.xml" */
/*-Specials-*/
define symbol __ICFEDIT_intvec_start__ = 0x0;
/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__ = 0x80;
define symbol __ICFEDIT_region_ROM_end__ = 0x7FFFF;
define symbol __ICFEDIT_region_RAM_start__ = 0x100000;
define symbol __ICFEDIT_region_RAM_end__ = 0x1FFFFF;
--------------------------------------------------
4、下面就是编译器配置了
右键点击上图,标记处,出现下图,逐个配置即可:
上面这个图,就是用3中那个文件修改来的。
-----------------------------------------------------------------------
就这样,编译后,就可以下载到开发板中进行调试了。
注:下载之前要把,开发板停在uboot下才可以,应该是对开发板做些初始化用,如时钟等等。
出现下图就可以,调试了:
---------------------------------------------------------