自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

强威的博客

强威的博客

  • 博客(32)
  • 资源 (3)
  • 收藏
  • 关注

原创 arm开发板运行应用程序出现:-/bin/sh:xxx:not found 解决办法

百度可知是因为缺少动态库,在PC 执行arm-linux-readlf  xxx(应用程序)   打印结果如下:ELF Header:  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00   Class:                             ELF32  Data:                 

2017-04-29 13:25:43 10453 1

原创 基于视频压缩的实时监控系统-A0:目录

视频采集端代码一共分为四个.c文件分别是main.c、net.c、cam.c、cfg.c以下博客分别对这四个.c文件进行解析:1.《基于视频压缩的实时监控系统-A4:main.c代码解析》2.《基于视频压缩的实时监控系统-A5:net.c代码解析》3.《基于视频压缩的实时监控系统-A6:cam.c代码解析》4.《基于视频压缩的实时监控系统-A7:cfg.c代码解析》

2017-04-09 16:56:17 419

原创 基于视频压缩的实时监控系统-A3:Makefile和main.h解析

Makefile:BIN = wcamsrvINC = -Iinclude/SRC = $(wildcard *.c)OBJS = $(patsubst %.c,%.o,$(SRC))CC = arm-linux-gccCFLAGS = $(INC) -g $(BIN):$(OBJS) $(CC) -o $@ $^clean: rm $(OBJS) $(BIN

2017-04-09 16:48:54 374

原创 基于视频压缩的实时监控系统-A7:cfg.c代码解析

struct cfg{ };

2017-04-09 16:40:19 451

原创 基于视频压缩的实时监控系统-A6:cam.c代码解析

#include struct cam{ };struct cam *cam_sys_init(){ //初始化采集子系统 //将采集子系统的事件加入epoll池 return NULL;}

2017-04-09 16:40:02 740

原创 基于视频压缩的实时监控系统-A4:main.c代码解析

#include #include #include #include #include #include #include #include //为epoll_event 结构体附加一个结构体struct event_ext{ int fd; bool epolled; uint32_t events; void (*handler) (int fd,void *a

2017-04-09 16:39:34 471

原创 基于视频压缩的实时监控系统-A5:net.c代码解析

#include struct tcp_srv{ };struct tcp_srv *net_sys_init(){ //初始化传输子系统 //将传输子系统的事件加入epoll池 return NULL;}

2017-04-09 16:39:14 305

原创 基于视频压缩的实时监控系统-A2:linux中最优秀的多路复用机制Epoll

Epoll 支持管道,FIFO,套接字,POSIX消息队列,终端,设备等,但就是不支持普通文件!!1、epoll函数详解:1.1创建监听池:int epoll_creat(int size);int epoll_create1(int flags);创建epoll监听池,第一个函数从2.6.8版本之后不在有入口参数size。入口参数:第二个函数的入口参数是创

2017-04-09 10:12:08 420

原创 基于视频压缩的实时监控系统-A1:产品设计与规划

1、产品功能介绍:利用tiny4412 A9开发板搭载摄像头进行视频采集,并通过usbwifi模块将视频上传,在PC端可以进行实时查看视频监控内容。2、产品设计规划:

2017-04-08 16:50:35 458

原创 tiny4412 nfs(文件系统)挂载

《非文件系统nfs挂载成功》之后,只要稍微修改一下就可以实现nfs文件系统的挂载配置:vim /etc/exports,在最后一行加入:/home/qw/rootfs *(rw,sync,no_root_squash,no_subtree_check)(即将nfs目录改成自己做的文件系统目录)修改uboot:#setenv bootargs noinitrd root=/dev

2017-04-06 23:44:32 584

原创 tiny4412 NFS(非文件系统)的挂载

1、开发板准备:在uboot命令行设置正确的ip地址,确保系统起来之后PC与开发板能够互相ping通。若开发板地址与PC端不在同一个网段,可通过以下方法修改开发板IP地址:vi /etc/eth0-setting将其中的ip地址改成你想要的ip,重启。pc和开发板能ping通2、PC 端准备:安装:sudo apt-get install nfs-kerne

2017-04-06 22:50:56 632

原创 烧写kernel,ramdisk,rootfs 到emmc

由于友善的superboot不开源,不利于我们学习,所以我们手动烧写uboot,kernel,ramdisk,rootfs 到emmcuboot 的烧写步骤请点击《tiny4412通过dnw烧写uboot到emmc》首先应该注意的是,原版的内核配置把CONFIG_ARM_TRUSTZONE打开了,据说这个是与友善的superboot配套使用的,但是uboot不支持TZ模式,所以

2017-04-06 17:54:02 5257

转载 tiny4412 通过dnw烧写uboot到emmc

emmc其实和SD卡类似,都是SD设备,emmc是8-bit模式,SD是4-bit模式。TINY4412是eMMC4.4. 既然sd卡能烧,那么emmc一定可以烧。SD卡烧录,其实通过友善教程,在U-boot源码目录下有sd_fusing.sh,打开看下即可知道烧录原理。这个不讲了,有兴趣的朋友可以看下,很见到。就是把各个bin文件按照指定位置烧到SD卡的系统分区中。那么eMMC如

2017-04-05 23:38:53 1731

原创 64位ubuntu安装32位arm-linux-gcc

1、下载arm-linux-gcc安装包(我下载的是4.5.1版本),自行百度下载,然后解压#tar -jxvf arm-linux-gcc-4.5.1.tar.bz22、在/usr/local下新建arm文件夹,将解压得到的4.5.1文件夹整个拷贝到/usr/local/arm下sudo cp -r ./4.5.1 /usr/local/arm 3、修改环境变量方法一

2017-03-31 16:50:26 6123 1

原创 ubuntu samba 配置成不需要用户密码访问

1、安装samba :一共有两个应用安装samba:sudo apt-get install samba安装smbclient:sudo apt-get install smbclient  2、修改samba 的配置文件打开配置文件:vim /etc/samba/smb.conf[share]comment=samba    ##这个是说明,随意填

2017-03-31 11:59:23 8146

原创 ubuntu 开机自启管理

然后点击startup app 进入,再添加或者删除开机自启动项就OK了

2017-03-31 11:44:58 1281

原创 linux根文件系统制作与挂载

1、创建目录#mkdir rootfs #cd rootfs #mkdir bin dev etc lib proc sbin sys usr mnt tmp var#mkdir usr/bin usr/lib usr/sbin lib/modules 2、创建设备文件进入我们创建好的rootfs文件的/dev目录下,执行以下指令:#mknod -m 666 consol

2017-03-09 22:32:13 393

原创 linux 内核操作GPIO

内核提供了配置和操作GPIO的函数,调用就可以了1、向内核申请GPIO端口(用到那一个端口之前都必须向内核申请,否则无法使用) int gpio_request(unsigned gpio, const char *label)2、配置GPIO输入或输出模式int gpio_direction_input(unsigned g

2017-03-08 13:07:41 1234

原创 TCP 偶尔出现connection refused

每次用第一次打开服务器,再打开客户端惊醒连接,都可以正常连接,如果此时手动断开,再次连接就回家出现这种情况!经过很长时间的查资料、百度,终于知道问题出在哪里了。我的代码中是直接调用close()函数关闭socket的,而问题就出在了这里,在TCP协议中,用close关闭socket是很不“优雅”的,导致了TIME_WAIT,所以会延时关闭socket 再次连接就会出现connectio

2017-02-21 22:20:37 6429 1

原创 TCP socket连接错误: socket operation on non-socket

百度看到有的网友也跟我遇到一样的情况,参考了很多,终于找到解决办法!发现自己的代码中竟然有这么多的低级错误!如下:if(fd = open(filename,O_RDWR|O_CREAT,0777) == -1 )赋值符号“=”的优先级最低,所以在比较之前都要加上括号,如下:if((fd = open(filename,O_RDWR|O_CREAT,0777)) =

2017-02-21 22:07:19 11896

原创 指针数组和数组指针

数组指针int  (*p)[n]:()的优先级最高。从名称和格式可以看出,p是一个指针,并且是指向数组的指针,数组的步长是n,也就是说当执行p+1时,p要跨国n个整型数据的长度。所以也称p为数组的行指针。例:int a[6][4];int (*p)[4];//定义一个指向有四个元素的一维数组的指针p = a; //a 表示二维数组的首地址,a+1 表示第二行,每行中有4个元素

2017-02-21 16:04:17 151

转载 sizeof 和strlen的区别和联系

Sizeof与Strlen的区别与联系(转)1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。 2.sizeof是算符,strlen是函数。 3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。sizeof还可以用函数做参数,比如: short f

2017-02-20 17:22:46 228

原创 VMware 虚拟网卡驱动无法安装

VMware 虚拟网卡驱动无法安装

2017-02-18 12:59:03 25725 5

原创 关于指针的指针和二维数组

在《C专家编程》10.3节的小启发里讲的很透彻:(以下这段文字及对比一定要认真分析!)数组和指针参数是如何被编译器修改的?“数组名被改写成一个指针参数”规则并不是递归定义的。数组的数组会被改写成“数组的指针”,而不是“指针的指针”:实参                                                      所匹配的形参数组的数组 

2017-01-12 11:02:37 310

原创 linux 驱动没有自动产生设备节点 解决办法

最近在用tq2440做移动物体监控系统,用了zc3xxUSB摄像头,驱动移植成功,插拔USB有打印出来插上USB打印效果:拔下USB打印效果:看似正常,但是ls /dev/ 查看设备驱动节点,发现没有videox。摄像头驱动应该是自动产生设备节点的,无需手动mknod 的,手动产生也是没有用的,试了很多办法,最终终于找到了问题所在在编译内核之前要先编译内

2017-01-09 16:55:58 4248

原创 illegal instruction 解决办法

问题描述:    移植madplay播放器,把所需要的库文件都安装成功之后,运行madplay出现:illegal instruction ,最初以为是所需库文件安装错误,遂重新安装。运行,仍然illegal instruction。    经过百度大神们的博客,最终才解决这个问题。    解决办法:    把/usr/local/arm/arm-none-linux-gn

2016-12-21 12:15:55 10602

原创 如何在linux内核中添加系统调用

以在printk.c中添加一个系统调用函数sys_pk为例1、在printk.c中加入以下代码,printk.c在内核源代码中的位置:kernel\printk.c2、修改calls.S代码(加入的代码一定要放在最后的位置)3、修改unistd.h (加入的代码也一定要放在最后的位置)

2016-12-06 19:52:51 384

原创 linux 内核进程管理子系统

1、linux 进程要素程序是放在磁盘上的一系列代码和数据的可执行映像,是一个静止的实体,执行中的程序叫做进程,是动态的实体。进程四要素:有一段程序供其执行;有进程专用的内核空间堆栈;有task_struct 数据结构,即“进程控制块”;有独立的用户空间;linux进程状态:(1)、TASK_RUNNING  :进程正在被CPU执行,或者已经准备就绪

2016-12-05 20:24:36 312

原创 Linux 内核内存管理子系统

1、虚拟地址与物理地址的映射1.1、虚拟地址空间分布          linux 采用虚拟地址管理,如果是32位的CPU,则虚拟地址是为4G的,即2的 32 次方。虚拟地址可以分为用户空间和内核空间,用户空间主要用来存储应用程序,地址0~3G,也就是说每一个应用程序都有0~3G的地址空间可以用。内核空间是3G~4G,又可以分为4个区域,分别是直接映射区(3G~3G+896M)、v

2016-12-05 14:59:45 288

原创 内核裁剪步骤

1、下载linux内核源文件,官网:www.kernel.org,可以下载新旧不同的版本。2、配置。下载完成,解压缩,开始配置内核:make menuconfig  /make config (前者较为简单,可以参考/修改配置好的config文件,内核中配置文件位于:arch/$CPU/configs),配置的结果隐藏保存在内核文件夹里,默认文件名是.config。3、编译内核。首先 ma

2016-12-03 18:13:43 7735 1

原创 ARM开发板ping不通虚拟机中的linux

关闭了windows和linux的防火墙,arm可以ping通windows,windows可以ping通linux。但是arm却ping不通linux。后来发现linux和windows 的ip竟然不在同一个网段,遂查看虚拟机。因为是无线上网,所以最后在设置网络的时候设置的 NAT 方式,最后虽然虚拟机像主机一样可以访问网络,但是跟主机却不在同一网段上,导致了arm开发板无法ping不通li

2016-12-02 16:01:51 5488 3

原创 linux中变量存储位置

Linux应用程序地址布局全局初始化变量:数据段全局未初始化变量:数据段(BSS)全局的、静态的(static)、初始化的变量:数据段全局的、静态的、未初始化变量:数据段全局的常量(const):代码段 局部初始化的变量:栈局部未初始化变量:栈局部的、静态的、初始化变量:数据段局部的、静态的、未初始化变量:数据段局部常量:栈 通过mall

2016-12-01 17:00:42 2204 2

基于STM32的密码锁设计

基于stm32的电子密码锁设计,显示屏用的OLED,SPI通信方式,按键用的是矩阵键盘

2018-05-06

CMI编码译码仿真和源代码

仿真中包括CMI的编码译码电路,主控为51单片机,通过示波器显示波形,源码注释清晰,希望能够帮到大家

2018-05-06

ext4 文件映像制作工具 linux-tools

ext4 文件映像制作工具 linux-tools

2017-04-08

空空如也

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

TA关注的人

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