基于ARM11的嵌入式linux系统移植与实现--笔记二

构建嵌入式Linux系统

由于6410片内只有8k的内存,但是u-boot的代码有将近200k。为了实现功能必须外扩RAM和ROM,芯片公司为了更好的实现这个功能,在硬件上,当上电启动的时候由硬件完成将nand flash最前面的8k内容自动拷贝到CPU内部运行,再通过这个8k的内容完成RAM和ROM的扩展功能。

u-boot启动分析

第一阶段:

(1)    硬件相关初始化

(2)    设置堆栈

(3)    赋值u-boot到RAM

(4)    重定位

(5)    跳转到第二阶段入口

第二阶段:

(1)    初始化第二件需要的硬件功能

(2)    检测系统内存映射

(3)    设置内核启动相关参数

(4)    调用内核

 

Linux内核移植

Linux内核主要负责管理内存,文件,应用程序,还负责网络收发数据。其实就是抽象的资源操作到具体硬件之间的接口。(作者用的是linux3.3.5进行板级移植)

 

构建根文件系统:

在linux里面对于应用者来说“一切皆是文件”,linux系统将地址,硬件,时序等信息封装在文件里面,对所有的文件(目录,打印机,硬盘。。。。)操作,都可以用几种简单文件操作函数(fopen()/fclose()/fwrite()/fread())等函数进行处理,屏蔽了硬件的区别,所有设备都抽象成文件。

 

在嵌入式linux里面,考虑到操作系统占用内存大小以及系统运行的速度,不能将文件系统制作成常见的NTFS,EXT2,EXT4等格式。只需要一个支持linux命令一个可执行的字符文件系统就可以。

Busybox:1M左右大小,但集成了最常用linux命令和工具的开源软件有一百多个,同时还集成了telnet和http两个服务器。

其目标是在一张软盘上创建一个可引导的GNU/linux系统化。在作者的文章中,被设计成安装盘和急救盘。

你可能感兴趣的:(基于ARM11的嵌入式linux系统移植与实现--笔记二)