LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1023|回复: 0

我们一起来学习嵌入式系统

[复制链接]
发表于 2005-1-13 09:58:51 | 显示全部楼层 |阅读模式
我学习的一些笔记
第一篇: 嵌入式系统的简介
                   第一节:简介
  嵌入式处理器的寻址空间一般为64K-16M,处理器的速度为0.1-2000MIPS.从功能上看,用于嵌入式系统的嵌入式处理器主要分为三类:嵌入式微处理器(EMPU)、嵌入式微控制器(MCU)、嵌入式DSP。
 嵌入式外设
  存储器:在嵌入式系统中存储数据和功能的部件称为存储器。按存储器所处地位置可分为,可把存储器分为内部存储器(位于嵌入式处理器内部)和外部存储器(位于嵌入式处理器外部)。由于内部存储器处于处理器内部,所以处理速度快。
  通信接口设备:用于不同设备之间的数据交换。常见的接口有:串行接口(UART)、usb接口、以太网接口、IEEE1394接口、蓝牙接口、红外线接口。但是最常用的是串行接口,它以串行方式一位一位地发送和接收数据,UART硬件接收到这些位之后,会把这些位转换成字节,并存储到缓冲区中,以便进一步处理。
  在嵌入式系统中常用的处理器
   ARM系列、MIPS系列
                   第二节:嵌入式软件系统
何谓嵌入式操作系统就是支持嵌入式系统工作的操作系统。嵌入式系统一般具有实时特点。所谓实时系统,是指在这种系统中,一个优先等级高的任务能够获得立即的、没有延迟的服务,不需要等候任何其它优先级低的任务,而且在它得到CPU的使用权后,它可以一直执行到工作结束或是有更高 等级的进程出现为止。在这里引用一篇文章中的一个对实时系统的定义‘指一个系统在执行时能够对外部发生的事务,在一定的时间采取响应’,可见高效的中断处理能力和高速的输入、输出能力是实时系统所必备的基本特征。
对于常见的嵌入式操作系统,在这里就不作介绍了,朋友们可以去网上找一找,有很多关于这方面的资料。
                   第三节:入门
对于嵌入式系统和系统软件级的开发需要计算机的知识比较多。计算机系统结构、操作系统等书籍是必读的书籍,但是实践也是最有效的方式。对于没有硬件设备的朋友,可以通过skyeye来模拟硬件平台进行学习和开发,关于这方面的内容,版主已经在帖子中做了介绍,可以看看学习一下。如果能结合一个项目进行边学习边开发,那是一个最好的方式。
第二篇:工欲善其事,必先利其器
                      第一节:GUN Tools开发工具
GUN Tools是linux环境下最主要的开发工具集,在嵌入开发中要会使用以下几类工具:编译开发工具、调试工具、软件工程工具。
                                  第二节:binutils开发工具
binutils是一组二进制工具程序集,包括addr2line,ar,gprof,nm,objcopy,opjdump,ranlib,size,strings,strip等。
ar软件用于建立、修改、提取归档文件。一个归档文件是包含多个被包含文件的单个文件,其结构保证了可以从中检索并得到原始的被包含文件。ar可以通过使用命令行选择控制其行为。可以用如下命令看帮助信息。
$ar -h
还是用一个例子来说明一下吧
//cheng.c
int Cheng(int a,int b)
{
int jieguo;
jieguo=a*b;
return jieguo;
}
//he.c
int He(int a,int b)
{
int jieguo;
jieguo=a+b;
return jieguo;
}
用文本编辑器编辑两个C文件,执行下列命令
$gcc -c cheng.c he.c
生成两个文件cheng.o he.o
$ar rv libtest.a he.o cheng.o
生成一个libtest.a库文件,将这个库文件复制到/usr/lib目录中
再写一个C文件 ceshi.c
#include <stdio.h>
int main(int argc,char *argv[])
{
int a=8;
int b=3;
printf("a=%d\tb=%d\n",a,b);
int ji=Cheng(a,b);
printf("a*b=%d\n",ji);
int he=He(a,b);
printf("a+b=%d\n",he);
return 0;
}
执行下列命令:
$gcc -o test test.c -ltest
这些命令及程序,我已测试在redhat9.0下完全通过。边学边写,不妥之处望大家指正。我学习的书名为<源码开放的嵌入式系统软件分析与实践>陈渝、李明、杨晔老师著,在这里表示感谢这三位老师。
nm软件
该软件主要功能是列出目标文件序列中的符号,这样可以定位和分析执行程序和目标文件中的符号信息和它的属性。如果没有目标文件作为参数被列出,nm假定目标文件为‘a.out’。可以通过如下命令来查看它的帮助信息。
$nm -h
例:
$nm test.o
输出结果如下:
     U Add
00000000 T main
         U Minus
         U printf
命令nm test.o的输出说明了test.o定义了main函数,但没有定义Add,Minus,Printf函数符号。
objcopy软件
可以将一种格式的目标文件内容进行转换,并输出为另一种格式的目标文件。可以通过如下命令查看帮助信息。
$objcopy -h

$file test
我们可以看到如下信息
test: ELF 32-bit LSB executable ,Intel 80386,version 1 (SYSV), for GNU/Linux
2.2.5,dynamically linked (used shared libs), not stripped
表明这个文件是ELF格式,我们再输入下列命令,将其转换为srec格式
$objcopy -O srec test ts
这样就得到一个srec格式的ts文件。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表