系统移植总结

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、虚拟机配置环境

1.安装交叉编译工具

官方的名字叫做交叉编译工具,你可能觉得满脸问号,那么他还有另一个名字叫做ARM gcc。
由于我们写的是基于arm的代码,但linux的gcc只能编译x86的代码,所以需要一个特有的环境编写arm程序。
(1)复制arm gcc编译器的压缩文件到linux下,后解压。注意不能复制到共享文件路径下,要复制到纯linux的路径。解压命令tar -xvf 文件名
(2)安装32位支持库。由于arm是32位的,linux的64位,所以需要下载一个32位的支持库。下载安装命令apt-get install lib32z1。注意不能直接复制粘贴该命令,要纯手打。
(3)添加环境变量(安装arm gcc)。找到压缩后的arm gcc编译器文件夹,打开,bin目录,里面包含arm gcc的所有命令,pwd查看绝对路径,复制;打开环境变量的配置文件,命令vi ~/.bashrc;跳到最后一行添加一个指令export PATH=$PATH:刚刚复制的绝对路径,保存退出就可以了。

2.ftp(类似于网盘下载查看)

		1.安装
			查看虚拟机是否安装tftp
				dpkg -s tftpd-hpa 
			安装tftp
				sudo  apt-get  install  tftpd-hpa  tftp-hpa 
				
		2.配置文件
			vim /etc/default/tftpd-hpa
			修改这个文件的共享文件目录路径就可以了
			保存退出
			重启tftp服务器
			service tftpd-hpa restart
		3.进入tftp
			tftp 目标ip地址(localhost)代表本机ip地址	
			命令ifconfig可以查看本机的ip作为测试
			进入tftp之后可以进行上传下载等操作
				put 文件名(当前路径下):上传文件
				get 文件名(当前路径下):下载文件
				quit:					  退出

3、sfn(类似于网盘在线查看)

		1.安装nfs
			查看虚拟机是否安装nfs
				dpkg -s nfs-kernel-server
			安装nfs
				sudo apt-get install nfs-kernel-server
		2.配置文件
			vim /etc/exports
			修改工作路径,以及可共享的主机名、权限
			 /home/xwq/lxn/sfn/sfn1 *(rw,sync,no_root_squash,no_subtree_check)
			查看nfs工作路径
				showmount -e localhost
			重启nfs
				service nfs-kernel-server restart
		3.挂载
			 sudo mount -t nfs localhost:/home/xwq/lxn/sfn/sfn1 /mnt/hgfs/AAA
								本地ip		nfs工作路径				挂载路径
			取消挂载
				sudo umount -fl /mnt/hgfs/AAA

4、安装串口工具

说白了就是虚拟机和开发板通过串口完成交互的工具。
(1)下载工具;
(2)开发板串口连接电脑,打开电脑的设备管理器可以查看连接的端口,现在是COM4端口。

串口工具的使用:
开机启动开发板时,会延时几秒,在此期间如果你没有按下键盘,那么开发板自动进入安装好的操作系统;那么如果你在此期间按下按钮呢,就会进入u-boot,里面也是一个行命令界面,你需要会使用u-booot命令;

二、u-boot启动加载

1.简介

Bootloader的一种。如你重装系统,那么开始进入的一个重装系统的界面就是Bootloader,但是在windows管这玩意叫做bios,那么linux的Bootloader就叫做u-booot;
u-boot由汇编和C语言编写,为了加载操作系统。

2.u-boot命令

help:查看u-boot命令帮助文档,可以查看u-boot有哪些命令,并查看命令有哪些用;
help 命令:查看某条命令的具体使用方法;
printenv:打印环境变量
setenv (环境变量名)( 变量值):设置某个环境变量
saveenv:保持设置,设置如果不保存只会把设置的放在内存中,保持之后放到flash中;
laody 内存地址:下载文件到指定内存地址
laodb 内存地址:同上,只是用的传输协议不一样
tftp 内存地址 文件名:通过tftp下载文件到指定内存地址
ping IP地址:测试连接某个ip地址
go 内存地址:执行内存地址下的文件

3.环境变量

		baudrate=115200				//波特率
		bootargs=root=/dev/ram0 rw console=ttySAC2,115200 init=/linuxrc
		bootcmd=movi read kernel 41000000;movi read dtb 42000000;movi read rootfs 43000000 30140d;bootm 41000000 43000000 42000000		//自启动环境变量
		bootdelay=3					//开机延时秒
		ethact=dm9000				//
		ethaddr=11:22:33:44:55:66	//物理网卡地址
		fileaddr=41000000			//文件内存起始地址		
		filesize=30140D				//文件内存大小
		gatewayip=192.168.31.1		//网关地址	
		ipaddr=192.168.2.195		//ip地址,本机地址一个没人用的ip地址就可以了
		netmask=255.255.255.0		//掩码地址
		serverip=192.168.2.184		//服务器地址,也就是虚拟机的ip地址
		stderr=serial				//打印终端
		stdin=serial
		stdout=serial
		
		
		那么我们需要那些配置呢???
			(1)set serverip=192.168.2.184		//服务器地址,也就是虚拟机的ip地址
			(2)set ipaddr=192.168.2.195		//ip地址,本机地址一个没人用的ip地址就可以了
			(3)set bootargs root=/dev/nfs nfsroot=192.168.3.196:/home/lsf/source/rootfs rw console=ttySAC2,115200 init=linuxrc ip=192.168.4.101 
			//								虚拟机服务器地址       nfs目录下的rootfs文件路径 		ip地址
			(4)set bootcmd   tftp 41000000 uImage\;tftp 42000000 exynos4412-fs4412.dtb\;bootm 41000000 - 42000000 
		自启动命令:	用tftp协议  在内存41000000处下载uImage文件夹(编译之后的内核源码),tftp协议在内存42000000处下载文件夹exynos4412-fs4412.dtb(设备树文件),执行

4.u-boot移植

先去找厂家要u-boot源码,解压到linux下面
我们先来看看它里面都有那些文件
api COPYING examples MAKEALL README tools
arch CREDITS fs Makefile rules.mk u-boot
board disk helper.mk mkconfig snapshot.commit u-boot.bin
boards.cfg doc include nand_spl spl u-boot.lds
common drivers lib net System.map u-boot.map
config.mk dts MAINTAINERS post test u-boot.srec
告诉大家一个好消息,就是他这里面的文件大部分都是没有用的,有用的就只有:
cpu的代码 arch/arm/armv7 不需要动
板子的代码 board/samsung/origen 要改
配置文件 include/configs/origen.h 要改
所谓修改其实就是重命名而已,将别人的变成我们的:
(1)修改origen目录
重命名board/samsung/origen,,这个目录变成我们的fs4412,可以用cp、mv;
进入修改好的目录将里面的origen.c,变成fs4412.c,保持退出;
在顶层目录下面修改Makefile文件,将origen全部替换成fs4412,底行命令:%s/origen/fs4412/g,保持退出;
(2)重命名include/configs/origen.h,,将这个文件变成我们的fs4412.h,,可以cp、mv

(3)修改配置文件
vi boards.cfg
添加一行
fs4412 arm armv7 fs4412 samsung exynos
(4)配置
make fs4412_config ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-
(5)编译
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-

三、os操作系统

1.配置内核

配置内核其实就是在内核里面添加或者删除一些模块,这依赖于配置文件,他里面有很多模块选项你可以添加删除操作。
找到配置文件,arch/arm/configs/exynos_defconfig,弄到顶层目录下面,注意:他是一个隐藏文件
可以用vi、vim查看文件的内容,里面都是一些宏。
那么,如何配置呢,有两种方法:
(1)直接用vi或vim像敲代码一样的配置,这样难度大,门槛高;
(2)用图形化配置工具辅助配置,简单易上手。

我们采用图形化配置,首先你需要安装一个图形化配置工具
sudo apt-get install libncurses5-dev
进入配置工具
make menuconfig ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-
配置结束后保持退出。

2.编译内核

普通编译
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- -j4
生成两个文件
Image 系统镜像镜像 5.5M左右
zImage 压缩后的系统镜像 3M左右
前者文件内存有点大了,后者内存虽然小,但每次都要解压,有没有既内存小,又能够自动解压的文件镜像
make uImage ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- -j4
结果生成一个uImage,

四、文件系统

二、解压相关文件

	(1)将uImage拖到虚拟机的tftp共享文件路径下面
    (2)将exynos4412-fs4412.dtb拖到虚拟机tftp共享文件路径下面
	(3)将rootfs.tar.xz托到虚拟机,你设置的nfs文件目录下,然后解压
	
		tar Jxf xxxx.tar.xz			解压xz后缀的文件
	需要把所有的文件权限全部设置为777
		命令:chmod 777 xxxx

四、传输文件

	(1)首先我们要准备有网络的网线,然后连接到开发板的网口;
	(2)虚拟机保持打开,开发板连接我们的电脑(串口连接);
	(3)启动开发板之后,开发板自动进入我们的u-boot,下载共享目录下的文件,等待就可以了;
	(4)如果自动下载不知道什么地方错了,我们也可以选择手动下载文件,因为他的执行步骤的单步运行的;
	输入以下指令:
		  tftp 41000000 uImage
          tftp 42000000 exynos4412-fs4412.dtb
          bootm 41000000 - 42000000

总结

开发板下的u-boot是支持tftp和nfs这两种文件传输方式,由于二者内存大小极小,使用简单便捷,所以很适用于嵌入式。我们就可以用这两个工具从linux系统中,通过网线,将文件传输到开发板上面。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Debian是一个流行的开源操作系统,其特点是稳定、可靠以及广泛的软件包支持。移植Debian系统通常是指将它安装到新的硬件平台或体系结构上。 Debian系统移植需要考虑目标平台的硬件特性和软件支持情况。首先,我们需要确定目标平台的体系结构,例如x86、ARM、PowerPC等。然后,我们需要获取适用于目标体系结构的Debian镜像文件。 接下来,我们需要对目标平台进行适当的配置和调整。这可能包括编写或调整启动加载程序(bootloader)、内核配置和设备驱动程序等。如果目标平台有特殊的硬件要求或限制,我们可能还需要进行一些额外的工作。 一旦配置完成,我们可以将Debian镜像文件安装到目标平台上。这通常涉及将镜像文件写入设备介质(例如SD卡、硬盘等)并根据需要启动设备。 在镜像安装完成后,我们可以进一步配置Debian系统以适应目标平台。这包括设置网络、安装必要的软件包、调整系统设置等。需要注意的是,由于移植过程中的硬件和体系结构差异,可能需要进行一些额外的配置和调整。 一旦完成系统移植,我们就可以在目标平台上运行Debian系统。通过在目标平台上使用Debian,我们可以享受到Debian所提供的稳定性、可靠性和丰富的软件包支持。 总结来说,Debian系统移植需要考虑目标平台的硬件特性和软件支持情况,并进行相应的配置和调整。通过移植Debian系统,我们可以将其安装到新的硬件平台上,并在目标平台上享受到Debian的各种优点。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值