oldstorm

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

嵌入式系统的定义:

以应用为中心、以计算机技术为基础、软硬件可裁剪、适用于应用系统,对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

主要特点是:嵌入、专用

 

SOC 特征:

1 实现复杂系统功能的VLSI;

VLSI是超大规模集成电路(Very Large Scale Integration)的简称,指几毫米见方的硅片上集成上万至百万晶体管、线宽在1微米以下的集成电路。由于晶体管与连线一次完成,故制作几个至上百万晶体管的工时和费用是等同的。大量生产时,硬件费用几乎可不计,而取决于设计费用。

2 采用超深亚微米工艺技术;

3 使用一个以上嵌入式CPU/DSP;

4 外部可对芯片进行编程;

5 主要采用第三方IP进行设计;

 

SoC是在一个芯片上由于广泛使用预定模块IP而得以快速开发的集成电路。

 

 ARM公司并不生产芯片,而是出售芯片技术授权。其合作公司针对不同需求搭配各类硬件部件,比如UART,SDI,I2C等,设计出不同的SoC芯片。

 

 ARM7系列的处理器没有内存管理单元(MMU)

在没有MMU的系统下,因为内核无法获得MMU所提供的有关内核的保护,事实上用户空间的程序是可以不受限制的访问内核空间的。从这个角度上来看,对于没有MMU的系统实际上用户空间和内核空间是不做区分的,如果一定要分用户空间和内核空间也只是形式上的。
没有mmu,整个内存是个线性分布。 逻辑地址就是物理地址,个个thread都是老大。。。谁都能影响到内核。。 例如,错误读写能挂起整个系统      
不能创建进程(只能创建线程)
   uClinux同标准Linux的最大区别就在于内存管理。标准Linux是针对有MMU的处理器设计的。在这种处理器上,虚拟地址被送到MMU,MMU 把虚拟地址映射为物理地址。通过赋予每个任务不同的虚拟—物理地址转换映射,支持不同任务之间的保护。对于uCLinux来说,其设计针对没有MMU的处理器,不能使用处理器的虚拟内存管理技术。
      uClinux不能使用处理器的虚拟内存管理技术(应该说这种不带有MMU的处理器在嵌入式设备中相当普遍)。
      uClinux仍采用存储器的分页管理,系统在启动时把实际存储器进行分页。在加载应用程序时程序分页加载。但是由于没有MMU管理,所以实际上 uClinux采用实存储器管理策略(real memeory management)。这一点影响了系统工作的很多方面。
      uClinux系统对于内存的访问是直接的,(它对地址的访问不需要经过MMU,而是直接送到地址线上输出),所有程序中访问的地址都是实际的物理地址。操作系统对内存空间没有保护(这实际上是很多嵌入式系统的特点),各个进程实际上共享一个运行空间(没有独立的地址转换表)。

 

ARM9系列微处理器有MMU和Cache 

 

uC/OS-II可以运行最多64个任务,调度方式为抢占式,即总是运行最高优先级的就绪任务。

 

Linux的缺点在于实时性,RTLinux达到了硬实时, TimeSys Linux提高了实时性。

主机与目标板结合的交叉开发模式。

windows的FAT32文件系统支持的最大文件只有4GB

/etc/apt/sources.list 配置软件源。

安装FTP:

sudo apt-get install vsftpd

/etc/vsftpd.conf 配置

sudo /etc/init.d/vsftpd restart  

 

安装SSH 

sudo apt-get install openssh-server

/etc/ssh/sshd_config 配置

安装NFS

sudo apt-get install nfs-kernel-server portmap  

/etc/exports 增加

/work/nfs_root *(rw,sync,no_root_squash)

sudo /etc/init.d/nfs-kernel-server restart

安装基本的开发环境

sudo apt-get install build-essential bison flex 

c函数库的man手册 sudo apt-get install manpages-dev , man read

 

export PATH=$PATH:/work/tools....

/etc/environment 修改PATH值

 

一个C/C++文件要经过预处理(preprocessing)、编译(compilation)、汇编(assembly)和链接(linking)4个步骤。

                             arm-linux-cpp-> .i       cc1->.s              arm-linux-as->ELF/OBJ   arm-linux-ld-> 目标文件

posted on 2014-02-28 00:16  oldstorm  阅读(153)  评论(0编辑  收藏  举报