S5PV210的IRAM应用

准备分析

        IRAM的大小96k,其实前两个程序都在这里运行的,程序都小于16K。要实现的是从把IRAM从的前16k从IRAM的起始地址 0xD0020000 拷贝到 0xD0024000  处,调用main。堆栈指针设置到了0xD003_7D80处。 程序的链接地址是 0xD0024010 .用图表示如下。本程序只涉及到IRAM,重点为在于重定向。
        

资源工具

        同《  S5PV210的LED应用(一)

着手写程序
        start.S中的代码拷贝很重要,Makefile中的链接地址很重要。

@******************************************************************************
@ File:start.S
@ 功能:启动代码,设置栈,拷贝16k到0xd0020000处
@******************************************************************************  

.text

.global _start

_start:
	
	ldr	sp, =0xD0037D80       @ 设置栈,以便调用c函数						
	
	adr r0, _start  		      @ 重定位	
                            @ _start当前所位于的地址:0xd0020010 (前边放有16bit的头信息)
	
	ldr r1, =_start           @ _start的链接地址:0xd0024010 	
	
	ldr r2, =0xd0028000       @ 0xd0028000 = 0xd0024000 + 0x4000(16k) 
	cmp r0, r1
	beq run_on_dram
	
copy_loop:
	ldr r0, =0xd0020000       @ 源 起始地址
	ldr r1, =0xd0024000       @ 目的 起始地址
1:	
	ldr r3, [r0], #4          @ 源
	str r3, [r1], #4          @ 目的
	cmp r1, r2
	bne 1b

	
run_on_dram:			 
	ldr pc, =main             @ 跳转		


halt:
	b halt

/******************************************************************************/
/* File:main.c
/* 功能:LED闪烁
/******************************************************************************/ 

#define 	GPJ2CON 	(*(volatile unsigned long *) 0xE0200280)
#define 	GPJ2DAT		(*(volatile unsigned long *) 0xE0200284)

// 延时函数
void delay(unsigned long count)
{
	volatile unsigned long i = count;
	while (i--)
		;
}

void main()				//LED 闪烁
{
	GPJ2CON = 0x00001111;		// 配置引脚
	while(1)					// 闪烁
	{
		GPJ2DAT = 0;			// LED on
		delay(0x100000);
		GPJ2DAT = 0xf;			// LED off
		delay(0x100000);
	}
}


Makefile:
link.bin: start.o main.o 
	arm-linux-ld -Ttext 0xD0024010 -o link.elf $^
	arm-linux-objcopy -O binary link.elf link.bin
	arm-linux-objdump -D link.elf > link_elf.dis
	gcc mkv210_image.c -o mkv210
	./mkv210 link.bin 210.bin

%.o : %.S
	arm-linux-gcc -o $@ $< -c 

%.o : %.c
	arm-linux-gcc -o $@ $< -c 

clean:
	rm *.o *.elf *.bin *.dis mkv210 -f
下载运行

        同《  S5PV210的LED应用(一)

运行调试
       
        程序简单,运行正常。

遗留问题
  
        1.无


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

袁保康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值