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

2019-07-13 04:28发布

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