fl2440最小系统移植梳理
所谓的嵌入式开发就是自己DIY一个系统,放到开发板上跑。最小系统则是基于linux内核,考虑开发板实际硬件的一个最简单的系统。
准备工作:在linux下制作好自己的交叉编译器
一 fl2440开发板的了解,创建fl440项目框架
[xn@localhost fl2440]$ tree
|
-- 3rdparty 今后移植到ARM开发板上的第三方应用程序软件包
|-- bootloader u-boot移植代码
|-- crosstool 交叉编译器
|-- driver 今后写的驱动文件
|-- images 编译出的image文件,如Linux内核,根文件系统等;
|-- linux
| |-- kernel Linux内核源码路径
| `-- rootfs 根文件系统目录树路径
`-- program 我们今后自己写的应用程序
二 源码修改

修改一:晶振
修改二:machine ID
修改三:串口驱动设备名字改为ttyS
修改四:顶层Makefile中配置交叉编译器路径
修改五:添加DM9000网卡设备支持
三 内核配置和编译
kconfig .config Makefile 三者的关系
采用由平台厂商提供的sc2410_deconfig,用作编译内核.config的参考
注意export TERM=vt100命令的使用。
使用u_boot编译产生的mkimage命令
make
mkimage -A arm -O linux -T kernel -C none -a 30008000 -e 30008040 -n "Linux Kernel" -d arch/arm/boot/zImage linuxroms3c2440.bin
chmod a+x linuxrom-s3c2440.bin
四 根文件系统制作
1.创建根文件系统树目录结构
|
-- bin 系统基本命令bin
|-- sbin 系统管理命令
|-- dev 系统设备节点所在路径
|-- root root用户home
|-- etc 系统配置文件所在路径
| `-- init.d 系统初始化、启动程序脚本
|-- lib 系统动态库路径
| `-- modules
| `-- 3.0.0 linux内核驱动模块需要该路径
|-- usr
| |-- bin 用户基本命令路径
| |-- lib 用户动态库文件
| `-- sbin 用户管理命令路径
|-- apps nandflash apps分区挂载点,用来存放应用程序
|-- data nandflash data分区挂载点,用来存放数据
|-- info nandflash info分区挂载点,用来存放设备信息
|-- mnt 系统挂载点
| |-- mmc SD卡挂载点
| `-- usb U盘挂载点
|-- proc linux proc文件系统挂载点
|-- sys linux sys文件系统挂载点
|-- tmp linux tmp文件系统挂载点
`-- var 系统日志等文件存放路径
2.安装动态库,并链接到rootfs中的lib下
3.安装busybox,并链接到开发板的bin路径下
4.创建/dev路径下的设备节点
5.创建/var路径下的文件
6.创建/etc路径下的文件
创建etc/inittab
创建etc/fstab
创建etc/hostname
创建etc/int.d
创建etc/init.d/rcS
创建etc/init.d/S10_network
创建etc/init.d/S99_rcsApp
创建shell配置文件
创建linux登录账号文件
创建linux其他文件
/etc/resolv.conf文件
/etc/hosts文件
/etc/TZ文件
/etc/TZ文件
7.把内核中支持initramfs的选项选上,重新编译内核