- 博客(60)
- 资源 (19)
- 收藏
- 关注
原创 2012总结
2012年这个传说中的世界末日终于过去了。这一年经历了很多,也学到了很多。这一年是收获的一年,也是感慨颇多的一年。这一年经历了找工作的种种,这一年自己的缺点也暴露无疑!这一年是一个新的开始。2012年刚开始,我就开始为找工作做准备了。既然找工作锁定了嵌入式底层开发这个领域,准备也就是复习一些嵌入式的基本知识。另外对计算机相关课程进行了复习。主要进行了如下的学习: (1)UNIX高级环境编
2012-12-29 14:59:54 2605 3
原创 Linux启动流程简介
一. 内核镜像Izmage被bootloader装载到内存中。zImage的入口代码是自引导程序。包含一些初始化代码。第一条指令在head.S文件中。解压内核,然后调用call_kernel启动vmlinux(解压后在正确位置上的内核)二. vmlinux开始部分的代码对应的文件也叫head.S.这个是体系结构相关的代码,进行页表的初级初始化后打开MMU,跳转到start_kernel函数中去
2012-09-13 17:01:49 2128
原创 解读PTR_ERR,ERR_PTR,IS_ERR
最近要找工作了,就把内核以及驱动的知识复习了一下。看到了几个宏PTR_ERR,ERR_PTR,IS_ERR(其实是内联函数).还是不太明白,然后就google搜索了一下,搜出来的结果真是不让人满意,看完一些解释我更迷糊了。看来还得依靠内核源码,依靠对内核的理解自己弄明白了。大致看了一下这几个宏的定义还有在内核的用法,恍然大悟。原来这几个宏这么简单,原理也这么简单。下面就说一下这几个宏的由来与用处。
2012-09-11 15:53:21 14900 4
转载 心理学分析,如何找回自信
(1) 改变委曲求全的思维方式 在你身上也许发生过这样一些事情:正在忙于自己的事情,朋友找上门来邀请你参加舞会,碍于面子答应了,可是玩得一点也不开心;很晚了邻居说搓麻将三缺一,力请加盟,明知要熬通宵,还是在麻将桌前坐下,怕把邻里关系搞僵;借了钱给别人却总不好意思开口讨还,担心人家说自己小气. 遇到这些事情不可否认的确很让人为难,但仔细推敲就可以发现这里面存在这样一种思维方
2012-08-22 18:27:38 4342 1
原创 Linux USB Gadget--设备枚举
前面介绍了Linux USB Gadget的软件结构与各软件层的整合过程。经过各种注册函数,Gadget功能驱动层,USB设备层与UDC底层结合在了一起形成了一个完整的USB设备。而这个设备已经准备好了接受主机的枚举。在介绍USB设备枚举之前。先熟悉一下各层通信所用的数据结构,在USB主机端编写USB设备驱动程序,最重要的结构就是URB了,我们只需要将各种URB提交给USB核心,核心就会自动给我们
2012-07-15 16:40:07 17056 3
原创 Linux USB Gadget--各环节的整合
Linux USB Gadget软件结构一文中分析Linux USB Gadget软件分为三层。这三层其中两层是与硬件无关的,分别是Gadget功能驱动层,USB设备层。一层是与硬件相关的是UDC层。每一层都提供一种关键的数据结构与函数与其他层交互。 Gadget功能驱动层: 最主要的结构是struct usb_composite_driver,这个结构在这层定义,并且实现结构
2012-06-27 16:55:31 24243 3
原创 Linux USB Gadget--软件结构
USB Gadget是分层的软件结构,本文分析的是2.6.32.2版本的Gadget软件结构,这个软件结构与以前版本的变化很大。USB Gadget软件结构总共分为三层:一. UDC层 这一层是与硬件相关层。相关文件s3c2410_udc.c s3c2410_udc.h。s3c2410设备控制器作为一个linux设备在这一层是作为platform设备而注册到linux设备模型
2012-06-25 18:34:41 11659 1
原创 Unix从兴盛到衰落鲜为人知的故事
UNIX作为最优秀的操作系统之一经历了四十多年的风风雨雨依然屹立不到,现在仍然闪光,照耀着全世界的程序员们,现在许多最杰出,最优秀的软件人员仍然是他的忠实用户。UNIX系统对计算机行业的影响之深,是任意一种操作系统都不能比拟的。UNIX从诞生,兴盛到衰落有很多鲜为人知的故事,这些故事的结果,或推动了计算机软件的发展,或阻碍了软件的发展。无论怎样他们都是历史的一部分,使人思考,给人启示。下面我们就来
2012-06-19 20:51:39 7573
原创 Linux下USB小工具usbmanager 1.0测试版发布
最近因为需要调试一些USB设备驱动,需要频繁的在Linux下查看USB设备信息,发现Linux下USB设备管理起来非常不方便。lsusb 显示连接在系统上的USB设备信息,显示的信息比较乱,查看起来不是太方便。usbview(http://www.kroah.com/linux-usb/),需要挂载usbfs虚拟文件系统,这点有点不方便。并且软件接口都很老了,也没有更新,估计作者很忙吧。所以,有了
2012-06-13 20:08:28 5796 6
原创 Linux双向循环链表的实现
链表是一种重要的数据结构,应用的非常广泛。链表分为单向链表与双向链表,一般的实现就是在结构体中内嵌指向下一个元素的指针。例如:struct name { int num; ...; struct name *next; struct name *prev;} 但是linux内核中的实现确有点特殊他是通过独立定义一个链表结构,通过结构体中内嵌这个结构来完成的,这样就实现了链
2012-05-31 22:06:04 19090 9
原创 C语言中字符串函数后隐藏的危险陷阱
C语言最强大的功能就是它的指针。有一句话说的很好:如果你爱编程,那么就会爱C语言,如果你爱C语言,你一定会爱指针。C语言的指针确实强大,随心所欲的修改内存给程序员提供了自由的发挥空间。但是C语言对缓冲区溢出不做检查,使得这种随心所欲的指针操作变得极度危险。内存泄漏,缓冲区溢出等问题往往是程序员们焦头烂额,深受其害。因为这些问题时隐时现,出现问题的地方也许跟问题一点关系都没有,非常难以调试。有时身经
2012-05-23 15:11:55 5767
原创 USB协议简述
USB这个传说中USA的弟弟,引领了计算机接口的潮流。2008年推出的USB3.0协议更是将他的速度提高到了一个新的档次4.8GB/S,再加上USB OTG协议更是使他如虎天翼。USB接口虽然简单,但是他的协议很复杂。但是再复杂的东西也是遵循一定规律的。USB系统分为USB主机和USB设备,USB所有的协议都是为了主机和设备高效地进行数据交换。为了达到这个目的,USB协议的制定者煞费苦心,定义了各
2012-05-22 15:41:42 2019 1
原创 基于mini2440的Linux内存布局分析
基于mini2440的Linux内存布局分析 在学习linux内存寻址的过程中,注意到在x86架构上,分段与分页机制共存。而在RSIC体系结构下一般只支持分页。《深入理解linux内核》是在x86架构上介绍的linux物理内存布局。在x86架构上,linux被安装在ram从物理地址的0x00100000也就是第二个1M的地方。内核态的线性地址:0xc0000000~0xfffff
2012-05-06 22:41:29 4172 1
原创 Linux USB Gadget --mini2440使用与测试
USB Gadget驱动又称USB器件驱动。主要用于运行linux的嵌入式系统中,使得系统拥有普通USB设备的功能。mini2440具有USB1.1设备控制器,所以可以使用USB Gadget功能。但是linux2.6.32.2内核对于mini2440的支持不是很完全。开启USB Gadget功能之后,不能使得主机发现USB硬件。这个问题主要是USB接口的上拉电阻的问题,mini2440使用GPC
2012-04-15 20:12:34 5618 2
转载 论文参考文献格式
一、参考文献是对期刊论文引文进行统计和分析的重要信息源之一 ,在本规范中采用 GB 7714推荐的顺序编码制编排。二、参考文献著录项目 a. 主要责任者 (专著作者、论文集主编、学位申报人、专利申请人、报告撰写人、期刊文 章作者、析出文章作者)。多个责任者之间以“,”分隔,注意在本项数据中不得出现缩写点“.”。主要责任者只列姓名,其后不加“著”、“编”、“主编”、“合编”等责任说明。
2012-04-05 22:41:53 2603
原创 S3C2440 USB 设备控制器
S3C2440 USB 设备控制器 s3c2440 soc集成了一个usb1.1设备控制器,可以进行全速/低速的控制,中断与批量传输。除了端点0,具有四个端点,每个端点都可以作为中断与批量的端点,每个端点具有128 byte的FIFO,所以端点最大packet可以设置成128byte。并且支持DMA传输。任何一种设备控制器对于软件来说都是一组寄存器:数据,状态,控制。usb
2012-03-29 10:04:12 7992 1
原创 linux内核学习笔记:中断的下半部分
linux内核学习笔记:中断的下半部分 因为中断的处理过程中,同种类型的中断是被禁止的。并且中断处理应该越短越好,这样才能减少丢失的中断。所以linux将中断处理分为两部分。关键紧急的事情在中断上下文处理,不紧急或者花费时间较多的事情在所谓的下半部分中执行。中断的下半部分是一种内核机制,它运行的时候允许中断的产生,可以分为软中断与工作队列。软中断又包含:tasklet 与内核定时
2012-03-26 10:38:08 2405
原创 linux内核学习笔记:中断与异常
linux内核学习笔记:中断与异常 中断分为同步中断与异步中断。同步中断也叫异常是CPU执行特定的指令产生的事件,他打断CPU正常执行的指令而执行设定好的指令。异步中断也叫中断是由CPU外部中断信号产生的,每个CPU都有一个或多个中断引脚,当引脚上出现中断中断信号的时候,CPU就会停止执行当前的指令而去执行特定的代码。在linux中,中断处理至关重要,它影响着整个系统的性能。中断
2012-03-02 22:50:43 2476
原创 先知者钝,后知者明
人生在世,乐观豁达者智,心平气和者明 ,善始善终者达。吾虽生之驽钝,但后学得之,感恩天宇,心静如水。虚心求学,但与天地同在,与万物谐然,孜孜不倦。下以明志,聊以释怀。1、遇到不想回答的问题,直视对方的眼睛,微笑、沉默。2、走路抬起头挺直腰,心情不好时,不想跟人招呼,点头微笑,径直走过。3、请记得,好朋友的定义是:你混的好,他打心眼里为你开心;你混的不好,他由衷的为你着急。 4、做自
2012-02-24 11:45:30 2230
原创 linux内核学习笔记:进程
linux内核学习笔记:进程 进程是多道程序设计的操作系统的基本概念。进程是程序运行的实体。他是描述程序已经执行到了何种程度的数据结构的汇集,也是操作系统分配系统资源(cpu时间,内存,磁盘)的实例。一. 进程描述符 进程是比较抽象的概念,linux下描述进程的数据结构为进程描述符。进程描述符代表了一个进程所有的数据结构,文件,以及运行上下文。进程描述符是
2012-02-23 15:14:13 1610
原创 linux内核学习笔记:内存寻址
linux内核学习笔记:内存寻址 内存地址分为三种:逻辑地址,线性地址,物理地址。在分段的CPU结构中,程序中引用的地址都是逻辑地址,逻辑地址经过分段单元成为线性地址。然后经过分页单元成为物理地址,物理地址就是硬件电路寻址的实际地址。如果CPU体系结构不支持分段,那么逻辑地址等于物理地址。一般RSIC指令的CPU都不支持分段,如arm。复杂指令的CPU支持分段,如x86。
2012-02-20 16:41:13 3081
原创 基于mini2440的ov9650摄像头裸机测试
mini2440提供了一个摄像头接口,可以输出RGB24,RGB16的原始图像还可以输出编码的如YUV格式的图像,并提供了偏移翻转,放大缩小的功能。与开发板配套的摄像头模块为CAM130,采用ov9650的芯片。操作摄像头接口实现视频的采集与显示,主要配置两个部分的寄存器:ov9650的寄存器,摄像头接口寄存器。 ov9650寄存器在模块的内部,s3c2440是以sccb总线来与
2012-01-05 20:18:18 7650 5
原创 Linux内核学习笔记:内核同步
linux内核中运行的程序,时刻都要防止并发引起的竞态。这将会导致数据结构被破话,严重的时候会引起内核崩溃。所以内核同步技术对内核开发的驱动程序来说非常重要。不懂内核同步技术的人,是写不出安全健壮的内核驱动程序来的。在学习内核同步技术之前需要掌握一下几个概念。 1 并行,并发与竞态:在SMP运行的linux内核是真正的并行运行程序,多个CPU可以同时访问同一数据结构,而在单处理器
2011-12-31 11:42:04 2101
原创 Linux内核学习笔记:前言
Linux内核学习笔记:前言 虽然学了很多驱动方面的知识,也看过了《linux内核设计与实现》,对linux内核有了一个大体的了解。但总觉得有些概念还是很模糊,比如内存管理中的地址空间问题,还有自旋锁的问题。我想毕竟《linux内核设计与实现》只是对linux内核做了一个大概的介绍,具体的知识没有细讲,如果想了解大概那么书中的内容就足够了,如果想深入下去那么还得找其他的书来读。《
2011-12-28 15:20:24 1853
原创 岁末回首,义无反顾!
岁末回首,义无反顾 2011岁末总结 时间总是不给你一点喘息的时间,匆匆忙忙一刻也不停息。转眼间2011年马上就要过去了,新的一年即将开始。按照惯例,每年岁末我都要总结一下。品味一下过去一年的心酸苦辣,憧憬一下新一年的美好生活。今年也不例外,一样的总结,一样的憧憬。这一年有悲欢有离合,有欢笑有泪水,有失去也有所得。无论怎样这一年已经过去,成为了
2011-12-20 21:18:32 5295 18
原创 基于mini2440的USB视频采集
基于mini2440的USB视频采集 在嵌入式系统中,视频采集主要采用两种接口:一种是标准摄像头接口,一种是USB接口(USB1.1)。标准的摄像头接口,接口复杂,但传输速度快,适合高质量视频采集,而USB接口,接口简单,但有性能瓶颈,只能用于低质量的视频采集。mini2440开发板采用的是S3C2440芯片,S3C2440自带了一个OHCI的USB1.1主机接口和一个CMOS摄
2011-12-15 16:59:59 9359 13
原创 arm-linux-gcc裸机程序开发(三)
中断问题与完整工程测试一. 中断问题 中断对编写程序非常的重要,所以程序对中断处理的好坏将直接影响程序的优劣,对实时性要求较高的系统更是如此。对于ADS2.0,在编写中断处理程序的时候,只需要在程序前面加上"_irq"这个关键字,ADS就会自动为我们保存中断现场,等程序返回的时候自动恢复现场,细节无须我们关心。当然,也可以不加这个关键字,如果这样就得自己保存与恢复中断现场,考虑
2011-11-26 19:56:58 4434 4
原创 基于GTK的USB视频采集程序
基于GTK的USB视频采集程序 查了几天的资料,今天终于将USB摄像头测试程序调试成功了。这个测试程序很简单,功能就是将USB摄像头采集的数据显示在屏幕上。写这个程序的目的是熟悉usb摄像头的一些基本操作方法,为以后在开发板上编写视频采集程序打好基础。本测试程序包括两部分:一是视频采集部分,主要通过v4l2接口操作摄像头,将采集的视频帧存放在内存缓冲区。二是显示部分,将视频缓冲区
2011-11-21 16:35:55 8704 12
转载 GUI界的大战:QT VS GTK
Qt 是一个跨平台的 C++ 图形用户界面库,由挪威 TrollTech公司出品,目前包括Qt, 基于 Framebuffer 的 Qt Embedded,快速开发工具 Qt Designer,国际化工具 Qt Linguist 等部分. Qt支持所有 Unix 系统,当然也包括 Linux,还支持WinNT/Win2k,Win95/98 平台。 Trolltech 公司在 1
2011-11-11 21:25:18 2306
原创 arm-linux-gcc 裸机程序开发(二)
NANDFLASH启动与标准库问题 把u-boot的start.S移植到我的程序上,这样程序可以用supervivi的D功能下载到内存中运行了,但是还不够。因为程序在内存里,如果掉电程序就没有了,所以我们得将程序固化在flash里面。这里我们要固化在NandFlash里,这就要求程序可以能够NandFlash启动。这里我参考了mini2440的nandlfash读写程序nand.
2011-11-09 15:10:01 14554 21
转载 传说中让理科生沉默,让文科生落泪的综合题
1,以下谁是二进制思想的最早提出者? a,伏羲;b,姬昌;c,莱布尼茨;d,柏拉图。 2,以下哪个概念和公孙龙的《指物论》中的“指”字含义相近? a,变量;b,数组;c,对象;d,指针。 3,蔺相如,司马相如;魏无忌,长孙无忌。下列哪一组对应关系与此类似? a,PHP,Python;b,JSP,servlet;c,java,java script ;d,C,C++。
2011-11-04 10:42:38 3411 4
原创 arm-linux-gcc 裸机程序开发(一)
概述与SDRAM运行 以前开发arm裸机程序都是在ADS1.2开发环境下编译和调试的。刚开始时初学嵌入式好多东西不懂,选择这个开发环境的理由,一是资料多的,mini2440开发板上提供了很多例程可以参考,网上几乎所有arm裸机程序都是基于ADS1.2开发的。二是开发环境友善,虽然后来感觉ADS1.2有点难用,但毕竟是IDE的环境,对初学者来说总比命令行的方式更加直观与方便。随着学
2011-11-03 09:00:44 14728 28
原创 嵌入式Linux学习计划
自学嵌入式已经有一年的时间了,从刚开始的迷茫无助到现在的逐渐明朗,中间经历的太多太多了。俗话说万事开头难,刚开始的时候,根本就不知如何开始,上网查资料被一堆堆新名词搞的找不到北,去图书馆看书也是找不到方向。又是arm,又是linux,又是uboot头都大了。不知道自己究竟从哪里开始。当看过几本介绍嵌入式的基础教材过后,才逐渐有了一点方向,虽说刚开始看书的时候朦朦胧胧的。但是当几本书看过之后,对嵌入
2011-10-27 09:41:06 11958 7
原创 linux RTC 驱动模型分析
linux RTC 驱动模型分析 RTC(real time clock)实时时钟,主要作用是给Linux系统提供时间。RTC因为是电池供电的,所以掉电后时间不丢失。Linux内核把RTC用作“离线”的时间与日期维护器。当Linux内核启动时,它从RTC中读取时
2011-09-27 10:28:17 28488 4
翻译 linux 实时时钟(RTC)驱动
这个是linux内核文档关于rtc实时时钟部分的说明,此文档主要描述了rtc实时时钟的作用和编程接口,分别介绍了老的rtc接口和新的rtc类架构。并给出了一个测试rtc驱动的程序。 linux 实时时钟(RTC)驱动
2011-09-25 19:06:46 25432 4
原创 mini2440驱动分析之LCD
mini2440驱动分析之LCD mini2440集成了lcd控制器的接口,板子上接的lcd硬件是统宝240*320,TFT型lcd。lcd驱动对应的文件为s3c2410fb.c。要读懂这个驱动必须了解linux platform子系统的知识。因为这个驱动是以p
2011-09-22 16:56:57 10186 5
翻译 编写基于linux的lcd驱动
看lcd驱动好几天了,一直找不到突破点,感觉无从下手。今天看了一篇介绍lcd驱动编写的文章,写的很详细,对理解frambuffer以及lcd驱动很有帮助。但是英文的,多多少少有点不习惯,翻译下来留着以后复习的时候再看就方便了。编写基于linux的lcd驱动
2011-09-19 18:27:55 4906 2
翻译 帧缓冲设备(framebuffer)
帧缓冲设备(framebuffer.txt译文)维护: Geert Uytterhoeven 最后校正: May 10, 2001翻译:good02xaut@hotmail.com0. 介绍帧缓冲设备提供了显卡的抽象描述。他同时代表了显卡上的显存,应用
2011-09-18 16:36:34 3890
s3c440 usbslave 裸机程序
2012-03-29
ucosii mini2440 arm-linux-gcc 编译
2011-11-26
arm-linux-gcc 裸机编程之中断
2011-11-26
基于GTK的USB视频采集测试程序
2011-11-21
arm-linux-gcc 裸机程序
2011-11-03
minigui 1.6.10
2011-09-18
uCOSII mini2440 移植(3)
2011-09-09
uC/OSII mini2440 移植(2)
2011-09-09
dnw2 ubuntu10.10 usb 下载工具
2011-09-08
U-BOOT友善之臂mini2440(256M Nandflash)
2011-09-08
UC/OSII MINI2440移植
2011-05-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人