嵌入式开发(小知识)


1.软件控制(驱动)硬件的编程原 
    每一种硬件在其控制器芯片上都会有物理寄存器(注意这里的寄存器不是CPU内部的寄存器R1等,而是指硬件芯片上的存储单元,在ARM体系下,这些存储单元与内存统一编址,可以通过CPU访存指令,像访问内存一样去访问),这些寄存器通常分为三种类型:命令寄存器,状态寄存器,数据寄存器。程序控制硬件的办法通常是:程序通过str指令向命令寄存器写入合适的内容,就可以完成对硬件进行配置的操作,或者要求硬件进行某种物理操作。到此为止,软件就完成了所有它该做的事情,之后硬件会自动完成相应操作,在硬件完成操作后,程序又可以通过ldr指令从数据寄存器中获得想要的数据,或者从状态寄存器获取硬件的状态。
    可见,程序控制硬件,简单地说,其实就是程序对硬件的寄存器进行读写操作,命令硬件完成操作,获取硬件状态和数据,仅此而已。
    这里的关键是:某个硬件寄存器的内存地址是好多?为使硬件执行某个操作,应当向哪个寄存器写入什么值?这些都是程序需要解决的问题,而这些问题的解决,关键在于程序员能:
    (1)理解要控制的硬件运作机制
    (2)能熟练查阅硬件的手册(手册中会指明寄存器的内存地址以及寄存器各种取值的含义)
    (3)能看懂硬件连接原理图
    摘自《深入浅出嵌入式底层软件开发》

2.看门狗
    看门狗(WatchDog)的名字形象描述了它的工作原理,看门狗每隔一段时间(比如:3个小时)它就会饥饿,每次饥饿都叫,如果不想他叫,我们要保证在3个小时内喂狗一次就行。因此,我们要及时地对看门狗控制器执行喂狗操作。
    看门狗定时器内部有一个递减计数器,当该计数器递减为0的时候,就会自动重启控制器,如果写有这样的程序,该程序在定时器计数器递减为0之前,将其递减计数器重新设置一下(喂狗),那么就不会产生重启操作。假如机器设备出现异常的情况下如死机,CPU执行出错,程序跑飞等情况,CPU就会陷入非正常的执行流程,就不会去执行重置计数器的程序,当计数器递减为0时,会产生复位控制信号,机器会重新启动,恢复正常执行流程。
    摘自《深入浅出嵌入式底层软件开发》

3.SDRAM内存
    SDRAM(Synchronous Dynamic Random Access Memory,同步动态随机存储器)也就是通常所说的内存。
内存是代码的执行空间,以PC为例,程序是以文件的形式保存在硬盘里面的,程序在运行之前先由操作系统转载入内存中,由于内存是RAM(随机访问存储器),可以通过地址去定位一个字节的数据,CPU在执行程序时PC的值设置为程序在内存中的开始地址,CPU会依次的从内存里取址、译码、执行。在内存没有初始化之前,内存好比是未建好的房子,是不能读取和存储数据的,因此要想让程序代码运行在内存里,必须进行内存的初始化。
    在介绍内存工作原理之前,先了解下存储设备的存储方式:ROM,RAM。
    (1) ROM (Read-Only Memory):只读存储器。通常用在不需经常变更资料的电子或电脑系统中,资料并且不会因为电源关闭而消息。如PC中的BIOS.
    (2)RAM (Random Access Memory):随机访问存储,存储单元的内容可按需要随意取出或存入,却存取的速度与存储单元的位置无关的存储器。这种存储器在断电时将丢失其存储内容,故主要用于存储短时间内随机访问使用的程序。
    RAM按照硬件设计的不同。随机存储又分为DRAM(Dynamic RAM)动态随机存储器和SRAM(Static RAM)静态随机存储器。
    DRAM:它的基本单元是小电容,电容可以再两个极板上短时间内保留电荷,可以通过两极之间有无电压差代表计算机的0和1,由于电容的物理特性,要定期地为其充电,否则数据会丢失。对电容的充电过程称为刷新,其制作工艺简单,体积小,便于集成化,经常作为计算机里内存制作单元。比如PC的内存,SDRAM,DDR,DDR2,DDR3等,缺点:由于要定期刷新存储介质。存取速度较慢。
    SRAM:它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据。因此其存取速度快,但是体积较大,功耗较大,成本高,常用做存储容量不高,但存储速度较快的场合,比如CPU的L1 cache,L2 cache(一级,二级缓存),寄存器。
    摘自《深入浅出嵌入式底层软件开发》


4.进程

    进程是操作系统一个任务运行的基础,是一个正在执行的程序,是一个活动的实体,并不是磁盘上的程序,它表示当前CPU的执行的状态和一组相关的系统资源所描述的活动单元。例如:正在打开的音乐播放器是一个进程,它在不定的读取音乐文件,播放出歌曲。
    进程不仅仅是程序在内存中执行的代码,它还包括当前进程运行的状态和相关使用的寄存器等。
    每个进程都有一个运行状态来表示当前进程当前的运行情况,每个进程可以包含下列状态之一:
    (1)新建状态:进程正在创建,分配系统资源。
    (2)运行状态:当前进程正在被CPU执行。
    (3)等待状态:进程自己主动或被动的进入等待状态,例如,进程自己主动进入睡眠状态,或等待某个I/O资源或某个时间的产生被动进行等待状态。
    (4)就绪状态:当前进程所需资源已经准备好,等待CPU调度执行。
    (5)终止状态:进行已执行完成。
    每一个进程在一个时刻只能存在一种状态,在单核CPU上一个时刻最多只能有一个进程处于运行状态,可以有多个进程处于就绪状态、等待状态。
    摘自《深入浅出嵌入式底层软件开发》

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值