ARM论文Word下载.docx
- 文档编号:21857512
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:10
- 大小:387.64KB
ARM论文Word下载.docx
《ARM论文Word下载.docx》由会员分享,可在线阅读,更多相关《ARM论文Word下载.docx(10页珍藏版)》请在冰豆网上搜索。
目前的嵌入式系统的核心往往是一个只有几K到几十K微内核,需要根据实际的使用进行功能扩展或者裁减,但是由于微内核的存在,使得这种扩展能够非常顺利的进行。
ARM是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。
技术具有性能高、成本低和能耗省的特点。
适用于多种领域,比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等。
ARM的商业模式主要涉及IP的设计和许可,而非生产和销售实际的半导体芯片。
ARM向合作伙伴网络(包括世界领先的半导体公司和系统公司)授予IP许可证。
这些合作伙伴可利用ARM的IP设计创造和生产片上系统设计,但需要向ARM支付原始IP的许可费用并为每块生产的芯片或晶片交纳版税。
除了处理器IP外,ARM还提供了一系列工具、物理和系统IP来优化片上系统设计。
正因为ARM的IP多种多样以及支持基于ARM的解决方案的芯片和软件体系十分庞大,全球领先的原始设备制造商(OEM)都在广泛使用ARM技术,应用领域涉及手机、数字机顶盒以及汽车制动系统和网络路由器。
当今,全球95%以上的手机以及超过四分之一的电子设备都在使用ARM技术。
二、嵌入式linux简介
嵌入式linux是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。
嵌入式linux既继承了Internet上无限的开放源代码资源,又具有嵌入式操作系统的特性。
嵌入式Linux的特点是版权费免费;
购买费用媒介成本技术支持全世界的自由软件开发者提供支持网络特性免费,而且性能优异,软件移植容易,代码开放,有许多应用软件支持,应用产品开发周期短,新产品上市迅速,因为有许多公开的代码可以参考和移植,实时性能RT_LinuxHardhatLinux等嵌入式Linux支持,实时性能稳定性好安全性好。
Linux的大小适合嵌入式操作系统——Linux固有的模块性,适应性和可配置性,使得这很容易做到。
另外,Linux源码的实用性和成千上万的程序员热切期望它用于无数的嵌入式应用软件中,导致很多嵌入式Linux的出现,包括:
Embedix,ETLinux,LEM,LinuxRouterProject,LOAF,uCLinux,muLinux,ThinLinux,FirePlug,Linux和PizzaBoxLinux。
三、硬件电路设计
本设计是基于三星公司的ARM11芯片(S3C6410芯片)作为主处理器。
该CPU是基于ARM1176JZF-S核设计,支持SD卡启动,只需将bootloader烧写至SD卡,就可以从SD卡启动。
完成程序烧写功能。
系统框图如下:
该S3C6410通用异步接收和发送器(UART)提供了四个独立的异步串行I/O(SIO)端口。
每个异步串行I/O(SIO)端口通过中断或者直接存储器存取(DMA)模式来操作。
换句话说,UART是通过产生一个中断或DMA请求,在CPU和UART之间传输数据的。
该UART使用系统时钟的时间可以支持的比特率最高为115.2kb/s。
如果一外部设备提供ext_uclk0或ext_uclk1,则UART可以以更高的速度运行。
每个UART的通道包含了两个64字节收发FIFO存储器。
该S3C6410的UART包括可编程波特率,红外线(IR)的传送/接收,一个或两个停止位插入,5位,6位,7位或8位数据的宽度和奇偶校验。
串口寄存器,以通道0为例:
四、软件环境搭建及系统移植
(1)解压安装U-boot源代码
(2)解压安装Linux内核源代码
(3)解压安装目标文件系统
(4)解压安装嵌入式图形系统qtopia源代码
(5)配置和编译U-boot
(6)配置和编译内核(Kernel)
(7)制作目标板文件系统映象
(8)下载U-boot
(9)下载linux内核
(10)下载qtopia图形界面
五、串口通信应用程序设计
要进行串口通讯,首先要打开串口设备,使用Linux下的open函数即可打开,打开串口设备后,还
需要用tcsetattr来设置波特率等串口属性,代码如下所示:
intopenSerialPort()
{
intfd=-1;
constchar*devName="
/dev/ttySAC2"
;
fd=:
:
open(devName,O_RDWR|O_NONBLOCK);
if(fd<
0){
return-1;
}
termiosserialAttr;
memset(&
serialAttr,0,sizeofserialAttr);
serialAttr.c_iflag=IGNPAR;
serialAttr.c_cflag=B115200|HUPCL|CS8|CREAD|CLOCAL;
serialAttr.c_cc[VMIN]=1;
if(tcsetattr(fd,TCSANOW,&
serialAttr)!
=0){
return-1;
}
returnfd;
}
上
述代码中打开的串口设备文件名为/dev/ttySAC2,并设置波特率为115200,然后将Databits改为8。
要对串口设备进行读写,使用Linux标准i/o函数read和“abcd”,4)往串口设备写abcd时,PC端的终端上会显示abcd,同理,当在PC端上输入字符时,使用read(fd,buff,sizeofbuff)来读取PC端发送过来的字符。
在使用open方法打开串口并设置好属性后,可以使用Qt的类QSocketNotifier来监听串口是否有数据可读,它是事件驱动的,配合Qt的signal/slot机制,当有数据可读时,QSocketNotifier就会发射ativated信号,你只需要创建一个slot连接到该信号即可,代码如下所示:
m_fd=openSerialPort();
if(m_fd<
QMessageBox:
warning(this,tr("
Error"
),tr("
Failtoopenserialport!
"
));
return;
m_notifier=newQSocketNotifier(m_fd,QSocketNotifier:
Read,this);
connect(m_notifier,SIGNAL(activated(int)),this,SLOT(remoteDataIncoming()));
在上述代码中,我们首先使用上面封装的openSerialPort函数打开串口并配置串口属性,接着我们用m_fd和QSocketNotifier:
Read作为参数构造了一个QSocketNotifier的实例,QSocketNotifier:
Read参数表示我们需要关心串口的可读状态,最后将QSocketNotifier实例的activated信号连接到remoteDataIncomingslot,当有数据可读时,remoteDataIncomingslot会被调用。
下面是remoteDataIncomingslot的代码,它的代码比较简单,只是调用read函数读取串口数据,然后将数据显示到界面上:
voidTMainForm:
remoteDataIncoming()
charc;
if(read(m_fd,&
c,sizeofc)!
=1){
Receiveerror!
return;
m_receiveEdit->
insert(QString(QChar(c)));
使用designer工具设计图形界面:
Qt/Qtopia都带有designer工具,可以设计所见即所得的图形界面,我们现在就使用designer工具来设计serialport程序的主界面,主界面将保存成名为main_form_base.ui的ui文件(这种类型的文件在编译时会被uic编译器解析,并生成C++代码)
创建三个源代码文件,一个是头文件main_form.h,一个是源代码文件main_form.cpp,一个是main.cpp。
Main.cpp,代码如下:
#include"
main_form.h"
#include<
qtopia/qpeapplication.h>
QTOPIA_ADD_APPLICATION("
serialport"
TMainForm)
QTOPIA_MAIN
main_form.h代码如下:
#if!
defined(__MAIN_FORM_H__)
#define__MAIN_FORM_H__
main_form_base.h"
qsocketnotifier.h>
classTMainForm:
publicTMainFormBase{
Q_OBJECT
public:
TMainForm(QWidget*parent=0,constchar*name=0,WFlagsf=WType_TopLevel);
virtual~TMainForm();
private:
intopenSerialPort();
privateslots:
voidsendButtonClicked();
voidremoteDataIncoming();
intm_fd;
QSocketNotifier*m_notifier;
};
#endif
Main_form.cpp代码如下:
TMainForm:
TMainForm(QWidget*parent,constchar*name,WFl
f):
TMainFormBase(parent,name,f),m_notifier(0)
}
~TMainForm()
if(m_notifier){
deletem_notifier;
m_notifier=0;
if(m_fd>
:
close(m_fd);
m_fd=-1;
sendButtonClicked()
QStringtext(m_sendEdit->
text())
if(text.isEmpty()){
write(m_fd,text.latin1(),text.length());
m_sendEdit->
setText("
);
intTMainForm:
openSerialPort()
fd=:
if(fd<
0){
termiosserialAttr;
memset(&
serialAttr.c_iflag=IGNPAR;
serialAttr.c_cflag=B115200|HUPCL|CS8|CREAD|CLOCAL;
serialAttr.c_cc[VMIN]=1;
returnfd;
remoteDataIncoming()
交叉编译serialport程序
编译完成后,在serialport下生成了serialport可执行文件,把它拷贝到SD卡,然后将SD插到6410开发板上,在串口终端上输入以下命令将可执行文件拷贝到开发板上的/opt/Qtopia/bin/目录下。
运行串口通信应用程序。
六、设计心得
经过这次基于GUI的嵌入式串口通信程序设计,我初步掌握了嵌入式系统移植,QT编程。
虽是一个简单功能的串口通信,这次的设计并不简单,我了解到软件工程师与嵌入式软件工程师的区别,作为嵌入式软件的编写者,务必时刻做到软件与硬件相结合,只有硬件环境合适,软件才能正常运行。
嵌入式的研究任重而道远,但同时充满着探讨学问的乐趣,我会坚持学习下去。
纸上得来终觉浅,要想把从课本上学到的只是转化为自己的,就必须自己亲自动手实践。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM 论文