作者: 默默
ubuntu 16.04安装PCB设计软件gEDA
1 |
$ sudo apt-get update && sudo apt-get install geda pcb gerbv |
安装完成后,使用gEDA Schematic Editor
进行电路的绘制。
比较遗憾的是gEDA
已经很长时间没有更新了,更推荐使用KiCAD
来开发。
这个软件一直都在更新,参考 ubuntu 16.04安装PCB设计软件KiCAD EDA。
参考链接
macOS High Sierra(10.13.6)使用HL-340(CH340/CH341)芯片的USB转串口设备
USB
转串口设备,在Linux
下面都是免驱动的,但是到了macOS High Sierra(10.13.6)
上,无法正常识别。在Linux
上通过lsusb
可以看到如下信息:
1 |
Bus 001 Device 008: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter |
继续阅读macOS High Sierra(10.13.6)使用HL-340(CH340/CH341)芯片的USB转串口设备
Ti Code Composer Studio 8.1.0使用SEGGER J-Link Emulator插件代码完整性校验
Ti Code Composer Studio 8.1.0
编译调试代码,当通过网上购买的SEGGER J-Link Emulator
来烧写固件的时候,发现在某些情况下会出现固件烧录不正确,导致各种莫名其妙的问题。可以通过下图所示的方式,要求SEGGER J-Link Emulator
在烧录完成固件后,对固件进行完整性校验,规避上面的问题。继续阅读Ti Code Composer Studio 8.1.0使用SEGGER J-Link Emulator插件代码完整性校验
x86架构实现ARM架构下的SSAT指令
最近在使用Matlab
仿真ARM
下的Q15
,Q31
相关的操作,涉及到翻译CMSIS
库中的部分函数翻译到x86
下运行的情况。
一般会遇到两个比较特殊的宏,一个是__CLZ
宏,另一个是 __SSAT
宏,前者直接使用__buildin_clz
替换就可以非常正常的工作,后者就比较复杂。
1 2 3 4 5 6 7 8 |
/** \brief Signed Saturate \details Saturates a signed value. \param [in] value Value to be saturated \param [in] sat Bit position to saturate to (1..32) \return Saturated value */ #define __SSAT __ssat |
可以使用如下方式来翻译这个宏:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#if defined (__GNUC__) static inline int __SSAT_GUN(int32_t VAL, int32_t BITPOS) { int32_t min = -(1<<(BITPOS-1)); int32_t max = (1<<(BITPOS-1)) - 1; if (VAL < min) return min; else if (VAL > max) return max; else return VAL; } #define __SSAT(VAL, BITPOS) __SSAT_GUN(VAL,BITPOS) #else #define __SSAT(VAL, BITPOS) \ _ssatl(VAL , 0, BITPOS) #endif #if defined(__GNUC__) #define __CLZ __builtin_clz #else #define __CLZ __clz #endif |
解决macOS High Sierra(10.13.6)运行MATLAB R2014a出现NullPointerExpetion的问题
macOS High Sierra
(10.13.6
)运行MATLAB R2014a
,结果出现空指针异常,具体异常信息如下图:继续阅读解决macOS High Sierra(10.13.6)运行MATLAB R2014a出现NullPointerExpetion的问题
Ti CC1310作为从设备与NodeMCU通过SPI总线进行通信
最近在调试CC1310
跟NodeMCU
通过SPI
接口通信,中间遇到很多问题,在此记录一下。 继续阅读Ti CC1310作为从设备与NodeMCU通过SPI总线进行通信
ubuntu 16.04(x64)编译并烧录NodeMCU固件
最近在捣鼓NodeMCU
,中间各种折腾,下面记录一下编译固件的过程。
首先参考 ubuntu 16.04(x64)构建NodeMCU编译工具链 来构建工具链,然后把工具链加入到环境变量。
然后就是下载固件代码并进行编译了
1 2 3 4 5 6 7 8 9 10 |
$ git clone https://github.com/nodemcu/nodemcu-firmware.git $ cd nodemcu-firmware $ export PATH=/opt/Espressif/esp-open-sdk/xtensa-lx106-elf/bin:$PATH $ make #根据自己的设备实际情况选择4M还是512k的版本 $ make flash4m |
如果存在下载问题,可以本站下载一份代码拷贝。点击此处下载。
只要NodeMCU
开发板通电或重置,就会执行init.lua
脚本。因此,我们把自己的代码写在这个脚本里面即可。然后用luatool
更新到NodeMCU
设备里面即可。
1 2 3 4 5 6 7 8 9 |
$ sudo pip2 install pyserial $ sudo pip2 install esptool $ git clone https://github.com/4refr0nt/luatool.git $ cd luatool/luatool $ python2 luatool.py --port /dev/ttyUSB0 --src init.lua --dest init.lua --verbose -b 115200 |
注意上面的代码中,--port
参数需要根据实际情况进行修改,--src
参数也是一样需要根据我们实际的文件名来调整,最后的-b
指定波特率,上面固件编译后默认的波特率是115200
,淘宝上卖的设备,很多是默认9600
的,这个要注意。
如果上面的代码下载存在问题,可以本站下载一份拷贝 点击这里下载luatool
继续阅读ubuntu 16.04(x64)编译并烧录NodeMCU固件
ubuntu 16.04(x64)构建NodeMCU编译工具链
最近在捣鼓NodeMCU
,中间各种折腾,下面记录一下编译工具链的过程。
官方推荐的操作过程如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
$ sudo mkdir /opt/Espressif $ sudo chown `whoami` /opt/Espressif/ $ cd /opt/Espressif $ sudo apt-get install git autoconf build-essential gperf bison flex texinfo libtool libncurses5-dev wget gawk libc6-dev-amd64 python-serial libexpat-dev $ sudo apt install help2man $ sudo apt-get install libtool-bin $ git clone --recursive https://github.com/pfalcon/esp-open-sdk.git $ cd esp-open-sdk $ make STANDALONE=y $ export PATH=$PWD/xtensa-lx106-elf/bin:$PATH |
上面操作中最慢的依旧是下载依赖的工具链的源代码部分,可以从本站下载一份已经下载完全部依赖项目的编译环境。点击此处下载
本站下载的文件,直接执行make
命令即可,不要执行make clean
,make clean
会删除ESP8266_NONOS_SDK
文件夹,导致编译不通过。这种情况,可以还原Makefile
,再次去服务器上拉取文件即可。
编译完成后,注意以下几个路径
esp-open-sdk/xtensa-lx106-elf/xtensa-lx106-elf/sysroot/usr/include/
为头文件的所在目录esp-open-sdk/xtensa-lx106-elf/bin
为工具链所在目录esp-open-sdk/xtensa-lx106-elf/xtensa-lx106-elf/sysroot/lib
为链接库目录
上面的几个路径在编译源代码的时候会用到。
以下的操作过程可以通过,但是已经过时,在实际编译新项目的时候,可能会出现异常,已经不推荐了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
$ sudo apt-get install git autoconf build-essential gperf bison flex texinfo libtool libncurses5-dev wget gawk libc6-dev-amd64 python-serial libexpat-dev $ sudo apt-get install libtool-bin $ sudo mkdir /opt/Espressif $ sudo chown `whoami` /opt/Espressif/ $ cd /opt/Espressif $ git clone -b lx106 git://github.com/jcmvbkbc/crosstool-NG.git $ cd crosstool-NG $ ./bootstrap && ./configure --prefix=`pwd` && make && make install $ ./ct-ng xtensa-lx106-elf $ ./ct-ng build $ PATH=$PWD/builds/xtensa-lx106-elf/bin:$PATH |
对于上面的命令执行过程中,往往卡住在ct-ng build
这个位置,观察目录下的build.log
会发现总是卡住在文件下载的位置,大量的链接无法正确下载,都是国情导致的。
如果出现下载问题,一般建议从本站下载一份已经下载好的文件,当然,也可以手工从其他镜像站点逐个手工下载依赖的源代码压缩包。
参考操作如下:
1 2 3 4 5 6 7 8 9 10 11 |
$ cd /opt/Espressif/crosstool-NG $ mkdir .build $ cd .build $ wget https://www.mobibrw.com/wp-content/uploads/2018/08/tarballs.zip $ unzip tarballs.zip $ rm -rf tarballs.zip |
然后重新执行ct-ng build
命令即可。
如果上面的代码下载存在问题,可以从本站下载一份拷贝,点击下载crosstool-NG
已经编译好的工具链,可以从本站下载,点击这里下载 xtensa-lx106-elf
参考链接
ubuntu 16.04编译NodeMCU-pyFlasher
最近在捣鼓NodeMCU
,中间各种折腾,下面记录一下编译固件烧录工具的过程。
首先安装依赖包:
1 2 3 4 5 6 7 |
$ sudo apt-get install python3-pip $ sudo pip3 install --upgrade pip $ sudo pip3 install wxpython $ sudo apt-get install pyseria |
安装wxpython
的时候,如果遇到问题,参考 ubuntu 16.04在Python3上安装wxpython-4.0.3
下载代码
1 2 3 |
$ sudo apt-get install git $ git clone https://github.com/marcelstoer/nodemcu-pyflasher.git |
如果源代码下载存在问题,可以本站下载一份拷贝
编译并运行
1 2 3 4 5 |
$ cd nodemcu-pyflasher $ bash build.sh $ python3 Main.py |