登入帳戶  | 訂單查詢  | 購物車/收銀台( 0 ) | 在線留言板  | 付款方式  | 運費計算  | 聯絡我們  | 幫助中心 |  加入書簽
會員登入 新用戶登記
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類瀏覽雜誌 臺灣用戶
品種:超過100萬種各類書籍/音像和精品,正品正價,放心網購,悭钱省心 服務:香港台灣澳門海外 送貨:速遞郵局服務站

新書上架簡體書 繁體書
暢銷書架簡體書 繁體書
好書推介簡體書 繁體書

三月出版:大陸書 台灣書
二月出版:大陸書 台灣書
一月出版:大陸書 台灣書
12月出版:大陸書 台灣書
11月出版:大陸書 台灣書
十月出版:大陸書 台灣書
九月出版:大陸書 台灣書
八月出版:大陸書 台灣書
七月出版:大陸書 台灣書
六月出版:大陸書 台灣書
五月出版:大陸書 台灣書
四月出版:大陸書 台灣書
三月出版:大陸書 台灣書
二月出版:大陸書 台灣書
一月出版:大陸書 台灣書

『簡體書』从芯片到云端:Python物联网全栈开发实践

書城自編碼: 3078860
分類:簡體書→大陸圖書→計算機/網絡圖形圖像/多媒體
作者: 刘凯 著
國際書號(ISBN): 9787121311277
出版社: 电子工业出版社
出版日期: 2017-10-01
版次: 1
頁數/字數: 724/1014000
書度/開本: 16开 釘裝: 平装

售價:HK$ 172.6

我要買

 

** 我創建的書架 **
未登入.


新書推薦:
世界服饰艺术史
《 世界服饰艺术史 》

售價:HK$ 309.6
海外中国研究·卿本著者:明清女性的性别身份、能动主体和文学书写
《 海外中国研究·卿本著者:明清女性的性别身份、能动主体和文学书写 》

售價:HK$ 81.6
日耳曼通识译丛:近代哲学:从笛卡尔到康德
《 日耳曼通识译丛:近代哲学:从笛卡尔到康德 》

售價:HK$ 32.2
我的灵魂是日落时分空无一人的旋转木马:聂鲁达诗精选
《 我的灵魂是日落时分空无一人的旋转木马:聂鲁达诗精选 》

售價:HK$ 81.6
春日喜你
《 春日喜你 》

售價:HK$ 55.0
我们八月见
《 我们八月见 》

售價:HK$ 46.0
东线炼狱 : 德国反坦克兵的东线日记 : 1941—1942
《 东线炼狱 : 德国反坦克兵的东线日记 : 1941—1942 》

售價:HK$ 94.2
献给皇帝的礼物:Wedgwood瓷器王国与漫长的十八世纪
《 献给皇帝的礼物:Wedgwood瓷器王国与漫长的十八世纪 》

售價:HK$ 127.4

 

建議一齊購買:

+

HK$ 100.1
《 数据结构 Python语言描述 》
+

HK$ 71.1
《 PySpark实战指南:利用Python和Spark构建数据密集型应用并规模化部署 》
+

HK$ 71.1
《 Python数据科学入门 》
+

HK$ 85.6
《 IoT开发实战:CoAP卷 》
+

HK$ 100.1
《 跟老齐学Python:Django实战 》
編輯推薦:
Python全栈是降低物联网开发复杂度的必由之路
物联网应用系统的快速开发和系统扩展可以兼顾
物联网系统设计比互联网系统设计更受限更复杂
全覆盖应用、产品、生态的全局视角与选型思路
內容簡介:
物联网开发重新定义了全栈开发的范围。Python作为一门快速发展的语言,已经成为系统集成领域的优选语言之一,其可覆盖从电路逻辑设计到大数据分析的物联网端到端开发。各领域开发者可以利用Python交叉涉足物联网设备、边缘计算、云计算、数据分析的工程设计。本书尝试让读者建立物联网设计的整体概念,从基础概念开始,到相关技术选型、开源工程、参考设计与经验分享。无论是物联网领域的创业者,还是系统架构师,都可从本书中获得灵感。本书对于嵌入式开发领域的开发者尤具学习价值,利用Python可加快开发迭代速度、降低开发成本,并可以基于嵌入式Python建立完整的物联网软硬件生态。
關於作者:
刘凯,服务于微电子行业二十余载的资深工程师。曾在飞利浦半导体(即NXP恩智浦半导体前身)任资深工程师,从事软、硬件开发与产品设计等工作,有用汇编CC开发嵌入式系统固件、用PerlPython脚本做开发支持工具、用PHPJavaPython做设备云和Web应用的丰富经验。现作为独立系统集成开发商,专业从事物联网相关项目设计和咨询服务,主攻嵌入式、RFID、微控制器、物联网、WSN、Linux、Python、开源等领域。
目錄
第1章物联网简介1
1.1物联网定义1
1.2物联网发展趋势1
1.3物联网应用与技术2
1.3.1物联网核心价值2
1.3.2物联网发展阶段3
1.3.3物联网分层5
1.3.4物联网数据传输与网络拓扑5
1.3.5物联网实施所需技术栈8
1.3.6标准、现状与未来10
1.4本章小结16
第2章Python语言基础17
2.1Python的由来与特征19
2.1.1概述19
2.1.2设计定位与哲学19
2.1.3优点与缺点20
2.2Python与物联网开发22
2.3获取Python资源24
2.3.1Python主程序24
2.3.2Python文档24
2.3.3Python PyPI24
2.4Python解释器运行环境26
2.4.1REPL交互模式26
2.4.2直接运行与模块运行26
2.4.3脚本文件直接运行27
2.4.4源程序文字编码与结束符28
2.5Python类型与语法29
2.5.1动态类型29
2.5.2传值与传引用30
2.5.3数据类型31
2.5.4内置类型32
2.5.5内置类型的普适操作34
2.5.6数值类型35
2.5.7布尔类型37
2.5.8迭代器类型37
2.5.9生成器类型38
2.5.10yield表达式39
2.5.11序列类型39
2.5.12set集合类型54
2.5.13映射类型55
2.5.14其他类型56
2.5.15控制流59
2.5.16内置函数61
2.5.17用户自定义函数62
2.5.18模块65
2.5.19输入输出68
2.5.20面向对象编程74
2.5.21进程和线程82
2.5.22错误和异常90
2.6Python标准库概览93
2.7本章小结94
第3章Python语言进阶95
3.1HOWTO:常见任务和解决方案95
3.1.1数据类型转换96
3.1.2数据的调试打印100
3.1.3数据类型资源优化102
3.1.4数据结构与算法102
3.1.5数据缓存103
3.1.6数据多路复用和解复用104
3.1.7数据序列化和反序列化107
3.1.8数据压缩和解压缩119
3.1.9数据加密120
3.1.10数据传输121
3.1.11数据后处理121
3.1.12数据持久化121
3.1.13数据交换122
3.2HOWTO:函数式编程123
3.2.1高阶函数123
3.2.2map函数124
3.2.3reduce函数124
3.2.4filter函数124
3.2.5sorted函数125
3.2.6返回函数125
3.2.7闭包126
3.2.8匿名函数126
3.2.9装饰器127
3.3HOWTO:并发运行模型131
3.3.1协程131
3.3.2IO模型134
3.4HOWTO:日期与时间136
3.4.1类型转换136
3.4.2时区的处理138
3.5Python版本迁移139
3.5.1Python 2与Python 3的区别140
3.5.2Python 2到Python 3的流程140
3.5.3多个Python版本共存140
3.5.4virtualenv141
3.5.5Windows多个版本共存141
3.5.6Linux多个版本共存142
3.6其他常见技巧143
3.6.1常数类型的模拟143
3.6.2枚举类型的模拟143
3.6.3开发自定义模块144
3.7Python与其他语言145
3.8Python语言扩展151
3.8.1C语言扩展Python151
3.8.2ctypes访问Windows DLL153
3.8.3Jython访问Java类154
3.8.4IronPython访问.NET155
3.9Python加速157
3.9.1PyPy158
3.9.2Cython159
3.9.3PyCUDA159
3.9.4PyOpenCL159
3.9.5Theano159
3.9.6Nuitka159
3.10本章小结160
第4章嵌入式系统开发161
4.1嵌入式系统硬件分类162
4.1.1MCU162
4.1.2MPU163
4.1.3DSP163
4.1.4SMP164
4.1.5异构大小核164
4.1.6FPGA原型165
4.1.7SoPC165
4.1.8GPU167
4.1.9哈佛结构和冯?诺依曼结构168
4.2电路原型设计168
4.2.1集成电路设计流程170
4.2.2模拟电路原型设计170
4.2.3数字电路原型设计175
4.3常见嵌入式微控制器(MCU)179
4.3.1MCU市场状况179
4.3.2ArduinoWiring180
4.3.3ARM mbed181
4.3.4设计专属架构和专属MCU182
4.3.5ARM MCU差异化竞争182
4.4常见嵌入式处理器和主板184
4.4.1ARM架构185
4.4.2其余的ARM Linux主板188
4.4.3MIPS开发板190
4.4.4x86 mini-ITX191
4.5常见传感器和执行器192
4.5.1虚拟传感器193
4.5.2智能传感器193
4.5.3专用传感器194
4.5.4执行器195
4.6物联网通信集成电路196
4.7嵌入式系统开发语言演进197
4.7.1从汇编到嵌入式C197
4.7.2从C到C199
4.7.3压缩C的系统消耗199
4.7.4C适合物联网开发200
4.8CC的编程模式和技巧204
4.8.1CC设计模式205
4.8.2回调函数206
4.8.3有限状态机模型209
4.8.4善用结构体211
4.8.5CC协程214
4.9开发生态选择215
4.9.1工业标准与厂家私有指令集架构215
4.9.2硬件与软件平台选择215
4.9.3编译器选择216
4.10常见操作系统217
4.10.1无操作系统217
4.10.2RTOS的优势218
4.10.3uCOS219
4.10.4Keil RTX219
4.10.5mbed RTOS与mbed OS220
4.10.6FreeRTOS221
4.10.7Linux是开发复杂联网设备的现实选择222
4.11物联网中间件227
4.11.1WSN堆栈227
4.11.2TCPIP227
4.11.3USB227
4.11.4FATFS228
4.11.5GUI228
4.11.6Terminal228
4.11.7MQTT228
4.11.8CoAP229
4.12物联网安全性230
4.12.1安全相关芯片230
4.12.2安全中间件231
4.12.3Python安全算法232
4.13设备固件更新232
4.13.1固件更新技术发展史232
4.13.2本地固件更新234
4.13.3远程固件更新234
4.13.4固件升级定制234
4.14各类串口实现联网235
4.14.1串口协议的选择235
4.14.2模拟串口设备236
4.14.3其他类型虚拟设备238
4.14.4ISP编程器238
4.14.5串口设备监控器239
4.15本章小结239
第5章设备连接和编程接口240
5.1设备连接概述240
5.1.1嵌入式系统连接层次240
5.1.2 选择正确的连接方案241
5.1.3具体落实连接设计241
5.1.4本章内容安排242
5.2连接能力汇总242
5.2.1连接由芯片开始243
5.2.2芯片内部系统总线245
5.2.3芯片间连接技术246
5.2.4设备间连接249
5.2.5设备组网250
5.2.6设备组网与联网的无线技术253
5.2.7连接性回顾266
5.3Linux文件系统266
5.3.1设备即文件266
5.3.2设备文件系统267
5.3.3Linux设备文件的演变268
5.3.4文件IO操作271
5.3.5Linux硬件编程272
5.4并行接口273
5.4.1老旧的PC并行接口274
5.4.2高速总线274
5.4.3GPIO274
5.4.4Linux访问GPIO275
5.4.5GPIO的Python包276
5.5串行接口277
5.5.1异步通信串行口277
5.5.2I2C总线284
5.5.3SPI总线290
5.5.4与其他硬件平台相关的Python包294
5.6USB总线296
5.6.1USB Endpoints297
5.6.2USB DeviceHostOTG297
5.6.3USB 3.0297
5.6.4libUSB297
5.6.5PyUSB298
5.6.6标准化USB桥接299
5.6.7与USB相关的其他设计301
5.7Linux网络设备驱动301
5.7.1TCPIP套接字编程301
5.7.2IEEE 802.3到IEEE 802.11302
5.7.3网络通信实现方案302
5.7.4私有通信协议栈305
5.7.5短距离无线连接307
5.8工业总线310
5.8.1CAN总线310
5.8.2LIN总线312
5.8.3其他ASIC313
5.8.4定制Python扩展313
5.8.5Windows DLL314
5.9本章小结314
第6章嵌入式Python虚拟机315
6.1嵌入式高级语言平台大荟萃315
6.1.1高级语言与二次开发315
6.1.2BASIC319
6.1.3Java319
6.1.4Lua322
6.1.5JavaScript322
6.1.6.NET323
6.2前一代Python虚拟机323
6.2.1Telit GPRS模块323
6.2.2Symbian325
6.2.3Windows CE325
6.2.4OpenMoko325
6.3深嵌入式Python平台326
6.3.1LEGO EV3326
6.3.2TinyPy326
6.3.3嵌入式Python的局限327
6.4PyMite328
6.4.1硬件平台328
6.4.2维护者329
6.4.3pymbed分支329
6.4.4开发现状331
6.4.5文档332
6.4.6源码树333
6.4.7使用流程335
6.4.8实践336
6.4.9工程小结337
6.4.10网络资源338
6.5VIPERZerynth338
6.5.1硬件平台339
6.5.2Zerynth Studio340
6.5.3与标准Python的区别341
6.5.4快速启动342
6.5.5坎坷的使用过程342
6.5.6Zerynth目录结构343
6.5.7硬件相关库344
6.5.8其他特性355
6.6MicroPython356
6.6.1工程背景知识356
6.6.2在线评估网页358
6.6.3官方硬件平台分支358
6.6.4衍生项目359
6.6.5UNIX版本360
6.6.6MicroPython库363
6.6.7STM32HAL分支365
6.6.8NUCLEO-F401RE适配367
6.6.9pyboard评估372
6.6.10异步处理和中断处理389
6.6.11中断处理的普遍问题392
6.6.12使用心得395
6.6.13商品化与知识产权396
6.6.14BBC microbit396
6.7Linux与Python398
6.7.1Linux中Python的运行环境398
6.7.2交叉编译CPython401
6.7.3交叉编译MicroPython402
6.7.4Jython运行环境404
6.7.5Android SL4A406
6.8本章小结407
第7章Python应用APP408
7.
內容試閱
自序
笔者曾经长期服务于微电子行业,现在从事物联网相关项目设计和咨询服务。
1995年毕业后,笔者加入了飞利浦半导体上海技术中心,任软件工程师。在此期间的主要工作是使用汇编语言为国内客户进行各类显像管(CRT)彩电的固件开发。当时的技术环境,8051都已经非常普及了,而飞利浦半导体彩电和固定电话技术方案中的控制器却依旧采用老旧的Intel 8048内核MCU。该内核架构有许多限制:比如超过2KB代码需要切换代码段,缺乏高级语言支持,等等。虽然架构古老,但这个业务却一直是当时飞利浦半导体的现金牛(即主要利润来源)。
笔者后转入产品市场部,在那里可以接触到许多炙手可热的产品线。其中,笔者负责的产品如下。
? 8051控制器:配合中国合作伙伴,如(北航)中国单片机实验室、南京万利、南京伟福、广州周立功等单位,合作推广LPC7649XX及后来的ARM LPC系列。
? 通信产品:8048内核电话机MCU、传呼机、DECT和中国数字无绳电话芯片组。
? 智能卡产品:包括电话卡、CPU卡,以及最著名的HF-RFID Mifare、LF-RFID Hitag RFID和车用防盗钥匙。
? DSP产品:Trimedia VLIW(超长指令集)DSP,用于视频电话和媒体处理。
? CPLD:低功耗CoolRunner CPLD,后转售给Xilinx。
? PDA:基于MIPS R3000内核的Windows CE PDA方案。
后来,笔者又重新拾起软件开发的工作,主要负责基于8051MIPS的LCDDTV的客户化固件开发。
应该这么说,在飞利浦的从业经验使得笔者积累了嵌入式开发经验,开阔了产品线视野,并积累了多方面的技术兴趣和行业人脉。同时,在开发这些嵌入式产品的过程中,笔者开始采用各类脚本语言来做代码生成和其他开发工具。
2008年,飞利浦半导体部独立成为NXP公司之后,笔者开始了自己的创业之路。到目前为止,笔者独立设计过以下产品和参考设计:
? 基于Cypress PSoC的RFIDUARTGPRSTPMS模块(C)。
? 基于SDIO闪存卡的NFC接口(FPGACPLD)。
? Wi-Fi强制门户及热点分享网站(PHP)。
? GPRS GPS AVL设备及网站(CJavaPHP)。
? TI C2800 DSP ANC主动噪声抑制系统(CASM)。
? 网络爬虫,用于抓取超市的POP海报分发(Python PHP)。
? Android翻译APP(Java)。
? 电子货架标签系统,第一个从设备到APP的完整原型设计(C Python网关)。
? GAP创客电子模块,基于NXPFreescaleST的M0M3处理器,并提供Bootloader和ISP软件(CCPython)。
? 工业门物联网(CCPython)。
? 呼吸机物联网(PythonGolang)。
? 电梯物联网(Python)。
? EPD电子模块(CPython)。
? RFID分类钱包(国家实用新型专利,已授权)。
? GPS资产定位系统(CPython)。
? 电信CDMA基站监控设备(CPython)。
? VoLTE高清语音监控设备(CPython)。
? 分级基金及股票监控报警系统(Python)。
离开NXP之后,笔者的设计不再受限于原公司的技术平台所涉及的消费电子产品领域,而是扩大到了互联网与物联网领域。笔者的个人体验是,无论是设备端还是服务器端,都有许多技术可以深入学习。但是两者融合,技术复杂度却呈现几何级数上升。
不同领域有不同的优势语言。一般来说,CPLDFPGA使用VHDLVerilog,MCUSoC固件开发使用CC,桌面开发使用C#VB等,服务器开发使用JavaPHPJavaScriptPythonGolang,手机APP使用JavaObjective-C。
所以,笔者在工程实践中,一直在使用汇编CC开发嵌入式系统固件,并使用PerlPython脚本做开发支持工具,同时采用PHPJavaPython做设备云和Web应用。一个完整的物联网应用涵盖许多环节:从数字逻辑电路设计,到硬件设计、固件设计、网关软件设计、服务器软件和网页设计、APP设计,甚至模具的3D设计。出于工作的需要,即使环节长,笔者也不得不像万金油一样,亲自参与全过程的设计工作。虽然无奈,但笔者的修炼结果是,比一般硬件团队略懂服务器开发,比一般服务器APP开发团队略懂硬件开发,而且大致了解了物联网的许多具体技术。
笔者的个人体会是,物联网环节太长了!无论是设计、编码还是调试,物联网的庞杂特性都非常明显。首先设计和编码时间就很长,尤其在系统联合调试时,需要使用多种开发工具(仿真器、目标硬件、仪表、服务器、Web控制台)。在这个阶段,有时候需要多台计算机才能够完成调试任务。
以超市货架管理项目为例,其涉及WSN协议规划、节点端和网关端设备的固件开发和协议实现、服务器设计、手机APP、条形码和二维码扫描。此项目笔者整整开发了一年才交付给客户,而且调试起来还挺麻烦。
个人单枪匹马,精力有限,无法同时兼顾所有环节,因而开发的项目格局不会太大。物联网开发应该为团队合作,甚至多个团队之间进行合作。每个团队对于各自的环节负责,做到接口标准化。这样才能够复用已有的经验和模式,并充分发挥其边际效应。即便是团队合作,也需要将自己使用的工具数量降低到最少,至少需要寻找到覆盖面较广的工具来开发。这也是现在许多全栈开发的目的。
采用单一语言做全栈开发
全栈开发最初出现在互联网行业,指的是能够同时开发网页前端和服务器后端。这包括能够做全栈开发的技术和掌握这些技术的工程师。该行业最典型的全栈开发语言是JavaScript。
在物联网行业中,全栈开发的含义被延伸了。笔者推荐以Python作为全栈开发语言。本书的全栈开发涉及IC(集成电路)设计、设备端(电路和系统)、服务器(含网页)端,以及移动端和数据分析端。使用单一语言可以多方面降低成本:
? 学习周期短,降低人力成本。
? 交付时间短,降低开发成本。
? 人力资源供应充分,降低人均开发成本。
? 容易形成生态,构建开发者生态圈,实现众包。
? 代码复用性强,代码可重用,开源市场有不少现成方案,可降低总体开发成本。
? 设备可以虚拟化,物理设备可以通过同一代码模拟出来,以加快工程启动周期,降低开发成本额和减少开发者间的责任推诿。
综上,物联网开发涉及面庞杂,开发周期长,寻找一种覆盖面广的编程语言和方法对企业和开发团队有现实意义。
Python用于全栈开发
在笔者眼里,承担全栈开发的语言可以是Java,也可以是JavaScript,还可以是Python。由于互联网的发展,加之JavaScript在前端语言中的优势地位,使得它开始延伸到了服务器后端和设备端。而Java原本就在设备端和服务器端都很有优势。从发展历史上看,在嵌入式平台中最早出现的是Java,最近才开始出现JavaScript和Lua等动态语言。这都是服务器端企图深入到嵌入式行业的努力。至于Python,由于其胶水特性,虽然性能不占优势,但是开发速度快,比较适合做全栈的原型开发。
之所以出现企业和手机开发者力推Java开发,前端开发者力推Node.js开发前后端技术,某些群体力推Go的现象,除了技术本身的因素,许多情况下也是其教育背景和从业经历所导致的,即所谓出身和基因所决定的。在此,个人经历决定了笔者选择Python作为自己的主力开发语言。
曾经看过一个关于如何在JavaJavaScriptC#PythonGolang等几种语言中选择一种作为主力编程语言的漫画式流程图。其中有一个选择:如果你喜欢乐高,那么请选择Python。仔细想想,Python的确很像乐高:
? 接口一致性高。
? 粗颗粒,构建速度快,适合原型。
? 有标准构件,如各种标准积木和标准库。
? 具备大量的定制构件。乐高中存在定制的主题人物和机器人组件,而Python也有大量的C扩展库和第三方应用库。
在我国的港台地区术语中,将Integrated Circuit翻译为积体电路,即积木化的电路。而新出现的各类集成技术,如SoCSiP,即系统芯片和系统封装,也是通过在电路IP领域和封装领域的创新来实现更大规模的电路整合。换而言之,不同规模的电路都是搭积木搭出来的。所以,半导体行业应该会比较偏爱类似于积木的Python语言。
回顾自己的从业和工程经历,大概以下是笔者偏爱Python开发的原因:
? 在固件开发中,接触到使用脚本语言(gawk)来设计代码生成器简化开发。
? 电子工程经验,接触并了解了许多企业的设备联网需求。
? 互联网工程开发经验,接触到了互联网物联网领域的诸多环节。
? 在网站和APP开发经验中,不得不使用多种编程语言用于软件开发,了解工程管理的痛点。
Python作为一种胶水语言,可在物联网及嵌入式系统中承担大量任务,并可以部分替代VHDLCCJavaPHPJavaScript等各类语言,或者与这些语言进行互相调用。但是让一位工程师抛弃原有技术栈换用其他语言是困难的。最初,笔者只是在工程实践中发现Python的出镜率相当高。在一些小场景中笔者尝试使用Python开发后,积累了一定的使用经验。后来为了加速开发,笔者开始在客户工程中大量使用Python进行原型验证和服务器端开发。最终,Python成为笔者的主力开发语言。
说起来,笔者本人的经历与Python的胶水特性很类似。笔者不能算是Python高手,所有的开发都是仅仅读了最基本的演示代码后就立即着手进行工程开发。笔者甚至连相关基本入门书都没有看完整,就着手使用Python构建系统。缺乏耐心的代价就是不断重新造轮子,即所谓的重构。不

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 香港用户  | 台灣用户 | 大陸用户 | 海外用户
megBook.com.hk
Copyright © 2013 - 2024 (香港)大書城有限公司  All Rights Reserved.