S3C6410嵌入式应用平台构建(四)——linux-3.14.4移植到OK6410-(初步启动)

此次,仍是把基本的基于我目前最新的Linux源码进行移植到OK6410吧,同时也写下我移植过程当中遇到的问题及解决方法,不过有些方法是借鉴网上的,有些是本身加的,会有一些小bug。node

    1、基本工做linux

    1. 源码下载    https://www.kernel.org/   ,最好是下载stable版本,不然会有小bug。(我如今调试的是stable版本, linux-3.14.4)git

    2. 拷到本身的文件夹下解压,我下的是.xz后缀的,这样文件比较小,只是解压时多一个步骤。shell

      $ xz –d linux-3.14.4.tar.xzapp

      $ tar xvf linux-3.14.4.taride

   3. 解压完后,进入解压后的目录svn

 

   2、源码修改工具

    1. 修改根目录下的Makefile,针对修改arch和cross_compile,以下:oop

   2. 添加相关型号mach文件布局

    目前最新内核已经支持好几种开发板,咱们先从最基本的6410开始,选择mini6410,基于mini6410来修改配置,所以,进入arch/arm/mach-s3c64xx目录,拷贝mach-mini6410.c,重命名为mach-ok6410.c,下面须要对该文件进行一些修改:

    2.1 将代码中替换为6410, 以下: mini6410->ok6410;  MINI6410->OK6410

    2.2 而后修改nand分区信息,修改static struct mtd_partition ok6410_nand_part[],这个修改须要结合你以前移植Uboot及你本身定义的分区布局。个人是这样的。


   2.3 既然咱们添加了一个文件,依据linux添加文件的规则,咱们还修改相对应目录下Makefile和Kconfig

   修改kconfig,参照MINI6410的配置,添加OK6410,以下:


      修改Makefile,加入ok6410

3. 修改arch/arm/tools/mach-types文件,加入OK6410的mach-type,这个必须和U-BOOT中的MACH-TYPE一致,这里选用smdk6410的mach-type:1626

4. Menuconfig配置

    回到主目录下,咱们选用针对6400的默认配置,在此基础上进行配置。复制config下的s3c6400_defconfig到主目录并重命名为.config文件

  $  cp arch/arm/configs/s3c6400_defconfig  ./.config
  $  make menuconfig

  进入后作以下配置:(这里说一下:此状况下删除你的输入,须要按delete+shift,按backspace是没用的)

  4.1 选择General Setup,打开Cross_compiler tool perfix,输入arm-linux-

image
4.4 选择System Type, 取消其余6410,只选择OK6410

image 

4.3 选择Kernel Features , 选择如下两项

image

4.4 为了调试方便,咱们顺便把nand flash的debug也打开,并选择硬件ECC。

      Device Drivers—>Memory Technology Device(MTD) support—>NAND Device Support—>

image

      完成以上配置后,保存退出!

      在主目录下执行,make uImage( 前提是你已经把Uboot tools/下的mkimage工具拷贝到/bin目录下)

     最后在编译完成后,输出信息以下:

image

    经过tftp下载到板子上,运行后界面以下:

image

     从上面咱们能够看出,内核加载地址和入口地址是同样的:50008000,这是不合理的,入口地址应该是50008000,由于是uImage,须要在入口处添加文件头。

   所以咱们进行以下修改:

   修改scripts/下的makefile.lib文件:将UIMAGE_ENTRYADDR ?= $(UIMAGE_LOADADDR) 改成:

   IMAGE_ENTRYADDR ?= $(shell echo $(UIMAGE_LOADADDR) | sed -e "s/..$$/40/")

修改后,再次make uImage, 编译完后的输出信息以下:

image
从上面咱们能够看出,入口地址已经变为50008040,

下载到板子上,已经能够引导内核了。

从log能够看出,咱们的nand flash并无识别到,由于出错在这里:

[06/08-11:25:41:371]s3c24xx-nand s3c6400-nand: failed to get clock

[06/08-11:25:41:371]s3c24xx-nand: probe of s3c6400-nand failed with error –2

为了方便阅读,我仍是在下一篇文章写吧,目前这个问题是须要解决的。

 

完整启动log以下:

相关文章
相关标签/搜索