![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Bare code
文章平均质量分 62
chuanzhilong
本人写博客实为学习、交流、分享!若有文章涉及侵权,请及时联系本人,一经核实,将马上进行处理,谢谢。
展开
-
BSS段为什么需要初始化
我们都知道bss段需要初始化,但是这是为什么呢? 通过浏览资料,我们都会发现,bss段是不会出现在程序下载文件(*.bin *.hex)中的,因为全都是0。如果把它们出现在程序下载文件中,会增加程序下载文件的大小。实际应用中,通常只需要把bss段的起始地址和结束地址保存起来,而不需要将程序下载文件中出现bss段(一堆0)将来真正运行程序的时候,再根据这两个数据进行bss段的初始转载 2016-11-11 21:30:39 · 709 阅读 · 0 评论 -
TLB的作用及工作过程
以下内容摘自《步步惊芯——软核处理器内部设计分析》一书 页表一般都很大,并且存放在内存中,所以处理器引入MMU后,读取指令、数据需要访问两次内存:首先通过查询页表得到物理地址,然后访问该物理地址读取指令、数据。为了减少因为MMU导致的处理器性能下降,引入了TLB,TLB是Translation Lookaside Buffer的简称,可翻译为“地址转换后援缓冲器”,也可简称为转载 2016-11-16 13:18:41 · 6640 阅读 · 0 评论 -
adr adrl ldr mov总结整理
ADR这是一条小范围的地址读取伪指令,它将基于PC的相对偏移的地址值读到目标寄存器中。 使用的格式:ADR register,exper。 在编译源程序时,汇编器首先计算出当前PC值(当前指令位置)到exper的距离,然后会用一条ADD或者SUB指令来替换这条伪指令,例如:ADD register,PC,#offset_to_exper。注意,标号exper与指转载 2016-11-14 11:28:19 · 452 阅读 · 0 评论 -
从两句汇编认识运行时地址与链接地址
首先看两行汇编代码: 1: adr r0, _start 2: ldr r1, =_start 同样是加载一个标号的地址值,adr和ldr有什么区别呢?注意这里的ldr不是命令ldr,而是伪指令ldr,若想区分它们请参看我的一篇博文《adr adrl ldr mov总结整理》。要区分它们,就需要引入4个概念:1、运行时地址起始位置:它转载 2016-11-14 11:29:28 · 817 阅读 · 0 评论 -
关于ARM9和ARM7中都是PC=当前执行指令地址+8的解释
ARM7是三级流水线,AMR7的三级流水线如下:执行指令地址=0 取指PC = 4解码执行指令地址=4 取指转载 2016-11-19 21:56:50 · 1834 阅读 · 1 评论 -
6410之中断处理
中断:在6410 arm体系中,有很多模块可以产生中断,比如GPIO,UART,TS等都可以产生。在这些模块和CPU之间还有一个中断控制器。这个中断控制器就是用于协调这些模块和CPU之间的交互的。比如:GPIO和UART同时发出中断请求,那么CPU来处理那个中断呢?这就需要用到中断控制器了。如下图所示:从上图可以看到ARM1176中断控制器支持64组中断源。具体哪6转载 2016-11-19 23:01:25 · 379 阅读 · 0 评论 -
栈的初始化及栈帧概念解析
1、栈:FILO先进后出的数据结构栈底是第一个进栈的数据的位置(压箱 底) 栈顶是最后一个进栈的数据位置2、根据SP指针指向的位置,栈可分为 满栈和空栈 满栈:当sp指针总是指向最后压入堆栈 的数据(ARM采用满栈) 空栈:当堆栈指针SP总是指向下一个将 要放入数据的空位置。 3、根据SP指针移动的方向,可分为转载 2016-11-03 23:29:12 · 4128 阅读 · 0 评论 -
sd卡裸代码的实现
1. 前言最近学习了一下MMC相关的东西,并实现了它相关的裸代码,在这里总结一下,与大家分享。首先介绍一下MMC,SD,SDIO等之间的关系,如下图所示。MMC卡(MultiMediaCard): 是一种快闪存储器卡标准。技术基于东芝的NAND闪存技术。比早期基于Inter NOR快闪技术的记忆卡(如CF卡)体积更小。eMMC(Embedded MultiMediaCard):将NAND flas...原创 2018-05-16 22:14:36 · 1581 阅读 · 0 评论