|
|
ARM应用相关论文的13篇参考文献摘录与分析 发布时间:2019-06-12 21:33:11
ARM应用相关论文的13篇参考文献摘录与分析
-
ARM 嵌入式系统C 语言编程
在无操作系统支持的嵌入式系统软件中,系统引导(BOOT) 、驱动程序、动态内存管理、I/O、通信以及应用软件等的编写,需要结合采用汇编语言(约占10 %) 和C 语言(约占90 %)系统引导(BOOT) :
本部分完成系统初始化工作,用汇编语言实现,包括硬件初始化、栈寄存器的设置、全局变量的初始化或清0、RAM中运行的模块的加载、堆参数的初始化。系统引导模块完成各种初始化工作后,用一条跳转指令进入C 的主入口Main ,控制权从此移交给了C 应用程序
内存管理:
C 语言中动态内存分配与释放主要由malloc 和mfree 两个标准库函数实现。malloc 从系统空闲内存中分配合适的内存块,mfree 函数完成内存块的回收。这两个函数一般需要操作系统内核的支持,但在ARM 裸平台上,不能直接调用。为此编写了malloc 和mfree 两个函数,实现动态存储管理的功能。嵌入式系统里,代码区位于只读存储器(如Flash) 中,数据区和栈区则位于RAM中,因此代码区和数据区一般并不相连。数据区和栈区是分开的,内存动态管理,需要维护两张全局表,一张是可利用空间表(avail list) ,管理空闲内存块的信息,另一张是已分配空间表(used list) ,管理占用内存块,用双向循环链表实现,三种不同的分配策略,即首次拟合法、最佳拟合法和最差拟合法
系统I/ O:
把LCD 作为字符型终端时,一个关键点是定义好光标
驱动程序:
外围硬件设备一般通过中断与CPU 进行通信中断处理程序的速度对整个系统的性能影响是很大的。这些模块应该直接用汇编语言编写,并尽可能优化算法
应用程序:
凡是由需操作系统支持的标准库函数均不能使用,除非自己编写(如malloc 和mfree)
例如:int 3 buf ;
if ( (buf = malloc (2048 3 sizeof (int) ) ) = = NULL)
return ERROR;
P3 other processing 3P
mfree (buf) ;
坚决避免使用递归函数!使用malloc 函数时要注意两点:一是要检查返回值是否为0 ;二是要适时调用mfree 函数释放内存
2.基于ARM9嵌入式的多功能无损检测仪
硬件以ARM920T核的S3C2410X嵌入式CPU作为核心器件,主要包括存储器扩展电路、传感器检测及信号转换电路、LCD显示电路、键盘接口电路、通信接口电路、PLL精确测时电路及声光报警电路
LCD显示电路:
S3C2410X中内置了LCD 控制器,它具有将显示缓存(在系统存储器中)中的LCD图像数据传输到外部LCD驱动电路的逻辑功能,支持灰度LCD和彩色LCD。检测仪中所使用的LCD显示屏是8寸16 bit真彩屏,在S3C2410X中内置的LCD控制器驱动经4块 74HC245 驱动芯片就可实现S3C2410X与LCD显示屏的接口
检测系统的模块化设计:
软件设计采用了当前嵌入式开发流行的三层架构体系:
(1)面向硬件的驱动层:主要提供硬件的启动、关闭及调节参数,如LCD驱动程序、A /D驱动程序、串行口驱动程序、CAN总线驱动程序、A /D转换器驱动程序等;
(2)面向控制的系统层:主要提供对驱动层的功能调用并向用户层提供接口调用;
(3)用户层:用户可通过一系列的函数接口,包括对不同传感器的信号采集模块、数字信号处理模块、各种检测的算法及解决方案模块等,以达到对零件或材料的无损检测。另外,检测仪系统采用了基于模块化的设计思想以利于必要时的升级与替代。基于ARM9的多功能无损检测仪采用了嵌入式Linux平台开发,在对Linux的移植时定制内核、定制用户程序、编译Linux(把应用程序和Linux内核一起编译) 、烧写映象文件及运行。由于整个过程比较复杂,涉及到汇编程序、C语言程序、驱动程序、程序调试等
3.基于ARM 的温度控制系统的设计
系统的显示采用LCD,设计液晶显示器和控制电路时,必须提供电源驱动、偏压驱动以及LCD 显示控制器。由于S3C44B0X 本身自带LCD 控制器,所以控制电路的设计可以省去显示控制电路,只需进行电源驱动和偏压驱动的电路设计。本系统选用的液晶屏为GPG1624UWE1 单色16 级灰度的2.7 寸液晶屏,与S3C44B0X 采用4 位单扫描方式连接。此液晶屏的驱动电源是22.6V,这里采用MC34063A 电源管理模块,通过R8调节将5V的电压升至22.6V 以提供液晶显示屏的驱动电源,如图3 所示;偏压电源由系统升压后的电源分压得到,LM324 用来稳定电压、增强带载能力,如图4 所示。
4. 基于嵌人式ARM的LCD显示接口的设计
在Linux操作系统下, 基于帧缓冲的LCD驱动程序的实现方法
S3c2410内置的LCD控制器支持单色,,彩色STNLCD屏和彩色TFTLCD屏,本设计是夏普公司的TFT-LCD模块LQ080V3DG01作为显示器, 该模块具有640*480的分辨率、18位的颜色深度, 与S3c2410的LCD接口直接相连。
控制器用来传输视频数据和必要的控制信号。控制器的功能是产生显示驱动信号, 驱动显示器。通过读写一系列的寄存器完成对它的配置。S3c2410中的LCD控制器可支持单色、彩色显示器。图2所示为S3c2410控制器内部的逻辑结构, REGBANK是LCD控制器的寄存器组,用来对LCD的各项参数进行设置,LCDCDMA是控制器专用的DMA信道,负责将视频资料从系统总线上取出来,VIDPRCS接受从LCDCDMA来的视频数据并在将其改变到合适数据格式后经VD[23:0]将之送到LCD驱动器,TIMEGEN由可编程逻辑组成,以支持不同LCD驱动器的接口时序和速率的不同要求。TIMEGEN产生VSYNC、HSYNC、VCLK、VDEN信号等。
控制寄存器内有寄存器LCDCON1-5。它与模块LQ080V3DG01的接口设置如下:
5. ARM嵌入式系统的LCD驱动设计
6. 基于单片机的监测数据无线传输装置设计与实现
无线收发采用PTR2000模块,经过单片机采集、处理并传送到串行口,经PTR2000调制成无线信号发送出去;在监测站端, PTR2000接收监测点PTR2000发射的无线信号,经过解调、CRC校验等处理,再经过MAX232电平转换,传输给监测站端的监测计算机,经计算机处理后显示、存储并作为控制动作的依据。
PTR2000无线数据传输模块采用nRF401芯片,FSK调制/解调技术,最高通信速率可达19200b/s,TTL电平可直接与单片机连接,具有较强的抗干扰能力,其引脚说明如下: 1、VCC,正电源, 2. 7~5. 25V; 2、CS,频道选择, CS=0选择工作频道1(433.92MHz),CS=1选择频道2(434. 33MHz); 3、DO,数据输出; 4、DI,数据输入; 5、GND,地; 6、PWR,节能控制, PWR=0低功耗待机, PWR=1正常工作; 7、TXEN,发射接收控制,TXEN=1发射状态,TXEN=0接收状态。系统中监测点无线传输模块设置为频道1工作,正常工作于发射状态。监测点硬件电路部分原理图如图2所示。
监测站端硬件电路设计比较简单,主要涉及到TTL电平串口数据到RS232电平串口数据的转换。其简要原理图如图4所示。
监测站端程序设计主要涉及到计算机程序编制,接收串口数据并处理,采用VB编程语言,利用MSComm控件实现对串口数据的实时读取和处理
7.基于无线传输且带USB接口的数据采集盒的设计
本文提出了一种解决上述问题的方法并设计了一种新的智能化、应用范围广的基于无线传输且带USB接口的数据采集系统。接到主机的数据采集板采用Silabs公司生产的一种带USB接口的微控制器C8051F320作为核心芯片。完成后的数据采集系统具有精度高、功耗低、体积小、抗干扰能力强等特点。
无线数据传输可采用建立专用无线数传系统或借用GSM、GPRS、CDMA等公共网信息平台的方法。对于使用GSM、GPRS、CDMA等公共网信息平台的方法,不如无线专用网简单易用,而且受公网业务开通状况及信号覆盖范围的影响,能否在某处使用,完全取决于运行商的系统建设情况,不如无线专网灵活,另外它的运行费用较高,GPRS是按流量计费,一些无用的信息也会被计费,在节假日时公网系统的负荷会达到高峰(如短信、彩信等成倍增长),系统及网络堵塞严重,信息不畅,不能及时发送或收到有用信息,实时性较差。本文中拟采用ISM通用数传频率433 MHz的无线数传模块传送采集到的数据,成本较低且适应性较强。本文无线传输部分采用带UART接口的无线数传模块实现,核心芯片为CHIPCON公司生产的CC1020无线收发芯片,利用ISM通用数传频率433 MHz作为传输信道。
采集板的原理图,提供了P2.0到P2.3口上的4个按键作为用户设定使用,P2.4和P2.5作为LED指示灯可用于指示电路板工作状态,S1为复位按键,J4为调试用JTAG接口,通过带USB接口的EC-5串行适配器和Silabs提供的IDE调用KeilC51程序可完成系统的在线调试以及固件程序的写入和擦出。通过J2和J8以及固件设定可调整系统使用USB供电或者外部5 V电源供电,用片内稳压器将VREGIN脚提供的5 V电源转化为VDD脚上的3 V电源以满足其它部件供电。因为USB接口提供的最大电流为500 mA所以当系统功率较大时应使用外部5 V电源供电。J6接口为外接无线数传模块接口。J3为USB接口。
8. 矿井下实时温度监测和无线传输系统的设计与实现(和6一样的模块)
无线数据传输模块PTR2000实现了人机交互控制
9.嵌入式Linux挑战与发展并存
了解Linux的好文章
10. 嵌入式Linux系统的研究及其在串口通信中的应用
系统内核的分析:
Linux系统使用了单一内核结构,即操作系统中所有的系统相关功能都被封装在内核中。程序通过一套称作系统调用(SystemCall)的界面访问内核结构。在Linux中,可以动态装人和卸载内核中的部分模块。Linux内核由5部分组成:进程管理、内存管理、文件系统管理、进程间通信和网络接口。典型的嵌人式Linux操作系统:第一类有ucLinux等,它是为了支持没有MMU(内存管理单元)的处理器而对标准Linux作出的修正。林CUn以保留了Linux的大多优点:稳定、良好的移植性,优秀的网络功能,对各种文件系统的支持,以及标准丰富的API等。第二类是将Linux开发成实时系统尤其是硬(Firm)实时系统,应用于一些关键的控制场合,如RTLinux。
嵌入式平台及开发环境的建立:
HFRK2410开发板是基于三星公司53C2410高性能ARM处理器的嵌人开发平台,CPU采用S3C2410ARM92oT。开发过程:Linux下建立交叉编译器,在window,操作系统中用ADS开发工具实现启动程序,在Linux操作系统下,用交叉编译器进行Linux内核、库函数及应用程序的编译。
BootLoader代码分析:
嵌人式系统中,Boot肠ader是在操作系统内核或用户应用程序运行之前运行一段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核或用户应用程序准备好正确的环境。大多数Boot肠ader都包含两种不同的操作模式:“启动加载”模式和“下载”模式。启动加载(Boot肠ading)模式:也称为“自主”模式。即Boot助ader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。这种模式是Boot肠ader的正常工作模式,在嵌人式产品发布的时候,BootLoader显然必须工作在这种模式下。下载(Downfoading)模式:在这种模式下,目标机上的Boot肠ader将通过串口连接或网络连接等通信手段从主机下载文件。从主机下载的文件通常首先被Boot肠ader保存到目标机的RAM中,然后再被Boot肠ader写到目标机上的nash类固态存储设备中。Boot肠ader的这种模式通常在第一次安装内核与根文件系统时被使用;此外,以后的系统更新也会使用Boot玩ade:的这种工作模式。工作于这种模式下的Boot助ade:通常都会向它的终端用户提供一个简单的命令行接口。
11. 森林环境因子的自动监测和无线传输
传输模块方式
12. 一种基于无线传输的分布式数据采集和控制系统
以AT89C2051单片机为核心,采用运算放大器LM324、TLC1549 10 b串行A/D转换器和深圳友讯达公司生产的FC 201E无线数传电台,实现了把从多路传感器采集来的信号,经过一系列的处理传到PC机上,从而构成了由单片机和PC机组成的分布式数据采集和控制系统
通信协议
13. 基于ARM9处理器的嵌入式开发平台的设计与实现
王成 大连理工大学研究生网络学刊,2005.
移植的概念
在同一个硬件平台上可以嵌入不同的嵌入式操作系统,就好比PC机既可以安装Windows又可以安装Linux一样。同样,有些操作系统经过移植后可以运行在不同的硬件平台上。如果一个系统可以在不同硬件平台上运行,那么这个系统就是可移植的。使某一个平台的代码运行在其它平台上的过程就叫做移植。本设计中使用的Linux操作系统就可以通过移植,使之运行在ARM、PowerPC、M68k等多种硬件平台上。为什么要进行移植呢?在Linux系统内核代码中有acrh目录,其中包含了不同平台的代码,arch目录中的代码的确是为了多平台设计并使用的,与体系结构相关的代码都存放在arch<architecture>/和include/asm-<architecture>/目录中,<architecture>是Linux支持的体系结构的简称。比如说,ARM体系结构对应的简称是arm。与这种体系结构相关的代码都存放在arch/arm/以及include/asm-arm/目录下。众所周知,嵌入式系统是“硬件可裁剪”的,因此工程师设计的硬件电路会有所不同,从而这些代码可能无法正确运行(比如内核解压的地址不同),这里必须要做的就是结合本设计的硬件电路,对已有的内核代码进行修改移植。
Bootloader的功能
嵌入式系统的初始化、加载过程和PC机在原理上是一样的,因此在一个嵌入式系统中需要设计者提供一个与BIOS功能相类似的软件通常叫做Bootloader (引导加载程序),是系统上电后运行的第一段代码。一般它只在系统启动时运行非常短的时间,但对于嵌入式系统来说,这是一个非常重要的系统组成部分。在基于ARM的嵌入式系统中,整个系统在上电或复位时通常都从地址ox00000000处开始执行,而在这个地址处安排的通常就是系统的Bootloader。通过这段小程序可以初始化硬件设备,建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
Boot1oader的启动大多数都分为两个阶段。第一个阶段主要包括依赖于CPU体系结构的硬件初始化代码,通常都用汇编语言来实现。这个阶段的任务有:
(1)基本硬件设备初始化(屏蔽所有中断、关闭处理器内部指令/数据cache等)
(2)为第二阶段贮备RAM空间
(3)如果是在某个固态存储媒质中,则复制Bootloader的第二阶段代码到RAM
(4)设置堆栈
(5)跳转到第二阶段的C程序入口点
第二阶段通常用C语言完成,以便实现更复杂的功能,也使程序有更好的可读性和移植性。这个阶段的任务有:
(1)初始化本阶段要使用到的硬件设备
(2)检测系统内存映射
(3)将内核映象和根文件系统映象从Flash读到SDRAM
(4)为内核设置启动参数
(5)调用内核
Linux内核结构
Linux内核主要由5个子系统组成:进程调度、内存管理、虚拟文件系统、网络接口、进程间通信。
本设计中使用的是2.4.18版本的Linux内核。一般在Linux系统中的/usr/src/Linux-*.*.*(*.*.*代表内核版本,如2.4.18)目录下就是内核源代码。Linux内核非常庞大,包括驱动程序在内有数百兆之多。
/arch子目录包含了所有硬件结构特定的内核代码。如i386,alpha和arm
/drivers子目录包含了内核中所有的设备驱动程序,如usb和sound
/fs子目录包含了所有的文件系统的代码。如ntfs,ext3和jffs2等
/include子目录包含了建立内核代码时所需的大部分库文件,也包括了不同平台需要的库文件。比如,asm-arm是arm平台需要的库文件
/init子目录包含了内核的初始化代码,内核从此处工作
/ipc子目录包含了进程间通信代码
/kemel子目录包含了主内核代码
/mm子目录包含了所有内存管理代码
/net子目录包含了和网络相关的代码。如atm,ipv6等
一般在每个目录下都有一个depend文件和一个Makefile文件。这两个文件都是编译时使用的辅助文件。其中Makefile文件中指出了编译时需要用到的编译器,也是移植内核过程中不可缺少的。
根目录的移植
根目录下需要修改Makefile文件,这个Makefile文件的任务有两个:产生vmlinux文件和产生内核模块。为了达到此目的,Makefile将递归进入到内核的各个子目录中,分别调用位于这些子目录中的Makefile。内核如何编译是根据Makefile文件的指示进行的,可以在这个文件中指定使用的编译器等信息。Makefile用来组织内核的各模块,记录了各模块间的相互联系和依赖关系。打开最上层目录下的Makefile文件,这个文件中需要修改的内容包括以下两方面:
指定目标平台 指定交叉编译器
acrh目录的移植
|
|
|
|