
Tips
文章平均质量分 75
winwonnn
这个作者很懒,什么都没留下…
展开
-
Hacker‘s Delight中的Trick
Hacker's Delight里的各种技巧真有意思。原创 2022-09-25 20:51:29 · 161 阅读 · 0 评论 -
[踩坑]特征值计算
最近尝试将一个MATLAB程序通过codegen编译成C++库调用,好不容易编译通过但是运行结果不对,一步步跟踪下来发现是eig函数的问题,记录一下。原创 2022-08-21 22:11:21 · 738 阅读 · 0 评论 -
由NaN引出svdcmp()的BUG
svdcmp()是Numerical Recipes in C书中提供的SVD计算程序,之前用的时候遇到一个坑,记录以备忘。发现在NR in C的论坛上早已有提及到:BUG: svdcmp() out-of-bounds array access,摘录部分如下:BUG: svdcmp() out-of-bounds array accessedward04-10-2006, 05:48 PMHi,I’ve encountered a bug in svdcmp() (NR in C) whic原创 2021-11-28 00:43:19 · 432 阅读 · 0 评论 -
ARM中的浮点运算测试
对于ARMv8-A/R和ARMv7-A/R中浮点运算的介绍可以在这里看到ARM Floating Point其中,个人比较在意的是SIMD(对于ARM来说大致就是NEON吧)对浮点运算的支持。ARMv8在AArch64模式下对于IEEE 754的支持是比较好的:Floating-point support in AArch64 state SIMD is IEEE 754-2008 compliant with:Configurable rounding modesConfigurable De原创 2020-12-26 23:06:12 · 2412 阅读 · 0 评论 -
Matlab执行外部exe
比如待执行的程序为test.exe方法1:open('test.exe');虽然在m文件中确实能够执行成功,但是将m文件打包为APP后,似乎就没有执行test.exe了。方法2(推荐):system('test.exe');即使打包为APP也能执行test.exe。...原创 2020-10-12 23:00:24 · 1943 阅读 · 0 评论 -
VS2015社区版update3无法查看STL内容的解决方法
使用update2版本。在官网下载的默认就是update3版本,调试的时候STL中元素的内容显示不出来,试了各种方法(本机兼容模式不勾选、在变量窗口显示对象的原始结构不勾选、natvis),仍未解决。经查, VS调试STL问题总结中提到了这是个update3版本的bug,Visual studio 2015 community 在debug时如何显示vector中的数据?这个问题的评论中提到了用update2版本无此问题,故下载update2版本试之,problem solved。下载地址:http:原创 2020-08-02 13:39:03 · 343 阅读 · 0 评论 -
while与超时
涉及到通讯/数据交互的时候,假如采用while来等待,例如//wait for datawhile (getData() == 0);//get data then do something//...有时候遇到了一直等不到信号/数据的情况,有造成程序异常的风险,最好还是加入超时处理的机制,例如:int time_before = getTime();//wait for datawhile (getData() == 0) { if (getTime() - time_before &原创 2020-08-02 10:59:35 · 1402 阅读 · 0 评论 -
数据buffer切换机制
Problem假设需要从一个外设中不断接收数据,每接收一段数据后CPU对这段数据进行处理,应该如何设计buffer以保证数据接收不被中断,且CPU处理时用到的数据是静态的(即所处理的数据是同一批)呢?A Simple Solution一种很简单的的想法就是采用2个buffer,当CPU处理buffer 1中的数据时,接收到的数据就放在buffer 2中,但是这样做是否足够稳健了呢?考虑这样...原创 2020-04-13 21:48:01 · 546 阅读 · 0 评论 -
数据拼接与处理Tips
最近搞了几个传感器,各个的数据格式都不太一样,记录一下处理数据的tips。1 注意是否溢出遇到这样的情况:原始数据本身是8bit,然而需要加上offset才能得到真实数据,一疏忽用了uint8_t来存放数据,显然就会存在溢出的风险。2 使用struct比如原始数据是这样的:每个data是12bit,byte1是data1的高8位,byte2是data2的高8位,byte3[3:0]是da...原创 2020-03-01 17:20:21 · 467 阅读 · 0 评论 -
摄像头调试Tips
I2C通信1.注意有无时钟信号,假如芯片没有时钟输出,检查引脚输出的模式,比如AFIO是否配置为XCLK或者CSI MCLK。2.I2C的时间间隔是否满足CMOS Sensor的要求。3.I2C读写操作有异常时要加打印信息,不要偷懒,否则可能配置摄像头没有成功都不知道。CMOS Sensor1.输入时钟的频率与寄存器配置是否匹配;2.从PCLK、HSYNC和VSYNC观察摄像头是否工作...原创 2019-12-21 00:05:52 · 1076 阅读 · 0 评论 -
Keil MDK Error: #29:expected an expression
Keil MDK IDE默认的C标准是C90,要修改为C99的标准。原创 2019-12-08 18:15:29 · 1608 阅读 · 1 评论 -
&和!=的优先级
写了个小bug,基础知识再复习。这样的一段程序:#include <stdio.h>#include <stdint.h>int main(){ _Bool flag1, flag2; flag1 = (0x54 & 0x10 != 0); flag2 = ((0x54 & 0x10) != 0); return 0;}结果是fl...原创 2019-11-13 23:52:46 · 5349 阅读 · 0 评论 -
使用malloc的注意事项
有时候在函数中使用malloc时,如果分配内存失败,可能会打算让函数直接返回,例如: char *T; T = malloc(4); if (T == NULL) return -1; else //...但是如果使用了多次malloc,就要注意在判断到某次分配失败而导致返回时,将已经分配了的空间释放掉。虽然通常在函数的结尾处不会忘记free,但是却很容易在这种中途返回时疏忽了...原创 2019-11-12 23:12:11 · 542 阅读 · 0 评论 -
ubuntu16.04安装ros&turtlebot3
参考:Ubuntu 16.04 安装 ROSUbuntu16.04安装ROS填坑指南——Ubuntu 16.04安装ROS Kinetic各种失败问题及其解决办法大全——持续更新中安装ROS时, rosdep update出错解决办法Ubuntu16.04安装ROS系统以及安装过程中遇到的错误总结...原创 2019-06-12 22:36:55 · 449 阅读 · 0 评论 -
virtualbox ubuntu硬盘扩容
参考VirtualBox如何扩展虚拟机Ubuntu的硬盘容量?1 修改vdi启动命令行,进入virtualbox安装目录cd C:\Program Files\Oracle\VirtualBox查看硬盘VBoxManage list hdds修改镜像文件VBoxManage modifyhd 17a4c346-a09a-41e6-9a34-3983ac64cc2c --resi...原创 2019-06-12 20:07:28 · 322 阅读 · 0 评论 -
QEMU+ARM+Linux(3)
zImage可以运行了,再来试试用uboot引导uImage。首先是编译uImage,命令在QEMU+ARM+Linux(1)中已经给出了: export ARCH=arm export CROSS_COMPILE=arm-linux-gnueabi- make vexpress_defconfig #make zImage -j8 make modules -j8 make LOA...原创 2019-04-22 23:56:32 · 196 阅读 · 0 评论 -
在ubuntu上安装QEMU
学习THU的操作系统公开课,安装QEMU来做实验,还可以用来当做ARM开发板。1.下载并编译QEMU 3.0.0版本 wget https://download.qemu.org/qemu-3.0.0.tar.xz tar xvJf qemu-3.0.0.tar.xz cd qemu-3.0.0 ./configure make在进行./configure出现两个错误:(1)ER...原创 2019-03-28 21:08:53 · 2854 阅读 · 0 评论 -
QNetworkAccessManager使用注意事项
要注意QNetworkAccessManager实例是建立在栈中还是在堆上(new)。由于网络访问所需的时间通常“较长”,当QNetworkAccessManager实例建立在栈中,如QNetworkAccessManager manager时,如果还没有收到QNetworkAccessManager::finished信号而manager已经不存在了,那么connect()函数就一直不会被执行...原创 2019-01-27 15:44:06 · 2685 阅读 · 1 评论 -
在ubuntu上配置Git&Github
参考 Linux 下建立 Git 与 GitHub 的连接准备工作:安装git和ssh:sudo apt-get gitsudo apt-get ssh1.配置Git用户 git config --global user.name &amp;amp;quot;xxx&amp;amp;quot; git config --global user.email &amp;amp;quot;xxx@gmail.com&amp原创 2019-01-24 00:19:13 · 289 阅读 · 0 评论 -
在ubuntu上使用Git&Github
在Github上新建一个repository,按照页面提示操作即可,要注意选择SSH连接而不是HTTPS,否则每次push都要输入用户名和密码(参考解决GitHub每次push时都提示输入用户名和密码的问题)。将HTTPS更改为SSH的方法:1.删除HTTPS连接方式git remote rm origin2.添加SSH连接方式git remote add origin git@git...原创 2019-01-24 13:06:49 · 214 阅读 · 1 评论 -
Ubuntu16.04 图形界面与命令行模式之间的切换方法
在图形界面中调出终端时将crtl+alt+t按成了ctrl+alt+f5,误入命令行模式。实测快捷键:图形界面→命令行模式:ctrl+alt+f1(或f2-f6)命令行模式→图形界面:alt+f7...原创 2019-01-18 12:01:50 · 10132 阅读 · 1 评论 -
DELL笔记本webcom摄像头问题解决方法
1.在webcom中可以使用摄像头,但其他程序无法调用摄像头,并出现如“该内存不能为read”之类的提示。解决方法1:一次运行注册所有dll运行 输入cmd 回车在命令提示符下输入for %1 in (%windir%\system32*.dll) do regsvr32.exe /s %1这个命令输入正确的话会看到飞快地滚屏解决方法2:安装360,用系统修复功能,更新一下驱动。...原创 2019-01-18 12:19:44 · 5057 阅读 · 0 评论 -
Ubuntu中Qt的Mysql驱动编译
软件版本:Ubuntu 16.04 32位Qt 5.5.1MySQL 5.7首先要安装MySQL的开发库sudo apt-get install libmysql++-dev然后进入Qt源码文件夹中的/qt-everywhere-opensource-src-5.5.1/qtbase/src/plugins/sqldrivers/mysql执行qmake命令:qmake "INC...原创 2019-02-27 21:17:57 · 602 阅读 · 1 评论 -
新建Git仓库下的文件夹及文件
1.进入root用户 su -2.切换到git仓库所在的目录3.新建文件夹 mkdir test4.将新建的文件夹加入仓库 git add test5.进入新建的文件夹 cd ./test6.用vim新建文件 vi README.md7.输入i进入编辑模式,内容编辑完成后按esc退出编辑模式,输入:wq保存文件并退出vi8.git commit -m 'README.md'9.gi...原创 2019-02-13 12:47:36 · 5874 阅读 · 0 评论 -
Ubuntu中MySQL登录、改密码及权限分配
1.切换目录cd /etc/mysql。2.打开文件sudo vi ./debian.cnf,记下user和password。3.启动MySQL服务sudo service mysql start4.用刚才记下的user和password登录MySQLmysql -u debian-sys-maint -p5.更改密码use mysql;SELECT user FORM user; #...原创 2019-02-28 11:56:35 · 323 阅读 · 0 评论 -
初学GDB(1)
以The C Programming Language 1.5.1节中的程序copy.c为例:#include &amp;lt;stdio.h&amp;gt;main(){ int c; while ((c = getchar()) != EOF){ putchar(c); }}用gcc进行编译gcc -g copy.c -o copy,-g表示生成调试信息。...原创 2019-03-02 00:06:25 · 123 阅读 · 0 评论 -
C++中delete指针后将指针置0的作用
Qt学习之路2中访问网络的章节中有这样的代码:NetWorker::~NetWorker(){ delete d; d = 0;}其中d是一个指针。d = 0;的作用,参考百度知道:delete之后的指针指向一个不确定的位置,叫悬垂指针,如果后面不经意引用了,会导致程序崩溃。置0使其成为空指针,后面的程序可通过判断该指针是否为NULL来确定它是否有效。更加全面的解...原创 2019-02-21 00:02:52 · 1340 阅读 · 0 评论 -
C++内部类和外部类的互相访问(d指针和q指针)
d指针和q指针式Qt中常见的封装方法,由此引出了C++内部类和外部类的互相访问。其实也是Pimpl(pointer to implementation, 指向实现的指针)方法。实验代码:Inner类为Outter类的私有内部类。Inner类中有一个public字符串变量In,Outter类中有一个private字符串变量Out。通过Outter类中的d指针访问Inner类,实现对In的读写;...原创 2019-02-21 13:06:44 · 3534 阅读 · 0 评论 -
Qt中SQL的使用之判断某个字段是否已存在库中
参考Qt Documentation中的QSqlQuery Class部分。思路如下:首先用SELECT语句进行查询,通过bool QSqlQuery::exec(const QString &amp;amp;amp;amp;amp;amp;query)函数执行查询,但是要注意不能用bool QSqlQuery::exec(const QString &amp;amp;amp;amp;amp;amp;query)的返回值来判断是否存在,因为其返回值只能用来判断语句是否原创 2019-02-27 00:07:35 · 3688 阅读 · 1 评论 -
初学GDB(2)
以The C Programming Language中1.9节的程序为例,试用了以下命令:1.backtrace,简写bt,查看函数调用的顺序(函数调用栈的信息);2.frame N,切换到栈编号为N的上下文中;3.info frame,简写info f,查看当前函数调用的栈帧信息 ;4.info locals,查看当前局部变量的值;5.info args,查看当前函数参数的值;6....原创 2019-03-04 00:35:01 · 208 阅读 · 0 评论 -
Git迁移仓库的方法
一顿骚操作,把旧仓库作没了。。。教训就是千万不要把仓库迁移到已有内容的仓库中,否则仓库会被覆盖掉,原有的内容不管是代码还是commit全部消失。迁移会导致覆盖,而不是合并!迁移方法:1.克隆待迁移仓库的镜像git clone –mirror <oldRep url>2.进入镜像cd oldRep.git3.在github上创建一个新仓库 newRep4.设置目标仓库...原创 2019-03-22 14:13:32 · 296 阅读 · 0 评论 -
使用QEMU调试u-boot
参考:qemu+uboot+kernel+nfs文件系统qemu-system-arm仿真vexpress-a9踩坑记u-boot 分析(2)-在QEMU环境下的调试1.安装交叉编译和调试工具sudo apt-get install gcc-arm-linux-gnueabisudo apt-get install gdb-arm-none-eabi2.下载u-boot地址:ht...原创 2019-03-30 19:52:09 · 1679 阅读 · 0 评论 -
QEMU+ARM+Linux(1)
1.下载linux kernel官方地址太慢,用这个http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/2.参考qemu+uboot+kernel+nfs文件系统 export ARCH=arm export CROSS_COMPILE=arm-linux-gnueabi- make vexpress_defconfi...原创 2019-03-31 00:24:37 · 473 阅读 · 0 评论 -
QEMU+ARM+Linux(2)
参考:没开发板做Linux嵌入式开发?虚拟机搞定一切!(主要参考)qemu+uboot+kernel+nfs文件系统(主要参考)qemu-system-arm仿真vexpress-a9踩坑记Qemu搭建ARM vexpress开发环境(一)之前已经得到了Linux kernel的zImage。参考第一篇文章:zImage和uImage两个都是编译出来的linux二进制文件进行压缩得...原创 2019-03-31 20:48:28 · 873 阅读 · 0 评论 -
QZXing不适用于C++11语法?
重新整理写过的程序,发现了一个诡异的问题。将使用了QZXing的源程序包移动到另一个文件夹后,build,出现QZXing中的某个文件出现错误。一步步回溯问题可能出现的地方。发现这个程序最开始的版本中并没有需要C++11支持的语法(如lambda表达式),因此.pro文件中也没有CONFIG += c++11这一句,也许就是这里出了问题。删去.pro文件中的CONFIG += c++11,并且...原创 2019-02-22 22:17:11 · 306 阅读 · 0 评论