历史上的今天
今天是:2024年11月08日(星期五)
2021年11月08日 | MINI2440裸机实验之SDRAM
2021-11-08 来源:eefocus
程序编写
本次实验将实现初始化SDRAM并将程序自身复制到SDRAM中然后跳转至SDRAM中继续执行流水灯。
依然是在上次程序的基础上进行修改,本次需要修改的文件包括”start.S”和”Makefile”,修改后的文件内容如下:
/* start.S */
.text
.global _start
_start:
#define MDIV 0x7f << 12
#define PSDIV 0x21
ldr r0, =0x53000000
mov r1, #0x00
str r1, [r0] /* disable the watchdog timer */
bl mpll_setup
bl mem_setup
bl relocate
ldr pc, =on_sdram
on_sdram:
ldr sp, =0x34000000 /* set stack pointer */
b main
relocate:
ldr r0, =0x30000000
ldr r1, =0x40000000
add r2, r0, #1024*4
1:
ldr r3, [r1], #4
str r3, [r0], #4
cmp r2, r0
bne 1b
mov pc, lr
mpll_setup:
ldr r0, =0x4c000000
mov r1, #0xffffffff
str r1, [r0] /* set locktime register */
ldr r0, =0x4c000014
mov r1, #5
str r1, [r0] /* set CLKDIVN register */
mrc p15, 0, r1, c1, c0, 0
orr r1, r1, #0xc0000000
mcr p15, 0, r1, c1, c0, 0 /* change bus mode */
ldr r0, =0x4c000004
mov r1, #MDIV
add r1, r1,#PSDIV
str r1, [r0] /* set MPLLCON register */
mov pc, lr
mem_setup:
ldr r0, =0x48000000
adr r1, mem_cfg_val
add r2, r0, #13*4
1:
ldr r3, [r1], #4
str r3, [r0], #4
cmp r2, r0
bne 1b
mov pc, lr
.align 4
mem_cfg_val:
.word 0x22000000 /* BWSCON */
.word 0x00000700 /* BANKCON0 */
.word 0x00000700 /* BANKCON1 */
.word 0x00000700 /* BANKCON2 */
.word 0x00000700 /* BANKCON3 */
.word 0x00000700 /* BANKCON4 */
.word 0x00000700 /* BANKCON5 */
.word 0x00018005 /* BANKCON6 */
.word 0x00018005 /* BANKCON7 */
.word 0x008C04F5 /* REFRESH */
.word 0x000000B1 /* BANKSIZE */
.word 0x00000030 /* MRSRB6 */
.word 0x00000030 /* MRSRB7 */
@Makefile
objs := start.o led.o
led.bin:$(objs)
arm-linux-ld -Ttext 0x30000000 -o led_elf $^
arm-linux-objcopy -O binary -S led_elf $@
arm-linux-objdump -D -m arm led_elf > led.dis
%.o:%.c
arm-linux-gcc -c -o $@ $<
%.o:%.S
arm-linux-gcc -c -o $@ $<
clean:
rm -f led_elf *.o
为了使程序更加直观,在”start.S”中采用标号将程序进行了分段。
和之前的Makefile进行比较可以发现链接地址由原来的0x40000000变为了0x30000000。
修改完成编译后,仍然使用JLINK将程序下载至内部SRAM(0x40000000)处执行,可以看到流水灯仍正常执行,说明SDRAM控制寄存器初始化成功且程序搬移成功。
有关程序跳转至SDRAM执行的原理可参考《嵌入式应用开发完全指南》或者自行搜索”位置无关代码”以及”装载地址和运行地址”。
上一篇:MINI2440 MPLL
史海拾趣
|
据市场研究机构Strategy Analytics的预测,在混合动力车辆应用领域的半导体组件营业额将由今年的5亿美元,在2015年迅速成长到13亿美元;其中以电源组件为大宗,还有模拟微控制器与传感器。 Strategy Analytics表示,包 ...… 查看全部问答> |
|
有没有谁推荐一款能达到这样要求的带adc的芯片?采样速度在1kHz大一点就可以,精度不要太高都行。并且做过相关的实践,保证能实行。非常感谢!现在非常急呀,导师天天催着要结果。… 查看全部问答> |
|
Build target \'Stm32-ucosII-demo\'linking....\\Output\\Stm32-ucosII-demo.axf: Error: L6218E: Undefined symbol BSPInit (referred from app.o)..\\Output\\Stm32-ucosII-demo.axf: Not enough information to list image symbols..\\Output ...… 查看全部问答> |
|
各位大虾,小弟想用AT91SAM7S64的USB,自己对USB协议也基本上了解,但没有ATMEL USB的例程,所以写起代码来,还是觉得无从着手,不知道该怎么具体的实现,ATMEL官网也没找到(应该都有例程的啊),所以麻烦各位大虾能给小弟指点迷津,感 ...… 查看全部问答> |
|
基于Hercules的踏板控制器DIY(十):总结报告及功能演示 基于Hercules的踏板控制器DIY总结报告xfce@sina.com2013-08-20 一)控制器PCBA 模块说明:A:踏板马达状态,LED灯亮表示踏板电机在动作,LED灭表示电机停止;B:TI公司Hercules系列TMS570LS0432处理器;C:UART串口交互接口;D:系统5V供电接口 ...… 查看全部问答> |




