自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hhhlizhao的博客

为中国IT业的进步而奋笔!

  • 博客(53)
  • 资源 (3)
  • 论坛 (27)

原创 imx6q添加两路CAN并实现通信功能

目的:在imx6q上添加第二路CAN的驱动支持,并实现第二路CAN的通信功能。CPU:imx6qLinux: 3.10.53一、添加二路CAN的驱动支持这个过程很简单,就是添加第二路CAN的设备树,驱动系统以及做好。在内核源码中搜索can,可以在imx6q-sabresd.dts中发现如下信息:这是原本已经添加的一路CAN的设备树(一部分代码),仿照此段添加另一路...

2020-05-13 17:51:53 230

原创 Zynq TTC蜂鸣器驱动开发

目的:在Zynq 7030平台开发ttc pwm驱动程序,以驱动蜂鸣器鸣叫。硬件平台:Zynq 7030软件平台:linux-xlnx-xilinx-v2018.2开发工具:vivado、SDK、Ubuntu蜂鸣器:无源压电式驱动开发方法:linux杂项设备驱动Zynq 7030并没有集成pwm控制器,因此无法实现用pwm驱动蜂鸣器工作。但Zynq有两个三路定时器TTC,可以利用TTC输出pwm波,因此可以利用TTC来实现pwm蜂鸣器。一、查阅原理图和数据手册(1)原理.

2020-05-13 17:51:09 332

原创 Zynq-7000系列平台linux下操作MIO/EMIO GPIO方法

开发板:Zynq7030数据采集板开发环境:Xilinx Vivado + SDK -18.3交叉编译工具:arm-linux-gnueabihf-目的:通过Linux下GPIO驱动控制开发板上的LED灯linux下操作Zynq7030平台GPIO方法和操作其他平台GPIO方法大同小异,只是要注意Zynq平台GPIO号的计算方法与其他平台略有不同。比如:NXP的imx6q平台的GPIO号...

2020-05-13 17:13:33 308

原创 杂项设备,insmod成功后cat /proc/devices看不到设备号

如题,使用杂项设备方法实现linux设备驱动,insmod成功后,使用cat /proc/devices命令查看不到相应的设备号。原因:命令使用不对。解决办法:使用cat /proc/misc命令。如下,问题解决。(真坑。)...

2020-04-13 17:04:55 427

原创 压缩命令tar cf xx.tar -C的正确用法

linux下的tar cf命令大多数人都能熟练使用,其中c为创建的意思,f为文件的意思,使用tar cf可以将一个或多个文件进行压缩。tar除了有小写的c这个参数外,还有大写的C参数,这个参数如果对它的意思不是很理解,有时用起来就会让人感到迷惑。大C命令用来指定某个目录下的文件,表示将压缩这个目录下的文件,但其使用时要注意后面要接一个文件名,比如,我下面这种用法:在temp目录下有...

2020-03-12 14:55:18 1054

原创 libxml2文件解析失败:parser error : Unsupported encoding gb2312

在imx6q上使用xml文件存储数据,但解析时出现如下错误:Entity: line 1: parser error : Unsupported encoding gb2312<?xml version="1.0" encoding="gb2312"?> ^doc == nullparse xml fa...

2019-12-30 10:50:25 405

原创 极低级错误引发的“multiple definition of `XXX''”

在文件x.c中声明定义了一个变量temp,在y.c中包含了x.h头文件,编译时遇到“multiple definition of `XXX''”,提示在y.c文件中重定义了temp。反复检查代码,确定一切操作都无误,y.c文件中也确定没有定义temp,但错误依然存在。搞了半小时,终于找到错误的原因,原来是在y.c中include了x.c文件,而不是x.h。低级错误形式如下:#inclu...

2019-11-08 16:31:56 68

原创 libxml2在Linux arm平台的交叉编译

libxml版本:libxml2-2.9.1交叉编译器:arm-poky-linux-gnueabi-gcc编译过程很简单,只是配置方法有一个需要注意的细节。我看了好几篇文章,配置方法各有不同,但都没有指出要注意的细节,对配置含义不清楚的时候常常会被其误解,导致配置错误。1、下载源码包 wget https://git.gnome.org/browse/libxml2/sn...

2019-10-29 17:22:14 240

原创 imx6q开发板设置管脚为gpio的方法

由于项目需要,要将某端口设置为GPIO,查看原理图,确定管脚pad为DISP0_DAT8:查看datasheet,可知DISP0_DAT8可复用为gpio4_io29端口,同时可以看出DISP0_DAT8的select寄存器为IOMUXC_SW_MUX_CTL_PAD_DISP0_DATA08:在板子上执行/unit_tests/memtool IOMUXC_SW_MUX_CTL_...

2019-09-19 13:30:33 192

原创 “Inconsistency detected by ld.so: dl-deps.c: 622:..... Assertion `nlist > 1' failed!”问题的解决

在ARM嵌入式开发板上运行应用程序,出现如下错误“Inconsistency detected by ld.so: dl-deps.c: 622: _dl_map_object_deps: Assertion `nlist > 1' failed!”,出现这个错误的原因是第三方库的使用方式不正确,我在程序中用到了libpthread库,但是采用的动态链接库的方法。待我在编译参数中加上-sta...

2019-08-22 15:14:53 1754

原创 imx6q开发板的PWM蜂鸣器调试

开发板:I.MX6Q 5155Linux内核:嵌入式3.10.53蜂鸣器:无源压电式日期:2019-6-29 18:50调试目的:在开发板上实现PWM驱动蜂鸣器蜂鸣。调试过程如下:(0)首先运行开发板Linux系统,查看目前系统所使用的pwm设备。如下:可见目前系统只有背光是使用pwm实现,为了调试方便,可以通过背光来模拟蜂鸣器,使用背光设备树来驱动蜂...

2019-08-16 16:23:37 308

原创 几种常见音频编码格式的总结

PCM编码分为:PCM编码(原始数字音频信号流):16bit、8000HZADPCM(自适应差分PCM)对数PCM(非均匀量化PCM):Mu-law、A-law,两种都是8bit,8000HZPCMU(G.711U):即Mu-lawPCMA(G.711A):即A-law...

2019-08-16 16:18:12 8418

原创 Ubuntu上安装xilinx PetaLinux工具的注意事项

在Ubuntu上安装PetaLinux工具,要尤其注意安装路径的权限,最好用chmod777 xxx修改一下;其次要注意的是安装路径的所有者,应是本用户所有,而不是root用户,比如我安装在/home/zynq目录下,那zynq目录应用如下命令进行设置:sudo chown lisan:lisan /home/zynq其中lisan为我的用户名。如果不按照如上方法进行设置,则安装过...

2019-08-08 18:25:50 594

原创 error: ISO C++ forbids declaration of 'CPageConfigMail' with no type

编译C++程序出现错误:error: ISO C++ forbids declaration of 'CPageConfigMail' with no type出现这个问题原因不一,最有可能的是头文件忘记包含。解决方法:在.h文件中包含类CPageConfigMail的头文件;并加入class CPageConfigMail;一行代码(或只加入头文件也可),即可。...

2019-03-23 16:42:45 500

原创 标准G726音频解码和与H264视频封装为avi

avilib库并不能直接支持G726音频的封装,源码中只支持G711A、G711U和MULAW_PCM,但查看源码可发现,avilib其实也是将G711U等音频先解码为16位linear PCM,再将PCM与H264封装为avi格式音视频,从而实现G711U等与H264的封装。因此我们可以将G726先解码为linear PCM,再用avilib接口将音视频封装为avi文件。线性PCM是最原始的...

2019-03-15 17:44:07 8716 3

原创 配置SecureCRT背景颜色和字体颜色

参考网上的博文配置CRT颜色,看了多篇傻瓜教程式的文章,搞了半个多小时都没有修改成功,自己又摸索了半天,终于找到了正确的方法,现在分享一下,以供读者朋友们参考。(1)打开Options-> Session Options-> Terminal-> Appearance。(2)在Current color scheme中,选择自己喜欢的颜色方案(此处已经包含了背景颜色和...

2019-01-18 16:41:48 3554

原创 单链表反转

参考http://blog.csdn.net/feliciafay/article/details/6841115。单链表的反转有多种方法,这里实现我认为最容易理解,效率也颇高的一种,即用三个指向不同结点的指针来完成链表逆置。算法代码实现如下:void reverseLinkList(LinkList *list) { LinkList p, q, r; p = *list; q

2017-12-29 15:48:26 411

原创 编程实现两个有序单链表的合并

实现两个单链表的合并就是将多个原链表的结点进行重新组合排列,重组成一个新的链表。可以采用下面算法实现,这里list1和list2都是按值递增的序列。LinkList MergeList(LinkList list1, LinkList list2) { LinkList list3; LinkList p = list1, q = list2; LinkList r; if (

2017-12-29 14:21:15 1000

原创 删除单链表中指针q指向的结点

题目:有一个非空单链表list,每个结点中存放一个整型数据。 指针q指向链表中某一个结点,编写函数delLink,删除q指向的结点。链表定义如下:typedef struct node{ElemType data; //数据域struct node *next; //指针域}LNode, *LinkList;分析:

2017-12-28 21:50:12 1457

原创 在arm Cortex-A9开发板移植rtl8821au无线网卡并实现与外网通信

开发板:Xilinx ZC702嵌入式系统:linux4.4交叉编译器:arm-xilinx-linux-gnueabi-gccWIFi工具:wireless_tools.30.rtl驱动版本:rtl8821AU_WiFi_linux_v5.2.6.2_23547.20170814_COEX20170206-6760本文中所用的rtl8821au无线网卡实为蓝牙无线网卡

2017-09-23 09:50:37 3559 2

原创 Windows无法ping通百度IP问题

Windows下用cmd ping百度IP出现“请求超时”错误,换了多个百度IP地址都未解决,后来在网上看到有人搜集到的各省市的百度IP地址,于是换了笔者所在城市的百度IP,成功ping通。附:各省市百度IP地址58.217.200.13 江苏省 南京市 电信58.217.200.15 江苏省 南京市 电信58.217.200.37 江苏省 南京市 电信

2017-09-19 17:03:30 3498

原创 阿里面试题:在64位系统下,分别定义如下两个变量:char *p[10]; char(*p1)[10];请问,sizeof(p)和sizeof (p1)分别值为____。

(阿里面试题)题目:在64位系统下,分别定义如下两个变量:char *p[10]; char(*p1)[10];请问,sizeof(p)和sizeof (p1)分别值为____。解析:考查的知识点是指针数组与数组指针。首先要明确指针数组与数组指针的定义和区别:    (1)指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针。如int*

2017-09-13 22:47:02 2879

转载 从脚本编写到面向对象的 Python 编程

如何成为面向对象的 Python 程序员引言Python 在近年来的受欢迎程度剧增,部分原因在于该语言非常灵活,同时功能非常强大。Python 可用于系统管理、Web 开发、GUI 编程、科学计算等等。本文的主要目标是向习惯于使用 Bash、PHP 或其它某种语言编写脚本过程代码的人介绍面向对象的 Python 开发,并帮助他们转换到面向对象的 Python 开发。

2017-09-11 11:31:20 490

转载 Linux 中的零拷贝技术

转自https://www.ibm.com/developerworks/cn/linux/l-cn-zerocopy2/Linux 中的直接 I/O如果应用程序可以直接访问网络接口存储,那么在应用程序访问数据之前存储总线就不需要被遍历,数据传输所引起的开销将会是最小的。应用程序或者运行在用户模式下的库函数可以直接访问硬件设备的存储,操作系统内核除了进行必要的虚拟存

2017-09-11 10:57:16 268 1

转载 epoll详解

什么是epollepoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linux kernel 2.5.44),它几乎具备了之前所说的一切优点,被公认为Linux2.6下性能最好的多路I/O就绪通知方法。 epol

2017-09-11 10:44:17 326

转载 SQLite剖析之编程接口详解

前言  使用过程根据函数大致分为如下几个过程:sqlite3_open()sqlite3_prepare()sqlite3_step()sqlite3_column()sqlite3_finalize()sqlite3_close()  这几个过程是概念上的说法,而不完全是程序运行的过程,如sqlite3_column()表示的是对查询获得一行里面的数据的列的各个操作统称,

2017-09-11 10:30:47 546

转载 高性能网络编程7--tcp连接的内存使用

当服务器的并发TCP连接数以十万计时,我们就会对一个TCP连接在操作系统内核上消耗的内存多少感兴趣。socket编程方法提供了SO_SNDBUF、SO_RCVBUF这样的接口来设置连接的读写缓存,linux上还提供了以下系统级的配置来整体设置服务器上的TCP内存使用,但这些配置看名字却有些互相冲突、概念模糊的感觉,如下(sysctl -a命令可以查看这些配置):net.ipv4.tcp_rme

2017-09-11 10:07:15 300

转载 Linux下直接读写物理地址内存

转载自http://www.cnblogs.com/Ph-one/p/6844184.html虚拟 转 物理地址  virt_to_phys( *addr );物理 转 虚拟地址  phys_to_virt( *addr );-------------------------------------------------Linux内核里提供的/dev/mem驱动,

2017-09-11 09:58:20 3894

原创 C++实现堆排序算法

C++实现堆排序算法一例,所建堆为大堆。#include using namespace std;int arrs[] = { 23, 65, 12, 3, 8, 76, 345, 90, 21, 75, 34, 61 };int arrLen = sizeof(arrs) / sizeof(arrs[0]);class heapsort{ public: void Bu

2017-08-05 20:55:24 312

原创 开发板测试网口带宽方法

由于项目需要,需对开发板千兆网口传输速率进行测试,开始想到的方法十分简单,直接在开发板上移植一个ftp服务器,然后利用Ubuntu上的ftp客户端进行文件传输,以测试网口文件传输速度,但这样做需要将测试文件放到SD卡中,而SD卡的文件传输速度十分有限,远远达不到千兆的要求,所以这样测出的速率不是千兆网口的真实传输速率,因此只能自己编写ftp服务器端来实现文件传输。方法是先在内存中申请一块较

2017-07-29 20:40:37 3771 1

原创 修改Ubuntu14.04虚拟机MTU值

用ifconfig命令可查看Linux系统下MTU值,一般默认为1500字节,如下所示MTU的设置一般有两种方法:(1)、如下,即时生效,重启后失效# sudo ifconfig eth0 mtu 9000(2)、永久生效的修改方法,缺点是需要重启网卡# vim  /etc/sysconfig/network-scripts/ifcfg-eth0

2017-07-28 09:19:56 4401

原创 Ubuntu关闭(重启)网络服务命令

Ubuntu关闭网络服务命令:service network-manager stop重启网络服务命令:service network-manager restart参考:http://blog.csdn.net/u010921682/article/details/53112580

2017-07-21 14:15:59 14471 2

原创 socket编程中recv()和read()的使用与区别

recv和read相似,都可用来接收sockfd发送的数据,但recv比read多了一个参数,也就是第四个参数,它可以指定标志来控制如何接收数据。1、recv()原型:ssize_t recv(int sockfd, void *buf, size_t nbytes, int flags);返回值:返回数据的字节长度;若无可用数据或对等方已经按序结束,返回0;若出错,返回-1.(APU...

2017-06-29 15:23:41 12874

原创 编译QT5.7.0遇到 ERROR: Unknown module(s) in QT: quick

编译嵌入式QT5.7.0,配置完成后在make时遇到 ERROR: Unknown module(s) in QT: quick,后将配置文件加入-skip qtdeclarative解决,完整配置选项如下:./configure -opensource -shared -xplatform linux-arm-gnueabihf-g++ -qt-zlib -no-opengl -no-ope

2017-06-22 15:09:34 12495 7

原创 zynq平台实现linux gpio驱动

参考懒兔子博文(http://www.eefocus.com/nightseas/blog/12-11/288078_7a826.html)实现在zynq平台通过开关控制LED的linux驱动程序,硬件平台搭建可参考懒兔子博文。

2017-06-18 20:07:16 6140 5

转载 insmod: can't insert 'led.ko': invalid module format

 之前在Imx257学习版固件编写的驱动想直接移植imx257核心板的开发板上。以为2个板子的源码的引脚定义一样就没什么问题了。殊不知问题很多。我们输入dmesg |tail 在log中我们看到2个版本不匹配。 在这儿我们需要明白一个原理,我们编译驱动程序的Makefile  有一个KDIR指的是Linux源码文件,那个源码文件一定是编译过内核的源码文件。那个内核应该就是...

2017-06-12 22:57:44 1448

原创 readn和writen函数实现通信

readn()和writen()并非任何标准的组成部分,这两个函数是我们自己定义的,只是为了使用方便。以下是笔者自己实现的readn和writen函数,可用于客户端和服务器端进行通信,测试时先将服务器端程序运行,然后再运行客户端程序,客户端在linux终端下输入消息,回车变可发送给服务器daunt,只后服务器端会回射消息给客户端。read()和writen()函数可用于处理tcp传输的粘包问题...

2017-05-21 20:04:43 493

原创 基于socket网络编程的文件传输程序

自己编写的用于linux下的简单文件传输程序,,传输模式为二进制,只可用于文件传输,分为客户端和服务器端,运行时先执行服务器端程序,再执行客户端程序,注意服务器端和客户端的文件名要在代码中修改。运行时直接输入./server和./client,不需要输入任何参数。代码如下:服务器端#include #include #include #include #include

2017-05-13 22:35:45 950

原创 深入理解linux下write()和read()函数

1、write()函数定义:ssize_t write (int fd, const void * buf, size_t count);函数说明:write()会把参数buf所指的内存写入count个字节到参数fd所指的文件内。返回值:如果顺利write()会返回实际写入的字节数(len)。当有错误发生时则返回-1,错误代码存入errno中。附加说明:(1)write...

2017-05-13 20:09:11 100306 18

原创 利用tftpd32在Linux与Windows7之间传输文件

参考游鹏老(http://blog.csdn.net/tzp1025029729/article/details/50921138)和snmplink的博文(blog.csdn.net/qingwufeiyang12346/article/details/50596061),利用tftpd32在Ubuntu虚拟机与Windows7之间传输文件,试验多次Ubuntu端都出现“Transfer tim...

2017-05-07 10:41:44 2565

用于linux下基于ftp的vsftp服务器源码vsftpd-3.0.2.tar.gz

基于ftp协议的linux服务器,可用于linux与Windows之间的数据传输,也可用于嵌入式linux与Windows的数据传输

2017-01-08

linux下vsftp服务器源码vsftpd-3.0.2.tar.gz

2017-01-08

Linux系统安装教程

Linux系统安装教程,十分适合初学者和新手使用。

2015-08-19

socket网络编程中为什么说TCP是面向字节流,而UDP是面向数据报的?

发表于 2017-07-03 最后回复 2020-04-17

H264+aac(或者G711A、G711U、G726等)可以直接封装成avi文件吗?

发表于 2019-01-29 最后回复 2019-10-14

avilib编解码库解码后的数据是16bit的linear PCM数据吗?

发表于 2019-03-05 最后回复 2019-07-23

c++网络编程的若干个小问题

发表于 2016-12-29 最后回复 2019-01-29

pthread_create()函数创建新线程问题

发表于 2016-12-29 最后回复 2019-01-29

一段有关c++构造函数的程序

发表于 2017-01-06 最后回复 2019-01-29

linux下sqlite3事务使用问题

发表于 2017-05-18 最后回复 2019-01-29

socket编程中套接字缓冲区大小的问题

发表于 2017-06-29 最后回复 2019-01-29

关于其他类型指针转换为FILE*的问题

发表于 2017-07-06 最后回复 2019-01-29

xilinx公司提供的Linux内核源码U盘驱动无法配置成功的问题

发表于 2016-12-26 最后回复 2019-01-29

C++编译的问题

发表于 2016-10-06 最后回复 2017-07-01

学习Linux应用程序都是学习哪些东西?

发表于 2016-09-27 最后回复 2017-07-01

用UE连接虚拟机遇到的问题

发表于 2017-03-01 最后回复 2017-07-01

linux环境socket编程中的inet_addr()和inet_ntoa()函数

发表于 2017-02-27 最后回复 2017-07-01

关于ubuntu下vstftp使用的一点疑问

发表于 2017-01-03 最后回复 2017-03-08

makefile使用的一点问题

发表于 2017-03-03 最后回复 2017-03-08

c++中vector容器使用问题的一点疑问

发表于 2017-01-04 最后回复 2017-01-07

socket网络编程客户端要多次运行才能成功连接服务器端

发表于 2016-10-24 最后回复 2016-12-26

用c++程序写的QT小程序出现了一个奇怪的错误

发表于 2016-09-08 最后回复 2016-12-02

socket编程中的accept()问题

发表于 2016-09-28 最后回复 2016-10-14

大神们都是用什么软件平台写Linux应用程序?

发表于 2016-09-30 最后回复 2016-10-12

socket编程遇到难以理解的问题

发表于 2016-10-07 最后回复 2016-10-12

TCP程序的一点疑惑

发表于 2016-09-28 最后回复 2016-10-06

socket编程遇到一个颇为诡异的问题

发表于 2016-09-29 最后回复 2016-10-03

学习Linux应用程序产生的困惑

发表于 2016-09-17 最后回复 2016-09-27

关于Linux应用程序中信号函数sigpending使用的一点疑惑

发表于 2016-09-13 最后回复 2016-09-14

进程控制中的父进程和子进程关系的问题

发表于 2016-09-03 最后回复 2016-09-04

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