嵌入式Linux系统开发总结

时间:2024.4.20

嵌入式总结

1.  嵌入式的定义

广义的说,嵌入式系统就是一个具有特定功能或用途的计算机软硬件集合体;从狭义上说嵌入式系统紧紧指装入另一个设备并且控制该设备的专用计算机系统。

2.  一般定义:以应用为中心、以计算机技术为基础。软件硬件可裁剪。功能可靠性、成本、体积、功耗严格要求的专用计算机系统。

3.  嵌入式系统几个重要特性

a)   专用性:嵌入式系统具有特定的功能,用于特定的任务

b)   低成本:嵌入式系统及其关注成本

c)   高实时性OS:嵌入式系统通常有实时的要求

d)   嵌入式系统的运行环境广泛

e)   嵌入式系统的软件通常要求固态化存储

f)   嵌入式系统的软件、硬件可靠性要求更高

g)   相关产品具有较长的生命周期

4.  嵌入式系统的组成----硬件

软件:

5.  嵌入式处理器的特点

1.      对实时操作系统具有很强的支持能力

2.      能够实时多个任务,并且具有较短的中断响应时间

3.      具有功能很强的存储区保护功能

4.      低功耗。

6.  嵌入式处理器的分类

嵌入式微控制器   嵌入式微处理器  嵌入式DSP处理器  嵌入式上系统

7.  RISC和CISC差异主要有以下几点:

(1)指令系统:RISC设计者把上要精力放在那些经常使用的指令上,尽量使它们具有简单高效的特色。对不常用的功能,常通过组合指令来实现。因此,在RISC机器上实现特殊功能时,效率可能较低。但可以利用流水技术和超标量技术加以改进和弥补。而CISC计算机的指令系统比较丰富,有专用指令来完成特定的功能。因此,处理特殊任务效率较高。

(2)存储器操作:RISC对存储器操作有限制,使控制简单化;而CISC机器的存储器操作指令多,操作直接。

 (3)程序:RISC汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂,不易设计;而CISC汇编语言程序编程相对简单,科学计算及复杂操作的程序设计相对容易,效率较高。

(4)中断:RISC机器在一条指令执行的适当地方可以响应中断;向CISC机器是在一条指令执行结束后响应中断的。

(5)CPU:由于RISC CPU包含少的单元电路,因而面积小、功耗低:而CISC CPU包含丰富的电路单元,因而功能强、面积太、功耗大。

(6)设计周期:RISC微处理器结构简单,布局紧凑,设计周期短,且易于采用最新技术;CISC微处理器结构复杂,设计周期长。

(7)易用性:RISC微处理器结构简单,指令规整,性能容易把握,易学易用:CISC微处理器结构复杂,功能强大,实现特殊功能容易。

(8)应用范围:由于RISC指令系统的确定与特定的应用领域有关,所以RISC机器更适合于嵌入式应用;而CISC机器则更适台于通用计算机。

RISC和CISC各有优势,而且界限并不那么明显。现代的CPU往往采用CISC的外围,内部加入RISC的特性,如超长指令集CPU就是融合了RISC和CISC的优势,成为未来的CPU发展方向之一

8.  ARM的发展

ARM7家族包括:ARM720T、ARM7EJ-S、ARM7TDMI 和 ARM7TDMIS。

最为常用的是ARM7TDMI,T代表支持Thumb指令集,D代表支持片上调试,M代表内嵌硬件乘法器,I代表支持片上断点和调试点。主要应用于个人音频设备(如MP3)、无线手持设备等。最适合用于对价位和功耗要求较高的消费类应用。

ARM9家族包括:ARM920T、ARM922T和ARM940T。这一系列处理器主要应用于下一代手持产品,视频电话,PDA,数字消费产品,机顶盒,家用网关等。    

ARM10E家族包括:ARM 1020E、ARM 1022E和ARM 1026EJ-S。

这一系列的处理器具有高性能、功耗低的特点,采用了新的体系结构,同ARM9比较,其性能有了很大的提高。其中ARM 1020E的组织与ARM920T非常相似,所不同的是Cache的大小和总线宽度。

ARM 10E系列处理器主要应用于下一代无线设备,数字消费品等。

ARM 11家族包括:ARM 1136J(F)-S、ARM 1156T2(F)-S 和ARM 1176JZ(F)-S。

同上一代处理器(ARM 10)相比,这一系列处理器的性能得到进一步增强,并引入了Thumb-2指令集。同时该系列处理器核也首次集成了ARM智能能量管理(IEM)技术,因此更加减少了处理器功耗。因此更适合开发下一代手机、PDA等手持设备。

SecurCore 家族包括:SecurCore SC100、SecurCore SC110、SecurCore SC200和SecurCore SC210。

SecurCore 系列处理器专为安全需要设计,提供了完善的32位RISC技术的安全解决方案。

这类处理器主要应用在对安全行要求很高的应用中,比如电子商务、电子银行、网络认证系统等

OptimoDE数据引擎内核采用VLIW体系结构,拥有一个完整的用户自定义数据通道。

数据通道的可配置性为设计者提供了对数据通道类型和数量的定义和扩展,数据通道带宽和指令带宽的定义和扩展,依据应用的实际需求定义和扩展输入/输出(I/O)量。

指令长度可在16位和256位间变换。本地存储的容量和拓扑结构及互联级也都完全可配置,因而每个数据引擎都能尽可能地高效执行

MPCore支持多达四路缓存的协同式对称多任务处理(four-way cache coherent symmetric multiprocessing;SMP)、多达四路的非对称多任务(four-way asymmetric multiprocessing;AMP),或混合以上两种模式。

StrongARM是采用ARM 体系结构高度集成的32位RISC微处理器。

它融合了Intel公司的设计和处理技术,以及ARM 体系结构的电源效率,采用在软件上兼容ARM v4体系结构、同时采用具有Intel技术优点的体系结构。

StrongARM是Intel公司为手持消费类电子设备和移动计算与通信设备的嵌入式处理器。

9.  ARM编程模式

模式和寄存器

ARM 一共有 7 种执行模式:

User: 非特权级模式,多数应用程序使用的模式

       FIQ: 进入快速中断响应时

      IRQ: 进入一般中断响应时

Supervisor: 复位后的缺省模式,或进入软件中断响应时

Abort: 遇到存储器访问出错时

Undef: 遇到未定义指令时

System: 特权级的User模式

10. pc寄存器

当处理器处于 ARM 状态时:

a)          所有指令都是32位长度

b)          所有指令存储必须 word 对齐

c)          pc[31:2] 有效, [1:0] 未定义

当处理器处于 Thumb 状态时:

d)          所有指令都是16位长度

e)          所有指令存储必须 halfword对齐

f)          pc[31:1] 位有效, 最低位未定义

当处理器处于 Jazelle状态时:

g)          所有指令都是 8 位长度

h)          处理器一次执行 1 个word的读取指令获得 4 条Java指令

注意在指令中访问PC寄存器的值

i)          不是当前指令地址

11. ARM7 tdmi组织

ARM7TDMI核是使用了3级流水线的基本的ARM整数核,它具有许多重要的特性及扩展。

(1)它实现ARM体系结构版本V4T,支持64位结果的乘法,半字、有符号字节的Load和Store以及Thmub指令集;

(2)它包含了EmbeddedICE模块以支持嵌入式系统调试,因为调试硬件由JTAG测试访问端口访问,故JTAG控制逻辑被认为是处理器宏单元的一部分

12.ARM7TDMI应用

ARM7TDMI处理器核在存储器配置较简单的系统中已有许多应用,通常这些系统包含几千字节的片上RAM。

一个典刑的例子是移动电话手机(同一芯片常常融合了复杂的数字信号处理硬件和相关的存储器)。

在此应用中,ARM7TDMI事实上已成为用于控制和用户接口功能的标准处理器。

12. ARM8的性能

a)   ARM8是个通用的处理器核,可以容易的由ARM公司的许多特许商生产所以他没有针对特定的工艺技术进行过多的优化

b)   他在相似的芯片面积 上提供比简单的ARM7搞得过的性能。如果想实现它的全部功能,则需要支持双倍宽带片上存储器

13. ARM9

ARM9TDMI核将ARM7TDMI的功能显著地提高到更高性能的水平。

ARM9TDMI(不像ARM8),它支持Thumb指令集,并含有EmbeddedICE模块以支持片上调试。

采用5级流水线以增加最高时钟速率

使用分开的指令与数据存储器端口以改善CPI

14. ARM11

ARM11处理器是为了有效的提供高性能处理能力而设计的 ,ARM并不是不能设计出运行在更高频率的处理器,而是,在处理器能提供超高性能的同时,还要保证功耗、面积的有效性。

15. ARM指令集与编程

ARM指令集总体分为6类指令

² 数据处理指令:数据传输指令,算术指令,逻辑指令,比较指令,乘法指令,前导零计数。

² 程序状态访问指令:mrs和msr。

² 跳转指令:b和bl。

² 访存指令:单数据访存指令,多数据访存指令,信号量操作指令。

² 异常中断产生指令:swi和bkpt。

² 协处理器指令。

16. 指令的特点

1.   所有的指令都是32bit

2.   大多数指令都可以条件执行

3.   Load/store体系结构

4.   指令集可以通过协处理器扩展

17. ARM指令格式

18. 处理器指令

数据传输指令:mov和mvn

算数指令:add、adc、sub、sbc,rsb和rsc

逻辑指令:and、orr、eor和bic

比较指令:cmp、cmn、tst和teq

19. Linux下的c程序编程

可使用以下命令行编译:

gcc -c my_hello.c

gcc -c file1.c 

gcc -o my_hellomy_hello.o file1.o

20. 嵌入式开发流程

调研 功能定位  芯片选择  原理图  印刷电路板  焊接  搭建开发环境  驱动开发和调研  电磁检测  样品  产品


第二篇:嵌入式系统linux总结


嵌入式实时操作系统复习提纲

一、基本概念

Linux内核主要是由进程调度、内存管理、虚拟文件系统、网络接口和进程间通信等组成。

3Linux用户进程

Linux系统定义了五种状态进程状态

从Linux的调度来看,支持非实时(普通)和实时两种进程。

5.考虑到中断处理的效率,Linux的中断处理程序分为两个部分:上半部(top half)和下半部(bottom half)。由外部设备引发的中断叫外部中断,处理器响应中断请求而执行的程序模块叫中断服务例程

6.交换机制:将不用或暂不用的页框中的页移出,装上新的页面;linux三级分页结构

7.进程的通信与同步机制有管道、信号、消息队列、共享内存和信号量集等el 中。Linux的管道有:匿名管道和命名管道;从信号的可靠性方面,信号可以分为:可靠信号和不可靠信号。

8.linux设备驱动注册的基本参数有设备名称,设备驱动的数据结构、设备号

 和  次设备号。lsmod 把现在 kernel 中已经安装的modules 列出来;insmod 把某个 module 安装到 kernel.

二、基本原理和方法

基于虚拟内存技术的程序执行两次映射:

Buddy算法-伙伴算法

Slab分配器思想

Linux内存管理的基本内容和步骤

Linux 内核的主要组成部分

Linux的中断处理程序

Linux系统进程调度的总体思想。

实时进程优先于普通进程,实时进程以进程的紧急程度为优先顺序,普通进程以进程平等占用CPU时间为基本调度原则。

Linux提供了两种实时调度策略SCHED_FIFO和SCHED_RR

linux使用的进程间通信方式:
(1)管道(pipe)和有名管道(FIFO)
(2)信号(signal)
(3)消息队列:msgget可以创建一个新队列或打开一个存在的队列.  msgctl类似于驱动程序中的ioctl函数, 可对消息队列执行多种操作. 调用msgsnd将数据放到消息队列中. 调用msgrcv将从消息队列中取消息.
(4)共享内存:

linux进程调用shmget(Shared Memory GET,获取共享内存)来分配一个共享内存块。shmat(SHared Memory Attach,绑定到共享内存)。shmctl("Shared Memory Control",控制共享内存)函数会返回一个共享内存块的相关信息。同时 shmctl 允许程序修改这些信息。

(5)信号量
(6)套接字(socket)

三、Linux调度程序理解

1. Linux使用内核函数goodness()对进程进行加权处理:

Static inline goodness (struct task_struct * pint this_cpu, struct mm_struct *this_mm)
{Int weight;

 Weight=-1;
 If (p->policy & SCHED_YIELD)// /*判断如果任务的调度策略被置为SCHED_YIELD的话,则置权值为-1,返回。

goto out;

If (p->policy==SCHED_OTHER) /*先对普通进程进行处理(由于多数是普通进程,这样做有利于提高系统效率)*/

{weight=p->counter;         /*返回权值为进程的counter值*/

If (! weight)
Goto out;
#Ifdef CONFIG_SMP

If (p->processor==this_cpu)

Weight+=PROC_CHANGE_PENALTY;

#Endif
If (p->mm==this_mm||! p->mm)
Weight+=1; /*对进程权值进行微调,如果进程的内存空间使用当前正在运行的进程的内存空间,则权值额外加1*/

Weight+=20-p->nice; /*将权值加上20与进程优先级nice的差。普通进程的权值主要由counter值和nice值组成*/
  Goto out;
}
Weight=1000+p->rt_priority; //对实时进程进行处理,返回权值为rt_priority+1000,确保优先级高于普通进程*/
Out:
return weight;}

2. linux 进程及管道应用实例

#include<stdio.h>

#include<unistd.h>

int main()

{

int n,fd[2];                         // 这里的fd是文件描述符的数组,用于创建管道做准备的
pid_t pid;
char line[100];
if(pipe(fd)<0)                     //   创建管道
   printf("pipe create error/n");

if((pid=fork())<0)              //利用fork()创建新进程
    printf("fork error/n");

else if(pid>0){                   //这里是父进程,先关闭管道的读出端,然后在管道的写端写入“hello world"
    close(fd[0]);
    write(fd[1],"hello word/n",11);
}
else{
    close(fd[1]);                 //这里是子进程,先关闭管道的写入端,然后在管道的读出端读出数据
   n= read(fd[0],line,100);
    write(STDOUT_FILENO,line,n);
}
exit(0);
}

Linux中的工作队列

工作队列(work queue)是Linux kernel中将工作推后执行的一种机制。这种机制和BH或Tasklets不同之处在于工作队列是把推后的工作交由一个内核线程去执行,因此工作队列的优势就在于它允许重新调度甚至睡眠。

工作队列是2.6内核开始引入的机制,在2.6.20之后,工作队列的数据结构发生了一些变化,数据结构:

 struct work_struct {

    unsigned long pending; pending是用来记录工作是否已经挂在队列上;

    struct list_head entry; entry是循环链表结构;

    void (*func)(void *); func作为函数指针,由用户实现;

    void *data; data用来存储用户的私人数据,此数据即是func的参数;

    void *wq_data; wq_data一般用来指向工作者线程(工作者线程参考下文);

    struct timer_list timer; timer是推后执行的定时器。

};

工作队列(work queue)API:

1、INIT_WORK(_work, _func, _data);初始化指定工作,目的是把用户指定的函数_func及_func需要的参数_data赋给work_struct的func及data变量。

2、schedule_work(struct work_struct *work)对工作进行调度,即把给定工作的处理函数提交给缺省的工作队列和工作者线程。工作者线程本质上是一个普通的内核线程,在默认情况下,每个CPU均有一个类型为“events”的工作者线程,当调用schedule_work时,这个工作者线程会被唤醒去执行工作链表上的所有工作。

3、schedule_delayed_work(struct work_struct *work, unsigned long delay);延迟执行工作,与schedule_work类似。

4、flush_scheduled_work(void);刷新缺省工作队列。此函数会一直等待,直到队列中的所有工作都被执行。

5、cancel_delayed_work(struct work_struct *work);并不取消任何延迟执行的工作,因此,如果要取消延迟工作,应该调用cancel_delayed_work。

针对Linux内核,如下机制严重地影响了实时性

Linux实时改造后的系统实时性较好,典型代表有:

Kurt-Linux,RED-LinuxRT-Linux、RTAI和Xenomai等。

RT-Linux中的实时任务在运行过程当中总是处于以下三种状态之一:

安装RT-Linux的方法和步骤

在基于Adeos的系统中,存在着A、B、C、D四种类型的交互。Linux内核和xenomai分别作为Adeos中的一个域存在。Linux内核负责非实时任务的调度,而xenomai采用不同于Linux的精度更高的定时中断来调度实时任务,实现更小的调度延时。另外,xenomai域的优先级高于Linux域。

Xenomai除了在内核层利用Adeos实现了硬实时外,它在用户空间也有很好的实时性。

xenomai的补丁及配置移植步骤

RT-Linux的实时内核的主要API

1)硬中断API

2)软中断API

3)内核实时线程编程API,主要有以下几个(在rtl_sched.h中声明):

4)要使用共享内存通信,需要在内核中插入mbuff.o模块,可以使用mubff_alloc() 和mbuff_free()函数申请和释放共享内存

5)RT-Linux提供的操作实时FIFO的API主要有(在rtl_fifo.h中声明):

几类常用的Xenomai 的native API

1、任务管理 

Xenomai 本身提供的一系列多任务调度机制,主要有以下一些函数: 

2、内存堆服务 

3、信息管道服务 

更多相关推荐:
嵌入式总结

一嵌入式系统原理与应用课程总结这个学期我学习了嵌入式原理与应用这门课程虽然这个学期马上就要结束了对嵌入式的学习也要告一段落了但是我觉得收获还是很大的学期开始我开始学习嵌入式系统及应用由于初次接触嵌入式系统感觉蛮...

嵌入式知识点总结

1什么是嵌入式系统嵌入式系统是嵌入式计算机系统的简称是一种嵌入在设备或系统内部的特定应用而设计开发的专用的计算机系统英国电气工程师协会IEE从应用角度定义嵌入式是控制监视或协助设备机器工厂运行的装置从技术角度看...

嵌入式系统总结

嵌入式总结1嵌入式系统的定义以应用为中心以计算机技术为基础软件硬件可裁剪适应应用系统对功能可靠性成本体积功耗严格要求的专用计算机系统2嵌入式系统的组成嵌入式微处理器嵌入式操作系统应用软件和外围设备接口的嵌入式计...

嵌入式总结

第一章1嵌入式系统定义以应用为中心以计算机技术为基础软件硬件可裁剪对功能可靠性成本体积功耗严格要求的专用计算机系统2四个基本要素1应用中心嵌入性2软硬件可裁剪3专用性4计算机系统3一般有以下五个四个部分组成硬件...

嵌入式总结

嵌入式系统总结嵌入式计算机嵌入式系统是专用计算机以核心部件的形式出现在各种装置设备产品和系统中例如监控设备移动电话家电机器人视听设备医疗设备等装置中所用的计算机嵌入式系统是以嵌入式应用为目的的计算机系统分为系统...

嵌入式系统知识点总结

1什么是嵌入式系统嵌入式系统是以应用为中心以计算机技术为基础采用可裁剪软硬件适用于对功能功耗体积大小可靠性等有严格要求的专用计算机系统2嵌入式计算机系统同通用型计算机系统的区别1嵌入式系统通常是面向特定应用而通...

嵌入式系统总结

第一章嵌入式系统概述1、嵌入式系统的定义、特点1)定义以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。2)特点a、极其关注成本b、对实时性有…

android嵌入式系统学习总结

重庆航天技术职业学院题目嵌入式系统Android选题性质设计报告其他院系电子系专业物联网班级120xx071学号20xx0027学生姓名钱硕20xx年6月12日重庆航天技术职业学院嵌入式系统设计报告书摘要随着手...

嵌入式总结

什么叫嵌入式系统以应用为中心以计算机技术为基础软件硬件可裁剪适应应用系统对功能可靠性成本体积功耗严格要求的专用计算机系统什么叫嵌入式处理器嵌入式处理器分为哪几类嵌入式处理器是为完成特殊的应用而设计的特殊目的的处...

嵌入式总结

1发展到现在常用的操作系统包括三大类分别为批处理系统分时系统和实时系统其中实时系统亦可分为硬实时操作系统和软实时系统2ARM7指令系统采用三级流水线指令分别包括取指译码和执行3OSTaskSuspendself...

嵌入式总结报告

嵌入式实验报告期末论文学生姓名杨佳洁学号11570118班级11计算机2班指导教师黄静20xx年5月20日嵌入式程序设计与应用课程主要以理论与实验结合的方式讲授包括设备驱动信号转换III帧缓冲设备驱动和触摸屏这...

嵌入式学习总结

嵌入式学习是一个循序渐进的过程如果是希望向嵌入式软件方向发展的话目前最常见的是嵌入式Linux方向关于这个方向我认为大概分3个阶段1嵌入式linux上层应用包括QT的GUI开发2嵌入式linux系统开发3嵌入式...

嵌入式系统总结(38篇)