Embedded
文章平均质量分 67
wubin0721
这个作者很懒,什么都没留下…
展开
-
ARM、DSP、FPGA的技术特点和区别
在嵌入式开发领域,ARM是一款非常受欢迎的微处理器,其市场覆盖率极高,DSP和FPGA则是作为嵌入式开发的协处理器,协助微处理器更好的实现产品功能。那三者的技术特点以及区别是什么呢?下文就此问题略做了总结。 ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。转载 2014-11-29 18:11:23 · 529 阅读 · 0 评论 -
在nand flash上实现JFFS2根文件文件系统
JFFS2是Flash上应用最广的一个日志结构文件系统。它提供的垃圾回收机制,不需要马上对擦写越界的块进行擦写,而只需要将其设置一个标志,标明为脏块,当可用的块数不足时,垃圾回收机制才开始回收这些节点。同时,由于JFFS2基于日志结构,在意外掉电后仍然可以保持数据的完整性,而不会丢失数据。本文阐述如何在nand flash上实现JFFS2根文件文件系统。实验环境是:FS2410开发平台及u原创 2015-01-23 11:03:57 · 433 阅读 · 0 评论 -
Boa服务器移植
Boa是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右。作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。但Boa支持CGI,能够为CGI程序fork出一个进程来执行。Boa的设计目标是速度和安全。下面给大家介绍一下Boa服务器移植的具体操作步骤,希望能够有帮助。环境 主机:ubuntu8.10原创 2015-01-23 11:12:12 · 336 阅读 · 0 评论 -
嵌入式Linux驱动程序开发要点
在Linux操作系统下有3类主要的设备文件类型:块设备、字符设备和网络设备。这种分类方法可以将控制输入/输出设备的驱动程序与其他操作系统软件分离开来。字符设备与块设备的主要区别是:在对字符设备发出读/写请求时,实际的硬件I/O一般紧接着发生。块设备则不然,它利用一块系统内存作为缓冲区,若用户进程对设备的请求能满足用户的要求,就返回请求的数据;否则,就调用请求函数来进行实际的I/O操作。块设备主原创 2015-01-20 09:53:22 · 682 阅读 · 0 评论 -
内核栈的使用
今天和一个朋友聊天,朋友说在编写驱动时遇到一个怪异的问题。他在内核中使用了一个深度函数调用(多层嵌套的函数),但没有实现预定的效果,但如果把嵌套去掉,函数就没问题了。当时我也没有多想,就回答可能是编译器的问题。回来后头脑中又浮现出这个问题,突然想到内核栈,觉得这个问题的原因应该出在内核栈上。下面简要介绍下内核的知识。用户空间运行的程序可以从用户空间的栈上分配大量的空间来存放变量或数组、大的转载 2015-01-20 09:38:53 · 357 阅读 · 0 评论 -
利用udev、sys动态创建linux设备结点
在Linux2.6内核中,devfs被认为是过时的方法,并最终被抛弃,udev取代了它。Devfs的一个很重要的特点就是可以动态创建设备结点。那我们现在如何通过udev和sys文件系统动态创建设备结点呢?下面通过一个实例,说明udev、sys动态创建设备结点的方法。注意代码中红色的部分是为了实现动态创建设备结点添加的。 #include #in转载 2015-01-20 09:37:07 · 311 阅读 · 0 评论 -
使用cross-3.3.2编译器的问题
和Windows下的开发不同,嵌入式Linux开发显得有些复杂。其实并不是复杂,而是我们面前的新知识有点多:Linux操作系统、交叉编译器、库、大小端、软浮点...前几天用cross-3.3.2编译器编译Linux-2.6.14内核,就出现了链接错误。对于初学者,这类非语法类错误是非常难查的,所以我只能建议大家换编译器版本。比如这个cross-3.3.2编译器在编译u-boot-1.3.1转载 2015-01-20 09:39:54 · 354 阅读 · 0 评论 -
ARM linux系统调用的实现原理
大家都知道linux的应用程序要想访问内核必须使用系统调用从而实现从usr模式转到svc模式。下面咱们看看它的实现过程。系统调用是os操作系统提供的服务,用户程序通过各种系统调用,来引用内核提供的各种服务,系统调用的执行让用户程序陷入内核,该陷入动作由swi软中断完成。at91rm9200处理器对应的linux2.4.19内核系统调用对应的软中断定义如下:#if defined转载 2015-01-20 09:38:09 · 355 阅读 · 0 评论 -
嵌入式linux应用开发之:初识Qt
随着linux系统及基于linux系统的嵌入式产品的蓬勃发展,Qt、Qt/Embedded、Qtopia的字样越来频繁的出现在我们面前。QTQt是一个多平台的C++图形用户界面应用程序框架,由挪威 TrollTech 公司出品。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的很容易扩展,并且允许真正地组件编程。自1996年Qt进入商业领域开转载 2015-01-20 10:46:29 · 473 阅读 · 0 评论 -
__asm__ __volatile__内嵌汇编用法简述
__asm__ __volatile__内嵌汇编用法简述 在阅读C/C++原码时经常会遇到内联汇编的情况,下面简要介绍下__asm__ __volatile__内嵌汇编用法。带有C/C++表达式的内联汇编格式为:__asm__ __volatile__("Instruction List" : Output : Input : Clobber/Modify);其中每项的概念原创 2015-01-20 09:52:27 · 454 阅读 · 0 评论 -
NandFlash系列之二:S3C2410读写Nand Flash分析
一、结构分析S3C2410处理器集成了8位NandFlash控制器。目前市场上常见的8位NandFlash有三星公司的k9f1208、k9f1g08、k9f2g08等。k9f1208、k9f1g08、k9f2g08的数据页大小分别为512Byte、2kByte、2kByte。它们在寻址方式上有一定差异,所以程序代码并不通用。本文以S3C2410处理器和k9f1208系统为例,讲述NandF转载 2015-01-19 15:17:09 · 322 阅读 · 0 评论 -
ARM嵌入式软件编程杂谈
ARM 系列处理器是 RISC (Reducded Instruction Set Computing)处理器。很多基于ARM的高效代码的程序设计策略都源于RISC 处理器。和很多 RISC 处理器一样,ARM 系列处理器的内存访问,也要求数据对齐,即存取“字(Word)”数据时要求四字节对齐,地址的bits[1:0]==0b00;存取“半字(Halfwords)”时要求转载 2014-12-14 15:49:47 · 517 阅读 · 0 评论 -
Linux字符设备驱动程序的编写框架
一、Linux device driver 的概念系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操作。设备驱动程序是内核的一部分,它完成以下的功能:1、对设备初始化和释放;2、把数据从内核传送到硬件和转载 2015-01-19 15:21:33 · 474 阅读 · 0 评论 -
NandFlash系列之一:NorFlash与NandFlash对比
FLASH存储器又称闪存,主要有两种:NorFlash和NandFlash,下面我们从多个角度来对比介绍一下。在实际开发中,设计者可以根据产品需求来进行闪存的合理选择。1、接口对比NorFlash带有通用的SRAM接口,可以轻松地挂接在CPU的地址、数据总线上,对CPU的接口要求低。NorFlash的特点是芯片内执行(XIP,eXecute In Place),这样应用程序可以直接转载 2015-01-19 15:16:46 · 402 阅读 · 0 评论 -
什么是交叉编译
在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓平台,实际上包含两个概念:体系结构(Architecture)、操作系统(Operating System)。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行原创 2015-01-23 11:06:29 · 394 阅读 · 0 评论