S5PV210的IRAM应用
IRAM的大小96k,其实前两个程序都在这里运行的,程序都小于16K。要实现的是从把IRAM从的前16k从IRAM的起始地址0xD0020000拷贝到0xD0024000 处,调用main。堆栈指针设置到了0xD003_7D80处。程序的链接地址是0xD0024010.用图表示如下。本程序只涉及到IRAM,重点为在于重定向。
- @******************************************************************************
- @ 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的IRAM应用的更多相关文章
- s5pv210中断体系
一.什么是中断? 1.中断的发明是用来解决宏观上的并行需要的.宏观就是从整体上来看,并行就是多件事情都完成了. 2.微观上的并行,就是指的真正的并行,就是精确到每一秒甚至每一刻,多个事情都是在同时进行 ...
- S5PV210的内存分配研究分析
S5PV210内存一般会使用SDRAM和DDR2 (DDR SDRAM),SDRAM的uboot启动网络已经有很多资料的,对于DDR2还有有很多疑惑,如果有错误的地方,请大家一定指出,醍醐灌顶,不胜感 ...
- 9.S5PV210的时钟系统
1.时钟域:MSYS.DSYS.PSYS(1)因为S5PV210的时钟体系比较复杂,内部外设模块太多,因此把整个内部的时钟划分为3大块,叫做3个域.(2)MSYS: CPU(Cortex-A8内核). ...
- S5PV210裸板驱动:启动
以往2440和6410的启动方式,只要我们把裸板代码烧写到NAND FLASH的开始位置,当开发板上点启动时,处理器会自动从NAND FLASH上拷贝前面一段的代码到内部的RAM中执行.按照以前的方法 ...
- 总结:S5PV210时钟系统
在数据手册<S5PV210_UM_REV1.1>中的section 02_system/3 CLOCK CONTROLLER(354页) 一.时钟域 在S5PV210的SoC中,时钟系 ...
- 第一章之s5pv210启动顺序
我所使用的开发板是:友善之臂smart210,cpu为s5pv210.u-boot版本是:u-boot-2012-10 1,首先在u-boot中配置相对应的开发板的配置文件 #make s5p_gon ...
- S5PV210 时钟体系分析
S5PV210 时钟体系 如下面时钟结构图所示,S5PV210 中包含 3 大类时钟域, 分别是主系统时钟域(简称 MSYS).显示相关的时钟域(简称 DSYS). 外围设备的时钟域(简称 PSYS) ...
- S5PV210初始化系统时钟
S5PV210初始化系统时钟 S5PV210时钟体系S5PV210中包含3大类时钟domain,分别是主系统时钟domain (简称MSYS,下面将使用简称来进行相关讲解).显示相关的时钟domain ...
- 三星S5-PV210内存初始化
一.S5PV210时钟系统 时钟:一定频率的电信号. 时钟系统:基于CMOS工艺的高性能处理器时钟系统,集成PLL可以从内部触发,比从外部触发更快且更准确,能有效地避免一些与信号完整性相关的问题. ...
随机推荐
- C++例题练习(1)
环境:Dev-C++( Version:5.6.1) 一.求2个或3个正整数中的最大数,用带有默认参数的函数实现 代码实现: #include <iostream> using names ...
- DOM4J方式解析XML文件
dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory dom4j是一个简单的开源库,用于处理XML. X ...
- ubuntu 恢复gnome-panel
Ubuntu重启panel 的方法首先进入终端, 依次输入以下命令1.gconftool --recursive-unset /apps/panel2.rm -rf ~/.gconf/apps/pan ...
- MySql事务及JDBC对事务的使用
一 .事务的几个重要特性 1. 原子性 事务内的每个内容不可分割,是一个统一的整体.或同时进行或同时消亡. 2.一致性 事务执行前和事务执行后,状态都是统一的.如A转B 100元,A和B数据总额度没有 ...
- Java实战之04JavaWeb-04JSP、EL表达式、JSTL标签库
一.jsp部分 只要是与页面显示相关的都是重点 1.jsp的脚本 <%java代码%>:被翻译到service方法内部,局部变量,局部的功能 <%=表达式或变量%>:翻译成se ...
- hibernate案例 测试代码
测试staff数据表连接到maeclipse 在staff中插入一行 package com.hibernate.test; import org.hibernate.Session; import ...
- Skia
1 What is SKIA. Skia is an open source 2D graphics library which provides common APIs that work acro ...
- 九度OJ 1410 垒积木 -- 动态规划
题目地址:http://ac.jobdu.com/problem.php?pid=1410 题目描述: 给你一些长方体的积木,问按以下规则能最多垒几个积木. 1 一个积木上面最多只能垒另一个积木. 2 ...
- Web前端新人笔记之jquery选择符
jquery利用了CSS选择符的能力,让我们能够在DOM中快捷而轻松的获取元素或元素集合.本章将介绍以下内容: 1.网页中的元素结构: 2.如何通过CSS选择符在页面中查找元素: 3.扩展jquery ...
- PHP LINUX Notice: undefined $_GET完美解决方法
PHP Notice: undefined 平时用$_GET[‘xx’] 取得参数值时,如果之前不加判断在未传进参数时会出现这样的警告: PHP Notice: undefined index xxx ...