移植u-boot

Linux系统移植一:移植U-BOOT 添加自己的板子并编译(非petalinux版) 写这篇文章的初衷是不想用petalinux编译u-boot并且想自定义自己的板子 阅读详情
u-boot工程简介
--------------------------------------
    最早,DENX软件工程中心的Wolfgang Denk基于8xxrom的源码创建了PPCBOOT工程,并且不断添加处理器的支持。后来,Sysgo Gmbh把ppcboot移植到ARM平台上,创建了ARMboot工程。然后以ppcboot工程和armboot工程为基础,创建了u-boot工程。
    现在u-boot已经能够支持PowerPC、ARM、X86、MIPS体系结构的上百种开发板,已经成为功能最多、灵活性最强并且开发最积极的开放源码Bootloader。目前仍然由DENX的Wolfgang Denk维护。
    u-boot的源码包可以从sourceforge网站下载,还可以订阅该网站活跃的u-boot Users邮件论坛,这个邮件论坛对于u-boot的开发和使用都很有帮助。
    u-boot软件包下载网站: http://sourceforge.net/projects/u-boot
    u-boot邮件列表网站: http://lists.sourceforge.net/lists/listinfo/u-boot-users/
    DENX相关的网站:      http://www.denx.de/re/DPLG.html


下载u-boot源码包:
--------------------------------------
http://sourceforge.net/project/showfiles.php?group_id=65938&package_id=63695
wget -c ftp://ftp.denx.de/pub/u-boot/u-boot-1.1.5.tar.bz2


u-boot源码结构
--------------------------------------
    解压就可以得到全部u-boot源程序。在顶层目录下有18个子目录,分别存放和管理不同的源程序。这些目录中所要存放的文件有其规则,可以分为3类。
    第1类目录与处理器体系结构或者开发板硬件直接相关;
    第2类目录是一些通用的函数或者驱动程序;
    第3类目录是u-boot的应用程序、工具或者文档。

u-boot的源码顶层目录说明

目    录                特    性                解 释 说 明
board                  平台依赖          存放电路板相关的目录文件,
                                        例如:RPXlite(mpc8xx)、
                                        smdk2410(arm920t)、
                                        sc520_cdp(x86) 等目录

cpu                    平台依赖          存放CPU相关的目录文件
                                        例如:mpc8xx、ppc4xx、
                                        arm720t、arm920t、 xscale、i386等目录

lib_ppc                平台依赖          存放对PowerPC体系结构通用的文件,
                                        主要用于实现PowerPC平台通用的函数

lib_arm                平台依赖           存放对ARM体系结构通用的文件,
                                         主要用于实现ARM平台通用的函数

lib_i386               平台依赖           存放对X86体系结构通用的文件,
                                         主要用于实现X86平台通用的函数

include                通用                头文件和开发板配置文件,
                                          所有开发板的配置文件都在configs目录下

common                 通用                通用的多功能函数实现
lib_generic            通用                通用库函数的实现
net                    通用                存放网络的程序
fs                     通用                存放文件系统的程序
post                   通用                存放上电自检程序
drivers                通用                通用的设备驱动程序,主要有以太网接口的驱动
disk                   通用                硬盘接口程序
rtc                    通用                RTC的驱动程序
dtt                    通用                数字温度测量器或者传感器的驱动
examples               应用例程             一些独立运行的应用程序的例子,例如helloworld
tools                  工具                存放制作S-Record或者u-boot格式的映像等工具,
                                          例如mkimage

doc                    文档                开发使用文档

    u-boot的源代码包含对几十种处理器、数百种开发板的支持。可是对于特定的开发板,配置编译过程只需要其中部分程序。这里具体以S3C2410 & arm920t处理器为例,具体分析S3C2410处理器和开发板所依赖的程序,以及u-boot的通用函数和工具。


u-boot的编译
--------------------------------------
    u-boot的源码是通过GCC和Makefile组织编译的。顶层目录下的Makefile首先可以设置开发板的定义,然后递归地调用各级子目录下的Makefile,最后把编译过的程序链接成u-boot映像。

1.顶层目录下的Makefile
    它负责u-boot整体配置编译。按照配置的顺序阅读其中关键的几行。每一种开发板在Makefile都需要有板子配置的定义。例如smdk2410开发板的定义如下。
    smdk2410_config :   unconfig
        @./mkconfig $(@:_config=) arm arm920t smdk2410 NULL s3c24x0

    # make smdk2410_config
    Configuring for smdk2410 board...
    命令make smdk2410_config,通过./mkconfig脚本生成include/config.mk的配置文件。文件内容正是根据Makefile对开发板的配置生成的。
    ARCH   = arm
    CPU    = arm920t
    BOARD -= smdk2410
    SOC    = s3c24x0

    上面的include/config.mk文件定义了ARCH、CPU、BOARD、SOC这些变量。这样硬件平台依赖的目录文件可以根据这些定义来确定。SMDK2410平台相关目录如下。
    board/smdk2410/
    cpu/arm920t/
    cpu/arm920t/s3c24x0/
    lib_arm/
    include/asm-arm/
    include/configs/smdk2410.h

    再回到顶层目录的Makefile文件开始的部分,其中下列几行包含了这些变量的定义。
    # load ARCH, BOARD, and CPU configuration
    include     include/config.mk
    export     -ARCH CPU BOARD VENDOR SOC

    Makefile的编译选项和规则在顶层目录的config.mk文件中定义。各种体系结构通用的规则直接在这个文件中定义。通过ARCH、CPU、BOARD、SOC等变量为不同硬件平台定义不同选项。不同体系结构的规则分别包含在ppc_config.mk、arm_config.mk、mips_config.mk等文件中。

    顶层目录的Makefile中还要定义交叉编译器,以及编译u-boot所依赖的目标文件。
    ifeq ($(ARCH),arm)
    CROSS_COMPILE = arm-linux-          //交叉编译器的前缀

    ...
    export CROSS_COMPILE

    ...
    # u-boot objects....order is important (i.e. start must be first)
    OBJS = cpu/$(CPU)/start.o                  //处理器相关的目标文件

    ...
    //定义依赖的目录,每个目录下先把目标文件连接成*.a文件。
    LIBS = lib_generic/libgeneric.a           
    LIBS += board/$(BOARDDIR)/lib$(BOARD).a
    LIBS += cpu/$(CPU)/lib$(CPU).a
    ifdef SOC
    LIBS += cpu/$(CPU)/$(SOC)/lib$(SOC).a
    endif
    LIBS += lib_$(ARCH)/lib$(ARCH).a
    ...


    //然后还有u-boot映像编译的依赖关系
    ALL = u-boot.srec u-boot.bin System.map
    all:        $(ALL)
    u-boot.srec:    u-boot
        $(OBJCOPY) ${OBJCFLAGS} -O srec $< $@
    u-boot.bin: u-boot
        $(OBJCOPY) ${OBJCFLAGS} -O binary $< $@

    ...
    u-boot:        depend $(SUBDIRS) $(OBJS) $(LIBS) $(LDSCRIPT)
        UNDEF_SYM='$(OBJDUMP) -x $(LIBS) /
        |sed -n -e 's/.*/(__u_boot_cmd_.*/)/-u/1/p'|sort|uniq`;/
        $(LD) $(LDFLAGS) $$UNDEF_SYM $(OBJS) /
            --start-group $(LIBS) $(PLATFORM_LIBS) --end-group /
            -Map u-boot.map -o u-boot

    Makefile缺省的编译目标为all,包括u-boot.srec、u-boot.bin、System.map。u-boot.srec和u-boot.bin又依赖于u-boot。u-boot就是通过ld命令按照u-boot.map地址表把目标文件组装成u-boot。其他Makefile内容就不再详细分析了,上述代码分析应该可以为阅读代码提供了一个线索。

2.开发板配置头文件
    除了编译过程Makefile以外,还要在程序中为开发板定义配置选项或者参数。这个头文件是include/configs/<board_name>.h。<board_name>用相应的BOARD定义代替。
    这个头文件中主要定义了两类变量。
    一类是选项,前缀是CONFIG_,用来选择处理器、设备接口、命令、属性等。例如:
    #define   CONFIG_ARM920T          1
    #define   CONFIG_DRIVER_CS8900    1

    另一类是参数,前缀是CFG_,用来定义总线频率、串口波特率、Flash地址等参数。例如:
    #define     CFG_FLASH_BASE      0x00000000
    #define     CFG_PROMPT          "=>"

3.编译结果
    根据对Makefile的分析,编译分为2步。
    # make smdk2410_config
    # make
    编译完成后,可以得到u-boot各种格式的映像文件和符号表
    u-boot编译生成的映像文件

    文 件 名 称        说    明
    System.map        u-boot映像的符号表
    u-boot.bin        u-boot映像原始的二进制格式
    u-boot            u-boot映像的ELF格式
    u-boot.srec       u-boot映像的S-Record格式

    u-boot的3种映像格式都可以烧写到Flash中,但需要看加载器能否识别这些格式。一般u-boot.bin最为常用,直接按照二进制格式下载,并且按照绝对地址烧写到Flash中就可以了。u-boot和u-boot.srec格式映像都自带定位信息。

4.u-boot工具
    在tools目录下还有些u-boot的工具。这些工具有的也经常用到。
    工 具 名 称        说    明
    bmp_logo        制作标记的位图结构体
    img2srec        转换SREC格式映像
    envcrc          校验u-boot内部嵌入的环境变量
    mkimage         转换u-boot格式映像
    gen_eth_addr    生成以太网接口MAC地址
    updater         u-boot自动更新升级工具

    这些工具都有源代码,可以参考改写其他工具。其中mkimage是很常用的一个工具,Linux内核映像和ramdisk文件系统映像都可以转换成u-boot的格式。


u-boot的移植
--------------------------------------
    u-boot能够支持多种体系结构的处理器,支持的开发板也越来越多。因为Bootloader是完全依赖硬件平台的,所以在新电路板上需要移植u-boot程序。开始移植u-boot之前,先要熟悉硬件电路板和处理器。确认u-boot是否已经支持新开发板的处理器和I/O设备。假如u-boot已经支持一块非常相似的电路板,那么移植的过程将非常简单。
    移植u-boot工作就是添加开发板硬件相关的文件、配置选项,然后配置编译。开始移植之前,需要先分析一下u-boot已经支持的开发板,比较出硬件配置最接近的开发板。选择的原则是,首先处理器相同,其次处理器体系结构相同,然后是以太网接口等外围接口。还要验证一下这个参考开发板的u-boot,至少能够配置编译通过。
    以S3C2410处理器的开发板为例,u-boot-1.1.2版本已经支持SMDK2410开发板。我们可以基于SMDK2410移植,那么先把SMDK2410编译通过。我们以S3C2410开发板fs2410为例说明。移植的过程参考SMDK2410开发板,SMDK2410在u-boot-1.1.2中已经支持。

移植u-boot的基本步骤如下。

(1) 在顶层Makefile中为开发板添加新的配置选项,使用已有的配置项目为例。
    smdk2410_config       :       unconfig
        @./mkconfig $(@:_config=) arm arm920t smdk2410 NULL s3c24x0
    参考上面2行,添加下面2行。
    fs2410_config        :       unconfig
        @./mkconfig $(@:_config=) arm arm920t fs2410 NULL s3c24x0

(2) 创建一个新目录存放开发板相关的代码,并且添加文件。
    board/fs2410/config.mk
    board/fs2410/flash.c
    board/fs2410/fs2410.c
    board/fs2410/Makefile
    board/fs2410/memsetup.S
    board/fs2410/u-boot.lds

(3) 为开发板添加新的配置文件
    可以先复制参考开发板的配置文件,再修改。例如:
    $cp include/configs/smdk2410.h include/configs/fs2410.h
    如果是为一颗新的CPU移植,还要创建一个新的目录存放CPU相关的代码。

(4) 配置开发板
    $ make fs2410_config

(5) 编译u-boot
    执行make命令,编译成功可以得到u-boot映像。有些错误是跟配置选项是有关系的,通常打开某些功能选项会带来一些错误,一开始可以尽量跟参考板配置相同。

(6) 添加驱动或者功能选项
    在能够编译通过的基础上,还要实现u-boot的以太网接口、Flash擦写等功能。
    对于FS2410开发板的以太网驱动和smdk2410完全相同,所以可以直接使用。CS8900驱动程序文件如下。
    drivers/cs8900.c
    drivers/cs8900.h
    对于Flash的选择就麻烦多了,Flash芯片价格或者采购方面的因素都有影响。多数开发板大小、型号不都相同。所以还需要移植Flash的驱动。每种开发板目录下一般都有flash.c这个文件,需要根据具体的Flash类型修改。例如:
    board/fs2410/flash.c

(7) 调试u-boot源代码,直到u-boot在开发板上能够正常启动。
    调试的过程可能是很艰难的,需要借助工具,并且有些问题可能困扰很长时间。


添加u-boot命令
--------------------------------------
    u-boot的命令为用户提供了交互功能,并且已经实现了几十个常用的命令。如果开发板需要很特殊的操作,可以添加新的u-boot命令。    u-boot的每一个命令都是通过U_Boot_CMD宏定义的。这个宏在include/command.h头文件中定义,每一个命令定义一个cmd_tbl_t结构体。

#define U_BOOT_CMD(name,maxargs,rep,cmd,usage,help)      /
            cmd_tbl_t __u_boot_cmd_##name Struct_Section /
            = {#name, maxargs, rep, cmd, usage, help}

    这样每一个u-boot命令有一个结构体来描述。结构体包含的成员变量:命令名称、最大参数个数、重复数、命令执行函数、用法、帮助。从控制台输入的命令是由common/command.c中的程序解释执行的。find_cmd()负责匹配输入的命令,从列表中找出对应的命令结构体。
    基于u-boot命令的基本框架,来分析一下简单的icache操作命令,就可以知道添加新命令的方法。
    (1) 定义CACHE命令。在include/cmd_confdefs.h中定义了所有u-boot命令的标志位。
    #define CFG_CMD_CACHE       0x00000010ULL   /* icache, dcache       */
    如果有更多的命令,也要在这里添加定义。

    (2)实现CACHE命令的操作函数。下面是common/cmd_cache.c文件中icache命令部分的代码。
    #if (CONFIG_COMMANDS & CFG_CMD_CACHE)
    //这个函数解析参数,判断是打开cache,还是关闭cache
    static int on_off (const char *s)
    {      
        if (strcmp(s, "on") == 0) { //参数为“on”
            return (1);
        } else if (strcmp(s, "off") == 0) { //参数为“off”
            return (0);
        }
        return (-1);
    }

    //对指令cache的操作函数
    int do_icache ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
    {
        switch (argc) {
            case 2:      // 参数个数为1,则执行打开或者关闭指令cache操作
                switch (on_off(argv[1])) {
                    case 0:    
                        icache_disable();        //打开指令cache
                        break;
                    case 1:    
                        icache_enable ();        //关闭指令cache
                        break;
                }
                /* FALL TROUGH */
                case 1:      // 参数个数为0,则获取指令cache状态
                    printf ("Instruction Cache is %s/n",
                            icache_status() ? "ON" : "OFF");
                    return 0;
                default:    // 其他缺省情况下,打印命令使用说明
                    printf ("Usage:/n%s/n", cmdtp->usage);
                    return 1;
        }
        return 0;
    }
    ...
    U_Boot_CMD( //通过宏定义命令
        icache, 2, 1, do_icache, //命令为icache,命令执行函数为do_icache()
        "icache - enable or disable instruction cache/n",   //帮助信息
        "[on, off]/n"
        "    - enable or disable instruction cache/n");
    ...
    #endif
    u-boot的命令都是通过结构体__U_Boot_cmd_##name来描述的。根据U_Boot_CMD在include/command.h中的两行定义可以明白。

    #define U_BOOT_CMD(name,maxargs,rep,cmd,usage,help) /
            cmd_tbl_t __u_boot_cmd_##name Struct_Section/
            = {#name, maxargs, rep, cmd, usage, help}
    还有,不要忘了在common/Makefile中添加编译的目标文件。

    (3) 打开CONFIG_COMMANDS选项的命令标志位。这个程序文件开头有#if语句需要预处理是否包含这个命令函数。CONFIG_COMMANDS选项在开发板的配置文件中定义。例如:SMDK2410平台在include/configs/smdk2410.h中有如下定义。
    /***********************************************************
     * Command definition
     ***********************************************************/
    #define CONFIG_COMMANDS         /
                 (CONFIG_CMD_DFL | /
                 CFG_CMD_CACHE    | /
                 CFG_CMD_REGINFO | /
                 CFG_CMD_DATE     | /
                 CFG_CMD_ELF)
    按照这3步,就可以添加新的u-boot命令。

 
U-Boot 移植实操总结 这个对于我们来说基本是不可能的,这个工作一般是半导体厂商做的,半导体厂商负责将 uboot 移植到他们的芯片上,因此半导体厂商都会自己做一个开发板,这个开发板就叫做原厂开发板,比如大家学习 STM32的时候听说过的discover 开发板就是ST自己做的。因为 NAND 核心版用的 256MB的 DRAM。前两章我们都是使用的正点原子提供的 uboot,本章我们就来学习如何将 NXP 官方的 uboot 移植到正点原子的 I.MX6ULL 开发板上,学习如何在 uboot 中添加我们自己的板子。 阅读详情

相关推荐

U-BOOT源码分析及移植

本文从以下几个方面粗浅地分析u-boot并移植到FS2410板上:1、u-boot工程的总体结构2、u-boot的流程、主要的数据结构、内存分配。3、u-boot的重要细节,主要分析流程中各函数的功能。4、基于FS2410板子的u-boot移植。实现了NOR Flash和NAND Flash启动,网络功能。 这些认识源于自己移植u-boot过程中查找的资料和对源码的简单阅读。下面主要以smdk

2309

u-boot详解

Uboot获取: 首先就是uboot官网。缺点就是支持少,比如某一款具体芯片驱动等不完善。uboot官网下载地址 SOC厂商会从uboot官网下载某一个版本的uboot,然后在这个版本的uboot上加入相应的SOC以及驱动。这就是SOC厂商定制版的uboot。NXP官方的I.MX6ULL EVK板子, 做开发板的厂商,开发板会参考SOC厂商的板子。开发板必然会和官方的板子不一样。因此开发板厂商又会去修改SOC厂商做好的uboot,以适应自己的板子。 ......

chengcao123的博客 1万+

U-BOOT移植过程详解: 开题

申明   本着学习交流的原则, 将个人移植u-boot的过程做一个记录. 文章参考了csdn blog里面的很多内容, 有的已经记不得出处了, 只好把当时的摘要直接贴出来. 如果冒犯, 还请见谅. 如有侵权, 请与我邮件联系. 谢谢! U-BOOT基础知识 u-boot 简介 U-boot全称UniversalBootLoader,即通用bootloader。它是德国DENX小组的

liuxin_john的专栏 1954

U-Boot介绍及U-Boot常用命令

U-Boot,全称为Das U-Boot,是一个开源的引导加载程序,主要用于嵌入式系统中。U-Boot可以引导多种操作系统,如Linux、FreeBSD等,并支持多种架构,如ARM、x86、PowerPC、MIPS等。它的主要功能是初始化硬件、加载操作系统内核以及启动操作系统。

weixin_61385844的博客 3296

全网最全面最易懂的U-Boot解读

看了上面的源码目录结构,不知你是否发现,它跟内核的目录结构有一定的相似,仔细想想就不难明白,其实u-boot就是一个嵌入式系统,他跟那些大的,复杂的系统本质上并没有区别,都是可以让一个平台正常的工作,有驱动,文件系统,网络子系统,post,也有运行其上的应用程序等等,只是他只支持单进程,不能提供像linux中的复杂调度机制,虽然也有上面那些子系统,但是整个结构很简单,只能实现最基本的功能。总体而言,U-Boot和Linux都是复杂的开源项目,它们的开发难度取决于开发者的经验、背景知识和所涉及的具体任务。

robin__su的博客 2万+

GLMM(广义线性混合模型)原理以及分析步骤

广义线性混合模型(GLMM)是生态与进化研究中处理非正态数据的定制化工具,能同时分析固定效应和随机效应。它通过链接函数连接响应变量与预测因子,支持二项分布、泊松分布等非正态数据。研究流程包括:明确分析目标(固定效应影响与随机效应方差)、选择合适变量与分布、数据验证、参数估算(需根据模型复杂度选择PQL、拉普拉斯近似等方法)及模型优化(检验过离散与残差,通过信息准则或假设检验筛选最优模型)。GLMM能有效解决传统方法无法处理的"伪重复"和推广性问题,为复杂生物数据提供可靠分析框架。

wewil_lwin的博客 4987

UBOOT介绍

U-boot全称 Universal Boot Loader,是遵循GPL条款的开放项目,uboot 是一个裸机代码,可以看作是一个裸机综合例程,执行启动内核的功能。补充:GPL条款(GNU General Public License,GNU通用公共许可证)是一种自由软件许可证,而GNU代表“GNU's Not Unix”,是开源的操作系统项目,大多数GNU系统使用开源的Linux内核,GPL条款保证了开源内核的自由性,使用GPL条款后,

qq_47258284的博客 5636

APB Timer验证环境搭建——学习笔记(1)

以下为个人学习笔记,如有疏漏,请大家指正补充~~APB Timer是一个简单的下行计数器,包括一个32位计数器和一组比较器,可以实现多种计时功能。包括生成一次性中断或者定时中断。

qq_41651535的博客 1578

U-Boot简介

U-Boot简介 一、什么是U-Boot Linux 系统要启动就必须需要一个 bootloader 程序,也就说芯片上电以后先运行一段bootloader程序。这段bootloader程序会先初始化DDR等外设,然后将Linux内核从flash(NAND,NOR FLASH,SD,MMC 等)拷贝到 DDR 中,最后启动 Linux 内核。 uboot是一个裸机程序,比较复杂。 uboot就是一个bootloader,作用就是用于启动Linux或其他系统。Uboo最主要的工作就是初始化DDR。因为L

ypf的博客 4250

Canoe Panel基础功能介绍

CANoe Panel 是 Vector CANoe 软件中用于设计图形化操作界面的功能模块。用户可以在面板上添加合适的控件,实时的改变信号或者变量的值

m0_56208280的博客 1950

STC8H开发(十六): GPIO模拟SPI驱动Ci24R1实现低成本无线遥控

本文详细介绍了如何使用STC8H单片机通过GPIO模拟SPI驱动Ci24R1无线模块,实现低成本无线遥控方案。内容涵盖硬件设计要点、软件驱动开发技巧及实战优化经验,特别适合消费电子产品开发者参考。Ci24R1凭借其高性价比和双模协议支持,成为替代传统nRF24L01+的理想选择。

weixin_30378623的博客 349

【ZYNQ Linux移植】3-u-boot移植

ZYNQ移植Linux系统的第三期内容,介绍u-boot的移植

句点的博客 2911

利用WebDAV协议将百度网盘挂载为本地网络硬盘的完整指南

WebDAV是一种基于HTTP/HTTPS的扩展协议,它允许客户端通过标准HTTP方法对远程服务器上的文件进行读写和管理。其核心原理是通过定义如PROPFIND、PUT、GET等标准化方法,实现跨平台的远程文件系统访问。这项技术的价值在于打破了不同存储服务间的壁垒,将封闭的云存储生态接入开放标准协议体系。在工程实践中,WebDAV常被用于实现跨设备文件同步、媒体服务器集成和生产力工具数据备份等场景。通过搭建WebDAV服务器作为协议转换层,可以将百度网盘这类封闭存储服务映射为标准网络存储,实现类似bdpan

weixin_42523907的博客 2428

U-Boot移植

文章目录一、NXP官方开发板uboot编译测试1.查找NXP官方的开发板默认配置文件2.编译NXP官方开发板对应的uboot3.烧写验证与驱动测试1.检查sd卡和emmc2.检查lcd3.网络驱动4.总结二、在U-Boot中添加自己的开发板1.添加开发板默认配置文件2.添加开发板对应的头文件4.修改UBoot图像界面配置文件5.使用新添加的板子配置编译uboot6.LCD驱动修改7.网络驱动修改1.I.MX6U-ALPHA 开发板网络简介2.网络接口3.芯片选型4.原理图5.移植步骤6.网络 PHY 地

lengyuefeng212的博客 6648

LLCC68芯片系统架构与LoRa驱动开发核心解析

LoRa射频收发器是低功耗广域物联网(LPWAN)的关键组件,其本质是集成了调制解调器、协议引擎、数据缓冲区与电源管理的专用SoC。理解其工作模式状态机(Sleep/Standby/TX/RX)与SPI主机接口时序规范,是实现稳定通信的基础。LLCC68通过寄存器映射与命令集双接口抽象硬件控制,支持LoRa扩频调制与FSK兼容模式,具备高链路预算(157 dB)和DC-DC/LDO动态电源切换能力。典型应用场景包括远距离传感器节点、智能表计与工业无线监测系统。本文深入剖析LLCC68的信号链路径、中断机制与

weixin_29859471的博客 283

基于改进YOLO11的天际线检测算法:复杂光照与恶劣天气适配实战

针对特定任务的YOLO改进,不应追求通用SOTA,而应深入理解任务的物理退化机理。Retinex对应光照模型、FAD对应散射模型、Wise-IoU对应边界不确定性——每个改进都有明确的物理解释,而非盲目的模块堆叠。时序一致性:引入轻量级RNN/Transformer模块利用视频帧间信息补偿单帧退化;多模态融合:结合红外/NIR波段穿透雾霾,与可见光特征在FAD-Neck中交叉注意力融合;自监督预训练:在海量无标注天际线视频上用MAE预训练Backbone,缓解恶劣天气标注稀缺问题。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 95

U-Boot 移植

上一章节我们详细的分析了uboot 的启动流程,对uboot 有了一个初步的了解。前两章我们都是使用的正点原子提供的uboot,本章我们就来学习如何将NXP 官方的uboot 移植到正点原子的I.MX6ULL 开发板上,学习如何在uboot 中添加我们自己的板子。 ...

zhuguanlin121的博客 3876

YOLOv11 改进 - 检测头 | Detect_LSCD轻量共享卷积检测头:轻量化设计破解计算瓶颈,增强复杂场景目标感知能力

本文介绍了基于群归一化(GroupNorm)和共享卷积的轻量化检测头LSCD,并将其集成进YOLOv11。LSCD检测头充分利用了GroupNorm和共享卷积的优势,在保持特征信息有效融合的同时,减少计算量和运算复杂度。我们将LSCD的代码集成到YOLOv11检测头中,并在tasks文件中进行注册。实验证明,YOLOv11-LSCD在目标检测任务中取得了良好的效果。

魔改工程师的博客 2390

ARM平台的U-Boot移植详细步骤

介绍了RK3399的bootloader工作原理,移植U-Boot2022.01的详细流程

多年芯片设计领域从业经验,负责芯片bringup以及kernel驱动开发。 3507

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

U-BOOT的启动流程及移植

摘要:嵌入式系统一般没有通用的bootloader,u-boot是功能强大的bootloader开发软件,但相对也比较复杂。文中对u-boot的启动流程作了介绍,详细给出了u-boot在S3C44B0开发板上的移植方法和步骤。    关键词:bootloader;u-boot;嵌入式系统;移植;S3C44B01 Bootloader及u-boot简介Bootloader 代码是芯片复位

andyzx的开发日记 2873

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

u-boot的移植步骤

u-boot移植是系统移植的第一步也是为内核移植做准备工作,板子上电后,芯片内部irom里面的固化代码会判断开发板的启动方式(通过拨码开关可选择是EMMC启动还是SD卡启动),然后将U-BBOOT的第一部分代码加载到IRAM中,这段代码初始化DRAM,之后把 BL2全部加载到DRAM之中,开始初始化芯片内部设备等各种初始化,把u-boot整个代码加载到DRAM中,开始运行。      

Mario_z的博客 6350

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

U-boot 编译与移植

U-boot编译与移植

pyh1322712308的博客 980

u-boot 移植步骤详解

u-boot 移植步骤详解 来源: 互联网 发布者:书生刺客 1 U-Boot简介 U-Boot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目。从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是相应的Linux内核源程序的简化,尤其是一些设备的驱

万里晴空 2299

U-boot移植

学习如何将 NXP 官方的 uboot 移植到正点原子的 I.MX6ULL 开发板上,uboot 移植的一般流程:①、在 uboot 中找到参考的开发平台,一般是原厂的开发板。②、参考原厂开发板移植 uboot 到我们所使用的开发板上。因为我们的开发板是参考 NXP 官方的 I.MX6ULL EVK 开发板做的硬件,因此我们在移植 uboot 的时候就可以以 NXP 官方的 I.MX6ULL EVK 开发板为蓝本。

qq_66545503的博客 1274

Linux系统移植:正点原子 U-Boot 移植

Linux系统移植:正点原子 U-Boot 移植

嵌入式学习记录站点 3223
上一篇: 简单说说U-boot的修改
下一篇: U-Boot在S3C2410上的移植
menuconfig
博客等级 码龄19年 713粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值