linux嵌入式方向
文章平均质量分 85
华清远见嵌入式学院
专业始于专注,卓识源于远见
展开
-
linux-2.6内核模块引用计数的实现
作者:刘洪涛,华清远见嵌入式学院金牌讲师。一、模块使用计数的背景知识模块是一种可以在内核运行过程中动态加载、卸载的内核功能组件。2.6内核中模块的命名方式为*.ko。模块在被使用时,是不允许被卸载的。编程时需要用“使用计数”来描述模块是否在被使用。二、2.4内核使用计数的实现方法2.4内核中,模块自身通过 MOD_INC_USE_COUNT, MOD_DEC_USE_COUNT宏来原创 2009-07-14 09:01:00 · 1590 阅读 · 0 评论 -
Linux2.6.26.5加入TFT-LCD驱动
作者:孙晓明,华清远见嵌入式学院讲师。首先下载内核源码,我这里用的是linux-2.6.26.5的内核源码。(1) 在arch/arm/mach-s3c2410/mach-smdk2410.c里添加头文件: #include (2) 在arch/arm/ plat-s3c24xx / common-smdk.c文件中添加如下信息: #include 然后添加如下原创 2009-07-16 10:30:00 · 1051 阅读 · 0 评论 -
linux内核对S3C2410睡眠模式的支持
一、S3C2410支持4种供电模式(1)NORMAL MODE耗电最大、可以通过关闭具体控制器的时钟来节电(2)SLOW MODE在此模式下可以没有内部PLL,耗电情况依赖于外部时钟的频率(3)IDLE MODEFCLK被关断,主要由于CPU core节电。可以任何通过外部中断唤醒(4)Power_OFF MODE除了处理器唤醒逻辑单元外,处理器不损耗任何原创 2009-05-06 07:08:00 · 1451 阅读 · 0 评论 -
什么是交叉编译
在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓平台,实际上包含两个概念:体系结构(Architecture)、操作系统(Operating System)。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行原创 2009-05-12 12:05:00 · 1015 阅读 · 0 评论 -
嵌入式Linux实战篇--交叉编译环境的建立(基于ubuntu 8.10)
作者:华清远见讲师,曹忠明 在进行嵌入式开发之前,首先要建立一个交叉编译环境,这是一套编译器、连接器和libc库等组成的开发环境。本文具体说明了嵌入式交叉编译环境的建立过程和具体的操作步骤,希望能够对各位朋友搭建对应的交叉编译环境有所帮助。 一、所需软硬件环境n 主机环境建立交叉编译工具链的主机环境:Ubuntu 8.10,gcc-4.3.2原创 2009-05-14 09:20:00 · 1821 阅读 · 0 评论 -
unix中的信号处理机制
作者:穆煜,华清远见嵌入式学院讲师。中断处理是操作系统和系统软件的关键部分,Unix下的软件中断被称为信号,信号通常发生于以下3种情况: (1)当用户按下终端驱动程序分配给信号控制字符的任何按键时,内核会向相应进程发送信号。例如我们常常通过输入Ctrl+C来终止前台进程,此时,就是由内核向该进程发送SIGINT信号,而这个信号的默认处理动作是终止进程。 (2)当一个进程在执行中发生错误原创 2009-07-27 14:17:00 · 1118 阅读 · 0 评论 -
Qtopia移植
作者:曹忠明,华清远见嵌入式学院讲师。Qtopia 是Trolltech 公司为采用嵌入式Linux操作系统的消费电子设备而开发的综合应用平台, Qtopia包含完整的应用层、灵活的用户界面、窗口操作系统、应用程序启动程序以及开发框架。下面便是他的移植过程。硬件s3c2410 主机环境:red hot企业版 5.0 交叉编译工具:gcc-3.4.5-glibc-2.3.6原创 2009-07-27 14:06:00 · 3766 阅读 · 0 评论 -
FS2410开发板上的按键驱动程序(2)续
作者:赵老师,华清远见嵌入式学院讲师。按键字符设备的file_operations结构定义为: static struct file_operations button_fops = { .owner = THIS_MODULE, .ioctl = button_ioctl, .open = button_open, .read原创 2009-07-31 09:31:00 · 772 阅读 · 0 评论 -
让我们一起,向着嵌入式出发!
今天用了将近1个小时的时间,跟准备来华清远见参加嵌入式Linux工程师就业培训课程的一名在读研究生(电气自动化专业)进行了电话交流。电话沟通过程中能够充分体会到他的诸多困惑和无奈。而静心回想之后发现这些问题往往是在校大学生共同的疑惑,所以抽了点时间把这些问题整理出来和大家一起交流分享,希望能够对那些正准备向着嵌入式行业,特别是嵌入式Linux方向进发的朋友们有所帮助(仅代表本人个人观点,欢迎大家拍原创 2009-05-22 11:23:00 · 1081 阅读 · 1 评论 -
UBI文件系统简介
作者:刘洪涛,华清远见嵌入式学院金牌讲师。在linux-2.6.27以前,谈到Flash文件系统,大家很多时候多会想到cramfs、jffs2、yaffs2等文件系统。它们也都是基于文件系统+mtd+flash设备的架构。linux-2.6.27后,内核加入了一种新型的flash文件系统UBI(Unsorted Block Images)。这里简单介绍下UBI文件系统加入的原因,及使用方法。我原创 2009-07-31 09:32:00 · 1294 阅读 · 0 评论 -
PXA270嵌入式系统设计二:时钟及复位部分
作者:刘洪涛,华清远见嵌入式培训中心高级讲师,ARM ATC授权培训讲师。最近计划针对我们华清远见的教学开发一套PXA270系统,我把我的一些软、硬件开发过程记录下来和大家一起分享、讨论。有好的建议大家一定要及时交流,lht@farsight.com.cn。上一篇我写了“PXA270嵌入式系统设计一:电源管理部分”,今天接着写一下关于时钟及复位部分的内容,欢迎指正~~ 一、时钟部分 任原创 2009-05-31 12:37:00 · 875 阅读 · 0 评论 -
嵌入式Linux文件系统及其存储机制分析
作者: 华清远见嵌入式系统与通用PC机不同,一般没有硬盘这样的存储设备而是使用Flash闪存芯片、小型闪存卡等专为嵌入式系统设计的存储装置,本文分析了嵌入式系统中常用的存储设备及其管理机制,介绍了常用的基于FLASH的文件系统类型。 1.嵌入式系统存储设备及其管理机制分析 构建适用于嵌入式系统的Linux文件系统,必然会涉及到两个关键点,一是文件系统类型的选择,它关系到文件系统的读写性原创 2009-05-31 13:36:00 · 807 阅读 · 0 评论 -
ARM linux系统调用的实现原理
作者:刘洪涛,华清远见嵌入式培训中心讲师。大家都知道linux的应用程序要想访问内核必须使用系统调用从而实现从usr模式转到svc模式。下面咱们看看它的实现过程。系统调用是os操作系统提供的服务,用户程序通过各种系统调用,来引用内核提供的各种服务,系统调用的执行让用户程序陷入内核,该陷入动作由swi软中断完成。at91rm9200处理器对应的linux2.4.19内核系统调用对应原创 2009-05-31 13:49:00 · 1032 阅读 · 0 评论 -
基于S3C2410的SD卡linux驱动工作原理(一)
作者:刘洪涛,华清远见嵌入式学院金牌讲师,ARM公司授权ATC讲师。我在讲嵌入式Linux驱动开发的时候,发现不少学员对SD卡驱动这块比较感兴趣,课下来找我探讨。而在很多技术论坛,也有不少人问这方面的问题,所以就想写一下这方面的内容,希望对大家的学习能有所帮助。想了解SD卡的工作原理,首先需要了解的就是SD卡协议了,这个在网上可以轻松的下载到。在了解协议后,就可以看看下面的一些开发思路了。原创 2009-05-31 14:04:00 · 1573 阅读 · 0 评论 -
spinlock与linux内核调度的关系
作者:刘洪涛,华清远见嵌入式学院金牌讲师,ARM公司授权ATC讲师。关于自旋锁用法介绍的文章,已经有很多,但有些细节的地方点的还不够透。我这里就把我个人认为大家容易有疑问的地方拿出来讨论一下。 一、自旋锁(spinlock)简介 自旋锁在同一时刻只能被最多一个内核任务持有,所以一个时刻只有一个线程允许存在于临界区中。这点可以应用在多处理机器、或运行在单处理器上的抢占式内核中需要的锁定服原创 2009-05-31 14:45:00 · 754 阅读 · 0 评论 -
usb鼠标驱动注解及测试
作者:刘洪涛,华清远见嵌入式学院高级讲师,ARM ATC授权培训讲师。参考2.6.14版本中的driver/usb/input/usbmouse.c。鼠标驱动可分为几个部分:驱动加载部分、probe部分、open部分、urb回调函数处理部分。 下文阴影部分为注解。 一、驱动加载部分 static int __init usb_mouse_init(void) {原创 2009-05-31 14:51:00 · 1295 阅读 · 0 评论 -
NandFlash系列之一:NorFlash与NandFlash对比
作者:刘洪涛,华清远见嵌入式培训中心高级讲师。FLASH存储器又称闪存,主要有两种:NorFlash和NandFlash,下面我们从多个角度来对比介绍一下。在实际开发中,设计者可以根据产品需求来进行闪存的合理选择。 1、接口对比 NorFlash带有通用的SRAM接口,可以轻松地挂接在CPU的地址、数据总线上,对CPU的接口要求低。NorFlash的特点是芯片内执行(XIP,eXecu原创 2009-05-31 13:38:00 · 1917 阅读 · 0 评论 -
NandFlash系列之二:S3C2410读写Nand Flash分析
作者:刘洪涛,华清远见嵌入式培训中心高级讲师。一、结构分析 S3C2410处理器集成了8位NandFlash控制器。目前市场上常见的8位NandFlash有三星公司的k9f1208、k9f1g08、k9f2g08等。k9f1208、k9f1g08、k9f2g08的数据页大小分别为512Byte、2kByte、2kByte。它们在寻址方式上有一定差异,所以程序代码并不通用。本文以S3C241原创 2009-05-31 13:39:00 · 759 阅读 · 0 评论 -
zImage内核镜像解压过程详解
作者:刘洪涛,华清远见嵌入式学院讲师。 在华清远见教学过程中,发现很多学员对内核镜像解压过程比较感兴趣,但网上相关的文章往往不能把关键问题讲清楚,所以写了这篇文章。本文以linux-2.6.14内核在S3C2410平台上运行为例,讲解内核的解压过程。 内核编译完成后会生成zImage内核镜像文件。关于bootloader加载zImage到内核,并且跳转到zImage开始地址运行zIma原创 2009-05-31 13:52:00 · 729 阅读 · 0 评论 -
嵌入式Linux驱动程序开发要点
作者:华清远见嵌入式学院。 在Linux操作系统下有3类主要的设备文件类型:块设备、字符设备和网络设备。这种分类方法可以将控制输入/输出设备的驱动程序与其他操作系统软件分离开来。 字符设备与块设备的主要区别是:在对字符设备发出读/写请求时,实际的硬件I/O一般紧接着发生。块设备则不然,它利用一块系统内存作为缓冲区,若用户进程对设备的请求能满足用户的要求,就返回请求的数据;否则,原创 2009-05-31 13:56:00 · 1564 阅读 · 0 评论 -
linux设备模型中ktype的用法
原创,转载请注明作者及出处。作者:刘洪涛,华清远见嵌入式学院金牌讲师 在上篇《利用udev、sys动态创建设备结点》的记录中,设备驱动中主要依靠下面两个功能完成的:1、在/sys/class下创建farsight_class类 my_class =class_create(THIS_MODULE, "farsight_class"); 2、在farsight_class中创建新原创 2009-05-31 14:27:00 · 1039 阅读 · 0 评论 -
如何使用eclipse进行嵌入式Linux的开发
作者:曾宏安,华清远见嵌入式学院高级讲师。如何使用eclipse进行嵌入式Linux的开发 习惯了在windows环境下开发的程序员在转到Linux平台时经常会抱怨没有一个好用的集成开发环境。和windows下常用的一些开发软件相比,Linux自带的一些开发环境使用起来要么界面和操作不够方便、友好,要么功能不全。其实我们完全可以在开源社区上找到操作方便,功能强大的开发环境。下面就向大家介绍一个原创 2009-05-31 14:46:00 · 2524 阅读 · 0 评论 -
在虚拟机下Ubuntu建立NFS网络文件系统
作者:蒙洋,华清远见嵌入式学院讲师。在ubuntu上默认没有安装NFS服务器,因此:apt-get install nfs-kernel-serverapt-get install nfs-commonNFS服务程序和客户端程序安装完成。上面的两个服务程序已经给大家安装好了,默认它是正常的。配置NFS相关的IP地址(由于我们是XP下的VMware下的Ubuntu,稍复杂):原创 2009-08-06 23:14:00 · 1215 阅读 · 0 评论 -
FS2410开发板上的按键驱动程序(3)
作者:赵老师,华清远见嵌入式学院讲师。按键驱动程序的测试程序所下所示。在测试程序中,首先打开按键设备文件和gpio设备(包括4个LED和蜂鸣器)文件,接下来,根据按键的输入值(按键ID)的二进制形式,LED D9~D12发亮(例如,按下11号按键,则D9、D10和D12会发亮),而蜂鸣器当每次按键时发出声响。/* butt_test.c */ #include #includ原创 2009-08-06 23:15:00 · 641 阅读 · 0 评论 -
FS2410开发板上的按键驱动程序(3)
作者:赵老师,华清远见嵌入式学院讲师。按键驱动程序的测试程序所下所示。在测试程序中,首先打开按键设备文件和gpio设备(包括4个LED和蜂鸣器)文件,接下来,根据按键的输入值(按键ID)的二进制形式,LED D9~D12发亮(例如,按下11号按键,则D9、D10和D12会发亮),而蜂鸣器当每次按键时发出声响。/* butt_test.c */ #include #includ原创 2009-08-06 23:16:00 · 684 阅读 · 0 评论 -
PXA270嵌入式系统设计一:电源管理部分
作者:刘洪涛,华清远见嵌入式培训中心高级讲师,ARM ATC授权培训讲师。最近计划针对我们华清远见的教学开发一套PXA270系统,我把我的一些软、硬件开发过程记录下来和大家一起分享、讨论。有好的建议大家一定要及时交流,lht@farsight.com.cn平台硬件功能要求:32M/64M nor flash、64M sdram、10M/100M自适应网口、串口、SD卡接口、USB主从口、实原创 2009-05-31 12:32:00 · 862 阅读 · 1 评论 -
Linux字符设备驱动程序的编写框架
作者:华清远见 在华清远见的嵌入式培训课程中,linux自负设备驱动程序的编写是嵌入式学院嵌入式工程师职业培训班>三期课程中嵌入式linux驱动开发方面的重要内容,这里我们先对QT做一下简单介绍。 一、Linux device driver 的概念 系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节,这样在原创 2009-05-31 13:43:00 · 1531 阅读 · 0 评论 -
利用udev、sys动态创建linux设备结点
作者:刘洪涛,华清远见嵌入式培训中心讲师。在Linux2.6内核中,devfs被认为是过时的方法,并最终被抛弃,udev取代了它。Devfs的一个很重要的特点就是可以动态创建设备结点。那我们现在如何通过udev和sys文件系统动态创建设备结点呢?下面通过一个实例,说明udev、sys动态创建设备结点的方法。注意代码中红色的部分是为了实现动态创建设备结点添加的。 #incl原创 2009-05-31 13:48:00 · 1461 阅读 · 0 评论 -
内核栈的使用
d作者:刘洪涛,华清远见嵌入式培训中心讲师。 今天和一个朋友聊天,朋友说在编写驱动时遇到一个怪异的问题。他在内核中使用了一个深度函数调用(多层嵌套的函数),但没有实现预定的效果,但如果把嵌套去掉,函数就没问题了。当时我也没有多想,就回答可能是编译器的问题。回来后头脑中又浮现出这个问题,突然想到内核栈,觉得这个问题的原因应该出在内核栈上。下面简要介绍下内核的知识。用户空间运行的程序可原创 2009-05-31 13:50:00 · 700 阅读 · 0 评论 -
移植内核中无法进入shell的问题
作者:孙天泽,华清远见嵌入式学院金牌讲师。近日,有学生在邮件中向我询问在移植Linux内核到2410开发板的问题。在内核已经运行起来后,始终无法看到login和shell。这是因为在高版本内核中已经不包含devfs,所以还需要在/dev中创建console设备文件。所以在创建这个console文件后,问题解决。具体命令如下:mknod -m 600 console c 5 1原创 2009-05-31 14:00:00 · 882 阅读 · 0 评论 -
在nand flash上实现JFFS2根文件文件系统
作者:刘洪涛,华清远见嵌入式学院金牌讲师,ARM公司授权ATC讲师。 JFFS2是Flash上应用最广的一个日志结构文件系统。它提供的垃圾回收机制,不需要马上对擦写越界的块进行擦写,而只需要将其设置一个标志,标明为脏块,当可用的块数不足时,垃圾回收机制才开始回收这些节点。同时,由于JFFS2基于日志结构,在意外掉电后仍然可以保持数据的完整性,而不会丢失数据。本文阐述如何在nand f原创 2009-05-31 14:02:00 · 1012 阅读 · 0 评论 -
安装VMware虚拟机和Linux操作系统
作者:蒙洋,华清远见嵌入式培训中心讲师● 虚拟机简介所谓虚拟计算机(简称虚拟机),实际上就是一种应用软件,例如VMware实际上也只是一种应用软件,其特别之处在于,由它创建的虚拟机与真实的计算机几乎一模一样,不但虚拟有自己的CPU、内存、硬盘、光驱,甚至还有自己的BIOS。在这个虚拟机上,可以安装Windows、Linux等真实的操作系统,及各种应用程序。● 常见虚拟机软件目前流行原创 2009-05-31 14:55:00 · 2447 阅读 · 1 评论 -
u-boot启动过程分析——基于lpc2210的移植代码
作者:华清远见嵌入式培训中心讲师。u-boot是一种普遍用于嵌入式系统中的Bootloader。Bootloader介绍 Bootloader是进行嵌入式开发必然会接触的一个概念,它是嵌入式学院嵌入式工程师职业培训班>二期课程中嵌入式linux系统开发方面的重要内容。本篇文章主要讲解Bootloader的基本概念以及内部原理,这部分内容的掌握将对嵌入式linux系统开发的学习非常有帮助原创 2009-05-31 13:40:00 · 730 阅读 · 0 评论 -
嵌入式linux应用开发之:初识Qt
作者:刘洪涛,华清远见嵌入式培训中心高级讲师。随着linux系统及基于linux系统的嵌入式产品的蓬勃发展,Qt、Qt/Embedded、Qtopia的字样越来频繁的出现在我们面前。在华清远见的嵌入式培训课程中,Qt是嵌入式学院嵌入式工程师职业培训班>二期课程中嵌入式linux应用开发方面的重要内容。不少学员对QT方面的内容比较关注,所以在这里我们先对QT做一下简单介绍。 QT Qt是原创 2009-05-31 13:42:00 · 819 阅读 · 0 评论 -
使用cross-3.3.2编译器的问题
作者:孙天泽,华清远见嵌入式学院金牌讲师。 和Windows下的开发不同,嵌入式Linux开发显得有些复杂。其实并不是复杂,而是我们面前的新知识有点多:Linux操作系统、交叉编译器、库、大小端、软浮点... 前几天用cross-3.3.2编译器编译Linux-2.6.14内核,就出现了链接错误。对于初学者,这类非语法类错误是非常难查的,所以我只能建议大家换编译器版本。比如这个cros原创 2009-05-31 13:59:00 · 775 阅读 · 0 评论 -
基于S3C2410的SD卡linux驱动工作原理(二)
作者:刘洪涛,华清远见嵌入式学院金牌讲师,ARM公司授权ATC讲师。序:我在讲嵌入式Linux驱动开发班的时候,发现不少学员对SD卡驱动这块比较感兴趣,课下来找我探讨。而在很多技术论坛,也有不少人问这方面的问题,所以就想写一下这方面的内容,希望对大家的学习能有所帮助。前几天写了篇“基于S3C2410的SD卡linux驱动工作原理(一)”,说了下脱离操作系统如何在S3C2410上实现SD卡的原创 2009-05-31 14:25:00 · 1904 阅读 · 0 评论 -
8月15日现场聆听专家深度剖析嵌入式Linux三大应用领域
嵌入式Linux开发饕餮盛宴,消费电子、工业控制、航空航天,三大领域一网打尽!限额300名,请提前网上报名预约,先到先得!专题1、嵌入式Linux典型案例-IPradio主讲:王辉,华清远见高级讲师,7年嵌入式开发经验,针对多款硬件平台(PowerPC8xx,Xscale,s3c2410,s3c2440,Mx1,Mx21,Mips,Parisc)进行嵌入式Linux裁减及移植工作,对其它嵌入式操作原创 2009-08-11 14:05:00 · 803 阅读 · 0 评论 -
关于位域个人理解
作者:曹忠明,华清远见嵌入式学院讲师。有很多学生问我,为什么很多地方都说位域不能跨越两个字节,而自己写得程序明显看到某一位域跨越的两个字节,为此感到不解。下面我说一点我个人的理解。先看例子:#include struct date1 { short a:4; short b:5; short原创 2009-08-11 14:20:00 · 758 阅读 · 1 评论 -
Linux启动过程剖析
作者:王姗姗,华清远见嵌入式学院讲师。Linux启动过程的剖析能帮助那些想深入学习Linux用户建立一个相关Linux启动过程的清晰概念,进而可以进一步研究Linux接下来是如何工作的。Linux启动过程如下:当用户打开PC的电源,BIOS开机自检,按BIOS中设置的启动设备(通常是硬盘)启动,接着启动设备上安装的引导程序lilo或grub开始引导Linux,Linux首先进行内核的引原创 2009-08-11 14:22:00 · 1178 阅读 · 0 评论 -
我的嵌入式学习笔记(2)--scanf使用常见问题及解决方法
作者:曹忠明,华清远见嵌入式学院讲师。在学习C语言的时候,printf()是我们学到的第一个函数,相信“hello world”这个例子大家都不会陌生吧,接着就是scanf()这个函数了,这个函数的功能是格式输入,它的函数原型是:int scanf(const char *format,…);这个函数的基本用法这里就不说了,这里介绍一些这个函数使用中常见的问题及解决方法:第一,连续原创 2009-06-02 16:30:00 · 751 阅读 · 1 评论