自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 资源 (3)
  • 收藏
  • 关注

原创 关于Qt几个问题的答案

一、如何emit一个其它类的signal比如要在A类里emit一个B类的signal。好多人写了比较复杂的方法。其实看Qt的帮助文档就知道了。就把A类声明为B类的friend class就行。就可以emit了。多简单。二、在嵌入式linux 里面的Qt要调用系统调用,或者C语言的库,怎么办。就是要C++和C混合编程了。除了声明extern “C” 以

2015-08-24 20:57:00 713

原创 既然没有人来说出真相,那就只有我来了

Qt这货实在不争气,花了我三天的时间,查了无数资料。5.0以上,Qt官方只说strongly recommended,要有opengl。可是实际呢?奶奶个熊,没有opengl根本没法把qtquick编译出来。没有qtquick还有啥意思?Qt也不说清楚。stackoverflow上很多人也尝试了,根本不行。事实就是qtquick 2.0以后的实现调用了opengl的接口。所

2015-08-24 20:40:26 666

原创 linux下C编程free()时出现飘忽诡异的段错误(核心已转储)问题

先说一下问题现场。代码如下 free(volthisframe->Tops); free(volthisframe->Bots); printf("what\n");free(volthisframe->SCTops);free(volthisframe->SCBots);运行时出现段错误,“what”随机出现,也就是说可能是打印前出现段错误,也可能是打印后出现

2015-05-07 16:24:18 4360

原创 git中的孤魂野鬼

在看am335x的uboot的时候发现一个奇怪的东西。就是所谓的template,这实际上是一个tag。可以checkout 这个tag。在某种意义上tag可以充当一个临时branch的作用

2013-10-09 21:44:56 1110

转载 linux 驱动中insmod与mknod各自的作用

今天写了一个linux的驱动,编译成功,用NFS在目录板上运行,insmod后,在/proc/devices里面能看到,用lsmod也能看到那个设备,但在/dev里找不到设备文件。应用测试程序open也出错了。后来在网上查了一些资料,说是需要先mknod才行,于是:mknod /dev/testdrv c 195 0 ,后再insmod,然后运行测试应用程序,OK!  下面是一些mknod的资料

2013-10-05 21:29:16 2943

转载 AM335x中GPMC与FPGA通信

有用的东西不多,只是记个地址哈,GPMC方面21ic上有几个高手,可以去那里看看。GPMC与FPGA通信转载请注明出处:http://blog.csdn.net/qq405180763/article/details/7616941最近这一两个月研究AM3730的GPMC与FPGA的通信,我负责的主要是涉及到GPMC这一块,由于之前就没有Linux基

2013-09-24 16:16:41 6962

转载 基于AM335x的u-bootSPL 的CCS 调试

原文来自德仪中文在线,需要的直接去下原文吧。基于AM335x的U-Boot/SPL 的CCS 调试    在基于Linux的AM335x软件开发流程中,第一步就是U-Boot/SPL(Second Program Loader)的移植。在移植中遇到问题比较常见,而U-Boot/SPL的调试手段比较简陋,不便于迅速找到问题。利用仿真器可以单步调试的特点,就可以迅速定位

2013-09-24 16:14:11 2025

转载 AM3359 中利用GPMC控制器驱动FIFO

大牛的文章,吐血推荐。————————————————————————————————————————————————————————AM3359 中利用GPMC控制器驱动FIFO开发板:英蓓特科技有限公司的Mini8600B处理器:TI公司的AM3359操作系统:Linux3.2.0FIFO芯片:IDT7205L20

2013-09-24 15:59:19 3772

转载 AM3359 GPIO 驱动设计

AM3359 GPIO 驱动设计开发板:英蓓特科技有限公司的Mini8600B处理器:TI 公司的AM3359操作系统:Linux 3.2.0一、GPIO 资源简介AM3359 包含四组GPIO 引脚,GPIO0~GPIO3,每组32 根线,共128 根GPIO 引脚。GPIO0 寄存器基地址:0x44E0_7000GPIO1 寄存器基地址:0x4804_C000G

2013-09-24 15:57:07 2480

转载 AM335x SPL

一、AM335x bootloader :1st stage:RBL (ROM)2st stage:SPL (内部RAM:0x402f0400)3st stage:U-Boot (一般外部DDR)SPL是bootloader的第二部分,由RBL引导运行,主要目的就是引导U-Boot运行。SPL也叫MLO,一般存放在SD或者Nand中。其中,在Nand中要

2013-09-24 12:58:48 2360

转载 Linux下TI omap芯片 MUX 配置分析(以AM335X芯片为例)

http://blog.chinaunix.net/uid-20543672-id-3067021.html在移植内核的时候,通常会遇到引脚复用(MUX)的配置问题。在现在的Linux内核中,对于TI的ARM芯片,早已经有了比较通用的MUX配置框架。这对于许多TI的芯片都是通用的,这次看AM335X的代码顺手写一下分析,以备后用。一、硬件    对于许多TI的芯片来说,

2013-09-24 12:40:07 1483

转载 Linux下的Platform总线驱动

补充:平台数据是定义在BSP里面的上层platform设备的一些配置。主要是因为platform涉及的都是一些总线,总线本身会有一些配置信息。但不是platform_bus_type,这是比上层platform设备还高的级别,一般都是CPU内部总线。而私有数据是对平台数据的进一步指定,总线上的哪个设备。一般,这两个数据实际是同一个结构体类型,只是具体的platform设备会对这个结

2013-09-23 17:36:14 1286

原创 linux下platform设备驱动框架的实现与作用解析

在网上找了好多资料看,包括宋宝华那本书。都是在讲platform的构成,设备驱动的内容什么的。却没有人专门来讲一下platform框架跟一般驱动之间的关系,以及platform到底用来干什么?定义为platform的设备,就是定义了一个虚拟总线。同类设备都可以挂在这个总线上。第一,这样总线与设备之间实际是有一个继承的关系,总线的sysfs结点,设备电源管理等都可以继承过来。第二个是隔离

2013-09-21 11:48:03 1631 1

转载 linux platform设备驱动简介及实例

简介:目的:说白了就是为了将设备与驱动分离,通过platform总线进行连接废话不多说:相关结构介绍:1.platform设备结构体structplatform_device{const char name;/*设备名*/u32 id;/*设备id*/struct device dev;/*设备*/u32 num_

2013-09-20 14:38:03 2477

转载 MACHINE_START分析

MACHINE_START分析在友善mini2440提供的linux2.6.32.2内核中,有如下定义:MACHINE_START(MINI2440, "FriendlyARM Mini2440 development board").phys_io = S3C2410_PA_UART,.io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18

2013-09-18 20:19:17 787

转载 在Eclipse里面如何编译驱动模块

补充的补充:这片文章写的非常详细,还配图,好处是适合新手入门。另外一篇http://blog.csdn.net/gt945/article/details/6835392,就简单得多,其实步骤是完全一样的。我原来是自己写makefile,在命令行编译。能在Eclipse里面直接编译当然方便得多。另外那个ctrl+b实在不要用,除非你的project explorer里面就只有这一个工程

2013-09-17 13:26:07 1585

转载 系统初始化函数集(subsys_initcall)和初始化段应用

前言:前段时间做一个项目需要设计一个动态库,并希望在加载库的同时自动执行一些初始化动作,于是联想到了linux内核众子系统的初始化,于是研究之,并在过这程中发现了初始化段的存在,利用初始化段实现了该功能。工作一年,笔记积累多了,慢慢变得杂乱无章,于是开博,一方面整理笔记,梳理知识,另一方面和大家交流,共同进步。  keyword:subsys_initcall, init, init_

2013-09-17 11:38:18 945

转载 各种initcall的执行先后顺序(module_init、postcore_initcall、arch_initcall、subsys_initcall、 fs_initcall)

现在以module_init为例分析initcall在内核中的调用顺序在头文件init.h中,有如下定义:#define module_init(x)     __initcall(x);很明显,module_init()只是一个面具而已,揭开这个面具,下面藏着的是__initcall()__initcall()又是何方神圣呢?继续揭露真相:#define __initcall

2013-09-17 11:34:08 1137

转载 关于subsys_initcall

在linux内核代码里, 到处充满了subsys_initcall,这个调用是用来干吗的呢?有人回答是系统启动时候用来初始化某些系统的,具体怎么初始化的呢,说起来还是有点复杂。以2.6.21内核作为例子。在linux/init.h里,有这样一段代码:#define pure_initcall(fn)  __define_initcall("0",fn,1)#define c

2013-09-17 11:33:11 914

转载 source insight 技巧集锦

1、背景色选择    要改变背景色Options->preference->windows background->color设置背景色2、解决字符等宽对齐问题。    SIS默认字体是VERDANA,很漂亮。这网页上应该也是用的VERDANA字体。但由于美观的缘故,VERDANA字体是不等宽的。比如下面两行    llllllllll    MMMMMMM

2013-09-09 14:17:04 1895

转载 pthread_join函数及其它线程终止函数

pthread_join使一个线程等待另一个线程结束。代码中如果没有pthread_join主线程会很快结束从而使整个进程结束,从而使创建的线程没有机会开始执行就结束了。加入pthread_join后,主线程会一直等待直到等待的线程结束自己才结束,使创建的线程有机会执行。所有线程都有一个线程号,也就是Thread ID。其类型为pthread_t。通过调用pthread_self(

2013-08-09 17:07:58 960

转载 gcc中-pthread和-lpthread的区别

用gcc编译使用了POSIX thread的程序时通常需要加额外的选项,以便使用thread-safe的库及头文件,一些老的书里说直接增加链接选项 -lpthread 就可以了,像这样:Shell代码  gcc -c x.c  gcc x.o -ox -lpthread   而gcc手册里则指出应该在编译和链接时都增加 -pthread 选项,像这样:

2013-08-09 16:54:21 837

转载 Spin lock 与mutex 的区别

http://blog.csdn.net/kyokowl/article/details/6294341POSIX threads(简称Pthreads)是在多核平台上进行并行编程的一套常用的API。线程同步(Thread Synchronization)是并行编程中非常重要的通讯手段,其中最典型的应用就是用Pthreads提供的锁机制(lock)来对多个线程之间共 享的临

2013-08-09 15:32:05 1566

转载 Linux下面的线程锁,条件变量以及信号量的使用

需要注意的是:"Notice that when pthread_cond_wait returns, we always test the condition again, because spurious wakeups can occur: a wakeup when the desired condition is still not true.".对于这段话的理解明显是错

2013-08-09 15:30:04 748

转载 linux下C语言线程的介绍

原文地址:linux下C语言线程的介绍作者:Ree雪影今天一天小记。。linux下线程的介绍下面是主要的函数介绍:创建线程要实现的函数    int pthread_create(pthread_t *thread,pthread_attr_t *attr,void * (*start_routine)(void *),void *arg);gcc编译多线程程序时,必须

2013-08-07 15:57:27 925

原创 关于嵌入式操作系统几个主流方向的比较

后面应该是同济软件学院院长的一个讲话稿,在不同的地方,不同的时间讲了很多次。在校内对新生培训的时候还加了一些宣传其学院的内容。但仍然不失为了解嵌入式软件开发几个主流路径的好文章。另外这篇文章年纪应该比较大了,能够查到的最早大概在08年。总的看下来,再根据我自己的开发经验,另外有些想法。WINCE在基于PDA或者一些轻量级手持终端的应用上目前是霸主地位(更重量级的终端比如

2013-08-06 16:23:56 2051

原创 linux中C下管理wifi无线连接wpa_supplicant的处理方式

可以见这个讨论,http://bbs.csdn.net/topics/390212247wpa_supplicant本身是有个接口库,就是wpa_ctrl.c,要调用的话必须把这个库包含进来,这个其实比较麻烦。要去找相应版本的源代码还要查看它的接口函数定义之类的。目前这个项目AP其实是固定的,那就直接用shell混合编程处理简单一些。用popen最好,直接捕获输出信息到字符

2013-07-31 11:07:03 4313 3

原创 gdbserver: can't bind address: address already in use

Gdbserver有个已知bug,情况是在单主机上调试并行网络程序。类似我的有线无线网络并行的情况。会出现can't bind address:Address already in use在http://sourceware.org/ml/gdb-patches/2011-03/msg00390.html有说明和补丁,但是我懒得编译,后来想了个办法解决这个事情。 就是出问题了就

2013-07-30 11:34:53 4649

转载 linux c程序中获取shell脚本输出

总的来说,popen是个好方法,这就实现了shell和c的混合编程,异常强大。1. 前言  Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作。比如实现一个ping程序来测试网络的连通性,实现ping函数需要写上200~300行代码,为什么不能直接调用系统的ping命令呢?通常在程序中通

2013-07-26 16:22:22 890

转载 WIFI基本知识整理

WIFI基本知识整理         这里对wifi的802.11协议中比较常见的知识做一个基本的总结和整理,便于后续的学习。因为无线网络中涉及术语很多,并且许多协议都是用英文描述,所以有些地方翻译出来会有歧义,这种情况就直接英文来描述了。 主要内容:一、基本概述二、实践基础三、一些原理四、补充五、其它  一、基本概述==============

2013-07-26 14:38:09 1149

转载 C程序调用shell脚本共有三种方法

C程序调用shell脚本共有三种法子 :system()、popen()、exec系列函数call_exec1.c ,内容为:system() 不用你自己去产生进程,它已经封装了,直接加入自己的命令exec 需要你自己 fork 进程,然后exec 自己的命令popen() 也可以实现执行你的命令,比system 开销小1)system(shell命令或shell脚本路径);

2013-07-26 11:47:37 1055

转载 UNIX IO---再谈文件描述符

在C程序中,文件由文件指针或者文件描述符表示。ISO C的标准I/0库函数(fopen, fclose, fread, fwrite, fscanf, fprintf等)使用文件指针,UNIX的I/O函数(open, close, read, write, ioctl)使用文件描述符。下面重点来说下,文件描述符是如何工作的。 文件描述符相当于一个逻辑句柄,而open,close等函

2013-07-24 11:42:25 601

转载 wpa_supplicant软件架构分析

1. 启动命令wpa supplicant 在启动时,启动命令可以带有很多参数,目前我们的启动命令如下:wpa_supplicant /system/bin/wpa_supplicant -Dwext -ieth0 -c/data/wifi/wpa_supplicant.conf -f/data/wifi/wpa_log.txt wpa_supplicant对于启动命令带的参数,用

2013-07-20 15:41:17 929

转载 wpa_supplicant介绍与使用

1.什么是wpa_spplicantwpa_supplicant本是开源项目源码,被谷歌修改后加入android移动平台,它主要是用来支持WEP,WPA/WPA2和WAPI无线协议和加密认证的,而实际上的工作内容是通过socket(不管是wpa_supplicant与上层还是wpa_supplicant与驱动都采用socket通讯)与驱动交互上报数据给用户,而用户可以通过socket发送命令给

2013-07-20 15:40:24 866

转载 Linux CRDA(Central Regulatory Domain Agent)简介

这是一篇介绍CRDA的原文,来自于http://lwn.net/Articles/271037/,这里简单介绍一下。 通过下面的文章,我们可以获知如下信息: 1、CRDA作用: 消除host driver中的冗余regulatory domain code; 提供更新“regulatory rules”的方法或途径;

2013-07-20 15:31:35 2592

转载 802.11三种帧简介

802.11帧主要有三种类型:数据帧控制帧管理帧        1、数据帧:                  它好比802.11中的驮马,负责在工作站之间数据搬运,可能因为所处的网络环境不同而有所差异。        2、控制帧:                               它为数据帧服务,负责区域的清空、信

2013-07-20 15:30:09 2269

转载 AM335X工控应用网络扩展技术详解-DM9000C

AM335X工控应用网络扩展技术详解-DM9000C注:文章版权属于成都莱得科技有限公司所有,转载请注明出处,保留此行文字。1、工业多以太网网络应用工控板在工业领域应用了10多年,应用领域广,技术成熟。但是局限性也越来越突出。越来越多的设备要求低功耗,无风扇,无散热器,更宽的温度范围,更小的体积。这给处理能力越来越强的ARM处理器在工业领域带来无限应用空间。以太网是

2013-07-08 22:21:29 1620

转载 AM335x uboot spl分析

这文章好像有点意思,等有空的时候看看。AM335x uboot spl分析 芯片到uboot启动流程    ROM → SPL→ uboot.img简介    在335x 中ROM code是第一级的bootlader。mpu上电后将会自动执行这里的代码,完成部分初始化和引导第二级的bootlader,第二级的bootlader引导第

2013-07-08 22:19:46 913

转载 加载模块是提示“insmod: error inserting 'helloworld.ko': -1 Invalid module format”

之前的module一直都是在FPGA上跑的,这几天板子被借走了。就在PC上跑跑代码,结果发现加载module的时候提示错误,后来找到了解决方法,原因是内核选项中设定了模块附带内核版本号信息,这样如果编译模块的内核源码与当前正在运行的内核源码不同的时候,就会出现上面的错误。 在使用命令ismod helloworld.ko 加载编译成功的模块helloworld.ko时出现错误  i

2013-07-01 16:22:16 1363

转载 ioctl的一点使用注意事项

http://blog.chinaunix.net/uid-21501855-id-3297077.html昨天,公司同事进来说以前的linux-2.6.9的驱动被我移植到linux-3.0.4上以后。出现异常现象。具体的驱动是个gpio控制端口驱动,很简单。就是控制几个状态灯的亮灭问题。在老板子环境下没有问题。在新的环境下就出现问题。详细的问题表现如下:当

2013-06-04 16:41:34 966

VMware下扩展Ubuntu根文件大小的方法

说是给Ubuntu用,其实所有linux都一样。都这么用

2013-06-13

Linux设备驱动开发详解_宋宝华_第一版

第一版的文字版,跟第二版比,主要是把第12章的5个字符设备驱动实例删掉了,其实挺可惜的。初学的话这几个实例可以解决很多问题。放出来方便大家参考

2013-05-02

linux设备驱动开发详解(官方微博文字版)

非扫描版,宋宝华官方微博发布的文字版本!我给合成了一个文件,并且缩小体积。方便大家查找,强烈推荐。

2013-04-28

空空如也

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

TA关注的人

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