hardware 中的几个地址问题
@******************************************************************************
@ File:head.s
@ 功能:设置SDRAM,将程序复制到SDRAM,然后跳到SDRAM继续执行
@******************************************************************************
.text
.global _start
_start:
@函数disable_watch_dog, memsetup, init_nand, nand_read_ll在init.c中定义
ldr sp, =4096 @设置堆栈
bl disable_watch_dog @关WATCH DOG
bl memsetup @初始化SDRAM
bl nand_init @初始化NAND Flash
@将NAND Flash中地址4096开始的1024字节代码(main.c编译得到)复制到SDRAM中
@nand_read_ll函数需要3个参数:
ldr r0, =0x30000000 @1. 目标地址=0x30000000,这是SDRAM的起始地址
mov r1, #4096 @2. 源地址 = 4096,连接的时候,main.c中的代码都存在NAND Flash地址4096开始处
mov r2, #1024 @3. 复制长度= 1024(bytes),对于本实验的main.c,这是足够了
bl nand_read @调用C函数nand_read
ldr sp, =0x34000000 @设置栈
ldr lr, =halt_loop @设置返回地址
ldr pc, =main @b指令和bl指令只能前后跳转32M的范围,所以这里使用向pc赋值的方法进行跳转
halt_loop:
b halt_loop
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
ldr sp, =4096 @设置堆栈
1.当设置sp=4096后,sp指针指向地址0x00001000。按第142页画的图可以知道,sp是指向存储空间的最后一个数据单元,所以说这是一个满栈,这点对吗?如果对的,我自己的理解堆栈是一个存储空间,既然是存储空间,那么必然有存储空间的起始地址和结束地址。根据满栈这个条件,可以知道这个存储空间的结束地址是0x00001000,按第142页画的图,这个堆栈的存储空间是0x00000000-0x00001000,那么怎么知道这个起始地址就应该是0x00000000呢?
2.如何在编程中确定堆栈的类型?满栈,空栈,降序,升序?
3. mov r1, #4096 @2. 源地址 = 4096,连接的时候,main.c中的代码都存在NAND Flash地址4096开始处 //这句怎么就知道main.c的代码都存在NAND Flash地址4096开始处呢?
SECTIONS {
firtst 0x00000000 : { head.o init.o nand.o}
second 0x30000000 : AT(4096) { main.o }
}
0x00000000 指定了first部分的运行地址,0x30000000指定second部分的运行地址。AT(4096)指定了main.o在编译生成的映像文件中的地址。这里的运行地址不一定在程序下载到开发板上就立即在这个地址上运行了,只是指定下地址而已。
hardware 中的几个地址问题相关推荐
- c语言中字符串数组的地址存放以及%s输出单个字符导致程序崩溃的问题
代码 总结下c语言中字符串数组的地址存放问题 #include <iostream> using namespace std; #include<bits/stdc++.h>i ...
- 在ASP.NET中自动给URL地址加上超链接
作为一个程序员,在完成设计后还要根据程序的情况以及用户的反映不断对程序进行改进,这样才能不断地完善自己的作品.我在制作完软件商务网 http://www.bizsofts.com 的论坛后,发现人们总 ...
- 华为交换机ssh思科交换机_思科交换机交换机中ip、mac地址绑定
在思科交换机中为了防止ip被盗用或员工乱改ip,可以做以下措施,既ip与mac地址的绑定,和ip与交换机端口的绑定. 一.通过IP查端口 先查MAC地址,再根据MAC地址查端口: bangonglou ...
- 3.请执行命令取出linux中eth0的IP地址(考试题答案系列)
说明:本文为老男孩linux培训某节课前考试试题及答案分享博文内容的一部分,也是独立成题的,你可以点下面地址查看全部的内容信息.http://oldboy.blog.51cto.com/2561410 ...
- 静态路由中的下一跳地址和送出接口的区别和使用
在路由器转发任何数据包之前,路由表过程必须确定用于转发数据包的送出接口.我们将此过程称为路由解析. 我们来看下具体的解析过程 在R1的路由表中有下面这条静态路由: S 192.168.2.0/24 [ ...
- 如何在PHP中获取客户端IP地址[重复]
本文翻译自:How to get the client IP address in PHP [duplicate] This question already has an answer here: ...
- RansomCoin 二进制中提取加密货币地址
RansomCoin是一款DFIR工具,可以帮助广大研究人员从二进制源码文件中提取加密货币地址以及其他的入侵威胁指标IoC.RansomCoin支持提取的包括勒索软件的元数据以及硬编码的入侵威胁指标I ...
- cisco 2960 VLAN MAC_思科交换机交换机中ip、mac地址绑定
在思科交换机中为了防止ip被盗用或员工乱改ip,可以做以下措施,既ip与mac地址的绑定,和ip与交换机端口的绑定. 一.通过IP查端口 先查MAC地址,再根据MAC地址查端口: bangonglou ...
- 【Windows 逆向】OD 调试器工具 ( CE 中获取子弹动态地址前置操作 | OD 中调试指定地址的数据 )
文章目录 一.CE 中获取子弹动态地址前置操作 二.OD 中调试子弹数据 一.CE 中获取子弹动态地址前置操作 在上一篇博客 [Windows 逆向]OD 调试器工具 ( CE 工具通过查找访问的方式 ...
最新文章
- 新书上市 | 豆瓣评分8.4,美国数学学会推荐必读经典,重版再现!
- jQuery EasyUI dialog 居中最简单的办法
- when is SAP UI5 sap-ui-core.js loaded
- python 装饰器有哪些_Python装饰器有哪些常见用途?
- SDUT 3347 数据结构实验之数组三:快速转置
- 【linux】安装centOS过程中遇到的困难
- 试题训练9 旋转矩阵(数组)
- 自动为数字千位数,百万位数添加逗号
- ST25读FeliCa卡记录
- 计算机无法启动打印服务,电脑重启print spooler服务无法启动怎么处理
- mysql 对象名无效_数据库 表 对象名无效
- 极致小巧的画图工具,只有548K,有20多种工具,图层功能 类PS
- Zebras CodeForces - 950C
- 自动动态调整广告出价OCPC
- android 流失布局,GitHub - hongyangAndroid/FlowLayout: [不再维护]Android流式布局,支持单选、多选等,适合用于产品标签等。...
- php从一个字符串中过滤掉英文,php过滤英文字符
- nrf52+RFX2401的PA+LNA方案,基于softdevice驱动
- 公牛和母牛(猜数字游戏)
- 2016年软件产业规模
- N-最短路径分词算法