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,并且短暂地交叉 - 检查
4 2023-05-12
编程技术问答社区
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-05-11
编程技术问答社区
ARM板的启动问题
我正在移植 linux kernel en.wikipedia.org/wiki/texas_instruments" rel =" nofollow noreferrer"> ti (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个步骤完成: bootloader 低级硬件初始化 将Linux内核加载到RAM中,并将控制权传递到Linux Bootst
14 2023-04-19
编程技术问答社区
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? 我很疯狂地考虑这条道路吗
14 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
28 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
10 2023-03-28
编程技术问答社区
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:
26 2023-03-28
编程技术问答社区
U-Boot:尽管内核小于最大bootm_len,但仍无法引导Linux内核
我有一个带有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
12 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
8 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
10 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
8 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
6 2023-03-09
编程技术问答社区
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的理解是
86 2023-03-09
编程技术问答社区
在使用u-boot启动时,zImage没有发生解压。
我正在使用Microzed 7010板工作,我有手动编译的内核,U-Boot,FSBL和.bit(Vivado).所有设置都可以很好地启动(不使用Petalinux).但是我已经注意到,内核不是用zimage或uimage的uncompress -nem> uncompress -em>.而我可以看到带有Petalinux图像的引导袋. 输入: 1. Zimage Env是 zImage=tftpboot 0x3000000 zImage && tftpboot 0x2A00000 system.dtb && bootz 0x3000000 - 0x2A00000 2.引导日志是=> Zynq> run zImage [2017-10-25 15:57:11 ethernet@e000b000 Waiting for PHY auto negotiation to complete......... TIMEOUT ! [2017-10-25 15:57:15
12 2023-03-09
编程技术问答社区
基于BBB的DT方法
我已经成功地使用了平台设备模型为我的自定义协议实现了基于GPIO的驱动程序. 我想使用设备树方法升级它.因此,对于初学者,我有一个beaglebone黑色,我已经使用设备树配置在显示 的UBOOT控制台消息中启用和验证了内核. 验证校验和 扁平的设备树斑点在80f80000 使用FDT Blob启动0x80F80000 xip内核图像...好 确定 在80f80000处使用设备树,结束80f899de 我将条目添加到板上公共文件节点名称my_gpio {compatible =" my_gpio"} 然后我构建通常的过程使UIMAGE DTBS loadAddr .... 最后,我使用DTB获得了uimage. 在我的驱动程序中,我使用了相同的字符串" my_gpio"为.Name属性. 但是我的探测方法没有被调用,哪个是因为它找不到任何兼容设备. 任何帮助建议都很棒. 在我的驱动程序中: static stru
2 2023-03-09
编程技术问答社区
在 "用命令重新启动系统 "之后,引导器如何接收命令?
在 android source for Reboot命令我们找到以下行: __reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, \ LINUX_REBOOT_CMD_RESTART2, argv[optind]); 这是标准Linux系统使用特定命令重新启动系统的呼叫,请参见 unix System Call重新启动. 在Android中,此命令用于告诉Bootloader在恢复模式下启动内核或转到Bootloader中的FastBoot模式. 我的问题是:引导加载程序如何拾取命令?并且该功能是在U-Boot中实现的吗? 此外,这似乎不是针对Android的,而是Linux执行"使用命令重新启动"的方式.关于如何"正常"在Linux中使用/使用的任何信息? 解决方案 使用LINUX_REBOOT_CMD_RESTART2重新启动系统时,提供的命令字符串将传递给所有注册的通知器,最终传递给r
2 2023-03-09
编程技术问答社区
了解U-Boot的内存占用情况
我不明白加载U-boot时在RAM中发生了什么.我正在处理Xilinx Zynq ZC702评估套件,并且正在尝试使用U-Boot在其上加载Linux内核.因此,我使用Xilinx工具Vivado和SDK来生成一个boot.bin文件,该文件逐步写在SD卡上: 使用Vivado创建一个HW项目, 使用SDK生成FSBL和FPGA BITSTREAM, 创建一个包含FSBL + BITSTREAM + U-BOOT的引导映像(我从Xilinx Git存储库下载了U-Boot源). 简而言之,我遵循了 xilinx用户指南. 但是,现在,在加载内核之前,我想了解发生了什么,但我不能.根据文档,如果从Flash加载U-Boot,将自己复制到RAM中,并从那里执行自身,但是在哪里? 我在网络上搜索,我发现u-boot提取物本身的地址在 include/configs/zynq-common.h 中 config_sys_text_base > ,似乎是0x400_00
48 2023-03-09
编程技术问答社区
在Kernel内部编辑Kernel命令行参数
u-boot通过内核命令行参数.根据我的要求,我想在内核源树中编辑这些参数,并且不想更改U-Boot代码.我正在使用2.6.35内核. 所以请指导我必须检查内核源的哪一部分. 解决方案 遵循此过程: 通过键入make menuconfig 输入内核配置 输入菜单处理器类型和功能 启用内置内核命令行 通过单击内置内核命令字符串 来指定您的命令行 选择内置命令行覆盖引导加载程序参数如果要bootargs被忽略 其他解决方案 如果从内核配置: - ,您可以更改 +CONFIG_CMDLINE="foo=1" +CONFIG_CMDLINE_EXTEND=y Check runtime:- $cat /proc/cmdline
0 2023-03-09
编程技术问答社区