- 博客(50)
- 资源 (15)
- 收藏
- 关注
原创 Centos7 升级php版本到php7
一、首先查看是否有老版本yum list installed | grep php二、如果安装的有yum remove php.x86_64 php-cli.x86_64 php-common.x86_64 php-gd.x86_64 php-ldap.x86_64 php-mbstring.x86_64 php-mcrypt.x86_64 php-mysql.x86_64 php-pdo.x86_64三、老版本清理干净之后,进行升级1、由于linux的yum源不存在php7.x,所以我
2021-05-28 13:13:53
408
原创 Ffmpeg实例,为视频添加一个循环播放的背景音乐
ffmpeg命令目录方案1(不推荐)(混声)ffmpeg -i E:\1\subtitle\out3.mp4 -i E:\1\subtitle\music3D.wav -filter_complex [1:a]aloop=loop=-1:size=2e+09[out];[out][0:a]amix -ss 0 -t 60 -y out.mp41//输入视频,最好选一个大于一分钟的尝试-i E:\1\subtitle\out3.mp4//输入背景音,最好短一点,方便测试是否循环-i E:\1\
2021-05-26 21:02:01
864
原创 5 文件系统(2)
5.2.1 磁盘系统最初级的文件系统就是“光溜溜”无任何“有用信息的”刚刚被格式化的磁盘。由于更多的读者没有实际的开发平台,也只好来玩个虚的。下面将详细介绍如何构建一个光溜溜的初级文件系统。baishw@debian:~$ mkdir eprojectbaishw@debian:~$ cd eproject/baishw@debian:~/eproject$
2010-04-24 21:42:00
1106
原创 5 文件系统
5 文件系统文件系统是嵌入式系统必要组件。如果从高层次来分,整个嵌入式系统可以分为有形的硬件部分和以及无形的软件/数据部分,那么所有软件/数据能够在存储介质上的有序存在并且能够通过操作系统管理,这些就归功于文件系统。换句话说,文件系统由1) 数据在存储介质上存储的数据结构;2)提供这种数据结构管理的软件;3)以及通过这种数据结构保存的数据资源构成的整体被称为文件系统。本章内容将围绕文
2010-04-23 22:35:00
806
原创 你知道多少嵌入式Linux系统开发所需要的知识?
如果你是一个嵌入式Linux方面的expert,你最想告诉别人什么知识?如果你是一个嵌入式Linux方面的初学者,你最想学到什么知识?本人最近在写一个关于Linux开发的资料,如果你能够提供上面的答案,或者是可以帮忙指点下面的结构,不胜感激! 前言--- 2目录--- 3概述--- 6第一部分 基本知识--- 71 GNU和Linux- 81.1.
2010-04-21 14:17:00
1276
原创 嵌入式实时Hypervisor:XtratuM (15)
2.8.3 任务切换任务切换是任务处理的始端,通常是对任务的地址空间、栈、寄存器等资源进行切换,它涉及到机器的底层,几乎全部由汇编指令完成。任务切换的效率,直接影响到系统的调度延迟,并且,并且与寄存器的使用情况有关。在XtratuM移植过程中,由于笔者就被该问题困扰,因此在这段内容详细介绍一下任务切换,或者是域切换。正如前面所述,每一个域有一个域控制块(DCB,Domain Control Blo
2010-01-29 23:55:00
1050
原创 嵌入式实时Hypervisor:XtratuM (14)
2.8 系统移植系统移植的目的是将XtratuM向不同的Linux内核上面移植,从而可以让XtratuM支持多种Linux内核。早期,XtratuM是在Linux-2.6.17-4的内核上。现在我们已经成功将XtratuM移植到了多种Linux内核上。图2-19给出了XtratuM当前支持的内核版本。图2-19. XtratuM支持的Linux内核由于XtratuM运行在整个系统的低端,尤其是对底
2010-01-29 23:53:00
1287
原创 嵌入式实时Hypervisor:XtratuM (13)
2.7.2 UART驱动上面一节中介绍了XtratuM驱动模型的架构。那么如何利用XtratuM驱动模型去创建和添加设备驱动呢?这就是接下来要讲的内容,基于XtratuM驱动模型的UART驱动。2.7.2.1 UART设备串口是一种串行通信物理设备,每一个周期信息只能读入或者写出一个位。通常,串口用来连接个人计算机和嵌入式开发板,用来调试设备或程序。由于串口每次只能读/写一位数据,因此传输能力相对
2010-01-29 23:48:00
907
原创 嵌入式实时Hypervisor:XtratuM (12)
2.7 设备驱动模型根据设备驱动程序运行的状态,当前有两种类型的驱动模型。在第一种模型中,驱动以模块的方式在系统内核中,通常桌面操作系统和大型服务器操作系统采用这种模型,例如Linux、UNIX、Windows XP等[44]。另外一种模型是将设备驱动线程化,就是驱动程序作为可被调度的线程运行,通常由事件驱动,采用这一类设备驱动模型的一般是实时嵌入式操作系统或者是微内核操作系统,例如L4、QNX等
2010-01-29 23:46:00
1119
原创 嵌入式实时Hypervisor:XtratuM (11)
1.1.1 共享内存共享内存(Share Memory)是类似FIFO的数据传输设备[43]。共享内存采用的主要技术是内存映射。在共享内存中,由于所有高层的虚拟内存都基于底层物理内存,因此,物理内存是共享内存系统中最重要部分。在XtratuM系统中,物理内存是由Linux内核管理,因此,系统可以采用Linux内核APIs分配物理内存。为了提高系统分配物理内存的效率和成
2009-10-30 00:11:00
908
原创 嵌入式实时Hypervisor:XtratuM (10)
1.1.1.1 FIFO/XM V2.0与FIFO/XM V1.0相比,FIFO/XM V2.0有两处改进,1)Lock-Free机制的使用避免了阻塞竞争机制的使用,2)将FIFO模块从XtratuM内核中分离。在FIFO/XM V1.0中,基于阻塞机制的信号量和中断屏蔽被使用,从而降低了系统的吞吐率和事件相应速度。尤其是低优先级域可能阻塞高优先级域,从而引起实时域
2009-10-30 00:09:00
1007
原创 嵌入式实时Hypervisor:XtratuM (9)
1.1 域间通信工具为了提高域之间的作业协作能力,域间通信(Inter-Domains Communication)工具被引入到XtratuM Hypervisor系统中。当前,XtratuM系统中存在两种数据通信工具,一种是针对数据流的命名管道(FIFO),另外一种是针对块数据的共享内存。命名管道是一种简单的流数据传输工具,采用先进先出的策略,不同于PIPE(管道),命名
2009-10-30 00:08:00
1098
原创 嵌入式实时Hypervisor:XtratuM (8)
1.1 内存管理内存管理主要包含两个方面,一个是内存分配,另一个是内存映射。在XtratuM系统开发和移植过程中,内存分配问题主要体现在每个域或客户操作系统内部,例如PaRTiKle系统采用TLSF(Two-Level Segregate Fit)算法。关于TLSF算法,读者可以参考[36]。本节的内容主要包含域中内存使用类别和内存映射机制。现阶段,在Xtratu
2009-10-30 00:07:00
1024
原创 嵌入式实时Hypervisor:XtratuM (7)
1.1 Hypercall系统调用是通用操作系统提供的一种重要机制,系统调用将操作系统分为两个部分:内核空间和用户空间。用户程序可以通过系统调用接口从用户空间陷入内核空间,这种机制有助于虚拟内存的实现,并且还可以提高系统的可靠性、安全性、健壮性。在XtratuM系统中,Hypercall是一种类似于系统调用的机制,它是上层域从用户空间陷入Hypervisor Kern
2009-10-30 00:01:00
1272
原创 嵌入式实时Hypervisor:XtratuM (6)
第1章 XtratuM HypervisorHypervisor通常由多个组件构成,客户操作系统管理器,用于创造、删除、监视客户操作系统;调度器,由于调度客户操作系统;中断管理,响应和处理硬件中断和陷阱;Hypercall, 处理由上层发送的同步服务请求,类似于操作系统中的系统调用;系统时钟管理器,为系统提供高精度时钟服务,对底层硬件时钟设备可以读写;虚拟时钟,为上层客户操作系统提供高精度时
2009-09-27 23:06:00
2611
原创 嵌入式实时Hypervisor:XtratuM (5)
1.4 文章结构XtratuM系统是一个特殊的Hypervisor。首先,它不同于传统的应用于企业级或个人用户场合的Hypervisor。这些领域的Hypervisor的研究重点在于系统的安全性(Security),硬件资源的利用率。另外,XtratuM系统是针对实时系统领域的应用需求进行的设计,其具有硬实时任务事件响应能力,但是与传统的实时系统相比,其结构和设计有本质区别
2009-09-27 23:05:00
1449
原创 嵌入式实时Hypervisor:XtratuM (4)
1.3 研究内容XtratuM Hypervisor是超微内核技术与准虚拟化技术结合的产物,它是典型的I型Hypervisor系统。超微内核技术是一种操作系统内核结构,它类似于微内核技术,与微内核系统相比,它将一些“冗余”的功能模块从内核中移除,系统内核负责底层最基本的中断管理、物理时钟管理、以及实时任务调度(用于调度上层应用任务或操作系统)。因此,也有人将XtratuM视
2009-09-27 23:04:00
2166
原创 嵌入式实时Hypervisor:XtratuM (3)
1.2 研究意义Hypervisor出现的早期是被应用到大型服务器中,伴随着Hypervisor技术的发展和推广以及硬件设备的发展,Hypervisor逐渐被应用于个人桌面计算机环境中,近几年,Hypervisor又逐渐在嵌入式环境中蔓延。显然,Hypervisor具有一定的价值或优点,才得以在这三种环境中生存和发展。下面列出了Hypervisor技术的优点以及可以解决的问
2009-09-27 23:01:00
1934
原创 嵌入式实时Hypervisor:XtratuM (2)
第1章 绪 论1.1 研究现状Hypervisor也被称作虚拟机监控器(VMM,Virtual Machine Monitor),它是一个基于计算机硬件平台的软件(可以是系统软件也可以是应用软件),允许多个操作系统在一个硬件平台上并行运行。Hypervisor系统被分为两类:I型和II型[1]。在I型中,Hypervisor作为系统软件直接运行于主机硬件之上,
2009-09-27 22:55:00
2584
原创 嵌入式实时Hypervisor:XtratuM (1)
摘 要本论文是作者对XtratuM Hypervisor进行学习和研究的工作总结,涵盖了作者为XtratuM Hypervisor所做的研究内容:中断管理、Hypercall、任务管理、虚拟内存管理等模块向不同Linux内核上的移植,域间通信工具、设备驱动模型的设计和实现,基于XtratuM Hypervisor的应用实例(冗余实时控制系统)开发,XtratuM Hypervisor系统的重
2009-09-27 22:47:00
2436
原创 如何制作虚拟磁盘镜像和文件系统(英文版)
DISKIMAGE for qemu HOWTOShuwei Bai bai_shuwei@weslab.com>The document showes how to build a disk image for qemu. I dont know whether it will work for all the platform, but I hope so :). I will be g
2009-09-17 21:53:00
4436
原创 MISRA 2004 (先前作者写的MISRA文档是基于 1998版本,这个是基于更新的MISRA 2004版本)
汽车行业软件可靠性联盟(MISRA:Motor Industry Software Reliability Association)的使命为了提高车辆系统中软件的安全性和可靠性,是对汽车工业的软件应用和开发提供相应支持和帮助。MISRA-C的早期目的是为了指导汽车行业中C语言软件的开发,但是,从1998年,MISRA-C已经在汽车工业、航空航天、医疗设备、以及其它工业环境中得到应用和发展。MI
2009-09-17 21:48:00
1460
原创 MISRA C指导指南解读系列10(MISRA C规则114-127)
2.1. 标准库114.保留字和标准库函数不能重新定义或取消定义(R) 在C语言中存在一些保留标识符和函数名,在应用软件中,不能随意重新定义或者取消这些定义。例如在C语言中,存在一些重要的宏和变量:__LINE__,__FILE__,__FILE__,__DATA__,__TIME__,__STDC__,errno等。#define __LINE
2009-05-07 15:08:00
2088
1
原创 MISRA C指导指南解读系列9(MISRA C规则101-113)
2.1. 指针和数组101.不能对指针进行算术操作(A) 本条的目的是为了防止指针指向无效的内存空间。例如void myfunc(void) { int *a; int *b; int arr[10]; a = arr; a ++; /* 与规则冲突 */
2009-05-06 16:11:00
1438
原创 MISRA C指导指南解读系列8(MISRA C规则87-100)
2.1. 预处理87.文件中#include语句前面只能是其它的预处理语句或注释(R) 例如: static int a; #include /*与规则87冲突*/ ……88.非标准字符不能出现在#include语句的头文件名称中(R)
2009-05-05 13:41:00
1786
原创 C语言中逻辑运算符(&&,||,!)和位运算符号(&,|,^)的区别
1. C语言中逻辑运算符(&&,||,!)和位运算符号(&,|,^)的区别在C语言中,编程者经常混淆两组运算符:(&&,||,!)和(&,|,^)。第一组是逻辑运算符,它的操作数是布尔型,而第二组则是位运算符,其操作数是位序列。在布尔型操作数中,只有两个数值,0或1。C语言规定,在逻辑运算中,所有的非0数值都看做1处理。而位序列则可以是有无符号的字符型,整型,长短整型等。在位运算
2009-05-05 13:40:00
57242
1
原创 MISRA C指导指南解读系列7(MISRA C规则68-86)
2.1. 函数68.函数的声明应该是在文件的范围内(R) 例如 void myfunc(void) { extern int call(void); /* 违反规则68 */} 69.函数不能使用可变参数格式的样式(
2009-05-04 13:58:00
1643
原创 MISRA C指导指南解读系列6(MISRA C规则46-67)
2.1. 表达式46.在标准的允许下,在任何赋值序列的情况下表达式的值应该一样(R) 该规则的目的是避免由表达式引起的对变量的边缘影响。 例如: int myfunc(){ int i = 1; int a = 2; a = (i++) + (i--);
2009-04-29 17:16:00
1360
原创 MISRA C指导指南解读系列5(MISRA C规则33-45)
2.1. 操作符33.&&和||右边的操作数不应该含有边缘影响(R) int myfunc1(void);int myfunc(void) { int is; int x; if( is && ( x ++ == 3))
2009-04-28 11:30:00
1312
原创 MISRA C指导指南解读系列4(MISRA C规则20-32)
2.1. 声明和定义20.所有的对象和函数标识符在使用前必须声明(R)21.内部标识符不能与外部标识符具有相同的名称,从而隐藏的外部标识符(R) 例如 static int a; int myfunc(void) { int a; /* 违反该规则 */}22.对象的声明应该在
2009-04-28 10:59:00
1578
原创 二进制浮点数向十进制浮点数的转换
二进制浮点数向十进制浮点数的转换IEEE给出了一套浮点数值的标准,即IEEE 754。该标准给出了单精度(32位)和双精度(64位)浮点数值的表示方法以及如何对其进行操作。本文简单的给出了从二进制的浮点数到十进制浮点数的转换算法。根据IEEE 754,浮点数的二进制存储格式被分为三个部分:符号位,指数位和数据位。单精度和双精度浮点数的区别除了总位数长度的区别之外就是基于该长度对其三个
2009-04-22 21:09:00
16760
1
原创 MISRA C指导指南解读系列3(MISRA C规则11-19)
2.1. 标识符11.标识符不能依赖于多于31个字符的意义。编译器和链接器应该可以支持31个字符的外部标识符(R)12.不同域名空间的标识符的名称应该具有不同的拼写,结构体成员除外(A)2.2. 类型13.基本的类型,char,int,short,long,double,和float不应该被使用。应该使用编译器通过typedef定义
2009-04-21 16:43:00
2284
原创 MISRA C指导指南解读系列2(MISRA 规则 1- 10)
1. MISRA C:1998规则MISRA C 1998共包含17种类别,127条规则,这一节中,我们将详细介绍这17种分类和127条规则,其中R—Request,A—Advisory 2.1. 环境1.所有的代码应该遵循ISO 9899标准,不允许扩展(R) typedef void (*myFptr)(); void foo()
2009-04-20 17:23:00
2736
原创 MISRA C指导指南解读系列1(MISRA C是什么)
MISRA C是由MISRA组织制定的针对C语言的软件开发标准。它的目标促进C代码在嵌入式系统中的安全性、可移植性和可靠性,明确表明这些系统需要使用ISO C。第一个版本的MISRA标准是“Guideline for the use of the C language in vehicle based software”,该标准于1998年发布,官方命名为MISRA-C:1998在2
2009-04-19 19:28:00
3533
1
原创 三元符(trigraphs)
C语言的字符集是ISO 646-1983代码集的超集,三元符允许C程序只通过ISO 646-1983代码集进行编写。但是在ISO 646-1983代码集中并不支持一些符号,通过三元符可以使ISO 646-1983代码集合表示相应的C语言字符符号。三元符是一种由三个字符构成的字符串,当编译器解释的时候首先会将三元符转换成当个字符。下面有一个表格记录了所有的三元符和其对应的标点符号。三元符
2009-04-17 21:12:00
4257
原创 Real-Time Linux 系统
在没有介绍我们的主角之前,我们先来看看什么是实时系统和Linux系统。这里的实时系统指的是实时操作系统,通常情况下,操作系统从实时性能上被分为三种,硬实时操作系统,软实时系统以及非实时系统。通常情况下,硬实时操作系统对时间要求严格,任何硬实时任务的失败都可能导致无法估测的损失和伤害,这种操作系统通常被用在航空,国防,控制等领域。软实时系统的任务失败较之硬实时系统的危害性要小许多,通常我们用到的多
2009-02-18 17:14:00
5216
原创 C 语言中 const 关键字介绍
const的使用虽然比较低,但是在笔试中却是一个频率很高的考点,那么如何迅速掌握和理解const呢?在这里给大家介绍一种简单的舍去法。就是看到const的时候,1)首先舍弃const, 得到一个普通的声明;2)然后舍弃const右面的const标志标志以及其它的关键字;3)接下来就是将const右面所有的*和变量用一个新变量代替,单个字符不用被取代,那么这个新变量就是const作用对象。例
2008-11-16 14:31:00
837
原创 void (*f(int, void (*)(int)))(int) 函数解析
函数指针 今天与几个同学看到了一个函数指针定义: void (*f(int, void (*)(int)))(int) 以前在C trap pit fails里面见过,但是文章里面介绍的很详细,但是往往使初学者抓不到重点, 结果弄的一头污水。这里就简单介绍一下这中函数指针的定义方法。 什么是函数指针? 这个问题从定义的角度来看很好理解,指向函数的指针就
2008-11-03 15:38:00
12975
2
原创 缓存溢出问题简述
缓存溢出 缓存溢出(Buffer overflow),是指在存在缓存溢出安全漏洞的计算机中,攻击者可以用超出常规长度的字符来填满一个域,通常是内存区地址。这篇文章就是讲解简单的缓存溢出问题。文章以x86_32 和 linux 系统平台为蓝本。为了介绍缓存溢出,数据的存储地址、主要的汇编指令、重要的寄存器等内容都要讲解。 1. 变量存储在C语言中,变量属性有很多中,但是
2008-11-02 19:21:00
3612
xtratum实时Hypervisor
2012-08-10
嵌入式实时Hypervisor:XtratuM
2010-03-06
java新手教程.chm
2008-11-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人