环境搭载与移植步骤集合

1.Uboot移植

                  uboot是一段运行平台初始化的代码!

                 uboot分为 BL1、 BL2、 uboot.bin

                 uboot是一个相对比较复杂的裸机程序!

       源码包:uboot_tiny4412-sdk1506.tar.bz2

移植步骤:

  1. 把源码包使用共享文件夹复制到linux下的 /work目录

             命令:

                 mkdir  /work

                 cd  /work

                 cp  /mnt/hgfs/xxx/uboot_tiny4412-sdk1506.tar.bz2  /work

     2.解压源码包,进入解压后的目录

            命令:

                tar  -xf  uboot_tiny4412-sdk1506.tar.bz2

                cd  uboot_tiny4412-sdk1506

     3.编译uboot源码、得到bl1.bin  bl2.bin  uboot.bin

           命令:

               在uboot源码包顶层目录输入:

               make  clean //清除编译过程中生成的中间文件

               make  distclean //清除源码中的配置信息

               make  tiny4412_config //配置当前uboot适用平台

               make -j4 //编译源码

    4.烧录uboot到SD卡

        命令:

           cd  sd_fuse/tiny4412/

           /sd_fusing.sh  /dev/sdb

  5.烧录完成!拔出SD卡,放入到开发板!

 

2.内核裁剪移植

                menuconfig配置详解:https://blog.csdn.net/fanle76/article/details/52330265

                           内核源码是大量模块代码的集合!

                           每一个模块代码都是大量的.c 和 .h文件组成的!

                           内核是系统所有功能的集合!

                           内核镜像是一个二进制文件,是一个大型可执行程序!

                     内核源码包:linux-3.5.buildok.tar.gz

内核移植步骤:

  1. 把内核源码包复制到linux系统下的 /work/目录下,并解压!

                     命令: 

                              cp  /mnt/hgfs/xxxxx/linux-3.5.buildok.tar.gz  /work/

                              cd  /work

                              tar  xf  linux-3.5.buildok.tar.gz

    2.解压完成后,进入解压后目录。

                  命令:

                            cd  linux-3.5/

    3.内核源码裁剪,去掉不需要的模块,保留需要的模块!

                 命令:

                           make  clean

                          make  distclean

                          cp  tiny4412_linux_defconfig   .config

                          make  menuconfig

             进入配置菜单:

                         system type

                               --> Support TrustZone-enabled Trusted Execution Environment [去掉该选项]

            保存退出!

    4.编译内核源码,生成内核镜像zImage。路径:arch/arm/boot/zImage

              命令:

                        make  -j8

   5.进入内核镜像所在目录,编写烧录脚本,烧录zImage镜像!

              命令:

                      cd  arch/arm/boot/

                      vim  sd_fusing.sh

           编辑:(seek=1057 是bl1、bl2的大小)

#!/bin/bash
if [ -e /dev/sdb ]
then
   echo fusing...
   dd iflag=dsync oflag=dsync if=./zImage of=/dev/sdb seek=1057
else
   echo  /dev/sdb is not find!
   exit -1
fi
   echo fused OK!!!

                    chmod  777  sd_fusing.sh

    6.烧录: 插入SD卡

                   ./sd_fusing.sh

    7.烧录完成,拔出SD卡!

补充:

             内核源码的默认配置文件是: .config

             内核配置方法有以下三种:

      方法1:在终端一个一个功能的询问! 

                   make  config

      方法2:Qt风格的内核配置菜单

                   make  xconfig

      方法3:由shell脚本勾画出来的内核配置菜单

                   make  menuconfig

                   menuconfig菜单使用方法:

                                  上下键:选项之间切换

                                  左右键:操作方式之间切换  <select  exit   help>

                                  空格键:对选项进行选择<勾选/取消>

                                  回车键:执行操作 <进入下级菜单(select),返回上级菜单(exit)>

 

     怎么把一个外来的模块代码添加到内核中!

                        需要文件:Makefile  Kconfig  源码

                        Makefile编写格式: 

                                           obj-$(CONFIG_xxxx)  +=  xxyy.o

                        Kconfig编写格式:

                                          菜单选项声明:<二选一>   声明后面跟随 要定义的Makefile变量

                                                          menuconfig :声明一个用于配置Makefile的变量。每一个变量对应一个菜单选项。

                                                                               以menuconfig声明的菜单选项,拥有子菜单!

                                                          config : 声明一个用于配置Makefile的变量。每一个变量对应一个菜单选项。

                                                                               以config声明的菜单选项,没有子菜单!

                                         Makefile变量配置方式:<二选一>  其后跟随 菜单选项名称

                                                          bool :该变量对应的选项只有两种配置结果! [y / n]

                                                          tristate :该变量对应的选项有三种配置结果! <y / m/ n>

 

                                                         default :该变量对应的选项的默认配置结果!

                                                         depends  on :该变量对应的选项配置的时候,需要依赖的条件。(该选项配置的前置条件)

                                                         select : 跟随该变量改变而改变的变量! (跟随变量会自动根据当前变量的值而同步改变)

                                                         help :描述信息! 随意...

                       注意:Kconfig编写好之后,需要在上级目录下的Kconfig中调用!

 
 

猜你喜欢

转载自blog.csdn.net/qq_35769746/article/details/81200001