问题标签 [u-boot]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
usb - beagleboard 上用于 u-boot 的 DM9601 驱动程序
我正在尝试从我的 Beagleboard 进行 nfs 引导。我的 Davicom Dm9601 没有从 u-boot 中检测到,因此它失败并出现错误“找到 0 个以太网设备”和“远程设备未响应”
我已经开始为此编写设备驱动程序。
- dm9601_eth_before_probe
- dm9601_eth_probe
通过上述两个功能,它显示“1 Ethernet device found”
- dm9601_init
当我尝试编写上述函数时,第一个操作是获取 MAC 地址。我将下面给出的 asix.c 作为参考。我已经编写了 read_cmd 和 write_cmd 函数。但我目前的问题是我正在尝试使用“物理地址寄存器”寄存器来读取 MAC 地址。我对 linux-drivers 的工作方式和 asix.c 的工作方式有点困惑。
任何人都可以帮助我理解相同的内容以及如何在 dm9601 中为 u-boot 实现类似的逻辑。
参考:
u-boot - 使用 BDI2000 PowerPC4xx 进行 u-boot 调试
我试图弄清楚在尝试调试 U-boot 端口时发生了什么。我已经在我的板上加载了 U-boot,并通过 BDI2000 设置进行调试。当我逐步执行 start.SI 时,不断遇到此错误:
这是我第一次提出董事会建议,因此您可能拥有的任何指示都会非常有帮助。
谢谢!
embedded - 引导加载程序工作
我正在研究 Uboot 引导加载程序。我对 Bootloader 的功能和它要处理的应用程序有一些基本的问题:
Q1:据我所知,引导加载程序用于将应用程序下载到内存中。在互联网上,我还发现引导加载程序将应用程序复制到 RAM,然后应用程序从 RAM 运行。我对引导加载程序的工作感到困惑......当通过串行或 TFTP 向引导加载程序提供应用程序时,接下来会发生什么,引导加载程序是先将其复制到 RAM 还是直接写入闪存。
Q2: 为什么需要 Bootloader 将应用程序复制到 RAM 中,然后从 RAM 中运行应用程序?如果我们的应用程序从 FLASH 运行,我们会遇到什么困难?
Q3:“My application is running from RAM/FLASH”是什么意思?这是否意味着我们应用程序的 .text 段或 .code 段在 RAM/FLASH 中?我们并不关心 .bss 部分,因为它被设计为在 RAM 中。
谢谢 Phogat
embedded - Initrd, Ramdisk, Initramfs, uclinux
我正在冷火板 M5272C3 上进行 uclinux 移植。现在,我的内核从 RAM 运行,并使用 romfs 作为我的根文件系统。我不清楚几个术语的含义以及何时使用它们....
请以最简单的方式向我解释:
Q1:什么是initrd?为什么我们需要那个?
Q2:什么是内存盘?为什么以及在哪里需要这个?
Q3:什么是initramfs?我们为什么以及在哪里使用它?
Q4:什么是 ramfs?我们为什么以及在哪里使用它?
另请参阅文档/参考书以深入了解这些术语....
谢谢 Phogat
linux-kernel - 启动 Linux 内核所需的所有必要参数
我是 linux 内核的新手,尝试从加载到 RAM 的点来理解 Linux 内核的启动,我想知道 Linux 映像加载到 RAM 后,控制权是如何传递给这个映像的,所有必要的参数都需要传递到内核,我们可以在不传递任何参数的情况下将控制权传递给 linux 映像吗?
我正在使用“bootm.c”查看 UBOOT 代码,但无法理解将控制权传递给 Linux 映像的位置,哪个函数负责它。
是否 load_zimage() 负责传递控制/
任何人都可以引导我走向正确的方向或建议一些关于从 x86 架构引导的特定部分的好教程。
c - 将地址类型转换为函数指针
我有来自 u-boot、bootloader 的特定代码,其中地址被类型转换为函数指针,但不确定这样做的目的是什么
是在第一个语句寄存器 r4,r5,r6,r7,r8,r9 在调用后面的函数时被初始化吗?
其中 images->ep 是内存地址,bd_t 是边框信息结构。
任何人都可以让我知道在函数指针中输入大小写地址的目的。
arm - 在 ARM cortex A-9 的 U-boot 中启用中断
我正在尝试在 uboot 中配置一个 GPIO 中断,这是为了在没有任何操作系统干预(裸机)的情况下测试中断响应时间。我能够配置引脚复用,并成功地使用 GPIO 引脚设置中断。
我的问题是关于中断服务程序的注册。我看到我平台的中断向量表位于地址 0xFFFF0000 (我阅读了系统控制寄存器以找出这一点)。GPIO 的中断 ID 是 56,我刚刚计算了我的中断服务例程应该驻留的地址,并尝试用指向我的 ISR 例程的指针写入地址。这是正确的做法吗?还是我必须自己处理所有其他事情,例如上下文保存等?
注意:我使用的是 ARM Cortex A-9。
编辑 :
根据我浏览代码的答案,我有以下问题。的定义
我的架构(arm v7)的 do_irq 没有做太多,CONFIG_USE_IRQ 对我不起作用,因为没有为我定义像 arch_interrupt_init 这样的函数。所以我可以得出结论,我的架构不支持中断。现在,如果我必须自己定义它,我需要实现哪些功能才能使其正常工作?由于这是我项目的一小部分,我想看看我是否可以做到这一点是否可行。我只想知道这是否需要几行代码或需要一些努力来实现这种中断支持。
linux-kernel - 多阶段引导
我有一块板子,上面闪着工作的 u-boot。现在我想为引导加载程序添加一些功能(用于初始化硬件的某些部分),但是如果我犯了一些错误,开发过程可能会使电路板变砖。是否可以进行如下所述的多阶段引导: 1) 启动 u-boot 2) u-boot 将加载我的二进制文件,其中添加了初始化硬件的功能。3) 我的二进制文件将加载并启动 linux 内核。
如果可能的话,一些指针将不胜感激。谢谢。
linux-kernel - 创建灵活的 mtd 分区
我想根据其内容填充分区。在系统启动期间,我想检查闪存区域是否包含任何数据。如果为真 - 使其只读或可重写可见。
我想自动制作,没有U-boot shell ...
在 Linux 内核级别上,我只能在分区表中静态地制作它。是否可以在 U-boot 中做到这一点?
谢谢你的任何提示。
更新: CmdLine 和 mtd_partition 检查
我检查了两种可能性: U-boot mtd-parts
填满分区后不允许分区
不幸的是,它不可能在表和表中添加分区。0x100000
如果数据存在于区域中,我希望将 mtd4 作为单独的分区。
在内核 mtd_partition 表中是可能的。但是这个表是在 arch/arm...board 文件中声明的(早期启动阶段)。在这个启动阶段,我无法读取 nand。我无权访问 nand 驱动程序提供的 nand 读取接口。
更新:解决方案
谢谢你的所有提示。遵循“无艺术噪音”的提示,我决定在 u-boot 中读取 nand 区域,并通过不同的内核命令行参数发送有用的参数。这是非常灵活的。其他一些硬件配置可以存储在闪存中并用于内核初始化。
捕获内核参数可以通过以下方式完成:early_param()
函数。
embedded - u-boot - 选择正确的 linux 映像
我想让 u-boot 根据一个标准在 2 个 linux 内核映像之间进行选择。例如,我在 SPI 中有 uImage1 和 uImage2,u-boot 检查 uImage1 的 CRC,如果正常,则启动 uImage1,否则启动 uImage2。我可以使用 u-boot 中的选项吗?
谢谢,玛尼