自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

我的博客

每天一小步

  • 博客(277)
  • 资源 (5)
  • 收藏
  • 关注

转载 Python学习——struct模块的pack、unpack示例

import structpack、unpack、pack_into、unpack_from[python] view plain copy# ref: http://blog.csdn.net/JGood/archive/2009/06/22/4290158.aspx    import struct    #pac

2017-12-06 19:46:57 782

转载 Python垃圾回收机制

阅读目录引用计数机制:一个简单的例子可用列表Python 的对象分配Ruby 开发者住在凌乱的房间里Python 开发者住在卫生之家庭标记-清除标记-删除 vs. 引用计数下回分解Python中的循环数据结构以及引用计数在Python中的零代(Generation Zero)检测循环引用Python中的GC阈值弱代假说回到Ruby的自由链Ruby2.1基于代的GC机制白

2017-12-01 14:37:35 396

转载 浅析java内存模型--JMM(Java Memory Model)

在并发编程中,多个线程之间采取什么机制进行通信(信息交换),什么机制进行数据的同步?  在Java语言中,采用的是共享内存模型来实现多线程之间的信息交换和数据同步的。  线程之间通过共享程序公共的状态,通过读-写内存中公共状态的方式来进行隐式的通信。同步指的是程序在控制多个线程之间执行程序的相对顺序的机制,在共享内存模型中,同步是显式的,程序员必须显式指定某个方法/代码块需要在多线

2017-10-28 22:14:20 340

转载 C++两个链表的公共结点

题目:(剑指offer编程题)输入两个单向链表,找出它们的第一个公共结点。公共结点是地址相同的两个结点,也就是同一个结点,由于是单向链表,所有从公共结点之后两链表重合。思路:方法1:最容易想到的办法是用两个循环,遍历第一个链表,对每一个元素遍历第二个链表,找相同的结点。这种算法时间复杂度为O(mn)(假设链表长度分别为m和n),不适用这种方法。方法2:如果两个链表有公共结点,那么从

2017-10-12 23:18:27 757

原创 静态链表和动态链表的区别

静态链表和动态链表的区别:静态链表和动态链表是线性表链式存储结构的两种不同的表示方式。1、静态链表是用类似于数组方法实现的,是顺序的存储结构,在物理地址上是连续的,而且需要预先分配地址空间大小。所以静态链表的初始长度一般是固定的,在做插入和删除操作时不需要移动元素,仅需修改指针。2、动态链表是用内存申请函数(malloc/new)动态申请内存的,所以在链表的长度上没有限制。动态链表

2017-10-10 15:09:35 50291 16

转载 objdump命令的使用[转载]

objdump命令是用查看目标文件或者可执行的目标文件的构成的gcc工具。选项--archive-headers -a 显示档案库的成员信息,类似ls -l将lib*.a的信息列出。 -b bfdname --target=bfdname 指定目标码格式。这不是必须的,objdump能自动识别许多格式,比如: objdump -b oasys -m va

2017-10-10 14:26:52 1797

转载 C语言宏中"#"和"##"的用法

C语言宏中"#"和"##"的用法 在查看linux内核源码的过程中,遇到了许多宏,这里面有许多都涉及到"#"和"##",因此,在网上搜索了一些资料,整理如下:一、一般用法 我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起.。用法:#include #include #include using namespace std; #define STR(s)

2017-10-10 10:27:07 1263

转载 Altium Designer 导入DXF文件[转载]

大多数人都知道,PADS中导入DXF文件,然后转换成板框,是很方便的。AD也同样可以做到。PADS导入DXF见:http://www.cnblogs.com/craftor/archive/2012/01/14/2322446.html1、从AutoCAD生成板框,一定要为闭合多段线。步骤如下:1) 在CAD中画如下图形,假设板框如下,仅为演示用。

2017-08-30 15:38:10 9480

转载 Kalman论文笔记

笔者前段时间阅读了一些关于Kalman的姿态论文,本想把Kalman的知识点也整理出来发布,无奈这编辑器不给力,太多的公式无法复制粘贴,图片格式上传的太复杂,就放弃了。因此笔者只发布Kalman的论文笔记,用表格的形式分析了几篇论文的Kalman filter的结构,希望对大家有帮助。表格中包含有论文名称 状态变量 转移矩阵 观测变量 观测矩阵 过程噪声 观测噪声 备注

2017-07-10 10:15:24 410

转载 四轴PID讲解

鉴于某些原因,笔者无法修改原先已经发表的部分博客文章,在这里笔者将先前设计的微型四轴工程代码开源,下载地址:github.com/yzhajlydy 正文开始:这篇文章分为三个部分:PID原理普及常用四轴的两种PID算法讲解(单环PID、串级PID)如何做到垂直起飞、四轴飞行时为何会飘、如何做到脱控?PID原理普及1、  对自动控制系统的基本要求:        稳、准

2017-07-10 10:13:10 957

转载 四轴加速度计滤波

加速度计滤波实验参数: 采样频率Fs=250Hz截止频率Cutoff Frequency未开电机静止开电机悬停未开电机转动飞控原始输出(Raw)260 Hz260Hz260HzMPU6050内部(LPF)94 Hz94 Hz

2017-07-09 11:25:23 1700 1

转载 基于四元数的姿态解算算法图解

下面的两个地址是我存放在百度云网盘的附件,分别是基于四元数的互补滤波法的图解和梯度下降法的图解。笔者采用MindManager思维导图软件对上述两种算法进行详细的解释,非常形象。    希望这种方式能够让大家快速、准确的理解这两种算法的流程。互补滤波法:http://pan.baidu.com/s/1nuqBIgL梯度下降法:http://pan.baidu.com

2017-07-09 11:21:35 3173 1

转载 四元数姿态的梯度下降法推导和解读

笔者前面几篇文章讨论的是基于四元数的互补滤波算法,并单独对地磁计融合部分做了详细的讨论和解释。而本文讨论的姿态融合算法叫做梯度下降法,这部分代码可以参见Sebastian O.H. Madgwick在2010年4月发表的一篇论文(An efficient orientation filter for inertial andinertial/magneticsensor arrays),这篇论

2017-07-09 11:08:33 3255 1

转载 四元数姿态解算中的地磁计融合解读

笔者最近在做四轴,涉及到地磁计的融合算法,网上大多数是x-IMU的融合代码,但是这段代码对于地磁计的融合说明没有做过多的解释,网上没有相关讨论,仅在阿莫论坛看到一篇相关的代码解释,里面有关于地磁计融合部分的解说,个人觉得说的不是很清楚,虽然是正确的,我这里再补充啰嗦一下。    首先给出x-IMU关于陀螺仪、加速度计、地磁计的融合代码:[cpp] view plain co

2017-07-09 11:01:48 2070

转载 微型四旋翼飞行器的设计与制作

笔者目前在读研究生,研究的方向正是飞行器的定位与导航。去年10月份开始设计的微型四旋翼,近日才完成整个系统的设计并且飞机可以较为稳定的悬停在空中。下面就将笔者最近整理的制作过程梳理一遍,还希望与有兴趣的网友共同讨论。笔者将分为硬件设计与软件设计两大部分来分别阐述系统的构成:硬件设计:总体思路:    整个机架采用PCB板,将四个电机固定在PCB板的四个角,外接电池。

2017-07-09 10:56:37 6676

原创 C++对C的升级

可能大家对C语言不会陌生,用C语言写起代码来也是得心应手。但是在做项目的时候,C语言的复用性、扩展性、维护性就比较差!如果我们在原来的基础上添加新的功能,可能就需要修改大量的代码,相信这种方式你是不会采取的!C语言是面向过程的语言,这里需要有一种面向对象的语言。于是C++语言就诞生了!一、C++语言的特性1、C++完全兼容C的特性。2、C++在C语言的基础上进行了升级。3、C++复

2017-06-21 10:44:17 668

原创 /usr/bin/ld: cannot find -lm的解决方法

我在编译程序的时候出现编译错误!如下所示:/usr/bin/ld: cannot find -lmcollect2: ld 返回 1cannot find -lm问题根源在于:编译的时候用了“-static” 选项。那么为什么出现这个问题呢?因为现在的Linux中没有静态c库。解决办法:安装glibc-static 库就好了。我的主机环境是RHEL6.5,安装命令如下所示

2017-05-22 22:33:11 15894 4

转载 Madplay移植到mini2440全过程详解[转载]

madplay交叉编译交叉编译器:arm-linux-gcc 3.4.1PC环境:Ubuntu 8.10注意:最好在root权限下执行以下移植,否则在make install时可能权限不够。一、移植madplay前的准备madplay的移植需要以下的几个包:libid3tag-0.15.1b.tar.gz、libmad-0.15.1b.tar.gz、madplay-0.15.2

2017-05-22 21:45:12 467

转载 C语言调用MATLAB程序之简单样例[转载]

首先声明一下,本文中C语言调用MATLAB语言的方法,本质上是通过C语言编程实现利用MATLAB引擎执行MATLAB代码,并最终获得执行结果。如何用C语言创建MATLAB引擎的引用,MATLAB已经为我们准备好了一系列的头文件以及动态链接库文件,所以我们只要配置好相关环境即可(如何配置环境可以参考我上一篇博客)。从另一方面讲,这也就意味着程序执行时需要完整的MATLAB软件的支持,当然还有一种调用

2017-05-20 09:30:08 5313

转载 图像处理与识别学习小结

图像处理与识别学习小结 数字图像处理是对图像进行分析、加工、和处理,使其满足视觉、心理以及其他要求的技术。图像处理是信号处理在图像域上的一个应用。目前大多数的图像是以数字形式存储,因而图像处理很多情况下指数字图像处理。此外,基于光学理论的处理方法依然占有重要的地位。 数字图像处理是信号处理的子类, 另外与计算机科学、人工智能等领域也有密切的关系。 传统的一维信号处理的方法和概念

2017-05-19 21:25:11 2346

转载 mjpg_streamer源码对针对图像处理算法的修改[转载]

最近在研究mjpg_streamer,发现这是个好东西!关于mjpg_streamer就不做具体介绍了,总之它是在Linux上运行的视频服务器,可以将摄像头采集到的视频数据通过网络传输到客户端,实现视频监控,mjpg_streamer是开源项目。  首先简要的分析一下mjpg_streamer的源码及其工作过程。可以参考这里:http://blog.csdn.net/zhengqijun_/a

2017-05-19 21:15:24 876

转载 dlopen()函数详解[转载]

Linux提供了一套API来动态装载库。下面列出了这些API:- dlopen,打开一个库,并为使用该库做些准备。- dlsym,在打开的库中查找符号的值。- dlclose,关闭库。- dlerror,返回一个描述最后一次调用dlopen、dlsym,或dlclose的错误信息的字符串。1、头文件#include 2、函数原型void *dlopen(const

2017-05-19 16:42:14 22709 3

转载 syslog函数解析[转载]

守护进程日志的实现syslogd守护进程用于解决守护进程的日志记录问题,而日志信息保存的位置和记录的信息级别是在syslogd守护进程的配置文件中设定的。守护进程日志主要涉及3个函数,分别是openlog、syslog和closelog函数。表8.4所示为这3个函数的具体信息。表8.4   openlog、syslog和closelog函数#include

2017-05-19 15:26:20 690

转载 getopt()和getopt_long()函数解析[转载]

平时在写程序时常常需要对命令行参数进行处理,当命令行参数个数较多时,如果按照顺序一个一个定义参数含义很容易造成混乱,而且如果程序只按顺序处理参数的话,一些“可选参数”的功能将很难实现。在Linux中,我们可以使用getopt、getopt_long、getopt_long_only来对这个问题进行处理。[cpp] view plain copy

2017-05-19 14:51:49 315

转载 mjpg-streamer项目源码分析[转载]

前一段时间自己买了个开发板(GT2440的),可是我没有够相应的买cmos摄像头,可是又想做下国嵌的usb视频采集和传输的哪个项目。没办法,只好网上找找相关的项目,最终发现了mjpg-streamer这个开源项目。看了blog们的文章,有种激动,于是自己问同学借了个usb摄像头,试了试,挺好使的。而且处理速度上也挺好的,就开始想了解这个项目是怎么工作了(研究了好几天哦)。下面是我个人在这学习m

2017-05-18 16:49:33 6152

转载 串口状态机的应用[转载]

以前并没有发现串口状态机的好处,最近用到了这种指定格式的数据包解析,才发现这东西非常的好用,可以对串口的数据包进行过滤只解出符合协议的数据包。这个呢其实就是一种思想,不仅仅局限于串口之间的数据传输,我认为可以用在很多指定数据协议的数据包传输解析当中。大致代码思想写在下面,希望对大家有帮助。/* 主要的变量声明在这边 *//* 串口状态机宏 */#define DATA_HEAD 3#d

2017-05-18 16:20:39 1590

转载 printf 函数实现的深入剖析[转载]

研究printf的实现,首先来看看printf函数的函数体 int printf(const char *fmt, ...) { int i; char buf[256]; va_list arg = (va_list)((char*)(&fmt) + 4); i = vsprintf(buf, fmt, arg); write(buf,

2017-05-17 23:43:08 8675 1

转载 从printf谈可变参数函数的实现[转载]

从printf谈可变参数函数的实现摘要:一直以来都觉得printf似乎是c语言库中功能最强大的函数之一,不仅因为它能格式化输出,更在于它的参数个数没有限制,要几个就给几个,来者不拒。printf这种对参数个数和参数类型的强大适应性,让人产生了对它进行探索的浓厚兴趣。关键字:printf, 可变参数 1. 使用情形 int a =10;double b =

2017-05-17 23:00:35 606

转载 mini2440移植printf/scanf函数[转载]

本来想自己实现一个printf函数,顺便再回顾一下变参函数的处理,但是时间紧张,在这里就先通过移植库函数来实现自己的printf函数,等有时间,在重新自己实现下。代码基本上是在前面已有的基础上继续添加:首先来看下lboot.ldsENTRY(_start)SECTIONS{    . = 0x00000000;    .init :

2017-05-17 22:04:41 590

转载 vboot完全解读[转载]

上半个月在学习bootloader,突然找到了一个非常好的vboot。vboot只有最基本的内核引导功能(基于s3c2440,从nand flash启动),对其深入研究后,发现对bootloader有了比较全面的理解。虽然没有像uboot那么多功能,但vboot已经实现了bootloader最核心的功能,其他像什么网络功能、烧写功能等等也只是一些裸机驱动而已。学习bootloader需要有汇编的基

2017-05-17 17:43:42 3018

原创 ARM移植file命令

ARM移植file命令的详细步骤:1、下载file 源代码从下面ftp 站点下载Linux file 命令源代码file-5.04.tar.gzftp://ftp.astron.com/pub/file2、使用tar 命令对文件进行解压。-C选项是指定解压目录 tar xvzf file-5.04.tar.gz -C /root/ARM/3、编写

2017-05-16 11:25:23 1851

原创 ARM移植rz和sz命令

嵌入式Linux移植rz和sz命令1、下载rzsz源码包http://freeware.sgi.com/source/rzsz/rzsz-3.48.tar.gz我在网上尝试找了一下,没有找到下载文件。感兴趣的可以自己去尝试下载源码。这里百度rzsz 源码下面可以下载到如果在Linux系统命令行下,可以使用wget 命令进行下载。wget http://freeware.sg

2017-05-15 23:50:01 1947

原创 向uboot增加新的命令

一、命令的具体定义每个命令都是通过U_BOOT_CMD宏来定义的,这个宏定义了一个相关的结构体cmd_tbl_s,是在uboot/include/command.h 文件中。如下所示:struct cmd_tbl_s { char *name; /* Command Name */ int maxargs; /* maximum number of arguments

2017-05-15 22:14:20 2437

转载 Linux命令学习总结: file命令[转载]

Linux命令学习总结: file命令命令简介:该命令用来识别文件类型,也可用来辨别一些文件的编码格式。它是通过查看文件的头部信息来获取文件类型,而不是像Windows通过扩展名来确定文件类型的。执行权限 :All User指令所在路径:/usr/bin/file命令语法:file [ -bchikLnNprsvz ] [ -f namefile ] [ -F

2017-05-15 21:28:46 447

转载 ubuntu下NFS挂载常见错误的解决方法[转载]

nfs挂载常见错误及解决方法1、问题一reason given by server: Permission denied解决:服务器端启动一定要sudo启动,不然启动失败,服务拒绝。2、问题二svc: failed to register lockdv1 RPC service (errno 111).lockd_up: makesock failed, error=-1

2017-05-15 21:19:33 11419

原创 系统启动出现:Partially written block XXX detected

使用yaffs文件系统一段时间后,串口输出大量 "Partially written block X detected" !主要原因在于yaffs2文件系统在关闭之前,要将dirty 数据写入nand flash。否则下一次开机yaffs2 scan 的时候,就会发现这些block 是Partially written 部分写入的,所以就会提示。这种提示是yaff2文件系统常见的错误!

2017-05-15 16:22:40 511

转载 uboot目录结构[转载]

本来是开始分析uboot代码的,但是无论是教材还是网上资料都对于我最新下的 uboot原码结构不同,对于还是小白的我不容易找到相应的文件,下面是uboot版本中文件组织结构的改变,,,,,u-boot版本情况网站:http://ftp.denx.de/pub/u-boot/1、版本号变化:2008年8月及以前按版本号命名:u-boot-1.3.4.tar.b

2017-05-15 14:48:30 303

转载 Linux 内核调试指南[转载]

linux内核调试指南一些前言作者前言知识从哪里来为什么撰写本文档为什么需要汇编级调试***第一部分:基础知识***总纲:内核世界的陷阱源码阅读的陷阱代码调试的陷阱原理理解的陷阱建立调试环境发行版的选择和安装安装交叉编译工具bin工具集的使用qemu的使用

2017-05-14 23:49:38 2877

原创 Linux内核启动出错can't get kernel image

开发板:mini2440u-boot:2010.03内核:Linux1、下载uImage到0x30008000[u-boot@MINI2440]# tftp 30008000 uImagedm9000 i/o: 0x20000300, id: 0x90000a46 DM9000: running in 16 bit modeMAC: 08:08:11:18:12:27

2017-05-13 22:47:55 18046 1

转载 u-boot环境变量与内核MTD分区关系[转载]

u-boot 与Linux系统内核中MTD分区的关系分区只是内核的概念,就是说A~B地址放内核,C~D地址放文件系统,(也就是规定哪个地址区间放内核或者文件系统)等等。一般我们只需要分3-4个区,第一个为boot区,一个为boot参数区(传递给内核的参数),一个为内核区,一个为文件系统区。(但是有的内核就会有很多分区,比如内核参数会有两个,还有会Logo的地址)。而对于bootload

2017-05-13 17:38:38 693

mkyaffs2image制作工具

2017-05-04

Linux Shell脚本攻略(第2版)

Linux Shell脚本攻略(第2版)

2017-04-19

mjpg-streamer-mini2440-bin-r6

mjpg-streamer-mini2440-bin-r6在mini2440开发板成功运行

2017-04-03

mini2440 supervivi-128M

这是针对于mini2440的supervivi-128M文件,亲测可用!已用JLink下载到Nor Flash中运行成功。

2017-04-03

蓝牙AT指令集

蓝牙AT指令集

2016-11-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除