基于ARM和Linux的嵌入式平台的构建
lt_nand_part[] ={
[0] = {
.name=U-boot,
.offset= 0,
.size= 0x00040000,
}
其中name 是分区的名字,offset 是偏移的开始地址,size是分区的大小, 其余部分的分区与此类似。
②下面代码是添加Nand Flash 的设置表, 因为板子上只有一片Nand Flash, 因此也就只有一个设置表。
static struct s3c2410_nand_set mini2440_nand_sets[] = {
[0] = {
.name= NAND,
.nr_chips= 1,
.nr_partitions=
ARRAY_SIZE(mini2440_default_nand_part),
.partitions= mini2440_default_nand_part,
}
}
③上面的设置完成后, 还需要将Nand Flash 设备注册到系统中。下面这段代码就是将Nand Flash 设备添加到开发板的设备列表结构。
static struct platform_device *mini2440_devices [] __initdata
= {
s3c_device_nand,
}
④在mini2440_machine_init 函数中添加平台的数据信息。
static void __init mini2440_machine_init(void){
s3c_device_nand.dev.platform_data=mini2440_nand_info;
}
现在可以进入kernel/linux-2.6.32.2/arch/arm/boot 目录,然后执行下面的命令, 就会在该目录下生成uImage.img格式的、U-Boot 可以引导的内核镜象。
Mkimage – n ‘linux-2.6.32.2 ’ –A arm – O linux–T kernel –C none – a 0x30008000 – e 0x30008000 –d zImage uImage.img
至此, 可以把生成的uImage.img 格式的镜像文件复制到tftp 目录下, 使用tftp 进行下载。
3.3 文件系统
所谓根文件系统, 就是创建各个目录, 例如在/bin 、/sbin/ 目录下存放各种可执行的程序, 在/etc 目录下存放配置文件, 在/lib 目录下存放库文件。
可以利用Busybox 工具创建根文件系统,Bosybox 是一个遵循GPL v2 协议的开源项目, 它在编写过程中对文件大小进行优化, 并考虑了系统资源有限( 例如内存)的情况, 使用Busybox 可以自动生成根文件系统所需的bin、sbin、usr 目录和linuxrc 文件, 可以使用make menuconfig对Busybox 的选项进行配置。
(1) 进入opt/kernel, 创建一个shell 脚本用于构建根文件系统的各个目录, 并且为其增加执行权限;(2)Linux 中的init 进程会根据etc/inittab 文件创建其他子进程, 下面代码是inittab 文件中的内容, 说明了系统启动后首先执行的脚本文件是rcS, 虚拟的终端是串口0, 当按下ctr+alt+del 时重启系统,inittab 文件的作用就是控制系统启动时和启动后一些程序的运行。
#etc/inittab
::sysinit:/etc/init.d/rcS
s3c2410_serial0::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a-r
(3) 创建etc/init.d/rcS 文件, 这是一个脚本文件, 可以在里面添加要自动执行的一些命令。
#! /bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S // 运行的级别
prevlevel=N
umask 022 // 文件夹的掩码
mount -a // 挂载/etc/fstab/ 文件指定的所有的文件系统
mdev-s
/bin/hostname -F /etc/sysconfig/HOSTNAME// 主机的名字
使用yaffs 源码提供的工具制作文件系统的映像文件。由于128 MB 的Nand Flash 是大页结构, 所以需要使用相应的大页制作工具; 使用命令mkyaffs2image rootfsrootfs.img 生成根文件系统映像文件。
本文通过对U-Boot 移植和Linux 内核移植的讨论,给出了移植U-Boot 和Linux 到大多数开发板的关键部分。由于移植的复杂性, 不可能包括全部步骤, 但通过本文的阐述可以了解移植的基本流程和关键点, 为移植不同版本到其他硬件平台提供了参考, 也为应用程序的开发搭建了一个比较完整的嵌入式平台。
- 基于FPGA的异构可重配置DSP平台(01-14)
- 基于DSP的宽带雷达多片流水分段脉压处理平台设计(08-02)
- 基于MCU+DSP的运动控制硬件平台设计(10-01)
- 嵌入式系统硬件平台的软件PLC实现方法(04-12)
- 革新2410D开发板试用手记(04-21)
- 基于DSP的通用型嵌入式语音平台的硬件设计(03-27)