uboot添加对新板子的支持

本文提供了将U-Boot移植到新硬件平台的步骤说明。主要内容包括创建特定于板级的目录及文件、配置文件的建立、针对新CPU的代码目录设置、使用make命令进行配置与编译以及调试过程中可能遇到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载地址:https://blog.youkuaiyun.com/q_z_r_s/article/details/80797999

If the system board that you have is not listed, then you will need
to port U-Boot to your hardware platform. To do this, follow these
steps:

1.  Create a new directory to hold your board specific code. Add any
    files you need. In your board directory, you will need at least
    the "Makefile" and a "<board>.c".
2.  Create a new configuration file "include/configs/<board>.h" for
    your board.
3.  If you're porting U-Boot to a new CPU, then also create a new
    directory to hold your CPU specific code. Add any files you need.
4.  Run "make <board>_defconfig" with your new name.
5.  Type "make", and you should get a working "u-boot.srec" file
    to be installed on your target system.
6.  Debug and solve any problems that might arise.
    [Of course, this last step is much harder than it sounds.]

<think>我们正在处理用户的问题:在U-Boot 2014版本中查看支持的Flash型号。 根据用户的问题,我们需要知道如何列出U-Boot 2014支持的Flash设备(如NOR Flash、NAND Flash等)的型号。 在U-Boot中,支持的Flash设备信息通常包含在源代码中。我们可以通过以下方式之一来获取: 1. 查看U-Boot的源代码,具体在drivers/mtd目录下(对于NAND Flash在drivers/mtd/nand目录,对于SPI NOR Flash在drivers/mtd/spi目录等)。 2. 在U-Boot运行时,通过命令查看(但通常U-Boot命令不直接列出所有支持的型号,而是通过检测当前连接的设备来显示信息)。 但是,用户提到的是U-Boot 2014版本,这是一个较旧的版本(当前是2023年,2014年大约是U-Boot 2014.04或2014.07版本)。因此,我们需要参考该版本的源代码。 由于我们无法直接运行U-Boot 2014,建议用户查看其U-Boot源代码中的相关文件。但是,如果用户已经编译了U-Boot,也可以使用一些命令来获取信息。 在U-Boot中,关于Flash的命令有: - 对于NOR Flash(通常是CFI接口):`flinfo`(flash info)命令可以显示已初始化的Flash信息,但不会列出所有支持的型号。 - 对于NAND Flash:`nand info`命令可以显示当前连接的NAND Flash信息。 然而,这些命令只能显示当前板子上实际连接的Flash设备的信息,并不能列出所有U-Boot支持的Flash型号。 因此,最可靠的方法是查看源代码。我们可以指导用户查看以下文件: 对于NOR Flash(CFI接口): 在U-Boot源代码中,支持的NOR Flash型号在`drivers/mtd/cfi_flash.c`文件中。该文件中有一个`cfi_flash_ids`数组,其中包含了支持的厂商和型号信息。 对于NAND Flash: 在`drivers/mtd/nand`目录下,有许多NAND Flash驱动文件。每个文件对应一个系列的NAND Flash或者一个厂商。例如,`nand_ids.c`中有一个`nand_flash_ids`数组,包含了支持的NAND Flash型号。 但是,由于用户使用的是2014版本的U-Boot,可能目录结构有所不同。在2014版本中,NAND Flash的驱动主要在`drivers/mtd/nand`目录下,而NOR Flash在`drivers/mtd/cfi_flash.c`。 如果用户没有源代码,那么只能通过实际运行U-Boot并连接Flash芯片,然后使用U-Boot命令来查看检测到的Flash信息。 因此,我们可以这样回答用户: 由于U-Boot 2014版本较旧,我们建议您查看源代码来获取支持的Flash设备列表。以下是具体方法: 1. 对于NOR Flash(CFI接口): 查看文件 `drivers/mtd/cfi_flash.c`,查找数组 `cfi_flash_ids`,该数组列出了支持的NOR Flash型号。 2. 对于NAND Flash: 查看文件 `drivers/mtd/nand/nand_ids.c`,查找数组 `nand_flash_ids`,该数组列出了支持的NAND Flash型号。 另外,在`drivers/mtd/nand`目录下还有针对特定控制器的驱动,但支持的NAND芯片型号主要在`nand_ids.c`中。 3. 如果您在U-Boot运行时想查看当前连接的Flash设备信息: 对于NOR Flash,使用命令 `flinfo`。 对于NAND Flash,使用命令 `nand info`。 但是,请注意,这些命令只能显示当前硬件连接的Flash设备信息,而不是所有支持的型号。 如果用户无法获取源代码,我们还可以尝试另一种方法:在U-Boot中使用`nand list`命令(如果支持)或通过环境变量查看,但这通常不列出所有支持的型号。 根据引用[1]中用户提供的U-Boot运行日志,我们看到该U-Boot版本(2023.10)支持`ls`命令,但2014版本可能没有那么多命令。在2014版本中,我们可以尝试使用`help`命令查看所有命令,然后看是否有关于Flash的命令。 在2014版本的U-Boot中,通常有`nand`命令,我们可以通过`nand`命令的子命令来操作NAND Flash。但是,同样不能直接列出所有支持的型号。 因此,总结:最直接的方法是查看源代码。 另外,用户可能是在开发板上运行U-Boot,但无法查看源代码。那么我们可以建议用户尝试在U-Boot命令行中打印环境变量或使用`bdinfo`命令,但这些命令也不会列出支持的Flash型号。 所以,我们重点推荐用户查看源代码。 相关问题: 1. 如何在U-Boot中查看当前连接的Flash设备信息? 2. U-Boot中如何初始化Flash设备? 3. 如何向U-Boot添加的Flash设备支持? 注意:在回答中,我们引用了用户提供的引用[1]和[2],其中引用[1]展示了U-Boot的运行情况,引用[2]是关于NAND Flash驱动的说明。但是,用户的问题是关于2014版本支持的Flash型号,所以引用[2]中关于坏块的信息并不直接相关,但我们可以在相关问题中提及。 因此,我们这样组织回答:</think>### U-Boot 2014版本支持的Flash型号查询方法 在U-Boot 2014版本中,**没有直接列出所有支持Flash型号的命令**,但可通过以下方法获取相关信息: #### 1. **查看源代码中的设备列表** U-Boot支持的Flash型号定义在源代码中: - **NOR Flash**: 查看文件 `drivers/mtd/cfi_flash.c`,搜索结构体 `cfi_flash_ids[]`,例如: ```c static const struct cfi_flash_info cfi_flash_ids[] = { { 0x001, 0x227e, 0x2220, "AMD AM29LV320D" }, { 0x002, 0x22c4, 0x2200, "Intel JS28F128J3" }, // ...其他型号 }; ``` - **NAND Flash**: 查看文件 `drivers/mtd/nand/nand_ids.c`,搜索结构体 `nand_flash_ids[]`,例如: ```c struct nand_flash_dev nand_flash_ids[] = { { "NAND 64MiB 3,3V 8-bit", 0xA2, 0, 64, 2048, 0x4000, 0}, { "NAND 128MiB 1,8V 8-bit", 0xB1, 0, 128, 2048, 0x4000, 0}, // ...其他型号 }; ``` #### 2. **运行时检测已连接设备** 在U-Boot命令行中: - **NOR Flash**:执行 `flinfo` 显示已初始化的NOR Flash信息(容量、扇区布局等)[^1]。 - **NAND Flash**:执行 `nand info` 显示当前连接的NAND Flash型号和参数(页大小、OOB等)[^2]。 #### 3. **通过制造商ID/设备ID查询** 若已知Flash芯片的ID: - 执行 `nand device` 或 `flinfo` 获取硬件ID - 在源码中搜索对应ID(如NAND的ID在 `nand_ids.c` 中匹配) #### 示例:查看已连接的NAND Flash信息 ```bash => nand info Device 0: nand0, sector size 128 KiB Page size 2048 b OOB size 64 b Erase size 131072 b Subpagesize 2048 b Options: 0x40004200 Manufacturer ID: 0xec (Samsung) Chip ID: 0xda (K9F2G08U0A) # 此处显示具体型号 ``` 此命令会显示当前硬件的实际型号(如三星 `K9F2G08U0A`)[^2]。 --- ### 注意事项 1. **支持范围**:U-Boot 2014对旧型号Flash(如Spansion S29GL、Micron MT29F等)兼容较好,型号需升级U-Boot。 2. **硬件差异**:具体支持的型号取决于目标板的驱动实现(如 `board/` 目录下的板级代码)。 3. **源码获取**:需从[U-Boot官网](https://ftp.denx.de/pub/u-boot/)下载2014版源码,或使用 `git checkout v2014.07` 切换版本。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值