嵌入式Linux
obama_vs_pukin
积极主动,性格开朗……
展开
-
linux中select使用方法
<br />select系统调用是用来让我们的程序监视多个文件句柄(file descriptor)的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有某一个或多个发生了状态改变。 文件在句柄在Linux里很多,如果你man某个函数,在函数返回值部分说到成功后有一个文件句柄被创建的都是的,如man socket可以看到“On success, a file descriptor for the new socket is returned.”而man 2 open可以看到“open() an原创 2010-08-11 15:32:00 · 6374 阅读 · 0 评论 -
用busybox制作自己的rootfs
<br />1 获取源码解压 <br />从busybox的官方主页http://www.busybox.net ,下载busybox的源码,目前最新的版本为busybox-1.13.3.tar.bz2<br /> <br />#tar –jvxf busybox-1.13.3.tar.bz2<br /> <br />进入解压后的busybox源码目录<br /> <br />#cd busybox-1.13.3<br /> <br />2 配置busybox <br />步原创 2011-04-09 21:16:00 · 1685 阅读 · 0 评论 -
u-boot 挂载NFS
<br />UBL和UBOOT通过仿真器烧写成功后,串口启动后需要烧写内核并挂载NFS文件系统,主要步骤如下:<br />当然需要配置TFTP 和NFS相应的环境,uImage和rootfs文件需要放在TFTP的设置的文件夹下面;<br />(具体涉及到的IP地址,根据实际情况来配置)<br />1)设置地址,供TFTP下载烧写内核<br />setenv ipaddr 192.168.3.37<br />setenv serverip 192.168.3.100<br />set ethaddr 10:2原创 2011-03-29 14:09:00 · 4821 阅读 · 1 评论 -
Linux wifi驱动调试 freescale imx27
<br />郁闷,之前写的东西没有保存,又要重新写一下……<br /> <br />前几天已经写了一篇关于wifi的介绍的文章,具体介绍了一些wifi驱动调试的一些工具,今天姜建wifi驱动的调试中出现的问题:<br /> <br />wifi模块用的rt3070这款芯片,用到了USB2,当然需要相应的USB驱动作支撑……<br />首先加载rt3070sta.ko这个驱动,编译一下内核,选择相应的模块,make modules 一下就行了,具体不讲,不懂着问百度……<br /> <br />然后加载usb原创 2011-03-16 17:27:00 · 3956 阅读 · 0 评论 -
linux sed 命令详解
1. Sed简介 sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。以下介绍的是Gnu版本的Sed 3.02。 2. 定址 可以通过定址来定位你所希望编辑的行,该地址用数字构转载 2011-03-15 10:18:00 · 726 阅读 · 0 评论 -
Linux platform 机制探讨
<br />从Linux 2.6起引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver。<br />Linux中大部分的设备驱动,都可以使用这套机制, 设备用Platform_device表示,驱动用Platform_driver进行注册。<br /> <br />Linux platform driver机制和传统的device driver 机制(通过driver_register函数进行注册)相比,一个十分明显的优势在于platform机制将设备本身的资源注转载 2011-02-21 10:51:00 · 1023 阅读 · 1 评论 -
C语言字符串处理的一个例子
<br />char **getvars() <br />{<br /> int i;<br /> int content_length;<br /> char **postvars;<br /> char *postinput;<br /> char **pairlist;<br /> int paircount = 0;<br /> char *nvpair;<br /> char *eqpos;<br /> <br /> postinput原创 2011-03-10 16:52:00 · 1100 阅读 · 0 评论 -
嵌入式Linux Web 编程
好久没有写文章了,最近比较忙了,论文、实习……一堆事情,废话少说,直奔主题今天来谈谈最近做的一个东西,在用的freescale Imx27中架一个WEB server ,其实就是一个简单的B/S架构了。首先,既然是一个WEB server ,那么肯定有一个服务器了,在一个嵌入式板子上,不可能架一个像apache这么大的服务器的,即使架在里面,整个板子的性能是可想而知的……1.一步一步来,首先需要选择什么样的服务器,一些好心的人,已经为我们提供了蛮多的嵌入式server了,只要我们配置一下环境就可以了。有原创 2011-03-07 17:30:00 · 3151 阅读 · 4 评论 -
在arm-linux平台上的编译应用SQLite-3_5_8
最近拿了一块Flysun9200-DVK2。3开发板,板子基于Atmel公司的AT91RM9200 arm处理器,内嵌arm9200T内核,主频是180MHz。要在上面开发一个集采集、存储、数据分析、统计管理、发送、远程交互等功能的小程序。由于涉及每钟要素的存储与统计,考虑使用SQLite。SQLite 第一个Alpha版本诞生于2000年5月,是实现了SQL 92标准的一个大子集的嵌入式数据库,其以在一个库中组合了数据库引擎和接口,能将所有数据存储于单个文件中。官方测试表明SQLite的功能在一定程度上居转载 2011-03-03 15:23:00 · 1044 阅读 · 1 评论 -
嵌入式程序员应知道的0x10个基本问题
1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:1) #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)2)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。3) 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型原创 2011-02-24 16:09:00 · 666 阅读 · 0 评论 -
linux 逻辑地址、线性地址、物理地址和虚拟地址
<br />一、概念<br /><br />物理地址(physical address)<br />用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。<br />——这个概念应该是这几个概念中最好理解的一个,但是值得一提的是,虽然可以直接把物理地址理解成插在机器上那根内存本身,把内存看成一个从0字节一直到最大空量逐字节的编号的大数组,然后把这个数组叫做物理地址,但是事实上,这只是一个硬件提供给软件的抽像,内存的寻址方式并不是这样。所以,说它是“与地址总线相对应”,是更贴切一些,不过抛开对物理内转载 2011-01-05 22:10:00 · 786 阅读 · 1 评论 -
Linux 异步通知I/O的原理
本文是分别重应用程序层面、驱动程序层面讲解linux异步通知I/O的机制,希望给读者带来帮助。由于本人知识有限,如有错误请大家指出,谢谢!/******************************author:徐福成date :2011.01.01******************************/1)应用程序层面: linux异步通知I/O 就是我们应用程序中经常用到的信号的处理方法,如:signal(),和sigaction()两个函数用来注册一个信号的处理方法。 如:#i原创 2011-01-01 15:47:00 · 1612 阅读 · 1 评论 -
Linux 2.6 调度系统分析
<br />1. 前言<br />Linux 的市场非常广阔,从桌面工作站到低端服务器,它都是任何商用操作系统的有力竞争对手。目前,Linux 正全力进军嵌入式系统和高端服务器系统领域,但它的技术缺陷限制了它的竞争力:缺乏对实时任务的支持,多处理机可扩展性差。在 2.4 内核中,造成这两个弱项的关键原因之一就是调度器设计上的缺陷。<br />2.6 调度系统从设计之初就把开发重点放在更好满足实时性和多处理机并行性上,并且基本实现了它的设计目标。主要设计者,传奇式人物 Ingo Molnar 将新调度系统的特原创 2010-12-25 19:49:00 · 475 阅读 · 0 评论 -
嵌入式Linux学习规划
嵌入式Linux操作系统学习规划ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标: (1) 掌握主流嵌入式微处理器的结构与原理(初步定为arm9) (2) 必须掌握一个嵌入式操作系统 (初步定为uclinux或linux,版本待定) (3) 必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。 从事嵌入式软件开发的好处是: (1)目前国内外这方面的人都很稀缺。这一领域入门门槛较高,所以非专业IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,大多数人无条件接触。原创 2010-11-02 16:37:00 · 1095 阅读 · 1 评论 -
一步一学Linux与Windows 共享文件Samba
<br />简介:本文只是讲一讲我们最常用的Linux与Windows共享文件,主要是为新手指一指路。如何建立最简单的Samba服务器,并讲述遇到问题应该从何处寻找解决方案;正在更新之中,希望您的参加 ... ... 谢谢;<br />目录 0.1 查看文件内容和编辑文件的工具;<br />0.2 关于文件和目录相关;<br />03 用户和用户组相关;<br />04 进程管理;0、架设Samba 服务器的前提;<br /> 3.5.1 在Linux系统中查看网络中Windows共享文件及转载 2010-12-15 14:58:00 · 498 阅读 · 0 评论 -
Linux workqueue_struct 前后版本的比较
<br />Linux自从2.6.20之后,工作队列发生了一些变化,目前从网络上搜索的资料一般都是介绍老版本的工作队列,很少见到对新版本的介绍。本文对新老版本都做了简要概述,并分别提供了简单的实作案例。 工作队列(work queue)是Linux kernel中将工作推后执行的一种机制。这种机制和BH或Tasklets不同之处在于工作队列是把推后的工作交由一个内核线程去执行,因此工作队列的优势就在于它允许重新调度甚至睡眠。 工作队列是2.6内核开始引入的机制,在2.6.20之后,工作队列的数据结构发生了一原创 2010-12-14 13:56:00 · 1404 阅读 · 0 评论 -
Linux kernel 中的work queue原理
<br /><br /> <br /> <br />分成两大部分,第一部分是用来执行work queue中每个节点上挂载的函数的内核线程,第二部分是从驱动程序的角度看work queue的使用。<br />第一部分 worker_thread内核线程<br />Linux系统启动期间会创建一名为worker_thread线程,该线程创建之后就处于sleep状态。这里所谓的内核线程,从调度器的角度就是一可以调度的进程,从代码的表现形式看,就是一函数。系统创建的这个worker_thread线程基于一workq原创 2010-12-14 10:58:00 · 7109 阅读 · 1 评论 -
Linux 对 IO 端口的操作
Linux 对IO端口的操作方法:1)直接使用I/O端口操作函数<br /> 1。在设备打开或者驱动模块被加载时,申请I/O端口区域;<br /> request_region();<br /> 2。之后使用inb()、outb()等函数对I/O端口操作;<br /> 3。在设备被关闭或者卸载时,释放I/O端口范围;<br /> release_region();<br原创 2010-09-06 16:45:00 · 2589 阅读 · 0 评论 -
Linux系统中/dev/mtd与/dev/mtdblock的区别,即MTD字符设备和块设备的区别
<br />1. /dev/mtdN 是Linux 中的MTD架构中,系统自己实现的mtd分区所对应的字符设备,其里面添加了一些ioctl,支持很多命令,如MEMGETINFO,MEMERASE等。<br />而mtd-util中的flash_eraseall等工具,就是以这些ioctl为基础而实现的工具,实现一些关于Flash的操作。比如,mtd 工具中的 flash_eraseall中的:<br />if (ioctl(fd, MEMGETINFO, &meminfo) != 0) {<br />原创 2011-04-26 15:03:00 · 2947 阅读 · 0 评论