标签: u-boot

从用户空间获取U-boot的版本

有谁知道从用户空间安装U-boot版本的方法?有fw_printenv命令可以访问U-boot的环境变量,但不能访问版本.

embedded-linux u-boot

11
推荐指数
3
解决办法
2万
查看次数

在u-boot中进行Nand分区

我正在开发嵌入式ARM9开发板.因为我想重新排列我的nand分区.谁能告诉我怎么做?

在我的u-boot shell中,如果我给出命令mtdparts,它提供以下信息.

Boardcon> mtdparts      

device nand0 <nandflash0>, # parts = 7

#: name                size            offset          mask_flags
0: bios                0x00040000      0x00000000      0
1: params              0x00020000      0x00040000      0
2: toc                 0x00020000      0x00060000      0
3: eboot               0x00080000      0x00080000      0
4: logo                0x00100000      0x00100000      0
5: kernel              0x00200000      0x00200000      0
6: root                0x03c00000      0x00400000      0

active partition: nand0,0 - (bios) 0x00040000 @ 0x00000000

defaults:
mtdids  : nand0=nandflash0 
mtdparts: mtdparts=nandflash0:256k@0(bios),128k(params),128k(toc),512k(eboot),1024k(logo),2m(kernel),-(root) 
Run Code Online (Sandbox Code Playgroud)

内核启动消息显示以下内容:

 Creating 3 MTD partitions on "NAND 64MiB 3,3V 8-bit":
 0x000000000000-0x000000040000 : "Boardcon_Board_uboot"
 0x000000200000-0x000000400000 …
Run Code Online (Sandbox Code Playgroud)

embedded kernel arm u-boot

10
推荐指数
2
解决办法
2万
查看次数

如何在U-Boot和Linux内核中添加自定义ATAG变量?

我想atag在U-Boot和Linux内核中添加自定义变量.
我怎样才能实现这一目标?
是否有任何步骤添加ATAG变量U-BootLinux

arm linux-kernel u-boot

10
推荐指数
3
解决办法
6291
查看次数

默认波特率 - linux/u-boot

我正在使用u-boot开发嵌入式Linux系统.U-boot使用console = bootarg设置ttyS0串口的波特率,但我还想设置ttyS [1-3]的默认波特率(不是9600).

在这个系统中,U-boot将设备树(dts/dtb)传递给内核,但设置那里的波特率似乎不起作用.

需要注意的是,该系统类似于峡谷地板(ppc460ex).

无论如何在u-boot,内核或设备树中是否有更改串口的默认波特率?

serial-port powerpc linux-kernel embedded-linux u-boot

9
推荐指数
1
解决办法
5671
查看次数

将大量二进制数据从u-boot传递到linux内核

在imx50 ARM板上将大量数据(3 MB)从uboot传递到linux内核2.6.35.3有一些问题.内核设备驱动程序探测功能需要此数据,然后才能释放.首先uboot将数据从闪存加载到RAM,然后使用bootargs传递linux内核的物理地址.在内核中,我尝试使用arch/arm/kernel/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 = IORESOURCE_MEM | IORESOURCE_BUSY,
};

@@ -477,6 +479,10 @@
    kernel_code.end     = virt_to_phys(_etext - 1);
    kernel_data.start   = virt_to_phys(_data);
    kernel_data.end     = virt_to_phys(_end - 1);
+   my_mem_res.start    = mi->bank[i].start + mi->bank[i].size - 0x400000;
+   my_mem_res.end      = mi->bank[i].start + mi->bank[i].size - 1;

    for (i = 0; i < mi->nr_banks; i++) …
Run Code Online (Sandbox Code Playgroud)

memory arm linux-kernel embedded-linux u-boot

9
推荐指数
1
解决办法
2712
查看次数

u-boot.bin和u-boot.img之间有什么不同

我刚刚编译了U-Boot bootloader,我在u-boot程序目录中看到了一些文件名,它们是:

u-boot.bin
u-boot.img
u-boot.lds
u-boot.srec
Run Code Online (Sandbox Code Playgroud)

基本上,我感兴趣的是与扩展名的文件.img.bin.他们之间有什么不同?是u-boot.img对SD卡u-boot.bin的闪烁NAND?

embedded-linux u-boot

9
推荐指数
1
解决办法
1万
查看次数

为什么在编译Linux内核和uBoot时arm-linux-gnueabi-gcc而不是arm-none-eabi-gcc?

我有一些编译ARM cortex-m设备的裸机代码以及Linux核心,uBoot和Beaglebone Black(BBB)的应用程序的经验(更多特色ARM与MMU,生活在摇滚之下).从那以后,我认为cortex-m代码应该使用arm-none-eabi-gcc编译(因为没有操作系统),BBB的应用程序代码应该用arm-linux-gnueabi-gcc编译(因为那里)是一个操作系统,可以进行系统调用,程序加载器和可以使用的共享对象.

我不明白为什么uBoot和内核也应该用arm-linux-gnueabi-gcc编译.在我看来,uBoot至少是一个裸机程序,没有花哨的操作系统来解释.这一直困扰着我,但我找不到答案.那里有没有人可以开导我?

c linux gcc abi u-boot

9
推荐指数
1
解决办法
972
查看次数

了解U-Boot内存占用

我不明白加载U-Boot时RAM中发生了什么.我正在研究Xilinx Zynq ZC702评估套件,我正在尝试使用U-Boot加载Linux内核.所以我使用Xilinx工具Vivado和SDK来生成一个逐步写在SD卡上的BOOT.bin文件:

  • 使用Vivado创建一个HW项目,
  • 使用SDK生成FSBL和FPGA比特流,
  • 创建包含FSBL +比特流+ U-Boot的启动映像(我从xilinx Git存储库下载了U-Boot源).

简而言之,我遵循了Xilinx用户指南中描述的所有步骤.

但是现在,在加载内核之前,我想了解发生了什么,但我不能.根据文档,如果从闪存加载,U-Boot将自身复制到RAM中,并从那里执行,但在哪里?

我在网上搜索,发现U-Boot提取自身的地址在include/configs/zynq-common.h中CONFIG_SYS_TEXT_BASE定义,看起来像是0x400_0000.

但在另一个网站上,我看到我们可以在调试模式下打印重定位地址,因此我修改了文件common/board_r.c并覆盖了函数" initr_announce "以打印" gd-> relocaddr "字段.这次看起来U-Boot使用偏移地址0x3FF3_7000.

当我使用U-Boot命令"md"来检查内存时,我看到使用了两个偏移,我在两个位置都看到了一个幻数"be00_00ea":

Xilinx First Stage Boot Loader 
Release 2014.4  Feb  8 2016-14:53:56
Devcfg driver initialized 
Silicon Version 3.1
Boot mode is SD
SD: rc= 0
SD Init Done 
Flash Base Address: 0xE0100000
Reboot status register: 0x60400000
Multiboot Register: 0x0000C000
Image Start Address: 0x00000000
Partition Header Offset:0x00000C80
Partition Count: 3
Partition Number: 1
Header Dump
Image …
Run Code Online (Sandbox Code Playgroud)

arm linux-kernel u-boot zynq

9
推荐指数
1
解决办法
7818
查看次数

cc1:错误:-march = switch的错误值(armv5)

我按照此链接中提到的步骤编译beagle bone black的u-boot

http://eewiki.net/display/linuxonarm/BeagleBone+Black#BeagleBoneBlack-Bootloader:U-Boot

并得到以下错误.

cc1:错误:-march = switch的错误值(armv5)

谁能帮我找到这个错误的原因?我想这是因为gcc不支持armv7-a仍然不确定.

谢谢,总结

cross-compiling u-boot beagleboneblack

8
推荐指数
1
解决办法
7719
查看次数

为什么在引导加载程序和内核源代码中都需要设备树结构(DTS)文件?

像U-Boot这样没有实现Open Firmware API的Bootloader,应该将平面设备树的二进制形式传递给内核 - LinuxFDTBlob

为什么DTS文件也存在于内核中?这不是多余的吗?

例如,U-boot源代码包含以下文件:
arch/arm/dts/tegra124-jetson-tk1.dts

此文件也可以在Linux源代码下找到:
arch/arm/boot/dts/tegra124-jetson-tk1.dts

虽然内核版本是U-boot版本的4倍,但我想知道这种冗余背后的原因.我相信维护人员和开发人员都很难维护和使用它们

arm linux-kernel embedded-linux u-boot device-tree

8
推荐指数
2
解决办法
1万
查看次数