第六章:嵌入式Linux开发入门编程
嵌入式系统的开发模式小程序
交叉开发:在主机上开发编译,在目标平台上调试运行的开发模式bash
交叉编译:运行在主机上的编译器(GCC)编译程序产生目标机上运行的可执行程序的编译过程网络
嵌入式Linux系统的开发流程架构
1)在宿主机上面创建交叉开发所需的交叉编译环境:安装交叉编译工具cross-gcc,下载解压编译好的工具链并在用户主目录下的.bash_profile文件添加其路径到PATH变量。dom
2)在宿主机上利用交叉编译环境构造一个嵌入式Linux系统。Linux内核的开发主要根据实际须要进行内核裁剪和配置,而后用交叉编译生成内核的二进制文件映像,经常使用make menuconfig、make xconfig或make gconfig。工具
3)在嵌入式硬件系统上测试、运行构造好的嵌入式Linux系统。测试工做须要宿主机上经过远程终端(例如:串口终端仿真程序minicom)操做嵌入式开发板完成。性能
Busybox与根文件系统的构造测试
Busybox是构造文件系统最经常使用的一个软件工具包,集成了大量的工具集合经常使用命令(例如:ls,cp,ifconfig及vi等)spa
基于Busybox构造嵌入式根文件系统步骤:
下载、解压并配置Busybox (tar、make menucofig)
编译和安装Busybox(make、make install)
构建根文件系统(mkdir、mknod、vi /etc/inittab、vi/etc/init.d/rcS)
建立根文件系统映像文件(Initrd,ext2)
Bootloader
Bootloader是一种引导加载程序,它是系统加电后运行的第一段软件代码。从功能上说,它就是在操做系统内核运行以前用来初始化硬件设备,将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指的都是半导体存储器,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 Flash和NADN 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 Flash和NADN Flash性能区别
NOR的传输效率很高,在1~4MB的小容量时具备很高的成本效益,可是很低的写入和擦除速度大大影响了它的性能。 NAND结构能提供极高的单元密度,能够达到高存储密度,而且写入和擦除的速度也很快。应用NAND的困难在于flash的管理和须要特殊的系统接口。
● NOR的读速度比NAND稍快一些。
● NAND的写入速度比NOR快不少。
● NAND的4ms擦除速度远比NOR的5s快。
●大多数写入操做须要先进行擦除操做。
● NAND的擦除单元更小,相应的擦除电路更少。