博客
关于我
使用Buildroot为Nxp i.mx6ul制作文件系统
阅读量:223 次
发布时间:2019-03-01

本文共 1449 字,大约阅读时间需要 4 分钟。

使用Buildroot为i.mx6制作文件系统

随着NXP s3c2440、6410等芯片的停产,NXP针对中国市场推出了低成本方案i.mx6ul,适用于商业级和工业级应用,且提供10年超长供货周期,市场潜力显著。本文将详细介绍如何使用Buildroot为i.mx6制作文件系统。

前序

在制作文件系统之前,需要了解以下几个基本概念:

  • Uboot:用于引导操作系统启动的固件。
  • Linux Kernel:操作系统内核,主要关注其稳定性。对于i.mx6ul芯片,建议使用NXP官方提供的内核版本,这些内核已经过优化,稳定性和兼容性较好。
  • 文件系统:包含操作系统所需的各种系统命令(如psinsmodnetstat等)和库文件。开发的应用程序也会部署到文件系统中。
  • 制作文件系统:Buildroot和Yocto是常用的工具框架,提供了便捷的编译环境,支持多种平台,可以帮助快速制作定制化的文件系统。
  • Buildroot相比Yocto更为简单易用,且提供近2000种包支持,适合对稳定性要求较高的工业级应用。

    板子配置

    本文基于米尔科技的i.mx6ulx开发板,板子规格为:

    • 256MB NAND存储器
    • 256MB RAM
    • 支持SD卡扩展

    i.mx6ul采用Cortex-A7架构,支持NEON指令集,适合高性能计算任务。

    Buildroot配置步骤

    第一步:下载Buildroot

    从Buildroot官网下载最新的Buildroot源码:https://buildroot.org/download.html

    第二步:配置Buildroot

    1. CPU架构配置

    • 目标架构:ARM小端格式,Cortex-A7架构
    • 浮点运算:EABIhf
    • 指令集:ARM指令集(VFPv4)

    2. 编译选项

    • 下载路径:默认设置下,下载目录为dl,主要用于配置共享库。
    • 优化级别:优化大小
    • 栈溢出保护:默认设置下无需启用
    • 库类型:仅共享库

    3. 工具链配置

    • 交叉编译工具链:建议使用NXP官方提供的工具链。
    • gcc版本:查看主机上的arm-linux-gnueabihf工具链版本:
      arm-linux-gnueabihf -v
    • 内核头文件版本:根据板子实际使用的内核版本配置。例如,3.17版本适用于i.mx6ul。

    4. 系统配置

    • 主机名:设置为buildrootbywind
    • 系统信息:设置为Welcome to Buildroot by wind
    • 密码编码:启用MD5编码
    • 初始化系统:使用BusyBox
    • 设备管理:动态管理devtmpfs和eudev
    • 符号链接:为 /bin/sbin/lib 创建符号链接
    • 登录设置:启用root密码登录
    • 终端配置:TTY端口为/dev/ttymxc0,默认波速为 kernel默认值

    5. 文件系统配置

    • 文件系统类型:选择ext4,默认设置下为ext4
    • 文件系统大小:默认设置下为60M
    • UBIFS支持:启用UBIFS,设置为0x1f800 eraseblock size,0x800 I/O unit size,2048最大eraseblock count
    • 压缩方法:无压缩

    第三步:编译

    make all

    编译完成后,文件系统生成在output/images目录下。

    烧录文件系统

    具体烧录步骤请参考另一篇博文。

    总结

    通过以上步骤,可以成功为i.mx6ulx开发板制作定制化的文件系统。Buildroot的简便性和稳定性使其成为工业级嵌入式开发的理想选择。

    转载地址:http://ctav.baihongyu.com/

    你可能感兴趣的文章
    Operation not supported on read-only collection 的解决方法 - [Windows Phone开发技巧系列1]
    查看>>
    Operations Manager 2007 R2系列之仪表板(多)视图
    查看>>
    operator new 与 operator delete
    查看>>
    operator() error
    查看>>
    OPPO K3在哪里打开USB调试模式的完美方法
    查看>>
    Optional类:避免NullPointerException
    查看>>
    ORA-00932: inconsistent datatypes: expected - got NCLOB【ORA-00932: 数据类型不一致: 应为 -, 但却获得 NCLOB 】【解决办法】
    查看>>
    ORA-00942 表或视图不存在
    查看>>
    ORA-01795: 列表中的最大表达式数为 1000
    查看>>
    ORA-06575: 程序包或函数 NO_VM_DROP_PROC 处于无效状态
    查看>>
    ORA-08102的错误
    查看>>
    ora-12541:tns:no listener
    查看>>
    【docker知识】联合文件系统(unionFS)原理
    查看>>
    ORACEL学习--理解over()函数
    查看>>
    oracle 10g crs命令,Oracle 10g CRS安装问题解决一例
    查看>>
    oracle 10g的安装配置
    查看>>
    Oracle 11.2.0.4 x64 RAC修改public/private/vip/scan地址
    查看>>
    Oracle 11G INDEX FULL SCAN 和 INDEX FAST FULL SCAN 对比分析
    查看>>
    Oracle 11g 使用RMAN备份数据库
    查看>>
    Oracle 11g 单实例安装文档
    查看>>