1.uboot本质上是一个裸机程序(不是操作系统),一旦uboot开始SoC就会单纯运行uboot(意思就是uboot运行的时候别的程序是不可能同时运行的),一旦uboot结束运行则无法再回到uboot...(所以uboot启动了内核后uboot自己本身就死了,要想再次看到 uboot界面只能重启系统。...重启并不是复活了刚才的uboot,重启只是uboot的另一生) 2. **uboot的入口就是开机自动启动,uboot的唯一出口就是启动内核** 。...给kernel传参:bootargs(内核移植中必定使用) (1)linux内核启动时可以接收uboot给他传递的启动参数,这些启动参数是uboot和内核约定好的形式、内容,linux内核在这些启动参数的指导下完成启动过程...(4)各分区的大小由系统移植工程师自己来定,一般定为合适大小(不能太小,太小了容易溢出;不能太大,太大了浪费空间) (5)分区在系统移植前确定好,在uboot中和kernel中使用同一个分区表。
Fl2440 uboot移植步骤 一.配置参数的设置 1. ...建立配置参数 方法1:添加boads.cfg root@ubuntu:/home/hfl/hflsamb/uboot/u-boot-2010.09#vi boards.cfg 238 sbc2410x...在老版本的的Uboot中,没有boards.cfg中文件,在Makefile中直接配置。...(并不等于移植,相应的板级文件还没有修改),编译一下,看能不能编译通过。...//类似于于项目中的source 建立编译环境和市场代码一样 在include 目录下生成config.mk和config.h文件 2.sudo make 编译uboot代码,生成默认的uboot镜像
移植环境 主 机:VMWare–ubuntu16.04 开发板:S3C2440 编译器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-2012.04.01.tar.bz2...获取uboot 进入https://www.denx.de/wiki/U-Boot下载uboot ?...执行以下命令解压uboot: cd /work/system tar xjf u-boot-2012.04.01.tar_2.bz2 进入文件夹配置uboot cd u-boot-2012.04.01...发生了段错误,arm-linux-ld 工具链版本不支持uboot中新的属性。我们的交叉编译链版本为3.4.5,因此,需要更换新的交叉编译链支持uboot。...所以需要分析并修改uboot
《【uboot】imx6ull uboot 2020.04源码下载和编译环境配置》 2.《【Ethernet】以太网卡LAN8720A分析和使用》 1....前言 本篇文章主要是介绍,基于IMX6ULL平台uboot来移植LAN8720A网卡驱动,代码是基于《【uboot】imx6ull uboot 2020.04源码下载和编译环境配置》这篇文章下载后的修改...IMX6ULL Ethernet LAN8720A硬件连接 IMX6ULL 平台支持2个以太网口,在uboot中我们基本上使用一个uboot就足够,所以后面主要是介绍imx6ull Ethernet2如何支持...支持LAN8720A修改步骤 基于IMX6ULL平台uboot中,修改支持LAN8720A网卡。 4. 验证测试 编译烧录后,通过使用ping命令ping通局域网的其它设备,说明网卡已经调试成功。...一般都是driver驱动确定了device tree的编写格式,对于imx6ull uboot的ETHdriver路径如下: PATH:imx-uboot/drivers/net/fec_mxc.c
在上一章,使uboot能够支持nor、nand 本节继续修改让uboot支持DM9000C网卡,便可以通过网络来传输文件 ---- 首先uboot已带有dm9000网卡的驱动,位于drivers/net.../下的dm9000x.h、dm9000x.c 1.DM9000C介绍 参考之前写的移植DM9000C驱动章节, 我们的DM9000是放在2440的bank4(0X20000000)的片选上面 而DM9000...所以我们只需要在那里修改bank4的内容即可 (也可以直接在dm9000x.c里的dm9000_initialize()函数设置) 参考之前写的移植DM9000C驱动里的时序 由于兼容DM9000E,所以修改的值尽量大一点...//gd uboot重定位地址 { ... ......由于uboot没有配置mtdparts命令,所以启动内核没成功. 接下来,在下章-设置默认环境变量,裁剪,分区里会讲到如何配置mtdparts命令
在上一章,裁剪uboot以及分区后,本章主要使uboot支持yaffs以及制作补丁 ---- 1....修改uboot支持yaffs 首先,每个命令都会对应一个文件,比如nand命令对应的common/cmd_nand.c 而我们使用nand命令时,便会进入do_nand()函数,位于common/cmd_nand.c...//创建原文件 diff -urN u-boot-2012.04.01 u-boot-2012.04.01_new > u-boot-2012.04.01_new.patch //生成补丁 移植...uboot就此结束了,接下来学习: 1.移植3.4内核-分析内核启动过程,重新分区,烧写jffs2文件系统
1.分析启动错误 上一节启动uboot出现如下所示,我们搜索下错误代码Flash: ? ...上面的Flash: *** failed *** 是属于uboot第二阶段函数board_init_r()里的代码, 代码如下所示(位于arch/arm/lib/board.c): /*第二阶段*/ void...board_init_r(gd_t *id, ulong dest_addr) //gd uboot重定位地址 { ... ... ...然后使用nor启动新的uboot,打印出调试信息: ? 打印出norflash的厂家ID=0xC2,设备ID=0x2249,显然uboot匹配读出的ID没有成功. ...然后通过uboot命令,检测nor的读写是否正确: ? 查看内容 ? ? 往内存写数据 ?
lds文件可以看出,程序入口函数为_start,下面从_start 开始分析start.s文件中有用的部分。
在上一章,我们添加了nor,nand启动后,uboot启动出如下图所示: ?...board_init_r(gd_t *id, ulong dest_addr) //gd uboot重定位地址 { ... ... ...打印出norflash的厂家ID=0xC2,设备ID=0x2249,显然uboot匹配读出的ID没有成功....如上图所示,其中CONFIG_CMD_NAND宏:表示uboot是否支持nand,在上章里,我们把它屏蔽了,接下来便取消屏蔽CONFIG_CMD_NAND宏。...下章便来学习:让uboot支持DM9000网卡,便可以通过网络来传输文件
如上图所示,其中CONFIG_CMD_NAND宏:表示uboot是否支持nand,在上章里,我们把它屏蔽了,接下来便取消屏蔽CONFIG_CMD_NAND宏。
1.去掉 "-pie"选项 参考之前uboot使用的start.S, init.c来修改uboot代码新的uboot链接地址位于0,且在arm-linux-ld时加了"-pie"选项, 使得u-boot.bin...修改include/configs/smdk2440.h文件,将CONFIG_SYS_TEXT_BASE宏改为0x33f80000,也就是uboot重定位后的位置, 这里留了512K空间供给uboot重定位...预留uboot空间为0x34000000-0x33f00000=1M ? ...然后通过旧的uboot,将新的uboot烧写到nand中 usb 1 30000000 //先下载到SDRAM上 nand erase 0 0x80000...//擦除512kb,必须大于新的uboot nand write 30000000 0 0x80000 //将SDRAM上的新uboot
让uboot在ARMer9开发系统上跑起来,目前只需要关注如下的硬件区别,解决了下面这个问题,uboot就可以在ARMer9开发系统上正常地从串口输出,进入提示符。...下载一个uboot-1.1.1.tar.bz2.; tar jxvf uboot-1.1.1.tar.bz2; 在uboot 目录board/smdk2410 下的flash.c需要修改。...目录生成uboot.bin; 通过sjf2410w程序将uboot.bin下载到nor flash中, 地址为0的地方; 串口接在UART0上,uboot的启动信息将输出。...uboot果然强大。...#tftpboot 0x33000000 zImage #bootm 0x33000000 利用uboot引导可执行映象的通用方法 uboot源代码的tools/目录下有mkimage工具,这个工具可以用来制作不压缩或者压缩的多种可启动映象文件
通过Makefile把dm9000x编译进uboot cd drivers/net vi Makefile 需要在文件中添加以下宏 ? ...(也可以直接在dm9000x.c里的dm9000_initialize()函数设置)参考之前写的移植DM9000C驱动里的时序 由于兼容DM9000E,所以修改的值尽量大一点, 修改\u-boot...网卡的初始化的流程 搜索No ethernet found, 1)uboot重定位后进入第二阶段board_init_r(): void board_init_r(gd_t *id, ulong dest_addr...) //gd uboot重定位地址 { ... ......由于uboot没有配置mtdparts命令,所以启动内核没成功. 主要修改文件:include/configs/smdk2440.h lowevel_init.s
下图为编译uboot后显示的最后一条链接命令。 ? 1.分析start.S 打开uboot.lds,发现链接地址为0,所以新的uboot只能在nor flash运行。...其实此时uboot还在flash中运行,然后会进入start.S的relocate_code()里进行uboot重定位 4.接下来进入重定位 1)start.S的relocate_code()代码如下所示...如上图所示,即使uboot在SDRAM运行,由于代码没修改,PC也会跳到0x1e0(flash地址)上,和之前老的uboot有很大区别,以前老的uboot直接是使用的SDRAM链接地址,如下图所示:...所以,新的uboot采用了动态链接地址的方法,在链接脚本uboot.lds中,可以看到这两个段(.rel.dyn、.dynsym): ? ...uboot的启动过程到此便结束了。
上章分析了uboot启动流程后,接下来便来配置新的单板,实现nor、nand启动 ---- 1.首先在uboot里新建单板2440 1.1将2410的单板文件夹拷贝成2440: cd board/samsung...(该命令便会调用include/configs/smdk2440.h和board/samsung/smdk2440里的文件来配置uboot) 3.修改uboot系统时钟 在start.S里,uboot只设置了...较大,可以使用nor上的旧uboot,通过DNW烧写新的uboot到nor上面....()函数划分uboot重定位所在区域时,是通过动态划分的....uboot支持nor flash、nand flash.
uboot的环境参数 首先,uboot会去校验(CRC)存放环境变量的一段空间 ,若CRC有效则使用该空间里的环境变量,无效则用默认的环境变量. ...而我们移植的uboot,由于一直没有使用save,所以没有读不出CRC校验,使用的默认环境变量,如下图所示: ?...就有400多k,所以我们需要裁剪uboot,裁剪后再来划分内存分区 裁剪uboot 进入smdk2440.h,把不需要的功能的宏去掉,比如usb,文件系统,rtc等 1)去掉usb支持 /**...屏蔽后,make成功,可以看到uboot只有200kb了: ?...然后重新编译新的uboot,就可以使用save命令保存环境变量了.
2)裁剪uboot 3)分区,设置mtdparts命令 ---- 1.修改之前,先来理解下uboot的环境参数 首先,uboot会去校验(CRC)存放环境变量的一段空间 ,若CRC有效则使用该空间里的环境变量...而我们移植的uboot,由于一直没有使用save,所以没有读不出CRC校验,使用的默认环境变量,如下图所示: ?...2.来修改uboot的默认环境变量 (PS:uboot此时的内存分区还没修改,所以每次设置环境后,不能用save保存,怕破坏掉nand里面的内容) 2.1搜索using default environment...就有400多k,所以我们需要裁剪uboot,裁剪后再来划分内存分区 3.裁剪uboot uboot很多文件都是基于Makefile,里面通过判断宏来加载文件.而宏大部分都定义在include/configs...屏蔽后,make成功,可以看到uboot只有200kb了: ?
上一节S3C2440移植uboot之新建单板_时钟_SDRAM_串口移植uboot初始化了时钟,配置了支持串口,这一节我们继续修改uboot支持NAND启动。...uboot之编译烧写uboot S3C2440移植uboot之新建单板_时钟_SDRAM_串口 S3C2440移植uboot之启动过程概述 S3C2440移植uboot之支持NAND启动 S3C2440...移植uboot之支持NORFLASH S3C2440移植uboot之支持NANDFLASH操作 S3C2440移植uboot之支持DM9000 S3C2440移植uboot之裁剪和修改默认参数 S3C2440...移植uboot之支持烧写yaffs映像及制作补丁 1.去掉 “-pie”选项 参考之前uboot使用的start.S, init.c来修改uboot代码新的uboot链接地址位于0,且在arm-linux-ld...下一节S3C2440移植uboot之支持NORFLASH我们将移植uboot支持我们的s3c2440。
3.修改uboot系统时钟 从start.s开始分析启动过程,阅读代码发现不足:UBOOT里先以60MHZ的时钟计算参数来设置内存控制器,但是MPLL还未设置 ? ? ? ...4.烧写修改后的uboot 烧写测试时,由于新的uboot较大,可以使用nor上的旧uboot,通过DNW烧写新的uboot到nor上面. 由于我们的分区不够大,所以使用命令烧写 ?...才行 cp.b 30000000 0 80000 //将SDRAM上的新的uboot.bin,拷贝到nor上(烧写512K) ? ...烧写完成后,重启,通过JTAG调试的读地址命令, 判断是否与新uboot文件一致使用JTAG调试时,发现向0x30000000地址上写值出错 ? ...fs/yaffs2/libyaffs2.o: In function `yaffs_StartUp': /home/book/Par_Uboot/mk_uboot/u-boot-2012.04.01/fs
,用户可通过该接口执行uboot定义的命令,以用于查看系统状态,设置环境变量和系统参数等。...为了方便对硬件和驱动的管理,uboot还引入了类似linux内核的设备树和驱动模型特性。...关于uboot镜像与dtb之间的关系后续在分析,先梳理流程。...uboot与dtb可以有以下几种打包组合方式: 若定义了CONFIG_OF_EMBED选项,则在链接时会为dtb指定一个以__dtb_dt_begin开头的单独的段,dtb的内容将被直接链接到uboot.bin...对上可以为同一类设备提供统一的操作接口,对下可以为驱动提供标准的注册接口,从而提高代码的可重用性和可移植性。同时,驱动模型通过树形结构组织uboot中的所有设备,为系统对设备的统一管理提供了方便。
领取专属 10元无门槛券
手把手带您无忧上云