首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
uboot 与代码位置无关
2024-08-28
uboot之位置无关代码解析
在之前的话 新年过去了,那么久没有好好学习,感觉好颓废,现在就uboot的一些基础问题做一些笔记,顺便分享给大家,不过由于见识有限,如果有不足之处请多多指教. 位置无关?什么意思?我们先了解一些基础知识..... 我们都知道我们写的代码最后是运行在内存(SDRAM或者SRAM,通常是SDRAM)中的,但是在运行之前他们是保存在诸如nand.flash等非易失存储设备中的,而这些存储设备的地址要映射到CPU能够寻找的地址上(一般映射在0X0地址上,这个后面详细解释),这样才能得到要运行的代码.而代
JZ2440开发笔记(9)——位置无关代码设计【转】
b MAIN 和 ldr pc,=MAIN 的区别(谈到代码位置无关性) 看bootloader的时候经常看到这两种写法,不太明白区别,网上查了查.其实看了之后还是一头雾水? 其中,2和3 似乎是一个东西,但结果是相反的.晕. //=============================================== 有几种说法: 第一种,说寻址范围不同.(http://bulo.mcuol.com/GaoKefang/view.htm?topicID=126)LDR指令可以全地址范围内
x64共享库中的位置无关代码(PIC)
原作者:Eli Bendersky http://eli.thegreenplace.net/2011/11/11/position-independent-code-pic-in-shared-libraries-on-x64 之前的文章.以为x86架构编译的代码为样例,解释了位置无关代码(PIC)怎样工作.我承诺在还有一篇文章里涉及x64[1]上的PIC,如今就是了.本文将不会太进入细节,由于假定读者已经理解了理论上PIC怎样工作. 总之.对于这两个平台想法是相似的,但由于每一个架构独有的特
代码重定位和位置无关码——运行于nor flash
通过前面的学习,我们知道,把可执行程序从一个位置复制到另一个位置的过程叫做重定位. 现在有两种方式,第一种是只重定位data段到内存(sdram),为什么需要重定位?因为有些flash的写操作,不是简单地内存访问,通常我们使用sdram这个介质作为程序运行的载体.但是只重定位data段这种方式存在弊端.第一,我们的调试工具通常不支持这种分体形式(比如我们的之前的代码在0地址开始存放text和rodata段,而在间隔很远处sdram 0x30000000存放data段,这就是分体的形式)的代码:第
关于ARM指令中位置无关和位置相关代码的认识【转】
本文转载自:https://blog.csdn.net/talent_CYJ/article/details/50533153 今天在一个问题上折腾了又是半天.就是在学JZ2440串口通信的时候,在sdram初始化函数中有这么一句话 1 2 /* * 设置存储控制器以使用SDRAM */ void memsetup(void) { volatile unsigned long *p = (volatile unsigned long *)MEM_CTL_BASE; /* 这个函数之所以这样赋值,
s3c2440裸机-代码重定位、清bss的改进和位置无关码
1.代码重定位的改进 用ldr.str代替ldrb, strb加快代码重定位的速度. 前面重定位时,我们使用的是ldrb命令从的Nor Flash读取1字节数据,再用strb命令将1字节数据写到SDRAM里面. 我们2440开发板的Nor Flash是16位,SDRAM是32位. 假设现在需要复制16byte数据. 不同的读写指令 cpu读取nor的次数 cpu写入sdram的次数 ldrb.strb 16 16 ldr.str 8 4 可以看出我们更换读写指令后读写次数变少了,提升了cpu的访
UBoot启动代码第一阶段流程
http://blog.csdn.net/xautfengzi/article/details/7470134 前段时间了看了UBoot的源码,放了一段时间之后忘得差不多了.现做一些注释,方便以后温习. 第一阶段代码主要位于start.S中,其流程如下: 1.设置中断向量表. 2.设置CPU为管理员模式. 3.禁狗. 4.关中断. 5.设置系统时钟. 6.跳至cpu_init_crit.(注意bl指令,bl指令是相对跳转,绝对跳转用mov lr,pc.由于此阶段代码是位置无关代码,所以在跳至的细
uboot 与 代码重定位
ref: https://blog.csdn.net/dhauwd/article/details/78566668 https://blog.csdn.net/yueqian_scut/article/details/39004727 https://blog.csdn.net/Egean/article/details/84889565 https://www.cnblogs.com/zafu/p/7399859.html 涉及领域: 裸机程序,uboot,Linux kernel
韦东山yy公开课笔记(2)--汇编,段,栈,重定位/链接地址,位置无关吗
1. 要不要学习汇编 可以只懂一点,工作中基本不用,一旦用就是出了大问题 ldr : load 读内存 ldr r0, [r1] : r1里存放的是地址值, 去这个地址读取4字节的内容,存入r0 str : stroe 写内存 str r0, [r1] : r1里存放的是地址值, 把r0里的4字节数据存入这个地址 所有的汇编.C程序也好,终极目标就是:读写某个地址 2. 程序为何要分为代码段.数据段.BSS段 程序的指令等是只读的,可以把它们归为一类,以便运行时可以放在ROM等设备上, 当然
汇编指令-位置无关码(BL)与绝对位置码(LDR)(2)
位置无关码,即该段代码无论放在内存的哪个地址,都能正确运行.究其原因,是因为代码里没有使用绝对地址,都是相对地址. 位置相关码,即它的地址与代码处于的位置相关,是绝对地址 BL :带链接分支跳转指令,也是位置无关码(相对位置),用于调用函数用的. B:分支跳转指令,指目标不能太远,一般用于同一个文件下的目标地址跳转. LDR:通常都是作加载指令的,但是它也可以作伪指令,通常有两种不同的表示: 1)LDR pc, =MyHandleIRQ 表示将MyHandleIRQ地址放入pc寄存器中,相当
Uboot优美代码赏析1:目录结构和malkefile分析
Uboot优美代码赏析1:目录结构和malkefile分析 关于Uboot自己选的版本是目前最新的2011.06,官方网址为:http://www.denx.de/wiki/U-Boot/WebHome,下面的一些内容主要翻译自顶层目录的 README . U-Boot是一种基于PowerPC, ARM, MIPS 或者其他处理器架构的嵌入式开发板的启动引导程序(boot loader),boot loader是可以被安装在作为引导的ROM上,实现初始化和测试硬件,和下载与运行应用的代码. U-
FastMM 定位内存泄露的代码位置
FastMM 定位内存泄露的代码位置 开源的FastMM,使用很简单,在工程的第一行引用FastMM4即可(注意,一定要在第一个Uses的位置),可以在调试程序时提示内存泄露情况,还可以生成报告. 在Delphi2007以后版本中,使用更加简单,只需要在工程开始的位置加上语句: ReportMemoryLeaksOnShutdown := True;就可以了,并且在运行时不会出现提示.如果想要生成文件报告,还需要FastMM4,Delphi中没有别的设置可以生成文件报告. 可以修改FastMM4
线上CPU飚高(死循环,死锁……)?帮你迅速定位代码位置
top基本使用: top命令参考本篇文章 查看内存和CPU的top命令,别看输出一大堆,理解了其实很简单 top 命令运行图: 第一行:基本信息 第二行:任务信息 第三行:CPU使用情况 第四行:物理内存使用情况 buff/cache: buffers 和 cache 都是内存中存放的数据,不同的是,buffers 存放的是准备写入磁盘的数据,而 cache 存放的是从磁盘中读取的数据 在Linux系统中,有一个守护进程(daemon)会定期把buffers中的数据写入的磁盘,也可以使用 syn
jstack命令定位java程序CPU利用率高的代码位置
高手是怎么使用jstack精确找到异常代码的(java程序CPU利用率高的情况) 请jstack神器来帮忙 本文介绍Linux环境下使用jstack定位问题的秘笈1.[top命令]找到CPU利用率持续比较高的进程,获取[进程号],此处PID为 1289112891 2.[ps p 12891 -L -o pcpu,pid,tid,time,tname,cmd 命令]找到上述进程中,CPU利用率比较高的[线程号TID](十进制数),此处为 12946ps p 12891 -L -o pcpu,pi
Android NDK定位.so文件crash代码位置
参考:http://blog.csdn.net/xyang81/article/details/42319789 问题: QRD8926_110202平台的Browser必现报错.(去年的项目,客户反馈问题,提case让QRD提供技术支持) 测试步骤:浏览一会新闻或其他网站(>=3分钟),然后进入百度音乐(music.baidu.com/fm)界面, 点击歌手,播放一首歌,必现报错. F/libc (): Fatal signal (SIGBUS) at ), thread (andr
linux下编译make文件报错“/bin/bash^M: 坏的解释器,使用grep快速定位代码位置
一.linux下编译make文件报错“/bin/bash^M: 坏的解释器 参考文章:http://blog.csdn.net/liuqiyao_01/article/details/41542101#comments 自己测试的结果: [1]使用windows 下的编辑工具 新建文件doc2unix.sh #!/usr/bin/env bash # test PID=$(ps -aef | grep nginx | grep -v grep | grep master |awk '{print
python代码位置引发的错误
觉得python对代码位置的要求简直是变态,缩进引发的错误我以前在博客里讲过了,如果不懂可以看看我以前的博客,今天又遇到了一个代码位置所引发的错误,现在给大家分享一下: 我想要打印出来一个5*5的实心矩阵,先给大家上图: (j=1放在while循环外面,第2至第4列为空.和预期不符合) (此时j=1放在while里面,编译结果达到预期目的.即能输出5*5的星号矩阵)
善用Object.defineProperty巧妙找到修改某个变量的准确代码位置
我今天的工作又遇到一个难题.前端UI右下角这个按钮被设置为"禁用(disabled)"状态. 这个按钮的可用状态由属性enabled控制.我通过调试发现,一旦下图第88行代码执行完毕之后,这个按钮的属性mProperties里就多出一个enabled:false的属性. 而88行执行之前,还没有这个enabled:false的属性.正是这个属性让按钮进入了禁用状态. 我单步调试setModel函数,花了半个小时的时间也没能找到这个enabled属性到底是在哪一行代码加进去的. 于是我只
查找和定位Android应用的按钮点击事件的代码位置基于Xposed Hook实现
本文博客地址:https://blog.csdn.net/QQ1084283172/article/details/80956455 在进行Android程序的逆向分析的时候,经常需要通过Android应用程序的界面UI来定位代码的位置,比较常见的例子就是分析Android应用的网络协议时,用户点击登录按钮,实现客户端程序的登录,将用户的账号信息发送给服务器端进行验证,那么我们分析这个网络数据传输的流程中,首先要定位用户点击登录按钮的事件响应代码在哪里,当然了基于特征字符串的搜索和smali字节
基于devkit8600的2011.04版uboot启动代码Start.s分析
/* * armboot - Startup Code for OMAP3530/ARM Cortex CPU-core * * Copyright (c) 2004 Texas Instruments <r-woodruff2@ti.com> * * Copyright (c) 2001 Marius Gröger <mag@sysgo.de> * Copyright (c) 2002 Alex Züpke <azu@sysgo.de> * Copyright (c)
热门专题
node 拿到formData参数后 再 上传图片
echearts的API
本地镜像基础操作动作
java\com\XXX 转成jar
怎么禁止orientationchange
iphone windows 感叹号
python 数组合并并去重
access表输入null的方法
log4net maximumFileSize 不起效果
postgres 创建用户只能访问指定schema
如何让config的application.yaml生效
vue配置开发环境和生产环境
gnu radio handrf 遥控器
js下拉框搜索模糊查询
quagga bgp ipv6学习不到路由
TLS 1.2勾选和不勾选的区别
苹果原相机倍数为啥顺时针旋转了九十度
安卓studiotoast
3层华为交换机跨网段互通
plsql无法使用复制粘贴