imx6 yocto移植udev-100

本文介绍了在imx6q yocto环境下移植udev-100的完整过程,包括修改Makefile以适应交叉编译环境,解决编译错误,替换/sbin下的udevd及相关文件,更新rootfs中udevd的调用路径,修改/etc/init.d/rcS脚本以启动udevd,以及调整/etc/udev/rules.d/12-add-sd.rules文件以适应系统分区变化。

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

imx6q yocto通过bitbake自动生成的根文件系统与之前差异较大,外置sd卡无法挂载,#grep "udevd" rootfs -r发现启动的都不是以前/sbin下的守护进程,变成了/lib/udev/udevd,试图编最新的udev-182,解了一堆的配置与编译的依赖,最后还是链接不过,果断放弃!重新移植udev-100,步骤如下:

一、下载udev-100包后,修改Makefile如下:

CROSS_COMPILE ?=/opt/fsl-imx-fb/4.1.15-1.2.0/sysroots/i686-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-
CC = $(CROSS_COMPILE)gcc -mfloat-abi=hard -mfpu=neon --sysroot=/opt/fsl-imx-fb/4.1.15-1.2.0/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi

LD = $(CROSS_COMPILE)gcc -mfloat-abi=hard -mfpu=neon --sysroot=/opt/fsl-imx-fb/4.1.15-1.2.0/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi

编译中报错:
udevd.c: In function 'main':
udevd.c:1006:14: error: 'PRIO_PROCESS' undeclared (first use in this function)
  setpriority(PRIO_PROCESS, 0, UDEVD_PRIORITY);
解决方法:
在udevd.c中加入头文件:
#include <sys/time.h>

#include <sys/resource.h>

即可编译完成,生成udev、udevd、udevstart、udevinfo、udevtest,将其替换/sbin下对应文件。</

### IMX6ULL 平台 RT-Thread 操作系统的移植 #### 移植概述 RT-Thread 是一个实时嵌入式操作系统,其在 i.MX6ULL 平台上运行需要完成硬件驱动适配以及 BSP(Board Support Package)的构建。通常情况下,BSP 文件夹包含了启动代码、外设驱动程序以及其他必要的组件。 为了实现 RT-Thread 在 i.MX6ULL 上的成功移植,可以参考已有的开发板配置并进行调整。以下是关于如何修改和适配的关键部分: --- #### 修改 `board.c` 驱动文件 在 RT-Thread 的 BSP 中,`board.c` 负责初始化硬件资源,例如时钟、GPIO 和其他外设。如果目标平台与现有支持的开发板存在差异,则需针对新开发板重新定义这些功能[^1]。 具体操作如下: 1. 找到对应的路径:`D:\rtthread\rt-smart\kernel\bsp\imx6ull\drivers\board.c`。 2. 编辑该文件以匹配新的硬件特性,比如 GPIO 初始化函数或设备树节点更新。 --- #### 创建自定义开发板目录结构 基于已有模板创建一个新的开发板目录是非常常见的做法。假设当前正在为名为 “lanjut”的开发板做准备,可以通过复制现有的 MX6ULLEVK 板子来快速搭建环境[^2]: ```bash cp -r board/freescale/mx6ullevk/ board/freescale/mx6ull_lanjut/ mv board/freescale/mx6ull_lanjut/mx6ullevk.c board/freescale/mx6ull_lanjut/mx6ull_lanjut.c ``` 上述命令完成了以下工作: - 将原始 EVK 板的相关资料拷贝至新位置; - 对核心 C 文件重命名以便区分不同型号间的逻辑实现。 --- #### 设置 CPU 及外围模块频率参数 i.MX6ULL 默认引导过程中会自动设定一系列重要总线与时钟速率。例如,在某些模式下 BootROM 设定核频达到 396 MHz (System PLL = 528 MHz),而 AHB 总线则维持于较低水平——即大约 132 MHz 左右[^3]。因此,在实际项目里可能还需要进一步确认是否有必要手动干预此类默认行为。 --- #### 复制 U-Boot 或裸机工程中的必要片段作为补充材料 当涉及到更深层次定制化需求的时候,可以从厂商提供的文档或者开源社区获取灵感。例如从指定路径提取 UART 测试样例用于串口通信验证[^5]: ```c // Example of initializing a simple UART communication on IMX6ULL. #include "fsl_common.h" #include "fsl_uart.h" void uart_init(void){ CLOCK_EnableClock(kCLOCK_Uart); uart_config_t config; UART_GetDefaultConfig(&config); config.baudRate_Bps = 115200; // Set baud rate to standard value UART_Init(UART_BASEADDR, &config, CLOCK_GetFreq(kCLOCK_CoreSysClk)); } ``` 此段伪代码展示了怎样通过 FSL 提供 API 接口去激活特定端口号下的数据收发能力。 --- #### 关键步骤总结 尽管每一步单独看来并不复杂,但整体流程却涵盖了多个层面的知识点。主要包括但不限于以下几个方面[^4]: - **生成专属配置档案**: 借助既有样板迅速建立基础框架。 - **调试工具链兼容性问题**: 确认交叉编译器版本满足最新标准要求。 - **完善中断服务机制设计**: 结合应用场合合理规划优先级分配策略。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值