LED对应的引脚是GPF4、GPF5、GPF6。
使用的编译器为arm-linux-gcc-4.5.1。
包括四个文件head.S main.c main.lds Makefile。
实验目的:把点灯的程序搬运到内存中执行。
2440使用nand启动时,会将nand前4k硬件搬运到内部4ksram中。如果需要运行大型程序的话,还要初始化外部内存。
与nGCS6或7片选相连的可以是内存,且6或7只能接同一种大小的内存。
JZ2440v2采用的是两个钰创EM63A165TS-6G的SDRAM,每个4M word x 16-bit x 4-bank,共512Mbit,也就是64M。两个16bit的组成一个32位bit的内存,共同使用nGCS6。
连接方式如下:
head.S
@memory controller
.equ BWSCON ,0x48000000
.equ BANKCON0 ,0x48000004
.equ BANKCON1 ,0x48000008
.equ BANKCON2 ,0x4800000C
.equ BANKCON3 ,0x48000010
.equ BANKCON4 ,0x48000014
.equ BANKCON5 ,0x48000018
.equ BANKCON6 ,0x4800001C
.equ BANKCON7 ,0x48000020
.equ REFRESH ,0x48000024
.equ BANKSIZE ,0x48000028
.equ MRSRB6 ,0x4800002C
.equ MRSRB7 ,0x48000030
.text
.global _start
_start:
ldr r0, =0x53000000 @Close WATCHDOG
mov r1, #0x0
str r1, [r0]
ldr r0,=BWSCON @Init sdram
ldr r1,=0x22011110
str r1,[r0]
ldr r0,= BANKCON6
ldr r1,=0x00018005
str r1,[r0]
ldr r0,=REFRESH
ldr r1,=0x008c07a3
str r1,[r0]
ldr r0,=BANKSIZE
ldr r1,=0x000000b1
str r1,[r0]
ldr r0,=MRSRB6
ldr r1,=0x00000030
str r1,[r0]
mov r1,#0x400 @Relacate
ldr r2,=0x30000000
mov r3,#0x600
1:
ldr r4,[r1],#4
str r4,[r2],#4
cmp r1,r3
bne 1b
ldr sp, =1024*4 @Call C
ldr lr,=loop
@bl main
ldr pc,=0x30000038 @main @0x800
loop:
b loop
main.c
#define GPFCON (*(volatile unsigned long *)0x56000050)
#define GPFDAT (*(volatile unsigned long *)0x56000054)
#define GPF4_out (1<<(4*2))
#define GPF5_out (1<<(5*2))
#define GPF6_out (1<<(6*2))
#define GPF7_out (1<<(7*2))
void wait(volatile unsigned long dly)
{
for(; dly > 0; dly--);
}
int main(void)
{
unsigned long i = 0;
GPFCON = GPF4_out|GPF5_out|GPF6_out; //Configure the gpio of led
while(1){
wait(30000);
GPFDAT = (~(i<<4)); //Turn
if(++i == 8)
i = 0;
}
return 0;
}
man.lds
SECTIONS {
. = 0x0;
first 0x00000000 : { head.o }
second 0x30000000 : AT(0x400){ main.o }
}
Makefile
objs = head.o main.o
all: $(objs)
#arm-linux-ld -T main.lds $^ libgcc.a -o main.elf
arm-linux-ld -T main.lds $^ -o main.elf
arm-linux-objcopy -O binary -S main.elf main.bin
arm-linux-objdump -D main.elf > main.dis
clean:
rm -f *.bin $(objs) *.elf *.dis
%.o : %.c
arm-linux-gcc -march=armv4 -c -o $@ $<
%.o : %.S
arm-linux-gcc -march=armv4 -c -o $@ $<
上一篇:2440裸板程序之inline关键字
下一篇:2440裸板程序之代码重定位
推荐阅读最新更新时间:2024-11-03 00:55
设计资源 培训 开发板 精华推荐
- AD9850
- 基于汽车 SENT 接口的热电偶温度传感器,使用 ADuC7060/ADuC7061 精密模拟微控制器进行冷端补偿
- 使用 ROHM Semiconductor 的 BD45251 的参考设计
- AM1/4S-4818SH30Z 18V 0.25 瓦 DC/DC 转换器的典型应用
- 隔离反激开关电源
- 用于工业应用的 LT3973IMS 5V 降压转换器的典型应用
- OM7961: 低噪声放大器BFU520A、BFU530A和BFU550A客户评估套件,适用于SOT23封装的晶体管
- OM13319:NVT2003DP演示板, 三通道双向电压电平转换器
- STM8A/128-EVAL,基于STM8AF系列的评估板——带有STM8AF51AA MCU
- MIC5367-3.3YMT EV,MIC5367 评估板,用于便携式的 3.3V DC 到 DC 单输出电源