CPU与MCU的区别与联系

对于一些初学者来说,CPU与MCU的区别与联系是难懂的问题。今天,小编就为您介绍一下CPU与MCU的区别与联系。

图为89C51芯片

MCU(Micro Controller Unit),又称单片微型计算机(Single Chip Microcomputer),简称单片机,是指随着大规模集成电路的出现及其发展,将计算机的CPU、RAM、ROM、定时数器和多种I/O接口集成在一片芯片上,形成芯片级的计算机。 MCU按其存储器类型可分为无片内ROM型和带片内ROM型两种。对于无片内ROM型的芯片,必须外接EPROM才能应用(典型芯片为8031)。带片内ROM型的芯片又分为片内EPROM型(典型芯片为87C51)、MASK片内掩模ROM型(典型芯片为8051)、片内FLASH型(典型芯片为89C51)等类型。 以上这些,均为MCU。

图为8051芯片

CPU是中央处理单元(Central Processing Unit)的缩写,它可以被简称做微处理器(Microprocessor),不过经常被人们直接称为处理器(processor)。

CPU是计算机的核心,其重要性好比大脑对于人一样,因为它负责处理、运算计算机内部的所有数据,而主板芯片组则更像是心脏,它控制着数据的交换。CPU的种类决定了你使用的操作系统和相应的软件。CPU主要由运算器、控制器、寄存器组和内部总线等构成,是PC的核心,再配上储存器、输入/输出接口和系统总线组成为完整的PC(个人电脑)。 寄存器组用于在指令执行过后存放操作数和中间数据,由运算器完成指令所规定的运算及操作。

CPU和MCU之间的界限并不是很清晰,不过CPU主要用在计算机上,也算是控制器,而MCU主要是工业控制领域。

图为CPU

CPU(Central Processing Unit,中央处理器)发展出来三个分枝,一个是DSP(Digital Signal Processing/Processor,数字信号处理,本文不讨论),另外两个是MCU(Micro Control Unit,微控制器单元)和MPU(Micro Processor Unit,微处理器单元)。

简单来说,二者的区别是MCU集成了片上外围器件,CPU不带外围器件(例如存储器阵列),是高度集成的通用结构的处理器。

延长树莓派上SD卡的使用寿命

据说SD卡的写入次数是有限的,那么这是否意味着用树莓派当作服务器会存在一些问题呢?也许吧,目前只是个别文章报告了SD卡会报废,但并没有完全的定论。于是我开始寻找一些方法把SD卡的写入次数降到最低,理论上有助于延长它的使用寿命。

在一个SD卡上运行GNU/Linux的最佳实践

一张容量更大的卡 假设写操作在卡上的各个地方都有可能进行,这样越大的卡在同一区域多次书写的概率越小。对于大多数的树梅派GNU/Linux发行版来说,一张4GB的卡够用了,但8GB或者16GB从这个角度来看更合适。让我们把4GB提高到8GB,那么在同一区域进行写操作的概率会减少一半。

坚持选个好牌子 已经有许多文章都提到要坚持选择顶级品牌的SD卡。我没有整理出一份品牌列表也没有特别支持哪个品牌,但幸运的是已经有很多文章显示了顶级品牌和它们的报废率。调整GNU/Linux写入到内存而不是SD卡上 这使用了一个叫“tm

pfs”的功能,它是GNU/Linux提供的一个非常酷的玩意。Tmpfs能够像写入一个正常的文件系统一样让写操作写入内存中。它快捷,高效并且易于使用。下面会详细介绍。SD卡设置为只读模式 这实际上把GNU/Linux变成了一个只读模式,类似于你从Live CD启动的GNU/Linux。这样阻止了任何的写操作从理论上来讲延长了SD卡的寿命。但这也有许多缺陷。首先,你得在配置上花点功夫,

这已经超出了本文的范围。其次,所有的改动会在系统重启后消失因为它们没有写入SD卡里。对于我来说,GNU/Linux运行在只读模式实在是要命所以我不推荐这么极端的做法。

使用Tmpfs

如我前面所说,tmpfs会写入到内存中而不是本地磁盘(树梅派上实际是SD卡)。使用它非常简单。你要做的只是增加一个到/etc/fstab文件的入口(挂载你想写入到内存的文件夹到内存里)并且重启(这样每次服务开始写文件之前都会把这些文件夹先挂载到内存里)。

剩下的事情系统内核会替你搞定,把写操作写入到内存里的虚拟文件系统。这还有个巧妙之处,系统内核只会使用写操作所需数量的内存而不是整个挂载的大小。让我们举个例子,我想要把下面这一行加入到/etc/fstab文件中:

tmpfs /var/log tmpfs defaults,noatime,nosuid,mode=0755,size=100m 0 0

系统内核将会把/var/log挂载到内存中,然而在文件真正被写入到/var/log之前不会使用任何内存。当文件被写入到/var/log时,系统内核将会把它保存在内存里并且只占用用于保存文件的内存空间。当文件从/var/log中删除时,相对应的内存空间将被释放。

这意味着它只占用用于保存文件的内存空间,这是非常高效的。

在/etc/fstab中,你也可以为每个挂载指定内存配额。在上面的例子里,我们设置的是”size=100m”所以/var/log最多使用100m的内存空间。这是为了防止一个文件系统占用了全部内存以至于系统速度变慢甚至崩溃。通过运行”mount”命令,我们可以看到在上面的例子里/var/log被挂载为一个tmpfs在内存里的卷,大小是100MB。

Filesystem Size Used Avail Use% Mounted on
tmpfs 100M 596K 100M 1% /var/log

在GNU/Linux里有许多可能会频繁写入到地方。下面是一个我初步整理的应该可以适用于大多数发行版的列表。

tmpfs /tmp tmpfs defaults,noatime,nosuid,size=100m 0 0
tmpfs /var/tmp tmpfs defaults,noatime,nosuid,size=30m 0 0
tmpfs /var/log tmpfs defaults,noatime,nosuid,mode=0755,size=100m 0 0
tmpfs /var/run tmpfs defaults,noatime,nosuid,mode=0755,size=2m 0 0
tmpfs /var/spool/mqueue tmpfs defaults,noatime,nosuid,mode=0700,gid=12,size=30m 0 0

你看我使用了”size=”参数来避免试图保存大量的数据时占用大量内存的问题。出于安全和性能方面的考虑,”noatime”和”nosuid”参数也推荐设置,”mode=”和”gid=”对应的权限和用户组要与原来存在于SD卡上的文件系统保持一致。

恩,tmpfs也可以进行权限控制。通常情况下,所有在/etc/fstab下挂载的文件和标准的Unix/Linux文件没什么区别。所以即使因为一些原因挂载失效了,写操作也会成功写入到SD卡上。

需要记住的一点是所有挂载到tmpfs的文件将会在重启时丢失。所以上面的例子里/var/log文件会在关机时或重启时清空。所以不要把tmpfs用于那些你需要在重启后依然存在的文件。

我正在积极的使用这些设置,到目前为止结果还不错。时间会告诉我们这对于树莓派和/或者SD卡的寿命延续有何作用,但是现在已经有很多文章说能够正常运行很久,因为我们知道GNU/Linux不像其他操作系统一样需要频繁重启。上面的方法希望可以延长使用寿命,特别是你打算一年365天,每周7×24小时的开着树莓派。

本文来自:树莓派实验室

想要更多,请关注“IoT前哨站”微博或微信公众号

减少树莓派系统读写次数:用relatime挂载选项

SD卡和普通的磁盘驱动器有很多不同的地方,SD卡可以执行写和擦除的周期的次数是有限的,然而传统的磁盘驱动器没有写和擦除周期的概念。

什么是写和擦除周期?

对于一个普通的磁盘驱动器,每当你往磁盘里写东西,磁盘的某个扇区就会改变它的磁盘状态。这是磁盘物理上的改变,它不会给磁盘圆片本身带来损耗。当我们读取磁盘片上同一扇区的数据时,磁盘片的性质也不会发生改变。而SD卡显然是没有磁盘片,但是SD卡有小的内存芯片,其中包含内存单元,数据储存在内存单元上,就像物理硬盘的扇区一样。

和物理硬盘不一样,当你读写内存单元时,它的状态就发生了改变。

这是因为闪存单元使用不量的存储电荷来表示数据的比特位,这就是写和擦除的来源:

每当你读或写闪存单元一次,这个单元 的周期就消耗一次。读写闪存的时候,状态随之改变,每一个闪存单元只有限的周期,这些周期消耗完之后,状态再也无法改变(无法写入).

一般的SD卡会有10万次写和擦除周期,相对于数码相机来算是很多了,不过相对于日志文件系统就显得不足了,日志文件系统会非常频繁地往SD卡内写入少量的数据。除此外,每当系统更新文凭或目录时,也会往磁盘写数据,所以,10万次的周期是远远不够用的,因此,我们要关闭自动更新文件存取时间的功能,关闭自动更新文件存取时间的功能可以通过以下两种方式实现:

1. 第一个是noatime选项,它会禁止更新文件存取时间,这对闪存单元来说是好事,但是对用户来说并不是好事,比如说你想知道你的文件的时间戳,又比如有些应用程序依赖于文件的存时间戳。

2. 为了在两个极端中取一个平衡点,可以使用relatime挂载选项,relatime选项只有当最新修改时间比当前存取时间新的时候才会更新文件时间。这个选项减少了大量的闪存单元写操作,用户可以编辑/etc/fstab文件启用这个选项将你的根文件系统(/)以及启动文件系统(/boot)的挂载选项修改成如下所示的样子:

/dev/mmcblkop1 / auto defaults,relatime 1 1

/dev/mmcblkop1 /boot auto defaults,relatime 1 2

首先重新挂载每个文件系统:

#mount –o remount / && mount –oremount /boot

然后使用mount命令检查relatime是否启用:

#mount
它会显示所有挂载的文件系统经以及它他们的挂载选项。

Ubuntu 18.04 整合Livepatch:Linux内核更新无需重启

即将到来的Ubuntu 18.04 LTS(Bionic Beaver)操作系统中将引入新功能,方便用户使用Canonical的Livepatch服务。该服务最早出现在Ubuntu 16.04 LTS(Xenial Xerus)中,能在不重启Ubuntu设备的情况下部署Linux内核更新。

在默认的Ubuntu 18.04更新安装过程中,Software & Updates工具的Update标签页中已经整合了Livepatch服务。不过如果用户想要使用这项服务,需要点击“Sign In”按钮创建Ubuntu SSO(Single Sign-On)账号并进行登陆。

Canonical的Will Cooke在本周的周报中写道:“我们仍在通过配置Livepatch和分享系统信息等决定来添加全新的first-login体验。这意味着用户可以通过‘Software & Updates’工具中的‘Updates’标签页对Livepatch进行配置。”

来自:cnBeta.COM

麦迪文:该特性对IoT设备是好事,可以不间断工作的同时照顾安全性。

树莓派上的软件安装和卸载命令汇总

基础命令

安装软件 apt-get install softname1 softname2 softname3……
卸载软件 apt-get remove softname1 softname2 softname3……
卸载并清除配置 apt-get remove –purge softname1
更新软件信息数据库 apt-get update
进行系统升级 apt-get upgrade
搜索软件包 apt-cache search softname1 softname2 softname3……

安装deb软件包 dpkg -i xxx.deb
删除软件包 dpkg -r xxx.deb
连同配置文件一起删除 dpkg -r –purge xxx.deb
查看软件包信息 dpkg -info xxx.deb
查看文件拷贝详情 dpkg -L xxx.deb
查看系统中已安装软件包信息 dpkg -l
重新配置软件包 dpkg-reconfigure xxx

清除所有已删除包的残馀配置文件

dpkg -l |grep ^rc|awk ‘{print $2}’ |sudo xargs dpkg -P

如果报如下错误,证明你的系统中没有残留配置文件了,无须担心。
dpkg: –purge needs at least one package name argument

dpkg安裝的可以用apt卸載,反之亦可。

aptitude 命令

aptitude 与 apt-get 一样,是 Debian 及其衍生系统中功能极其强大的包管理工具。与 apt-get 不同的是,aptitude 在处理依赖问题上更佳一些。举例来说,aptitude 在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用的包,整个系统更为干净。以下是笔者总结的一些常用 aptitude 命令,仅供参考。

aptitude update 更新可用的包列表
aptitude upgrade 升级可用的包
aptitude dist-upgrade 将系统升级到新的发行版
aptitude install pkgname 安装包
aptitude remove pkgname 删除包
aptitude purge pkgname 删除包及其配置文件
aptitude search string 搜索包
aptitude show pkgname 显示包的详细信息
aptitude clean 删除下载的包文件
aptitude autoclean 仅删除过期的包文件

当然,你也可以在文本界面模式中使用 aptitude。

常用apt命令列表

apt-cache search # ——(package 搜索包)
apt-cache show #——(package 获取包的相关信息,如说明、大小、版本等)
sudo apt-get install # ——(package 安装包)
sudo apt-get install # —–(package – – reinstall 重新安装包)
sudo apt-get -f install # —–(强制安装?#”-f = –fix-missing”当是修复安装吧…)
sudo apt-get remove #—–(package 删除包)
sudo apt-get remove – – purge # ——(package 删除包,包括删除配置文件等)
sudo apt-get autoremove –purge # —-(package 删除包及其依赖的软件包+配置文件等(只对6.10有效,强烈推荐))
sudo apt-get update #——更新源
sudo apt-get upgrade #——更新已安装的包
sudo apt-get dist-upgrade # ———升级系统
sudo apt-get dselect-upgrade #——使用 dselect 升级
apt-cache depends #——-(package 了解使用依赖)
apt-cache rdepends # ——(package 了解某个具体的依赖?#当是查看该包被哪些包依赖吧…)
sudo apt-get build-dep # ——(package 安装相关的编译环境)
apt-get source #——(package 下载该包的源代码)
sudo apt-get clean && sudo apt-get autoclean # ——–清理下载文件的存档 && 只清理过时的包
sudo apt-get check #——-检查是否有损坏的依赖

本文来自:树莓派实验室

容器操作系统HypriotOS在树莓派3上的安装

HyproitOS是一款容器操作系统,可以在任何支持Raspberry Pi系列的设备上运行,能让你在五分钟内从0到Docker。

选择HypriotOS的原因是因为其对Docker的支持已经很完善,且有丰富参考资料减少了很多弯路。前期在使用cubieboard进行测试时发现自带镜像文件内核版本太低需要自行编译,后期才找到一个第三方的安装地址,有时间另行介绍。

镜像文件

访问:https://blog.hypriot.com/downloads/ 下载最新版本的镜像文件。

也可以通过我的分享来下载:

http://pan.baidu.com/s/1nvEwhkP
密码:vip6

读卡器一个
镜像写入软件
Windows下的Win32 Disk Imager软件(上面共享盘里有)
Linux、Mac下flash tools安装(推荐)

curl -O https://raw.githubusercontent.com/hypriot/flash/master/$(uname -s)/flash

chmod +x flash

sudo mv flash /usr/local/bin/flash

使用

写入镜像后将内存卡放入树莓派并重启。用户名:pirate 密码:hypriot

如果你是用flash写入的话在可以在写入命令行前加入 –hostname 这样就不需要显示器了,或者像有的资料介绍的通过nmap或其它扫描工具来发现设备。仅需要执行如下命令就可以直接连接设备。

比如我写入的命令如下:

#注意下载的ZIP包不要解压
flash –hostname pi0 hypriotos-rpi-v1.1.3.img.zip

由于我设置的hostname为pi0,那么我的ssh登录命令如下:

#这里的pirate用户为hypriotos默认登录用户
#此登录方式要登录设备与树莓派在一个网段

ssh pirate@pi0.local

通过上面的ssh命令不需要知道IP的情况下即可登录。

更新系统

sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get dis-upgrade -y

以上通过更新对系统打补丁及安装各软件最新版本,然后通过安装rasip-config可以用图形化界面进行配置。

sudo apt-get install raspi-config

Docker安装

sudo apt-get install docker.io

测试

docker run -d -p 80:80 hypriot/rpi-busybox-httpd

如果国内访问不正常,可以这样。

wget http://soft.sunsl.net/dev/armhf/rpi-busybox-httpd.tar
docker load -i rpi-busybox-httpd.tar

成功后你应该能通过浏览器访问到如下界面:

作者:forrestsun
來源:https://www.jianshu.com/p/3e2a901e66b7

想要更多,请关注“IoT前哨站”微博或微信公众号

Google Chrome和Mozilla Firefox将支持全新无密码登录规范

今天,W3C和FIDO联盟标准机构宣布,Web浏览器正在构建一种新的登录方式。这款名为WebAuthn所呈现的新开放标准将在最新版本的Firefox中得到支持,并将在未来几个月发布的Chrome和Edge的版本中得到支持。这是多年来的最新举措,目的是让用户远离密码,转向更安全的登录方式,如生物识别和USB令牌。

该系统已经在谷歌和Facebook等主要服务上就位,在那里你可以使用符合FIDO标准的Yubikey设备登录。

WebAuthn将无疑将加速安全登录的实现,无论是将这些技术作为备用登陆方式,还是完全取代密码。随着更多的开源代码为新标准而编写出来,开发者将更容易实现新的登录方式。

“以前,USB令牌登陆的模式只运用于谷歌、微软和Facebook等大公司,”参与Firefox工作的Selena Deckelmann说。“现在,通过WebAuthn,更多的用户将能够体验安全登录。”

因为FIDO标准是建立在零知识的基础上的,所以没有一串字符可以保证对一个账户的访问,这使得传统的钓鱼攻击变得更加困难。它为有安全意识的用户和企业提供了保护自己的重要途径。随着越来越多的服务转向支持更安全的登录方式,FIDO-ready用户的数量会越来越多。

Deckelmann说:“它能真正的规避安全隐患,但现在我们还没到那一步,这将是我们的美好未来。”

来自:cnBeta.COM

想要更多,请关注“IoT前哨站”微博或微信公众号

 

一行命令从 APK 文件中提取 Endpoint 及 URL

做IoT的人免不了要接触Android,接触Android的人又免不了要研究别人的App应用。

Diggy,一款能够从 apk 文件中提取 endpoint 及 URL 的工具,只要一行命令就可以帮大家提取出相关Android apk文件的安装信息和互联网访问信息。

下载地址:https://raw.githubusercontent.com/UltimateHackers/Diggy/master/diggy.sh

使用方法如下:

解压反编译需要一点时间,当然看你自己机器性能了。

SA:智能家居监控摄像头市场规模将在2023年超97亿美元

Strategy Analytics近期发布的研究报告《智能家居监控摄像机市场分析与预测》指出,低于200美元价格点的配备全套软件和服务功能的摄像机将推动智能家居监控摄像机市场的增长。 该报告预测,到2023年,全球市场消费者在智能家居监控摄像机上支出将超过97亿美元;ADT,Alarm.com和Vivint等安全服务厂商以及亚马逊,Netgear和Nest等独立摄像机供应商将统领市场。

Strategy Analytics评估了迄今至2023年的市场趋势、竞争格局分析以及消费者支出,以及不同类型及价位段的终端销量的市场预测。

该报告还针对技术进步和产品趋势对寻求利用这个市场机遇的公司所带来的影响提供了洞察。Strategy Analytics智慧家庭实践高级行业分析师Jack Narcotta表示,“我们对智能家居监控摄像机市场的研究和分析甄别出了市场‘热点’。 我们预计到2023年可视门铃将是增长最快的细分市场,其市场规模将达到14亿美元,高于今年的5亿美元。”该报告详细介绍了领先公司如何从硬件规格转向基于软件和服务差异化优势,这一转型是通过更大的整合人工智能来增强人脸识别,目标跟踪和情景化通知方面的持续努力。 此外,它还探讨了合作伙伴和并购带来的影响,并分析了四个价位区间的趋势:入门级,中端,高端和专业级消费者。

来源:C114中国通信网

想要更多,请关注“IoT前哨站”微博或微信公众号

正面交锋Ubuntu Core,Fedora将发布物联网版本

知名发行版 Fedora 将发布物联网版本。

Fedora 理事会批准了 Fedora项目负责人Peter Robinson 的提议,物联网版本将是一个官方支持的版本,并将组建工作组。物联网版本初步计划是随 Fedora 29 一起推出。该版本包含了各种各样的传感器支持,所以不会用传统未经优化的 Linux 内核,该物联网版本显然会是精简后的系统。

开发者表示未来几周或几个月将展开深入讨论,听取反馈,逐渐壮大 Fedora 物联网社区。

麦迪文:终于要出手了,不然要搞物联网的红帽系开发人员都转投Ubuntu/Debian社区了。

想要更多,请关注“IoT前哨站”微博或微信公众号