Linux系统移植及概述

Linux系统移植概述及环境搭建

嵌入式系统的核心是定制

1.搭建自己的编译环境

关于搭建交叉编译环境,其实就是制作交叉编译工具链toolchain。就是用pc上的编译器,编译产生目标板的编译链接工具。

需要准备相关的很多源码,大体分为编译工具和lib和include库两类,比如glibc,binutils,

 gcc (目标板),crosstool(制作用脚本)等。要注意版本,合适的cross

toolchain是进行后续工作的基础。

2.编译制作bootloader

制作bootloader,bootloader主要完成硬件初始化,自搬移,加载操作系统几方面的工作,整个u-boot的源码包含了很多个平台的支持,通过make

XXX_config设置,使得编译时选择相应部分的源码。可以根据自己的具体需求,对参与编译的相应部分进行删改,使得bootloader符合要求。

3.编译制作内核镜像

编译制作系统镜像,同样,下载来得源码包通常也是包含多种平台支持的,通过修改Kconfig文件和menuconfig配置,确定对平台的支持,通过对内核模块的增减来适应自己开发板,是生产的内核最精简。

4.编译制作根文件系统

只有内核,通常还是不够的,一个比较完备的应用,通常还需要文件系统,linux的工作方式是把分区挂载到目录,所以我们通常需要一个根文件系统rootfs,常见的根文件系统很多,制作过程后面补充。

一个根文件系统可以从内容和格式两方面来理解它,内容包括了可执行文件,运行时的脚本,设备文件等;有一定格式是实际烧写到外存的需要。制作内容可以使用busybox来生成常用命令(就是linux非常熟悉的/bin

/sbin /usr/bin /usr/sbin里面的东西),创建根文件系统目录,如sys

etc dev proc var tmp root lib; 按照一定的格式编写启动脚本,比如rcS

inittab fstab profile等;mknod创建/dev/console

/dev/null;把编译busybox和内核的交叉编译工具链的lib里的可执行库中的内容拷贝到文件系统的lib里(一定要对应版本)。制作为一定的格式的镜像,要制作好得文件系统内容和一定的制作工具,可以用linux自带的工具制作成cramfs格式,可以用开源工具mkdfs.jffs2制作成jffs2格式。

嵌入式Linux交叉开发环境硬件组成

1.开发主机

2.目标机

3.连接介质(RS232串口,网线)

串口控制开发板

电脑编译生成bin文件,网线下载到开发板

板子上电时候会加载bootloader,电脑下载bootloader时,通过串口输出信息

开发板启动流程

bootloader---→kernel---→applicaton

搭建嵌入式Linux开发环境主要工作

1.准备开发主机,目标机,以及二者连接介质

2.准备目标机代码

3.安装交叉工具链

4.开发主机上安装的软件(方便调试)

5.终端软件(puttyminicom

6.tftp服务(内核)

  RAM

7.nfs服务

(根目录系统)

RAM

8.目标机安装(u-boot烧写调试)

sd卡方式

Fastboot方式(成功后,板子有串口信息输出)ROM

9.主机和目标机能连通

10.网络自动tftp加载内核,并挂载nfs

roots启动

通过网络引导(tftpnfs)

android刷机流程

1、进入fastboot模式

adb

reboot bootloader

2、刷机

指定分区

擦除android

boot分区

fastboot

erase boot

system分区写入system.img文件

fastboot

flash system system.img

android编译

android源码根目录下

1.

source build/envsetup.sh #这个脚本用来设置android的编译环境;

2.

lunch #选择编译目标

1.

aosp_arm-eng

2.

aosp_arm64-eng

3.

aosp_car_arm-userdebug

4.

aosp_car_arm64-userdebug

5.

aosp_car_x86-userdebug

6.

aosp_car_x86_64-userdebug

7.

aosp_cf_arm64_phone-userdebug

8.

aosp_cf_x86_64_phone-userdebug

9.

aosp_cf_x86_auto-userdebug

10.

aosp_cf_x86_phone-userdebug

11.

aosp_cf_x86_tv-userdebug

12.

aosp_x86-eng

13.

aosp_x86_64-eng

14.

m_e_arm-userdebug

15.

mini_emulator_arm64-userdebug

16.

mini_emulator_x86-userdebug

17.

mini_emulator_x86_64-userdebug

18.

msm8909-userdebug

19.

msm8909go-userdebug

20.

msm8937_32go-userdebug

21.

msm8996-userdebug

22.

msm8998-userdebug

23.

poplar-eng

24.

poplar-user

25.

poplar-userdebug

26.

qemu_trusty_arm64-userdebug

27.

qssi-userdebug

28.

sdm660_32-userdebug

29.

sdm660_64-userdebug

30.

sdm845-userdebug

31.

uml-userdebug

3.

make #编译android整个系统

进入指定目录mm

mmm指定目录

make

bootimage -j4  #编译boot生成bootimag

make

-j 8:该指令通过-j参数来设置参与编译的线程数量,以提高编译速度。

4.mma:当前目录新增或删除文件后,可以用mma重新编译。

以上三个命令都可以用-B选项来重新编译所有目标文件。

你可能感兴趣的:(Linux系统移植及概述)