ARM裸板开发与汇编入门

主要记录一些硬件架构方面的知识和底层介绍并用形象的比喻进行理解;
目的要求:熟悉某种(S5PV210)开发板的硬件启动流程,能做什么产品,有什么没研究过的,大公司需要的
首先提两个重要的学习方法:1.先自己设计一个认为合理的CPU结构(考虑性能 效率 容量);2.最好能找到3D演示效果的CPU结构图

ARM的体系结构与指令(周期)

8051指令各有1.2.4字节长度不等的指令
指令周期:震荡 机器 时间

流水线

三级:中断处理,线程保护,保存执行级别的内容(实质保存计数器)

寄存器 加图 大脑构建汇编世界 这些东西都是定义->去理解为什么这样定义(如何:ARM生产厂商是如何让某位设置某个数就能产生某种功能的)

是中央处理器组成之一,同速,比(L1 L2 DDR2)快

汇编与反汇编(dis文件)

目标:年薪50万 PLC 大小写不敏感 弄个模板 收集一些案例

基本指令使用(写法:先实现C代码 )
小霸王游戏是用什么语言开发的?->C和汇编语言混合编写
0.规范 文件.S

当前汇编是第一个执行 格式必须如下
.text(开头标志)
.global _start
_start:
//添加代码
循环 函数

.end(结尾标志)

执行:

1.立即数寻址:标志性#
subs r0,r0,#1;r0=r0-1,并影响CPSR标志位
mov r0,#0xff000;r0=0xff000

寄存器寻址.png

3.寄存器间接寻址 标志性[] --【PPT】ARM的指令库
4.偏移寻址-左右移
5.基址变址寻址:原来地址再次改变地址 !重复之前的动作
6.压栈指令 push {r0,r1,r2} push{r0-r2} 使用场景:有可能使用到这几个寄存器先保护起来到内存当中;//r0-14都可以
出栈指令 从内存当中恢复寄存器 pop{r0-r2}
7.比较指令 CMP CMN TST TEQ 需要背(不需要加s,能够直接影响CPSR标志位) ZXCV是什么?
8.代码优化等级影响延时真实值(推荐二级优化)-编译器会影响同样代码的质量
9.汇编调用C语言 汇编调用汇编 C语言调用汇编 extern 超过4个参数用栈传递(4个及内都是依次用r0-3)-慢 uboot启动内核会调用空函数theKernel

10.相关笔记
//配置GPJ2_0~GPJ2_3引脚为输出模式
//使用模型:r0储存转换后的值,r1为真实地址值
//r2存储临时更改值
//ldr万能加载-数值 地址和寄存器,mov不能加载数值 0 x 1 2 3
ldr r1,=rGPJ2CON //int *r1 = 0xE0200280
ldr r0,[r1] //r0 = *r1
ldr r2,=0xFFFF

bic r0,r0,r2   //bic低4位清0
ldr r2,=0x1111      //对上面使用过的重新赋值,不会影响
orr r0,r0,r2           //简写:博客园 跑马灯 嵌入式 即刻出发
str r0,[r1]         //*r1 = r0

//堆栈大小 中级嵌入式考证 试题 要求:会看和改 UBoot源代码

Paste_Image.png

ARM:.text 代码段 sub减法指令 push压栈
用得比较多的指令:bl调用(带指令的跳转-函数指针也可以) Load加载寄存器值(指令) Store存储指令 STR改写寄存器值 ldr/str bx跳转指令
远程更新管理:不带操作系统的网络下载 flash分区 bootloader(初始化网络模块)-汇编实现
精简指令集依赖库的实现(不要写太多除法-用左右移)
写代码:CPSR是什么 翻译C语言来写汇编

汇编代码:标志位
反汇编:可获取程序执行地址,看到指令和寄存器,不同工作模式(类似Linux的权限)
*ARM一上电默认是管理模式(方便设置各种模式堆和栈)
重要:ARM工作流程(1.上电设置DDR2 *.外部中断模式(识别然后跳转到对应的堆和栈地址[烧错代码等,不同模式对应不同堆栈地址]))
0.设置类模式
管理(最高权限)设置各种模式堆和栈
1.正常工作类模式(用户和系统模式,同一级别)
2.异常类模式
未定义(当前指令未定义,例:单片机代码烧到ARM);
中止(取指令或数据出错);
普通(外部)中断IRQ(定时器 串口 SPI 外部引脚中断等)[ARM自动切换到该模式];快速中断FIQ()[原理:压栈数少]
http://www.eepw.com.cn/article/201611/318203.htm
注意:以下不能任意赋值,代码自动计算(不需要操作)
R13
R14子程序链接寄存器
R15->PC值记录当前程序位置
CPSR当前程序状态寄存器
SPSR
*现场保护->追踪指令
跳转指令

跳转指令.png

中断与现场保护恢复 视频-教师机(16:10左右具体过程描述) 5.26 14:23

何为中断 http://www.21ic.com/jichuzhishi/mcu/interrupt/2013-02-28/159436.html
学习问题:电子入门读物推荐-对中断,定时器这些由来不清楚
掌握移位操作(可记常用场景的设置,例:标志位写1清0) 与单片机区别
外部中断引脚变为第二功能引脚 触发方式 中断处理函数 使能开关
分类数量与优先级
自动跳转(由硬件实现)

IRQ中断处理相关内容
1.现场保护(普通中断r0-12,14,cpsr)[新一代硬件可自动完成]
2.判断中断源:检查当前是哪个硬件触发中断
3.跳转到该硬件中断服务函数执行 (除了这里其他都是汇编)
4.现场恢复(r0-12,pc,cpsr...原来地方)
总中断打开(7设置为0值)

现场恢复:0-12 14恢复 cpsr从spsr恢复
保护:0-12 14 cpsr从spsr保存

不同VIC(2用到音频中断)用到不同的中断
VIC0->定时器 中断号与寄存器关系

Paste_Image.png

存储类型 大小端模式

大端:tcp socket 低字节放高地址
小端:
GEC-A8没有L3缓存

异常处理结构 中断向量 视频-教师机(16:30左右具体过程描述)

异常处理结构.png

中断入口地址 自动指向 硬件指定(图上的向量地址)-软件不能修改
上电复位:PC 指向0x00000000地址

ARM启动方式与流程 (1、芯片支持的启动方式2、地址布局3、启动流程)教师机10:50启动流程讲解

启动方式:具体采用哪种取决于OM0、OM1两个引脚的状态
http://blog.csdn.net/a627088424/article/details/9149671
http://blog.csdn.net/ly56086566/article/details/4814310
0.不论是arm的何种处理器,其都是从0x0 0地址处开始执行程序
启动流程图
1.初始化 400M时钟

BootLoader介绍与作用

UBoot源码结构与注释 http://blog.csdn.net/reille/article/details/6554038
1.bootloader的作用是初始化必要的硬件,引导内核启动
*硬件映射(向量中断):

中断

相关书籍收集

0.汇编语言:基于x86处理器
1.汇编语言第三版 王爽 汇编书目 http://bbs.csdn.net/topics/330122713
2.计算机组成与嵌入式系统(原书第六版)
Computer Organization and Design, 4th Ed, D. A. Patterson and J. L. Hennessy CSDN
3.国内或豆瓣评分8.0上的书(照建议的读和学,遇到问题逐步解决[论坛 群])

课堂笔记

指令和数据存放在存储器(内存-"创见"4G)

课外知识补充

1.DSP(数字信号处理)一般是给自动化电子等专业的研究生博士研究算法的(机械专业不包括),有专门的浮点运算单元。
2.存储器(指令)指令决定寄存器(数据),(地址)存放在哪?
3.USB很少人懂,CISC/RISC 傅里叶变换 哈夫曼编码 JPEG编解码
4.晶振12M与11.0592MHz区别:12定时器
5.苹果基于ARM框架进行改造的A系列性能了解
6.代码规范-变量放前面(部分编译器不支持放后面)
UBoot要4.4.1编译器才能编译通过
7.如何挑选CPU:架构 主频 二级缓存越大越好,这也是为什么赛扬系列的CPU主频虽然比较高,但是在实际应中却没有奔腾系列要好的原因(二级缓存对于AMD来说就不像英特尔那么重要,因为AMD除了有二级缓存之外还有三级缓存) 工艺(发热和稳定性) 核心数(玩游戏还是首选英特尔的CPU,因为在单核性能上英特尔比AMD要强,不过价格要贵许多)
8.notepad++ 视图可查看函数列表

面试会问到的一些问题

1.看图识结构(选型 知道性能 成本等)
辨别依据:总线的关系
2.8051指令周期(微机)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,682评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,277评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,083评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,763评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,785评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,624评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,358评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,261评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,722评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,900评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,030评论 1 350
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,737评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,360评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,941评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,057评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,237评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,976评论 2 355

推荐阅读更多精彩内容