‘壹’ 为什么称FreeRTOS为轻量级OS,和linux相比,有哪些具体的区别
简单地说,Linux是一套免费使用和自由传播的类Unix操作系统,它主要用于基于x86系列CPU的计算机上。这个系统是由世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。其最大的缺点就是开源! Mac系统是苹果机专用系统,是基于Unix内核的图形化操作系统,一般情况下在普通pc上无法安装的操作系统。 Microsoft开发的Windows是目前世界上用户最多、且兼容性最强的操作系统。 Windows、Linux和Mac的编译程序比较,这些操作系统所使用的文件系统各不相同且差异极大。它们使用的磁盘、目录、文件和路径表示方式也完全不同。
Windows、Linux和Mac平台上的桌面(图形用户界面)程序、控制台(“DOS外观”,字符用户界面)程序或服务器(或后台)应用程序(无界面)大不同。
Mac OS X操作系统中采用的BSD核心被人们称作Darwin(达尔文)。它是一个完全独立的组件。Darwin软件本身来自于NeXT公司开发的NextStep操作系统的BSD层。NeXT公司是史蒂夫?乔布斯在80年代离开苹果公司之后创建的。从技术上说,Mac OS X操作系统是以FreeBSD内核为基础的。OS X 10.3是以FreeBSD 5.x为基础的。然而,Mac OS X已经超出了基本的BSD代码,完全是个性化设计的。Mac OS X的关键优势在于其Aqua GUI(图形用户界面)。这个图形界面能够让OS X系统像原来的Mac OS X操作系统一样运行,但是同时具有一个高效率的BSD内核的全部优点和灵活性。
与Windows操作系统和Mac OS X操作系统不同的是,Linux操作系统拥有两套主要的图形接口。两种接口表现为不同的项目如控制面板,将剪切与粘贴操作复杂化,并要求程序员必须知道他们所用的各种成分如对话框或者下拉菜单是以什么作为基础的。 尽管三种操作系统各有特点,但一些特点比其他特点更重要一些。微软之所以成为操作系统之王的原因是,它明白“成本为王”这一道理,它的操作系统能够在任意数量的PC上使用,因此成本低于Mac OS。Linux没有受到成本的影响,因此,尽管Mac OS目前是第二大台式机操作系统,但Linux一定能够取而代之,时间也许就在2年内。但在超越Mac OS之前,Linux需要拥有一个“易于使用而且与Windows没有差别的”图形用户界面,考虑到市场规模,这一点一定能够实现。 我的电脑装了windows XP和 Linux Ubuntu10.04双系统!
‘贰’ freertos和ucos哪个更适合于学习
个人认为uCOS更适合作为学习RTOS的。它提供了完整的C源代码,在多种CPU上移植的例程,完整的讲义。这些都是学习必须的。
‘叁’ 如何将linux下的程序,移植到freertos中
方法/步骤
嵌入式操作系统有分时操作系统和实时操作系统,如果操作系统能够使计算机系统及时响应外部事件请求,并能控制所有实时设备和实时任务协调运行,且能在一个规定的时间内完成对事件的处理,怎么这种系统称为实时操作系统。
如果系统必须在极其严格的时间内完成的任务叫做硬件的实时操作系统,如果不是很严格的话就是软件的实时操作系统。
‘肆’ Cube FreeRTOS操作系统Task优先级与中断优先级的关系是怎样的
这个不应该吧,基本的FreeRTOS怎么可能占32K,是你的keil没有许可码吧,32K绝对是装的下的,应该FreeRTOS只有十几K(我只用用过RTT,FreeRTOS是官方自带的我编译过没有那么大);Flash选64或者128的就够了。”嵌入式系统“和”操作系统“不是一个概念。如果你说的是操作系统,可以的。一般微控制器用在工业控制领域,需要对外界事件快速做出反应,一般安装的是实时操作系统。常见的有VxWorks(NASA的航天设备用的)uClinux(有些路由器里面的),FreeRTOS,uC/OS等。
‘伍’ freertos可不可以链接c++编译的库
单个动态库可以有两个同名函数,但是不能同时导出来,不然会出错,不同动态库可以有同名函数,运行时加载不会有问题,编译时指定会有想不到的运行结果。
单个静态库可以有同名函数,但是某些编译器不支持,不同静态库之间也可以有同名函数,但如果函数签名也一致,使用的时候会编译错。
‘陆’ FreeRTOS 的编译器是否可以使用gcc++, 是否支持C++11
# rpm -qa|grep gcc
gcc-c++-3.4.6-3
compat-gcc-32-3.2.3-47.3
libgcc-3.4.6-3
gcc-3.4.6-3
gcc-g77-3.4.6-3
compat-libgcc-296-2.96-132.7.2
compat-gcc-32-c++-3.2.3-47.3
...
用命令 rpm -qa | grep gcc查看。
然后用gcc -v 查看版本号,
便可知道是否已经安装。
‘柒’ stm32 跑 FreeRTOS 要多大的Flash比较好
这个不应该吧,基本的FreeRTOS怎么可能占32K,是你的keil没有许可码吧,32K绝对是装的下的, 应该FreeRTOS只有十几K(我只用 用过RTT,FreeRTOS是官方自带的我编译过没有那么大);Flash选64或者128的就够了。
‘捌’ stm32中跑freertos,请问在该板子上能运用fopen()之类的C库函数吗
先看看是不是你任务栈空间设置太小,溢出了? 不是的话,你可以在HardFalut下断点,停下后看函数调用堆栈,看在产生HardFalut之前都调了什么函数。
‘玖’ freertos源码包vs例程用什么打开
你想调用你的模型,最简单的法是看examples/cpp_classification里面的cpp文件,那是教你如何调用caffe获取分类结果的(你没接触过caffe的话,建议你直接按照这个文件来操作可能会比较简单,下面我的代码我也不知道没接触过caffe的人看起来难度会有多大)不过那个代码我看着不太习惯,所以之前自己稍微写了一个简易的版本,不知道怎么上传附件,懒人一个就直接把代码贴在最后了。先简单解释一下如何使用,把这个代码复制到一个头文件中,然后放在examples里面一个自己创建的文件夹里面,然后写一个main函数调用这个类就可以了,比如:复制,保存到caffe/examples/myproject/net_operator.hpp,然后同目录下写一个main.cpp,在main函数里面#include"net_operator.hpp",就可以使用这个类了:conststringnet_prototxt="";//你的网络的prototxt文件,用绝对路径,下面同理conststringpre_trained_file="";//你训练好的.caffemodel文件conststringimg_path="";//你要测试的图片路径//创建NetOperator对象NetOperatornet_operator(net_prototxt,pre_trained_file);Blob*blob=net_operator.processImage(img_path);//blob就得到了最后一层的输出结果,至于blob里面是怎么存放数据的,你需要去看看官网对它的定义写完main.cpp之后,到caffe目录下,make,然后它会编译你写的文件,对应生成的可执行文件。比如按我上面写的那样,make之后就会在caffe/build/examples/myproject文件夹里面生成一个main.bin,执行这个文件就可以了。因为生成的可执行文件并不是直接在代码目录下,所以前面我建议你写的路径用绝对路径另外如果你要获取的不是最后一层的输出,你需要修改一下processImage函数的返回值,通过NetOperator的成员变量net_来获取你需要的blob,比如有个blob名称为"label",你想获取这个blob,可以通过net_->blob_by_name("label")来获取,当然获取到的是shared_ptr>类型的,搜一下boostshared_ptr就知道跟普通指针有什么不同了
‘拾’ 如何在stm32上移植Freertos
1.前言
【1】其实说不上移植笔记,FreeRTOS已经移植至众多平台(MCU),包括MSP430,STM32等,这份笔记完全建立在官方代码的基础之上,简单的说就是修改一些设置从而完成一个呼吸灯实验。
【2】虽然有官方移植代码,但是官方移植版本为STM32的V2.X库,与现在流行的V3.5有比较大的区别。本笔记也是总结网上几篇学习笔记,主要说明如果使用V3.5库,需要做哪些修改。
【3】编译软件为IAR EWARM 6.5。
【相关博文】
【FreeRTOS学习笔记——任务间使用队列同步数据】——如何使用FreeRTOS队列。
【如何在FreeRTOS下实现低功耗——MSP430F5438平台】——如何通过空任务实现系统低功耗。
2.FreeRTOS需要哪些文件
FreeRTOS的文件结构非常简单,移植或者版本升级替换也非常方便。
1)与FreeRTOS内核有关的文件数量仅为3个,分别是list.c queue.c tasks.c
该文件位于FreeRTOS\Source
2)与内存分配有关的文件共有4个,分别是heap_1.c,heap_2.c,heap_3.c,heap_4.c。4个文件只需选择其中的1个,STM32选择heap_2.c。
该文件位于FreeRTOS\Source\portable\MemMang
3)与移植相关的代码包括port.c,portasm.s,portmacro.h。这些代码不但和编译器有关还和平台(MCU)有关。FreeRTOS先以编译器为大类,然后再以平台(MCU)为小类。在这里选择IAR编译器,平台为ARM_CM3。
该文件位于FreeRTOS\Source\portable\IAR\ARM_CM3
4)除了上述内容之外,还包括FreeRTOS内核相关的头文件。
该文件FreeRTOS\Source\include
3.必要的工程设置
开始之前需要引入V3.5库相关头文件,启动代码和CMSIS库。
在IAR中设置相关头文件的路径(应根据实际情况修改)
$PROJ_DIR$\CMSIS
$PROJ_DIR$\StdPeriph_Driver\inc
$PROJ_DIR$\User
$PROJ_DIR$\FreeRTOS\Source\include
$PROJ_DIR$\FreeRTOS\Source\portable\IAR\ARM_CM3
当然头文件的路径并不是绝对的,只要明确头文件在哪,设置正确路径即可。
除了设置C代码的相关头文件之外,还需要设置汇编代码的头文件路径,由于很少设置汇编代码头文件路径,往往初次移植FreeRTOS会在此处遇到一些“困难”。