拿到一个uboot 后,我都想添加一个属于自己的board文件以及include/configs/*.h 文件

 

如何添加这个些文件,今天来记录一下。


复制一份你所参考的板级文件,比如说board/vscom/baltos/ 复制为board/sbc7109 文件夹 修改board/sbc7109/Kconfig 里面的内容

    if TARGET_AM335X_SBC7109   // 这个是等下make menuconfig 指定的一个宏

    config SYS_BOARD            //指定你的board 文件
    	default "sbc7109"
    
    config SYS_SOC              //指定你的 soc 文件
       	default "am33xx"

    config SYS_CONFIG_NAME        //指定你的 include/configs/am335x_sbc7109.h 为配置头文件
	default "am335x_sbc7109"

    config CONS_INDEX
	int "UART used for console"
	range 1 6
	default 1
	help
	  The AM335x SoC has a total of 6 UARTs (UART0 to UART5 as referenced
	  in documentation, etc) available to it.  Depending on your specific
	  board you may want something other than UART0.

    endif


修改完这个文件之后,将board/sbc7109/Kconfig 添加到arch/arm/Kconfig 添加如下内容:

    source "board/sbc7109/Kconfig"

在最后面endmenu 之前添加。


在arch/arm/Kconfig 里面添加:

    377 config TARGET_AM335X_SBC7109        //这个宏就是上面那个 if TARGET_AM335X_SBC7109 的前置条件                                          
    378     bool "Support am335x_sbc7109"                                               
    379     select CPU_V7                                                               
    380     select SUPPORT_SPL                                                          
    381     select DM                                                                   
    382     select DM_SERIAL                                                            
    383     select DM_GPIO                                                              


复制 include/configs/baltos.h 为include/configs/am335x_sbc7109.h

    修改include/configs/am335x_sbc7109.h 里面的一个宏定义:
    #define CONFIG_SYS_LDSCRIPT     "board/sbc7109/u-boot.lds"


修改board/sbc7109/u-boot.lds 里面的一个内容

     34     .text :                                                                     
     35     {                                                                           
     36         *(.__image_copy_start)                                                  
     37         *(.vectors)                                                             
     38         CPUDIR/start.o (.text*)                                                 
     39         board/sbc7109/built-in.o (.text*)                                       
     40         *(.text*)                                                               
     41     }                                                                           


复制 configs/am335x_baltos_defconfig 为 configs/am335x_sbc7109_defconfig

    修改configs/am335x_sbc7109_defconfig 里面的内容,如下:
    将 CONFIG_TARGET_AM335X_BALTOS=y  替换为:
    CONFIG_TARGET_AM335X_SBC7109=y

修改对应board/sbc7109/MAINTAINERS 里面的内容

    BALTOS BOARD
    M:  Yegor Yefremov <yegorslists@googlemail.com>
    S:  Maintained
    F:  board/sbc7109/
    F:  include/configs/am335x_sbc7109.h
    F:  configs/am335x_sbc7109_defconfig


ok ,做完上面的动作,在u-boot 根目录进行 make am335x_sbc7109_defconfig
cat .config

     23 CONFIG_SYS_ARCH="arm"                                                           
     24 CONFIG_SYS_CPU="armv7"                                                          
     25 CONFIG_SYS_SOC="am33xx"                                                         
     26 CONFIG_SYS_BOARD="sbc7109"                                                      
     27 CONFIG_SYS_CONFIG_NAME="am335x_sbc7109"      


再进行编译

    make -j2 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的uboot看门狗驱动的示例代码: 1. 首先,在uboot目录下的include/configs/目录下添加一个新的配置文件(例如:myboard.h),并在其中添加以下宏定义: #define CONFIG_HW_WATCHDOG #define CONFIG_HW_WATCHDOG_TIMEOUT_MS 10000 //看门狗超时时间为10秒 2. 在uboot目录下的drivers/watchdog/目录下添加一个新的文件(例如:myboard_wdt.c),并添加以下代码: #include <common.h> #include <watchdog.h> #define WDT_BASE_ADDR 0x10000000 //看门狗控制器的基地址 #define WDT_CR 0x00 //看门狗控制寄存器 static void myboard_reset_watchdog(void) { writel(0x1, WDT_BASE_ADDR + WDT_CR); //重置看门狗计数器 } static int myboard_init_wdt(void) { writel(CONFIG_HW_WATCHDOG_TIMEOUT_MS * 2, WDT_BASE_ADDR + WDT_CR); //设置看门狗超时时间 writel(0x3, WDT_BASE_ADDR + WDT_CR); //使能看门狗 return 0; } static const struct watchdog_ops myboard_wdt_ops = { .start = myboard_init_wdt, .reset = myboard_reset_watchdog, }; U_BOOT_DEVICE(myboard_wdt) = { .name = "myboard_wdt", .ops = &myboard_wdt_ops, }; 3. 在uboot目录下的common/board_f.c文件添加以下代码: #ifdef CONFIG_HW_WATCHDOG extern void watchdog_init(void); void watchdog_init(void) { watchdog_register_device(&myboard_wdt); } #endif 4. 编译uboot,并将生成的u-boot.bin烧写到开发板中。现在,uboot就支持看门狗了,当uboot在指定的时间内没有收到喂狗信号时,开发板将会自动重启。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值