嵌入式笔记讲解.docx
- 文档编号:812018
- 上传时间:2022-10-13
- 格式:DOCX
- 页数:16
- 大小:133.18KB
嵌入式笔记讲解.docx
《嵌入式笔记讲解.docx》由会员分享,可在线阅读,更多相关《嵌入式笔记讲解.docx(16页珍藏版)》请在冰豆网上搜索。
嵌入式笔记讲解
嵌入式系统软件体系结构:
1、无操作做系统
(1)循环结构(主体是循环)——做很多任务时不好(有延迟),加中断和定时器较好;
(2)前后台结构——中断
2、有操作系统——开发软件难度降低;多个任务并行执行,任务多少与内存(RAM)大小有关;
嵌入式操作系统的分类:
1、商用系统、专用系统、开源系统
2、按响应时间分类——实时操作系统、非实时操作系统
第三章
ARM:
内核、32位、占市场比例75%;
也是公司名,制作内核;
与PC相比——功耗小、价格低、集成度低,但集成了一些外设;
MIPS/W——衡量处理器的标准;
工作模式、代码密度——存储密度。
3、2ARM微处理器体系结构
偏上外设的空间属于I/O空间;
ARM的架构——1个32bitsALU,31个32bits通用寄存器及6个状态寄存器。
3、2、3ARM的寄存器组织(注:
内核寄存器):
未分组寄存器R0~R7;
分组寄存器R8~R14;
程序计数器PC(R15);
R13——堆栈指针SP;
R14——PC的备份,也常写作LR,操作系统切换用;
程序状态寄存器CPSR
3、2、4ARM处理器模式(7种)
(1)用户模式(USR);
(2)快速中断模式(FIQ);(3)外部中断模式(IRQ);
(4)管理模式(SVC);(5)数据访问终止模式(ABT);(6)系统模式(SYS);
(7)未定义指令中止模式(UND);
大部分为用户模式下运行
3、2、5异常
种类;异常向量表——P85;异常优先级;
对异常的响应:
(1)保存下一条指令地址——>LR(R14);
(2)CPSR——>SPSR;
(3)根据异常类型设置CPSR的M[4:
0];
(4)PC跳转至异常向量地址(异常向量表内的);再跳转至异常处理程序;
(5)从异常返回。
ARM指令集——32位;
Thumb指令集——16位,是ARM指令集的子集;
常用指令:
B目标地址;
BL目标地址;R14<——PC-4
BLX目标地址;ARM<——>Thumb
MOVR1,R0;R0->R1
MOVR0,#0;#表示常数——————?
?
?
?
?
?
?
?
?
?
CMPR1,R0;比较;影响CPSR标志位
LDRR0,[R1];MOV不能从存储器读取数据
LDRR0,[R1,R2];相加为内存单元地址——?
?
?
?
?
?
?
?
?
LDRR0,[R1,#8];
LDRR0,[R1,R2,LSL#2]!
;——?
?
?
?
?
?
?
?
?
?
——地址R1+R2*4的数据——》R1,LSL表示左移,LSR表示右移
ADDR0,R2,R3,LSL#1;R0=R2+R3<<1——?
?
?
?
SUBR0,R1,R2;R0=R1-R2
ADC、SBC考虑CBSR中C位——进、借位标志
SWI软中断指令
伪指令——不会生成机器码,起辅助作用
AREAInit,CODE,READONLY
……
ENTER;入口地址
……
END
Thumb指令集:
区别——没有协处理器指令;无访问CPSR、SPSR指令;
无64位乘法指令;访问寄存器受限
3、4ARM处理器编程简介
文件格式:
*.S,*.ASM;*.C,*.CC(C++程序);
一般初始化文件用汇编,主要任务用C语言
汇编语言结构——P102
一个代码段(或多个),链接器确定在存储器中的位置
混合编程:
主要是C语言内嵌套汇编语言
关心:
传递、返回用什么寄存器(特定)
3、5ARM处理器初始化分析
Bootloader:
硬件、软件初始化
1、PC初始化过程
BIOS完成计算机硬件自检——》运行MBR中的代码——》读取运行活动分区引导扇区代码——》从分区中读取内核映像并启动。
2、嵌入式系统初始化
无BIOS,硬件自检由Bootloader完成。
一般Bootloader存放于0x00000000处,即处理器开始执行程序处。
但不同处理器不同,具体可查datasheet。
Bootloader是一段小程序,通过这段小程序初始化最基本的硬件设备,并建立内存空间映射图。
常用Bootloader有:
U—boot和ViVi,其中U—boot开源
第5章嵌入式系统硬件平台与接口设计
5、1
1、S3C2410简介
ARM920T内核、0.18um;
CMOS工艺、外围模块(片上外设);
MMU(内存管理单元)
PWM——控制直流电机中的转速,开关电源,产生方波
S3C2310A微处理器的启动方式
Nandflash——SDRAM——大容量存储器
Norflash——SRAM
——XIP功能:
在片内运行程序,成本高,容量小,掉电不消失
DRAM:
动态随机存储器,存储密度大,需刷新电路;
SRAM:
静态随机存储器,使用方便,容量小,无需刷新电路;
SDRAM:
同步动态随机存储器,存储容量大,需内部刷新电路,需要同步时钟;
启动方式(Nandflash启动)——手机、嵌入式系统
两级引导:
第一级:
系统复位时,若OM[1:
0]为00,则将Nandflash的前4K字节复制到内部SRAM中(CPU自动完成,不需干预);
第二级:
Nandflash前4K一般存放Bootloader,Bootloader初始化SDRAM(外扩内存)及Nandflash控制器,及其他初始化,随后将Bootloader的其它部分复制到SDRAM中,运行SDRAM中的代码(即执行Bootloader),引导操作系统及其他应用程序。
5、2存储器系统设计(很重要)
内存一定是挂在系统总线上的;
高速缓存:
位置——CPU与主存储器(内存之间);
——作用:
提高内存系统性能;
——原理:
cache与主存有相同块号,CPU访问主存时,受限访问cache,有则取,无则访问主存,且主存数据——》cache
内存管理单元(MMU)
作用:
(1)虚拟存储空间到物理存储空间的映射,查表过程;
——解释?
程序所需内存大于物理内存时的情况;
(2)存储器访问权限控制;
(3)设置虚拟存储空间的缓冲特性
5、3串行接口设计(UART)
通过串口观察程序运行状态;
可以接收输入,可以输出好多信息;
用来运行时交流。
1、串行通信的基本概念(UART)SPI、I^2C、CAN
单工、半双工、全双工
USART:
通用同步和异步收发器(有时钟信号);
UART:
通用异步收发器。
异步通信:
(1)接收、发送时钟不同,使用波特率,存在误码;
(2)有纠错机制(奇偶校验——简单、有效、成本低)
(3)传输速率:
波特率——使用UART,晶振选择上注意——11.0592M,或用PLL
与UART有关的寄存器P160
串行接口设计
#definerUTRSTAT0(*(volatileunsigned*)0x50000010)
#definerUTRSTAT1(*(volatileunsigned*)0x50004010)
#definewrUTXH0(ch)(*(volatileunsignedchar*)0x50000020)=(unsignedchar)(ch)
#defineRdURXH0()(*(volatileunsignedchar*)0x50000024)
intmain(void)
{
charc1[1];
while
(1)
{
Uart_SendByten(0,0xa);//换行
Uart_SendByten(0,0xd);//回车
er=Uart_Getch(c1,0,0);
Uart_SendByten(0,c1[0]);
}
}
voidUart_SendByten(intUartnum,U8data)
{
if(Uartnum==0)
{
while(!
(rUTRSTAT0&0x4));//查看倒数三位的状态;判断发送缓冲区是否为空,为1为空,为0为满;
hudelay(10);
wrUTXH0(data);
}
}
charUart_Getch(char*Revdata,intUartnum,inttimeout)
{
if(Uartnum==0)
{
while(!
(rUTRSTAT0&0x1))
*Revdata=RdURXH0();
returnTRUE;
}
}
5、4I/O接口设计
GPIO例:
#defineGPCCON(*(volatileunsigned*)0X56000020)
#defineGPCDAT(*(volatileunsigned*)0X56000024)
#defineGPCUP(*(volatileunsigned*)0X56000028)
Main()
{
GPCCON=0X55555555;
GPCUP=0XFFFF;
GPCDAT=0XA0;
While
(1);
}
I/O接口——独立编址;
统一编址——与存储系统。
5、4、2A/D转换器
基本概念:
S3C2410
时钟:
2.5MHz;8路10位AD;转换速率:
500Ksps
参考电压:
3.3V;精度:
3.3V/2^10≈3.3mV
例:
A/DC
#defineADC_CON_FLAG(0x1<<15)
#defineADCCON_ENABLE_START_BYRED(0x1<<1)
#definePRSCVL(49<<6)
#defineADCCON_ENABLE_START(0x1)
#defineSTDBM(0x0<<2)
#definePRSCEN(0x1<<14)
#definerADCCON(*(volatileunsigned*)0x58000000)
#definerADCDAT0(*(volatileunsigned*)0x5800000C)
voidinit_ADdevice()
{
rADCCON=PRSCVL|ADCCON_ENABLE_START|STDBM|PRSCEN;
}
intGetADresult(intchannel)
{
rADCCON=ADCCON_ENABLE_START_BYREAD|(channel<<3)|PRSCEN|PRSCVL;
hudelay(10);
while(!
(rADCCON&ADCCON_FLAG));
return(0x3FF&rADCDAT0);
}
intmain()
{
floatd;
inti;
while
(1)
{
for(i=0;i<=2;i++)
{
d=GetADresult(i)*3.3/1023;
Uart_Print("a%d=%f\t",i,d);
hudelay(1000);
}
}
}
软件以工程为整体
实验箱自带很多源码,用“模板”文件,看说明;
Startup.c——起始文件,入口程序,只读即可。
AD控制LED亮度
While
(1)
{
K=GetADresult(0);
rGPCDAT=0x00;
Hudelay(110-k/10);
rGPCDAT=0XFF;
Hudelay(k/10+1);
}
寄存器赋值:
读——》修改——》写
PWM控制直流电机(小功率)——寄存器(PWM)
TCNTBn:
决定频率;TCMPBn:
决定占空比;TCN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 笔记 讲解