i.MX35 PDK嵌入式Linux开发套件:从硬件认知到多媒体应用实战
1. 项目概述如果你刚拿到一块飞思卡尔Freescale现为NXP的一部分的i.MX35 PDK 1.5开发套件面对三块板子和一堆线缆可能会有点无从下手。别担心这种感觉我懂。十几年前我第一次接触这类嵌入式开发板时也花了不少时间才把硬件连明白更别提让系统跑起来了。这个套件虽然发布于2009年但其核心的“3-Stack”平台设计理念和基于Linux的BSP板级支持包开发流程至今仍是理解嵌入式系统从硬件到软件启动的绝佳教材。它不是一个过时的玩具而是一个经典的、结构清晰的嵌入式系统教学与原型开发平台。简单来说i.MX35 PDK 1.5是一个围绕i.MX35应用处理器构建的嵌入式Linux开发与演示平台。它的核心价值在于通过CPU板、调试板和功能板这三块独立又互联的板卡清晰地分离了核心计算、调试接口和外设功能。这种模块化设计让你可以灵活地将其用作一个完整的开发平台三块板全上或者一个纯粹的演示平台仅CPU板功能板。套件预装了Linux演示镜像开箱即可体验音频播放、视频解码、图片浏览和FM收音机等功能直观展示了i.MX35芯片在多媒体处理上的能力。对于开发者而言它更是一个扎实的起点你可以基于其提供的Linux BSP和工具链进行深度定制和应用程序开发。接下来我会带你一步步拆解这个套件从硬件认识、平台搭建到系统启动和基础应用让你快速上手并理解每一步背后的设计逻辑。2. 套件详解与硬件认知在动手连接任何线缆之前花点时间认识一下你手中的三块板子理解它们各自的分工这能避免很多后续的困惑和误操作。这套“3-Stack”平台的设计非常模块化每一块板子都有明确的职责。2.1 核心三板分工与协作逻辑CPU板是系统的大脑和心脏。它的核心是i.MX35 ARM11应用处理器和配套的MC13892电源管理芯片。板上集成了512MB NAND Flash和512MB DDR2内存构成了最小可运行系统。这块板通过一个500针的高密度板对板连接器J1与其他板卡通信。它的设计非常“干净”只包含最核心的处理器、内存和电源管理这种设计使得CPU板可以作为一个相对通用的核心模块理论上可以适配不同的底板或载板。调试板是开发者的“眼睛”和“双手”。它的主要作用是在开发阶段提供便利的调试和监控接口。板上最关键的部件是一个CPLD复杂可编程逻辑器件它实现了额外的以太网和串口控制器专门用于调试目的。这意味着即使目标系统CPU功能板的网络或串口功能尚未调通你依然可以通过调试板上的接口J1以太网口和CON4串口与系统通信。此外它还提供了电流测量接口、多个调试LED和按钮以及至关重要的启动模式配置开关SW5-SW10。一个重要的细节是调试板上有一个电源使能开关SW4-8。当它处于ON时电源会供给全部三块板处于OFF时则只给调试板自身供电。在组装开发平台时务必确保此开关为ON。功能板是系统的“五官和四肢”。它承载了所有的应用层外设旨在展示i.MX35芯片的丰富功能。这包括一个7英寸WVGA分辨率的LCD触摸屏、摄像头接口、FM收音机模块、SD卡槽、USB OTG/Host接口、ATA硬盘接口、CAN总线接口、音频输入输出等。简单来说所有让这个开发套件变得“有用”和“有趣”的功能都在这块板上。它通过两个500针连接器分别与调试板J73和CPU板J78对接。功能板上也有自己的启动配置开关SW1, SW2用于选择从NAND Flash、SD卡等设备启动。注意在接触任何板卡前请务必采取防静电措施如佩戴防静电手环或触摸接地的金属物体。精密芯片对静电非常敏感一个不经意的放电就可能造成永久性损伤。2.2 接口与开关配置全解析仅仅知道板子有什么接口还不够理解关键开关和连接器的配置逻辑是成功启动系统的前提。这里最容易出错的就是启动模式的设置。1. 调试板启动模式开关SW5-SW10这套开关用于配置CPU的初始启动源。根据官方指南要运行预装在NAND Flash中的演示系统需要将其设置为“8-bit NAND Flash”模式。具体设置如下0OFF1ONX任意SW5: X (不关心)SW6: 1SW7: 0SW8: 0SW9: 1SW10: 02. 功能板启动模式开关SW1, SW2功能板的开关需要与调试板的设置协同工作。当调试板设置为NAND启动时功能板的SW1所有拨码应置于OFFSW2的1、4、5号拨码置于ON其余OFF。这个组合告诉系统从CPU板上的NAND Flash中寻找启动代码。3. 调试板串口选择与电源开关SW4SW4-1 (UART端口选择)应置于ON选择CON4这个DB9串口作为调试输出。SW4-8 (电源使能)如前所述在开发平台模式下必须为ON否则CPU板和功能板将得不到电力。4. 核心连接器500针板对板连接器这是三块板之间数据传输的“高速公路”。连接时务必注意连接器有防呆设计即键槽对准后再均匀用力按压确保连接牢固。官方文档强调连接时板间夹角不能超过10度以防引脚受力不均弯曲或损坏。电源接口调试板的J2和功能板的J12都是5V直流电源输入口。在开发平台模式下我们使用调试板的J2供电在纯演示平台模式下则使用功能板的J12供电。调试串口CON4这是一个标准的DB9母头串口用于连接PC输出系统启动信息、内核日志并提供命令行交互界面。这是开发初期最重要的调试手段。理解这些硬件细节后平台的物理组装就变成了一个按图索骥的过程。关键在于细心和遵循顺序避免在通电状态下进行插拔操作。3. 平台搭建与系统启动实操现在我们进入动手环节。根据你的目标——是进行软件开发调试还是仅仅运行演示——你需要搭建两种不同的硬件平台。我会详细说明两种平台的搭建步骤、连接方法以及背后的原因。3.1 开发平台搭建三板合一开发平台包含全部三块板卡主要用于烧写系统、调试内核和驱动、以及运行需要串口交互的复杂应用。这是功能最全的模式。第一步连接功能板与调试板将调试板平放在防静电桌垫上。拿起功能板对准调试板上的500针连接器CN74。注意观察连接器的键槽一个凸起和凹槽确保方向正确。保持两块板平行垂直向下均匀用力直到听到轻微的“咔嗒”声或感觉连接器完全到位。务必确保板子完全平行贴合没有翘起或倾斜。此时功能板是“坐”在调试板之上的。第二步连接CPU板将上一步组装好的“调试板功能板”组合翻转过来使功能板的底部朝上。拿起CPU板对准功能板底部的另一个500针连接器J78。同样注意防呆方向。再次垂直向下均匀用力将CPU板连接到功能板底部。至此一个“调试板在中间功能板在上CPU板在下”的三明治结构就组装完成了。你可以用配套的尼龙支柱和螺丝进行固定以增加物理稳定性特别是在需要移动平台时。第三步连接PC与上电串口连接使用套件附带的RS-232串口线一端连接调试板的CON4口另一端连接你PC的串口如果PC没有串口你需要一个USB转串口适配器。网络连接可选使用网线连接调试板的J1以太网口到你的路由器或直接到PC。这在后续需要通过网络传输文件或进行网络调试时会用到。电源连接将5V/5A电源适配器插入插座并将直流输出头插入调试板的J2电源接口。启动配置复查再次确认所有开关设置是否正确调试板SW4-1: ON, SW4-8: ON。调试板启动开关SW5-SW10设置为NAND Flash模式SW61, SW70, SW80, SW91, SW100。功能板启动开关SW1全OFFSW2的1,4,5为ON。启动串口终端在你的PC上打开一个串口终端软件如Windows的Putty、SecureCRT或Linux的Minicom、screen。新建一个串口连接参数设置为波特率115200数据位8停止位1无奇偶校验无流控制。上电启动将调试板上的电源开关S4拨到“1”的位置。此时你应该能在串口终端上看到如瀑布般滚动的启动日志从U-Boot引导程序开始直到Linux内核启动完毕最终出现登录提示符通常是rootfreescale ~$。如果没有任何输出请立即断电并重新检查所有连接和开关设置。3.2 演示平台搭建精简二板如果你只想运行预装的演示程序体验多媒体功能而不需要进行底层调试那么可以搭建更简洁的演示平台。这个模式下调试板是不需要的系统将通过功能板上的LCD触摸屏进行交互。第一步连接CPU板与功能板直接将CPU板通过500针连接器连接到功能板的J78接口上。操作方法与三板模式下的第二步相同。同样确保连接稳固。第二步连接电源与启动电源连接这次将5V电源适配器直接连接到功能板的J12电源接口上。启动配置功能板上的启动开关SW1, SW2仍需按照NAND Flash模式设置SW1全OFFSW2的1,4,5为ON。因为移除了调试板所以无需关心调试板的开关。上电启动按下功能板上的电源按钮S14。此时系统将从NAND Flash启动并直接在7英寸LCD屏幕上显示图形化的启动界面和主菜单而不会在串口输出大量日志除非你额外连接了串口。实操心得很多新手在搭建演示平台时会习惯性地去按调试板上的开关却发现系统没反应。记住在二板模式下供电和开关都在功能板上。另一个常见问题是屏幕不亮请检查功能板与CPU板的连接是否牢固以及电源适配器的输出电压是否为稳定的5V。4. Linux演示镜像使用与多媒体功能体验当系统成功启动无论是通过串口看到了命令行还是在LCD上看到了图形界面都意味着硬件平台工作正常。接下来我们深入了解一下这个预装的Linux演示系统能做什么以及如何操作。4.1 系统概览与文件管理通过串口登录到系统后用户名通常是root无密码你就拥有了一个完整的Linux命令行环境。你可以使用常见的Linux命令来探索系统ls /查看根目录。cat /proc/cpuinfo查看CPU信息。ifconfig查看网络配置如果调试板以太网已连接并配置。df -h查看存储空间使用情况。演示系统的图形界面是一个定制的多媒体应用启动器。主界面通常分为两个标签页“多媒体应用”和“设置”。在“设置”中你可以配置语言、音量、显示参数等。而核心功能都在“多媒体应用”标签页中包括音频播放器、视频播放器、图片浏览器和FM收音机。这些应用播放的媒体文件默认存储在/mnt/flc/目录下该目录下又分为Pictures、Music、Video三个子目录。系统启动时会自动挂载NAND Flash上的某个分区到/mnt/flc。所以要让应用找到内容你需要把媒体文件放到对应的目录里。4.2 多媒体文件导入的两种方法预装的系统可能只包含少数示例文件。要播放自己的内容你需要将文件导入到开发板。这里介绍两种最实用的方法。方法一通过SD卡最便捷这是官方推荐且最简单的方法尤其适合演示平台模式。准备SD卡将SD卡格式化为FAT32文件系统在Windows或Linux下均可。注意如果你需要在Windows和Linux系统间交叉使用这张SD卡FAT32是最兼容的选择。拷贝文件在PC上将你的图片、音乐、视频文件分别拷贝到SD卡根目录下或者自己创建好Pictures、Music、Video文件夹进行分类存放。插入与挂载将SD卡插入功能板下部的SD卡槽。系统会自动将其挂载到/mnt/mmc或类似的目录下。你可以通过串口执行mount命令来查看具体的挂载点。复制文件通过串口使用cp命令将SD卡中的文件复制到系统的媒体目录。例如# 假设SD卡挂载在 /mnt/mmc cp /mnt/mmc/MyPhoto.jpg /mnt/flc/Pictures/ cp /mnt/mmc/MySong.mp3 /mnt/flc/Music/ cp /mnt/mmc/MyVideo.avi /mnt/flc/Video/你也可以一次性复制整个文件夹cp -r /mnt/mmc/Pictures/* /mnt/flc/Pictures/方法二通过网络传输适用于开发平台如果你的开发平台通过调试板接入了网络并且配置好了IP地址可以通过DHCP自动获取或手动设置那么可以使用SCP或SFTP工具从PC传输文件这比反复插拔SD卡效率高得多。在PC端使用如FileZilla、WinSCPWindows或scp命令Linux/Mac。连接地址为开发板的IP地址用户名为root密码通常为空。直接将文件拖拽到远程目录/mnt/flc/下对应的文件夹中。4.3 四大核心应用操作指南文件准备就绪后就可以在LCD触摸屏上畅享多媒体功能了。每个应用的操作逻辑都很直观。视频播放器在主菜单点击“视频播放器”。界面右上角通常有一个下拉箭头或菜单按钮点击后选择“打开文件”。文件浏览器会定位到/mnt/flc/Video目录列出所有支持格式的视频文件。点击选择文件即可播放。播放界面会有进度条、暂停/播放、停止、音量调节以及全屏按钮。实测下来触摸屏的响应在播放高码率视频时可能会稍有延迟这属于正常现象因为处理器资源被视频解码大量占用。音频播放器点击“音频播放器”。同样通过菜单打开文件定位到/mnt/flc/Music目录。支持创建和管理播放列表。播放界面提供基本的播放控制、进度条和音量调节。一个小技巧通过系统“设置”中的音频输出选项你可以选择是通过板载扬声器、耳机接口还是其他方式输出。图片浏览器点击“图片浏览器”应用会直接打开/mnt/flc/Pictures目录以缩略图形式展示图片。点击任意一张图片进入全屏查看模式。在查看模式下屏幕边缘通常会浮现出工具栏提供放大/缩小、旋转、切换到上一张/下一张、幻灯片播放等功能。需要注意的是于屏幕分辨率是WVGA800x480过高分辨率的图片在缩放时可能会消耗较多时间。FM收音机点击“FM收音机”应用。确保已将耳机插入功能板的耳机接口J80耳机在此充当FM天线。应用界面通常有频率显示、手动调谐旋钮虚拟或物理按键映射、自动搜台按钮和音量控制。点击“自动搜台”系统会扫描并保存可用的电台。之后就可以在已保存的电台列表中选择收听。4.4 支持的编解码器与格式清单了解系统支持哪些格式可以避免放入不兼容的文件导致应用无响应。根据官方文档这个演示镜像集成了飞思卡尔的多媒体框架MFW支持以下编解码器插件/组件描述支持功能mfw_mp3decoderMPEG Layer 3 (MP3) 解码器播放、暂停、停止、跳转、读取元数据mfw_wmadecoderWMA7, WMA8, WMA9 解码器播放、暂停、停止、跳转、读取元数据不支持WMA Pro 和 Losslessmfw_aacdecoderAAC LC 解码器播放、暂停、停止、跳转、读取元数据注意对ADIF格式的AAC文件可能不支持跳转mfw_h264decoderH.264 Baseline Profile 解码器播放、暂停、停止、跳转、读取元数据mfw_mpeg4decoderMPEG-4 / H.263 Simple Profile 解码器播放、暂停、停止、读取元数据mfw_avidemuxerAVI 文件解析器支持H.264MP3, MPEG-4MP3组合播放、暂停、停止、跳转、读取元数据mfw_asfdemuxerASF 文件解析器支持WMAWMV组合播放、暂停、停止、跳转、读取元数据mfw_mp4demuxerMP4 文件解析器支持H.264AAC, H.264MP3, MPEG-4MP3组合播放、暂停、停止、跳转、读取元数据格式选择建议视频优先选择MP4 (H.264 AAC)或AVI (H.264 MP3)格式这是兼容性最好的组合。音频最稳妥的是MP3格式AAC和WMA非Pro版也基本没问题。图片常见的JPEG、PNG、BMP格式通常都能被支持。如果你遇到文件无法播放首先检查其格式是否在上述支持列表中其次检查文件是否损坏或者码率是否过高对于2009年的硬件建议视频分辨率不超过720p码率在2-3Mbps以下为宜。5. 开发环境准备与后续探索运行演示镜像只是第一步。这个PDK套件的真正威力在于它提供了一个完整的嵌入式Linux开发环境。你可以修改内核、编写驱动、开发自己的应用程序甚至构建一个全新的根文件系统。5.1 搭建Linux主机开发环境要进行深度开发你需要在PC上搭建一个Linux开发环境。官方文档推荐使用Red Hat、Fedora Core、Debian或SuSE的特定版本。以当今更流行的Ubuntu为例你需要安装一些必要的构建工具和库。以下是在Ubuntu系统上的基础准备命令sudo apt-get update sudo apt-get install build-essential libncurses5-dev u-boot-tools \ bison flex texinfo zip unzip zlib1g-dev gettext \ g libtool-bin git-core diffstat gawk chrpath \ wget cpio python3 python3-pip这些包提供了编译器、链接器、内核配置工具等构建嵌入式Linux系统所需的基础设施。5.2 获取与使用BSP及工具链飞思卡尔为i.MX35 PDK提供了完整的Linux BSP板级支持包其中包含了最重要的两个工具LTIB (Linux Target Image Builder)这是一个用于配置、编译和打包整个目标板即开发板软件系统的图形化/命令行工具。你可以通过它选择内核版本、配置内核选项、选择需要包含的软件包如BusyBox、各种库和应用程序最终生成一个可以烧写到板子上的完整镜像文件通常是.img或.sdcard格式。交叉编译工具链 (Toolchain)这是一套运行在x86 PC上但能生成ARM目标代码i.MX35是ARM11的编译器、调试器等工具集合。它通常作为LTIB的一部分被安装。典型的开发流程从NXP官网原飞思卡尔下载对应版本的BSP安装包。在Linux主机上安装LTIB这通常会同时安装好交叉编译工具链。运行LTIB选择i.MX35 PDK的平台配置。在LTIB的菜单中定制你的系统比如升级内核、增加或删除软件包、修改文件系统内容等。执行构建命令LTIB会自动下载源代码或使用本地缓存、配置、编译所有组件并最终生成系统镜像。使用dd命令或飞思卡尔提供的烧写工具如mfgtool将新生成的镜像烧写到开发板的NAND Flash或SD卡中。重启开发板验证你的定制系统。5.3 常见问题排查与调试技巧在开发过程中你肯定会遇到各种问题。这里分享几个最经典的排查思路1. 系统无法启动串口无任何输出检查电源用万用表测量5V电源接口处的电压是否稳定在5V左右电流是否足够。检查启动模式开关这是最常出错的地方反复对照文档确认SW5-SW10以及SW1、SW2的设置完全正确。可以用手机拍下开关位置再放大检查。检查串口连接与配置确认串口线是否完好PC端串口号选择是否正确波特率是否设置为115200流控制是否为“无”。最小系统法如果可能尝试仅连接CPU板和调试板不接功能板看串口是否有输出以排除功能板故障的影响。2. 系统启动到一半卡住例如卡在“Starting kernel...”或文件系统挂载错误观察串口日志仔细阅读卡住前最后几行打印的信息通常会有错误提示如“Kernel panic”、“Failed to mount root fs”等。内核问题可能是编译的内核镜像不对或者设备树Device Tree配置有误。确保使用BSP中针对PDK的默认配置开始修改。文件系统问题根文件系统镜像损坏或格式不被识别。检查LTIB中文件系统类型的配置通常是jffs2或ubifs for NAND并重新烧写。3. 多媒体应用无法播放文件或播放卡顿检查文件格式确认文件格式和编码在支持列表内。检查文件路径确认文件是否已正确拷贝到/mnt/flc下的对应目录。资源占用通过串口登录使用top命令查看CPU和内存占用率。播放高清视频时占用率高是正常的。如果播放低分辨率视频也卡顿可能是系统后台有其他进程在运行或者SD卡读取速度慢。驱动问题如果自己编译的系统出现此问题可能是多媒体驱动如VPU视频编解码驱动、GPU驱动没有正确编译进内核或模块没有加载。检查内核配置中Device Drivers - Multimedia support - V4L2 drivers以及飞思卡尔特有的多媒体框架相关选项。4. 触摸屏校准或响应不准校准工具演示系统通常内置触摸屏校准程序。在串口下查找或通过设置菜单寻找校准选项。驱动配置如果是自定义系统需要确保内核中正确配置了触摸屏控制器通常是基于SPI或I2C接口的电阻屏控制器的驱动并且设备树中正确描述了其在硬件上的连接。嵌入式开发就是一个不断遇到问题、分析日志、查找原因、解决问题的过程。善用串口这个最原始的调试工具它能告诉你系统内部发生的几乎所有事情。养成查看/var/log/messages或使用dmesg命令的习惯绝大多数软件层面的问题都能在这里找到线索。

相关新闻