目录
1、前言--学习路径
1.1、应用层
前期课程:C语言,Linux基础,数据结构,linux高级编程(io;进线程,网络):(重点:围绕c开展,数据结构,综合项目:电子词典,前期知识加进去)
中期课程:c++,qt(重点:c++,gui开发,面向对象的编程思想 )
1.2、底层
后期课程:ARM体系结构,Linux系统移植,linux驱动开发(c+arm汇编)软硬结合
项目阶段:综合项目(stm32)
python人工智能
为什么要学习底层;为了解决高级语言解决不了的问题
如
例题一:i++和++i哪个效率更高?
int i;
i++;
++i;
答案:++i;
A obj;
++obj; //直接返回当前对象**`
obj++; //产生临时对象**`
例题二:当c语言编出的程序不符合逻辑时,可能是底层的原因
#include <stdio.h>
int main(int argc, char *argv[])
{
int val =255;
int i;
for( i = 0;i<64;i++)
{
printf("i = %d, val = %d\n",i,val>>i);
}
return 0;
}
结果:在33位时,val的值又回到255了
i = 30, val = 0
i = 31, val = 0
i = 32, val = 255
i = 33, val = 127
i = 34, val = 63
i = 35, val = 31
i = 36, val = 15
i = 37, val = 7
i = 38, val = 3
i = 39, val = 1
i = 40, val = 0
i = 41, val = 0
原因:在汇编寄存器中,移位操作数只能装5位,val的二进制值为1111 1111 ;当循环到i=33,val=127;因为只能装5位,而32 = 10 0001,寄存器就会把高位的1丢掉变为0 0001;等价为只移动1位;即导致移动33位的val =127
2、ARM体系结构
课程安排:3天(基础理论+arm汇编指令)+4天(裸机编程)
课程特点:软硬结合,(硬件的基础知识,裸机编程,看芯片手册)
2.1、ARM简介
1)、ARM公司
分布:England;Us;Germany;Taiwan;France;Japen;Korea;
ARM产品线:1 、Applications(最高端待电时间长) 2、Real-Time Embedded(实时处理系统;中断更多 3、MCU&FPGA(智能玩具;单片机)如CH32中国公司
授权的厂商:T1(德国仪器)、Samsung(三星)、Freescale(飞思卡尔)、Marvell(马维尔)、Qualcomm(高通)、Nvidia(英伟达)
2)、ARM一系列芯片(RSCI)
ARM体系 | ARMv4 | ARMv5 | ARMv6 | ARMv7 |
ARM CPU | arm7 | arm9 arm10 | arm11 | arm-cortex-a8 |
流水线(条) | 3 | 5 | 6 | 8 |
频率(MHZ) | 80 | 150 260 | 335 | 667 |
MMU | 无/有 | 有 | 有 | 有 |
结构 | 冯诺依曼 | 哈佛结构 |
注意:不同ARM体系采用不同指令集
哈佛结构是数据和指令分开存储并行
冯诺依曼(普林斯顿)结构是混合存储
ARM系统硬件组成和运作原理
精简指令集RISC
低功耗
主流的产品线,A系列,R系列,M系列
3)、ARM技术
嵌入式:专用计算机系统
普通电脑:通用计算机系统
核心:芯片(ARM品牌芯片)
2.2、工作模式
模式 | 简介 |
---|---|
User | 非特权模式,大部分任务执行在这种模式 |
FIQ | 当一个高优先级(fast) 中断产生时将会进入这种模式 |
IRQ | 当一个低优先级(normal) 中断产生时将会进入这种模式 |
Supervisor | 当复位或软中断指令执行时将会进入这种模式 |
Abort | 当存取异常时将会进入这种模式 |
Undef | 当执行未定义指令时会进入这种模式 |
System | 使用和User模式相同寄存器集的特权模式 |
cortex-A特有模式
Monitor:是为了安全而扩展出的用于执行安全监控代码的模式,也是一种特权模式
2.3、寄存器
经典模型37个寄存器
1个用作PC(program counter)
一个用作CPSR(current program status register)
5个用作SPSR(saved program status registers)
30个通用寄存器
A系列:40(37+3)
R15(PC):程序计数器
R14(LR):链接寄存器:记录pc值,用于返回