嵌入式linux开发加速器--NFS开发环境的建立
在嵌入式linux系统的应用程序开发环节,NFS方式比ftp方式的执行效率要高,因为它不需要将程序下载到嵌入式目标系统就可以运行调试,省了频繁下载文件的时间,特别是程序较大的时候用NFS的优势更为明显。下面介绍一下建立嵌入式linux的NFS开发环境的过程。建立嵌入式linux的NFS开发环境分两部分,分别是宿主机的设置和开发板的设置。
一、主机端的设置1、以root的身份登录,修改配置文件/etc/exports,加入这一行: /home/workdir 192.168.1.* (rw,sync,no_root_squash)
参数说明如下: /home/workdir -- 你想共享的目录, 192.168.1.* -- 只允许这个ip段的机器访问,rw -- 允许读写(只读是ro,不方便交互所以很少用), sync -- 表示数据同步写入内存和硬盘, no_root_squash -- 允许远程系统以它自己的root特权存取该目录。
2、重启nfs服务,在控制台输入命令: service portmap restart service nfs restart
3、至此主机端已经设置完成,我们可以在本机上测试一下,比如本机IP为192.168.1.100,则可以用 mount 192.168.1.100:/home/workdir /mnt 如果mount成功,则在/mnt...

>> 阅读全文

ARM-Linux平台的Busybox交叉编译
什么是Busybox呢?
从名字上直接理解,Busybox是一个“繁忙的盒子”,其实,Busybox可以理解为一个Linux的命令集合,我们在进行Linux操作时所需要的常用命令,都可以在Busybox里找到,但Busybox又不是简单的将所有的命令集合在一起,它采用了一种非常巧妙的方式,即“使用一个程序完成所有的事”。
平时我们用ls、vi等命令,都要用到glibc的相关调用,所以如果每个命令都静态链接这些调用,每个命令都会很大,因此在通常的发行版中,都会动态链接glibc,可是glibc的动态库本身就很大,这在PC+Linux平时上还可以接受,但在嵌入式系统中,这就太大了,而且又不是所有的库函数都使用。
一般采用两种解决办法,一种是裁剪glibc,另一种就是Busybox的办法,即把ls、vi等程序的main函数改一下名,全部链接在一起,然后静态链接glibc,这样,只有需要的调用才会链接进来,整个Busybox程序可能都比glibc的动态库小。
因此,Busybox的工作原理是根据文件名来决定用户想调用的是那个程序,例如,如果你的busybox程序的文件名是ls,运行的就是ls,是vi,就运行vi。
下面介绍一...

>> 阅读全文

Linux下ARM/DSP双核系统通信接口设计
引 言
嵌入式系统的核心是嵌入式微处理器和嵌入式操作系统。早期的嵌入式系统硬件核心是各种类型的8位和16位单片机;而近年来32位处理器以其高性能、低价格,得到了广泛的应用。近年来,又出现了另一类数据密集处理型芯片DSP。DSP由于其特殊的结构、专门的硬件乘法器和特殊的指令,使其能快速地实现各种数字信号处理及满足各种高实时性要求。随着现代嵌入式系统的复杂度越来越高,操作系统已成为嵌入式系统不可缺少的部分。免费的嵌入式操作系统,如Linux等,随着自身不断的改善,得到了飞速的发展。Linux是一个免费的、强大的、可信赖的、具有可伸缩性与扩充性的操作系统。Linux实现了许多现代化操作系统的理论,并且支持完整的硬件驱动程序、网络通信协议与多处理器的架构,其源码的公开更有利于操作系统嵌入式应用。
基于上述分析,笔者开发了基于ARM和DSP芯片的双核嵌入式系统。系统充分利用了ARM和DSP的各自特点,既可以使用ARM和DSP芯片进行协同开发,也可以利用ARM或DSP进行独立开发。操作系统选用了Linux,以利于充分发挥系统的效能。
1 系统的总体设计
由于ARM...

>> 阅读全文

嵌入式linux下QT3/Embedded的输入设备驱动接口
一、Qt3/Embedded的输入设备的驱动接口实现原理分析
1、Qt3/Embedded把与底层硬件相关的源文件统一放在src/embedded目录下,所以我们最好也把自己的设备驱动接口文件放到此目录。
2、Qt/Embedded中的输入设备分为鼠标类与键盘类。在3.x版本系列中,鼠标设备的抽象基类为QWSMouseHandler,在src/embedded/qmouse_qws.h中定义,键盘设备的抽象基类为QWSKeyboardHandler,在src/embedded/qkbd_qws.h中定义。对于具体的输入设备我们则从这两个基类重新派生出它的实现类。
3、系统加载过程分析。Qt/Embedded在体系上为C/S结构,任何一个Qt/Embedded程序都可以作为系统中唯一的一个GUI Server存在。当应用程序首次以系统GUI Server的方式加载时,将建立QWSServer实体。在系统加载构造QWSServer时,将会调用QWSServer::openMouse与QWSServer::openKeyboard函数 (建立QWSServer实体的源文件是src/kernel/qwindowsystem_qws.cpp)。这两个函数分别调用QMouseDriverFactory::create()与QKbdDriverFactory::create()函数,它们分别是在src/embedded/qmousedriverfactory_qws.h和src/embedded...

>> 阅读全文


嵌入式C编程技术(一)
[编者按]为使广大嵌入式系统应用技术人员系统地了解和掌握一些先进应用、开发技术,本刊从创刊号起开辟《学习园地》栏目。上半年将集中介绍嵌入式C编程技术(一)~(六),内容包括单片机C语言应用程序设计中的变量定义和变量空间、C语言编程技巧、函数有效使用及混合编程技术。
嵌入式C是指在嵌入式应用中使用的C语言。在嵌入式应用中非常注重的是代码的时空效率,即产生的代码的运行时间要尽可能少,占用的存储空间(包括程序存储器和数据存储器)要尽可能小。单片机在国内的嵌入式应用领域使用最多,8051是单片机教学的首选机型。现以8051为例讲解产生代码的时空效率,C编译器使用Franklin C51。用C语言进行嵌入式应用的软件开发是必然趋势,程序设计应该以C语言为主,汇编语言为辅。对汇编语言掌握到只要可以读懂程序,在时间要求比较严格的模块中进行程序的优化即可。尽管懂汇编语言不是目的,但懂得一些汇编语言可帮助了解影响C语言效率的8051特殊限定。例如,懂得汇编语言指令就可知道使用片内RAM做变量存储的优势,因为片外变量需要几条指令才能设置累加器和数据指针来存取。最好的嵌入式应用的编程者应是由汇编语...

>> 阅读全文

linux平台下的QT3快速开发入门(二)
二、编写代码
1、主入口函数。
用文本编辑器在工程目录下创建一个main.cpp文件, 代码如下:
#include <application.h>
#include "logindialog.h"
int main(int argc, char **argv)
{
QApplication app(argc, argv);
LoginDialog *dialog = new LoginDialog;
app.setMainWidget(dialog);
dialog->show();
return app.exec();
}
保存退出,输入以下命令编译程序:
qmake -project
qmake
make
现在可以输入 ./qtlogin 运行这个程序(如图),只是按下“确定”按钮是没有反应的。因为checkPasswd()槽的功能还没有实现。
2、实现我们所想要的功能。
观察一下现在的工程目录会发现多了很多文件,Qt的用户界面编译器工具uic会对界面文件 *.ui 文件自动生成对应的 *.h 和 *.cpp文件。如:logindialog.ui会生成logindialog.h和logindialog.cpp这两个文件。我们一般不能在这两个文件里面加入我们...

>> 阅读全文

linux平台下的QT3快速开发入门(一)
在现今这个竞争激烈的时代,时间就是金钱。QT是一个建立图形用户界面的强大工具,它提供的QT Designer可以帮助我们快速有效的写出美观高效的界面,对嵌入式开发来说非常有用。下面结合一个例子简单介绍一下如何进行QT的开发。
这个例子主要是想实现一个简单的登陆对话框。用户输入姓名和密码,验证通过则打开主窗体。
一、利用Qt Designer设计窗体
1、创建一个工程目录 mkdirqtlogin
2、运行 Qt Designer(这里我用的是系统自带的qt x11 free 3.3.8版,可以直接在命令行下输入:designer 启动)。当Qt Designer 运行后会弹出一个模板的列表,选择 "Dialog"模板,现在你应该会看到一个名为 "Form1"的窗体。如图:
3、创建子窗口部件并且把它们放置到窗体中。下面创建两个textLabel、两个lineEdit、一个水平的spacer(布局用,在最终的窗体上是不可见的)和两个pushButton。对于每一项,单击Qt Designer左侧"toolbox"中的名称或图标,然后直接在Form1窗体上你要放置的地方单击即可。现在向上拖动Form1主窗体的底部使它变得短一些。不要在...

>> 阅读全文

Arm-Linux嵌入式QT/E环境的建立(qt/e 3.x系列)
QT/E 3.x系列比QT/E 2.x系列有非常大的改进,大大提高了开发进度,不再使用tmake,安装也更简单。但目前在网上关于QT/E 3.x系列的介绍还是比较少,所以本文介绍一下QT/E 3.x系列的安装。
一、建立arm交叉编译工具链
在安装QT/E之前,应确保arm-linux交叉编译工具链已经建立,如果还没有可以参考以下步骤建立。
1、下载交叉编译工具cross-2.95.3.tar.bz2(或其他版本如:cross-3.4.4.tar.bz2),这是已经制作好的arm交叉编译工具链,只需解压及建交环境变量即可使用。
2、把文件cross-2.95.3.tar.bz2拷贝到一个文件夹,这里我用:/usr/local/arm这个目录。 注意后面建立环境变量时要与之对应。
3、解压 tar -xjvf cross-2.95.3.tar.bz2
4、建立环境变量 export PATH=/usr/local/arm/2.95.3/bin:$PATH
或者也可以写进文件 ~/.bashrc中,这样就不用每次开机都export啦。
vi ~/.bashrc
在后面加上 export PATH=/usr/local/arm/2.95.3/bin:$PATH
到此arm-linux交叉编译工具链就已经建好了。
二...

>> 阅读全文