CPU:S3C2440, ARM920T, Internal 4KB RAM, Support boot from NAND flash, 128MB for each bank。
JZ2440:Memory接到Bank6,所以内存地址从0x3000,0000(128MBx6)开始。 Nand 256M 8bit,SDRAM 64M 32bit,Nor 2M 16bit。
Keil-MDK5已经不支持ARM9,需要安装额外的pack支持:http://www2.keil.com/mdk5/legacy/
参考::s3c2440裸机开发环境的搭建 ::基于KEIL4开发ARM9(S3C2440)的裸机程序
配置S3C2440.s,这是MDK自动生成的。主要是配置关闭Watchdog,配置MEM,CLK。GPIO的设置我们放到C code里面实现:
设置地址如下:
设置生成文件:
/* * Leds.c * Light leds in turn. */ // S3C2440 registers define #define GPFCON (*(volatile unsigned long *)0x56000050) #define GPFDAT (*(volatile unsigned long *)0x56000054) // Set GPF4/5/6 as output. #define GPF4_out (1<<(4*2)) #define GPF5_out (1<<(5*2)) #define GPF6_out (1<<(6*2)) // Delay void Delay(volatile unsigned long delay) { ; delay--); } int main(void) { // Set GPF4/5/6 as output. GPFCON = GPF4_out|GPF5_out|GPF6_out; // Pull down will light led, so pull up here. GPFDAT = 0xFF; ){ Delay(); GPFDAT = 0xEF; // 1110,1111 Delay(); GPFDAT = 0xDF; // 1101,1111 Delay(); GPFDAT = 0xBF; // 1011,1111 } ; }
通过oflash.exe(安装OpenOCD之后位于bin目录)烧写bin文件到nand flash的地址0位置:https://blog.csdn.net/thisway_diy/article/details/52808038
纯ARM汇编程序点亮LED的程序(所有行都要TAB缩进):
AREA RESET, CODE, READONLY ARM LDR R0,=0x56000050 ; GPFCON MOV R1,#0x00000100 ; bit[9:8]=01, set GPF4 output STR R1,[R0] ; LDR R0,=0x56000054 ; GPFDAT ; MOV R1,#0x00000000 ; pull down GPF STR R1,[R0] ;