
linux
文章平均质量分 89
天才2012
天生我‘才’必有用
展开
-
linux驱动开发经验逐步积累2
注:笔记多少会有问题,多多包涵。只是作为一个记录而已1. cdev_add的核心思想cdev_add允许添加一个字符设备到内核,其核心是kobj_map,也可以添加一个字符设备集合,他可以包含count个连续的子设备号,此时dev_t dev为该字符设备集的base设备号,如cdev_add(cdev, 81, 256)。int cdev_add(struct cdev *p, dev_t dev原创 2016-08-31 21:42:17 · 3097 阅读 · 0 评论 -
linux启动bootargs参数分析,如何加载解析到参数表
这几天刚好在看linux c语言启动,现在就顺便把内核在启动时解析bootargs这一块单独拎出来讲解下,内核对于bootargs的解析分为几块:1. setup_arch(&command_line);综述:在这个函数中,系统会获得bootargs参数,并对其做简单的初步分析。并将bootargs的参数保存在command_line这个地址中。详解:A. 先获得bo转载 2013-11-15 01:25:48 · 6553 阅读 · 0 评论 -
由驱动板级初始化发生的联想:内核解压,机器码匹配,uboot之bootm解析
#ifndef _LINUX_INIT_H#define _LINUX_INIT_H#include 。。。。。/* These are for everybody (although not all archs will actually discard it in modules) */#define __init __section(.init.text)原创 2013-03-04 15:55:50 · 3306 阅读 · 0 评论 -
TI的DM3730之dvsdk中uboot时钟配置初始化深入解析
本文均属自己阅读源码的点滴总结,转账请注明出处谢谢。欢迎和大家交流。qq:1037701636 email:200803090209@zjut.com,gzzaigcn2012@gmail.com 过去的一周,一直处在纠结的时刻中,一周过去了,基本问题和疑惑也在渐渐的解决中,回过头去想想,原来问题的出现,只是一个小小的地方就可以解决。也觉得出现问题定位不到问题的所在也是只身能原创 2013-03-10 20:44:46 · 4891 阅读 · 0 评论 -
记第一次代码评审后感
今天第一次体验代码评审,被评审代码DSP人工视觉系统v1.0。初感如下: 开门稿:总体介绍本套软件的软件背景、软件功能、软件架构、软件模块。给别人一个直观的体验。 总结如下:1.良好的编码习惯是优秀工程师所必备的素质。建议编码规范参考:《华为C编程规范和范例》。 2.自己的代码在别人的眼中可能漏洞Bug百出。 3.评审别人的代码也是对自己的一种提高。原创 2013-08-15 19:29:51 · 2136 阅读 · 0 评论 -
DM6446的视频前端VPFE驱动之ioctl控制(视频缓存区,CCDC,decoder)解析之一
本文均属自己阅读源码的点滴总结,转账请注明出处谢谢。欢迎和大家交流。qq:1037701636 email:200803090209@zjut.com,gzzaigcn2012@gmail.com 在这里分析驱动的ioctl的内容时,需要结合相关的应用层的操作,之前我已经说过,这块V4L2的控制都是Ioclt实现的,在完成前期的驱动后,后续的系统调用都由他来完成,主要通过应用层发送一定的原创 2012-07-16 11:08:12 · 5484 阅读 · 0 评论 -
RISC和CISC的关系
CISC指令的特点是指令数量多,功能丰富,但造成的结果就是指令长度不同,执行指令需要的时间也就不同,比如在8086指令中的MOV指令,当操作数不同时,指令长度不同,执行的时间也不同,比如MOV AX,BX需要的时间为2个周期;而MOV BX,12H需要4个周期;MOV [2000H],AX需要10个周期……这样的结果就是只有当前的指令执行之后才能执行下一条指令,执行一段程序需要的时间就很长了。转载 2013-05-23 22:55:46 · 4689 阅读 · 0 评论 -
linux下设备device_register和驱动driver_register先后注册的影响和关系
本文均属自己阅读源码的点滴总结,转账请注明出处谢谢。欢迎和大家交流。qq:1037701636 email:200803090209@zjut.com,gzzaigcn2012@gmail.com 开始我的博文之前,最近一天来的感受,我只想说一下,Linux的世界,玩在表面是轻松的,但是玩在内部那就是找死。佩服那些写源码的人。真的佩服。 这段世界大概半个月了,开始linu原创 2012-07-08 22:40:53 · 8773 阅读 · 6 评论 -
Starting Kernel...后没有信息显示的部分可能原因(专属TI处理器)
http://processors.wiki.ti.com/index.php/Kernel_-_Common_Problems_Booting_LinuxProblem #1 - No more output is seen on the console after "Starting Kernel..."The first problem a user may encounter原创 2013-03-26 20:56:49 · 5291 阅读 · 2 评论 -
基于beagleboard-xm的触摸屏移植和Qt4.6.2移植
本文均属自己阅读源码的点滴总结,转账请注明出处谢谢。欢迎和大家交流。qq:1037701636 email: gzzaigcn2009@163.com,gzzaigcn2012@gmail.com 过去的一周,大概不到5天由于项目的部分需求暂时需要使用到触摸屏,所以暂时停下来做了一下bb-xm的触摸屏移植和Qt的支持。学是必须的,写代码是必须的,看代码是必须的,整理文档也是必原创 2013-03-02 20:05:33 · 5586 阅读 · 7 评论 -
构建TI新一代高性能SOC的最小系统(DM816x)
【前言】DM816x,C6A816x,AM389x是TI新一代高性能SOC,系统集成度高,系统控制模块化,架构与以往TI SOC平台有所不同,本文针对最小系统的时钟配置,电源管理,内存映射,内存配置的区别做深入解释。DM816x,C6A816x,AM389x引脚兼容(为方便讨论,下面统称DM816x),资源配置主要区别如下表所示,这种兼容系列产品便于用户基于同一平台,根据不同的产品需求选择合适转载 2013-03-09 15:46:37 · 4333 阅读 · 0 评论 -
多寄存器寻址指令ldmia/ldmib和ARM存储器访问指令——多寄存器存取
多寄存器和堆栈寻址的用法:多寄存器寻址:LDMIA,LDMIB,STMIA,STMIB,LDMDA,LDMDB,STMDA,STMDB;堆栈寻址:LDMFA,LDMFD,STMFA,STMFD,LDMEA,LDMED,STMEA,STMED;弄清堆栈寻址的SP的变化:LDMFA,LDMFD,STMFA,STMFD,LDMEA,LDMED,STMEA,STMED;IA: 每次转载 2013-03-08 21:33:04 · 16483 阅读 · 2 评论 -
Linux -soname深入理解
-Wl 表示后面的参数也就是-soname,libhello.so.1直接传给连接器ld进行处理。实际上,每一个库都有一个soname,当连接器发现它正 在查找的程序库中有这样一个名称,连接器便会将soname嵌入连结中的二进制文件内,而不是它正在运行的实际文件名,在程序执行期间,程序会查找实际名字为 soname名字的文件。这样做的目的主要是允许系统中多个版本的库文件共存,习惯上在命名库文件原创 2012-12-15 23:37:05 · 2652 阅读 · 0 评论 -
Ubuntu发布移动版操作系统
系统分为两个版本,采用全手势操作,支持HTML5程序 新浪手机讯 1月3日凌晨消息,Ubuntu刚刚在其官方主页发布了移动版操作系统。 Ubuntu是一个以桌面应用为主的Linux操作系统。与Windows和Mac OS相比,Ubuntu尽管普及程度远不及前者,但得益于开源、免费等特性,在世界各地仍然拥有大量拥趸。 移动版Ubuntu完全开源免费,并且分为“普通版”和原创 2013-01-03 20:32:55 · 1915 阅读 · 0 评论 -
linux的open,write源码何在?
linux下面的open和write源码在哪来,当然这个源码就是glibc,glibc在编译器中直接以库形式面向用户。那简单的open其实也会有一个执行过程,在glibc里面有他的源码,最终是做一个SWI软中断的汇编执行过程,调用寄存器。这个过程执行完后,就触发了内核进行系统调用sys_xxx的执行。故glibc里面为系统调用创建条件,一个SWI触发系统调用。原创 2013-12-29 22:45:24 · 3460 阅读 · 0 评论 -
Ubuntu12.04LST 上搭建 TELNET服务 SSH服务 TFTP服务,NFS服务等基本命令,防火墙
TELNET服务1.安装1sudo apt-get install xinetd telnetd2.在/etc/inetd.conf中加入以下一行1telnet2 stream tcp nowait telnetd /usr/sbin/tcpd /usr/sb转载 2013-12-17 22:00:21 · 1671 阅读 · 0 评论 -
多级别shell中的pwd获取当前目录的区别
假设有目录a和b,b在a目录下。a下一个test.shb下一个test.sh。a中的.sh会调用b中的.sh。b中主要是一句CUR_DIR = 'pwd'获取目录a中执行CUR_DIR输出为/a.b中执行CUR_DIR输出为/a/b原因在于当前a目录执行的test.sh,pwd就只记录当前目录。不是下多级脚本所在的目录原创 2013-12-19 16:38:21 · 5649 阅读 · 0 评论 -
绝命中的一助linux程序加载器ld-linux.so中的LD_PRELOAD预加载库
偶然错误的将linux系统中的libc.so.6链接删除,导致busybox所有cmd命令失效,报load library error.最终的解决方法是采用预加载库的方式来解决这个问题:LD_PRELOAD=/lib/libc-2.6.1.so ln -s /lib/libc-2.6.1.so libc.so.6根据shell/exec加载elf程序的原理,是先解析ELF,定位并加载ld-li原创 2016-06-01 14:42:52 · 5638 阅读 · 0 评论 -
论dts中的of_platform_populate如何选择性加载device node为platform device
1. 在比较新的linux内核中,设备树dts已经取代了传统的machine board device description,dts在内核中以各种device node的形式存在,而这些device node对于大部分的内核驱动模块platform_driver来说,最终需要有对应的platform device来与他匹配才可以完成一次device和driver的probe过程。所有有必要将d原创 2016-01-21 14:26:13 · 10064 阅读 · 0 评论 -
linux下特定处理器的设备物理地址和虚拟物理地址的静态映射的实现
处理器:全志A31; Linux内核3.3A31 定义的machine信息在mach-sun6i/core.c下面:MACHINE_START(SUN6I, "sun6i") .atag_offset = 0x100, .reserve = sun6i_reserve, .fixup = sun6i_fixup, .map_io = sun6i_map_io, .init_e原创 2014-01-09 23:14:51 · 3299 阅读 · 0 评论 -
Android Camera HAL3中预览preview模式下的控制流
Android Camera HAL3中预览preview模式下的控制流原创 2015-10-10 16:07:39 · 16239 阅读 · 4 评论 -
记linux内核处理bootargs到内核并加载模块时传入参数(module_param_named()等)
昨晚,一网友问我如何把LCD反转一下输出,顿时不会,只会去看之前的dm3730的linux2.6.32的内核。偶然发现直接设置bootargs的参数到内核也许就可以啦。Linux以内核模块为核心,自动编译如系统后,所以的类似init_call等都会存放在Init的section中。类似的,一个模块中经过module_param()和module_param_named()设置的参数。原创 2013-11-15 14:16:45 · 10906 阅读 · 0 评论 -
gcc新版本引起的编译错误(命令执行时的外部库输入位置)
昨天,遇到一个比较bug的错误,用gcc来编译几个简单的文件出错,编译环境为x86_64的Ubuntu12.04,gcc版本号如下:gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3编译如下命令,主要是需要添加一个常用数学库libm.so。编译的语法如下出现了如下的错误:gcc -lm main.c bp_alg_api.c -o test还是会出现没有链接时指定的库原创 2014-06-05 11:53:22 · 2695 阅读 · 0 评论 -
我所看到的视频采集前端vfe和camera,decode等交互的驱动架构
到目前为止接触的处理器也多了,比较深入的驱动主要是视频采集前端,包括TI的DM64xx,DM3730,全志的A31等。发现所其所采用的框架基本不一样。当然典型的camera如ov系列,decode如tvp系列等都是作为一个i2c_client存在的,这个驱动的架构大致都类似。在这里姑且将采集前端称为vpfe:1.如dm3730的内核2.6.32版本中,其采用master和slave的驱动架构,来进原创 2014-05-08 15:13:33 · 3677 阅读 · 4 评论 -
Android手动init.rc脚本加载驱动模块出现Unknown symbol的原因
主要原因在于内核驱动模块参数进行EXPORT_SYMBOL_GPL()s原创 2014-05-06 16:44:46 · 2522 阅读 · 0 评论 -
android4.2.2设置选项中的关于设备或者关于平板电脑的字段内容由来之/proc/version
今天很好奇下面这张图片显示的字段内容从何而来,这些也常常作为Android手机或者平板中的设置项中”关于平板电脑“或者“关于设备”等信息相关。 调研学习确认后,初步定为到是通过如下文件来获取的。1./proc/version/的内容如下Linux version 3.3.0 (liuyongming@wits) (gcc version 4.6.3 20120201 (prerelease) (c原创 2014-04-17 16:25:32 · 4091 阅读 · 0 评论 -
TI的处理器相关嵌入式平台
TIchinese(78689630) 15:23:14[教程] DM3730 C64X+在CCS5的调试http://www.61icbbs.com/forum.php?mod=viewthread&tid=3295&extra=page%3D1[分享] DM365的相关项目开发一些开发设计资料http://www.61icbbs.com/forum.php?mod=vie原创 2014-01-18 15:28:28 · 2079 阅读 · 0 评论 -
高版本linux3.3内核中没用i2c_attach_client
现在的看的linux3.3内核i2c 的总线驱动中i2c_adapter结构为:struct i2c_adapter { struct module *owner; unsigned int class; /* classes to allow probing for */ const struct i2c_algorithm *algo; /* the algorithm to原创 2014-01-11 18:20:21 · 2421 阅读 · 3 评论 -
Linux内核访问外设I/O资源的方式(设备物理地址和设备虚拟地址),静态映射和动态映射
我们知道默认外设I/O资源是不在Linux内核空间中的(如sram或硬件接口寄存器等),若需要访问该外设I/O资源,必须先将其地址映射到内核空间中来,然后才能在内核空间中访问它。 Linux内核访问外设I/O内存资源的方式有两种:动态映射(ioremap)和静态映射(map_desc)。 一、动态映射(ioremap)方式 动态映射方式是大家使用了比较多的,也比较简单。即直接通过转载 2014-01-09 22:21:29 · 3887 阅读 · 0 评论 -
linux shell中函数在terminal中source 脚本后,修改脚本需再次source才可
linux shell中函数在terminal中source作用,与直接执行的区别在于,是本shell读取脚本文件的内容并在当前文件进行执行。比如test.sh里面有函数A,当然A可以在test.sh里面直接调用,另外这个函数如果进行source后,当前terminal就具备了该函数的使用,通过declare -f A就可以查看A函数的执行过程。到此直接输入A,test.sh就在终端进行了原创 2013-12-24 23:30:29 · 2609 阅读 · 0 评论 -
Linux下面系统开发Makefile须知(动态链接库的深入理解)
linux下面共享库默认路径是/usr/lib. /usr/local/lib. /lib一般的ELF格式的可执行文件可以通过readelf --d xxx。来获得共享库和程序运行时的库的路径和信息1、把我写好的动态库放到系统目录里。缺点:1a、系统目录被搞的很混乱。1b、在别人电脑上部署会很麻烦。2、指定LD_LIBRARY_PATH环境变量。缺点:不能直接启动应用程序而原创 2012-12-14 10:52:13 · 2566 阅读 · 0 评论 -
看看一位清华计算机专业的学生怎么看LINUX与WINDOWS的!
本文是一位清华退学学生所写!他的名字叫王垠,人很出名,不信GOOGLE一下就知道!我已经半年没有使用 Windows 的方式工作了。Linux 高效的完成了我所有的工作。GNU/Linux 不是每个人都想用的。如果你只需要处理一般的事务,打游戏,那么你不需要了解下面这些了。我不是一个狂热的自由软件份子,虽然我很喜欢自由软件。这篇文章也不是用来推行自由软件运动的,转载 2012-11-20 12:17:22 · 2350 阅读 · 0 评论 -
omap3530 dvsdk (DevKit8000) 使用记录笔记 ------文件格式记录
类型名称描述获取满足要求*.a64P算法库文件CCS开发自己的音视频编解码算法,编译生成一个编解码算法的库文件*.lib(等同于Linux环境下的*.a64P,直接在Linux环境下修改文件后缀名即可)直接在Linux环境下修改*.lib文件后缀名即可库文件中的算法函数的实现要符合x转载 2012-04-22 15:41:59 · 2560 阅读 · 0 评论 -
关于ubuntu11.04java 版本切换
我到ubuntu是11.04,装的时候是下载来jdk1.7吧,然后设完路径后。现在编译android需要java1.6.用网上到方法死活下载不了sun-java6-jdk,只好手动下载,恩下载完毕以为只需要设置环境变量就好,谁知道死活默认是1.7的版本,发现这个问题,后找到下面到的说明进行版本切换设置。成功了?? 我的Ubuntu版本是10。??? 首先需要去S转载 2012-02-19 23:11:06 · 1753 阅读 · 0 评论 -
android 系统 makefile文件(Android.mk)组织结构
下面是main.mk文件包含关系,本文档主要说明的就是这些文件里到底做了什么。(这个文件被根目录下的makefile文件包含) 一. main.mk 1.检查版本号,设置环境变量(BUILD_SYSTEM)和缺省的目标。$(MAKE_VERSION) >= 3.81,BUILD_SYSTEM= build/core 2.包含文转载 2012-05-06 16:15:46 · 1939 阅读 · 0 评论 -
ubifs文件系统简介
在linux-2.6.27以前,谈到Flash文件系统,大家很多时候多会想到cramfs、jffs2、yaffs2等文件系统。它们也都是基于文件系统+mtd+flash设备的架构。linux-2.6.27后,内核加入了一种新型的flash文件系统UBI(Unsorted BlockImages)。这里简单介绍下UBI文件系统加入的原因,及使用方法。我也是刚接触到这个文件系统,可能有理解转载 2012-04-19 18:03:12 · 4070 阅读 · 0 评论 -
android 下之hello world c 手动编译
android c 编译使用m,mm,mmm先source /build/envsetup.sh然后是export TARGET_PRODUCT=omap3evmmm.在当前目录下面,需要有Android.mkmmm dir :需要在dir目录下面有Android.mk目录make modules:cd /home/rowboat/rowboat_android1/&& mak转载 2012-04-18 01:53:55 · 3239 阅读 · 0 评论 -
makefile 之伪目标解析
所谓伪目标就是这样一个目标,它不代表一个真正的文件名,在执行make时可以指定这个目标来执行其所在规则定义的命令,有时我们将一个伪目标成为标签。那么到底什么是伪目标呢?可能作为初学者还不会在乎这个问题,下面我们来看下我们将在什么时候需要它。首先来看下面一个例子:当前目录下只有一个myls1.c,于是为了让程序让makefile来管理,写了一个如下的简单的makefile。执行:转载 2012-04-26 19:14:20 · 1330 阅读 · 0 评论 -
wget 命令用法详解
wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上。它有以下功能和特点:(1)支持断点下传功能;这一点,也是网络蚂蚁和FlashGet当年最大的卖点,现在,Wget也可以使用此功能,那些网络不是太好的用户可以放心了;(2)同时支持FTP和HTTP下载方式;尽管现在大部分软件可以使用HTTP方式下载,但是,有些时候转载 2012-04-11 20:31:17 · 1718 阅读 · 0 评论 -
DM3730调试心得,与问题
开发环境ubuntu11.04 1.usb 转串口:minicom 配置。lsusb看是否有对应到usb口,无到话要安装驱动(一般可以看到厂家提供到驱动和相对应到该设备名字);有到话看ls /dev/ttyUSB0是否存在然后是简单到陪在minicom -s+----------------------------------------------------------原创 2012-02-28 11:04:00 · 6017 阅读 · 7 评论