- 博客(41)
- 资源 (13)
- 收藏
- 关注
原创 pyinstaller 打包包含数据的程序
前言pyinstaller 是用于将python脚本打包成可执行文件的工具.支持linux和windows等各种平台. 然而使用的时候,难免会遇到脚本直接运行正常,打包运行各种路径报错或者找不到文件的情况.这篇文章主要讨论当工程需要用到非python文件数据时,如何进行打包的问题.问题场景的例子1: 工程下有main.py和table.json. 当main.py运行时...
2018-03-30 23:15:04
5662
1
原创 ros kinetic hector_quadrotor gazebo7.0 调试记录
版本环境ros kineticgazebo 7资源链接CSDN上的介绍 ROS quadrotor tutorial hector quadrotor github hector_quadrotor安装按照ROS官方的tutorials,是针对hydro版的ros的。按照CSDN里的介绍,把git的分支改成kinetic即可。使用wstool从gi...
2018-03-23 01:46:03
1083
1
转载 ssh反向隧道
转载自~ http://blog.csdn.net/dy200811/article/details/52847543准备要有个外网可以访问的主机支持端口转发,比如一个独立IP的VPS (如 123.123.123.123) 局域网和 123.123.123.123,以 Ubuntu 为例步骤在 123.123.123.123 上编辑 vi /etc/ssh/sshd_...
2018-03-19 10:28:07
336
原创 STM32F4 LAN8720以及LWIP的移植调试记录 (3)
LAN8720配置: IP: 192.168.192.30 Gateway: 192.168.192.1检测到高频率的ARP包包的内容在询问192.168.192.1的mac地址,并要求应答者发往192.168.192.30。 可以判断为LAN8720可能要夸网段发包,但是找不到网管。 于是把LAN8720的网关改为192.168.192.15, 即PC机的IP。 然后...
2018-03-07 22:44:56
6333
1
原创 stm32增加bootloader后进不了中断
加bootloader前能进,加了后进不了,但是主程序不崩正常跑可能是bootloader里跳转前把中断关掉了。 即在bootloader里这样设置过:__set_PRIMASK(1);则需要在应用层里添加:__set_PRIMASK(0);重新把中断打开加bootloader前能进,加了后程序崩到HardFault里可能这句没加SCB->VTOR = ...
2018-03-02 22:06:13
3249
原创 Keil命令行编译工程
背景控制器的板子,有bootloader,有应用层,还有需要适配不同厂家的配置。 因此整个solution可能会由好几个project构成。参考VisualStudio的solution和project的关系。此外,还有许多编译前执行的内容,以及编译后执行的脚本。因此如果能通过命令行来调keil就很有价值。方法keil的官网上对此有介绍 keil命令行接口 归纳一下,一个...
2018-03-01 21:42:03
9694
1
原创 STM32F4 LAN8720以及LWIP的移植调试记录 (2)
背景在硬件工程师完成了PCB和原理图设计后,根据正点原子的教程对例程进行修改,验证了硬件的正确性。 STM32F407和LAN8720调试记录. 正点原子 网络通信实验下一步的工作需要在产品的板子上实现功能。 原产品采用W5500的硬TCP/IP协议方案。 调试路线尝试先从UDP回环开始。约定所有调用接口全部按照 lwip\src\include\lwip\socket...
2018-02-26 15:22:54
5526
原创 陀螺仪与里程计不匹配度的自动判定方法
背景移动机器人底盘两个重要的上传参数就是底盘的里程(x,y,θ)(x,y,θ)(x, y, {\theta})和陀螺仪的θθ{\theta}角,即yaw角。处于各种原因,比如陀螺仪失效、轮子打滑、底盘运动参数配置错误等问题,可能导致这两个传感器上传的yaw角会发生短时间地,或微小地不匹配的情况。为了快速定位问题发生的时刻,本文解释了一种判定两者不一致的方式。其基本原理为两个时间序列的相似性分析...
2018-02-11 19:10:47
1766
原创 底盘运动学里程计软件及测试
背景:大量不同参数的移动机器人底盘。部分底盘本地并没有样机,更新代码后无法保证是否正常工作。需要简单有效的反转定义每个轮的左右方向,高效互换各个轮的ID。AGV停止状态判断。对于高分辨率的编码器,不被误判为运动。在下发指令超速,下发加速度超标时,做基于不改变运动轨迹的速度限制。底盘类型:双轮差动三轮全向四轮麦克纳姆单驱动轮舵轮定向驱动轮单舵轮四轮差动
2018-01-25 15:12:53
2575
原创 RSA加解密调试记录
趟坑记录:1. python调试环境:推荐rsa库。比较方便,直接import rsa即可。2. C++调试环境:由于项目中只用到微量的RSA运算。openSSL太过庞大。polarSSL为轻量级SSL库,被arm公司收购后已改名mbedSSL。3. 密钥:RSA分公钥和私钥。在polarSSL中私钥的详细格式为:N: public modulus,公钥模数E: p
2018-01-17 17:20:08
627
1
原创 数字示波器CAN节点标定
背景:CAN通信有错误帧,丢包,波特率不匹配等问题。通过STM32可以返回出填充错误,隐形位错误,应答错误等问题。但是面对错误无能为力。通过示波器又无法直观看出错误帧在哪里。看了广东致远电子的 CAN节点测试与标定方案.pdf 感觉非常有启发。对于CAN节点的测试,文档中和网上的资料比较相似,主要可以分为以下几点:* 位宽度容忍测试(波特率波动)* 报文压力测试(大数据量负载情
2018-01-16 13:27:07
929
原创 移动机器人车身网关软件设计
总线拓扑:网关以软件形式存在,在“一级设备”处,承担连接异形网络的功能。默认协议:对于符合默认协议的设备,编写好任务函数后,能够直接被网关访问并将数据上传1. Modbus - RTU2. CANOpen组件:1. 时间同步2. 以太网虚拟CAN卡3. 抢占式透传串口注:虚拟CAN卡在工作时,不影响其他访问CAN资源的任务
2018-01-10 11:03:04
418
原创 STM32F407和LAN8720调试记录(1)
LAN8720测试代码的整理1. 在两个工程的基础上修改,分别是正点原子ATK的 “实验55 网络通信实验” 和ST官方的“STSW-STM32070”例程硬件是原子的explorer和SeerF4kernelV2。两个例程的问题在于ATK例程用的外部SRAM,注释掉外部SRAM后跑不起来。而ST官方例程用的芯片是DP83848,需要手动修改为LAN8720A。针对ST的例程,网上有对应的文档:S...
2017-12-12 16:15:25
16006
5
原创 AGV重心配比与加速度的关系
AGV在减速过程中,由于减速度过大,或者重心过高,会产生抬头或者点头,严重会产生翻车的现象。需要进行量化分析。1. 考虑第一种情况:将AGV看成一个刚体,重心高度H,宽度2L,质量m。刚体以速度v向右运动,受到的摩擦力f向左用以减速。如下图。当刚体减速即将发生倾倒时,存在一个临界状态:即刚体的支持力全部来自于右下角,而下底面其他位置的支持力均为0。左
2017-12-06 19:20:10
3520
原创 OSError: [WinError 10022] An invalid argument was supplied - Windows 10 Python
原来跑的好好的代码,重构了一部分发现突然报错了。删减下来最小代码重现:s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)x=s.recvfrom(1024)第二行会报OSError: [WinError 10022] An invalid argument was suppliedgoogle之,解释如下:点击打开
2017-11-21 10:43:46
3887
原创 嵌入式控制器分布式控制系统固件更新方式探讨
机器人、AGV等自动化设备,车身有大量嵌入式控制单元,开发及应用过程中有固件更新需求。需要探讨出一套通用的在应用编程模板。其中涉及的通信链路有: 以太网 CAN UART 涉及应用层协议: TCP, UDP, TCP Modbus, CANopen, 485Modbus, 232Modbus以及一些开发者自定义的协议 在应用编程协议统一使用: ST IAP protocol为求通用性,将stI
2017-11-20 10:41:23
431
1
原创 正则表达式使用笔记
使用正则表达式替换vector访问方式v.at(xxx)与v[xxx]之间的替换v.at\(.*?\)替换为v[$1]说明:$1表示第一个段域.*表示匹配任意长度的字符串,regex默认为饿汉模式,即匹配尽可能长的字符串,那么v.at(5) + v.at(16)就会将 “5) + v.at(16” 匹配成$1,从而导致误替换。那么加上“?”后
2017-11-15 10:47:13
277
原创 jlink gdb server with arm-none-eabi-gdb
Launch JLinkGDBServer:$ JLinkGDBServer -if SWD -device STM32F103ZE
2017-11-07 18:04:09
1297
原创 cmake arm-none-eabi-gcc for stm32 cpp project
尝试把原有的stm32工程F1canBootloader用cmake来管理,遇到了以下几个坑:1. 报错,undefined reference to `__dso_handle'。CMakeFiles/app.elf.dir/home/chenxx/engineering/stmproj/F1canBootLoader/iap/uartIapDevice.cpp.obj: In fu
2017-10-07 16:05:25
2669
原创 Use std::functional and std::bind in STM32 project
-I/usr/include/newlib/c++/4.8/arm-none-eabi/armv7e-m-I/usr/include/newlib/c++/4.8
2017-09-29 20:24:38
365
原创 The way to minimize the C++ binary file compiled by arm g++
CFLAGS += -Os It means optimize for space. CFLAGS += -ffunction-sections -fdata-sections It means save the function and data to its own sections.LFLAGS += –gc-sections It means enable garbage col
2017-09-08 17:37:11
278
原创 GCC STM23 cannot find -lstdc++
Chose the C++ project incorrectly when create the new project.The correct way is:File–>Project–>C Project–>Project name–>Cross ARM GCC–>Tools chain path–>Finsh.But the problem is that still don know ho
2017-09-08 12:55:34
508
原创 Gdb install faild: Unpacking gdb-arm-none-eabi (7.6.50.20131218-0ubuntu1+1) ... dpkg: error processi
Unpacking gdb-arm-none-eabi (7.6.50.20131218-0ubuntu1+1) ...dpkg: error processing archive /var/cache/apt/archives/gdb-arm-none-eabi_7.6.50.20131218-0ubuntu1+1_i386.deb (--unpack): trying to overwri
2017-09-07 22:55:37
673
原创 Nuttx编译时报:ERROR: arm-nuttx-eabi-gcc failed: 127
在make menuconfig时,检查下编译工具System Type -> Tool chain selection -> Generic GNU eabi tool chain under linux这个才是正解。之前默认是Buildroot(Cygwin or Linux)这个不知道是什么鬼
2017-08-16 00:50:46
558
转载 TK1时间同步
关于时钟与网络同步问题,需要联网开机后键入以下命令。$sudo dpkg-reconfigure tzdata选择 Asia Shanghai $ sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime$ sudo hwclock -w --directisa
2016-09-25 12:09:33
512
转载 Linux vi中查找字符内容的方法
使用vi编辑器编辑长文件时,常常是头昏眼花,也找不到需要更改的内容。这时,使用查找功能尤为重要。方法如下:1、命令模式下输入“/字符串”,例如“/Section 3”。2、如果查找下一个,按“n”即可。要自当前光标位置向上搜索,请使用以下命令:/pattern Enter其中,pattern表示要搜索的特定字符序列。要自当前光标位置向
2016-08-26 21:09:35
619
原创 STM32F4采集核心板调试记录
共12块采集核心板。测试功能别分有:串口,CAN,W5500网络等。F4K01:上电后程序能运行,但是心跳灯频率不对。判断为外部晶振没有起振。更换晶振电容,没有效果。更换晶振,心跳灯频率正确。PS: 2016/07/28 14:23 热插拔驱动板。SPARK死机,桌面不动,无法Ping通,后恢复。F4K02:功能全部正常F4K03
2016-07-28 16:59:11
1105
原创 stm32复位电阻设置过小导致的各类症状
STM32F103T8U6,焊接时误将复位电容的上拉电阻焊成10欧,出现症状有:烧写一次程序后,程序无法运行,无法第二次烧写程序。烧写到最后,会报错:Error: Flash Download failed - "cortex-M3"但是此时jtag仍然能够连上芯片。将烧写设置改为erase full chip,烧写到错后,报错显示:Contents mismatc
2016-07-26 11:54:39
6413
1
原创 ubuntu下备份系统以及遇到的问题
TK1备份:1.打开mk_backup,参考格式编写需要备份的目录;2.进入U盘备份文件的存储目录,并将附件拷贝到当前目录;3.执行如下命令: sudo ./mk_backup.sh 进行备份。TK1还原:1.打开extract_fs,参考格式编写需要还原的目录;2.进入U盘备份文件的存储目录,并将附件拷贝到当前目录;3.执行如下命令:
2016-07-25 17:32:34
3462
原创 IP178G交换机启动失败的症状
IP178G芯片,配合MP2307开关电源。启动后,pin41的LED亮后一段时间,熄灭。同时VDD1V1的电压在1.4V和1.8V变动。没有稳定在1.1V。经检查发现底部散热焊盘对地电阻为20欧姆。对比好的板子为2欧姆。因此飞线连接焊盘对地,交换机正常工作。
2016-07-09 15:17:14
3402
原创 DRV8301芯片调试总结
DRV8301自带BUCK输出应为3.3V。实测两块分别为5.5V和5.3V。后重焊DRV8301,将底部散热焊盘焊上,BUCK输出电压正常
2016-06-14 11:02:36
11636
4
原创 DSP 连不上 JTAG, 'SC_ERR_PATH_BROKEN', 关注EMU1 EMU0
早先设计28335的板子,有EMU0 EMU1两线和DSP上两个引脚对应。这次做28069的原理图时,看到没有这两个对应引脚,网上查了一下EMU0 EMU1似乎也没什么用途,于是就把2条线省去。板子焊出来后,发现JTAG连不上芯片。报错如下:/*********************************************************************分割线
2016-04-27 22:49:06
11879
3
原创 visualgdb下stm32工程模板修改
最近尝试试用Visualgdb来调stm32。由于刚从Keil转到visualgdb,有一些部分还不是很习惯。比如visualgdb中ST的std periph lib是以只读的形式保存在软件安装路径下,而不是在工程文件路径下的。因此和keil的工程有部分难以兼容。因此在这里整理区分并记录一下。首先分析keil中常用的Proj结构:1、/user 中放stm32f10x_it.c ma
2015-12-25 21:31:06
4383
翻译 C++读取*.bin文件时无法获取0x20
http://www.cplusplus.com/forum/beginner/145308/Angeljruiz (185):大家好,我在读取一个二进制文件时,有些值不正确,请帮助一下我!下面是相关的代码:#include #include #include "CPU.h"using namespace std;void clear(){ for(int
2015-12-03 21:54:31
1015
原创 串口通信的帧同步问题
封装STM32串口的底层时,遇到了串口帧同步的问题。虽然以前也遇到类似场合,写出来的代码基本能够解决问题,但是在逻辑上总是不能彻底的解释一些细节。讲一下当前的需求:由于代码想用在一个简单的PID闭环上,做在线的参数整定。假设当前PID解算周期是1ms,即每1ms,做一次串口的收包,解包,Pid解算,数据采集,然后打包,发包。也就是说是固定步长的解包。
2015-10-31 17:32:28
4251
原创 STM32 C++ 底层封装的尝试[1]
现在在伊顿公司实习,用的是freescale的mpc563处理器。开发流程大致是:应用层在Matlab建模,然后通过matlab的code generation自动生成代码,得到应用层的*.cpp和*.h文件。然后手打底层代码,同样是*.h和*.cpp文件。然后写Makefile,matlab掉脚本,gmake下调wind river的diab编译器,编译出*.32b文件。就相当于单片机的*.he
2015-10-29 23:58:48
2903
2
柯蒂斯控制器1232E用户手册
2017-09-11
无刷电机驱动电路IRF1205配合IR2103
2015-02-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人