历史上的今天
返回首页

历史上的今天

今天是: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执行的原理可参考《嵌入式应用开发完全指南》或者自行搜索”位置无关代码”以及”装载地址和运行地址”。


推荐阅读

史海拾趣

Cantec Electronic Co Ltd公司的发展小趣事

随着电子行业的快速发展,市场竞争日益激烈。Cantec Electronic Co Ltd意识到,传统的生产模式已经无法满足市场的需求。于是,公司决定进行转型升级,将重心转向智能电子产品的研发和生产。通过引进先进的生产设备和技术人才,公司成功开发出了一系列具有竞争力的智能电子产品,赢得了市场的广泛认可。

ELINA INDEK公司的发展小趣事

因美纳(Illumina)公司成立于2000年,起初是一家专注于基因测序技术的小型企业。在创始人Jay Flatley的领导下,公司成功研发出了一系列高性能、低成本的基因测序仪器,使得基因测序技术从昂贵的实验室研究工具转变为广泛应用的医疗诊断工具。这一技术突破不仅为因美纳赢得了市场份额,也为整个医疗行业带来了革命性的变化。

3D PLUS公司的发展小趣事

为了更好地满足客户需求,3D PLUS公司不仅提供硬件设备,还积极构建3D生态圈。公司推出了一系列3D个性化产品,包括3D全彩婚纱人像、3D梦幻水晶摆件等,这些产品独具潮流气息,深受市场欢迎。同时,公司还提供软件开发、定制开发等服务,帮助客户在移动端构建感性的3D商业场景,实现O2O移动营销的有效联动。这些举措不仅丰富了公司的产品线,也为客户提供了全方位的3D解决方案。

Captive Fastener公司的发展小趣事

随着全球市场的不断扩大,Captive Fastener公司意识到国际合作的重要性。公司积极寻求与国际知名电子制造商的合作机会,通过提供高质量的紧固件产品和技术支持,成功打入国际市场。同时,公司还与国外同行开展技术交流与合作,不断提升自身的技术水平和市场竞争力。

Dawn Electronics Inc公司的发展小趣事

在技术创新的基础上,Dawn Electronics Inc公司开始积极拓展市场。公司加强了与国内外客户的合作,通过提供优质的产品和服务,赢得了客户的信任和支持。同时,公司还注重品牌建设,积极参与行业展会和交流活动,提高了品牌知名度和影响力。这些努力为公司赢得了更多的市场份额和合作机会。

Crosspoint Solutions公司的发展小趣事

在电子行业中,产品质量是企业生存和发展的关键。Crosspoint Solutions公司深知这一点,因此始终将品质管理放在首位。公司建立了严格的质量检测体系,从原材料采购到产品出厂的每一个环节都进行严密把控。这种对品质的执着追求赢得了客户的信任和好评,使公司在市场上树立了良好的口碑。

问答坊 | AI 解惑

没有旋钮的收音机

普通的机械调频收音机有两个必须的旋钮:频率调谐旋钮和音量控制旋钮,但是图片里这只看起来憨厚可爱的收音机缺让人找不到这两个旋钮在哪里,该怎么操作呢 答案:通过左右摇摆这个像长鼻子一样伸出来的天线,就可以调整频率,而头顶上的扬声器的外 ...…

查看全部问答>

环保当道 混合动力车辆引爆半导体新商机

据市场研究机构Strategy Analytics的预测,在混合动力车辆应用领域的半导体组件营业额将由今年的5亿美元,在2015年迅速成长到13亿美元;其中以电源组件为大宗,还有模拟微控制器与传感器。       Strategy Analytics表示,包 ...…

查看全部问答>

warning 15

warning 15:multiple call  to segment: 这个警告是什么意思啊,如何修改啊…

查看全部问答>

请有经验的大师推荐一款带adc的单片机

有没有谁推荐一款能达到这样要求的带adc的芯片?采样速度在1kHz大一点就可以,精度不要太高都行。并且做过相关的实践,保证能实行。非常感谢!现在非常急呀,导师天天催着要结果。…

查看全部问答>

菜鸟求助!!!

学单片机有一段时间了,学的是汇编,现在陷入了困境中了,就是我搞不清楚各个端口的准确地址,还有各个端口地址到底是多少位! 比如说 mov p0,#10H 我给P0口赋值10,到底是给P0.0-P0.7的那个端口赋值! 请大大们给我解释一下啊,我现在是一头雾 ...…

查看全部问答>

如何才能做一个合格的采购师?

 从事采购工作有一段时间了,感觉真的是豪无头绪呀。请各位朋友们帮我找找方法如何去找到头绪好吗?…

查看全部问答>

UCosii在STM32上的移植,这个错误是什么原因呢

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的例程

各位大虾,小弟想用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供电接口 ...…

查看全部问答>