准备分析
 

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

        
 
资源工具

        同《 S5PV210的LED应用(一)
 
着手写程序
        start.S中的代码拷贝很重要,Makefile中的链接地址很重要。
  1. @******************************************************************************
  2. @ File:start.S
  3. @ 功能:启动代码,设置栈,拷贝16k到0xd0020000处
  4. @******************************************************************************
  5. .text
  6. .global _start
  7. _start:
  8. ldr sp, =0xD0037D80       @ 设置栈,以便调用c函数
  9. adr r0, _start                @ 重定位
  10. @ _start当前所位于的地址:0xd0020010 (前边放有16bit的头信息)
  11. ldr r1, =_start           @ _start的链接地址:0xd0024010
  12. ldr r2, =0xd0028000       @ 0xd0028000 = 0xd0024000 + 0x4000(16k)
  13. cmp r0, r1
  14. beq run_on_dram
  15. copy_loop:
  16. ldr r0, =0xd0020000       @ 源 起始地址
  17. ldr r1, =0xd0024000       @ 目的 起始地址
  18. 1:
  19. ldr r3, [r0], #4          @ 源
  20. str r3, [r1], #4          @ 目的
  21. cmp r1, r2
  22. bne 1b
  23. run_on_dram:
  24. ldr pc, =main             @ 跳转
  25. halt:
  26. b halt
  1. /******************************************************************************/
  2. /* File:main.c
  3. /* 功能:LED闪烁
  4. /******************************************************************************/
  5. #define     GPJ2CON     (*(volatile unsigned long *) 0xE0200280)
  6. #define     GPJ2DAT     (*(volatile unsigned long *) 0xE0200284)
  7. // 延时函数
  8. void delay(unsigned long count)
  9. {
  10. volatile unsigned long i = count;
  11. while (i--)
  12. ;
  13. }
  14. void main()             //LED 闪烁
  15. {
  16. GPJ2CON = 0x00001111;       // 配置引脚
  17. while(1)                    // 闪烁
  18. {
  19. GPJ2DAT = 0;            // LED on
  20. delay(0x100000);
  21. GPJ2DAT = 0xf;          // LED off
  22. delay(0x100000);
  23. }
  24. }

Makefile:

  1. link.bin: start.o main.o
  2. arm-linux-ld -Ttext 0xD0024010 -o link.elf $^
  3. arm-linux-objcopy -O binary link.elf link.bin
  4. arm-linux-objdump -D link.elf > link_elf.dis
  5. gcc mkv210_image.c -o mkv210
  6. ./mkv210 link.bin 210.bin
  7. %.o : %.S
  8. arm-linux-gcc -o $@ $< -c
  9. %.o : %.c
  10. arm-linux-gcc -o $@ $< -c
  11. clean:
  12. rm *.o *.elf *.bin *.dis mkv210 -f
下载运行
 
        同《 S5PV210的LED应用(一)
 
运行调试
       
        程序简单,运行正常。
 
遗留问题
  
        1.无
 
 
原文:http://blog.csdn.net/kangear/article/details/8993247

S5PV210的IRAM应用的更多相关文章

  1. s5pv210中断体系

    一.什么是中断? 1.中断的发明是用来解决宏观上的并行需要的.宏观就是从整体上来看,并行就是多件事情都完成了. 2.微观上的并行,就是指的真正的并行,就是精确到每一秒甚至每一刻,多个事情都是在同时进行 ...

  2. S5PV210的内存分配研究分析

    S5PV210内存一般会使用SDRAM和DDR2 (DDR SDRAM),SDRAM的uboot启动网络已经有很多资料的,对于DDR2还有有很多疑惑,如果有错误的地方,请大家一定指出,醍醐灌顶,不胜感 ...

  3. 9.S5PV210的时钟系统

    1.时钟域:MSYS.DSYS.PSYS(1)因为S5PV210的时钟体系比较复杂,内部外设模块太多,因此把整个内部的时钟划分为3大块,叫做3个域.(2)MSYS: CPU(Cortex-A8内核). ...

  4. S5PV210裸板驱动:启动

    以往2440和6410的启动方式,只要我们把裸板代码烧写到NAND FLASH的开始位置,当开发板上点启动时,处理器会自动从NAND FLASH上拷贝前面一段的代码到内部的RAM中执行.按照以前的方法 ...

  5. 总结:S5PV210时钟系统

    在数据手册<S5PV210_UM_REV1.1>中的section 02_system/3 CLOCK CONTROLLER(354页)   一.时钟域 在S5PV210的SoC中,时钟系 ...

  6. 第一章之s5pv210启动顺序

    我所使用的开发板是:友善之臂smart210,cpu为s5pv210.u-boot版本是:u-boot-2012-10 1,首先在u-boot中配置相对应的开发板的配置文件 #make s5p_gon ...

  7. S5PV210 时钟体系分析

    S5PV210 时钟体系 如下面时钟结构图所示,S5PV210 中包含 3 大类时钟域, 分别是主系统时钟域(简称 MSYS).显示相关的时钟域(简称 DSYS). 外围设备的时钟域(简称 PSYS) ...

  8. S5PV210初始化系统时钟

    S5PV210初始化系统时钟 S5PV210时钟体系S5PV210中包含3大类时钟domain,分别是主系统时钟domain (简称MSYS,下面将使用简称来进行相关讲解).显示相关的时钟domain ...

  9. 三星S5-PV210内存初始化

    一.S5PV210时钟系统 时钟:一定频率的电信号.   时钟系统:基于CMOS工艺的高性能处理器时钟系统,集成PLL可以从内部触发,比从外部触发更快且更准确,能有效地避免一些与信号完整性相关的问题. ...

随机推荐

  1. oracle学习(1)

    1.安装完oracle数据库后,远程第一次无法登陆,需要进入sys用户后,更改以此后才有效. 2.TNS去读取配置的时候,如果在环境变量中已经配置了 TNS_ADMIN 后,则直接从此目录下读取. 3 ...

  2. Ext.Net学习笔记17:Ext.Net GridPanel Selection

    Ext.Net学习笔记17:Ext.Net GridPanel Selection 接下来是Ext.Net的GridPanel的另外一个功能:选择. 我们在GridPanel最开始的用法中已经见识过如 ...

  3. 重置mysql管理员密码

    重置管理员密码 1.关闭mysql 2.开启mysql,跳过授权表mysql服务 提示:如果此步骤操作成功,那么任何用户登陆MySQL都不需要用户名与密码 保持此窗口不能关闭 3.重新cmd,登陆 m ...

  4. HDU 1058 Humble Number

    Humble Number Problem Description A number whose only prime factors are 2,3,5 or 7 is called a humbl ...

  5. tail报错

    在block和index都没有满的情况下,有如下报错: tail -f messages tail:cannot watch 'messages' : No space left on device ...

  6. UBUNTU下如何开启SSHD服务

    “人生本来就有很多事是徒劳无功的.”就像青春,虽然徒劳,却在人的心里住得最久,挥之不去,怀念那段青涩年华,怀念它的... sudo apt-get install openssh-server Ubu ...

  7. Socket 入门

    int socket(int domain, int type,int protocol) domain :说明我们网络程序所在的主机采用的通讯协族(AF_UNIX和AF_INET等). AF_UNI ...

  8. WPF自定义控件之仿Win8滚动条--ScrollViewer

    1.说明 自己学习WPF不是很久,现将自己做的一些小项目中用到的自定义控件整理出来,方便以后使用,不尽人意之处,还请多多批评与指导,现在就来实现自定义ScrollViewer仿Win8滚动条 2.效果 ...

  9. STM32的FSMC总线驱动ili9341,掉电重启无法正常显示的问题

    问题描述 通过STM32的FSMC总线驱动ili9341,程序调试和刚下载的时候,显示完全正常.可是就在我掉电关机,重新启动的时候就完全跑飞了.这令我非常疑惑.以下是我的FSMC总线配置程序, sta ...

  10. 【IT历史】SP和CP

    1.什么是SP?SP是英文Service Provider的缩写,中文翻译为服务提供商,通常是指在移动网内运营增值业务的社会合作单位.它们建立与移动网络建立相连的服务平台,为手机用户提供一系列信息服务 ...