1 引言
随着科技的发展,嵌入式操作系统在越来越多的领域发挥着重要的作用,目前已成为产品技术水平的标志之一。其中Linux因为其拥有开放性、多用户、多任务、良好的用户界面、丰富的网络功能、可靠的系统安全和良好的可移植等特性被广泛的应用到仪器测量设备中。
传统的磁场测量设备(持斯拉计、高斯计)普遍存在精度低(典型测量精度为1.5%)、操作不便等缺点。本文提出一种基于嵌入式Linux的中频磁场测量系统,它不但可以满足当前磁场测量数据采集的需要,还因为其嵌入了操作系统Linux,使具有可靠性好、升级方便的特点,既提高了磁场测量的准确性,又为仪器的功能升级带来便利。可应用于实验室仪器,医疗仪器,姿态控制,安全检测等需磁场检测的领域。
2 磁场测量系统的硬件结构
磁场测量系统在硬件结构上采用ARM9作为控制器,与信号放大、整流滤波、程控放大等硬件构成了整个磁场测量系统。而且,测量系统还搭配了USB、RS232、以太网通信接口,系统通讯能力强,可实现网络连网功能。其硬件结构如图1所示。
ARM9嵌入式处理器采用三星公司的$3C2410。S3C2410是基于ARM920T内核的16/32位RISC嵌入式微处理器,主要面向手持设备以及高性价比,低功耗的应用。它采用5级流水线和全性能的MMU,同时该芯片集成了大量的功能扩展单元,例如LCD控制器、I2C总线、触摸屏接口、USB接口等。强大的芯片功能简化了系统设计,不但缩小了系统体积,而且提高了系统的可靠性。
USB、RS232和以太网接口可为系统提供不同的通信方式,适合不同测量环境和条件,以太网接口还可实现系统联网功能。
在磁场测量系统中,可使用触摸屏简便地对系统进行控制,实现不同显示方式切换、参数设置和测量数据保存等功能。
磁场测量电压信号部分,由磁场传感器得到微弱的电压信号,经放大整流等措施后输入控制系统。
报警输出可实现用户自设定报警的上下限值,方便用户测量现场的监控。
3 磁场测量系统前端信号处理模块
磁场测量系统前端传感器采用的测量方法为电磁感应法。电磁感应法是将测量线圈置入交变磁场中,根据法拉第电磁感应定律在线圈的引线间会产生感应电动势,并且感应电动势的大小与穿过线圈的磁通量的大小成正比。感应电动势e为:
测量系统前端信号处理模块的结构如图2所示。
(1)为了实现多路磁场传感器的信号输入,设计中采用片选芯片74HCl5进行通道的选择。通过对74HCl53控制端S0,Sl输入不同的数据组合(00,1O,0l,11),输出端lY和2Y就可实现不同输入通道的选择。[page]
(2)在整个系统的电路设计中,前置放大电路的主要作用是将传感器输出的、和磁场强度成正比的微弱电压信号放大。根据其要求,设计的前置放大电路采用了差动放大的方式,电路如图3所示。它具有高共模抑制比、输入阻抗高、输出阻抗低、失调小、温漂小、线性好等优点。
(3)磁场测量系统对不同的测量对象进行测量时,磁场传感器的感应强度都会不同。要实现不同测量对象自适应量程的切换,必须设计一个放大倍数可调的模块,而且放大倍数的范围应较广。现采用BURR-BROWN公司的PGA202/203程控仪表放大器,该芯片无需外围芯片,而且PGA202与PGA203经级联可组成从l~8000倍的16种程控增益。放大范围可满足系统的需要。
(4)因磁场检测时会受到环境中其它外部磁场的干扰而输出偏移电压,所以在电路设计中设有自动调零电路,在每次仪器使用前进行自动校准。实现方法是在输入端增加一个开关,校准时输入直接接地,测量时输入接传感器。主控制器将接地时的输出记录在数据区中,并将此输出作为零点而实现自动调零。
(5)该仪器检测的是交变磁场,所以对磁场的频率检测是必需的。实现方法是将磁场检测信号通过一个过零比较器变成方波,方波经过二极管将正电压部分送至单片机的输入捕捉引脚进行频率检测。
总之,前端信号处理模块的设计关系到系统测量数据是否可靠和准确。在设计的过程中,遇到信号在程控放大倍数设置为1000的时候会出现失真的情况,究其原因,是器件PGA202的性能问题导致。所以必须根据器件的性能参数选择合适的放大倍数。
电压的检测也采用了在一秒的时间内取样N次去掉最大和最小值然后取平均值的方法减少测量误差。测量电压V为:
在系统设计时,也充分考虑了抗干扰的要求。在硬件的设计中,采取了同轴电缆作为传输媒质、模拟地与数字地分开、光电隔离、系统加屏蔽罩等措施。软件设计中加入数字滤波、定时自检等措施抗干扰。
4 嵌入式Liinux系统的设计
嵌入式Linux系统不是针对某个硬件平台而开发的,所以进行Linux移植时必须针对相应的硬件对Linux内核加以裁减、修改和补充。磁场测量系统采用的是基于ARM9内核的硬件平台,下面介绍该硬件平台下的Linux系统移植过程和方法。
4.1 建立交叉编译环境
在进行移植前,首先要建立开发平台的ARM—Linux交叉编译环境。linux下的交叉编译环境主要包括针对目标系统几部分:编译器gcc;二进制工具binutils:标准c库glibc;linux内核头文件。
4.2 启动代码的移植
启动代码主要完成硬件检测和系统引导,建立内存空间映射图,为正确调用操作系统内核做好准备。系统加电后,由引导代码进行基本的硬件初始化,然后把内核经映像装入内存运行。启动代码必须针对不同的硬件而设计,本测量系统选择了当前流行的U-BOOT引导系统进行了修改移植。
U-BOOT的启动具体可分为两个阶段,分别为硬件的初始化和内核调用的准备。U—BOOT为开源软件,可找到很多接近目标开发板的参考程序。本系统在参考韩国某公司开发的VIVI启动代码的基础上进行修改和移植,减少了开发时间且代码健壮性好。
4.3 Linux内核的移植
Linux内核的移植是整个嵌入式系统设计的关键部分。Linux内核移植需要完成内核与启动代码的衔接部分的移植以及硬件相关部分的移植,如CPU、中断控制器、定时器、内存控制器等的移植。根据磁场测量系统的硬件结构,Linux内核的移植分为以下四个步骤:
(1)首先是选择内核版本、建立交叉编译环境。本系统选择的Linux内核版本为2.4.18,交叉编译工具选择arm-1inux-gcc 3.3.2;
(2)然后是配置和编译内核,针对硬件对源码作必要的修改。①先修改根目录下的Makefile文件,分别指定目标平台为ARM和指定交叉编译器是arm-1inux-gcc 3.3.2;②接着对linux内核进行配置,此过程必须根据系统硬件和功能进行裁剪。进入linux内核目录输入命令make menuconfig,其配置方式为通过图形方式进行配置,对驱动程序进行裁剪;③配置完成后保存退出,输入Make命令,编译成功后会在arch/arm/boot目录中生成内核的镜像;
(3)接着制作根文件系统并挂载。要实现程序固化,还必须将程序和模块添加到根文件系统中。在程序的设计中,本系统主要是使用软件QT进行触摸屏界面的开发和相关功能的设计;
(4)最后是下载、调试内核并运行。
5 结语
电磁测量已广泛应用于各个行业,随着技术的发展和进步,对磁场测量系统的精度和扩展功能要求越来越高。本文的创新之处是将当前流行的嵌入式Linux系统和磁场测量技术结合起来,构建了一个系统功能丰富、易用性好且扩展功能强的智能化磁场测量系统。在实际应用中可提高测量系统的实时性和多任务处理的能力,符合当前测量发展的需要。
关键字:Linux 磁场测量 Linux移植
引用地址:基于嵌入式Linux的磁场测量系统的设计
随着科技的发展,嵌入式操作系统在越来越多的领域发挥着重要的作用,目前已成为产品技术水平的标志之一。其中Linux因为其拥有开放性、多用户、多任务、良好的用户界面、丰富的网络功能、可靠的系统安全和良好的可移植等特性被广泛的应用到仪器测量设备中。
传统的磁场测量设备(持斯拉计、高斯计)普遍存在精度低(典型测量精度为1.5%)、操作不便等缺点。本文提出一种基于嵌入式Linux的中频磁场测量系统,它不但可以满足当前磁场测量数据采集的需要,还因为其嵌入了操作系统Linux,使具有可靠性好、升级方便的特点,既提高了磁场测量的准确性,又为仪器的功能升级带来便利。可应用于实验室仪器,医疗仪器,姿态控制,安全检测等需磁场检测的领域。
2 磁场测量系统的硬件结构
磁场测量系统在硬件结构上采用ARM9作为控制器,与信号放大、整流滤波、程控放大等硬件构成了整个磁场测量系统。而且,测量系统还搭配了USB、RS232、以太网通信接口,系统通讯能力强,可实现网络连网功能。其硬件结构如图1所示。
ARM9嵌入式处理器采用三星公司的$3C2410。S3C2410是基于ARM920T内核的16/32位RISC嵌入式微处理器,主要面向手持设备以及高性价比,低功耗的应用。它采用5级流水线和全性能的MMU,同时该芯片集成了大量的功能扩展单元,例如LCD控制器、I2C总线、触摸屏接口、USB接口等。强大的芯片功能简化了系统设计,不但缩小了系统体积,而且提高了系统的可靠性。
USB、RS232和以太网接口可为系统提供不同的通信方式,适合不同测量环境和条件,以太网接口还可实现系统联网功能。
在磁场测量系统中,可使用触摸屏简便地对系统进行控制,实现不同显示方式切换、参数设置和测量数据保存等功能。
磁场测量电压信号部分,由磁场传感器得到微弱的电压信号,经放大整流等措施后输入控制系统。
报警输出可实现用户自设定报警的上下限值,方便用户测量现场的监控。
3 磁场测量系统前端信号处理模块
磁场测量系统前端传感器采用的测量方法为电磁感应法。电磁感应法是将测量线圈置入交变磁场中,根据法拉第电磁感应定律在线圈的引线间会产生感应电动势,并且感应电动势的大小与穿过线圈的磁通量的大小成正比。感应电动势e为:
测量系统前端信号处理模块的结构如图2所示。
(1)为了实现多路磁场传感器的信号输入,设计中采用片选芯片74HCl5进行通道的选择。通过对74HCl53控制端S0,Sl输入不同的数据组合(00,1O,0l,11),输出端lY和2Y就可实现不同输入通道的选择。[page]
(2)在整个系统的电路设计中,前置放大电路的主要作用是将传感器输出的、和磁场强度成正比的微弱电压信号放大。根据其要求,设计的前置放大电路采用了差动放大的方式,电路如图3所示。它具有高共模抑制比、输入阻抗高、输出阻抗低、失调小、温漂小、线性好等优点。
(3)磁场测量系统对不同的测量对象进行测量时,磁场传感器的感应强度都会不同。要实现不同测量对象自适应量程的切换,必须设计一个放大倍数可调的模块,而且放大倍数的范围应较广。现采用BURR-BROWN公司的PGA202/203程控仪表放大器,该芯片无需外围芯片,而且PGA202与PGA203经级联可组成从l~8000倍的16种程控增益。放大范围可满足系统的需要。
(4)因磁场检测时会受到环境中其它外部磁场的干扰而输出偏移电压,所以在电路设计中设有自动调零电路,在每次仪器使用前进行自动校准。实现方法是在输入端增加一个开关,校准时输入直接接地,测量时输入接传感器。主控制器将接地时的输出记录在数据区中,并将此输出作为零点而实现自动调零。
(5)该仪器检测的是交变磁场,所以对磁场的频率检测是必需的。实现方法是将磁场检测信号通过一个过零比较器变成方波,方波经过二极管将正电压部分送至单片机的输入捕捉引脚进行频率检测。
总之,前端信号处理模块的设计关系到系统测量数据是否可靠和准确。在设计的过程中,遇到信号在程控放大倍数设置为1000的时候会出现失真的情况,究其原因,是器件PGA202的性能问题导致。所以必须根据器件的性能参数选择合适的放大倍数。
电压的检测也采用了在一秒的时间内取样N次去掉最大和最小值然后取平均值的方法减少测量误差。测量电压V为:
在系统设计时,也充分考虑了抗干扰的要求。在硬件的设计中,采取了同轴电缆作为传输媒质、模拟地与数字地分开、光电隔离、系统加屏蔽罩等措施。软件设计中加入数字滤波、定时自检等措施抗干扰。
4 嵌入式Liinux系统的设计
嵌入式Linux系统不是针对某个硬件平台而开发的,所以进行Linux移植时必须针对相应的硬件对Linux内核加以裁减、修改和补充。磁场测量系统采用的是基于ARM9内核的硬件平台,下面介绍该硬件平台下的Linux系统移植过程和方法。
4.1 建立交叉编译环境
在进行移植前,首先要建立开发平台的ARM—Linux交叉编译环境。linux下的交叉编译环境主要包括针对目标系统几部分:编译器gcc;二进制工具binutils:标准c库glibc;linux内核头文件。
4.2 启动代码的移植
启动代码主要完成硬件检测和系统引导,建立内存空间映射图,为正确调用操作系统内核做好准备。系统加电后,由引导代码进行基本的硬件初始化,然后把内核经映像装入内存运行。启动代码必须针对不同的硬件而设计,本测量系统选择了当前流行的U-BOOT引导系统进行了修改移植。
U-BOOT的启动具体可分为两个阶段,分别为硬件的初始化和内核调用的准备。U—BOOT为开源软件,可找到很多接近目标开发板的参考程序。本系统在参考韩国某公司开发的VIVI启动代码的基础上进行修改和移植,减少了开发时间且代码健壮性好。
4.3 Linux内核的移植
Linux内核的移植是整个嵌入式系统设计的关键部分。Linux内核移植需要完成内核与启动代码的衔接部分的移植以及硬件相关部分的移植,如CPU、中断控制器、定时器、内存控制器等的移植。根据磁场测量系统的硬件结构,Linux内核的移植分为以下四个步骤:
(1)首先是选择内核版本、建立交叉编译环境。本系统选择的Linux内核版本为2.4.18,交叉编译工具选择arm-1inux-gcc 3.3.2;
(2)然后是配置和编译内核,针对硬件对源码作必要的修改。①先修改根目录下的Makefile文件,分别指定目标平台为ARM和指定交叉编译器是arm-1inux-gcc 3.3.2;②接着对linux内核进行配置,此过程必须根据系统硬件和功能进行裁剪。进入linux内核目录输入命令make menuconfig,其配置方式为通过图形方式进行配置,对驱动程序进行裁剪;③配置完成后保存退出,输入Make命令,编译成功后会在arch/arm/boot目录中生成内核的镜像;
(3)接着制作根文件系统并挂载。要实现程序固化,还必须将程序和模块添加到根文件系统中。在程序的设计中,本系统主要是使用软件QT进行触摸屏界面的开发和相关功能的设计;
(4)最后是下载、调试内核并运行。
5 结语
电磁测量已广泛应用于各个行业,随着技术的发展和进步,对磁场测量系统的精度和扩展功能要求越来越高。本文的创新之处是将当前流行的嵌入式Linux系统和磁场测量技术结合起来,构建了一个系统功能丰富、易用性好且扩展功能强的智能化磁场测量系统。在实际应用中可提高测量系统的实时性和多任务处理的能力,符合当前测量发展的需要。
上一篇:用DLL实现自动测试存储数据的纠错处理
下一篇:玻璃转子流量计选型须知
推荐阅读最新更新时间:2024-03-30 22:52
基于S3C2440的嵌入式Linux驱动——MMC/SD子系统解读(一)
本文的内容基于如下硬件和软件平台: 目标平台:TQ2440 CPU:s3c2440 内核版本:3.12.5 基于SD规范4.10,即《SD Specifications Part 1 Physical Layer Simplified Specification Version 4.10》。 一、MMC子系统构架 待写。。。 二、主要数据结构 待写。。。 三、MMC子系统初始化 首先看看子系统是如何初始化的,完成哪些工作。 代码位于linux/drivers/mmc/core/core.c。 static int __init mmc_init(void) { int ret; /*
[单片机]
Linux平台下ARM-Linux交叉编译工具
以下是ubuntu平台下ARM的编译: 一、反汇编工具 arm-linux-objdump -D -S hello log //查看hello的汇编代码 二、ELF文件查看工具 arm-linux-readelf -a hello log //查看hello文件 arm-linux-readelf -d hello log //查看hello使用的动态库 三、调试工具 1.开发板运行 ./gdbserver 2.主机 arm-linux-gdb (gdb) target remote 完后就可以在主机上远程调试。 四、其他编译工具 1.arm-linux-as:编译A
[单片机]
基于tiny4412的Linux内核移植 -- MMA7660驱动移植(九-2)
平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本:Linux-4.4.0 (支持device tree) u-boot版本:友善之臂自带的 U-Boot 2010.12 (为支持uImage启动,做了少许改动) busybox版本:busybox 1.25 交叉编译工具链: arm-none-linux-gnueabi-gcc (gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29)) 摘要 上一篇 博文在tiny4412上移植了MMA7660驱动程序,使用的是exynos4
[单片机]
linux内核配置对U盘的支持 (for mini2440)
配置优盘 因为优盘用到了SCSI 命令,所以我们先增加SCSI 支持。在Device Drivers 菜单里面,选择SCSI devicesupport,按回车进入出现菜单,按空格键选择选项–SCSI device support,然后进入选择SCSI disk support,返回Device Drivers 菜单,再选择 USB support,按回车进入USB support 菜单,找到并选中“ * USB Mass Storage support”,另外,现在的优盘等移动存储器使用的大都是FAT/FAT32 格式的,因此我们还需要添加FAT32 文件系统的支持,在内核配置主菜单下依次选择如下菜单项: File syst
[单片机]
RTOS设备驱动向嵌人式Linux的移植
Linux暴风雨般占领了嵌入式系统市场。分析家指出,大约有1/3到1/2的32/64位新的嵌入式系统设计采用了Linux。嵌入式Linux已经在很多应用领域显示出优势,比如SOHO家庭网络和成像/多功能外设。在(NAS/SAN)存储,家庭数字娱乐(HDTV/PVR/DVR/STB),和手持设备/无线设备,特别是数字移动电话更获得大幅度发展。 嵌入式Linux新应用不会凭空从开发者的头脑中冒出来,大部分项目都是由成千上万行,甚至数百万行的代码组成。成千上百的嵌入式项目已经成功地将现有的其它平台的代码移植到Linux下,比如WindRiverVxWorks和pSOS,VRTX,Nucleus和其它RTOS。这些移植工作有着重要的
[工业控制]
风河推出兼容Yocto的运营商级Linux规范
• 运营商级风河Linux规范是首款兼容Yocto的CGL注册产品。 • 新规范为客户提供了一个可直接交付的交钥匙平台。 • 兼容Yocto提高了跨平台兼容性及部件间的互操作性。 全球领先的嵌入式和移动软件提供商风河公司®近日宣布,该公司针对最新版风河Linux推出运营商级(CG)Linux规范。该规范已正式向Linux基金会注册,这也是首款基于Yocto的运营商级Linux 规范。 以Wind River Linux为基础,Wind River Linux CG 规范为客户提供了一个可直接交付的“交钥匙”平台。为了满足更多特定市场的特殊需求,风河还将继续开发其他Wind River Linux 规范,同时还可将这些不同的规范
[嵌入式]
Arm Linux系统调用流程详细解析SWI
Unix系统通过向内核发出系统调用(system call)实现了用户态进程和硬件设备之间的大部分接口。系统调用是操作系统提供的服务,用户程序通过各种系统调用,来引用内核提供的各种服务,系统调用的执行让用户程序陷入内核,该陷入动作由swi软中断完成。 应用编程接口(API)与系统调用的不同在于,前者只是一个函数定义,说明了如何获得一个给定的服务,而后者是通过软件中断向内核发出的一个明确的请求。POSIX标准针对API,而不针对系统调用。Unix系统给程序员提供了很多API库函数。libc的标准c库所定义的一些API引用了封装例程(wrapper routine)(其唯一目的就是发布系统调用)。通常情况下,每个系统调用对应一
[单片机]
嵌入式Linux系统中的GUI系统的研究与移植
摘要:针对嵌入式Linux系统中几种常见的GUI(Graphic User Interface)系统,讨论嵌入式GUI实现的底层技术方式;详细分析Microwindows、MiniGUI、Qt/Embedded等三种GUI的实现特点、体系结构、API接口。结合这三种嵌入式GUI在以Motorola i,MX1为核心的实际应用系统中移植开发的问题,讨论移植技术与中文化技术。
关键词:嵌入式Linux GUI 应用与移植 中文化
引言
嵌入式GUI为嵌入式系统提供了一种应用于特殊场合的人们交互接口。嵌入式GUI要求简单、直观、可靠、占用资源小且反应快速,以适应系统硬件资源有限的条件。另外,由于嵌入式系统硬件本身的特殊性,嵌入式G
[嵌入式]