单片机linux操作系统单片机linux
单片机的应用前景?
单片机的前景发展多样化。单纯的单片机前景已经没有那么好了,与单片机相关的产品同质化严重,能干的人也不少,竞争相对激烈,产品利润也比较低,导致薪水及未来薪水涨幅都不是很好。
现在比较流行,前景比较好的是嵌入式方向(ARM+Linux)。从事单片机方向的工作人员可考虑转型为ARM工程师、嵌入式工程师、物联网工程师等等,从而更加符合市场发展的需求。
fpga与linux是什么关系?
嵌入式就是能自己跑程序的就叫嵌入式。
fpga是可编程逻辑器件,用来做门电路,随意的门电路,用来处理一些算法之类的。
ic就是芯片。
linux是一个操作系统,还有windows概念是一样的。
arm现在的arm都是指arm公司设计的处理器,是一个cpu,相当于单片机c语言是,单片机arm用来编程的语言。通过编译环境,编程单片机能识别的代码,去执行、硬件语言verilog和vhdl都是可编程逻辑器件,用的语言,也就是fpga和cpld用的。
arm单片机为什么一定要再linux系统下开发呢?
linus是嵌入式可用的操作系统之一,嵌入式开发到后面必须用操作系统,除非你把嵌入式当单片机用,这时候就不需要。当你在嵌入式下用操作系统的时候,可以选择的操作系统有5,6个。比如:uC/OSIIuCLinuxFreeRTOSRTXArm-LinuxVxWorksRTEMSpSOSNucleusPalmOSWindowsCEWindowsXPEmbeddedWindowsVistaEmbedded嵌入式LinuxECOSQNXLynxMeegoSymbianAndroidMeamo这些里面,比较用的多的是uC/OS;WindowsCE;Linux;AndroidLinux相对功能完善,大家大量使用的还有个重要原因就是免费系统。这对于开发学习来说都是非常重要的。代码完全开源。希望对你有用。
谈谈你对单片机的认识?
从大一的时候在大学图书馆看到关于AVR单片机的书籍,到参加竞赛、工作,我和单片机已经打了六七年的交道了吧。其间我都是在做产品的软件开发,与硬件工程师合作,根据需求选择合适的单片机型号和外围器件,完成代码编写。积累了一点对单片机选型、特点的认识。
所以这篇想谈谈关于单片机特点和选型。
单片机
MCU,微处理器,他有很多名字,但是我还是喜欢叫他单片机,因为他就是单单的一片,没什么其他的模块,一片里面就集成了CPU,RAM、ROM等,冯·诺依曼必有的结构单元。只要外部给他晶振,给他电源,他就能像计算机一样工作起来。高级一点的单片机内部RC就能起振,外部晶振都可以免去,只要外部给个稳定的3.3V,就可以工作。
单片机设备做的可以有多小?看到老外玩的蚊子飞机,就知道了,大学的时候非常的震惊,也是这样,让我对飞行器着迷不已。
听过一个趣闻,就是为什么一个字节是8个BIT,而不是12个?据说是最早的芯片,因为工艺限制了,只能有八个引脚,想要更多的引脚怎么办,多用几个八脚芯片就好了,于是1个字节对应一个芯片,一个芯片的八个脚对应八个比特就顺理成章了。
计算机的技术从来都是往两个方向发展的,一个是计算速度快,资源多,同时可处理的事件多,相对应的,功耗大,体积大。一个就是计算速度慢,资源少,但是价格低廉,体积小,功耗低。
前者所发展而来的就是咱们的计算机,WINDOWSLINUX操作系统,后者就是单片机系统了,各种嵌入式操作系统。手机的范畴有点迷了,我还是愿意把手机放在单片机系统这个层面来看。
在从业人数规模来看,前者发展出来的计算机,软件编程带动了多少人的就业,我们把这从事这职业的人叫做“码农”,他们的工作就是在前人对计算机一层一层又一层的封装下,进行针对应用的开发。顶层软件层的开发需要,促成JAVA、C#、PYTHON这样的语言出现,这些语言本身不涉及底层,只是调用底层的接口函数。显而易见的,想通过JAVA让计算机主板发出一个方波信号出来,是何等困难,但对应的是用JAVA在通用电脑屏幕上显示一串数字是何等的简单。
后者单片机,开发的人数就不如通用计算机了,单片机资源少,可用的“轮子”少,啥玩意都需要自己自力更生。能快速的发出方波,如果有DDS芯片的话,可以调制出正弦波,等等通用主机模块做不到的功能。更加的自定义!缺陷的话,显而易见的,想通过单片机在屏幕上显示一串HELLOWORLD字符,那得是进阶的人才能做到的咯!
所以单片机软件开发不是“纯软件”开发,也需要对硬件有相当的学习,对数字电路、模拟电路也要了解才行。这一行门槛高,很难速成,一定是慢慢积累~
是否“裸奔”
裸奔,顾名思义就是单片机穿不穿衣服?衣服是啥,操作系统呗!
选单片机的时候,根据需求不同,首先要选此单片机是否需要跑操作系统,还是裸奔。
·当需要用复杂协议栈的时候,操作系统变得非常有用。
例如,希望咱们的单片机可以连互联网,通过网线联网,或者通过WIFI信号联网,那么多半需要运行操作系统,如果不跑操作系统也行,但是工作量很大,不稳定。
工程师需要比方案,咱们比比方案。
1、开源的RTOS几乎都提供TCP/IP协议栈,社区的开源代码经过很多人,很多年的稳定运行。
2、自己写TCP/IP协议栈,嵌入到裸奔工程中,稳定性未知,BUG数量未知。
两个方案肯定选择前者,笔者自己试过在ENC28J60网卡芯片上自己硬刚协议栈,其中艰难不言而喻,到最后还是妥协选择开源社区。
·当需要运行多个复杂任务的时候,操作系统很有用
操作系统提供TASK机制,消息管理机制,如果上位机编程经验的人,对线程会有很深刻的理解,不同的TASK就是不同的线程。有了TASK机制,对任务的管理就会方便的多。好像安卓系统运行起来了,咱们可以用JAVA为他随时增加新功能,下个APK包,安装就好了,对吧。
什么时候,我会选择裸奔单片机?
裸奔有裸奔的好处,笔者怕黑。认为“上位机”开发人员之所以天天加班,有干不完的事,改不完的BUG,最大的原因就是“黑”。黑盒子太多了。黑盒子指的是一个程序块,这个程序块你压根不知道他是怎么实现的,你只知道他提供什么功能,至于自己是不是正确的调用了黑盒子的接口,你只能通过文档去看,然后就不断不断的试错,效率极低。所以很多时候大神上位机开发人员,是对黑盒子(某语言提供的对象、方法)有深刻掌握的人!
裸奔的单片机不一样,如果你愿意,启动时的汇编代码都可以自己写,配置好时钟,配置好各样的寄存器,所有的代码都是你自己写的,出了问题自己找,自己的代码还找不出原因,那就废了。如果你觉得C语言也是黑盒子,为了躲避C语言开发者给你留的坑,你甚至可以用汇编写代码,当然这个我不推荐了,C语言很棒,bug很少。裸奔开发,你眼前唯一的黑盒子就是硬件是如何实现的,也只有硬件能坑你一把。
不言而喻,裸奔的单片机代码,虽然简单,但是所能做的功能也会有局限。
裸奔的话,联网什么的别想了。
所以如果需求比较简单,一定裸奔,需求困难,就跑操作系统。
什么单片机支持操作系统?
理论上,只要ROM/RAM资源足够,所有的单片机都可以执行嵌入式操作系统,但是,不是所有人都有移植操作系统的能力。
新手还是得靠厂家帮你移植操作系统,所以选单片机的时候,得问一下,上网查一下,它支持哪些操作系统?
以TI的CC2640为例,这玩意支持TI自家的嵌入式操作系统TI-RTOS,好用!
裸奔的话,所有单片机都能裸奔,毕竟不穿衣服谁不会啊~
温度特性
注意要看设计产品的工作温度区间,是民用级,还是军工级,有些单片机芯片高低温实验过不了的,会出现代码起飞,内部FLASH莫名丢几个等这些问题,不要等代码写好,送去拿证了,过不了高低温,被老板骂~
低功耗特性
芯片是否有较好的休眠模式,老牌的芯片厂家都非常注重硬件低功耗模式,提出了各种各样的睡眠方式,TI就是把低功耗做的很好的厂家。如果是设计电池供电的产品,一定要考虑低功耗。低功耗更多需要代码去优化,这看一个软件工程师的水平~
一个纽扣电池,产品用一年,那就太牛了!
开发环境
喜欢IAR还是MDK?笔者喜欢IAR多一点,感觉界面很硬朗,MDK的话显得像是在写上位机软件~CORTEXMx系列的单片机多半都是用MDK开发的,STM32算是明星级产品了。TI的产品大多是用IAR。所以哪个开发环境你更熟悉,也可以作为考虑范畴。
芯片是否冷门?
STM32的技术支持是真的多,资料满天飞,所以如果对自己读DATASHEET的能力有所怀疑的话,一定要选类似STM32这样的popular芯片。
选冷门芯片是对自己的很大挑战,你会发现百度问题几乎没人答,你得写英文e-mail给原厂工程师,满心欢喜克服语言困难写完,他也不会理你。你得翻墙去国外论坛找资料。但是一旦你开发好,你会成就感爆棚,也会觉得,单片机不过如此~然后写一些关于这个芯片的CSDN文章,帮助建设社区!
学生的话可以推荐尝试尝试,工作的就算了,都996了别升级007咯~
最近的状态
大学的时候,对单片机,对飞行器的热情,我都在年复一年,日复一日的工作中慢慢淡去了。现在我唯一想的就是努力把产品做好,卖到世界的各个角落,这也算changeworld的一种方式吧~嘿嘿,自己给自己熬点鸡汤,愿明天会好~
分享的这些,若是有用的话,点个赞呗~
用linux系统是做什么用的?
Linux可以运行在服务器和其他大型平台之上,如大型机和超级计算机,是一个领先的操作系统。世界上500个最快的超级计算机90%以上运行Linux发行版或变种,最快的前10名超级计算机运行的都是Linux操作系统。Linux也广泛应用在嵌入式设备上,如手机、平板电脑、路由器、电视和电子游戏机等。在移动设备上广泛使用...
linux的命令行界面快捷键linux的命令行界面
台式机进入安装界面 笔记本进入安装界面 END linux命令行怎样打开新的窗口?在GUI图形界面下你可以在命令行输入xterm打开新的窗口 Linux如何进入纯命令行界面?要打开只能先用快捷键打开终端,在使用命令。具体操作方法如下:1.首先打开linux操作系统在进入到桌面 2.通常打开终端的快捷键是Ctrl+Alt+T,也...
简要剖析Linux系统的进程管理机制
多任务是指在Linux下可以同时执行多个任务,更详细的说,linux采用了分时管理的方法,所有的任务都放在一个队列中,操作系统根据每个任务的优先级为每个任务分配合适的时间片,每个时间片很短,用户根本感觉不到是多个任务在运行,从而使所有的任务共同分享系统资源,这就是多任务的概念。 上面说的是单CPU多任务操作系统的情...
常见的手机操作系统有哪些
1、Android(安卓)是现在最为普片的操作系统,在国内应该是人们用的最多的智能机操作系统。它是一种基于Linux开发的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用安卓”,英语是机器人是意思。Android操作系统最初...
Linux操作系统 安装步骤
Linux安装光盘支持由光驱启动安装,用户只要对BIOS进行相应设置,就可以由光盘直接启动进入Linux的安装界面。在正式安装Linux操作系统之前,用户应注意以下两个方面的问题: 1.硬盘空间 Linux需要在硬盘上建立自己的磁盘分区,如果用户不希望对现有系统下的硬盘进行重新分区,建议使用一些第三方工具软件,如Partition Magic等,对硬...
linux的常用命令有那些
linux常用命令(基础)1. man 对你熟悉或不熟悉的命令提供帮助解释 eg:man ls 就可以查看ls相关的用法 注:按q键或者ctrl+c退出,在linux下可以使用ctrl+c终止当前程序运行。2. ls 查看目录或者文件的属*,列举出任一目录下面的文件 eg: ls \/usr\/man ls -l a.d表示目录(directory),如果是一...
啥是linux?
Linux操作系统(Linux),是一种计算机操作系统。Linux操作系统的内核的名字也是“Linux”。Linux操作系统也是自由软件和开放源代码发展中最著名的例子。严格来讲,Linux这个词本身只表示Linux内核,但在实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统(也被称为GNU\/Linux)。
linux调度启动常用的命令linux调度器
Linux操作系统诞生于1991年10月5日(这是第一次正式向外公布时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。 lvs工作模式特点? LVS-NAT模式总结:集群节点处于同一个网络环境中;真实...
linux kernel功能有哪些?
1、系统调用接口 提供系统的API函数,供用户使用,例如操作文件的函数、操作进程和线程的函数、操作内存的函数、操作硬件(如串口、磁盘)的函数、操作网络的函数等等。2、实现进程管理功能 能够同时(看上去)执行多个进程(任务),比如可以同时运行文件下载、看电影、挂游戏,那么进程管理的内部实现就是...
Linux系统下在命令行中压缩JPEG图像的方法
如果要压缩PNG图像,参考这个指南的例子。安装jpegoptim Ubuntu, Debian 或 Linux Mint:代码如下:sudo apt-get install jpegoptim Fedora:代码如下:sudo yum install jpegoptim CentOS\/RHEL安装,先开启EPEL库,然后运行下列命令:代码如下:sudo yum install jpegoptim 无损压缩jpeg图像 为了无损地压缩一副JPG...
书宗九合: 单片机不是linux系统!它只是一块高度集成的芯片而已,仅仅只靠单片机而没有其他的外围电路、元件,单片机也是干不了什么事情的!单片机可以跑操作系统,像uCO/SII就可以,它的前些版本的源码是开放的,但是不是完全免费的!不过打多数情况下单片机都是跑前后台系统的!linux系统是个比较大的系统,它主要用在ARM上,当然它也可以用在现在电脑的CPU上!
会泽县15240809171: 哪种单片机可以装入Linux内核运行 - ?
书宗九合: linux不能运行在单片机上,因为没有内存管理单元(MMC).你听说的单片机运行操作系统都是运行的精简操作系统如ucos,uclinux.
会泽县15240809171: 单片机概念 - ?
书宗九合: 单片机自动完成赋予它的任务的过程,也就是单片机执行程序的过程,即一条条执行的指令的过程,所谓指令就是把要求单片机执行的各种操作用的命令的形式写下来,这是在设计人员赋予它的指令系统所决定的,一条指令对应着一种基本操作...
会泽县15240809171: Linux编程和单片机编程的区别是什么? - ?
书宗九合: 一般情况下,会将Linux内核可执行文2113件命名为/boot/vmlinuz或与之5261类似的路径名.早期的UNIX实现称其内4102核为UNIX,后续实现虚拟内存1653机制的UNIX系统中,其内核名称变更为vmunix.对Linux来说,文件内名称中的系统名需要调整,以z替换容linux末尾的x,意在表明内核是经过压缩的可执行文件.
会泽县15240809171: 关于单片机和linux学习的问题 - ?
书宗九合: 我是电子类专业的,单片机大二已经学了,Linux/嵌入式大三学了.除了都可以用C编写,两者共通之处实在不多.单片机学起来比较简单,10天就可以学会了,上网搜一下,“郭天祥10天学会单片机”的视频讲的不错,还有AVR也有10天的教...
会泽县15240809171: 求职单片机,嵌入式Linux系统 - ?
书宗九合: 我是今年七月份毕业的大学生,也是在学校参加了社团,自己用单片机做了些东西,找工作的时候不想找这种干技术的工资,感觉女生不适合,不过后来还是找了个嵌入式的工作,其实这个对于找工作的时候不是区分特别仔细的,你干过那些单片机的项目,对于你想找的嵌入式的工作也是会给你加分滴,很容易找,所以不要着急,直接找你喜欢的就行了
会泽县15240809171: linux可以做单片机开发吗? - ?
书宗九合: 可以的,程序设计和电路设计都没问题和程序调试都没问题. 只是如果用的是一些小厂的单片机芯片,可能没有linux下的芯片烧写程序.
会泽县15240809171: 单片机使用linux开源系统吗??
书宗九合: 很多单片机是用linux的,linux开源`
会泽县15240809171: 单片机初学者适合用什么型号(完全小白,原没接触过单片机的) - ?
书宗九合: 建议学习51单片机,同时推荐郭天祥的《十天学会51单片机视频》.1. 学会基础后可以在51上跑跑uCOS或者RT操作系统等. 2. 然后学习STM32或ARM学习Linux操作系统. 3. 当然看行业,如果可以也可以直接学习Linux操作系统,这个可以...
会泽县15240809171: 什么叫单片机?详细解释!~ - ?
书宗九合: 【单片机定义】 单片机是指一个集成在一块芯片上的完整计算机系统.尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统...