sabre sd如何在没有SPL的情况下直接从uboot启动
Saber SD基于IMX-6,其最大内部RAM约为150kb.但是,UBOOT足够大,可以适合该空间.在这种场景中,情况如何工作? https://community.frees.freescale.com/docs/docs/doc-95015 在此FreeScale文档中,只有Uboot用于为Saber SD启动创建SD卡. 解决方案 简短的答案:SRAM有多小,因为U-Boot本身显然不会走到任何地方. 主要的赠品是MX6QSABRESD配置设置的入口点为0x17800000,根据内部ROM加载器将SD卡偏移0x400的图像的第一个4K读取到内部RAM中以查看标题.此标头(在u-boot.imx图像中)包含u -boot图像的大小和DRAM负载地址,以及一大堆配置寄存器数据 - 从building mx6qsabresd_config我看到它来自board/freescale/mx6sabresd/mx6q_4x_mt41j128.cfg,并且短暂地交叉 - 检查
12 2023-11-02
编程技术问答社区
SPL(辅助程序加载器)的用途是什么
我对清除这三个问题的概念感到困惑 为什么我们需要一个辅助程序加载程序? 在哪个内存中加载和重新定位? 系统内部内存和RAM有什么区别? 据我所知,当系统内存无法完全固定UBOOT时,需要需要SPL,因此我们需要使用称为SPL 的最小代码来初始化内存. SPL实际上是重新定位还是仅仅是自我重新定位的UBOOT? 解决方案 让我使用 omap 平台作为示例实际背景,而不仅仅是理论或常识). 看看初学者的一些事实: 在基于OMAP的平台上,Power-On之后运行的第一个程序是 rom代码(与PC上的BIOS相似). ROM代码寻找Bootloader(必须是名为" MLO"的文件,并位于MMC的主动第一分区,必须将其格式化为FAT12/16/32,但这是详细信息) ) rom代码将该" mlo"文件的内容复制到 static ram (因为常规RAM尚未初始化).下一张图片显示OMAP460的SRAM内存布局 soc : SRAM内存有限(由
14 2023-11-01
编程技术问答社区
U-boot CONFIG_SYS_TEXT_BASE和SDRAM之间的关系
目前,我对U-Boot的理解如下 ROM代码负载spl SPL初始化RAM,然后将U-Boot加载到 config_sys_text_base RAM地址 u-boot自身重新定位 启动内核 我检查了我的u-boot配置, config_sys_text_base 是0x80000000,但我很好奇,我的RAM大小只有1G,它仍然可以正常工作. 1g等于0x40000000,小于0x80000000 所以,我想知道我是否对 config_sys_text_base 或我的概念是错误的? 解决方案 我检查了我的u-boot配置,config_sys_text_base是0x80000000,但我很好奇,我的RAM大小只有1G,仍然可以正常工作. 1g等于0x40000000,小于0x80000000 所以,我想知道我是否对config_sys_text_base或我的概念错了? 您对CONFIG_SYS_TEXT_BASE的理解是
62 2023-07-24
编程技术问答社区
什么是u-boot闪存文件的结构?( ARM通用的pb )
我正在努力创建可以加载QEMU的-Kernel选项的文件.我主要介意在这里我发现的信息应放在文件中的某个地方.该文件必须包含U-Boot二进制文件,FreeBSD内核和RTOS(因此我可以选择要加载的内核或在同时加载2 OS时进行一些实验开发 - 在第二个核心上加载弗雷托斯 - 所谓的ASMP).似乎没有任何工具以自动方式执行此操作(我的意思是在一个闪存文件中支持多个内核).因此,我需要知道如何制作我的u-boot flash文件并将其传递给qemu auming am versatilepb. qemu-system-arm -M versatilepb -m 128M -nographic -kernel myflashfile 解决方案 因此,此处的答案部分取决于您使用QEMU模拟的板.接下来,不幸的是,VersatilePB不久前已从Mainline U-Boot删除(作为ARM926EJS,它不是ASMP的理想核心,您可能希望尝试尝试使用Vexpress A9).现
16 2023-07-16
编程技术问答社区
实施自定义的u-boot命令
我想将自定义命令命令添加到u-boot是一个简单的Hello World命令. 搜索后,我找到了此链接 yocto yocto u-boot自定义命令在cmd/misc.c中查看timer命令作为起点. 如何将此timer命令带到我的U-Boot图像? 我认为我对makefile进行了更改,但不确定我应该编辑哪个makefile. 我正在使用QEMU使用以下方法 在Ubuntu 18.04中测试u-boot图像 从github克隆了u-boot源. 在系统中安装了所有构建依赖项. 使用make qemu_arm_config ARCH=arm CROSS_COMPILE=arm-none-eabi- 准备了U-Boot配置文件 构建U-Boot make all ARCH=arm CROSS_COMPILE=arm-none-eabi- 使用U-Boot Image启动QEMU qemu-system-arm -M virt -nographic -kern
34 2023-07-16
编程技术问答社区
u-boot: 无法启动Linux内核,尽管内核小于最大的BOOTM_LEN。
我有一个带有U-Boot的MIPS系统(VSC7427),我正在尝试启动比供应商在其GPL版本中提供的内核更近的内核(该内核(该内核.com/halmartin/36a7ca3308be9a637abab6a17376593e" rel =" nofollow noreferrer">靴子很好). 内核拟合图像似乎很理智,从我认为应该可以启动的输出来判断: U-Boot 2019.10 (Mar 28 2021 - 20:41:55 +0000) MSCC VCore-III MIPS 24Kec Model: Cisco Meraki MS220-8P DRAM: 128 MiB Loading Environment from SPI Flash... SF: Detected mx25l12805d with page size 256 Bytes, erase size 64 KiB, total 16 MiB OK In: serial@10100000
26 2023-06-19
编程技术问答社区
Linux编译 | 无效的进入点
我正在编译一切正常,除了在最后一点说明入口点的最后一点: sh: 0: Can't open /arch/mips/boot/tools/entry rm -f arch/mips/boot/vmlinux.bin.gz gzip -9 arch/mips/boot/vmlinux.bin mkimage -A mips -O linux -T kernel -C gzip \ -a 0x80010000 -e \ -n 'Linux-2.6.31.3-g29b45174-dirty' \ -d arch/mips/boot/vmlinux.bin.gz arch/mips/boot/uImage mkimage: invalid entry point -n 现在提到sh: 0: Can't open /arch/mips/boot/tools/entry 所以我检查了该文件,并具有以下内容: #!/bin/sh # grab the
22 2023-06-19
编程技术问答社区
u-boot如何在bootargs中没有控制台参数的情况下启动,并且仍然可以打印出内核的日志和所有的内容。
我目前正在使用Uboot启动Linux内核.我没有在控制台参数中提到TTYS0或任何内容.我只有在没有控制台参数的情况下才能看到输出,如果我指定了"启动内核..."之后日志停止.因此,我试图找到Linux内核是否使用U-Boot串行驱动程序来打印和获取字符.但是,当我进行少量更改或在驱动程序中添加打印语句时,我可以看到该更改,直到u-boot命令行启动时看不到它们.我想知道哪个驱动程序被用于打印数据并从控制台获取数据. 编辑(1):在与TTY驱动程序一起工作后,我现在在控制台上获得打印语句.请参阅下面的日志: [ 0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x84000000 [ 0.000000] Linux version 5.5.0-rc1-00032-g264b43306b8c-dirty (venkatakrishnan@venkatakrishnan-ubuntu) (gcc versi
10 2023-06-19
编程技术问答社区
ARM LINUX ":start_kernel is not calling after decompressing uImage"
start_kernel()函数在解压缩臂板上的内核图像(uimage)之后未调用: 为什么start_kernel()函数未调用?我知道它应该从file 拱门/臂/内核/head.s .. 解压缩后发生了什么序列并调用start_kernel()? 解决方案 " Uncompress Linux…好的,启动内核"之后,引导停止的最常见原因是内核命令行中的控制台设备不正确.例如,在将2.6.35升级到3.19.5之后,控制台设备名称可能已经从/dev/ttyAM0更改为/dev/ttyAMA0(在I.MX23/28上).您还应检查串行端口设置(如果有的话)是否正确. 检查您是否正在通过启动加载程序传递有效的ATAG数组或设备树(*.DTB)文件. 另一个可能的原因是不正确的入口点. 尝试搜索引擎短语"'uncompress linux之后,手臂靴子悬挂....完成,启动内核' 其他解决方案 嵌入式Linux的引导以3个步骤完成: bootloa
8 2023-06-19
编程技术问答社区
u-boot在 "解压/加载内核图像 "时挂起。
这是对先前问题的后续行动( u-boot:尽管内核小于最大bootm_len )在同一平台上无法引导Linux内核(MIPS VSC7427). 我试图引导Linux 5.11,U-Boot悬挂在"未压缩内核图像"(GZIP压缩)上: U-Boot 2019.10 (Mar 28 2021 - 20:41:55 +0000) MSCC VCore-III MIPS 24Kec Model: Cisco Meraki MS220-8P DRAM: 128 MiB Loading Environment from SPI Flash... SF: Detected mx25l12805d with page size 256 Bytes, erase size 64 KiB, total 16 MiB OK In: serial@10100000 Out: serial@10100000 Err: serial@10100000 Net: Warning:
90 2023-06-19
编程技术问答社区
ARM板的启动问题
我正在移植 linux kernel en.wikipedia.org/wiki/texas_instruments" rel =" nofollow noreferrer"> ti ( AM335X SK)板.但是,在启动板时,它并没有充分加载.它停止如下所示. Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 3126496 Bytes = 3 MiB Load Address: 80008000 Entry Point: 80008000 Verifying Checksum ... OK XIP Kernel Image ... OK OK Starting kernel ... Uncompressing Linux... done, booting the kernel. 这是什么根本原因? 解决方案 嵌入式Linux的引导以3个步骤完成:
12 2023-06-10
编程技术问答社区
USB-OTG可以用于U-Boot和Linux控制台吗?
我有一个基于自定义I.MX6Q的板,具有工作U-Boot和Linux(Ubuntu)设置.微型和董事会对USB-OTG和一个串行端口都有支持;当前,串行端口为U-Boot和Linux提供控制台.但是,我们可能需要将串行端口用于另一个目的,但是我们不想丢失U-Boot和Linux的控制台.是否可以将USB-OTG端口用于U-Boot和Linux的系统控制台? 我已经进行了一些研究,发现了几篇有前途的文章在这里和在这里,尽管第二篇文章说这个花絮: 不幸的是,它无法作为系统控制台工作,因为小配件驱动程序被加载为模块,但我们可以将其用于串行控制台. 我不确定自己理解这一点,但听起来该方法无法满足我的需求,即在U-Boot和Linux系统控制台上都使用USB-OTG.我确实尝试了这些方法,但是没有运气,这可能意味着U-Boot和Linux不能适当地用于所需功能. 所以这是我的问题: 这个可以适用于U-Boot? 这个可以适用于Linux? 我很疯狂地考虑这条道路吗
38 2023-04-19
编程技术问答社区
如何在u-boot中禁用串行控制台(非内核)?
我正在为Intel Edison构建Yocto图像. 图像的一个组件之一是带有爱迪生特定贴片的U-Boot.默认情况下,爱迪生的UART端口用于U-Boot控制台.我想禁用此功能,但仅在串行界面上(u-Boot也在USB上听,这需要留下). 我的主要关注点是" " UART端口上的任何键停止Autoboot "功能.我需要此端口来连接可能在主设备的引导过程中发送某些内容的附件. 我如何解决这个问题?是否有一个环境变量,或者我需要修改来源? 预先感谢! 解决方案 我将近一年后回到这个问题,现在我设法找到了一个适当的解决方案. 我正在使用的董事会在其 bsp 中有一个合理的新 u-boot .要禁用串行控制台,我必须执行以下操作: 添加以下定义为董事会的配置标头(位于 include/configs/board.h 中): #define CONFIG_DISABLE_CONSOLE #define CONFIG_SILENT_CON
44 2023-04-19
编程技术问答社区
为什么U-Boot不能禁止控制台输出?
我有一个由串行调试端口访问的系统.我想禁用在U-Boot引导过程中制定的所有输出.因此有 setenv沉默1 参数,我将其放入bootcmd字符串中,例如: #define config_bootCommand" setenv silent 1;" \ " bootm" 有 #define config_silent_console 命令,两个都在工作( 打印出的线仍然相同,启动时间没有更改).有人看到错误吗? 解决方案 u-boot正在使用以下命令进行应有的工作(沉默输出): #define config_extra_env_settings \ "silent=1\0" \ 参见其他解决方案 对于我的目标,U-Boot基线2013.10,Silent Emverionical变量在内核启动时间工作,但需要更多定义: #define CONFIG_SILENT_CONSOLE #define C
26 2023-03-28
编程技术问答社区
从u-boot向Linux内核传递大量二进制数据
在IMX50臂板上将大量数据(3 MB)从Uboot到Linux内核2.6.35.3存在一些问题.此数据是内核设备驱动器探针功能中需要的,然后应将其发布.首先,从Flash到RAM的UBOOT加载数据,然后使用Bootargs传递Linux内核的物理地址.在内核中,我尝试使用Arch/Arm/Arm/bernel/setup.c文件中的Reserve_Resource()保留一定数量的内存: --- a/arch/arm/kernel/setup.c Tue Jul 17 11:22:39 2012 +0300 +++ b/arch/arm/kernel/setup.c Fri Jul 20 14:17:16 2012 +0300 struct resource my_mem_res = { .name = "My_Region", .start = 0x77c00000, .end = 0x77ffffff, .flags = IORES
24 2023-03-24
编程技术问答社区
如何测试U-Boot CLI中命令的返回情况
我想在u-boot中的if语句中使用命令" gpio输入"的返回,但似乎不起作用. 所以我尝试了类似: if test {gpio status 50} -eq 1; then echo 1; else echo 0; fi; 但是它总是返回1,无论GPIO高还是低. 我还尝试通过使用SETENV命令将GPIO状态命令的结果存储到变量中,但它也不起作用. ps:我已经在u-boot源代码中修改了gpio.c文件,因此命令仅返回'0'或'1'而不是'gpio:pin 50(gpio 50)值为1',但我i认为没关系.刚好算,因为否则" -eq 1"是没有道理的. 您是否知道如何继续这样做? 预先感谢! 解决方案 可以在环境变量$上找到命令的返回值,例如 gpio input 50; echo $? 如果存在if语句,则取决于编译U-Boot时的配置.使用config_hush_parser = y启用它.启用时,您可以写 i
30 2023-03-21
编程技术问答社区
在beaglebone black上卸载mmcblk1p1时出错--在重新分区和格式化时出错
嗨,我是嵌入Linux的新手.我正在关注本教程(https://e2e.ti.com/support/embedded/linux/f/354/t/398780?Script-to-Erase-Emmc-independently-Beagle-Bone-Black)用于将我的Linux系统刷到BeagleBone EMMC. 但是我有一个错误:umount: can't umount /dev/mmcblk1p1: Invalid argument 这是我的CMD: Disk /dev/mmcblk1: 3825 MB, 3825205248 bytes 4 heads, 16 sectors/track, 116736 cylinders Units = cylinders of 64 * 512 = 32768 bytes Device Boot Start End Blocks Id System /dev/mm
20 2023-03-09
编程技术问答社区
未找到UBI布局卷
我正在关注实践实验室指导 )我被困在整个系统上. 他们要求我将DTB,内核,根文件系统和数据文件系统放在UBI映像中要写入Flash上,或-22在嵌入的Linux环境中). 详细说明 (要查看我的实际问题,请转到问题的结尾) 在U-Boot中,分区由mtdparts定义: device nand0 , # parts = 8 #: name size offset mask_flags 0: bootstrap 0x00040000 0x00000000 1 1: uboot 0x00080000 0x00040000 1 2: env 0x00040000 0x000c0000 1 3: envbackup
18 2023-03-09
编程技术问答社区