嵌入式控制(1)---从51单片机到嵌入式系统
从51单片机到操作系统原理
-----学习感想
今天是9月13日,陈冰老师进行了第一次嵌入式系统相关讲座。按照上手程度从易到难,发展时间先后顺序,给大家讲述了:单片机的概念及工作原理,操作系统存在的必要性和其实现的功能。演示了:单片机在KEIL开发环境下配置,编译,烧写,嵌入式系统在串口通信条件下程序编译与执行。用仅仅四个小时不到的时间对嵌入式系统进行了由浅入深,详简有度,条理清晰的讲解。
1.51单片机
8051单片机较为简单,基础。其采用冯诺依曼构架,主要结构包括:运算核心,寄存器,rom,ram,clock以及其他外设。51单片机的工作原理及工作程序包括以下几点:
1. 单片机内部的重要操作是从rom中读取程序,暂存于寄存器,程序中产生的变量则进入ram。也就是,单片机重要的操作就是搬运。
2. 程序可以通过读取、写入引脚变量完成与外界交换数据。每个引脚对应一个地址,对指向该地址的指针进行操作就是实现I/O。
3. 单片机的程序里面有一个重要的主循环,但主循环里所实现的功能并不是最重要的。重要、复杂的共能主要在中断中实现。
4. 程序中断或进入子function时,需要保存当前状态。将当前寄存器内容,指令指针存进栈中。中断完成后重新弹栈,恢复中断前状态。
5. 程序在运行过程中,可以响应外部变化,对新变量分配内存,称为堆。
6. 程序在烧写前需要经过编译,链接。编译实际上是给指令脱衣服,而链接需要硬件信息,将指令烧写进对应地址。
由于单片机变成接近硬件底层,直接在硬件上执行程序,可能会溢出导致系统错误等一系列难发觉的bug。所以,考虑让程序通过操作系统和硬件进行相关操作。操作系统的作用在于:虚拟化、持久化、并行化。
2.操作系统
虚拟化的主要作用是实现并行多任务。操作系统需要调度系统资源,面对每个请求资源的程序,操作系统都对其分配”全部内存资源”,而这种分配方式是通过MMU向内存空间中映射完成的。由此实现运行在操作系统上的所有程序,都能够调配足够资源。
并行化是指在linux操作系统下,一切皆文件。之前我对linux系统已有了解,但今天收获了在linux系统下,连进程亦是文件,可以读取进程中所执行指令的地址等内容。中断即保存进程,保存进程即保存文件。嵌入式系统中I/O口亦是文件。通过向I/O文件中读写,可改变或读取I/O状态。和51单片机中改变程序变量值的方式区别很大。
我之前的单片机基础停留在修改例程,实现跑马灯的水平。并且,在我之前的思想里,单片机开发主要手段就是修改例程,在其他人盖好的大楼里简单的添砖加瓦,窥一斑私以为得全豹,见一足全当是知大象。虽然今天的讲座并未大幅提升我的实际操作水平,却让我对单片机、嵌入式系统有了较为全面、系统的认识,获得了自主学习嵌入式系统的能力。
纸上学来终觉浅,talk is cheap,show the code