ARM的uboot引导系统制作和linux的系统移植

前言:

          本文章将详细介绍在一个裸板(ARM板)上移植并配置一个linux系统,其中包含uboot引导系统的制作与移植以及liunx的制作移植。博主用的是三星Exynos4412芯片和FS4412_CoreBoard_V2核心板,具体的其他板子会有差异。

相关资料链接:

链接:https://pan.baidu.com/s/1uv_N-8dQlZli4Bc2xfPbRg 
提取码:xs66

    前期准备:

            由于篇幅原因,将不在详细介绍前期的一些准备工作。但是可以说一下具体有哪一些:1、需要有自己的一块板子。2、需要有一个U盘或者SD卡做一个启动盘,其中下载启动引导系统作为启动盘来提供基本的串口通讯功能。3、需要串口通讯工具(如Xshell、超级终端等)。4、还需要搭建板子和主机之间的tftp通讯(在SD卡可正常引导启动后进行),可参考:(19条消息) arm linux启动tftp服务器,ubuntu下配置TFTP服务器,用以ubuntu下烧写内核到ARM开发板..._weixin_39772352的博客-CSDN博客OK!到这一步,估计你已经准备的差不多了...^_^

一、系统引导(bootloader):

1.制作uboot.bin

到uboot.bin官网下载对板子和芯片的uboot.bin制作环境压缩包(Index of /pub/u-boot/)

修改makefile CROSS_COMPILE ?=arm-linux-(设置编译器为arm架构的)

用make distclean 打扫之前的编译环境

在borads.cfg找到对应板子,如qong,用make qong_config 制作配置(可以来两次)

make开始编译 制作uboot.bin

2.移动uboot.bin到板子

(uboot.bin 之前要链接 bl1和bl2 (cat E4412_N.bl1.SCP2G.bin bl2.bin all00_padding.bin u-  boot.bin tzsw_SMDK4412_SCP_2GB.bin > u.bin))

复制到 tptf共享文件夹 cp u.bin /home/xs/tftp/(该步骤在网盘文件中有脚本可以执行)

启动板子 输入 tftp 41000000 u.bin

保存 movi write u-boot 41000000

异常处理:

1、灯闪烁:某种中断导致,直接切断电源模块的接收中断功能。
在arch->arm->cpu->对应cpu下的start.s    set the cpu to SVC32 mode后加
/*设置ONO*/
ldr r1,=0x11000c00
ldr r2,[r1]
bic r2,r2,#0x00000F00
orr r2,r2,#0x00000100
str r2,[r1]
ldr r1,=0x11000c04
ldr r2,[r1]
bic r2,r2,#0x00000004
orr r2,r2,#0x00000004
str r2,[r1]
/*ONO end*/
2、串口通讯不成功:参数设置不对,没有确定输入时钟频率,故波特率不确定。
在对应板子的lowlevel_init.s中:
在 1:
/* for UART */
bl uart_asm_init
/*屏蔽这一行*/
@ bl tzpc_init
在uart_asm_init:
/*xs 修改*/
ldr	r0, =EXYNOS4_CLOCK_BASE
/* UART[0:4] */
ldr	r1, =CLK_SRC_PERIL0_VAL
ldr	r2, =CLK_SRC_PERIL0_OFFSET
str	r1, [r0, r2]
/* CLK_DIV_PERIL0: UART Clock Divisors */
ldr	r1, =CLK_DIV_PERIL0_VAL
ldr	r2, =CLK_DIV_PERIL0_OFFSET
str	r1, [r0, r2]
/*uart时钟修改结束*/
备注:如果打算使用 tftp传输文件 那么就需要将网络功能打开 具体步骤如下:
1、增加命令:
fs4412.h中修改(打开宏开关)  板子名的.h文件
{
#define  CONFIG_CMD_PING
#define  CONFIG_CMD_NET
}
2、增加网络设备初始化
origen.c中增加
{
	#ifdef CONFIG_DRIVER_DM9000
	int board_eth_init(bd_t *bis)
	{
		return dm9000_initialize(bis);
	}
	#endif
}
fs4412.h中增加
{
	#ifdef  CONFIG_CMD_NET
	#define CONFIG_DRIVER_DM9000  1
	#define CONFIG_DM9000_BASE    0x05000000     /*DM9000基地址*/
	#define DM9000_IO      	      CONFIG_DM9000_BASE
	#define DM9000_DATA    	     (CONFIG_DM9000_BASE + 4)

	#define CONFIG_ETHADDR 	        11:22:33:44:55:66 /*MAC   */
	#define CONFIG_IPADDR  		    192.168.12.251   /*板子ip*/
	#define CONFIG_SERVERIP        	192.168.12.147  /*主机ip*/
	#define CONFIG_GATEWAYIP      	192.168.12.1   /*网段  */
	#define CONFIG_NETMASK 		    255.255.255.0 /*掩码  */
	#endif
}
3、增加SROM设置
在fs4412/origen.c 增加:
   在board_init中增加:
{
	#ifdef CONFIG_DRIVER_DM9000
        dm9000aep_pre_init();
	#endif
}

在fs4412/origen.c 增加:
{
	#ifdef CONFIG_DRIVER_DM9000
	#define EXYNOS4412_SROMC_BASE 0X12570000
	#define DM9000_Tacs     (0x1) 
	#define DM9000_Tcos     (0x1) 
	#define DM9000_Tacc     (0x5) 
	#define DM9000_Tcoh     (0x1) 
	#define DM9000_Tah      (0xC) 
	#define DM9000_Tacp     (0x9)   
	#define DM9000_PMC      (0x1)  

	struct exynos_sromc {
		unsigned int bw;
		unsigned int bc[6];
	};

/*
* s5p_config_sromc() - select the proper SROMC Bank and configure the
* band width control and bank control registers
* srom_bank    - SROM
* srom_bw_conf  - SMC Band witdh reg configuration value
* srom_bc_conf  - SMC Bank Control reg configuration value
*/
	void exynos_config_sromc(u32 srom_bank, u32 srom_bw_conf, u32 srom_bc_conf)
	{
 		unsigned int tmp;
 		struct exynos_sromc *srom = (struct exynos_sromc *)(EXYNOS4412_SROMC_BASE);

		/* Configure SMC_BW register to handle proper SROMC bank */
 		tmp = srom->bw;
 		tmp&= ~(0xF << (srom_bank * 4));
 		tmp |= srom_bw_conf;
 		srom->bw = tmp;

		/* Configure SMC_BC register */
     	srom->bc[srom_bank] = srom_bc_conf;
	}

	static void dm9000aep_pre_init(void)
	{
		unsigned int tmp;
		unsigned char smc_bank_num = 1;
		unsigned int     smc_bw_conf=0;
		unsigned int     smc_bc_conf=0;

		/* gpio configuration */
		writel(0x00220020, 0x11000000 + 0x120);
		writel(0x00002222, 0x11000000 + 0x140);
		/* 16 Bit bus width */
		writel(0x22222222, 0x11000000 + 0x180);
		writel(0x0000FFFF, 0x11000000 + 0x188);
		writel(0x22222222, 0x11000000 + 0x1C0);
		writel(0x0000FFFF, 0x11000000 + 0x1C8);
		writel(0x22222222, 0x11000000 + 0x1E0);
		writel(0x0000FFFF, 0x11000000 + 0x1E8);              
		smc_bw_conf &= ~(0xf<<4);
		smc_bw_conf |= (1<<7) | (1<<6) | (1<<5) | (1<<4);
		smc_bc_conf = ((DM9000_Tacs << 28)| (DM9000_Tcos << 24)| (DM9000_Tacc << 16)| 					(DM9000_Tcoh << 12)| (DM9000_Tah << 8)| (DM9000_Tacp << 4) | 							(DM9000_PMC));

		exynos_config_sromc(smc_bank_num,smc_bw_conf,smc_bc_conf);
	}
	#endif
}

3.启动uboot

设置uboot启动参数(注意IP地址和其他参数的更改 我这里192.168.1.12是板子ip)

set bootargs root=/dev/ram rw console=ttySAC2,115200 clk_ignore_unused init=/linuxrc ip=192.168.1.12
save

拨动拨码开关 上电 启动

二、内核移植(kernel)

uImage编译:

到linux官网下载制作kernel的压缩包(https://www.kernel.org/)
tar -xvf 压缩包名
修改makefile CROSS_COMPILE ?=arm-linux-(设置编译器为arm架构的)
看芯片是否支持,arch/arm(架构名)/configs/ -------->exynos_defconfig(三星的一个芯片配置文件)
如果不支持就换高版本的linux,或者找厂家
make exynos_defconfig(对应配置文件--可修改)  :注意 这是对配置文件的加载写入,不过一般都不采取这种方式 ,一般用下一行方法
make menuconfig  可视化窗口配置配置文件 需要啥就选择(开DM9000的配置 在Device Drivers → Network device support → Ethernet driver support→ DM9000下)
上面开了DM9000配置文件后 需要在设备树源码文件(arch/arm/boot/dts/对应板子.dts)下挂载:

在 .dts文件下 增加:
#include <dt-bindings/interrupt-controller/irq.h>

在结尾增加:(注意 包含在大框架内 也就是最后还要有一个花括号)
     /*新增网络*/
     srom-cs1@5000000 {
          compatible = "simple-bus";
	  #address-cells = <1>;
	  #size-cells = <1>;
	  reg = <0x5000000 0x1000000>;
	  ranges;
            ethernet@5000000 {
			compatible = "davicom,dm9000";
			reg = <0x5000000 0x2 0x5000004 0x2>;
			interrupt-parent = <&gpx0>;
			interrupts = <6 IRQ_TYPE_LEVEL_HIGH>;
			davicom,no-eeprom;
		};
	};
tb编译:

确认板子是否匹配 arch/arm/boot/dts/  没有 就找芯片相同的借鉴
修改Makefile  增加 你要编译的板子 .dtb  没有就借鉴 有就不管了

make dtbs 生成 .dtb文件 

将这个文件 和uImage文件一起拷贝到tftp文件夹

2、根文件系统(rootfs)

网络文件系统 nfs:

ubuntu主机端:

安装:sudo apt-get install nfs-kernel-server

 准备目录:在家目录下的任意目录创建一个rootfs文件夹 可以是空的(用于放我们自己的根文件系统) 或者是解   压的 rootfs.tgz

配置nfs:

sudo vi etc/exports

加一行 rootfs文件夹的路径 *   (rw,sync,no_subtree_check,no_root_squash)

重启生效:

sudo /etc/init.d/nfs-kernel-server restart

板子客户端:

需要重新生成一个uImage文件;
 → Networking support → Networking options→ IP: kernel level autoconfiguration :先把自动IP打开

make menuconfig 找到nfs :

File systems → Network File Systems → NFS client support 和 Root file system on NFS(没开自动IP没有该选项) 选择需要

板子 uboot 需要更改为:

 set bootcmd tftp 41000000 uImage\;tftp 42000000 exynos4412-fs4412.dtb\;bootm 41000000 - 42000000
 set bootargs root=/dev/nfs nfsroot=192.168.1.11(你的主机址):/home/hqyj/hq/xs/sys/rootfs(你的rootfs路径),v3 rw console=ttySAC2,115200 clk_ignore_unused init=/linuxrc ip=192.168.1.12(板子的地址)
 save
己制作一个rootfs:

下载busybox压缩包(https://busybox.net/)

在家目录下的任意目录解压

在解压的目录下 make menuconfig 找到:Busybox Settings → Build Options → Build BusyBox as a static binary和(arm-linux-) Cross Compiler prefix   (括号内是要填的交叉编译环境)

make 或者 make -j8
make install (你自己制作的rootfs就在 _install下产生了)
在_install 目录下创建 /proc /tmp /sys /dev 文件夹
然后 就需要lib文件(复制到_install下) 一般移植对应框架的 gun 下的lib 用 echo $PATH查找路径为/home/hqyj/Downloads/gcc-4.6.4/arm-arm1176jzfssf-linux-gnueabi
最后 需要etc文件(复制到_install下) 这个包含启动和配置文件 inittab 文件是启动时调用的文件(可以在这里添加自启动软件) profile 是可以更改一些用户信息的
最后将自己_install下的所有文件移动到自己的rootfs 下 就可以了

rootfs相关文件:

rcS文件
#!/bin/sh                                      
#This is the first script called by init process
/bin/mount -a ----》关联文件系统                  
mkdir /dev/pts                                  
mount -t devpts devpts /dev/pts                 
echo /sbin/mdev>/proc/sys/kernel/hotplug        
mdev -s  
inittab文件
#this is run first except when booting in single-user mode.
::sysinit:/etc/init.d/rcS

# /bin/sh invocations on selected ttys

# Start an "askfirst" shell on the console (whatever that may be)

::respawn:-/bin/sh

# Stuff to do when restarting the init process

::restart:/sbin/init

# Stuff to do before rebooting

::ctrlaltdel:/sbin/reboot
profile文件
#!/bin/sh
export HOSTNAME=xs
export USER=root
export HOME=root
#export PS1="\[\u@\h \W\]\$ "
#cd root
export PS1="[$USER@$HOSTNAME \W]\# "
PATH=/bin:/sbin:/usr/bin:/usr/sbin
LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH
export PATH LD_LIBRARY_PATH

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux系统移植 目 录 第一部分 前言....................................................................................................................................8 1 硬件环境......................................................................................................................................8 1.1 主机硬件环境.......................................................................................................................8 1.2 目标板硬件环境...................................................................................................................8 1.3 工具介绍...............................................................................................................................8 2 软件环境.......................................................................................................................................8 2.1 主机软件环境.......................................................................................................................8 2.1.1 Windows 操作系统.......................................................................................................8 2.1.2 Linux 操作系统 .......................................................................................................8 2.1.3 目标板最后运行的环境...............................................................................................9 2.2 Linux 下工作用户及环境....................................................................................................9 2.2.1 交叉工具的安装...........................................................................................................9 2.2.2 u­boot移植工作目录....................................................................................................9 2.2.3 内核及应用程序移植工作...........................................................................................9 2.3 配置系统服务.....................................................................................................................10 2.3.1 tftp 服务器的配置.......................................................................................................10 2.4 工具使用.............................................................................................................................12 2.4.1 minicom的使用..........................................................................................................12 3 作者介绍....................................................................................................................................13 3.1 策划, 组织, 指导, 发布者...................................................................................................13 3.2 ADS bootloader部分..........................................................................................................13 3.3 交叉工具部分.....................................................................................................................13 3.4 uboot 部分...........................................................................................................................13 3.5 内核部分.............................................................................................................................13 3.6 应用程序部分.....................................................................................................................13 3.7 网卡驱动部分.....................................................................................................................13 3.8 Nand Flash 驱动部分.........................................................................................................13 第二部分 系统启动bootloader 的编写(ADS).................................................................................14 1 工具介绍....................................................................................................................................14 1.1 ADS 命令行命令介绍........................................................................................................14 1.1.1 armasm........................................................................................................................14 1.1.2 armcc, armcpp.............................................................................................................14 1.1.3 armlink.........................................................................................................................14 2 基本原理....................................................................................................................................15 2.1 可执行文件组成及内存映射.............................................................................................15 2.1.1 可执行文件的组成.....................................................................................................15 2.1.2 装载过程.....................................................................................................................16 2.1.3 启动过程的汇编部分.................................................................................................17 2.1.4 启动过程的 C部分.....................................................................................................17 3 AXD的使用以及源代码说明...................................................................................................18 3.1 源代码说明.........................................................................................................................18 3.1.1 汇编源代码说明.........................................................................................................18 3.1.2 C语言源代码说明......................................................................................................23 3.1.3 源代码下载.................................................................................................................23 3.2 AXD的使用.......................................................................................................................23 3.2.1 配置仿真器.................................................................................................................23 3.2.2 启动 AXD 配置开发板...............................................................................................23 第三部分 GNU交叉工具链.............................................................................................................25 1  设置环境变量,准备源码及相关补丁...................................................................................25 1.1 设置环境变量.....................................................................................................................25 1. 2 准备源码包............................................................................................................................25 1.2.1 binuils..........................................................................................................................25 1.2.2 gcc...............................................................................................................................25 1.2.3 glibc.............................................................................................................................25 1.2.4 linux kernel..................................................................................................................26 1.3 准备补丁.............................................................................................................................26 1.3.1 ioperm.c.diff................................................................................................................26 1.3.2 flow.c.diff....................................................................................................................26 1.3.3 t­linux.diff....................................................................................................................26 1.4   编译 GNU binutils...........................................................................................................26 1.5 准备内核头文件.................................................................................................................26 1.5.1 使用当前平台的 gcc编译内核头文件......................................................................26 1.5.2 复制内核头文件.........................................................................................................27 1.6   译编glibc头文件.............................................................................................................27 1.7   编译gcc第一阶段............................................................................................................27 1.8   编译完整的glibc..............................................................................................................27 1.9  编译完整的gcc.................................................................................................................28 2 GNU 交叉工具链的下载...........................................................................................................28 2.1 ARM 官方网站...................................................................................................................28 2.2 本文档提供的下载.............................................................................................................28 3 GNU 交叉工具链的介绍与使用...............................................................................................29 3.1 常用工具介绍.....................................................................................................................29 3.2.1 arm­linux­gcc的使用.................................................................................................29 3.2.2 arm­linux­ar 和 arm­linux­ranlib 的使用..................................................................30 3.2.3 arm­linux­objdump 的使用.........................................................................................30 3.2.4 arm­linux­readelf 的使用............................................................................................31 3.2.6 arm­linux­copydump 的使用......................................................................................32 4 ARM GNU 常用汇编语言介绍.................................................................................................32 4.1 ARM GNU常用汇编伪指令介绍.....................................................................................32 4.2 ARM GNU专有符号.........................................................................................................33 4.3 操作码.................................................................................................................................33 5 可执行生成说明........................................................................................................................33 5.1 lds文件说明.......................................................................................................................33 5.1.1 主要符号说明.............................................................................................................33 5.1.2 段定义说明.................................................................................................................34 第四部分 u­boot移植...................................................................................................................35 1 u­boot的介绍及系统结构.........................................................................................................35 1.1 u­boot 介绍.........................................................................................................................35 1.2 获取u­boot.........................................................................................................................35 1.3 u­boot 体系结构.................................................................................................................35 1.3.1 u­boot目录结构..........................................................................................................35 2 uboot的启动过程及工作原理...................................................................................................36 2.1 启动模式介绍.....................................................................................................................36 2.2 阶段1 介绍.........................................................................................................................36 2.2.1 定义入口.....................................................................................................................36 2.2.2 设置异常向量.............................................................................................................37 2.2.3 设置 CPU的模式为SVC模式..................................................................................37 2.2.4 关闭看门狗.................................................................................................................37 2.2.5 禁掉所有中断.............................................................................................................37 2.2.6 设置以 CPU的频率....................................................................................................37 2.2.7 设置 CP15...................................................................................................................37 2.2.8 配置内存区控制寄存器.............................................................................................38 2.2.9 安装 U­BOOT 使的栈空间........................................................................................38 2.2.10 BSS 段清 0................................................................................................................38 2.2.11 搬移 Nand Flash 代码...............................................................................................39 2.2.12 进入 C代码部分.......................................................................................................39 2.3 阶段2 的C语言代码部分 .............................................................................................39 2.3.1 调用一系列的初始化函数.........................................................................................39 2.3.2 初始化网络设备.........................................................................................................41 2.3.3 进入主 UBOOT 命令行..............................................................................................41 2.4 代码搬运.............................................................................................................................41 3 uboot移植过程.......................................................................................................................42 3.1 环境.....................................................................................................................................42 3.2 步骤.....................................................................................................................................42 3.2.1 修改 Makefile..............................................................................................................42 3.2.2 在 board 子目录中建立 crane2410.............................................................................42 3.2.3 在 include/configs/中建立配置头文件......................................................................42 3.2.4 指定交叉编译工具的路径.........................................................................................42 3.2.5 测试编译能否成功.....................................................................................................42 3.2.6 修改 lowlevel_init.S 文件...........................................................................................43 3.2.9 UBOOT 的 Nand Flash 移植......................................................................................45 3.2.8 重新编译u­boot..........................................................................................................45 3.2.9 把 u­boot烧入flash....................................................................................................45 4  U­BOOT 命令的使用................................................................................................................46 4.1 U­BOOT命令的介绍.........................................................................................................46 4.1.1 获得帮助信息.............................................................................................................46 4.2 常用命令使用说明.............................................................................................................47 4.2.1 askenv(F).....................................................................................................................47 4.2.2 autoscr.........................................................................................................................47 4.2.3 base   ...........................................................................................................................47 4.2.4 bdinfo...........................................................................................................................47 4.2.5 bootp............................................................................................................................47 4.2.8 tftp(tftpboot)................................................................................................................48 4.2.9 bootm...........................................................................................................................48 4.2.10 go...............................................................................................................................48 4.2.11 cmp   .........................................................................................................................48 4.2.12 coninfo  .....................................................................................................................48 4.2.13 cp...............................................................................................................................48 4.2.14 date............................................................................................................................49 4.2.15 erase(F)......................................................................................................................49 4.2.16 flinfo(F).....................................................................................................................49 4.2.17 iminfo........................................................................................................................49 4.2.18 loadb..........................................................................................................................49 4.2.19 md..............................................................................................................................49 4.2.20 mm ............................................................................................................................50 4.2.21 mtest   .......................................................................................................................50 4.2.22 mw.............................................................................................................................50 4.2.23 nm   ...........................................................................................................................50 4.2.24 printenv......................................................................................................................50 4.2.25 ping  ..........................................................................................................................51 4.2.26 reset...........................................................................................................................51 4.2.27 run   ...........................................................................................................................51 4.2.28 saveenv(F).................................................................................................................51 4.2.29 setenv.........................................................................................................................51 4.2.30 sleep...........................................................................................................................51 4.2.31 version.......................................................................................................................51 4.2.32 nand info....................................................................................................................51 4.2.33 nand device ........................................................................................................51 4.2.34 nand bad....................................................................................................................51 4.2.35 nand read...................................................................................................................52 4.2.36 nand erease................................................................................................................52 4.2.37 nand write..................................................................................................................52 4.3 命令简写说明.....................................................................................................................52 4.4 把文件写入NandFlash.......................................................................................................53 4.5 下载提供.............................................................................................................................53 5 参考资料....................................................................................................................................53 第五部分 linux 2.6 内核的移植.......................................................................................................53 1 内核移植过程............................................................................................................................53 1.1 下载linux 内核...................................................................................................................53 1.2 修改Makefile.....................................................................................................................53 1.3 设置flash 分区...................................................................................................................54 1.3.1 指明分区信息.............................................................................................................54 1.3.2 指定启动时初始化.....................................................................................................56 1.3.3 禁止 Flash ECC校验 ................................................................................................56 1.4 配置内核.............................................................................................................................56 1.4.1 支持启动时挂载 devfs................................................................................................56 1.4.2 配置内核产生.config 文件.........................................................................................57 1.4.3 编译内核.....................................................................................................................58 1.4.4 下载 zImage到开发板................................................................................................58 2 创建 uImage................................................................................................................................61 2.1 相关技术背景介绍.............................................................................................................61 2.2 在内核中创建uImage 的方法...........................................................................................61 2.2.1 获取 mkimage工具.....................................................................................................61 2.2.2 修改内核的 Makefile文件.........................................................................................61 3 追加实验记录.............................................................................................................................62 3.1 移植 linux­2.6.15.7..............................................................................................................62 3.2 移植 linux­2.6.16.21............................................................................................................62 3.3 移植linux­2.6.17................................................................................................................62 4 参考资料....................................................................................................................................62 第六部分 应用程序的移植..............................................................................................................63 1 构造目标板的根目录及文件系统.............................................................................................63 1.1 建立一个目标板的空根目录.............................................................................................63 1.2 在 my_rootfs 中建立Linux 目录树...................................................................................63 1.3 创建linuxrc文件................................................................................................................63 2 移植 Busybox.............................................................................................................................64 2.1 下载busybox......................................................................................................................64 2.3 编译并安装Busybox..........................................................................................................65 3 移植 TinyLogin...........................................................................................................................66 3.1 下载.....................................................................................................................................66 3.2 修改tinyLogin 的 Makefile................................................................................................66 3.3 编译并安装.........................................................................................................................66 4 相关配置文件的创建................................................................................................................66 4.1 创建帐号及密码文件.........................................................................................................66 4.2 创建profile文件................................................................................................................67 4.4 创建fstab 文件...................................................................................................................67 4.5 创建inetd.conf 配置文件...................................................................................................67 5 移植 inetd....................................................................................................................................67 5.1 inetd 的选择及获取............................................................................................................67 5.1.1 获取 inetd....................................................................................................................67 5.2 编译inetd............................................................................................................................67 5.2.1 修改 configure文件....................................................................................................67 5.2.2 编译 ...........................................................................................................................68 5.3 配置inetd............................................................................................................................68 5.3.1 拷贝 inetd 到根文件系统的usr/sbin 目录中.............................................................68 6 移植 thttpd Web 服务器.............................................................................................................69 6.1 下载.....................................................................................................................................69 6.2 编译thttpd...........................................................................................................................69 6.3 配置.....................................................................................................................................69 6.3.1 拷贝 thttpd 二进制可执行文件到根文件系统/usr/sbin/目录中...............................69 6.3.2 修改 thttpd 配置文件..................................................................................................69 6.3.3 转移到根文件系统目录,创建相应的文件.............................................................69 7 建立根目录文件系统包............................................................................................................70 7.1 建立CRAMFS 包...............................................................................................................70 7.1.1 下载 cramfs 工具........................................................................................................70 7.1.2 制作 cramfs 包............................................................................................................70 7.1.3 写 cramfs 包到Nand Flash.........................................................................................70 8 参考资料....................................................................................................................................70 第七部分 Nand flash 驱动的编写与移植........................................................................................71 1 Nand flash 工作原理..................................................................................................................71 1.1 Nand flash 芯片工作原理..................................................................................................71 1.1.1 芯片内部存储布局及存储操作特点.........................................................................71 1.1.2 重要芯片引脚功能.....................................................................................................71 1.1.3 寻址方式.....................................................................................................................71 1.1.4 Nand flash 主要内设命令详细介绍...........................................................................72 1.2 Nand Flash 控制器工作原理.............................................................................................72 1.2.1 Nand Flash 控制器特性..............................................................................................72 1.2.2 Nand Flash 控制器工作原理......................................................................................72 1.3 Nand flash 控制器中特殊功能寄存器详细介绍 ............................................................72 1.4 Nand Flash 控制器中的硬件ECC介绍............................................................................73 1.4.1 ECC产生方法............................................................................................................73 1.4.2 ECC生成器工作过程................................................................................................74 1.4.3 ECC的运用................................................................................................................74 2 在 ADS下flash 烧写程序.........................................................................................................74 2.1 ADS 下 flash 烧写程序原理及结构...................................................................................74 2.2 第三层实现说明.................................................................................................................74 2.1.1 特殊功能寄存器定义.................................................................................................74 2.1.2 操作的函数实现.........................................................................................................74 2.3 第二层实现说明.................................................................................................................75 2.3.1 Nand Flash 初始化......................................................................................................75 2.3.3 获取 Nand flash ID......................................................................................................75 2.3.4 Nand flash 写入...........................................................................................................76 2.3.5 Nand flash 读取...........................................................................................................77 2.3.6 Nand flash 标记坏块...................................................................................................78 2.3.7 Nand Flash 检查坏块..................................................................................................79 2.3.8 擦除指定块中数据.....................................................................................................79 2.4  第一层的实现....................................................................................................................80 3 在 U­BOOT 对Nand Flash 的支持............................................................................................82 3.1 U­BOOT对从 Nand Flash 启动的支持.............................................................................82 3.1.1 从 Nand Flash 启动U­BOOT 的基本原理................................................................82 3.1.2 支持 Nand Flash 启动代码说明.................................................................................82 3.2 U­BOOT对 Nand Flash 命令的支持.................................................................................84 3.2.1 主要数据结构介绍.....................................................................................................84 3.2.2 支持的命令函数说明.................................................................................................85 4 在 Linux 对Nand Flash 的支持.................................................................................................87 4.1 Linux 下Nand Flash 调用关系..........................................................................................87 4.1.1 Nand Flash 设备添加时数据结构包含关系..............................................................87 4.1.2 Nand Flash 设备注册时数据结构包含关系..............................................................87 4.2 Linux 下Nand Flash 驱动主要数据结构说明..................................................................88 4.2.1 s3c2410 专有数据结构...............................................................................................88 4.2.2 Linux 通用数据结构说明..........................................................................................89 4.3.1 注册 driver_register....................................................................................................94 4.3.2 探测设备 probe...........................................................................................................94 4.3.3 初始化 Nand Flash 控制器.........................................................................................94 4.3.4 移除设备.....................................................................................................................94 4.3.5 Nand Flash 芯片初始化..............................................................................................94 4.3.6  读 Nand  Flash............................................................................................................95 4.3.7  写 Nand Flash.............................................................................................................95 第八部分 Cs8900a网卡驱动的编写与移植...................................................................................95 1 Cs8900a工作原理......................................................................................................................95 2 在 ADS下cs8900a的实现........................................................................................................95 2.1 在 cs8900a下实现的ping 工具.........................................................................................95 3 在 u­boot下cs8900a的支持......................................................................................................96 3.1 u­boot 下cs8900a的驱动介绍...........................................................................................96 3.2 u­boot 下cs8900a的移植说明...........................................................................................96 4 在 linux 下cs8900a驱动的编写与移植....................................................................................96 4.1 Linux 下cs8900a的驱动说明............................................................................................96 4.2 Linux 下 cs8900a的移植说明...........................................................................................96 4.2.1 为 cs8900a建立编译菜单..........................................................................................96 4.2.2 修改 S3C2410相关信息............................................................................................97 序 该文档的目的是总结我们在工作中的一些经验,并把它们分享给喜欢 ARMLinux 的朋友, 如有错误 之处,请大家多多指点. 同样, 我们也希望更多人能把自己的工作经验和体会加入该文档,让大家共同进步. 该文档是一份交流性文档, 只供个人学习与交流,不允许公司和企业用于商业行为
下面是在QEMU中模拟ARM开发板并使用U-Boot引导系统镜像进行系统移植的详细步骤: 1. 安装QEMU:首先,你需要安装QEMU模拟器。根据你的操作系统选择适合的版本,并按照官方文档的指导进行安装。 2. 获取ARM开发板固件:你需要获取一个ARM开发板的固件镜像,这包括U-Boot引导加载器和操作系统映像文件。通常可以从开发板供应商或开源社区获取这些镜像。 3. 创建虚拟机:打开终端或命令提示符窗口,运行以下命令来创建一个虚拟机实例,其中`path_to_uboot_image`是指向U-Boot镜像文件的路径,`path_to_kernel_image`是指向内核映像文件的路径,`path_to_rootfs_image`是指向根文件系统映像文件的路径: ``` qemu-system-arm -M <machine> -m <memory> -kernel <path_to_uboot_image> -dtb <path_to_dtb_file> -append "console=ttyAMA0" -sd <path_to_rootfs_image> ``` 其中,`machine`是指定要模拟的ARM开发板型号(例如`versatilepb`),`memory`是指定虚拟机的内存大小(例如`256M`),`path_to_dtb_file`是指向设备树二进制文件(DTB)的路径。 4. 启动虚拟机:运行上述命令后,QEMU将启动虚拟机,并加载U-Boot引导加载器。你将在终端或命令提示符窗口中看到U-Boot的输出信息。 5. 进行系统移植:一旦虚拟机启动成功,你可以在U-Boot的命令行界面中输入命令来配置和加载操作系统。你可能需要设置环境变量、加载内核映像和设备树,以及设置启动参数等。 6. 测试和调试:完成系统移植后,你可以在虚拟机中进行测试和调试。你可以运行应用程序,测试系统的功能和性能。 需要注意的是,U-Boot的配置和使用可能因不同的开发板和需求而有所不同。确保阅读U-Boot的文档以了解更多配置和使用细节。 希望这些详细步骤能够帮助你在QEMU中模拟ARM开发板,并使用U-Boot引导系统镜像进行系统移植。如果你有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值