1. 项目概述为什么选择TWR-MPC8309作为工业网关开发的起点在工业自动化和物联网边缘节点开发的早期阶段硬件选型和原型验证往往是最耗时、也最容易踩坑的环节。很多工程师都经历过这样的困境要么选择功能强大但价格高昂、开发复杂的工控机要么选择成本低廉但接口匮乏、需要大量外扩的通用开发板最终在性能、成本和开发周期之间难以平衡。我第一次接触飞思卡尔现恩智浦的Tower System模块化开发平台时正是被其“快速原型设计”的理念所吸引。而TWR-MPC8309模块则是这个理念在工业连接领域的一个非常典型的落地产品。简单来说TWR-MPC8309是一块基于PowerQUICC II Pro系列MPC8309处理器的单板计算机模块。它的核心价值正如其副标题所揭示的在于“工业连接与协议卸载引擎”。这短短几个字对于做过工业网关或边缘控制器的朋友来说意味着巨大的便利。传统方案中要实现Modbus TCP/RTU、PROFIBUS DP甚至EtherNet/IP等工业协议往往需要在主处理器之外额外搭配一颗FPGA或专用的协议处理ASIC。这不仅增加了BOM成本、PCB面积和功耗更关键的是引入了复杂的软硬件协同设计问题调试起来令人头疼。TWR-MPC8309的MPC8309处理器内部集成了一个称为“通信处理器模块”的协处理器能够独立处理这些工业协议的底层帧将主CPU从繁重的协议栈运算中解放出来这就是“协议卸载引擎”的真正含义。因此这块板子非常适合以下几类开发者一是正在评估工业通信方案需要快速搭建一个具备多协议能力的测试节点二是从事工业物联网网关、智能边缘控制器或可编程逻辑控制器原型开发的工程师三是希望从单片机升级到更复杂应用处理器但又不想在硬件设计上投入过多精力的团队。它提供了一个“开箱即用”的硬件平台双网口、双RS485、音频、USB、SD卡等接口一应俱全并且预装了U-Boot、Linux和MQX RTOS让你能跳过繁琐的硬件调试和基础BSP移植直接聚焦于上层应用逻辑的开发。接下来我将结合自己从开箱到运行第一个Demo的全过程拆解其中的关键步骤和那些官方手册里不会明说的细节。2. 开箱与硬件初识接口布局与核心功能模块解析刚拿到TWR-MPC8309模块时它给人的第一印象是紧凑而功能密集。作为Tower System的一员它既可以作为独立的单板计算机使用也可以通过板卡两侧的“电梯连接器”与其他功能模块如传感器板、显示板、电机驱动板堆叠构成一个垂直的“塔”式系统这也是“Tower”名称的由来。这种模块化设计对于快速迭代产品功能特别有用比如这周调试通信下周就可以堆叠上一块模拟量输入模块来测试数据采集。让我们仔细看看板载的关键接口理解每个部分的设计意图电源与调试接口簇板子提供了多达四种供电方式这体现了其设计的灵活性。最常用的是通过USB2 Full-Speed Port供电它同时承载了调试控制台的功能。旁边还有一个USB2 High-Speed Port仅用于供电或高速数据传输。左上角的5V直流电源接口则是为脱离电脑独立运行准备的。对于调试除了标准的JTAG/COP接口板载的OSJTAG电路允许你仅通过一根USB线连接Full-Speed口就完成代码下载和调试这对于没有昂贵专用仿真器的个人开发者或小团队来说是个福音。工业通信接口这是本板的灵魂所在。双RJ45 10/100M以太网口不仅可用于连接局域网更可以直接用一根网线将两个口对接实现板载的网络回环测试方便协议栈开发。旁边的双RS485端口是工业现场总线如Modbus RTU的物理层基础随板附赠的RS485回环测试线就是用来验证这路通信是否正常的。RS232接口则常用于连接老式PLC或触摸屏。扩展与配置接口Mini-PCIe插座位于板底可用于扩展4G、Wi-Fi等无线通信模块。Micro SD卡槽为系统提供了大容量存储选项。8位的配置开关是控制板卡启动和行为逻辑的核心其具体功能我们会在后续详细解读。其他功能接口音频输入输出接口暗示了其在语音提示或音频分析应用上的潜力。MCU BDM接口则用于连接飞思卡尔另一条产品线如Kinetis系列的调试器体现了Tower平台跨产品线工具复用的思想。注意在首次接触板卡时建议先不要连接任何外设尤其注意观察所有接口的防呆设计和Pin 1标识。例如RS485接口的Pin 1在板卡上用白色圆点标出而配套线缆的接头通常用三角箭头指示Pin 1。对接错误可能导致接口损坏。3. 上电第一步多种供电方案选择与实操要点让一块开发板跑起来第一步永远是正确供电。TWR-MPC8309提供了多种选择但不同的选择会直接影响你后续的开发流程。3.1 推荐方案USB Full-Speed端口供电最常用这是最快捷的上手方式。使用随板附赠的USB A to Micro-B线缆将板卡的“USB2 Full-Speed”端口连接到电脑的USB口。此时电脑会同时为板卡提供5V电源并将该USB口识别为一个虚拟串口作为系统的调试控制台。实测中大部分电脑的USB 2.0端口都能提供足够的电流约500mA驱动板卡稳定运行。优点是连线简单一线搞定供电和调试。缺点是如果板卡后续需要连接大功率外设如某些Mini-PCIe模块USB供电可能不足。操作步骤与验证确保板卡上所有配置开关处于出厂默认状态通常所有开关拨到“ON”位置具体需核对丝印。仅连接这一根USB线到电脑。观察板卡上的电源指示灯如果有是否亮起或聆听是否有芯片工作的轻微声音贴近听有些电感会发出高频啸叫。在电脑的设备管理器中稍等片刻应该能在“端口COM和LPT”下看到一个新出现的设备例如“USB Serial Port (COM3)”。这就是我们的调试串口。3.2 备用方案外部5V适配器供电当你需要板卡脱离电脑独立运行时就需要用到板卡左上角的5V直流电源接口。请注意接口旁的极性标识通常内正外负。你需要自备一个输出为5V DC、电流不小于1A的电源适配器并确认接口尺寸匹配。连接方式插入适配器后板卡即上电。此时若仍需调试你需要另外通过USB线连接“USB2 Full-Speed”端口到电脑以获取控制台。或者你也可以通过以太网口利用网络进行SSH登录调试。避坑指南务必确认电源适配器的质量。劣质适配器的输出电压纹波可能很大在处理器高速运行或网络频繁收发数据时可能导致系统不稳定、随机重启等诡异问题。我曾遇到过因为电源问题导致SD卡读写频繁失败的案例排查了很久才发现是电源的锅。3.3 扩展方案通过Tower电梯连接器供电如果你将TWR-MPC8309作为主模块插入Tower System的机架中那么电源可以通过底层的“Primary Tower Elevator Connector”由背板统一提供。这种模式下供电管理更加规范适合多模块协同工作的复杂原型系统。实操心得对于日常开发和测试强烈建议始终采用“USB Full-Speed端口供电”方案。它不仅方便而且由于电流限制在一定程度上也能保护板卡避免因误操作短路而烧毁核心芯片。只有在最终产品化原型测试需要模拟真实供电环境时再切换到外部5V适配器。4. 软件环境搭建驱动安装与终端配置详解板卡上电后下一步就是在电脑上建立一个可靠的通信通道也就是配置好终端软件以便看到板卡启动信息并输入命令。4.1 虚拟串口驱动安装当你首次通过USB线连接板卡和电脑时系统大概率会提示发现新硬件“TWR-MPC8309_VirtualCOM”。如果系统没有自动安装成功你需要手动安装驱动。获取驱动驱动文件位于产品随附的DVD光盘中路径通常为Drivers\VirtualCOM\。如果光盘遗失可以到恩智浦官网原飞思卡尔的TWR-MPC8309产品页面下载。搜索“TWR-MPC8309_VirtualCOM.inf”即可。手动安装在设备管理器中右键点击带黄色叹号的未知设备选择“更新驱动程序软件” - “浏览计算机以查找驱动程序软件” - 定位到包含.inf文件的文件夹下一步即可完成安装。验证安装成功后设备管理器里会显示为一个具体的COM口例如“USB Serial Device (COM3)”。请记下这个COM口号如COM3后续配置终端软件时需要。4.2 终端软件选择与参数配置任何支持串口通信的终端软件都可以如Putty、Tera Term、MobaXterm或者SecureCRT。这里以最常用的免费软件Putty为例。打开Putty在左侧分类中选择“Session”。连接类型选择“Serial”。串口参数这是关键必须与板卡Bootloader和内核的设置完全一致Serial line填入你在设备管理器中看到的COM口如COM3。Speed (baud)115200Data bits8Stop bits1ParityNoneFlow controlNone可以为这个会话起个名字如“TWR-MPC8309”在“Saved Sessions”栏输入后点击“Save”以后直接双击即可连接。点击“Open”会打开一个黑色窗口。此时给板卡重新上电拔插USB线或者按下板卡的复位按钮你应该能看到如瀑布般的启动日志输出。4.3 首次启动信息解读成功的启动日志会类似以下内容具体版本可能不同U-Boot 2010.03 (Nov 10 2011 - 14:30:00) CPU: MPC8309, Version: 1.1, (0x80c90011) Core: E300, Version: 2.2, (0x80040222) ... DRAM: 128 MiB FLASH: 32 MiB ... Net: eTSEC0, eTSEC1 Hit any key to stop autoboot: 0看到“Hit any key to stop autoboot: 0”这个倒计时提示就说明串口通信完全正常了。如果在倒计时结束前默认可能只有3秒在终端窗口按任意键就会中断自动启动流程进入U-Boot的命令行界面显示提示符。这是进行底层配置和调试的关键入口。注意事项如果打开终端窗口后一片漆黑没有任何输出请按以下顺序排查确认供电板卡电源指示灯是否亮起确认COM口设备管理器中的COM口号是否与Putty中设置的一致有时电脑上COM口号会变。确认参数波特率115200数据位8停止位1校验无流控无这五项必须一字不差。尝试其他软件用Windows自带的“超级终端”如果系统还有或Tera Term试试排除Putty配置问题。检查开关确认配置开关SW1的1、2位UART_SEL是否设置正确。如果误拨到其他位置控制台可能被重定向到了RS232或电梯连接器上的UART。5. 配置开关深度解析理解每一个拨码的意义TWR-MPC8309板卡上那个8位的拨码开关SW1是其硬件配置的核心它决定了板卡上电后的行为逻辑。理解每个开关的作用是玩转这块板子的必修课。开关的“ON”和“OFF”位置对应逻辑“0”和“1”请注意这个逻辑定义可能与你的直觉相反务必以板卡丝印或手册为准。下面我们结合实物操作逐一拆解开关位信号名称出厂设置 (ON0)功能描述与实操影响1, 2UART_SEL[0:1]ON, ON (00)控制台选择。这组开关决定了系统调试信息输出到哪个物理接口。•00: 输出到板载的RS232接口。你需要一个USB转RS232串口线连接电脑。•01: 输出到Tower电梯连接器上的UART1同时电梯UART0也可用。用于堆叠模式。•10: 输出到USB2 Full-Speed端口虚拟串口。这是我们最常用的模式。•11: 输出到USB端口同时电梯UART0也可用。3OBSELON (0)调试接口选择。这个开关至关重要选错了仿真器可能连不上。•0 (ON): 启用板载OSJTAG调试。此时仅通过连接“USB2 Full-Speed”端口到电脑即可使用基于OpenOCD等工具的免费调试方案无需额外硬件。•1 (OFF): 启用标准的JTAG/COP接口。你需要一个像Lauterbach Trace32或iSystem winIDEA这样的专用仿真器连接到板载的JTAG头。4RS485_EN1ON (0)RS485端口1使能。逻辑有点反直觉•0 (ON):禁用RS485 Port 1。当你不需要用到这个端口时可以禁用以节省功耗或避免干扰。•1 (OFF):启用RS485 Port 1。5RS485_EN2ON (0)RS485端口2使能。逻辑同SW1-4。•0 (ON): 禁用 Port 2。•1 (OFF): 启用 Port 2。6, 7SW[0:1]ON, ON (00)软件配置位。这两个开关的状态可以被运行在板卡上的软件如U-Boot或Linux内核读取从而改变软件行为。出厂Demo可能用它来选择启动不同的测试模式。在你的自定义应用中可以将其定义为功能开关比如选择不同的网络配置或工作模式。8OB_BOOTON (0)启动设备选择。•0 (ON): 从板载的NOR Flash启动。这是默认模式板载的Demo程序就存储在这里。•1 (OFF): 从Tower电梯连接器上连接的扩展模块的存储设备启动。用于从其他模块加载系统。配置实战建议 对于绝大多数初次上手的用户保持所有开关在出厂默认位置全部拨到ON是最安全的选择。这对应着控制台通过USB虚拟串口输出启用OSJTAG调试RS485端口禁用从板载Flash启动。在你需要连接RS485设备时再将SW1-4或SW1-5拨到OFF向下位置以启用相应端口。当你需要连接外部JTAG仿真器时务必将SW1-3拨到OFF否则仿真器无法识别处理器。6. 运行与体验预装演示程序在正确连接电源和终端并保持配置开关为出厂默认后给板卡重新上电。这次我们不在倒计时时按键让系统自动完成启动。6.1 启动过程观察在终端里你会看到U-Boot初始化硬件然后加载Linux内核最后挂载根文件系统。整个过程大约几十秒。启动完成后预装在Flash里的演示程序会自动运行。6.2 演示程序内容解析这个演示程序通常是一个综合性的展示旨在验证板卡主要功能控制台输出在终端里演示程序可能会以ASCII艺术或文本菜单的形式列出板卡信息、IP地址、以及可交互的测试选项。例如它可能会提示你输入命令来测试网络回环、读写SD卡、播放音频等。显示输出如果连接如果你按照快速指南的提示购买了MPC830x-TLCD显示模块并连接到板卡的显示接口演示程序很可能会在屏幕上播放一个JPEG图片幻灯片。这验证了处理器的图像解码能力和LCD驱动接口的正常工作。6.3 与演示程序交互仔细阅读终端里的提示信息。演示程序可能会提供一个简单的命令行菜单。常见的测试命令包括network_test或ping_self通过一根网线连接板卡的两个以太网口这个命令会发起内部网络回环测试验证网络接口和协议栈。sd_test测试Micro SD卡的读写速度。audio_test通过音频接口播放一段测试音。rs485_test如果你连接了随附的RS485回环线这个命令会测试RS485端口的收发功能。6.4 如何退出演示进入系统演示程序通常运行在Linux用户空间。要获得完整的Linux shell控制权你需要结束演示进程。方法通常是在终端中按Ctrl C尝试中断当前运行的程序。如果成功你会看到命令行提示符可能是#或$。输入ls、ps等基本命令验证一下。现在你就拥有了一个完整的、运行在PowerQUICC MPC8309上的Linux系统可以开始你的自定义开发了。如果CtrlC无效演示程序可能被设计为守护进程。此时你需要通过重启并进入U-Boot来修改启动参数。具体方法是重启板卡在U-Boot倒计时时按键进入提示符然后使用setenv命令修改bootargs去掉自动运行演示程序的参数最后saveenv并boot。这部分涉及U-Boot操作我们将在下一节详细展开。7. 深入U-Boot引导配置与关键命令实战U-Boot是硬件上电后运行的第一段主要软件负责初始化最基础的硬件、加载操作系统内核。掌握U-Boot的常用命令是进行系统定制和深度调试的基础。7.1 进入U-Boot命令行板卡上电或复位后在终端里看到Hit any key to stop autoboot提示时迅速按下键盘任意键如空格倒计时会停止并出现提示符这表明你已经进入了U-Boot命令行。7.2 核心环境变量查看与修改U-Boot的行为主要由一系列环境变量控制。最重要的几个是bootargs传递给Linux内核的命令行参数定义了控制台设备、根文件系统位置等。bootcmd定义自动启动时执行的命令序列。ipaddr、serverip板卡和TFTP服务器的IP地址。使用printenv命令可以打印所有环境变量。你会看到一长串列表找到上述关键变量。 printenv bootargsconsolettyS0,115200 root/dev/nfs rw nfsroot192.168.1.100:/nfsroot ip192.168.1.50:192.168.1.100:192.168.1.1:255.255.255.0::eth0:off bootcmdtftp 200000 uImage; bootm 200000 ipaddr192.168.1.50 serverip192.168.1.100 ...解读这个例子中系统配置为从网络启动bootcmd从TFTP服务器加载内核镜像uImage根文件系统也通过NFS挂载bootargs中的root/dev/nfs。修改环境变量使用setenv命令。例如如果你想将板卡IP改为静态地址192.168.2.10 setenv ipaddr 192.168.2.10 saveenvsaveenv命令将当前内存中的环境变量保存到Flash的持久化存储区下次启动依然有效。如果只想临时修改本次启动有效只执行setenv而不执行saveenv即可。7.3 网络与TFTP下载测试在嵌入式开发中通过网络TFTP加载内核和文件系统镜像进行调试是最高效的方式。确保网络连通用网线将板卡的某个以太网口如eth0连接到与你的开发电脑同一局域网的路由器或交换机。配置IP确保ipaddr板卡IP和serverip你的电脑IP在同一网段且不与网络其他设备冲突。测试网络使用ping命令测试到服务器或网关的通畅性。注意U-Boot的ping实现可能要求服务器先ping板卡一次才能响应或者在某些配置下不可用。更可靠的测试方法是进行TFTP下载。TFTP下载测试在你的电脑上搭建TFTP服务器如Tftpd64并将一个测试文件如test.bin放入服务器根目录。在U-Boot中执行 tftp 100000 test.bin这条命令尝试从serverip的TFTP服务器下载test.bin文件到板卡内存地址0x100000处。如果成功你会看到传输速度和字节数。这验证了网络栈和TFTP客户端功能正常。7.4 启动Linux内核手动启动内核的命令通常是bootm。假设你已经通过TFTP将内核镜像uImage下载到了内存地址0x200000 bootm 200000U-Boot会从该地址解压并跳转到内核执行。如果你按照之前printenv看到的bootcmd那样操作也可以直接运行run bootcmd来执行预设的启动命令序列。避坑技巧在U-Boot中操作Flash如saveenv或进行大文件传输时最忌讳突然断电。这可能导致Flash数据损坏使板卡“变砖”。建议在稳定的电源环境下进行这些操作。如果不慎损坏了U-Boot通常需要通过JTAG/COP接口重新烧写过程会比较麻烦。8. 工业通信功能实战以太网与RS485回环测试TWR-MPC8309的核心优势在于工业通信我们通过两个简单的回环测试来验证其物理层和基础驱动是否正常工作。8.1 以太网回环测试这个测试不需要外部网络设备仅用一根普通网线即可。硬件连接取一根直连网线或交叉线现代网卡大多支持自动翻转将板卡上的ETH0和ETH1两个RJ45接口直接连接起来。启动系统进入Linux系统可以是预装Demo的Linux也可以是你自己构建的获得shell提示符。配置IP地址为两个虚拟网络接口配置同一网段的IP。ifconfig eth0 192.168.10.1 netmask 255.255.255.0 up ifconfig eth1 192.168.10.2 netmask 255.255.255.0 up执行Ping测试ping -I eth0 192.168.10.2这条命令指定从eth0接口去pingeth1接口的地址。如果看到连续的回复64 bytes from 192.168.10.2...说明两个以太网控制器硬件、驱动以及内部数据通路完全正常。你也可以从eth1去pingeth0做反向测试。8.2 RS485回环测试RS485是一种半双工的差分串行通信总线广泛用于工业现场。随板附赠的RS485回环线实际上是将Port 1的发送端A/B与Port 2的接收端短接同时将Port 1的接收端与Port 2的发送端短接形成一个自发自收的回路。硬件连接与开关配置找到板卡上的两个RS485接口绿色接线端子。确保配置开关SW1-4和SW1-5处于OFF位置向下拨以启用两个RS485端口。这是最容易忽略的一步将附赠的RS485回环线两端的接口分别插入RS485 Port 1和RS485 Port 2。务必注意方向线缆接头上通常有一个三角箭头标识Pin 1应对准板卡RS485接口旁标有白色圆点或“1”字样的那一侧。Linux系统下的测试进入Linux shell。RS485设备在Linux中通常被映射为/dev/ttyS2和/dev/ttyS3具体编号可能因内核版本和设备树配置略有不同可通过dmesg | grep tty命令查看。我们可以使用简单的cat和echo命令测试。打开两个终端窗口可以通过两个不同的串口工具连接同一个控制台或者使用screen多会话。终端A监听Port 1stty -F /dev/ttyS2 115200 cs8 -parenb -cstopb cat /dev/ttyS2终端B向Port 2发送stty -F /dev/ttyS3 115200 cs8 -parenb -cstopb echo Hello RS485 Loopback Test /dev/ttyS3如果一切正常在终端A中应该能看到输出的“Hello RS485 Loopback Test”字符串。这证明了RS485收发器硬件、驱动以及回环线路都是正常的。8.3 测试的意义与延伸这两个回环测试是硬件功能验证的“冒烟测试”。通过它们你可以快速确认这块开发板最核心的通信外设处于健康状态。在此基础上你可以进一步网络测试将板卡接入真实网络配置DHCP或静态IP进行iperf网络性能测试或者搭建一个简单的TCP/UDP服务器进行通信测试。RS485测试连接一个真实的Modbus RTU从站设备如温湿度传感器编写或运行一个Modbus主站测试程序验证完整的工业协议栈。MPC8309的协议卸载引擎POE正是在这个层面发挥作用处理Modbus RTU的CRC校验、帧超时管理等降低主CPU负载。9. 进阶开发准备构建环境与源码获取当你完成了基本的硬件功能验证后下一步就是准备为自己的应用构建定制化的软件系统。这涉及到开发环境的搭建和源码的获取。9.1 开发主机环境推荐使用Linux作为开发主机如Ubuntu 20.04 LTS因为大多数嵌入式构建工具链在Linux上兼容性最好。Windows用户可以通过WSL2或虚拟机安装Linux。9.2 获取板级支持包与工具链恩智浦会为像TWR-MPC8309这样的评估板提供完整的板级支持包。你需要访问恩智浦官方网站在TWR-MPC8309的产品页面找到“Software and Tools”或“BSP”部分。BSP内容通常包含Linux BSP针对该板卡定制的Linux内核源码、设备树文件、根文件系统构建脚本。MQX RTOS BSP针对该板卡的MQX实时操作系统移植包、驱动和示例。工具链用于编译Power Architecture架构代码的交叉编译工具链如gcc, binutils, glibc。预编译镜像可直接烧写的U-Boot、Linux内核、文件系统镜像。文档更详细的硬件参考手册、软件指南。安装工具链下载的BSP中可能包含工具链的安装脚本或者是一个压缩包。将其解压到/opt或你的工作目录并将工具链的bin目录如/opt/freescale/usr/local/gcc-4.5.55-eglibc-2.15/bin添加到系统的PATH环境变量中。在终端输入powerpc-fsl-linux-gnuspe-gcc --version验证是否安装成功。9.3 构建U-Boot解压BSP中的U-Boot源码。进入源码目录通常需要先配置为TWR-MPC8309的默认配置make TWR-MPC8309_defconfig然后进行编译make CROSS_COMPILEpowerpc-fsl-linux-gnuspe- ARCHpowerpc编译成功后会生成u-boot.bin原始二进制和u-bootELF格式带符号等文件。9.4 构建Linux内核解压Linux内核源码。配置内核。可以使用BSP提供的默认配置文件通常位于arch/powerpc/configs/目录下如mpc8309twr_defconfig。make mpc8309twr_defconfig如果需要可以通过make menuconfig进行图形化配置增减内核模块。开始编译make CROSS_COMPILEpowerpc-fsl-linux-gnuspe- ARCHpowerpc uImage dtbs LOADADDR0x00000000 -j$(nproc)关键参数解释uImage指定生成U-Boot可引导的内核镜像格式。dtbs指定编译设备树二进制文件.dtb。设备树描述了板卡的硬件资源对Linux内核正确驱动硬件至关重要。LOADADDR指定内核在内存中的加载地址对于MPC8309通常是0。-j$(nproc)使用所有CPU核心并行编译以加快速度。编译产物在arch/powerpc/boot/目录下找到uImage内核镜像在arch/powerpc/boot/dts/目录下找到twr-mpc8309.dtb设备树文件。9.5 构建根文件系统根文件系统包含了Linux运行所需的所有库、工具和应用程序。构建方法有多种使用Buildroot这是一个自动化程度很高的工具通过配置菜单选择需要的软件包可以一键生成包含BusyBox、库文件等的完整根文件系统镜像。使用Yocto Project功能更强大、更灵活可以构建高度定制化的Linux发行版但学习曲线较陡。使用BSP提供的预编译文件系统对于快速上手可以直接使用BSP里提供的rootfs.ext2或rootfs.tar.gz文件。将编译好的uImage、.dtb文件和你选择的根文件系统如rootfs.ext2放置到TFTP服务器和NFS共享目录下然后修改U-Boot的bootargs和bootcmd环境变量就可以通过网络启动你自己构建的完整系统了。这个过程是嵌入式Linux开发的标准流程虽然初次接触会觉得步骤繁多但一旦跑通后续的迭代开发就会非常顺畅。