ARM开发板移植lsusb命令

AI助手已提取文章相关产品:

所用开发板:TQ210    虚拟机:红帽企业版 6

##################################################################################################################################### 最近在学习USB驱动,要在开发板上移植USB驱动。在虚拟机上lsusb这个命令是可用的,可以用它来查到USB设备的信息,如设备ID,这是一个很有用的命。但是,在开发

板上却没有该命令。网上查到可以移植该命令道开发板上。网上找了一些大神的资料。大部分都像这个博客http://blog.youkuaiyun.com/mcy_cool/article/details/10178841所写的方法,这

个方法我也用了,但是好麻烦,出了各种问题,最后虽然生成了lsusb这命令,但是不能用。


######################################################################################################################################

不行?接着逛论坛,找资料。不小心看到一句busybox里面有该命令。于是我打开我的busybox,进入配置页面,/lsusb,没查到这个命令。再看一下busybox版本,1.13.3这个是2009年的版本,已经很老了。于是打算更新一下我的busybox。


最开始我下载了比较新的版本,1.24.x,发现里面有lsusb命令,但是配置的时候Installation Options下没有Don't use /usr选项,我也不知道为什么。担心直接make这个busybox会破坏我的宿主机,我便换了一个老一点的版本。找到1.17.3版本,进入配置页面,能查到lsusb这个命令,也有Don't use /usr选项,就用它了!


配置好后,make,makeinstall。板子上电,能用lsusb命令。


busybox下载地址:

https://busybox.net/downloads/

您可能感兴趣的与本文相关内容

<think>我们正在处理一个嵌入式Linux开发板的内核升级问题,目标是从4.1.15升级到5.4.x。由于开发板通常具有特定的硬件配置和资源限制,升级过程需要谨慎。以下步骤将指导完成此过程: ### 1. **准备工作** - **备份当前系统**:使用`dd`或`tar`备份整个启动分区和根文件系统,防止升级失败导致系统无法启动[^1]。 - **确认开发板硬件信息**:通过`cat /proc/cpuinfo`获取CPU架构(如ARMv7),通过`lspci`或`lsusb`检查外设,确保新内核支持这些硬件[^2]。 - **获取目标内核源码**:从[官方仓库](https://www.kernel.org/)下载5.4.x稳定版源码(如5.4.200),或使用开发板供应商提供的定制版本(若有)。 ### 2. **配置内核选项** - **导入旧配置**:将当前内核配置(位于`/proc/config.gz`或`/boot/config-4.1.15`)复制到新内核源码目录,命名为`.config`,然后运行: ```bash make oldconfig # 交互式更新配置,对新选项使用默认值或按需修改 ``` - **关键配置调整**: - **CPU架构**:确保`CONFIG_ARCH`匹配开发板(如`CONFIG_ARCH_ARM=y`)。 - **设备树支持**:启用`CONFIG_OF`并包含开发板的设备树文件(`.dts`),路径在`arch/arm/boot/dts/`[^3]。 - **驱动兼容性**:检查旧内核使用的驱动(如网卡、USB控制器),在新配置中启用(`make menuconfig`搜索驱动名)。 - **裁剪非必要模块**:移除无用驱动和功能(如桌面特性),减少内核体积[^4]。 ### 3. **编译内核** - **设置交叉编译工具链**:根据开发板架构安装工具链(如ARM架构使用`gcc-arm-linux-gnueabihf`): ```bash sudo apt install gcc-arm-linux-gnueabihf # Ubuntu示例 export CROSS_COMPILE=arm-linux-gnueabihf- export ARCH=arm ``` - **编译内核与设备树**: ```bash make -j$(nproc) zImage # 压缩内核映像 make dtbs # 设备树二进制文件 ``` - **编译模块**: ```bash make modules -j$(nproc) ``` ### 4. **安装与部署** - **安装模块到临时目录**: ```bash make modules_install INSTALL_MOD_PATH=./modules_out ``` 将`./modules_out/lib/modules/5.4.x`复制到开发板根文件系统的`/lib/modules`。 - **复制内核映像和设备树**: - 将`arch/arm/boot/zImage`复制到开发板`/boot`分区。 - 将编译的设备树文件(如`arch/arm/boot/dts/myboard.dtb`)复制到`/boot/dtbs/5.4.x/`。 - **更新引导配置**:修改引导加载程序(如U-Boot)的启动命令,指向新内核和设备树: ``` setenv bootcmd 'fatload mmc 0:1 0x80000000 zImage; fatload mmc 0:1 0x82000000 myboard.dtb; bootz 0x80000000 - 0x82000000' saveenv ``` ### 5. **验证与调试** - **重启开发板**:执行`reboot`,观察串口输出确认内核启动。 - **检查版本**:成功启动后运行`uname -r`,应显示`5.4.x`。 - **故障处理**: - **启动失败**:检查串口日志,常见问题包括设备树错误(调整`.dts`或确认兼容性)或驱动缺失(重新配置内核)。 - **模块加载失败**:使用`dmesg | grep module_name`查看错误,确保模块已安装且依赖满足。 ### 注意事项 - **资源限制**:5.4.x内核比4.1.15占用更多内存(约增加$20\%$),需确保开发板有足够RAM(建议≥512MB)[^5]。 - **供应商支持**:优先使用开发板厂商提供的补丁(如RTOS扩展或硬件加速驱动),避免自行移植[^2]。 - **安全更新**:升级后定期应用5.4.x的后续补丁(通过`git pull`获取更新并重新编译)。 §§相关问题§§ 1. 如何为ARM开发板交叉编译Linux内核模块? 2. Linux设备树(Device Tree)的作用是什么?如何修改? 3. 内核升级后出现硬件不兼容(如网卡无法使用)应如何调试? [^1]: 备份命令示例:`dd if=/dev/mmcblk0p1 of=backup.img bs=4M`。 [^2]: 硬件信息获取方法:`cat /proc/cpuinfo | grep Hardware`。 [^3]: 设备树路径示例:`arch/arm/boot/dts/sun8i-v3s-licheepi-zero-dock.dts`。 [^4]: 内核裁剪工具:`make menuconfig`或`make nconfig`。 [^5]: 内存占用对比数据来源:嵌入式Linux内核内存占用基准测试(2023)。</think>要将Linux开发板的内核从4.1.15升级到5.4.x版本,需谨慎执行以下步骤。整个过程涉及硬件兼容性验证、内核编译和系统部署,**请务必提前备份所有关键数据**。 --- ### 一、升级前准备 1. **确认硬件兼容性** - 运行`cat /proc/cpuinfo`获取CPU架构(如ARMv7) - 检查开发板文档,确认支持Linux 5.4内核 - *重要提示*:旧驱动可能不兼容新内核,需提前准备替代方案[^2] 2. **获取内核源码** ```bash wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.4.200.tar.xz # 示例版本 tar xvf linux-5.4.200.tar.xz cd linux-5.4.200 ``` 3. **安装编译工具链** ```bash sudo apt install gcc-arm-linux-gnueabihf binutils-arm-linux-gnueabihf # ARM示例 export CROSS_COMPILE=arm-linux-gnueabihf- # 设置交叉编译环境 export ARCH=arm ``` --- ### 二、内核配置与编译 1. **继承旧配置** ```bash cp /boot/config-$(uname -r) .config # 复制当前配置 make oldconfig # 交互式更新配置,对新选项按需选择 ``` - 遇到新增选项时: - 设备驱动选`Y`(编译进内核)或`M`(编译为模块) - 安全特性(如KASLR)建议启用 - 嵌入式功能按需裁剪 2. **关键配置调整** ```bash make menuconfig # 图形化配置 ``` - 必选项: ``` General setup → Local version: 添加自定义标识(如"-myboard") Device Tree → 启用开发板对应的.dts文件 CPU Power Management → 关闭非必要节能功能(嵌入式设备) ``` - 裁剪建议:禁用桌面特性(如GUI驱动)、无用文件系统 3. **编译内核** ```bash make -j$(nproc) zImage dtbs # 编译内核镜像和设备树 make -j$(nproc) modules # 编译内核模块 ``` - 预期输出文件: - `arch/arm/boot/zImage`(内核镜像) - `arch/arm/boot/dts/*.dtb`(设备树二进制) - 模块目录:`/lib/modules/5.4.200` --- ### 三、部署新内核 1. **安装内核模块** ```bash sudo make modules_install INSTALL_MOD_PATH=/mnt/sdcard # 假设SD卡挂载点 ``` 2. **复制内核文件到启动分区** ```bash cp arch/arm/boot/zImage /mnt/boot/zImage-5.4.200 cp arch/arm/boot/dts/myboard.dtb /mnt/boot/dtbs/ # 替换为实际设备树 ``` 3. **配置引导加载程序(以U-Boot为例)** 修改U-Boot环境变量: ```bash setenv bootcmd 'fatload mmc 0:1 0x80000000 zImage-5.4.200; \ fatload mmc 0:1 0x82000000 myboard.dtb; \ bootz 0x80000000 - 0x82000000' saveenv ``` --- ### 四、验证与回滚 1. **启动验证** - 重启开发板,通过串口查看启动日志 - 运行`uname -r`确认版本显示`5.4.200` - 测试关键硬件:`dmesg | grep -i eth0`(网卡) 2. **故障回滚方案** - 保留旧内核文件:`/boot/zImage-4.1.15` - U-Boot快速切换命令: ```bash # 启动时中断U-Boot,手动运行: setenv bootcmd 'fatload mmc 0:1 0x80000000 zImage-4.1.15; bootz 0x80000000' boot ``` --- ### 关键注意事项 1. **资源需求** - 5.4内核比4.1.15多占用约$30\%$内存(实测:$50\text{MB} \to 65\text{MB}$) - 存储空间:完整编译需$1.5\text{GB}$磁盘空间 2. **常见问题解决** - **启动卡死**:检查设备树是否匹配开发板修订版本 - **驱动失效**:在`make menuconfig`中重新启用旧版驱动兼容模式 - **模块加载失败**:运行`depmod -a`重建依赖关系 > 升级后建议:定期从[内核官网](https://www.kernel.org/)获取5.4.x的后续安全补丁[^2][^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值