第六章:嵌入式Linux开发入门

嵌入式系统的开发模式

交叉开发:在主机上开发编译,在目标平台上调试运行的开发模式

交叉编译:运行在主机上的编译器(GCC)编译程序产生目标机上运行的可执行程序的编译过程

嵌入式Linux系统的开发流程

1)在宿主机上面建立交叉开发所需的交叉编译环境:安装交叉编译工具cross-gcc,下载解压编译好的工具链并在用户主目录下的.bash_profile文件添加其路径到PATH变量。

2)在宿主机上利用交叉编译环境构造一个嵌入式Linux系统。Linux内核的开发主要根据实际需要进行内核裁剪和配置,然后用交叉编译生成内核的二进制文件映像,常用make menuconfig、make xconfig或make gconfig。

3)在嵌入式硬件系统上测试、运行构造好的嵌入式Linux系统。测试工作需要宿主机上通过远程终端(例如:串口终端仿真程序minicom)操作嵌入式开发板完成。

Busybox与根文件系统的构造

Busybox是构造文件系统最常用的一个软件工具包,集成了大量的工具集合常用命令(例如:ls,cp,ifconfig及vi等)

基于Busybox构造嵌入式根文件系统步骤:

下载、解压并配置Busybox (tar、make menucofig)

编译和安装Busybox(make、make install)

构建根文件系统(mkdir、mknod、vi /etc/inittab、vi/etc/init.d/rcS)

创建根文件系统映像文件(Initrd,ext2)

Bootloader

Bootloader是一种引导加载程序,它是系统加电后运行的第一段软件代码。从功能上说,它就是在操作系统内核运行之前用来初始化硬件设备,将Linux内核和根文件系统映像分别加载到内核中并跳转到内核的起始地址启动内核的小程序。

linux嵌入式程序软件架构 嵌入式linux程序设计_读书笔记

U-boot是一种可以支持多种体系架构CPU的bootloader,例如PowerPC、ARM、MIPS和x86

U-boot启动过程

Stage1:完成基本硬件设备初始化和为加载stage2部分的代码准备RAM空间

Stage2:引导内核准备环境

Linux系统移植

用JFlash烧写U-boot映像文件u-boot.bin并配置u-boot(setenv,printenv,saveenv)

用U-boot使用网络下载和烧写内核

用U-boot加载Initrd中的根文件系统映像

ROM、RAM及FLASH的区别

ROMRAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是RandomAccess Memory的缩写。ROM在系统停止供电的时候仍然可以保持数据,像计算机的硬盘,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。

RAM有两大类,一种称为静态RAM(Static RAM/SRAM),SRAM速度非常快,是目前读写最快的存储设备了,但是它也非常昂贵,所以只在要求很苛刻的地方使用,譬如CPU的一级缓冲,二级缓冲。另一种称为动态RAM(DynamicRAM/DRAM),DRAM保留数据的时间很短,速度也比SRAM慢,不过它还是比任何的ROM都要快,但从价格上来说DRAM相比SRAM要便宜很多,计算机内存就是DRAM的。

DRAM分为很多种,常见的主要有FPRAM/FastPage、EDORAM、SDRAM、DDR RAM、RDRAM、SGRAM以及WRAM等,这里介绍其中的一种DDR RAM。DDR RAM(Date-Rate RAM)也称作DDR SDRAM,这种改进型的RAM和SDRAM是基本一样的,不同之处在于它可以在一个时钟读写两次数据,这样就使得数据传输速度加倍了。这是目前电脑中用得最多的内存,而且它有着成本优势,事实上击败了Intel的另外一种内存标准-Rambus DRAM。在很多高端的显卡上,也配备了高速DDR RAM来提高带宽,这可以大幅度提高3D加速卡的像素渲染能力。

ROM也有很多种,PROM是可编程的ROM,PROM和EPROM(可擦除可编程ROM)两者区别是,PROM是一次性的,也就是软件灌入后,就无法修改了,这种是早期的产品,现在已经不可能使用了,而EPROM是通过紫外光的照射擦出原先的程序,是一种通用的存储器。另外一种EEPROM是通过电子擦除,价格很高,写入时间很长,写入速度很慢。

FLASH存储器又称闪存,它结合了ROM和RAM的长处,不仅具备电子可擦出可编程(EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据 (NVRAM的优势),U盘和MP3里用的就是这种存储器。在过去的20年里,嵌入式系统一直使用ROM(EPROM)作为它们的存储设备,然而近年来 Flash全面代替了ROM(EPROM)在嵌入式系统中的地位,用作存储Bootloader以及操作系统或者程序代码或者直接当硬盘使用(U盘)。

目前Flash主要有两种NOR FlashNADN Flash。NORFlash的读取和我们常见的SDRAM的读取是一样,用户可以直接运行装载在NOR FLASH里面的代码,这样可减少SRAM的容量从而节约了成本。NAND Flash没有采取内存的随机读取技术,它的读取是以一次读取一块的形式来进行的,通常是一次读取512个字节,采用这种技术的Flash比较廉价。用户不能直接运行NAND Flash上的代码,因此很多使用NAND Flash的开发板除了使用NAND Flah以外,还附加一块小的NOR Flash来运行启动代码。

一般小容量的存储用NOR Flash,因为其读取速度快,多用来存储操作系统等重要信息,而大容量的用NAND FLASH,最常见的NAND FLASH应用是嵌入式系统采用的DOC(Disk On Chip)和我们通常用的“闪盘”,可以在线擦除。目前市面上的FLASH主要来自Intel,AMD,Fujitsu和Toshiba,而生产NAND Flash的主要厂家有Samsung和Toshiba

NOR FlashNADN Flash性能区别

NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。 NAND结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于flash的管理和需要特殊的系统接口。

● NOR的读速度比NAND稍快一些。

● NAND的写入速度比NOR快很多。

● NAND的4ms擦除速度远比NOR的5s快。

●大多数写入操作需要先进行擦除操作。

● NAND的擦除单元更小,相应的擦除电路更少。