2017年9月

POE供电适合10BASE-T和100BASE-TX两种标准, 也就是10M和100M局域网. 这两种标准使用的双绞线,传输数据只是用了其中的1,2,3,6(白橙,橙, 白蓝,蓝)两对线, 还有两对4,5, 7,8 没有使用. POE使用4,5线传输正电压, 7,8线传输负电压.输出电压最大48v. 使用万用表测量电压即可.

适用于DOIT的ESP32 DEVKIT v1
pyesptool.exe --chip esp32 --port COM3 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size detect 0xe000 C:\r\arduino\arduino-1.6.8_1.5.4\hardware\espressif\esp32/tools/partitions/boot_app0.bin 0x1000 C:\r\arduino\arduino-1.6.8_1.5.4\hardware\espressif\esp32/tools/sdk/bin/bootloader.bin 0x10000 C:\r\arduino\dist/Blink.ino.bin 0x8000 C:\r\arduino\dist/Blink.ino.partitions.bin
esptool.py v2.1-beta1

支持flash为512KB, 1M, 2M, 4M.
4KB为1个扇区,也就是16进制的0x1000.

  1. 非OTA布局
    a) 前256KB烧写主程序+用户数据+用户参数, 主程序文件名eagle.flash.bin, 最大64KB, 用户参数占用最后4个扇区, 共16KB
    b) 后面的部分, 烧写主程序+用户数据+系统参数, 主程序文件名 eagle.irom0text.bin, 最大768KB, 默认200KB. 系统参数占用最后4个扇区, 共16KB.sdk提供. 依次为:
    b1) 初始化射频参数,1个扇区, esp_init_data_default.bin
    b2) 初始化系统参数,2个扇区, blnk.bin
    b3) bootloader, 1个扇区.

  2. OTA布局
    a) 可选前段是256KB, 512KB, 1MB, 后段至少要大于等于前段的大小.
    b) 前段包括启动程序+主程序+用户数据+用户参数(后两个扇区为云端KEY). 启动程序boot.bin为4KB, 主程序user1.bin, 用户参数4个扇区16KB的后两个扇区存储乐鑫云端KEY master_device_key.bin
    c) 后段包括预留区+主程序+用户数据+系统参数. 预留区4KB, 与启动程序的4KB对应, 主程序user2.bin,实际上是云端下载的缓存区, 事实上也不需要烧录. 系统参数与非OTA布局的相同.

  3. 布局文件的位置
    在ESP8266_NONOS_SDK/ld/eagle.app.v6.ld中的MEMORY字段.

  4. eagle.flash.bin和eagle.irom0text.bin的构成
    eagle.flash.bin是用于存储直接读取到程序内存运行的程序段和数据内存的数据段的.
    eagle.irom0text.bin是用于存储放在flash上, 不直接读取到内存中的程序段的.

程序内存:iram, internal ram, 通过ibus访问, 共32KB, 存放编译后的elf的TEXT字段
数据内存:dram, data ram, 通过 dbus访问, 可能是80kb或者96kb. 存放编译后的elf的data, rodata字段, 这部分字段可用约50kB. 其他的空间用于存放BBS, stack, heap.
FLASH存储: irom, 最大768KB, 存放编译后的elf的irom0.text字段, C源码函数前面有ICACHE_FLASH_ATTR前缀的就是说这个函数是放在irom中的. 另, 最大768KB的原因是, irom起始于256KB处, esp8266最大访问1MB程序段, 故1MB - 256KB = 768KB.
具体需要看(sdk中的eagle.app.v6.ld文件)[https://github.com/espressif/ESP8266_RTOS_SDK/blob/master/ld/eagle.app.v6.ld]对这几个存储的地址和大小的分配, 例如:

MEMORY
{
  dport0_0_seg :                        org = 0x3FF00000, len = 0x10
  dram0_0_seg :                         org = 0x3FFE8000, len = 0x18000
  iram1_0_seg :                         org = 0x40100000, len = 0x8000
  irom0_0_seg :                         org = 0x40220000, len = 0x5C000
}

  1. 编译术语
    BBS block started By Symbol. 存放未初始化的全局变量, 静态分配
    data 已经初始化的全局变量, 静态分配
    text 程序执行代码
    rodata 字符串与#define常量
    heap 堆,动态分配的内存段(malloc, free)
    stack 栈, 临时局部变量, 函数调用栈
    常量段, 编译器产生的数据

参考(ESP8266_NONOS_SDK开发包生成的镜像文件构建步骤分析)[http://blog.csdn.net/yannanxiu/article/details/51371798]
(bss,data,text,rodata,堆,栈,常量段)[http://blog.csdn.net/ouyang_linux007/article/details/7448814]

electrum 轻量级btc离线冷钱包
blackbird 自动化市场差价交易机器人
bitcoinjs-lib btc钱包基础库
EthList Eth学习阅读清单
gekko btc自动交易机器人(node编写)
ccxt 自动化交易工具(js/py)
BitcoinExchangeFH 自动化交易工具(js)
blockchain_guide 区块链技术指南(中文版)
XChange Java实现的多市场交易API
bitcoin-arbitrage btc机会发现,包含自动交易机器人
cpuminer cpu矿机
StockSharp 算法交易和量化交易机器人的开发工具
tribeca 高频交易平台
cointrol 交易机器人

在几个月没有更新系统之后,乐视的手机APP开始自行更新。先是日历里加上了特别low的贴片广告,然后桌面也加上了APP推荐,每点开一个文件夹下面就给你推荐8个应用,每次点开都不重样,每次点击都耗掉几十k流量,让人不胜其烦。好在可以在管家里关掉,只是不知管家那天也更新了。。。
乐视没钱以后,这是把手机系统更新卖给了广告联盟吗?!

找到(这篇文章)[https://blog.attachix.com/live-debugging-with-open-source-tools-programming-for-esp8266-part-4/],以及espressif的官方支持(esp-gdbstub)[https://github.com/espressif/esp-gdbstub]
(全部四篇文章)[https://blog.attachix.com/tag/esp8266/]

这篇文章介绍了加速度计、陀螺仪、地磁罗盘、GPS综合使用,保持飞行器稳定的方式,并且给出了一个IMU的概念(惯性导航单元 inertial measurement unit ),淘宝搜索IMU可以找到相应模块,50元左右。

传统py界面开发有pyqt,wxpython之类,没有深入,原因是看了开头是以函数调用来生成窗口,就觉得很麻烦。kivy看起来更加描述性,并且支持win,OSX,Linux,iOS,Android五大平台,甚至好过JS,JS的electron加cordova才相当于kivy。如果是这样,开发测试应用应该会比较快,唯二的可能的坑是,界面表现不丰富,比不上h5+css3,毕竟h5是标准;另外是插件不足,有的系统调用缺乏插件。kivy一个第三方库,试图同时做跨桌面移动5平台,还要做h5和css事情,怀疑精力能力都不足啊

其实有蛮多替代的,在bing搜索cmd alternative即可。我现在使用的是cmder,看起来比较简洁,主要空间用作显示,没有工具栏什么的。主要好处是什么?可以看utf-8(不太完美,中文字符和英文字符同宽,都重在一起了),还可以使用^c^v复制粘贴(win10才支持的),并且自带ssh,git
ssh远程连接的替代,Putty当然是最出名的,不过putty的配置很不好用,还有个选择是xshell,个人和家庭使用时免费的。

哦,居然有这么个东西,并且杀软完全不会查出来的。。。访问bing被劫持到baidu然后还加上劫持者自己的推广号码来赚钱。。。
解决方式:管理员运行cmd,输入
···
netsh winsock reset
···
然后重启即可