- 博客(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
10830
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
467
原创 基于视频压缩的实时监控系统-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
420
原创 基于视频压缩的实时监控系统-A6:cam.c代码解析
#include struct cam{ };struct cam *cam_sys_init(){ //初始化采集子系统 //将采集子系统的事件加入epoll池 return NULL;}
2017-04-09 16:40:02
800
原创 基于视频压缩的实时监控系统-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
536
原创 基于视频压缩的实时监控系统-A5:net.c代码解析
#include struct tcp_srv{ };struct tcp_srv *net_sys_init(){ //初始化传输子系统 //将传输子系统的事件加入epoll池 return NULL;}
2017-04-09 16:39:14
359
原创 基于视频压缩的实时监控系统-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
479
原创 基于视频压缩的实时监控系统-A1:产品设计与规划
1、产品功能介绍:利用tiny4412 A9开发板搭载摄像头进行视频采集,并通过usbwifi模块将视频上传,在PC端可以进行实时查看视频监控内容。2、产品设计规划:
2017-04-08 16:50:35
513
原创 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
633
原创 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
664
原创 烧写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
5348
转载 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
1823
原创 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
6310
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
8551
原创 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
453
原创 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
1298
原创 TCP 偶尔出现connection refused
每次用第一次打开服务器,再打开客户端惊醒连接,都可以正常连接,如果此时手动断开,再次连接就回家出现这种情况!经过很长时间的查资料、百度,终于知道问题出在哪里了。我的代码中是直接调用close()函数关闭socket的,而问题就出在了这里,在TCP协议中,用close关闭socket是很不“优雅”的,导致了TIME_WAIT,所以会延时关闭socket 再次连接就会出现connectio
2017-02-21 22:20:37
6704
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
12118
原创 指针数组和数组指针
数组指针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
183
转载 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
257
原创 关于指针的指针和二维数组
在《C专家编程》10.3节的小启发里讲的很透彻:(以下这段文字及对比一定要认真分析!)数组和指针参数是如何被编译器修改的?“数组名被改写成一个指针参数”规则并不是递归定义的。数组的数组会被改写成“数组的指针”,而不是“指针的指针”:实参 所匹配的形参数组的数组
2017-01-12 11:02:37
343
原创 linux 驱动没有自动产生设备节点 解决办法
最近在用tq2440做移动物体监控系统,用了zc3xxUSB摄像头,驱动移植成功,插拔USB有打印出来插上USB打印效果:拔下USB打印效果:看似正常,但是ls /dev/ 查看设备驱动节点,发现没有videox。摄像头驱动应该是自动产生设备节点的,无需手动mknod 的,手动产生也是没有用的,试了很多办法,最终终于找到了问题所在在编译内核之前要先编译内
2017-01-09 16:55:58
4459
原创 illegal instruction 解决办法
问题描述: 移植madplay播放器,把所需要的库文件都安装成功之后,运行madplay出现:illegal instruction ,最初以为是所需库文件安装错误,遂重新安装。运行,仍然illegal instruction。 经过百度大神们的博客,最终才解决这个问题。 解决办法: 把/usr/local/arm/arm-none-linux-gn
2016-12-21 12:15:55
10815
原创 如何在linux内核中添加系统调用
以在printk.c中添加一个系统调用函数sys_pk为例1、在printk.c中加入以下代码,printk.c在内核源代码中的位置:kernel\printk.c2、修改calls.S代码(加入的代码一定要放在最后的位置)3、修改unistd.h (加入的代码也一定要放在最后的位置)
2016-12-06 19:52:51
424
原创 linux 内核进程管理子系统
1、linux 进程要素程序是放在磁盘上的一系列代码和数据的可执行映像,是一个静止的实体,执行中的程序叫做进程,是动态的实体。进程四要素:有一段程序供其执行;有进程专用的内核空间堆栈;有task_struct 数据结构,即“进程控制块”;有独立的用户空间;linux进程状态:(1)、TASK_RUNNING :进程正在被CPU执行,或者已经准备就绪
2016-12-05 20:24:36
363
原创 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
326
原创 内核裁剪步骤
1、下载linux内核源文件,官网:www.kernel.org,可以下载新旧不同的版本。2、配置。下载完成,解压缩,开始配置内核:make menuconfig /make config (前者较为简单,可以参考/修改配置好的config文件,内核中配置文件位于:arch/$CPU/configs),配置的结果隐藏保存在内核文件夹里,默认文件名是.config。3、编译内核。首先 ma
2016-12-03 18:13:43
7843
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
5592
1
原创 linux中变量存储位置
Linux应用程序地址布局全局初始化变量:数据段全局未初始化变量:数据段(BSS)全局的、静态的(static)、初始化的变量:数据段全局的、静态的、未初始化变量:数据段全局的常量(const):代码段 局部初始化的变量:栈局部未初始化变量:栈局部的、静态的、初始化变量:数据段局部的、静态的、未初始化变量:数据段局部常量:栈 通过mall
2016-12-01 17:00:42
2377
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人