自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

韩胜飞的博客

生命不息 奋斗不止

  • 博客(42)
  • 资源 (4)
  • 收藏
  • 关注

原创 usb 1-1: device descriptor read/64的解决方法

插入USB设备,如U盘,读卡器等时出现:[root@Nision=W]#usb 1-1: new full speed USB device usings3c2410-ohci and address 2usb 1-1: device descriptor read/64, error -62usb 1-1: device descriptor read/64, error -62usb 1-1:...

2018-04-25 13:03:49 2411

转载 AT91SAM9G45上电启动和bootstrap移植过程

猛一回头,觉得笔记不能断掉,所以趁空好好整理一下思路。最近做了什么?从9月底到今天约20天三周的时间里,基本就是:熟悉canopen协议栈,熟悉bootstrap,uboot源码及其移植,期间了解了下ARM裸机启动和内部时钟配置,norflash驱动移植。从哪里说起呢?当然是ARM裸机启动。我觉得这也应该是做嵌入式开发的起点,从裸机启动,程序下载,bootstrap、uboot、os、fs、驱动的...

2018-03-13 10:10:12 892

原创 ubuntu16.04编译内核出现 "mkimage" command not found - U-Boot images will not be built

按照惯例没有这个东西就安装这个东西所以: sudo apt-get install uboot-mkimage结果说没有找到安装包,但是提供了替换的安装包:就是这个 u-boot-toolsReading package lists... DoneBuilding dependency tree       Reading state information... DonePackage uboo...

2018-03-13 09:18:47 3178

原创 Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line

编译64位内核kernel/timeconst.pl问题解决Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373. 其实,提示的错误信息已经明确告诉你了,你应该省略defined().这里,我们打开 kernel/timeconst.pl@val...

2018-03-13 08:58:03 1653

原创 LINUX USB驱动分析

编写与一个USB设备驱动程序的方法和其他总线驱动方式类似,驱动程序把驱动程序对象注册到USB子系统中,稍后再使用制造商和设备标识来判断是否安装了硬件。当然,这些制造商和设备标识需要我们编写进USB 驱动程序中。 USB 驱动程序依然遵循设备模型 —— 总线、设备、驱动。和I2C 总线设备驱动编写一样,所有的USB驱动程序都必须创建的主要结构体是 struct usb_driver,它们向USB 核...

2018-03-02 11:26:45 279

转载 总线-驱动-设备模型:platform设备驱动应用实例解析

一、platform 驱动的工作过程        platform模型驱动编程,需要实现platform_device(设备)与platform_driver(驱动)在platform(虚拟总线)上的注册、匹配,相互绑定,然后再做为一个普通的字符设备进行相应的应用,总之如果编写的是基于字符设备的platform驱动,在遵循并实现platform总线上驱动与设备的特定接口的情况下,最核心的还是字符...

2018-02-08 16:02:03 387

原创 Linux输入子系统:事件的编码 -- event-codes.txt

输入系统协议用类型types和编码codecs来表示输入设备的值并用此来通知用户空间的应用程序。这篇文档对这些类型和编码进行了说明并且指出什么时候和如何使用这些类型和编码。 一个单一的硬件事件可以产生多个输入事件,每个输入事件包含一个单一数据项的新的数据值。EV_SYN是一个特别的事件类型,它用来把同一时刻产生的多个输入数据分割为多个数据包。在下面的描述中,术语事件(event)是指一个涵

2018-02-07 14:13:33 279

原创 Linux查看设备号

Linux的设备管理是和文件系统紧密结合的,把设备和文件关联起来,这样系统调用可以直接用操作文件一样的方法来操作设备。各种设备都以文件的形式存放在/dev目录下,称为设备文件。应用程序可以打开、关闭和读写这些设备文件,完成对设备的操作,就像操作普通的数据文件一样。为了管理这些设备,系统为设备编了号,每个设备号又分为主设备号和次设备号。主设备号用来区分不同种类的设备,而次设备号用来区分同一类型的多个

2018-02-06 15:16:25 3500

转载 Linux中断(interrupt)子系统之五:软件中断(softIRQ)

软件中断(softIRQ)是内核提供的一种延迟执行机制,它完全由软件触发,虽然说是延迟机制,实际上,在大多数情况下,它与普通进程相比,能得到更快的响应时间。软中断也是其他一些内核机制的基础,比如tasklet,高分辨率timer等。/*******************************************************************************

2018-02-03 14:19:56 209

转载 Linux中断(interrupt)子系统之四:驱动程序接口层 & 中断通用逻辑层

在本系列文章的第一篇:Linux中断(interrupt)子系统之一:中断系统基本原理,我把通用中断子系统分为了4个层次,其中的驱动程序接口层和中断通用逻辑层的界限实际上不是很明确,因为中断通用逻辑层的很多接口,既可以被驱动程序使用,也可以被硬件封装层使用,所以我把这两部分的内容放在一起进行讨论。本章我将会讨论这两层对外提供的标准接口和内部实现机制,几乎所有的接口都是围绕着irq_desc和i

2018-02-03 14:18:16 162

转载 Linux中断(interrupt)子系统之三:中断流控处理层

1.  中断流控层简介早期的内核版本中,几乎所有的中断都是由__do_IRQ函数进行处理,但是,因为各种中断请求的电气特性会有所不同,又或者中断控制器的特性也不同,这会导致以下这些处理也会有所不同:何时对中断控制器发出ack回应;mask_irq和unmask_irq的处理;中断控制器是否需要eoi回应?何时打开cpu的本地irq中断?以便允许irq的嵌套;中断数据结构的同

2018-02-03 14:16:20 145

转载 Linux中断(interrupt)子系统之二:arch相关的硬件封装层

Linux的通用中断子系统的一个设计原则就是把底层的硬件实现尽可能地隐藏起来,使得驱动程序的开发人员不用关注底层的实现,要实现这个目标,内核的开发者们必须把硬件相关的内容剥离出来,然后定义一些列标准的接口供上层访问,上层的开发人员只要知道这些接口即可完成对中断的进一步处理和控制。对底层的封装主要包括两部分:实现不同体系结构中断入口,这部分代码通常用asm实现;中断控制器进行封装和实现;

2018-02-03 14:14:42 161

转载 Linux中断(interrupt)子系统之一:中断系统基本原理

这个中断系列文章主要针对移动设备中的Linux进行讨论,文中的例子基本都是基于ARM这一体系架构,其他架构的原理其实也差不多,区别只是其中的硬件抽象层。内核版本基于3.3。虽然内核的版本不断地提升,不过自从上一次变更到当前的通用中断子系统后,大的框架性的东西并没有太大的改变/********************************************************

2018-02-03 14:12:41 258

原创 ubuntu16.04 64位系统上安装QT5.6

一下载安装包,下载地址:https://download.qt.io/official_releases/qt/5.6/5.6.1/这里只有一个64位的 那么你需要看一看你的ubuntu系统是不是64位的执行:sudo uname --m如果显示x86_64则是64位的系统如果显示的是i686则是32位的系统。32位的系统是安装不上去的。二.安装1.添加可执行权

2017-12-03 17:51:39 3711

原创 关于在ubuntu16.04 64位系统上安装交叉编译工具出现错误的解决方法

一.安装交叉编译工具 详细的安装过程请移步我的另外一个帖子:http://blog.csdn.net/hanshengfei/article/details/78669298二。安装之后执行命令 arm-linux-gcc -v出现找不到编译工具 原因是交叉编译工具是32 位的但是咱们的系统是64位的这就需要下载安装一下32位的兼容库,但是ubuntu16.04已经不支持ia32-libs的软件包...

2017-12-03 17:11:59 967

原创 c++中字符串与数字的转换

字符串流类(sstream)用于string的转换:相关头文件istringstream:字符输入流ostringstream:字符输出流使用方法:#include #include #include using namespace std;bool StrToNum(const string& s , int& n)//return bool { istri

2017-11-30 20:16:11 2711

原创 操作符重载

一.为什么要引入操作符重载?比如我们现在要实现复数的运算,那么现在C++编译器能实现复数的相加吗?好现在咱们写个小程序试验一下:#include class Complex{public: int a; int b; };int main(){ Complex c1 = {1,2};//a=1,b=2 Complex c2 = {4,6}; Comple

2017-11-29 22:13:15 146

原创 安装交叉编译工具

1. 下载安装包 arm-linux-gcc-4.4.3.tar.gz地址:链接:https://pan.baidu.com/s/1nuO64ZJ 密码:nm4f2.新建文件夹work 并将刚才下载的资源放进去 并解压到根文件目录sudo tar zxvf arm-linux-gcc-4.4.3.tar.gz -C / #展开在根目录ls /opt/FriendlyARM

2017-11-29 20:54:50 330

原创 ubuntu 手动更新源 以及使用sudo update与upgrade的作用及区别

一.今天更新一下我的ubuntu系统,用了几个源发现不怎么好用 上网查了一下发现有说阿里云的源挺好用 然后我试了一下 下载速度还挺快,下面分享一下怎么手动添加源列表1.最好先做一下备份sudo cp /etc/apt/sources.list /etc/apt/sources.list_save2.更新源列表:sudo gedit /etc/apt/sources.list3.

2017-11-29 19:44:19 10973

原创 二阶构造函数

为什么要是用二阶构造函数,要明白这个问题,那么我们需要先了解构造函数的几个特性:1. 类的构造函数用于类的初始化2. 构造函数与类同名并且没有返回值3. 构造函数在对象定义时自动调用好知道了这几个问题之后,那么问题来了1. 如何判断构造函数的执行结果2. 在构造函数里执行return语句会发生什么?3. 构造函数结束之后,是否意味着对象的构造成功?构造函数只提供

2017-11-28 10:03:30 1020

原创 C++中修改const成员变量

1.c++类中定义const成员的时候必须进行初始化,而且只能通过初始化列表来进行 所以说类中存在const成员时,必须存在构造函数。当类中同时存在拷贝构造函数时也必须通过初始化列表将其初始化,否则编译器会报错2.c++类中提供的const成员变量为只读变量,所以说我们可以通过一定的方式改变它那么我们可以通过什么方式来改变cons成员呢?1.C++ 中提供了const_cast强制

2017-11-26 20:20:37 2342

原创 Zigbee中的组播实验

1.组播:把各个节点进行分组标记,发送端将数据发送到指定的组,端点,簇 。只有这三个参数一一对应了数据才能被接收到2.组为两个字节的编号,要和模块里已经定义的可用端点相关连3.同一个端点可以不关联多个组(比如10号端点可以关联0x0001和0x0002这两个组)实验目的:终端:按下K1发送数据给组0x0001,10号端点,簇2      按下K2发送数据给组0x0002,10号

2017-11-17 17:02:41 1982

原创 关于zigbee中的端点与簇

端点:Endpoint一.特点:1.  1个字节的编号(0---255),数据接收和发送的基本单元(数据发送时必须指定接收端的某个端点),在模块通信的时候,发送和接收双方必须指定端点号和网络地址2. 端点要是用必须定义注册,并且挂钩到摸个任务(如应用层任务)  程序如下:void MyApp_Init( byte task_id ){//端点描述符  定义并注册端点并和

2017-11-16 15:22:18 3887 3

原创 协调器断电之后再上电,终端设备不能入网的问题

1.设置PANID为固定的值 其原因如下:网络组好后,将协调器关掉,路由器是不会再加入到重新上电的协调器了。因为PANID不同,路由器已经是一个独立的网络(协调器创建网络后也是一个普通的协路由器了)。如果你再重新给协调器上电,PANID和路由器相同不能建立网络,只能在另一个PANID上建立网络,那么这两个设备就不是一个网络了,所以你一直开着的那个设备没有反应,因为他们已经不是一

2017-11-15 21:46:44 1002

转载 Linux下LCD 10分钟黑屏解决

在用LCD显示的时候,发现10分钟LCD就不再工作了。确实,Linux下有一个参数blankinterval的值就是10*60*Hz。它决定了LCD只显示10分钟,然后LCD控制器就被关掉了。具体细节请参考http://blog.csdn.net/dongliqiang2006/article/details/4262950但是这篇文章最后给出的程序是不能用的,有一处错误,

2017-11-13 11:50:37 568

转载 用nfs挂载内核时出现错误T T T T T T T *** ERROR: Cannot umount的解决办法

挂在内核时,出现如下的错误如果出现这种错误,可以修改ubuntu上的/etc/hosts文件,这个文件时只读文件,所以要加sudo来执行命令:在里面添加开发板的ip和nfs要挂载的目录,比如我的开发板ip为192.168.1.17,nfs目录是/work/nfs_root/,就在里面添加这一行,如下所示:

2017-11-13 11:44:15 382

原创 linux 用户空间 和 内核空间 延时函数

linux 用户空间 和 内核空间 延时函数From: http://blog.csdn.net/geekcome/article/details/6554729用户空间:1.unsigned int sleep(unsigned int seconds);    sleep()会使当前程序休眠seconds秒。如果sleep()没睡饱,它将

2017-11-13 11:42:47 237

转载 ubuntu 14.04设置了静态IP不能上网的解决方法

问题:在ubuntu中配置静态IP后无法正常上网。解决:1、在终端执行sudo gedit /etc/network/interfaces在文件中加入如下内容,网关要写上,我开始一直无法上网就是因为没有配置网关auto eth0iface eth0 inet staticaddress 192.168.1.151netmask 255

2017-11-13 11:31:50 5263

转载 Ubuntu安装SSH时出现软件包 openssh-server 还没有可供安装的候选者错误

Ubuntu安装ssh时出现软件包 openssh-server 还没有可供安装的候选者错误错误如下:sudo apt-get install opensshserver正在读取软件包列表...完成正在分析软件包的依赖关系树正在读取状态信息...完成现在没有可用的软件包 openssh-server,但是他被其他的软件包引用了这可能意味着这个缺失的软件包可能

2017-11-13 11:30:29 8727 2

转载 ubuntu连接不上secureCRT 和cuteFTP问题

Ubuntu版本:11.10网络方式:桥接故障:ubuntu连接不上secureCRT解决办法:1、  首先关闭ubuntu的防火墙:ufw disable2、  下载ssh需要工具:apt-get install openssh-server openssh-clientOK了,通过secureCRT可以登录ubuntu了! 另外,还会出现

2017-11-13 11:29:06 203

原创 启动、关闭和设置ubuntu防火墙

sudo  ufw enable|disable由于LInux原始的防火墙工具iptables过于繁琐,所以ubuntu默认提供了一个基于iptable之上的防火墙工具ufw。ubuntu 9.10默认的便是UFW防火墙,它已经支持界面操作了。在命令行运行ufw命令就可以看到提示的一系列可进行的操作。最简单的一个操作:sudo ufw status可检查防火墙的状态,我的返

2017-11-13 11:27:37 3584

转载 Linux输入子系统分析(一)

首先说明一下,本文是基于Linux-2.6.38版本内核来分析Linux输入子系统架构和原理的。这阵子本来没有打算花时间来分析Linux input system的,然而当在研究S3C6410触摸屏驱动的时候悲剧不期而至,内核中并没有实现6410的触摸屏驱动,不过有关于S3C2410触摸屏的驱动,往s3c2410_ts.c文件里面一看,居然实现过程中用到了输入子系统这一神马机制。瞄了下代码,流程基

2017-11-13 11:25:03 383

转载 Linux下的/lost found目录

/lost found这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。如果Linux分区有损坏情况,启动有问题,不能正常进入文本或图形界面。那么一般会出现提示,需要输入Root密码登录后采用fsck -t ext3 -r /usr/local 修复 , /usr 是提示检查不能通过的分区。fsck的命令的几个使用

2017-11-13 11:22:18 1169

转载 u-boot启动内核的几种方式

分析uboot是如何启动内核的u-boot启动内核有以下几种方式:1、使用do_bootm_linux(),在/lib_arm/bootm.c定义,因为我们已经知道入口地址了,所以只需跳到入口地址就可以启动linux内核了1.uboot启动内核的代码缩减如下:s = getenv ("bootcmd");debug ("### main_loop: bootcm

2017-11-13 11:20:42 388

转载 readline中的键盘码^[[A,^[[B,^[[D,^[[C (ANSI控制码)

最近调试u-boot的readline,对一些特殊按键键值有些疑惑,比如↑↓←→四个键,在linux的minicom敲下这几个键,串口会输出什么数据。其实不需要用串口测试,我们可以写个小程序测试一下:点击(此处)折叠或打开#include stdio.h>#include curses.h>int main(int argc, c

2017-11-13 11:18:55 1548

转载 CPU的ADDR2为什么跟SDRAM的0地址线接在一起

最近看到坛子里很多初学者对于CPU与SDRAM的接线方式不明白,不懂为什么CPU的地址线要从ADDR2开始接并且是接到SDRAM的0地址线上。当初我也费了一定的时间才把它弄懂,说实话需要动一定的脑筋。1,先弄清楚第一个概念,对于CPU来说:      一个地址用32位来表示:0x30000000、0x40000000;      但是这个地址代表的地址空间是1个字节,也就是说CPU读取

2017-11-13 11:13:03 531

原创 Linux下的tar压缩解压缩命令详解

tar-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。-z:有gzip属性的-j:有bz2属性的-Z:有compress属性的-v:显示所有过程-O:将文件解开到

2017-11-13 11:09:38 161

转载 ARM汇编指令集[转贴]

FoldTable of Contents跳转指令B指令BL指令BX指令BLX指令数据处理指令MOV 传送MVN 求反CMP 比较CMN 负数比较TST 测试(按位的与运算)TEQ 测试相等(按位的异或运算)ADD 相加ADC 带进位相加SUB 相减SBC 带进位减法RSB 逆向减法RSC 逆向带进位减AND

2017-11-13 11:06:52 171

转载 NAND FLASH操作学习笔记

首先是几个C语言的学习点。1.利用一个函数结构体,来保存某一类的函数首地址,一个很好的编程技巧,可以使程序可读性增加。做法是:typedef struct {    void (*nand_reset)(void);    void (*wait_idle)(void);    void (*nand_select_chip)(void);    void (*na

2017-11-13 11:05:16 213

转载 ZSTACK协调器掉电重新组网无法加入网络的解决

我用的是TI ZIGBEE2007的协议栈,由于之前默认对协调器编译NV_INIT和NV_RESTORE两个选项而其他节点只有NV_INIT这个选项所以每次我用协调器重新上电,所有的节点都是重新入网而且协调器并不会擦出以前的节点,而协调器是有网络节点上限的,所以基本上重新加入几次就满了,然后就不能继续加入了,关于这个问题,首先看看编译项 NV_INIT和NV_RESTO

2017-11-13 11:02:56 1913

Qt5.6.1安装qwt-6.1.2

Qt5.6.1 安装 qwt-6.1.2 一.下载QWT文件 地址https://sourceforge.net/projects/qwt/files/qwt/ 在QT的安装目录新建文件夹Qwt 目录如下F:\QT\Qwt 解压之后目录:

2017-11-18

Zigbee组播实验

终端:按下K1发送数据给组0x0001,10号端点,簇2 按下K2发送数据给组0x0002,10号端点,簇2 协调器:按下K1加入组0x0001,并且去除组0x0002,接收到数据并用串口发送出去 路由器:按下K2加入组0x0002,并且去除组0x0001,接收到数据并用串口发送出去

2017-11-17

pcb 画板 Altisum desiner

PCB画板指导 Altisum 硬件设计

2014-09-28

超声波 遥控

超声波舵机摇头壁障 遥控 程序 是智能小车

2014-08-13

空空如也

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

TA关注的人

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