面试中问到 RT-thread嵌入式操作系统相关的问题 RT-thread操作系统调度器的实现细节 RT-Thread中提供的线程调度器是基于优先级的全抢占式调度: 在系统中除了中断处理函数.调度器上锁部分的代码和禁止中断的代码是不可抢占的之外,系统的其他部分都是可以抢占的,包括线程调度器自身. 系统总共支持256个优先级(0 - 255,数值越小的优先级越高,0为最高优先级,255分配给空闲线程使用,一般用户不使用. 在一些资源比较紧张的系统中,可以根据实际情况选择只支持8个或32个优先级的系…
1引言 嵌入式系统定义义为:嵌入到对象体系中的专用计算机系统."嵌入性"."专用性"与"计算机系统"是嵌入式统的三个基本要素,对象系统则是指嵌入式系统所嵌入的宿主系统.目前,随着高端消费类电子产品(如PDA.手机.智能家电)的普及,嵌入式计算机系统获得了相当广泛的应用. 操作系统在嵌入式软件体系中占据着重要低位,学习和掌握相关的知识是一名嵌入式系统研发人员的必须. 1.1本文的读者对象与写作目的 本文针对的读者对象为入门级的嵌入式系统软件开发人员…
学习STM32,你不得不了解的五大嵌入式操作系统                                                  原标题:学习STM32,你不得不了解的五大嵌入式操作系统 基于STM平台且满足实时控制要求操作系统,有以下5种可供移植选择.分别为μClinux.μC/OS-II.eCos.FreeRTOS和rt-thread.下面分别介绍这五种嵌入式操作系统的特点及不足,通过对比,读者可以根据自己的应用需求选择合适的平台. TOP1:μClinux μClinux…
嵌入式操作系统VxWorks中网络协议存储池原理及实现 周卫东 蔺妍 刘利强 (哈尔滨工程大学自动化学院,黑龙江 哈尔滨,150001) 摘  要  本文讨论了网络协议存储池的基本原理和在嵌入式操作系统中的实现方法.为在嵌入式系统中实现TCP/IP协议栈,提供了一种有效.简洁.可靠的缓冲区管理. 关键词  VxWorks; mBlk; clBlk; 网络协议存储池 VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS).它以良好的持续发展能力.…
时间:2005-02-20 来源:21IC中国电子网 作者:771所加固机工程部 蔡本华 高文炜 关键字:VxWorks   TFFS   嵌入式操作系统   文件系统       摘要:目前的嵌入式系统多使用FLASH作为主存,因此,如何有效管理FLASH上的数据非常重要.文章以MX29LV160BT芯片为例,讨论了在VxWorks操作系统下Nor Flash上建立TFFS文件系统的一般步骤,从而为FLASH上的数据管理提供了理想的选择方式,同时也为开发者和用户升级程序提供了方便. 关键词:V…
左侧部分已是历史的操作系统,右侧的还是活跃的操作系统.安卓系统Android 是Google开发的基于Linux平台的开源手机操作系统.它包括操作系统.用户界面和应用程序-- 移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍.iOSiOS是由苹果公司开发的移动操作系统[1].苹果公司最早于2007年1月9日的Macworld大会上公布这个系统,最初是设计给iPhone使用的,后来陆续套用到iPod touch.iPad以及Apple TV等产品上.iOS与苹果的Mac…
 原创文章,转载请注明出处! 现世面上流传着很多嵌入式操作系统,都已经非常优秀,但本人(Sam的博客-博客园)还是自己编写了一个RTOS,不敢说优秀,但绝对是使用起来最简单的.先看一个工程截图与一段main.cpp代码 #include "os.h" // 包含OS osThread Task1; // 定义一个任务 TACK_DEF(Task1Stk,); // 为任务1定义一个栈空间 osMutex m1; // 定义一个互斥量 void Fun1(void){ m1.Wait()…
[这个是汇总] 最近有点时间,参加了EEPW论坛和悠龙咨询组织的一个嵌入式操作系统uTenux试用活动.本来想借助这个活动提供的开发板做一个小项目,奈何OS使用功底太次.于是,这个活动被我降低到了学习嵌入式OS使用的档次. uTenux虽然没有uCOS那么出名,但是麻雀虽小五脏俱全.各种嵌入式操作系统的要素都有包含.可能会有些缺点,但是对于一个学习OS使用,而不是研究内核的人来说,完全是不需要关心的东西. 本文是一个汇总,是对我在学习uTenux时候做的一些实验的整理.以下是各个实验的链接: 1…
2013-11-14 最近在看<一步一步写嵌入式操作系统>,感觉此书甚好,许多地方讲得很清楚.可操作性强,计划边读边实践边写笔记,希望能够逐步熟悉嵌入式操作系统底层的东西,最终剪裁出一套实用的实时嵌入式操作系统,备选的裁剪对象有ucos.RTlinux和uClinux. SkyEye介绍 “SkyEye是一个指令级模拟器,可以模拟多种嵌入式开发板,可支持多种CPU指令集,在SkyEye上运行的操作系统意识不到它是在一个虚拟的环境中运行,而且开发人员可以通过SkyEye调试操作系统和系统软件.由…
本文通过一个Demo,讲解如何通过C#获取操作系统相关的信息,如内存大小,CPU大小,机器名,环境变量等操作系统软件.硬件相关信息,仅供学习分享使用,如有不足之处,还请指正. 涉及知识点: Environment 提供有关当前环境和平台的信息以及操作它们的方法. ManagementClass 表示公共信息模型 (CIM) 管理类.管理类是一个 WMI 类,如 Win32_LogicalDisk 和 Win32_Process,前者表示磁盘驱动器,后者表示进程(如 Notepad.exe).通过…
php intval的取值范围:与操作系统相关,32位系统上为-2147483648到2147483647,64位系统上为-9223372036854775808到9223372036854775807. mysql int取值范围:与操作系统无关,为-2147483648到2881064151,无符号为0到4294967295. mysql bigint取值范围:与操作系统无关,为-9223372036854775808到9223372036854775807,无符号为0到1844674407…
本实验基于正点原子stm32f4探索者板子 请移步我的RT Thread论坛帖子. https://www.rt-thread.org/qa/forum.php?mod=viewthread&tid=422726&page=1&extra=#pid469704 下一步有多个选项: 1.精读生成的keil工程代码                                  2.可在此基础上去使用文件系统,参考文章:                                …
串口通讯例程 通过上面的练习,对STM32项目开发有了一个直观印象,接下来尝试对串口RS232进行操作. 1.   目标需求: 开机打开串口1,侦听上位机(使用电脑串口测试软件)发送的信息,然后原样输送到串口1. 2.   创建项目 a)   禁用Finsh和console b)   默认情况下,项目文件包含了finsh,它使用COM1来通讯,另外,console输出(rt_kprintf)也使用了COM1.因此,在运行scons命令生成项目文件之前,修改rtconfig.h,禁用这两项.(下图…
首先使用相关软件制作u盘启动盘,将所需要的系统镜像安装到u盘中 此时u盘中会出现一个EFI区(window可以看到,window7看不到,可以隐藏) 简单来说这个EFI分区中装的是一个低价的操作系统,PE系统,电脑U盘启动时EFI引导进入PE 把PE理解成一个:直接光盘运行的.功能强大的.精简版XP系统 Windows PE的全称是Windows Preinstallation Environment,即Microsoft Windows 预安装环境,是一个基于保护模式下运行的Windows X…
1.   创建项目 a)   禁用Finsh和console b)   默认情况下,项目文件包含了finsh,它使用COM1来通讯,另外,console输出(rt_kprintf)也使用了COM1.因此,在运行scons命令生成项目文件之前,修改rtconfig.h,禁用这两项.(下图L65, L70) c)   生成项目文件 运行scons --target=mdk4 –s 打开生成的项目文件,可以看到,文件组finsh已经不再被包含进来了. d)   创建echo.c 新建一个C文件echo…
近段时间在学数据库,因为自身需求,所以注重研究了点嵌入式sqlite数据库,SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl.C#.PHP.Java等,还有ODBC接口,同样比起Mysql.PostgreSQL这两款开源世界著名的数据库管…
玩转Linux操作系统 操作系统发展史 只有硬件没有软件的计算机系统被称之为"裸机",我们很难用"裸机"来完成计算机日常的工作(如存储和运算),所以必须用特定的软件来控制硬件的工作.最靠近计算机硬件的软件是系统软件,其中最为重要的就是"操作系统"."操作系统"是控制和管理整个计算机硬件和软件资源.实现资源分配和任务调配.为系统用户以及其他软件提供接口和环境的程序的集合. 没有操作系统(手工操作) 在计算机诞生之初没有操作系统的…
作者:Top Liu链接:https://zhuanlan.zhihu.com/p/30391098来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 本文是易科机器人实验室张瑞雷老师整理的ROS机器人操作系统的相关书籍.资料和学习路径,想学习这方面技术的同学一定要收藏了. ROS机器人相关书籍与资料(更新日期2017年10月) ROS发展10年了,已经逐渐成为通用的机器人操作系统标准. 之前写过一篇博文总结过相关书籍(流行版本和相关书籍汇总),但是并没有具体介绍.…
RTGUI 据说RTGUI是多线程的,因此与RT-Thread OS的耦合度较高,有可能要访问RT-Thread的线程控制块.如果要移植到其它OS,估计难度较大.目前还处于Alpha状态,最终将会包含进RT-Thread中,成为其中的标准组件. 1.  RTGUI下载 当前,要获取包含RTGUI的源码,需要到SVN库里去拉. 因此,需要先安装SVN客户端.比较简单的就是命令行,当然你也可以其它选择. 这里使用Apache Subversion command line tools,下载地址:ht…
1.  补注 a)      硬件,打通通讯通道 若学习者购买了学习板,通常可以在学习板提供的示例代码中找到LCD的相关驱动代码,基本上,这里的驱动的所有代码都可以从里面找到. 从上面的示意图可见,MCU要在LCD上显示内容,需要经过: 1.  Core 2.  Dbus,SystemBus 3.  Bus Matrix 4.  FSMC 5.  SSD1963 6.  LCM 驱动LCD,就要相应地将这些通道开启,初始化,只要其中一个环节未打通,就不可能成功点亮LCD屏. 首先是到SSD196…
查看操作系统位数 命令:  getconf LONG_BIT root@hbg:/# getconf LONG_BIT 64 查看操作系统信息 命令: lsb_release -a root@hbg:/# lsb_release -aNo LSB modules are available.Distributor ID: DebianDescription:    Debian GNU/Linux 8.1 (jessie)Release:        8.1Codename:       je…
在工作过程中,如果大家接触的操作系统比较多的话,会发现aix,hpux,CentOS,Redhat命令上都有一定的差异,实则是操作系统内引用的bash(Bourne-Again SHell)不一样,现在有个问题,操作系统内的bash是否可以修改?如果可以修改,修改完,操作系统也跟着发生改变吗?还是只是命令发生改变?…
本文以stm32f4xx平台介绍串口驱动,主要目的是:1.RTT中如何编写中断处理程序:2.如何编写RTT设备驱动接口代码:3.了解串行设备的常见处理机制.所涉及的主要源码文件有:驱动框架文件(usart.c,usart.h),底层硬件驱动文件(serial.c,serial.h).应用串口设备驱动时,需要在rtconfig.h中宏定义#define RT_USING_SERIAL. 一.RTT的设备驱动程序概述 编写uart的驱动程序,首先需要了解RTT的设备框架,这里以usart的驱动来具体…
1.获取操作系统版本(PC,PDA均支持) Environment.OSVersion 2.获取应用程序当前目录(PC支持) Environment.CurrentDirectory 3.列举本地硬盘驱动器(PC支持) string [] strDrives=Environment.GetLogicalDrives(); foreach(string strDrive in strDrives) { }4.获取.Net Framework版本号(PC,PDA均支持) Environment.Ve…
package com.hikvision.discsetup.util; import java.lang.reflect.Field; import java.net.InetAddress; import java.net.UnknownHostException; import java.text.DecimalFormat; import java.util.Map; import java.util.Properties; import org.hyperic.sigar.CpuIn…
1.安装 三种网络类型 修改密码 重启unbuntu系统,出现starting启动界面后,长按shift键. 出现如下引导界面: (注意:这里保持默认的选项就行,即白色横条选择在*Ubuntu上,不要用上下键移动选择其他选项) 英文版界面: 中文版界面: 按:E,进入编辑模式. 到如下位置,将红框中原内容 改成如下: 即:rw init=/bin/bash 按:F10 启动,即进入Ubuntu单用户模式:输入修改密码命令:passwd 按照提示输入,新的密码 (系统默认不显示) 修改其他用户密码…
DodoBox是为广大应用开始者提供的一个跨平台应用发布平台.它提供了客户端和服务器端的SDK及详细的开发者帮助文件,帮助开发者创建.移植软件应用或游戏应用. DodoBox基于OpenGL技术,提供了简单,高效的开发接口,方便开发者使用. DodoBox的应用使用标准的C/C++语言开发,开发者使用DodoBox提供的专用编译工具编译.测试完成后即可以发布到DodoBox平台上了. 目前DodoBox已经集成少量的游戏及应用,欢迎大家使用. 网站 www.mydodobox.cn…
4 任务与任务状态 VxWorks实时内核Wind提供了基本的多任务环境.对用户而言,宏观上看起来,多个任务同时在执行.而本质而言,在微观上,系统内核中的任务调度器总是在根据特定的调度策略让它们交替运行.系统调度器需要使用任务控制块(TCB)数据结构来管理任务调度功能,TCB被用来描述一个任务.TCB中存放了任务的上下文(context)信息,主要包括程序计数器PC.CPU内部寄存器.浮点寄存器.堆栈指针SP.任务信息等.每一任务都与一个TCB关联,当执行中的任务被停止时,任务的上下文信息需要被…
一.打印函数简介 作用:将“给定的内容”按照“指定的格式”输出到“指定目标内”. 打印函数的基本格式: char print_buf[BUF_SIZE]; void printf(const char *fmt, ...) { va_list ap;//定义一个指针变量 unsigned int i; va_start (ap, fmt); i = vsprintf (print_buf, sizeof(print_buf),fmt, ap); va_end (args); __put_char…
1.保存I/O流 下面这段代码cout会失效,原因是cout重定向之后失效. #include <iostream> #include <fstream> using namespace std; //using namespace boost; int main() { string filename("c:/test.txt"); cout << "log start" <<endl; if (!filename.…