开源中国

我们不支持 IE 10 及以下版本浏览器

It appears you’re using an unsupported browser

为了获得更好的浏览体验,我们强烈建议您使用较新版本的 Chrome、 Firefox、 Safari 等,或者升级到最新版本的IE浏览器。 如果您使用的是 IE 11 或以上版本,请关闭“兼容性视图”。
博客专区 - 开源中国社区

精彩阅读

  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

汇编语言-第二章 寄存器(CPU工作原理)

# 概述 一个典型的CPU由运算器、控制器、寄存器等器件构成,这些器件靠内部总线相连接。 内部总线实现CPU内部各个器件之间的联系,外部总线实现CPU和主板上其他器件的联系。 >简单来说,在CPU中: >- 运算器进行信息处理 >- 寄存器进行信息存储 >- 控制器控制各种器件进行工作 >- 内部总线连接各种器件,在它们之间进行数据的传送 寄存器是CPU中程序员可以用指令读写的部件。程序员通过改变各种寄存器中的内容来实现对CPU的控制。 不同的CPU,寄存器的个数、结构是不同的。 # 2.1 通用寄存器 通用寄存器通常用来存放一般性的数据。 # 2.2 字在寄存器中的存储 出于对兼容性的考虑,8086CPU可以一次性处理两种尺寸的数据: >- 字节:记为byte,一个字节由8个比特(即二进制位)组成,可以存在8位寄存器中。 >- 字:记为word,一个字由两个字节组成,这两个字节分别称为这个字的高位字节和低位字节。 # 2.3 几条汇编指令 # 2.4 物理地址 CPU通过地址总线送入存储器的必须是一个内存单元的物理地址。 在CPU向地址总线上发出物理地址之前,必须在内部先形成这个物理地址。 不同的CPU可以有不同的形成物理地址的方式。 # 2.5 16位结构的CPU >16位结构的CPU具有下面几方面的结构特...
Frost729 发布于 2周前 阅读 284 评论 1

Java 9 新特性概述

Java 9 正式发布于 2017 年 9 月 21 日 。作为 Java8 之后 3 年半才发布的新版本,Java 9 带 来了很多重大的变化。其中最重要的改动是 Java 平台模块系统的引入。除此之外,还有一些新的特性。 本文对 Java9 中包含的新特性做了概括性的介绍,可以帮助你快速了解 Java 9
IBM Cloud

STM32 端口复用&重映射(USART Remap)

下面跟大家说一下STM32单片机的端口重映射,因为是以自己为实例.这里是以USART1的重映射为例..         因为我要一个TFT_LCD屏的主控板,考虑到FSMC 我选用了STM32F103VCT6 型号的CPU,一不小心串口接到USART1上了.因为在调程序时才发现错了,没得办法,只能通过端口重映射来解决.但是以前没用过端口重映射,只闻其名,未用其身,所以..呵呵 ...只能从头去看了.          STM32上有很多I/O口,也有很多的内置外设想I2C,ADC,ISP,USART等,为了节省引出管脚,这些内置外设基本上是与I/O口共用管脚的,也就是I/O管脚的复用功能。但是STM32还有一特别之处就是:很多复用内置的外设的I/O引脚可以通过重映射功能,从不同的I/O管脚引出,即复用功能的引脚是可通过程序改变的.读到这里相信大家都应该了解了端口重映射的一些概念了.原理上的东西不细说了,大家可以看手册或者网上查,这方面的资料还是很多的.下面说说我的调试经历.         不知道是什么原因 PCB制图时把串口接到USART1上了,当时也没在意,等我把USART测试程序写好烧进去硬件仿真时,串口给的是乱码,我当时就觉得奇怪.把程序检查了好几遍就是查不出问题来,以为是硬件有问题,但突然想到了STM有复用功能,...
冷夜杀手 发布于 2个月前 阅读 66

树莓派设置开机自启动的两种方式

可通过两种方式来设置树莓派的开机自启动 一、配置rc.local文件设置树莓派开机启动项 编辑/etc/rc.local文件 sudo vi /etc/rc.local 在文件中的 exit 0 之前添加需要执行的程序,注意要使用绝对路径,如下 python python /home/pi/example.py & exit 0 特别注意,如果程序是阻塞的,则须加上  &   符号以在后台运行,否则系统无法启动 重启系统,就可以生效了 sudo reboot 二、新建desktop文件设置树莓派开机启动项 这种方式类似于Windows系统的“开始”菜单中的“启动”项,操作方法如下: 在 /home/pi/.config 下创建一个文件夹,名称为 autostart mkdir /home/pi/.config/autostart 在该文件夹下创建一个xxx.desktop文件,文件名以.desktop结尾,名称可自定义,文件的内容如下: [Desktop Entry] Name=example Comment=My Python Program Exec=python /home/pi/example.py Icon=/home/pi/example.png Terminal=false MultipleArgs=false Type=Application Categories=Application;Development; StartupNotify=true 该文件中的Name、Comment、Icon分别表示这个启动项目的名称、备注以及显示的图标,具体的值可自行设定;Exec表示调用的指令。 重启系统,就可以生效了 ...
雪饼 发布于 2个月前 阅读 22

浅谈NFC、RFID、红外、蓝牙的区别

很多朋友对NFC和RFID这两个词感到陌生,但是手机经常会出现支持NFC支付,又没太在意,NFC与RFID其实是手机支付的种方式(手机支付也被称作移动支付,是一种允许移动用户使用其移动终端对所消费的商品或服务进行账务支付的服务方式)。   1   NFC手机支付   NFC英文全称Near Field Communication,近距离无线通信。是由飞利浦公司发起,由诺基亚、索尼等著名厂商联合主推的一项无线技术。NFC由非接触式射频识别(RFID)及互联互通技术整合演变而来,在单一芯片上结合感应式读卡器、感应式卡片和点对点的功能,能在短距离内与兼容设备进行识别和数据交换。这项技术最初只是RFID技术和网络技术的简单合并,现在已经演变成一种短距离无线通信技术,发展态势相当迅速。   NFC芯片装在手机上,手机就可以实现小额电子支付和读取其他NFC设备或标签的信息。NFC的短距离交互大大简化整个认证识别过程,使电子设备间互相访问更直接、更清楚。通过NFC,电脑、数码相机、手机、PDA等多个设备之间可以很方便快捷地进行无线连接,进而实现数据交换和服务。   支持NFC的设备可以在主动或被动模式下交换数据。在被动模式下,启动NFC通信的设备,也称为NFC发起设备(主设备),在整个通信...
失败人士 发布于 3个月前 阅读 396 评论 1

Docker是用来干什么的?【快速入门】

Docker从去年开始不仅能在Linux下运行 ,还支持windows、osX等主流系统。 下面的例子我自己经常使用,当然你有更好的案例也可以分享给我。 尝试新软件 对开发者而言,每天会催生出的各式各样的新技术都需要尝试,然而开发者却不太可能为他们一一搭建好环境并进行测试。时间非常宝贵,正是得益于 Docker,让我们有可能在一条或者几条命令内就搭建完环境。Docker 有一个傻瓜化的获取软件的方法,Docker 后台会自动获得环境镜像并且运行环境。 并不仅仅是新技术环境搭建用得到 Docker。如果你想快速在你的笔记本上运行一个 MySQL 数据库,或者一个 Redis 消息队列,那么使用 Docker 便可以非常容易地做到。例如 Docker 只需要一条命令便可以运行 MySQL 数据库: docker run -d -p 3306:3306 tutum/mysql。 译者注:虽然使用命令也能非常快地安装 MySQL 数据库,但是当用到最新的技术或者非常复杂的技术时,使用 Docker 便会是个非常好的选择,例如 : 事件 普通用户 Docker用户 安装Gitlab 一天 一条命令 进行演示 现在我经常需要在周末用自己开发的成果对客户活着别人做一两个演示。搭建演示环境的过程非常麻烦。现在我发现 Docker 已经成为我演示这些工具的最合理的方式。 对...
失败人士 发布于 3个月前 阅读 392 评论 2 点赞 2

【码云周刊第 47 期】6个开源项目提升物联网开发效率

每周为您推送最有价值的开源技术内参!
码云Gitee 发布于 3个月前 阅读 2906 评论 4 点赞 1

借助 frp 随时随地访问自己的树莓派

看了一个[「树莓派」是什么以及普通人怎么玩?] 的高票回答,双十一时间,果断买了一个树莓派 3.周一(11.13) 到的货.我目前只想实现一个简单的功能 -- 想从任意位置访问我的树莓派. 就像一个潘多拉魔盒,第一步肯定是拿到钥匙!
ios122 发布于 3个月前 阅读 187 评论 2

2.树莓派3安装archlinux配置web、samba和aria2

本文永久更新地址:https://my.oschina.net/bysu/blog/1572517 archlinux一些常规配置,请看《1.树莓派3安装archlinux通用配置部分》 1.配置web服务(基于LAMP) 英文文档比较丰富:https://wiki.archlinux.org/index.php/Apache_HTTP_Server 1.1 先安装Apache、PHP pacman -Sy php php-apache php-gd 【上面命令会自动安装Apache、PHP】 先启动一下Apache看报什么错误 [root@alarm alarm]# apachectl AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::ba27:ebff:fe34:38d5. Set the 'ServerName' directive globally to suppress this message 配置apache: vi /etc/httpd/conf/httpd.conf 查找ServerName,会看到#ServerName www.example.com:80。把前面的注释#去掉,然后改成你自己的主机名,如果是本机可以改成: SeverName localhost:80 https://wiki.archlinux.org/index.php/Apache_HTTP_Server 在 /etc/httpd/conf/httpd.conf中找到下面这行,并注释掉: #LoadModule mpm_event_module modules/mod_mpm_event.so 找到下面这行,把前面的#去掉。 LoadModule mpm_prefork_module modules/mod_mpm_prefork.so To ...
不最醉不龟归 发布于 3个月前 阅读 229

Jetson TX2 安装tensorflow

在Jetson TX2上安装tensorflow,需要在源码编译,至少我看到现在的教程都是在源码上编译,编译的时间会很久.  源码编译安装tensorflow可以参考[我另外一个教程](https://my.oschina.net/u/1046919/blog/1154302),这里主要说一些注意要项. ---- **bazel和tensorflow** bazel 和tensorflow的版本注意不要太高,我这里就是bazel和tensorflow的版本选的太高,导致安装完出现问题,虽然不知道是不是依赖没有打完整的缘故,但是在这里还是建议选择低一些的版本. 我这边选择的是bazel-5.4,tensorflow1.3 ---- **内存空间不足** 网上说编译tensorflow可能会出现内存空间不够用的情况,所以需要做一个交换文件,但是实际上我并没有碰到,但是还是记录一下 ``` #Create an 8GB swapfile fallocate -l 8G swapfile #Change permission of the swapfile chmod 600 swapfile #Create swap area mkswap swapfile #Activate the swap area sudo swapon swapfile # deactive the swap are sudo swapoff swapfile #Confirm swap area being used swapon -s ``` ---- **修改tensorflow/stream_executor/cuda/cuda_gpu_executor.cc** 在tensorflow/stream_executor/cuda/cuda_gpu_...
KyJason 发布于 4个月前 阅读 165

Freertos阅读笔记4~ Systick异常处理,任务调度流程

4 freertos任务调度源码分析 freertos之所以能够准确的按照配置的时间片进行任务调度完全依靠硬件支持。硬件上的某个计数器会提供周期性中断,在中断处理中解决任务调度 如:task1切换到task2,task2再切换到task1,如此循环往复,在外部就表现的如同多个任务在一起执行。 在CM3/CM4上有提供内部异常定时器:systick。使用systick作为实时系统的运行心脏再好不过,因为人家的名字就叫做系统滴答定时器,可谓门当户对。其它定时器也可以完成类似功能,因为freertos只关注能否提供周期中断,并不会在意中断产生着是白猫还是黑猫。使用systick的一个好处是在开发低功耗功能时它将不会受到影响。 在调度器启动之前已经使能了systick,systick中断发生后进入xPortSysTickHandler异常。在xPortSysTickHandler中没有发生任务切换,它只是利用xTaskIncrementTick函数处理了readylist与delaylist上的任务结点,需要进行任务切换时会交给pendSV来完成。 (调度器流程图)(拖动放大)   4.1 xTaskIncrementTick 在进入xTaskIncrementTick之前首先屏蔽了中断,防止发生中断嵌套破坏内核链表。 xTaskIncrementTick中率先自增了xTickCount。xTickCount能够准确表示systick发生了多少次...
橘子O 发布于 4个月前 阅读 125

深度解剖~ FreeRtos阅读笔记2 任务创建、内核链表初始化

2.FREERTOS任务创建、内核链表初始化 硬件环境:cortex m4 FreeRTOS版本:v8.0.1 今天开始阅读freertos,阅读同时做下笔记,等哪天碰到移植问题再翻出来看看。   2.1 任务、链表结构体 源码中使用tskTCB来存储一个任务的所有信息,xLIST存储内核链表数据。一个系统最基本的功能是它的任务调度,在任务切换时最重要的则是内核链表,用图描述下这两个结构体,这样看起来比代码更清晰。(TCB中有省略成员) (TCB结构体) -------------------------------------------------分割线---------------------------------------------------- (LIST结构体) 一个TCB中包含了两个xLIST_ITEM作为链表节点,操作xLIST_ITEM中的指针指向既为控制一个任务进出某个链表。相比xLIST_ITEM,在xLIST中使用了精简版的结点xMINI_LIST_ITEM。   2.2 xTaskGeneEricCreate 任务创建流程分析 xTaskGeneEricCreate 函数用来创建一个新任务,在调度器启动前和启动后都可以创建。 Freertos在调度器启动后至少会有一个任务(IDLE)处于准备调度状态,即使开发者不去创建自己的任务。 xTaskGeneEricCreate源码流程:(拖动可以放大图片) (任务创建流程图)   2.2.1 prvAllocateTCBAndStack 分配空间 Free...
橘子O 发布于 5个月前 阅读 114 评论 2

深度解剖~ FreeRtos阅读笔记1

上帝不仅给了我一颗低频的cpu还送了个劣质的晶振,可悲可叹!无奈在家休养,不然的话晶振偷停我可就驾鹤西去了。。。不过这也是个好机会,在家靠着窗户晒着太阳,偶尔读读源码,都很好。就是工资没了~   接连几个项目都使用了freertos,作为刚刚毕业一张白纸的我只能先去摸索一些api怎么去调用,需要填入哪些参数,才能达到自己的目的。程序不出问题就完事大吉了,不过稍有异常出现例如某个任务莫名奇妙的被挂起,超出预想,只凭借对api的了解很难追查问题的根源,所以我决定适当深入了解下freertos,顺便学习下大神们的编码风格,免得光头强总说:看你的代码像吃屎。我觉得看一些源码至少能给屎加点孜然。。。 上电复位 要让FreeRtos跑起来,首先要。。。给板子上电! 接触了一些芯片,发现它们都是将初始的异常向量表放在自己flash(也有可能是rom)的0地址,芯片上电复位在0地址,0地址开始的四个字节存放运行栈地址,紧跟着4字节是复位后要执行的第一行代码的地址(bootloader),引用一张cortexM3指南的一张图片:   要执行的第一行代码一般是汇编实现的初始化工作,因为此时并没有对MSP进行配置,所以还不具备C运行环境,因此这些工作只能由汇编来代替:初始化内存...
橘子O 发布于 5个月前 阅读 69 评论 1 点赞 1

Linux中WIFI功能工具与操作

当设备支持wifi功能时,在嵌入式linux开发中经常使用wireless tools和wpa_supplicant工具来管理和配置wifi功能与参数,本文简要介绍wifi操作的这些工具。
水海云 发布于 5个月前 阅读 129

小米温湿度传感器协议分析后续

博主上一编博文分析了小米的温湿度协议,提出了些疑问,本期解答
临峰不畏 发布于 8个月前 阅读 815 评论 4 点赞 1

在MicroPython中用面向对象方法控制microbit显示

据拉里·沃尔(一位非常著名的程序员)说,懒惰是一种美德。懒惰的程序员提出节省劳力的解决方案。 如果你想节省自己和别人的时间,让micropython代码易于重复使用、阅读。 本文假设您已经熟悉对象、类和组合的概念,并且知道如何用Python编写类定义。如果您不熟悉Python的对象定位(O O),您可能会发现代码很难遵循。我在本文后面对O作了简短的介绍。 有几种学习Python的方法。这里有一个“官方”教程,但是我不确定初学者是否会觉得很容易理解。有一本看起来不错的书。它需要大量的时间和金钱投入,但是我认为如果你需要提高你的Python技能是值得的。 我可能会着手写我自己的介绍,但这是一个重大项目,需要一段时间。现在,即使您不熟悉O,也应该能够跟踪大多数文章并运行示例代码。 Python(micropython)对物理计算非常有用   Python是当之无愧的物理计算应用中一个非常流行的语言。 Python很容易学习,它很有表现力,可以在Linux、Mac OS和微软Windows上免费使用。 Python让树莓派充满活力,大量代码树莓派的代码都是用Python实现的。 最近,micropython带来了语言的几个流行的单片机平台,包括BBC microbit。 但… 大多数已发表micropython脚本使用Python程序风格...
shaoziyang 发布于 8个月前 阅读 242

小米温湿度传感器协议分析

家里部署了简单的智能家居系统,买了个小米的温湿度传感器,尝试将其接入到自己&...
临峰不畏 发布于 8个月前 阅读 971 评论 3 点赞 3

用官方的SSD1306.py 驱动 OLED

这几天看了一下micropython的I2C OLED驱动(SPI的类似),发现有几个版本。一个是官方的版本,还有早期网上流传的版本。 网上的版本使用了pyb.I2C驱动,是将Arduino的OLED驱动移植过来,只能用在STM32上;而官方的驱动使用了machine.I2C,这样有更好的兼容性,适合不同的硬件平台,还可以用软件I2C。 因为没有看到有人介绍官方的SSD1306驱动,所以我就简单的介绍一下I2C接口的OLED使用方法,SPI的也是类似的。下面以比较常见的0.96寸的128x64 I2C OLED为例: 从github下载micropython的源码(或者只下载其中的ssd1306.py文件),然后将ssd1306.py复制到PYB Nano或其它micropython板 连接I2C和电源到I2C的OLED上,如果没有硬件I2C,使用任意GPIO也可以。 在终端里输入下面代码 from machine import I2C i2c=machine.I2C(-1, sda=machine.Pin("PB9"), scl=machine.Pin("PB8"), freq=400000)   from ssd1306 import SSD1306_I2C oled = SSD1306_I2C(128, 64, i2c) oled.text("Hello PYB Nano", 0, 0) oled.show() 如果可以看到Hello这一段文字,就说明驱动成功了。   SSD1306.py中带有的函数不多,主要函数有: text(string, x, y),在(x, y)处显示字符串,注意text()函数...
shaoziyang 发布于 10个月前 阅读 135 点赞 1

MicroPython开发板大盘点:你想要的开发板都在这里了!

MicroPython是在单片机上跑的Python。官方的开发板是PYBoard,但是这个板子比较少见,价格也比较贵。幸好MicroPython支持多种开发板,我们可以在其他开发板上很好的运行MicroPython,效果是一样的。下面是MicroPython支持的一些常见开发板
bodasisiter 发布于 10个月前 阅读 432 评论 4 点赞 1

关于MicroPython是否可以真正用在产品开发的讨论

这几天,在MicroPython官方论坛上,发起了关于MicroPython是否可以真正用在产品开发上(Is MicroPython ready for real world deployment)的讨论,非常有趣。我觉得值得大家看看,所以简单的翻译和整理了一下。 问: If I wanted to deploy a large number of devices and have them run reliably, would MicroPython be a risky choice? 在设备上运行MicroPython是否可靠? 答: We are using Micropython in several projects (medical & industrial certified measurement equipment) for ~2 years. It was a bold decision, but it already paid off. 有网友回答说:我们在多个项目中(医疗和工业测量认证设备)使用Micropython超高2年了。这是一个大胆的决定,但是它已经得到了回报。 坏处: 提升了硬件资源需求 缺乏面向对象的编程技能 好处 开发效率 可追溯性 可测试性 可移植性 许可和支持(开源) 问: don't the other benefits  exist for C/C++ (with or without an widely used OS/RTOS) ? e.g. clang or gcc, FreeRTOS, etc? 是否有其他类似C/C++的功能?如 clang或gcc、FreeRTOS等 答: MPY outperforms all the tools we know (even the ones we can't af...
shaoziyang 发布于 12个月前 阅读 274 评论 4 点赞 1

在SensorTile上使用MicroPython(一)

介绍在SensorTile上编写传感器驱动的方法
shaoziyang 发布于 1年前 阅读 155 评论 1 点赞 1

【转】解决——DBR记录的分区扇区总数溢出

1、在DiskGenius记下出错分区的总扇区数 2、使用 winhex 加载出错的硬盘——选择出错的分区——打开模板管理器 3、因为文件系统为NTFS所以 选择 Boot Sector NTFS 4、可以查看当中的Total sectors发现总扇区数不对,改为DiskGenius里显示正确的数值 5、然后关闭会提示是否保存选择保存,会提示很多次,关闭winhex时会出现点击确定,至此大功告成。
_Nevermore_ 发布于 2个月前 阅读 12

汇编语言-第二章 寄存器(CPU工作原理)

# 概述 一个典型的CPU由运算器、控制器、寄存器等器件构成,这些器件靠内部总线相连接。 内部总线实现CPU内部各个器件之间的联系,外部总线实现CPU和主板上其他器件的联系。 >简单来说,在CPU中: >- 运算器进行信息处理 >- 寄存器进行信息存储 >- 控制器控制各种器件进行工作 >- 内部总线连接各种器件,在它们之间进行数据的传送 寄存器是CPU中程序员可以用指令读写的部件。程序员通过改变各种寄存器中的内容来实现对CPU的控制。 不同的CPU,寄存器的个数、结构是不同的。 # 2.1 通用寄存器 通用寄存器通常用来存放一般性的数据。 # 2.2 字在寄存器中的存储 出于对兼容性的考虑,8086CPU可以一次性处理两种尺寸的数据: >- 字节:记为byte,一个字节由8个比特(即二进制位)组成,可以存在8位寄存器中。 >- 字:记为word,一个字由两个字节组成,这两个字节分别称为这个字的高位字节和低位字节。 # 2.3 几条汇编指令 # 2.4 物理地址 CPU通过地址总线送入存储器的必须是一个内存单元的物理地址。 在CPU向地址总线上发出物理地址之前,必须在内部先形成这个物理地址。 不同的CPU可以有不同的形成物理地址的方式。 # 2.5 16位结构的CPU >16位结构的CPU具有下面几方面的结构特...
Frost729 发布于 2周前 阅读 284 评论 1

SylixOS与硬件设备连接问题——硬件设备串口、网口连接问题

硬件设备串口、网口连接问题
Esc130 发布于 3周前 阅读 11

斐讯 K3 A1 刷机经历

手残把 K3 升级了 21.6.11.58,所以经历了一些额外的步骤。 首先,众所周知路由器厂商升级都是为了封堵刷第三方的能力,所以在不使用 TTL 的情况下,必然考虑降级。 逛恩山论坛,发现了这篇好文 [[20180128] K3_V21.6.11.58 简单降级大招,直刷降级,最新出笼!](http://www.right.com.cn/forum/forum.php?mod=viewthread&tid=304185)。这里需要提醒的是,似乎只能使用作者配套的 21.5.37.246 官方版,无法直刷 root 版或者其他版本。 这里提一下 CFE 模式,可以说是官方提供的刷机工具。进入方式是:在关机状态下,按住 RESET 开机并保持 5s,检查方法是:Windows 打开 cmd,输入命令 `ping 192.168.2.1 -t`,若 TTL=64 说明是普通模式,若 TTL=100 说明是 CFE 模式。 出厂版本 V21.4.31.212、V21.4.33.217、V21.5.37.246 集成的 CFE 编译日期是3月10日,新出厂版本 V21.5.39.260 集成的 CFE 编译日期是8月2日,斐讯封堵了CFE网页执行命令,而且固件采用公私钥验证,因此通过 CFE 手动执行命令刷第三方包的方式被堵死了。 普通模式下只能升级刷包,CFE 下可以降级刷包,因此从 21.6.11.58 到 21.6.11.58p 可以在普通模式下进行,而 21.6.11.58p 到 21.5.37.246 是在 CFE ...
傅易 发布于 3天前 阅读 24

让你的Capslock键变废为宝

很多时候我们是用不到 Capslock 键的。
Tomotoes 发布于 1个月前 阅读 10

Windows10与linux Ubuntu双系统安装

的那些坑
涅文正 发布于 4周前 阅读 16

dingdang-robot:一个开源的中文智能音箱项目

本文介绍我在业余时间开发的一个开源的智能音箱项目 dingdang-robot ,分享一下我在开发这个项目过程中的心得。
云加社区 发布于 3个月前 阅读 202 点赞 1

汇编语言-第四章 第一个程序

# 一个源程序从写出到执行的过程 >- **编写汇编源程序** >- **对源程序进行编译链接** >*** >1.使用 汇编语言编译程序对源程序文件中的源程序进行编译,产生目标文件。 >2.用链接程序对目标文件进行连接,生成可在操作系统中直接运行的可执行文件。 >其中,可执行文件包含两部分内容: >- 程序(从源程序中的汇编指令翻译过来的机器码)和数据(源程序中定义的数据) >- 相关的描述信息(比如,程序有多大、要占用多少内存空间)。 >*** >- **执行可执行文件中的内容** >操作系统按照可执行文件中的描述信息,将可执行文件中的机器码和数据加载入内存,并进行相关的初始化(比如设置CS:IP指向第一条要执行的指令),然后由CPU执行程序。 # 源程序 ## 1. 伪指令 >汇编语言中包含两种指令: >- ** 汇编指令** >有对应的机器码的指令,可以被编译为机器指令,最终为CPU所执行。 >- 伪指令: >没有对应的机器指令,最终不被CPU所执行。 **伪指令是由编译器来执行的指令,编译器根据伪指令来进行相关的编译工作。** ## 例子 ~~~ assume cs:codesg codes segment start: mov ax,0123H mov bx,0456H add ax,bx add ax, ax mov ax,4c00H int 21H codes ends end ~~~ >segment和end...
Frost729 发布于 2周前 阅读 15

树莓派折腾selenium + chrome记录

# 树莓派折腾selenium + chrome记录 - 20180117 lambo init ## 前言 - 家中的树莓派还是在继续吃灰,难过。done - 想做个自动登录爱奇艺,优酷等网站尝试公开账号的系统。done. - 想树莓派 7x24小时的给我尝试登录公开的账号,并记录登录成功的账号。 ## 折腾记 - 一直尝试折腾raspbian + selenium + firefox进行搭建,但失败了。尝试地址 [作死折腾地址参考](http://blog.csdn.net/go_d_og/article/details/78994469) - 使用raspbian + selenium + chrome 正确运行,跑得还不错。 ### 安装软件 #### 安装 chrome - chrome 在树莓派中为:chromium-browser - 使用命令: ``` sudo apt-get install chromium-browser ``` - 如果报无法安装 则需要添加源。 - 在文件 /etc/apt/sources.list 添加。 - ``` deb http://pipplware.pplware.pt/pipplware/dists/jessie/main/binary / ``` - 执行 chromium-browser --version 查看版本信息。 - Chromium 48.0.2564.82 Built on Ubuntu 15.04, running on Raspbian 8.0 #### 下载驱动包 chromium-chromedriver - 下载指定 : ``` chromium-chromedriver_48.0.2564.82-0ubuntu0.14.04.1.1108_armhf.deb ``` - 下载地址: ``` wget htt...
林小宝 发布于 1个月前 阅读 47

浅谈NFC、RFID、红外、蓝牙的区别

很多朋友对NFC和RFID这两个词感到陌生,但是手机经常会出现支持NFC支付,又没太在意,NFC与RFID其实是手机支付的种方式(手机支付也被称作移动支付,是一种允许移动用户使用其移动终端对所消费的商品或服务进行账务支付的服务方式)。   1   NFC手机支付   NFC英文全称Near Field Communication,近距离无线通信。是由飞利浦公司发起,由诺基亚、索尼等著名厂商联合主推的一项无线技术。NFC由非接触式射频识别(RFID)及互联互通技术整合演变而来,在单一芯片上结合感应式读卡器、感应式卡片和点对点的功能,能在短距离内与兼容设备进行识别和数据交换。这项技术最初只是RFID技术和网络技术的简单合并,现在已经演变成一种短距离无线通信技术,发展态势相当迅速。   NFC芯片装在手机上,手机就可以实现小额电子支付和读取其他NFC设备或标签的信息。NFC的短距离交互大大简化整个认证识别过程,使电子设备间互相访问更直接、更清楚。通过NFC,电脑、数码相机、手机、PDA等多个设备之间可以很方便快捷地进行无线连接,进而实现数据交换和服务。   支持NFC的设备可以在主动或被动模式下交换数据。在被动模式下,启动NFC通信的设备,也称为NFC发起设备(主设备),在整个通信...
失败人士 发布于 3个月前 阅读 396 评论 1

8237dma的四种传送方式简介

8237A有四种工作方式:单字节传送、数据块传送、请求传送和多片级联。  (1)单字节传送(single mode)   单字节传送方式是每次DMA传送时,仅传送一个字节。传送一个字节之后,当前字节计数器减1,地址寄存器加1或减1,HRQ变为无效,释放总线控制权,将控制权交还给CPU。如果传送使得字节计数器减为0或由外设产生信号时,则终止DMA传送。   单字节传送方式的特点是:一次传送一个字节,效率较低,但它会保证在两次DMA传送之间,CPU有机会获得总线控制权,执行一次CPU总线周期。  (2)数据块传送(block mode)   在这种数据传送方式下,8237A一旦获得总线控制权,就会连续地传送数据块,直到当前字节计数器减到0或由外设产生信号时,终止DMA传送,释放总线控制权。   数据块传送方式的特点是:一次请求传送一个数据块,效率高,但在整个DMA传送期间,CPU长时间无法控制总线(无法响应其他DMA请求,无法处理其他中断等)。  (3)请求传送(demand mode)   请求传送方式与数据块传送方式类似,也是一种连续传送数据的方式。   区别是:8237A在请求传送方式下,每传送一个字节就要检测一次DREQ信号是否有效,若有效,则继续传送下一个字节;若无效,则停止...
失败人士 发布于 2个月前 阅读 191

汇编语言-第二章 寄存器(CPU工作原理)

# 概述 一个典型的CPU由运算器、控制器、寄存器等器件构成,这些器件靠内部总线相连接。 内部总线实现CPU内部各个器件之间的联系,外部总线实现CPU和主板上其他器件的联系。 >简单来说,在CPU中: >- 运算器进行信息处理 >- 寄存器进行信息存储 >- 控制器控制各种器件进行工作 >- 内部总线连接各种器件,在它们之间进行数据的传送 寄存器是CPU中程序员可以用指令读写的部件。程序员通过改变各种寄存器中的内容来实现对CPU的控制。 不同的CPU,寄存器的个数、结构是不同的。 # 2.1 通用寄存器 通用寄存器通常用来存放一般性的数据。 # 2.2 字在寄存器中的存储 出于对兼容性的考虑,8086CPU可以一次性处理两种尺寸的数据: >- 字节:记为byte,一个字节由8个比特(即二进制位)组成,可以存在8位寄存器中。 >- 字:记为word,一个字由两个字节组成,这两个字节分别称为这个字的高位字节和低位字节。 # 2.3 几条汇编指令 # 2.4 物理地址 CPU通过地址总线送入存储器的必须是一个内存单元的物理地址。 在CPU向地址总线上发出物理地址之前,必须在内部先形成这个物理地址。 不同的CPU可以有不同的形成物理地址的方式。 # 2.5 16位结构的CPU >16位结构的CPU具有下面几方面的结构特...
Frost729 发布于 2周前 阅读 284 评论 1

斐讯 K3 A1 刷机经历

手残把 K3 升级了 21.6.11.58,所以经历了一些额外的步骤。 首先,众所周知路由器厂商升级都是为了封堵刷第三方的能力,所以在不使用 TTL 的情况下,必然考虑降级。 逛恩山论坛,发现了这篇好文 [[20180128] K3_V21.6.11.58 简单降级大招,直刷降级,最新出笼!](http://www.right.com.cn/forum/forum.php?mod=viewthread&tid=304185)。这里需要提醒的是,似乎只能使用作者配套的 21.5.37.246 官方版,无法直刷 root 版或者其他版本。 这里提一下 CFE 模式,可以说是官方提供的刷机工具。进入方式是:在关机状态下,按住 RESET 开机并保持 5s,检查方法是:Windows 打开 cmd,输入命令 `ping 192.168.2.1 -t`,若 TTL=64 说明是普通模式,若 TTL=100 说明是 CFE 模式。 出厂版本 V21.4.31.212、V21.4.33.217、V21.5.37.246 集成的 CFE 编译日期是3月10日,新出厂版本 V21.5.39.260 集成的 CFE 编译日期是8月2日,斐讯封堵了CFE网页执行命令,而且固件采用公私钥验证,因此通过 CFE 手动执行命令刷第三方包的方式被堵死了。 普通模式下只能升级刷包,CFE 下可以降级刷包,因此从 21.6.11.58 到 21.6.11.58p 可以在普通模式下进行,而 21.6.11.58p 到 21.5.37.246 是在 CFE ...
傅易 发布于 3天前 阅读 24

树莓派折腾selenium + chrome记录

# 树莓派折腾selenium + chrome记录 - 20180117 lambo init ## 前言 - 家中的树莓派还是在继续吃灰,难过。done - 想做个自动登录爱奇艺,优酷等网站尝试公开账号的系统。done. - 想树莓派 7x24小时的给我尝试登录公开的账号,并记录登录成功的账号。 ## 折腾记 - 一直尝试折腾raspbian + selenium + firefox进行搭建,但失败了。尝试地址 [作死折腾地址参考](http://blog.csdn.net/go_d_og/article/details/78994469) - 使用raspbian + selenium + chrome 正确运行,跑得还不错。 ### 安装软件 #### 安装 chrome - chrome 在树莓派中为:chromium-browser - 使用命令: ``` sudo apt-get install chromium-browser ``` - 如果报无法安装 则需要添加源。 - 在文件 /etc/apt/sources.list 添加。 - ``` deb http://pipplware.pplware.pt/pipplware/dists/jessie/main/binary / ``` - 执行 chromium-browser --version 查看版本信息。 - Chromium 48.0.2564.82 Built on Ubuntu 15.04, running on Raspbian 8.0 #### 下载驱动包 chromium-chromedriver - 下载指定 : ``` chromium-chromedriver_48.0.2564.82-0ubuntu0.14.04.1.1108_armhf.deb ``` - 下载地址: ``` wget htt...
林小宝 发布于 1个月前 阅读 47

8237dma的四种传送方式简介

8237A有四种工作方式:单字节传送、数据块传送、请求传送和多片级联。  (1)单字节传送(single mode)   单字节传送方式是每次DMA传送时,仅传送一个字节。传送一个字节之后,当前字节计数器减1,地址寄存器加1或减1,HRQ变为无效,释放总线控制权,将控制权交还给CPU。如果传送使得字节计数器减为0或由外设产生信号时,则终止DMA传送。   单字节传送方式的特点是:一次传送一个字节,效率较低,但它会保证在两次DMA传送之间,CPU有机会获得总线控制权,执行一次CPU总线周期。  (2)数据块传送(block mode)   在这种数据传送方式下,8237A一旦获得总线控制权,就会连续地传送数据块,直到当前字节计数器减到0或由外设产生信号时,终止DMA传送,释放总线控制权。   数据块传送方式的特点是:一次请求传送一个数据块,效率高,但在整个DMA传送期间,CPU长时间无法控制总线(无法响应其他DMA请求,无法处理其他中断等)。  (3)请求传送(demand mode)   请求传送方式与数据块传送方式类似,也是一种连续传送数据的方式。   区别是:8237A在请求传送方式下,每传送一个字节就要检测一次DREQ信号是否有效,若有效,则继续传送下一个字节;若无效,则停止...
失败人士 发布于 2个月前 阅读 191

安装Raspberry pi操作系统(Windows环境下)

安装RASPBIAN
Houor 发布于 3周前 阅读 21

Raspberry Pi 安装 Go 语言

Raspberry Pi 安装 Go 语言 首先从 Go 语言官网(https://golang.org/dl/)下载 Go 语言的 ARM64 构建: wget https://storage.googleapis.com/golang/go1.9.2.linux-arm64.tar.gz 或者对于ARM6 wget storage.googleapis.com/golang/go1.9.2.linux-armv6l.tar.gz 然后解压包: sudo tar -C /usr/local -xzf go1.9.2.linux-arm64.tar.gz 接着,添加到环境变量中,默认是 $HOME/.profile export PATH=$PATH:/usr/local/go/bin 也可以使用下面的命令来添加: echo 'export PATH=$PATH:/usr/local/go/bin' >> $HOME/.profile 然后运行: $ go version go version go1.9.2 linux/arm 现在,我们可以创建一个 hello, world! 并进行测试。 Raspberry Pi Go 语言 hello, world 创建一个 hello.go,添加以下的内容: package main import "fmt" func main() { fmt.Printf("hello, world\n") } 接着,使用 go 编译: $ go build 编译完后,执行: $ ./hello hello, world 如果你看到 “hello, world” 的消息,那么你的 go 安装是正常的。...
openthings 发布于 1个月前 阅读 19

让你的Capslock键变废为宝

很多时候我们是用不到 Capslock 键的。
Tomotoes 发布于 1个月前 阅读 10

树莓派3安装、软件配置问题集锦

本文永久更新地址: https://my.oschina.net/bysu/blog/1583968 系统相关信息 bysu@bysu:~ $ inxi CPU~Quad core ARMv7 rev 4 (v7l) (-MCP-) speed~1200 MHz Kernel~4.9.41-v7+ armv7l Up~14:21 Mem~102.5/927.3MB HDD~NA(-) Procs~291 Client~Shell inxi~2.3.5 bysu@bysu:~ $ uname -a Linux bysu 4.9.41-v7+ #1023 SMP Tue Aug 8 16:00:15 BST 2017 armv7l GNU/Linux 系统篇   软件安装配置篇 samba相关 执行重启服务命令报错。 bysu@bysu:~ $ sudo systemctl start samba Failed to restart samba.service: Unit samba.service is masked. 解决方案,参考here bysu@bysu:~ $ sudo rm /lib/systemd/system/samba.service bysu@bysu:~ $ sudo systemctl enable samba samba.service is not a native service, redirecting to systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable samba update-rc.d: error: samba Default-Start contains no runlevels, aborting. bysu@bysu:~ $ sudo systemctl start samba bysu@bysu:~ $ sudo systemctl status samba ● samba.service - LSB: ensure Samba daemons are started (nmbd, smbd and samba) ...
不最醉不龟归 发布于 3个月前 阅读 15

Windows10与linux Ubuntu双系统安装

的那些坑
涅文正 发布于 4周前 阅读 16

浅谈NFC、RFID、红外、蓝牙的区别

很多朋友对NFC和RFID这两个词感到陌生,但是手机经常会出现支持NFC支付,又没太在意,NFC与RFID其实是手机支付的种方式(手机支付也被称作移动支付,是一种允许移动用户使用其移动终端对所消费的商品或服务进行账务支付的服务方式)。   1   NFC手机支付   NFC英文全称Near Field Communication,近距离无线通信。是由飞利浦公司发起,由诺基亚、索尼等著名厂商联合主推的一项无线技术。NFC由非接触式射频识别(RFID)及互联互通技术整合演变而来,在单一芯片上结合感应式读卡器、感应式卡片和点对点的功能,能在短距离内与兼容设备进行识别和数据交换。这项技术最初只是RFID技术和网络技术的简单合并,现在已经演变成一种短距离无线通信技术,发展态势相当迅速。   NFC芯片装在手机上,手机就可以实现小额电子支付和读取其他NFC设备或标签的信息。NFC的短距离交互大大简化整个认证识别过程,使电子设备间互相访问更直接、更清楚。通过NFC,电脑、数码相机、手机、PDA等多个设备之间可以很方便快捷地进行无线连接,进而实现数据交换和服务。   支持NFC的设备可以在主动或被动模式下交换数据。在被动模式下,启动NFC通信的设备,也称为NFC发起设备(主设备),在整个通信...
失败人士 发布于 3个月前 阅读 396 评论 1

树莓派设置开机自启动的两种方式

可通过两种方式来设置树莓派的开机自启动 一、配置rc.local文件设置树莓派开机启动项 编辑/etc/rc.local文件 sudo vi /etc/rc.local 在文件中的 exit 0 之前添加需要执行的程序,注意要使用绝对路径,如下 python python /home/pi/example.py & exit 0 特别注意,如果程序是阻塞的,则须加上  &   符号以在后台运行,否则系统无法启动 重启系统,就可以生效了 sudo reboot 二、新建desktop文件设置树莓派开机启动项 这种方式类似于Windows系统的“开始”菜单中的“启动”项,操作方法如下: 在 /home/pi/.config 下创建一个文件夹,名称为 autostart mkdir /home/pi/.config/autostart 在该文件夹下创建一个xxx.desktop文件,文件名以.desktop结尾,名称可自定义,文件的内容如下: [Desktop Entry] Name=example Comment=My Python Program Exec=python /home/pi/example.py Icon=/home/pi/example.png Terminal=false MultipleArgs=false Type=Application Categories=Application;Development; StartupNotify=true 该文件中的Name、Comment、Icon分别表示这个启动项目的名称、备注以及显示的图标,具体的值可自行设定;Exec表示调用的指令。 重启系统,就可以生效了 ...
雪饼 发布于 2个月前 阅读 22

idea设置开发方式

一、设置tab为4个空格     二、设置注释的标准格式     1.设置类注解          /** * 作者: ${USER} * 创建时间:${DATE}. * 修改时间:${DATE}. * 类含义: */     2.设置方法注释          /**  * 方法含义:  * @param:  * @return:  * 作者: XXX  * 创建时间:$date$ $time$  * 修改时间:$date$ $time$  * 修改原因:  */ 输入cmt 按tab键就出来了    
走世界 发布于 1个月前 阅读 5

PX4/Pixhawk飞控软件架构简介

1、PX4软件架构简介 https://www.dronecode.org/ http://px4.io/technology/ http://qgroundcontrol.com/ http://https://mavlink.io/en/ PX4是目前最流行的开源飞控板之一。PX4的软件系统实际上就是一个firmware,其核心OS为NuttX(http://www.nuttx.org/)实时ARM系统(中文介绍:http://blog.csdn.net/zhumaill/article/details/24197637)。其固件同时附带了一系列工具集、系统驱动/模块与外围软件接口层,所有这些软件(包括用户自定义的飞控软件)随OS内核一起,统一编译为固件形式,然后上传到飞控板中,从而实现对飞控板的软件配置。 PX4配套的软件架构主要分为4层。理解其软件架构是开发用户自定义飞控应用软件的基础。 a) API层:这个好理解。 b) 框架层:包含了操作基础飞行控制的默认程序集(节点) c) 系统库:包含了所有的系统库和基本交通控制的函数 d) OS内核:提供硬件驱动程序、网络、UAVCAN和故障安全系统 上述是个面向PX4系统实现者的相对具体的软件架构。实际上还有另外一种面向PX4自定义飞控应用开发者的高层软件架构描述,相对抽象,但更简单,就是整个PX4的软件从整体上分为2层: a) PX4 flight stack:一系列自治无人机自动控制算法的集合 b) PX4 M...
openthings 发布于 2个月前 阅读 42

如何克隆SD卡的内容

如何克隆SD卡的内容 树莓派安装好了软件,其它的需要重复安装。直接拷贝文件是不行的,因为安装过程中产生了新的分区。使用dd做克隆,就可以全部复制过去。 ##step1. 定位你的SDCard 命令行输入: diskutil list 显示如: /dev/disk0 #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme *251.0 GB disk0 1: EFI EFI 209.7 MB disk0s1 2: Apple_HFS Macintosh HD 90.7 GB disk0s2 3: Apple_HFS d 34.9 GB disk0s3 4: Apple_HFS f 65.6 GB disk0s4 5: Apple_HFS g 59.1 GB disk0s5 /dev/disk1 #: TYPE NAME SIZE IDENTIFIER 0: Apple_partition_scheme *14.2 MB disk1 1: Apple_partition_map 32.3 KB disk1s1 2: ...
openthings 发布于 2个月前 阅读 5

树莓派的键盘设置

树莓派默认设置总是有些键不太对,因为: 树莓派(raspberry pi)是英国产品,默认键盘布局是英国(GB),我们用的键盘布局一般是美国(US)的(104键) 输入sudo raspi-config,进入树莓派设置,选择localisation Option。 选择Change Keyboard Layout。 选择Generic 104-key PC。 选择Other。 后面全部选择English (US)。 剩下的几个选项选默认值。 配置完成后回到raspi-config主页面,选择Finish。
openthings 发布于 1个月前 阅读 9

嵌入式编程开发环境搭建

1.IDE开发环境下载 ARM编译器KEIL MDK,可以从相应的KEIL官网进行相应的下载。目前最新版为V5.24A 官网下载地址:https://www.keil.com/demo/eval/arm.htm 其他版本的下载地址:http://www.keil.com/update/rvmdk.asp 2.安装KEIL MDK 这里我们选择安装5.23版本的,双击安装文件 在之后出来的窗口中点击next,下面的这个步骤可以选择程序在磁盘上的安装地址和库文件的保存地址。 下面的步骤中,出现的输入框随便填就ok,填好之后,点击next就开始安装了。 3.安装MCU 支持包。 通过上面的步骤,我们已经安装好了keil,现在点击桌面上的图标,打开编辑器 在出现的窗口中点击pack installer也就是我标注红色方框的部分。 点击ok后,我们点击左上角Device旁边的更新按钮  进行packs更新即可。 4.安装Jlink或者STlink 在安装keil的时候其根目录ARM文件夹中有很多文件夹(注意要找到自己安装keil的根目录),其中一些其实是驱动,比如ULINK,ST-Link等。如下图: 找到ST-Link文件夹,进入USBDriver文件,64位系统以管理员身份运行dpinst_amd64.exe;32位系统以管理员身份运行dpinst_x86即可。    ...
优雅的胖子 发布于 2周前 阅读 5

Alpine Linux 安装到 Raspberry Pi

Alpine Linux 安装到 Raspberry Pi This tutorial will help you install Alpine Linux on your Raspberry Pi. Preparation This section will help you format and partition your SD card: Download Alpine for Raspberry Pi tarball which is named as alpine-rpi-<version>-armhf.rpi.tar.gz. You will need version 3.2.0 or greater if you have a Raspberry Pi 2. Mount your SD card to your workstation Use gnome-disks or fdisk to create a FAT32 partition. If you are using fdisk, the FAT32 partition type is called W95 FAT32 (LBA) and its ID is 0xC. Mark the newly created partition as bootable and save Mount the previously created partition Extract the tarball contents to your FAT32 partition Unmount the SD Card. Note: Due to a bug (#7024), you might want to add a "usercfg.txt" file (which is included by config.txt) with enable_uart=1 written in it. Otherwise, the error message "Can't open /dev/ttyS0" will repeatedly be written to the console. Installation Alpine Linux will be installed as diskless mode, ...
openthings 发布于 2个月前 阅读 9

h3c交换机console设置,并启用组合复用端口中的光口连接光纤

使用console线连接电脑和交换机。 使用超级终端登录com1,9600。 回车后再回车。 sys 查看当前状态 dis cu 查看组合复用端口的地址 进入端口设置 int g1/0/25 启用光口 combo enable fiber 保存设置 save 重启设备 ctr + z reoot
gugudu 发布于 2个月前 阅读 17

Banana pi BPI-Webduino:bit开发板

BPI-Webduino:bit开发板,配合webduino blockly图形化编程和云平台
bananapi 发布于 2周前 阅读 8

Raspberry Pi 3B下LEDE编译

openwrt现在维护的不如LEDE快,编译openwrt会出现很多错误,许多软件包的地址在官网都不存在了,所以推荐编译LEDE,出问题较少。 下载编译环境的一些依赖软件 sudo apt-get install subversion sudo apt-get install git-core sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils ncurses-term zlib1g-dev libncurses5-dev gawk 下载源代码到lede目录 git clone https://github.com/lede-project/source.git lede 更新最新的包定义并安装所有包  cd lede ./scripts/feeds update -a ./scripts/feeds install -a  检查编译工具是否齐全,并生成默认配置文件.config make defconfig 进入配置工具选项菜单,根据菜单选择目标平台 make menuconfig 树莓派3B的配置有点坑,藏的太深了,找了半天,实际上芯片是BCM2837,设置如下就可以 最后一步编译,一次成功,没有任何错误,就是时间长点 make  ...
googlewell 发布于 3个月前 阅读 7

斐讯 K3 A1 刷机经历

手残把 K3 升级了 21.6.11.58,所以经历了一些额外的步骤。 首先,众所周知路由器厂商升级都是为了封堵刷第三方的能力,所以在不使用 TTL 的情况下,必然考虑降级。 逛恩山论坛,发现了这篇好文 [[20180128] K3_V21.6.11.58 简单降级大招,直刷降级,最新出笼!](http://www.right.com.cn/forum/forum.php?mod=viewthread&tid=304185)。这里需要提醒的是,似乎只能使用作者配套的 21.5.37.246 官方版,无法直刷 root 版或者其他版本。 这里提一下 CFE 模式,可以说是官方提供的刷机工具。进入方式是:在关机状态下,按住 RESET 开机并保持 5s,检查方法是:Windows 打开 cmd,输入命令 `ping 192.168.2.1 -t`,若 TTL=64 说明是普通模式,若 TTL=100 说明是 CFE 模式。 出厂版本 V21.4.31.212、V21.4.33.217、V21.5.37.246 集成的 CFE 编译日期是3月10日,新出厂版本 V21.5.39.260 集成的 CFE 编译日期是8月2日,斐讯封堵了CFE网页执行命令,而且固件采用公私钥验证,因此通过 CFE 手动执行命令刷第三方包的方式被堵死了。 普通模式下只能升级刷包,CFE 下可以降级刷包,因此从 21.6.11.58 到 21.6.11.58p 可以在普通模式下进行,而 21.6.11.58p 到 21.5.37.246 是在 CFE ...
傅易 发布于 3天前 阅读 24

手机内部芯片

金立M6采用MT6755V处理器,这颗处理器拥有8个A53架构的核心,核心频率为1.8GHz MT6176V是一颗功率放大芯片,用于处理手机的的信号,支持双载波,支持FDD和TDD的LTE信号,最高支持300Mbps的速率。 MT6351是一颗电源管理芯片,主要负责CPU的供电管理。 MT6625是一颗多功能芯片,集成蓝牙、WiFi、GPS、FM功能。 skywork77643是一颗手机信号的射频新品,负责手机信号的发射与接收处理。 SKY77916-11是一颗信号功率放大器,支持GSM/TD-SCDMA/TD-LTE网络信号。 VEB A3是一颗硬件安全加密新品,这颗新品在网上的资料并不多,这颗芯片可能与国内一家做安全手机品牌VEB有关,A3估计是第三代的新品。金立M6的私隐空间2.0以及专线通话的加密都通过这颗芯片进行硬件加密。
whoisliang 发布于 1周前 阅读 4

MT6169射频开关RF Switch对照表

![输入图片说明](https://static.oschina.net/uploads/img/201802/11222354_KL2M.png "在这里输入图片标题")
whoisliang 发布于 1周前 阅读 2

汇编语言-第四章 第一个程序

# 一个源程序从写出到执行的过程 >- **编写汇编源程序** >- **对源程序进行编译链接** >*** >1.使用 汇编语言编译程序对源程序文件中的源程序进行编译,产生目标文件。 >2.用链接程序对目标文件进行连接,生成可在操作系统中直接运行的可执行文件。 >其中,可执行文件包含两部分内容: >- 程序(从源程序中的汇编指令翻译过来的机器码)和数据(源程序中定义的数据) >- 相关的描述信息(比如,程序有多大、要占用多少内存空间)。 >*** >- **执行可执行文件中的内容** >操作系统按照可执行文件中的描述信息,将可执行文件中的机器码和数据加载入内存,并进行相关的初始化(比如设置CS:IP指向第一条要执行的指令),然后由CPU执行程序。 # 源程序 ## 1. 伪指令 >汇编语言中包含两种指令: >- ** 汇编指令** >有对应的机器码的指令,可以被编译为机器指令,最终为CPU所执行。 >- 伪指令: >没有对应的机器指令,最终不被CPU所执行。 **伪指令是由编译器来执行的指令,编译器根据伪指令来进行相关的编译工作。** ## 例子 ~~~ assume cs:codesg codes segment start: mov ax,0123H mov bx,0456H add ax,bx add ax, ax mov ax,4c00H int 21H codes ends end ~~~ >segment和end...
Frost729 发布于 2周前 阅读 15

汇编语言-第三章 寄存器(栈存储)

# 3.6 栈 栈是一种具有特殊的访问方式的存储空间。 栈有两个最基本的操作:入栈和出栈。 栈的操作规则为:LIFO(后进先出,Last In First Out) # 3.7 CPU提供的栈机制 现今的CPU中都有栈的设计。 8086CPU提供相关的指令来以栈的方式访问内存空间。这意味着,我们在基于8086CPU编程的时候,可以将一段内存当作栈来使用。 8086CPU的入栈和出栈操作都是以字为单位进行的。 在内存中划分一块出来当作栈,这就是栈的本质。 CPU如何知道栈顶的具体位置?显然,也应该有相应的寄存器来存放栈顶的地址。 8086寄存器中有两个寄存器:**段寄存器SS**和**寄存器SP**。 栈顶的段地址存放在SS中,偏移地址存放在SP中。**在任意时刻,SS:SP指向栈顶元素。** push指令和pop指令执行时,CPU从SS和SP得到栈顶的地址。 >push ax的执行,由下面两步之行: >- SP=SP-2,SS:SP指向的内存单元处,以当前栈顶前面的单元为新的栈顶 >- 将ax中的内容送入SS:SP指向的内存单元出,SS:SP此时指向新栈顶。 >pop ax 的执行过程和push ax相反,由以下两步完成: >- 将SS:SP指向的内存单元处的数据送入ax中 >- SP=SP+2.SS:SP指向当前栈顶下面的单元,以当前栈顶下面的单元为新的栈顶。 # 3.8栈顶超界问...
Frost729 发布于 2周前 阅读 3

汇编语言-第三章 寄存器(内存访问)

# 3.1 内存中字的存储 在内存中存储时,由于内存单元是字节单元(一个单元存放一个字节),则一个字要用两个地址连续的内存单元来存放,这个字的低位字节存放在低地址单元中,高位字节存放在高地址单元中。 **字单元**,即存放一个字型数据(16位)的内存单元,由两个地址连续的内存单元组成。 # 3.2 DS和[address] CPU要读写一个内存单元的时候,必须先给出这个内存单元的地址,在8086PC中,内存地址由段地址和便宜地址组成。 8086CPU中有一个DS寄存器,通常用来存放要访问数据的段地址。 ### 例子1: > 读取10000H中的内容,可以用如下的程序段进行: >~~~ >mov bx 1000H //10000H用段地址和偏移地址表示为1000:0 >mov ds,bx >mov al,[0] //[0]中的0说明这个内存单元的偏移地址是0, > //它的段地址默认放在ds中 >~~~ >8086CPU不支持将数据直接送入段寄存器的操作(这是8086CPU硬件设计的问题),ds是一个段寄存器,所以mov ds,1000H是非法的。 >要想将1000H送入ds寄存器,只能用一个寄存器进行中专,即先将1000H送入一个一般的寄存器,如bx,再将bx中的内容送入ds。 >- 1000H表示段地址 >- [0]表示偏移地址是0 ### 例子2 >将al中的数据送入内存单元10000H中 >~~~ >mov ...
Frost729 发布于 2周前 阅读 8

实验一 查看CPU和内存,用机器指令和汇编指令编程

注意观察图中,CS和IP的值: CS:IP处的地址就是CPU当前要读取、执行的指令。 Debug还列出了CS:IP所指向的内存单元处所存放的机器码,并将它翻译成为汇编治指令。 图中,CS:IP所指向的内存单元为**0AE1:0100**,此处存放的机器码为 **DF9989916**,对应的汇编指令为: ~~~ FISTP WORD PTR [BX+DI+1689] ~~~ 还可以用R命令来修改寄存器中的内容: ![R命令修改寄存器内容.PNG](http://upload-images.jianshu.io/upload_images/104057-7aaac0406c68f1b5.PNG?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) (5)使用debug中的D命令查看内存中的内容。 我们使用“**D 段地址:偏移地址**”的格式来查看某个内存中的内容。比如查看内存10000H中的内容,地址格式是1000:0,然后用"**D 1000:0**"列出1000:0处的内容: ![D命令查看内存中内容.PNG](http://upload-images.jianshu.io/upload_images/104057-365cc5fe88dd5b90.PNG?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 使用“**D 段地址+偏移地址**”的格式,Debug将列出从指定内存单元开始的128个内存单元的内容。 比如,我们运行命令“**D 0AE1:0100**”,结果如图所示: ![D命令运行结果.PNG](http://upload...
Frost729 发布于 2周前 阅读 6

汇编语言-第二章 寄存器(CPU工作原理)之执行指令过程(二)

设CPU初始状态: **CS=2000H** **IP=0000H** 内存中存放的机器码和对应的汇编指令如图: ![内存中存放的机器码和对应的汇编指令.jpg](http://upload-images.jianshu.io/upload_images/104057-26268ca39ff5a95d.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 上图对应的指令执行过程如下: >- (1)mov ax,6622 >- (2)jmp 1000:3 >- (3)mov ax,0000 >- (4)mov bx,ax >- (5)jmp bx >- (6)mov ax,0123H >- (7)转到第三步执行
Frost729 发布于 2周前 阅读 5

汇编语言-第二章 寄存器(CPU工作原理)之执行指令过程(一)

<1>.初始状态:这时,CS:2000H,IP:0000H,CPU将从内存**2000H×16+0000H**处取指令执行。 ![初始状态.jpg](http://upload-images.jianshu.io/upload_images/104057-1ef65836e5e60bf4.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) <2>.CS、IP中的内容送入地址加法器,由地址加法器完成: **物理地址=段地址×16+偏移地址** ![CS、IP中的内容送入地址加法器.jpg](http://upload-images.jianshu.io/upload_images/104057-ddace71ccdcb5af0.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) <3>.由地址加法器将物理地址送入输入输出控制电路。 ![物理地址被送入输入输出控制电路.jpg](http://upload-images.jianshu.io/upload_images/104057-3ae8a3bef1625fc8.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) <4>.输入输出控制电路将物理地址20000H送上地址总线 ![物理地址被送上地址总线.jpg](http://upload-images.jianshu.io/upload_images/104057-345310fbad6fc1b9.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) <5>.从内存20000H单元开始存放的机器指令B8 23 01通过数据总线被传入CPU ![机器指令被送入CPU.jpg](http://upl...
Frost729 发布于 2周前 阅读 8

汇编语言-第二章 寄存器(CPU工作原理)

# 概述 一个典型的CPU由运算器、控制器、寄存器等器件构成,这些器件靠内部总线相连接。 内部总线实现CPU内部各个器件之间的联系,外部总线实现CPU和主板上其他器件的联系。 >简单来说,在CPU中: >- 运算器进行信息处理 >- 寄存器进行信息存储 >- 控制器控制各种器件进行工作 >- 内部总线连接各种器件,在它们之间进行数据的传送 寄存器是CPU中程序员可以用指令读写的部件。程序员通过改变各种寄存器中的内容来实现对CPU的控制。 不同的CPU,寄存器的个数、结构是不同的。 # 2.1 通用寄存器 通用寄存器通常用来存放一般性的数据。 # 2.2 字在寄存器中的存储 出于对兼容性的考虑,8086CPU可以一次性处理两种尺寸的数据: >- 字节:记为byte,一个字节由8个比特(即二进制位)组成,可以存在8位寄存器中。 >- 字:记为word,一个字由两个字节组成,这两个字节分别称为这个字的高位字节和低位字节。 # 2.3 几条汇编指令 # 2.4 物理地址 CPU通过地址总线送入存储器的必须是一个内存单元的物理地址。 在CPU向地址总线上发出物理地址之前,必须在内部先形成这个物理地址。 不同的CPU可以有不同的形成物理地址的方式。 # 2.5 16位结构的CPU >16位结构的CPU具有下面几方面的结构特...
Frost729 发布于 2周前 阅读 284 评论 1

晶体管的分类&作用

晶体管分两类: 1.双极性晶体管(BJT),是电流控制器件(基极电流控制集电极电流或发射极电流); 2.场效应晶体管(FET),是电压控制器件(栅极电压控制漏极电流或源极电流); 场效应管的G(栅极),D(漏极),S(源极)对应(类似)双极性晶体管的B(基极),C(集电极),E(发射极);
一郎 发布于 2周前 阅读 4

Banana pi BPI-Webduino:bit开发板

BPI-Webduino:bit开发板,配合webduino blockly图形化编程和云平台
bananapi 发布于 2周前 阅读 8

嵌入式编程开发环境搭建

1.IDE开发环境下载 ARM编译器KEIL MDK,可以从相应的KEIL官网进行相应的下载。目前最新版为V5.24A 官网下载地址:https://www.keil.com/demo/eval/arm.htm 其他版本的下载地址:http://www.keil.com/update/rvmdk.asp 2.安装KEIL MDK 这里我们选择安装5.23版本的,双击安装文件 在之后出来的窗口中点击next,下面的这个步骤可以选择程序在磁盘上的安装地址和库文件的保存地址。 下面的步骤中,出现的输入框随便填就ok,填好之后,点击next就开始安装了。 3.安装MCU 支持包。 通过上面的步骤,我们已经安装好了keil,现在点击桌面上的图标,打开编辑器 在出现的窗口中点击pack installer也就是我标注红色方框的部分。 点击ok后,我们点击左上角Device旁边的更新按钮  进行packs更新即可。 4.安装Jlink或者STlink 在安装keil的时候其根目录ARM文件夹中有很多文件夹(注意要找到自己安装keil的根目录),其中一些其实是驱动,比如ULINK,ST-Link等。如下图: 找到ST-Link文件夹,进入USBDriver文件,64位系统以管理员身份运行dpinst_amd64.exe;32位系统以管理员身份运行dpinst_x86即可。    ...
优雅的胖子 发布于 2周前 阅读 5

安装Raspberry pi操作系统(Windows环境下)

安装RASPBIAN
Houor 发布于 3周前 阅读 21

SylixOS与硬件设备连接问题——硬件设备串口、网口连接问题

硬件设备串口、网口连接问题
Esc130 发布于 3周前 阅读 11

SylixOS与硬件设备连接问题——硬件设备串口、网口连接问题

SylixOS与硬件设备连接出现的问题介绍 一般情况下,用户可以通过串口、网口与硬件设备进行交互通信,当其中某一种连接方式出现问题的时候,可以通过另外一种连接方法进行弥补。本章节将介绍一种比较特殊的情况下,如何通过其他方式获取本机IP进行通信。 在SylixOS下硬件设备的IP地址一般情况下是可更改的,某些时候用户会忘记自己修改的IP地址,一般情况下,用户可以通过串口连接,用相应的shell指令来获取本机IP。但是有些设备并没有串口,或者串口被占用了,又应该怎么办呢? 问题解决方案 2.1 串口占用的问题 串口被占用的方式有很多种,下面介绍其中的一种常见的问题以及相应的解决方式。 在I.MX6Q实验箱中,可以在startup.sh中设置开机自启动程序。在设置过程中将其设置为前台运行,如图 2.1所示。设备开机后串口将一直被占用,此时无法通过串口与设备端进行连接。如图 2.2所示。 图 2.1 设置开机自启动 图 2.2 串口无法连接 应对这种情况,可以通过网口与设备连接,然后停止设备中自启动程序的运行即可。如图 2.3所示。 图 2.3 停止运行开机自启程序 或将开机自启动文件中的开机自启动程序后加上“&”修改为后台运行模式,如所示。重启系统后即可通过串口连接硬件设备...
Esc130 发布于 3周前 阅读 2

Windows10与linux Ubuntu双系统安装

的那些坑
涅文正 发布于 4周前 阅读 16

Alpha、Beta、RC、GA、Release版本号的含义

       现在开源软件遍布天下,常常在实践中纠结该使用软件的哪些版本是比较合适的,因此有必要对常见软件版本号的含义有一些基本的了解。        本文就对常见的一些软件版本号的含义做一些简要说明。 Alpha:              Alpha是内部测试版,一般不向外部发布,通常会有很多Bug,除非你也是测试人员,否则不建议使用,alpha 就是α,是希腊字母的第一位,表示最初级的版本,beta 就是β,alpha 版就是比beta还早的测试版,一般都是内部测试的版本。 Beta:              该版本相对于α版已有了很大的改进,消除了严重的错误,但还是存在着一缺陷,需要经过多次测试来进一步消除。这个阶段的版本会一直加入新的功能。        RC:               RC(Release Candidate),发行候选版本。和Beta版最大的差别在于Beta阶段会一直加入新的功能,但是到了RC版本,几乎就不会加入新的功能了,而主要着重于除错。RC版本是最终发放给用户的最接近正式版的版本,发行后改正bug就是正式版了,就是正式版之前的最后一个测试版。 GA:               GA(general availability), 正式发布的版本。 比如:MyS...
明MikeWoo 发布于 4周前 阅读 13

比较器阈值计算

        (以下算法若有错误,欢迎指正)         首先要说明,比较器的输出端是三极管的集电极,而该三极管发射极接地。所以如果比较器输出低电平,意味着该三极管导通;如果是高电平,则该三极管阻塞,但是因为输出接在集电极上,外部要接上拉电阻来体现高电平。         1.发生翻转是因为比较器正向输入端和负向输入端电位高低发生逆转,而逆转那一瞬间,两端电位相同,这个情况跟运放在线性区时的“虚短”一样,尽管原理不同。         2.正向翻转前一瞬间,即原先是低电平,内部的那个三极管是导通的,也就是说输出端接地;         3.反向翻转前一瞬间,即原先是高电平,输出端处在三极管阻塞状态,而这个电位是多少,要看输出端电路,一般情况下是VCC;         4.比较器的虚断与运放一致(输入电阻无穷大,输出电阻为0); 结合以上,再加上电流的计算,基本可以求出两个翻转点。           《模电》里的计算步骤: 1:列出Un,Up的计算公式; 2:使Un=Up,计算Ui,该Ui就是阈值电压;
一郎 发布于 1个月前 阅读 11

MT7688 spi bus 驱动 数据移位问题

MTK的SPI BUS驱动   spi-mt7621.c 问题, 由于CS>0 之后,使用的是 全双工了,但是 全双工的驱动有问题。 CS=0 的时候,连接板载的SPI-FLASH,用的是 半双工,没问题。   static int mt7621_spi_transfer_one_message(struct spi_master *master,                        struct spi_message *m) {     struct spi_device *spi = m->spi;     int cs = spi->chip_select;       if (cs)         return mt7621_spi_transfer_full_duplex(master, m);     return mt7621_spi_transfer_half_duplex(master, m); }  
何凯峰 发布于 1个月前 阅读 9

JavaScript在物联网中的应用

在那篇《最流行的编程语言JavaScript能做什么?》里,我们列举了JavaScript在不同领域的使用情况,今天让我们来详解一下JavaScript在物联网中的应用。
Phodal 发布于 2年前 阅读 4397 评论 8 点赞 2

​黑科技:程序猿如何打造属于自己的分体键盘

之前一直想买个机械键盘,听说机械键盘敲代码和玩游戏都特别爽,也是装B神器。同时也觉得普通的键盘打字打久了手腕会有点酸酸的,因为敲键盘时都是要弯着手腕的,一点也不符合人体工程学。于是乎就想买一个分体的机械键盘,结果找了半天都没有比较中意的,找到几个人体工程学键盘,都是薄膜的,而且价格高得离谱,不就多个人体工程学光环嘛。。。
腾讯Bugly 发布于 2年前 阅读 5493 评论 40 点赞 16

Linux下TTL串口登录pcDuino V2

在没有显示器和网线的情况下,串口是连接pcDuino V2的不二选择。本文主要记录了我在LINUX下通过USB-TTL转接连接pcDuino V2 的过程步骤,仅供参考!
HilerChen 发布于 3年前 阅读 3743 评论 12 点赞 3

树莓派使用DHT11温湿度传感器

通过树莓派的GPIO口连接DHT11温湿度传感器,读取温湿度数据。成功使用wiringpi实现,pi4j失败。
李鱼跃龙门 发布于 4年前 阅读 18671 评论 18 点赞 13

Java 9 新特性概述

Java 9 正式发布于 2017 年 9 月 21 日 。作为 Java8 之后 3 年半才发布的新版本,Java 9 带 来了很多重大的变化。其中最重要的改动是 Java 平台模块系统的引入。除此之外,还有一些新的特性。 本文对 Java9 中包含的新特性做了概括性的介绍,可以帮助你快速了解 Java 9
IBM Cloud

dell服务器远程获取硬件状态

以dell的R620型号的服务器做的测试 登陆上dell服务器ilo的IP地址,首先打开ipmi,ilo2是直接支持ipmi2.0的 此框需要点击 “IDRAC设置”->“网络”->“IPMI设置”在”启用LAN上IPMI“后的复选框打钩,才能启动ipmi 好像是内置到了ilo2,应该是,这个不是太确定,但是我能确定的是,ipmitool获取数据的时候直接可以使用ilo的账户密码 [root@manrhca script]# ipmitool  -I lan -H 192.168.232.200 -U root -P calvin sdr SEL              | Not Readable      | ns Intrusion        | 0x00              | ok Fan1A RPM        | 2160 RPM          | ok Fan2A RPM        | 2160 RPM          | ok Fan3A RPM        | 2160 RPM          | ok Fan4A RPM        | 2160 RPM          | ok Fan5A RPM        | 2160 RPM          | ok Fan6A RPM        | 2280 RPM          | ok Inlet Temp       | 21 degrees C      | ok Exhaust Temp    ...
薄皮儿脆沙瓤 发布于 4年前 阅读 8928 评论 2 点赞 4

[翻译完成] 用红外遥控器遥控树莓派

概述 本篇教程将会讲解如何用一部红外遥控器来遥控操作树莓派上安装的影音中心. 在开始之前, 你需要按此教程把树莓派搭建为影音中心. 需要的零件 在搭建好了影音中心之后, 你需要去买些零件. 名称 数量 红外传感器 http://adafruit.com/products/157 1 红外遥控器 http://adafruit.com/products/389 1 母对母杜邦线 http://adafruit.com/products/794 1 硬件连接 红外传感器只有三个引角, 都需要连上树莓派的GPIO管脚. 我们需要用到母对母杜邦线把它们连上. 好的杜邦线连上红外传感器会使得连接更可靠些. 按下图所示进行连接. 跳线的颜色无关紧要, 只是不同颜色更容易区分. 要注意在树莓派上用红外传感器需要3.3V电压, 千万别用5V. LIRC 树莓派和遥控器的通讯通过LIRC (Linux Infrared Remote Control)完成. 大多数树莓派发行版都已经预装了, 所以在Rasbmc上我们就不需要再安装了, 只需做些设置即可. 为了确保红外硬件正常工作, 我们可以用SSH连接安装好XBMC的树莓派来测试下. 如果你从没用过SSH,请看此教程. 在XBMC的系统信息界面我们可以获得树莓派的IP地址. 我们需要关掉红外功能, 要不然我们无法通过SSH使用LIRC. 进入XMBC的设置界面, 然后将"Enable GPIO TSOP IR Re...
八宝粥 发布于 5年前 阅读 14720 评论 16

[翻译完成] 树莓派搭建hadoop集群

Hadoop是由Java实现的, 所以在树莓派上运行就和在其他x86平台上运行一样简单. 首先, 我们需要安装支持树莓派的JVM. 可以选用OpenJDK或者Oracle的JDK 8. 我个人推荐JDK8, 其速度稍微快些, 但是OpenJDK安装更容易些. 1. 安装Java 安装OpenJDK十分简单, 只要执行以下命令 pi@raspberrypi ~ $ sudo apt-get install openjdk-7-jdk pi@raspberrypi ~ $ java -version java version "1.7.0_07" OpenJDK Runtime Environment (IcedTea7 2.3.2) (7u7-2.3.2a-1+rpi1) OpenJDK Zero VM (build 22.0-b10, mixed mode) 另外, 我们可以选择安装Oracle的JDK 8. 可以从这获得: https://jdk8.java.net/fxarmpreview/index.html pi@raspberrypi ~ $sudo tar zxvf jdk-8-ea-b36e-linux-arm-hflt-*.tar.gz -C /opt pi@raspberrypi ~ $sudo update-alternatives --install "/usr/bin/java"  "java" "/opt/jdk1.8.0/bin/java" 1  pi@raspberrypi ~ $ java -version java version "1.8.0-ea" Java(TM) SE Runtime Environment (build 1.8.0-ea-b36e) Java HotSpot(TM) Client VM (build 25.0-b04, mixed mode) 如果你两个都装了, 用以...
八宝粥 发布于 5年前 阅读 9871 评论 19 点赞 4

基于Android平台的无线传感器网络(ZigBee)监控系统

ZigBee协议实现的WSN,由ZigBee协议的传感节点组成,完成数据采集、处理、上传,执行控制命令。 JavaWeb实现的服务端,由RS232通信,数据解析,持久化层,面向移动终端的Web通信等模块组成。web部分包括了HTTP及XMPP协议的推送服务。 Android平台上的WSN监控软件。
Change_Ty 发布于 5年前 阅读 10656 评论 44 点赞 4
顶部