构建嵌入式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系统化。在作者的文章中,被设计成安装盘和急救盘。