自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (1)
  • 收藏
  • 关注

原创 如何使用eclipse进行嵌入式Linux的开发

作者:曾宏安,华清远见嵌入式学院高级讲师。如何使用eclipse进行嵌入式Linux的开发 习惯了在windows环境下开发的程序员在转到Linux平台时经常会抱怨没有一个好用的集成开发环境。和windows下常用的一些开发软件相比,Linux自带的一些开发环境使用起来要么界面和操作不够方便、友好,要么功能不全。其实我们完全可以在开源社区上找到操作方便,功能强大的开发环境。下面就向大家介绍一个

2010-12-31 11:51:00 796 10

原创 linux设备模型中ktype的用法

作者:刘洪涛,华清远见嵌入式学院高级讲师,ARM公司授权ATC讲师。在上篇《利用udev、sys动态创建设备结点》的记录中,设备驱动中主要依靠下面两个功能完成的:1、在/sys/class下创建farsight_class类my_class =class_create(THIS_MODULE, "farsight_class"); 2、在farsight_class中创建新的cla

2010-12-30 12:06:00 432 2

原创 使用cross-3.3.2编译器的问题

作者:孙天泽,华清远见嵌入式学院金牌讲师。和Windows下的开发不同,嵌入式Linux开发显得有些复杂。其实并不是复杂,而是我们面前的新知识有点多:Linux操作系统、交叉编译器、库、大小端、软浮点...前几天用cross-3.3.2编译器编译Linux-2.6.14内核,就出现了链接错误。对于初学者,这类非语法类错误是非常难查的,所以我只能建议大家换编译器版本。比如这个cross-3.

2010-12-28 17:29:00 483

原创 linux设备模型中ktype的用法

作者:刘洪涛,华清远见嵌入式学院高级讲师,ARM公司授权ATC讲师。在上篇《利用udev、sys动态创建设备结点》的记录中,设备驱动中主要依靠下面两个功能完成的:1、在/sys/class下创建farsight_class类my_class =class_create(THIS_MODULE, "farsight_class"); 2、在farsight_class中创建新的cla

2010-12-27 17:56:00 253

原创 使用cross-3.3.2编译器的问题

作者:孙天泽,华清远见嵌入式学院金牌讲师。和Windows下的开发不同,嵌入式Linux开发显得有些复杂。其实并不是复杂,而是我们面前的新知识有点多:Linux操作系统、交叉编译器、库、大小端、软浮点...前几天用cross-3.3.2编译器编译Linux-2.6.14内核,就出现了链接错误。对于初学者,这类非语法类错误是非常难查的,所以我只能建议大家换编译器版本。比如这个cross-3.

2010-12-23 23:19:00 426 1

原创 嵌入式Linux驱动程序开发要点

在Linux操作系统下有3类主要的设备文件类型:块设备、字符设备和网络设备。这种分类方法可以将控制输入/输出设备的驱动程序与其他操作系统软件分离开来。字符设备与块设备的主要区别是:在对字符设备发出读/写请求时,实际的硬件I/O一般紧接着发生。块设备则不然,它利用一块系统内存作为缓冲区,若用户进程对设备的请求能满足用户的要求,就返回请求的数据;否则,就调用请求函数来进行实际的I/O操作。块设

2010-12-22 10:14:00 552 2

原创 内核栈的使用

作者:刘洪涛,华清远见嵌入式学院讲师。今天和一个朋友聊天,朋友说在编写驱动时遇到一个怪异的问题。他在内核中使用了一个深度函数调用(多层嵌套的函数),但没有实现预定的效果,但如果把嵌套去掉,函数就没问题了。当时我也没有多想,就回答可能是编译器的问题。回来后头脑中又浮现出这个问题,突然想到内核栈,觉得这个问题的原因应该出在内核栈上。下面简要介绍下内核的知识。用户空间运行的程序可以从用户空间的栈

2010-12-20 20:59:00 384 1

原创 利用udev、sys动态创建linux设备结点

作者:刘洪涛,华清远见嵌入式学院讲师。在Linux2.6内核中,devfs被认为是过时的方法,并最终被抛弃,udev取代了它。Devfs的一个很重要的特点就是可以动态创建设备结点。那我们现在如何通过udev和sys文件系统动态创建设备结点呢?下面通过一个实例,说明udev、sys动态创建设备结点的方法。注意代码中红色的部分是为了实现动态创建设备结点添加的。          #incl

2010-12-16 14:25:00 305

原创 移植内核中无法进入shell的问题

作者:孙天泽,华清远见嵌入式学院金牌讲师。近日,有学生在邮件中向我询问在移植Linux内核到2410开发板的问题。在内核已经运行起来后,始终无法看到login和shell。这是因为在高版本内核中已经不包含devfs,所以还需要在/dev中创建console设备文件。所以在创建这个console文件后,问题解决。具体命令如下:mknod -m 600 console c 5 1内

2010-12-15 17:18:00 561

原创 使用cross-3.3.2编译器的问题

作者:孙天泽,华清远见嵌入式学院金牌讲师。和Windows下的开发不同,嵌入式Linux开发显得有些复杂。其实并不是复杂,而是我们面前的新知识有点多:Linux操作系统、交叉编译器、库、大小端、软浮点...前几天用cross-3.3.2编译器编译Linux-2.6.14内核,就出现了链接错误。对于初学者,这类非语法类错误是非常难查的,所以我只能建议大家换编译器版本。比如这个cross-3.

2010-12-14 17:03:00 355

原创 嵌入式Linux驱动程序开发要点

在Linux操作系统下有3类主要的设备文件类型:块设备、字符设备和网络设备。这种分类方法可以将控制输入/输出设备的驱动程序与其他操作系统软件分离开来。字符设备与块设备的主要区别是:在对字符设备发出读/写请求时,实际的硬件I/O一般紧接着发生。块设备则不然,它利用一块系统内存作为缓冲区,若用户进程对设备的请求能满足用户的要求,就返回请求的数据;否则,就调用请求函数来进行实际的I/O操作。块设

2010-12-13 18:07:00 79 6

原创 zImage内核镜像解压过程详解

作者:刘洪涛,华清远见嵌入式学院讲师。在华清远见教学过程中,发现很多学员对内核镜像解压过程比较感兴趣,但网上相关的文章往往不能把关键问题讲清楚,所以写了这篇文章。本文以linux-2.6.14内核在S3C2410平台上运行为例,讲解内核的解压过程。内核编译完成后会生成zImage内核镜像文件。关于bootloader加载zImage到内核,并且跳转到zImage开始地址运行zImage

2010-12-10 17:28:00 371

原创 内核栈的使用

作者:刘洪涛,华清远见嵌入式学院讲师。今天和一个朋友聊天,朋友说在编写驱动时遇到一个怪异的问题。他在内核中使用了一个深度函数调用(多层嵌套的函数),但没有实现预定的效果,但如果把嵌套去掉,函数就没问题了。当时我也没有多想,就回答可能是编译器的问题。回来后头脑中又浮现出这个问题,突然想到内核栈,觉得这个问题的原因应该出在内核栈上。下面简要介绍下内核的知识。用户空间运行的程序可以从用户空间的栈

2010-12-09 17:14:00 436 1

原创 linux内核线程的创建及在QEMU上的测试方法

作者:刘洪涛,华清远见嵌入式学院讲师。本文主要介绍一个linux内核线程的实例,以及在QEMU平台上测试的过程。一、内核线程的创建编写一个字符设备驱动,在驱动注册时,开启一个内核线程。在用户向设备写入数据时,字符设备的wirte方法能够激活此内核线程,并在线程中实现打印用户输入的数据。驱动代码如下(在2.6.22内核上测试通过),关键部分加上了注释:#include    

2010-12-08 18:19:00 689 1

原创 Linux驱动的地址空间和硬件地址空间说明

作者:李强,华清远见嵌入式学院讲师。有这么几个问题,在上驱动课程的时候,我感觉一直困扰着同学们:●    用户程序编译连接形成的地址空间在什么范围内?        ●    内核编译后地址空间在什么范围内?        ●    要对外设进行访问,I/O的地址空间又是什么样的?于是就有了这篇文章,从大概上把内存相关知识点介绍一下,减少同学们在驱动课时对内存的困惑先回答第

2010-12-07 17:21:00 416 4

原创 ARM linux系统调用的实现原理

作者:刘洪涛,华清远见嵌入式学院讲师。大家都知道linux的应用程序要想访问内核必须使用系统调用从而实现从usr模式转到svc模式。下面咱们看看它的实现过程。系统调用是os操作系统提供的服务,用户程序通过各种系统调用,来引用内核提供的各种服务,系统调用的执行让用户程序陷入内核,该陷入动作由swi软中断完成。at91rm9200处理器对应的linux2.4.19内核系统调用对应的软中断定

2010-12-06 22:45:00 714 9

原创 C++中的引用

作者:李慧芹,华清远见嵌入式学院讲师。一、简述:引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。概念:引用就是某一变量或目标的别名,对引用操作与对变量直接操作是完全一样。定义:定义引用的表示方法与定义指针相似,只是用&代替了*:类型标识符 &引用名=目标变量名;例如: Clock pt1(10,10,10); Clo

2010-12-03 10:22:00 587 9

原创 利用udev、sys动态创建linux设备结点

作者:刘洪涛,华清远见嵌入式学院讲师。在Linux2.6内核中,devfs被认为是过时的方法,并最终被抛弃,udev取代了它。Devfs的一个很重要的特点就是可以动态创建设备结点。那我们现在如何通过udev和sys文件系统动态创建设备结点呢?下面通过一个实例,说明udev、sys动态创建设备结点的方法。注意代码中红色的部分是为了实现动态创建设备结点添加的。          #incl

2010-12-01 17:35:00 377 2

《Linux设备驱动开发详解》-Linux教程

本书是一本介绍linux设备驱动开发理论、框架与实例的书,本书以linux 2.6版本内核为蓝本,详细介绍自旋锁、信号量、完成量、中断顶/底半部、定时器、内存和i/o映射以及异步通知、阻塞i/o、非阻塞i/o等linux设备驱动理论;字符设备、块设备、tty设备、i2c设备、lcd设备、音频设备、usb设备、网络设备、pci设备等linux设备驱动的架构和框架中各个复杂数据架构和函数的关系,并讲解了大量linux驱动开发的大量实例,使读者能够独立开发各类linux设备驱动。本书内容全面,实例丰富,操作性强,语言通俗易懂,适合广大linux开发人员、嵌入式工程师参考使用。

2013-09-24

空空如也

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

TA关注的人

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