准备分析
 

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 11G创建表空间、用户、配置监听和TNS

    最近总在安装各种版本的oralce数据库做测试,11G,32位的,64位的,12C的,每次都折腾表空间,用户.tns啥的,这里记录下,再也不用现用现百度找了 一.创建表空间.用户  在plsql工具中 ...

  2. IO流详解之代码详解

    前面呢已经发了一些理解,整理了注释,整体来说IO这里难度不是很大,代码呢没有详细敲,只写了一个大概总结的内容如下: /** 一切皆文件:文件是所有操作系统保存数据和处理逻辑的唯一方式:不管是.exe, ...

  3. ### core文件使用

    在Linux下程序崩溃,特别是在循环中产生Segment Fault错误时,根本不知道程序在哪出错,这时,利用core文件可以快速找到出错的问题所在. #@author: gr #@date: 201 ...

  4. C#变量初始化问题:字段初始值无法引用非静态字段、方法或属性

    http://www.cnblogs.com/bluestorm/p/3432190.html 问题:字段初始值设定项无法引用非静态字段.方法或属性的问题 下面代码出错的原因,在类中定义的字段为什么不 ...

  5. CSS FIXED porn javhd

    CSS position property - W3Schools W3Schools › cssref › pr_class_position Definition and Usage. The p ...

  6. 【转】Windows10下80端口被PID为4的System占用导致Apache无法启动的分析与解决方案

    昨天刚更新了Windows10,总体上来说效果还是蛮不错的,然而今天在开启Apache服务器的时候却发现,Apache莫名其妙的打不开了,起初以为是权限的问题,于是使用管理员身份的控制台去调用命令ne ...

  7. Yii 获取验证码与Yii常用的URL

    $this->createAction('captcha')->getVerifyCode(); //获取当前验证码的值 当前页面url  echo Yii::app()->requ ...

  8. CSS3 animation-fill-mode 属性

    现在专注于移动端开发项目,对于动画这个点是非常重要的,每当我遇到一个新的知识点,我就会和大家一起分享 animation-fill-mode :把物体动画地从一个地方移动到另一个地方,并让它停留在那里 ...

  9. mac下搭建react-native环境

    1.安装Homebrew 2.安装node(最好安装4.x以上版本这样就自带了一个npm) 3.安装npm(node的包管理工具) 一般高版本的npm在安装node的时候已经具有了 4.安装react ...

  10. JS验证邮箱格式是否正确的代码

    验证邮箱格式是否正确的方法有很多,接下来为大家介绍下使用js是如何做到的 复制代码代码如下: /*  *验证邮箱格式是否正确  *参数strEmail,需要验证的邮箱  */ www.jbxue.co ...