【嵌入式系统复习总结】第六章 硬件系统设计

前情提要

本人是一名大三学生,由于期末复习需要,所以按照老师的ppt总结整理此笔记,希望对你有所帮助

第六章 硬件系统设计

  1. 典型嵌入式硬件系统组成,主要单元及特点,如 CPU,串口,网络,串口, 看门狗,RTC 时钟,Flash,SDRAM,中断控制器
  2. 嵌入式系统硬件调试过程:从最小系统开始

典型嵌入式硬件系统的组成

典型嵌入式系统的体系结构

在这里插入图片描述

典型嵌入式系统硬件组成

在这里插入图片描述

硬件的选择

操作系统

  • 如果希望使用 WinCE 或 Linux 等操作系统,就需要选择 ARM 720 T 以上带有 MMU(Memory Management Unit:内存管理单元)功能的 ARM 芯片,如 ARM 720 T、Strong-ARM、ARM 920 T、ARM 922 T、ARM 946 T 都带有 MMU 功能,
  • ARM 7 TDMI 没有 MMU,不支持 Windows CE 和大部分的 Linux,但目前有 uClinux 等少数几种 Linux 不需要 MMU 的支持。

主要单元及特点

看门狗与复位电路
  • 硬件看门狗 (WDT, WATCHDOG TIMER) 是利用了一个定时器,来监控主程序的运行
  • 也就是说在主程序的运行过程中,CPU 要在定时时间到来之前对定时器进行复位 (喂狗)
  • 如果出现死循环,或者说 PC 指针不能回来。那么定时时间到达后,如果 CPU 还没有产生喂狗信号给 WDT,WDT 就会输出信号使 CPU 复位。

嵌入式系统中两类看门狗:

  1. CPU 内部自带的看门狗:将一个芯片中的定时器来作为看门狗,通过程序的初始化,写入初值,设定溢出时间,并启动定时器。程序按时对定时器赋初值(或复位),以免其溢出。
优点:可以通过程序**改变溢出时间**;可以随时禁用
缺点:需要**初始化**;如果程序在初始化、启动完成前跑飞或在禁用后跑飞,看门狗就无法复位系统,这样看门狗的作用就没有了,系统恢复能力降低。
  1. 独立的看门狗芯片:这种看门狗主要有一个用于喂狗的引脚(一般与CPU的GPIO相连)和一个复位引脚(与系统的RESET引脚相连),如果没有在一定时间内改变喂狗脚的电平,复位引脚就会改变状态复位CPU。此类看门狗一上电就开始工作,无法禁用。
优点:**无须配置**,上电即用。无法禁用,系统必须按时喂狗,系统恢复能力高。
缺点:**无法灵活配置溢出时间,** 无法禁用,灵活性降低。

在这里插入图片描述

硬件看门狗与复位电路中,按键 S 1 是手动复位按键,ADM 706 TAR 芯片的第 7 脚周期性的按设定的时间间隔检查该引脚的输入信号,如果 CPU 在规定的时间内没有输入高电平(又称为喂狗),则说明程序跑飞了,ADM 706 TAR 的第 6 脚便产生一个复位信号,使 CPU 复位。

看门狗定时器
  1. 看门狗定时器控制寄存器 WTCON
  2. 看门狗定时器数据寄存器 WTDAT
  3. 看门狗定时器计数寄存器 WTCNT
看门狗定时器控制寄存器

------WTCON 0 x 01 D 30000 R/W 初始值 0 x 8021

BIT 描述
[15:8] 预分频 prescaler 值(0 to (2 ^8 -1)
[7:6] 保留
[5] 看门狗定时器的允许(启动)位
0 = Disable watchdog timer
1 = Enable watchdog timer Clock select
[4:3] 时钟除因子 (分割) 00: 1/16 01: 1/32 10: 1/64 11: 1/128
[2] 看门狗中断允许位
0 = Disable interrupt generation
1 = Enable interrupt generation
[1] 保留
[0] 看门狗输出复位信号的允许位----- 1: 允许 0: 不允许

看门狗定时器数据寄存器

-------WTDAT 0 x 01 D 30004 R/W 初始值 0 x 8000

  • WTDAT 规定看门狗定时器超时周期。
  • WTDAT 的内容在初始操作时,不能自动加载进定时器计数寄存器 WTCNT。
  • 可是定时器计数寄存器在使用初始值 0 X 8000 第一次超时出现以后,WTDAT 的值将自 动加载进 WTCNT。
存储单元

嵌入式系统内存映射的示意图,显示不同的内存区域及其对应的地址范围
在这里插入图片描述
例子:
在这里插入图片描述

在这里插入图片描述

  • 在程序空间 flash ROM 内(在主板上对应 2 M 字节大小的 HY 29 LV 160 器件)可以固化一段启动系统并对系统进行初始化的程序——Boot Loader 程序。

  • 上图中 Flash ROM 存储器映射在了系统的 bank 0 上,也就是说,系统上电时处理器即从 Flash ROM 的 0 x 00000000 地址处取得指令开始运行。

    • 这个地址上的 Boot Loader 程序完成了时钟设置初始化、中断矢量的定义、存储器的参数设置、堆栈地址定义等工作,这些设置对于系统正常启动是非常重要的。
  • 由于 Flash ROM 是非易失性的存储器,因此程序就算掉电也不会丢失。

    • 但是如果由于某个误操作覆盖了 Flash ROM 中启动程序的内容,系统就将无法正常启动,这时就需要重新将 Boot Loader 程序烧写到 Flash ROM 中

在这里插入图片描述

  • 系统的 SDRAM 器件映射在 bank 6 上,也就是 0 x 0 C 000000 地址处。
  • SDRAM 是易失性的可快速擦写的存储器,因此它通常作为系统的数据空间,同时也作为系统程序的运行空间,当系统上电后,程序将从 flash ROM 存储器被拷贝到 SDRAM 中运行,这样将大大提高程序的运行速度。
  • 当然,系统掉电后,SDRAM 中的程序就消失了,下次上电时,程序将又从 flash ROM 存储器被拷贝到 SDRAM 中运行。
网络接口电路

从硬件的角度看,以太网接口电路两大部分:

  1. MAC(Medium Access Control)控制器
  2. 物理层接口(Physical Layer,PHY)
    在这里插入图片描述
PWM 定时器
  • 6个16 位定时器
  • 3个8 位预分频器
  • 2个5位分割器
  • 1个4位分割器;
  • 输出波形的占空比可编程控制(PWM)
  • 自动加载模式或单触发脉冲模式;
  • 支持外部中断源;
  • 看门狗定时器溢出产生复位信号。
PWM 定时操作

定时器0和1分享一个8位预分频器 + 一个5位分割器
定时器2和3分享一个8位预分频器 + 一个5位分割器
定时器4和5分享一个8位预分频器 + 一个4位分割器

在这里插入图片描述

RTC
  • RTC 单元能在系统断电时, 通过备份电池来供电
  • RTC 能通过 ARM 的 STRB/LDRB 指令传输 8 位数据到 CPU
  • RTC 使用一个外部 32.768 kHz 的晶体
  • 报警功能。

在这里插入图片描述

中断控制器
  • S 3 C 44 B 0 X 的中断控制器可以接收来自 30 个中断源的请求。
  • 中断控制器的作用,就是响应来自 FIQ 或 IRQ 的中断,并请求内核对中断进行处理。
  • 当有多个中断同时发生的时候,中断控制器要决定首先处理哪一个中断。

ARM7TDMI 有 2 种类型的中断模式:

  1. FIQ(快速中断请求)
  2. IRQ(普通中断请求)

CPSR 指 ARM7TDMI 处理器的程序状态寄存器。

  • 如果 CPSR 的 F 位被设置为 1,处理器将不接受来自中断控制器的 FIQ。
  • 如果 CPSR 的 I 位被设置为 1,处理器将不接受来自中断控制器的 IRQ。

因此,为了使能中断响应机制:

  • CPSR 的 F 位或 I 位必须被清 0,
  • 同时 INTMASK( 中断屏蔽寄存器 )的相应位必须被清 0。

在 30 个中断源中 合并后以26 个中断源信号提供给中断控制器。

中断源对应控制位中断源对应控制位
外部中断0[ 25 ]定时器1中断[ 12 ]
外部中断1[ 24 ]定时器2中断[ 11 ]
外部中断2[ 23 ]定时器3中断[ 10 ]
外部中断3[ 22 ]定时器4中断[ 9 ]
外部中断4/5/6/7[ 21 ]定时器5中断[ 8 ]
RTC时间滴答中断[ 20 ]UART0接收中断[ 7 ]
ZDMA0中断[ 19 ]UART1接收中断[ 6 ]
ZDMA1中断[ 18 ]IIC-中断[ 5 ]
BDMA0中断[ 17 ]SIO-中断[ 4 ]
BDMA1中断[ 16 ]UART0 发送中断[ 3 ]
看门狗中断[ 15 ]UART1发送中断[ 2 ]
UART0/1错误中断[ 14 ]RTC报警中断[ 1 ]
定时器0中断[ 13 ]ADC转换结束中断[ 0 ]
中断优先级产生模块包含5个单元:

• 1个主单元–(主单元管理4个辅单元和2个中断源)
• 4个辅单元–(每个辅单元管理6个中断源)

在这里插入图片描述

最小系统

  • S 3 C 44 B 0 X 最小系统 + SDRAM + FLASH 电路可构成一个完全的嵌入式系统
  • 可运行 SDRAM 中的程序,也可以运行 FLASH 中的程序
  • 程序规模可以很大,如果将程序保存到 FLASH 中,掉电后不会丢失,因此,既可以通过 JTAG 接口调试程序,也可以将程序烧写到 FLASH,然后运行 FLASH 中的程序
  • 在此基础上加入必要的接口及其他电路,就构成了具体的 S 3 C 44 B 0 X 应用系统

硬件调试

  • 尽可能的从简单到复杂,一个单元一个单元地焊接调试,以便在调试过程中遇到困难时缩小故障范围,在调试过程中,应先确定电路没有短路,才能通电调试。

  • 先从最小系统调试: S 3 C 44 B 0 X + 电源电路 + 晶振电路 + 复位电路 + JTAG 接口

  • 然后加上 SDRAM,再加上 FLASH,然后再加上其它接口

  • 芯片在工作时有一定的发热是正常的,但如果有芯片特别发烫,则一定有故障存在,需断电检查确认无误后方可继续通电调试。

  • 调试电源电路之前,尽量少接器件,通电之前检查有无短路现象

  • 用示波器观测,晶振的输出应为10MHz

  • 复位电路的nRESET端在未按按钮时输出应为高电平(3.3V),按下按钮后变为低电平,按钮松开后应恢复到高电平

  • 12
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值