[嵌入式linux] 为新板卡创建 u-boot 和kernel 配置文件

3 篇文章 0 订阅

u-boot

u-boot源码地址 Version: 2018.1
依照 zynq_zybo 板移植U-boot,依次操作(<ubootdir>= /home/myhome/Xilinx/u-boot-xlnx/):

  1. 首次配置u-boot,进入到uboot根目录,做一次make distclean

  2. 获取配置文件 zynq_my_new_board_defconfigzynq_my_new_board.h
    依照zybo修改,即该将 zynq_zybo 改为 zynq_my_new_board

    cd <ubootdir>/configs/
    cp zynq_zybo_defconfig zynq_my_new_board_deconfig
    
    cd <ubootdir>/include/configs/
    cp zynq_zybo.h zynq_my_new_board.h
    
  3. 获取设备树 zynq-my-new-board.dts

    cd <ubootdir>/arch/arm/dts/
    cp zynq-zybo.dts zynq-my-new-board.dts
    
    # 根据需求修改设备树 ...
    # vim zynq-my-new-board.dts
    
  4. 获取设备树编译器:sudo apt-get install device-tree-compiler

  5. 导入配置并进入图形配置界面:

    cd <ubootdir>
    make ARCH=arm zynq_my_new_board_deconfig
    make ARCH=arm menuconfig
    
  6. 进入图形界面:

    • 修改设备树文件名:
      Device Tree Control —> (zynq-my-new-board) Default Device Tree for DT control

    • 修改板名:
      ARM architecture —>(zynq_my_new_board) Board configuration name 该名称在uboot编译时决定包含哪个配置文件,这个配置将引用 #/include/configs/zynq_my_new_board.h

    • 其他 控制器驱动程序 或 设备驱动程序 配置

    • 将新的配置文件保存为默认配置

      cp .config configs/zynq_my_new_board_deconfig
      
  7. 编译 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-,在<ubootdir>下生成 u-boot文件。

kernel

Kernel 源码: xlnx_rebase_v4.19_2019.2: kernel version 4.19.0

  1. 获取内核板级配置文件: my_new_board_defconfig

    tar xvf linux-xlnx-xlnx_rebase_v4.19_2019.2.tar.gz
    cd linux-xlnx-xlnx_rebase_v4.19_2019.2/
    cd arch/arm/configs/
    # 由于主芯片系列为zynq,因此以 zynq 作为 配置模板
    cp xilinx_zynq_defconfig my_new_board_defconfig
    
  2. 驱动移植

    以移植 Digilent AXI Dynamic Clock为例:

    1. 获取源文件

      cp clk-dglnt-dynclk.c <kernel_root>/drivers/clk
      
    2. 添加编译规则

      cd <kernel_root>/drivers/clk
      vim Makefile
      # Makefile 新增 obj-$(CONFIG_COMMON_CLK_DGLNT_DYNCLK)	+= clk-dglnt-dynclk.o
      
    3. 向menuconfig中增加目录

      cd <kernel_root>/drivers/clk
      vim Kconfig
      

      新增以下信息:

      config COMMON_CLK_DGLNT_DYNCLK
      tristate "Digilent axi_dynclk Driver"
      depends on ARCH_ZYNQ || MICROBLAZE
      help
      ---help---
      Support for the Digilent AXI Dynamic Clock core for Xilinx
      FPGAs.
      
  3. 内核配置

    cd <kernel_root>
    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- my_new_board_defconfig
    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
    
    # Enable Digilent AXI Dynamic Clock driver
        Device Drivers  --->
            Common Clock Framework  --->
                <*> Digilent axi_dynclk Driver
    

    保存修改后的内核配置

    cd <kernel_root>
    cp .config arch/arm/configs/my_new_board_defconfig
    
    
  4. 为板卡创建设备树

    内核目录新增 : arch/arm/boot/dts/my-new-board-top.dts

    arch/arm/boot/dts/Makefile中添加 :

    # 略....
    dtb-$(CONFIG_ARCH_ZYNQ) += \
    # 略....
    # 添加
        my-new-board-top.dtb
    # 略....
    
  5. 编译

    • 设备树编译
      make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs
    • 内核编译
      make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- UIMAGE_LOADADDR=0x00008000 uImage
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值