linux内核axp209,制作A20蜂鸟开发板干净系统[构建内核]

2023-10-07 16:20

本文主要是介绍linux内核axp209,制作A20蜂鸟开发板干净系统[构建内核],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

A20蜂鸟开发板的配置非常好,当然这是相对于他的定价来说,蓝牙WIFI,板载NAND,还预留副NAND焊盘,没占用的IO也死多的,屏幕RGB也支持等等.但是技术资料就是渣渣,只有原理图和根本编译不过的SDK.Linux Sunxi维护的GitHub源又死老的.非常不爽.所以想构建一个好的系统就非常重要了,也好不让板子吃灰嘛.

但是说的容易做起来没那么简单,过中肯定不少问题,比如闭源的WLAN/BT驱动就让人非常无语.但是功能阉掉就让人很不爽的.当我写这之前,我还没确定我能否完成下去,如果有大家的帮助和支持,那是无限鼓励我.

首先确定我GCC版本是4.6.3,这是Ubuntu 12.04 LTS默认的交叉编一起GCC版本,不知道后续的版本是否能编译,先试试这个:

f709ce7a29c9f40f1c15f8aba4e8cad6.png

然后到Kernel.ORG[网址:https://www.kernel.org/]下载内核,目前稳定版4.01.下载起来比较慢,但如果你在国内的话,下载就更慢了,下载好了就解压,

3bfbfeb1d541f66fd023401ac4a0fa4a.png

生成默认配置:

sudo ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make sunxi_defconfig

然后进入菜单配置,打开一些设置:

sudo ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make menuconfig

菜单中使用这些设置:

General setup -> 取消 Automatically append version information to the version string

勾选 Enable loadable module support

Kernel hacking -> 取消 Enable stack unwinding support (EXPERIMENTAL)

如果需要其他配置,还得自己多多看看了:

2dbf99b414ae46996bcb156da5a101c0.png

我电脑有8个核,所以我就8核全开,编译:

sudo ARCH=arm LOADADDR=0x40008000 CROSS_COMPILE=arm-linux-gnueabihf- make -j8 uImage modules dtbs

没过几分钟,我的内核就编译好了.

705c9d791303e59370488c6aa9f6051e.png

插入TF卡,预烧写好Cubian或者其他A20板子的系统.先安装内核模块,比如我这样的:

make modules_install INSTALL_MOD_PATH=/media/874ac702-5253-4ae6-8a7f-4ca851bc1e7d/

后面应该根据你实际的路径,进行修改,我的TF卡自动挂载到这个位置而已.当然还要自行复制内核哦.

e59852803ce97b03310ea937e32f7f93.png

最后还要复制设备树文件:

cp arch/arm/boot/dts/sun7i-a20-hummingbird.dtb /media/874ac702-5253-4ae6-8a7f-4ca851bc1e7d/boot/sun7i-a20-hummingbird.dtb

最后肯定是理所当然的测试一下,启动日志如下:

[ 0.000000] Booting Linux on physical CPU 0x0

[ 0.000000] Linux version 4.0.1 (root@tater-VirtualBox) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #1 SMP Fri May 1 18:52:56 CST 2015

[ 0.000000] CPU: ARMv7 Processor [410fc074] revision 4 (ARMv7), cr=10c5387d

[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache

[ 0.000000] Machine model: Merrii A20 Hummingbird

[ 0.000000] Memory policy: Data cache writealloc

[ 0.000000] PERCPU: Embedded 10 pages/cpu @eefcc000 s10944 r8192 d21824 u40960

[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 260624

[ 0.000000] Kernel command line: console=ttyS0,115200 sunxi_g2d_mem_reserve=0 sunxi_ve_mem_reserve=0 sunxi_no_mali_mem_reserve root=/dev/mmcblk0p1 rootwait panic=10

[ 0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)

[ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)

[ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)

[ 0.000000] Memory: 1033576K/1048576K available (3963K kernel code, 177K rwdata, 1152K rodata, 252K init, 228K bss, 15000K reserved, 0K cma-reserved, 270336K highmem)

[ 0.000000] Virtual kernel memory layout:

[ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)

[ 0.000000] fixmap : 0xffc00000 - 0xfff00000 (3072 kB)

[ 0.000000] vmalloc : 0xf0000000 - 0xff000000 ( 240 MB)

[ 0.000000] lowmem : 0xc0000000 - 0xef800000 ( 760 MB)

[ 0.000000] pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB)

[ 0.000000] modules : 0xbf000000 - 0xbfe00000 ( 14 MB)

[ 0.000000] .text : 0xc0008000 - 0xc0506f8c (5116 kB)

[ 0.000000] .init : 0xc0507000 - 0xc0546000 ( 252 kB)

[ 0.000000] .data : 0xc0546000 - 0xc05725c0 ( 178 kB)

[ 0.000000] .bss : 0xc05725c0 - 0xc05ab944 ( 229 kB)

[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1

[ 0.000000] Hierarchical RCU implementation.

[ 0.000000] RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=2.

[ 0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2

[ 0.000000] NR_IRQS:16 nr_irqs:16 16

[ 0.000000] Architected cp15 timer(s) running at 24.00MHz (virt).

[ 0.000009] sched_clock: 56 bits at 24MHz, resolution 41ns, wraps every 2863311519744ns

[ 0.000022] Switching to timer-based delay loop, resolution 41ns

[ 0.000366] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 178956969942ns

[ 0.000703] Console: colour dummy device 80x30

[ 0.000731] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=240000)

[ 0.000745] pid_max: default: 32768 minimum: 301

[ 0.000852] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)

[ 0.000863] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)

[ 0.001417] CPU: Testing write buffer coherency: ok

[ 0.001692] /cpus/cpu@0 missing clock-frequency property

[ 0.001709] /cpus/cpu@1 missing clock-frequency property

[ 0.001722] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000

[ 0.001782] Setting up static identity map for 0x403e5128 - 0x403e5180

[ 0.002965] Brought up 1 CPUs

[ 0.002983] SMP: Total of 1 processors activated (48.00 BogoMIPS).

[ 0.002990] CPU: All CPU(s) started in SVC mode.

[ 0.003520] devtmpfs: initialized

[ 0.004414] VFP support v0.3: implementor 41 architecture 2 part 30 variant 7 rev 4

[ 0.004867] pinctrl core: initialized pinctrl subsystem

[ 0.012451] NET: Registered protocol family 16

[ 0.012846] DMA: preallocated 256 KiB pool for atomic coherent allocations

[ 0.020017] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.

[ 0.020034] hw-breakpoint: maximum watchpoint size is 8 bytes.

[ 0.026668] reg-fixed-voltage ahci-5v: could not find pctldev for node /soc@01c00000/pinctrl@01c20800/ahci_pwr_pin@0, deferring probe

[ 0.026696] platform ahci-5v: Driver reg-fixed-voltage requests probe deferral

[ 0.026726] reg-fixed-voltage usb1-vbus: could not find pctldev for node /soc@01c00000/pinctrl@01c20800/usb1_vbus_pin@0, deferring probe

[ 0.026740] platform usb1-vbus: Driver reg-fixed-voltage requests probe deferral

[ 0.026766] reg-fixed-voltage usb2-vbus: could not find pctldev for node /soc@01c00000/pinctrl@01c20800/usb2_vbus_pin@0, deferring probe

[ 0.026778] platform usb2-vbus: Driver reg-fixed-voltage requests probe deferral

[ 0.027463] reg-fixed-voltage mmc3_vdd: could not find pctldev for node /soc@01c00000/pinctrl@01c20800/mmc3_vdd_pin@0, deferring probe

[ 0.027481] platform mmc3_vdd: Driver reg-fixed-voltage requests probe deferral

[ 0.027507] reg-fixed-voltage gmac_vdd: could not find pctldev for node /soc@01c00000/pinctrl@01c20800/gmac_vdd_pin@0, deferring probe

[ 0.027520] platform gmac_vdd: Driver reg-fixed-voltage requests probe deferral

[ 0.028007] SCSI subsystem initialized

[ 0.028568] usbcore: registered new interface driver usbfs

[ 0.028648] usbcore: registered new interface driver hub

[ 0.028718] usbcore: registered new device driver usb

[ 0.028881] pps_core: LinuxPPS API ver. 1 registered

[ 0.028889] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti [ 0.028919] PTP clock support registered

[ 0.030072] Switched to clocksource arch_sys_counter

[ 0.039929] NET: Registered protocol family 2

[ 0.040576] TCP established hash table entries: 8192 (order: 3, 32768 bytes)

[ 0.040655] TCP bind hash table entries: 8192 (order: 4, 65536 bytes)

[ 0.040775] TCP: Hash tables configured (established 8192 bind 8192)

[ 0.040862] TCP: reno registered

[ 0.040876] UDP hash table entries: 512 (order: 2, 16384 bytes)

[ 0.040933] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)

[ 0.041176] NET: Registered protocol family 1

[ 0.041628] RPC: Registered named UNIX socket transport module.

[ 0.041640] RPC: Registered udp transport module.

[ 0.041647] RPC: Registered tcp transport module.

[ 0.041653] RPC: Registered tcp NFSv4.1 backchannel transport module.

[ 0.042287] hw perfevents: enabled with armv7_cortex_a7 PMU driver, 5 counters available

[ 0.043484] futex hash table entries: 512 (order: 3, 32768 bytes)

[ 0.054141] NFS: Registering the id_resolver key type

[ 0.054210] Key type id_resolver registered

[ 0.054218] Key type id_legacy registered

[ 0.055259] bounce: pool size: 64 pages

[ 0.055502] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 250)

[ 0.055522] io scheduler noop registered

[ 0.055534] io scheduler deadline registered

[ 0.055723] io scheduler cfq registered (default)

[ 0.056268] platform 1c13400.phy: Driver sun4i-usb-phy requests probe deferral

[ 0.058984] sun7i-a20-pinctrl 1c20800.pinctrl: initialized sunXi PIO driver

[ 0.117668] Serial: 8250/16550 driver, 8 ports, IRQ sharing disabled

[ 0.120934] console [ttyS0] disabled

[ 0.141145] 1c28000.serial: ttyS0 at MMIO 0x1c28000 (irq = 42, base_baud = 1500000) is a U6_16550A

[ 0.769013] console [ttyS0] enabled

[ 0.793943] 1c28800.serial: ttyS1 at MMIO 0x1c28800 (irq = 43, base_baud = 1500000) is a U6_16550A

[ 0.826347] 1c28c00.serial: ttyS2 at MMIO 0x1c28c00 (irq = 44, base_baud = 1500000) is a U6_16550A

[ 0.858665] 1c29000.serial: ttyS3 at MMIO 0x1c29000 (irq = 45, base_baud = 1500000) is a U6_16550A

[ 0.891008] 1c29400.serial: ttyS4 at MMIO 0x1c29400 (irq = 46, base_baud = 1500000) is a U6_16550A

[ 0.901639] platform 1c18000.sata: Driver ahci-sunxi requests probe deferral

[ 0.910528] platform 1c50000.ethernet: Driver stmmaceth requests probe deferral

[ 0.917940] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver

[ 0.924515] ehci-platform: EHCI generic platform driver

[ 0.929879] platform 1c14000.usb: Driver ehci-platform requests probe deferral

[ 0.937204] platform 1c1c000.usb: Driver ehci-platform requests probe deferral

[ 0.944550] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver

[ 0.950772] ohci-platform: OHCI generic platform driver

[ 0.956113] platform 1c14400.usb: Driver ohci-platform requests probe deferral

[ 0.963429] platform 1c1c400.usb: Driver ohci-platform requests probe deferral

[ 0.971794] sunxi-rtc 1c20d00.rtc: rtc core: registered rtc-sunxi as rtc0

[ 0.978584] sunxi-rtc 1c20d00.rtc: RTC enabled

[ 0.983192] i2c /dev entries driver

[ 0.987596] axp20x 0-0034: AXP20x variant AXP209 found

[ 1.000953] input: axp20x-pek as /devices/platform/soc@01c00000/1c2ac00.i2c/i2c-0/0-0034/axp20x-pek/input/input0

[ 1.011319] axp20x-regulator axp20x-regulator: regulators node not found

[ 1.020464] axp20x 0-0034: AXP20X driver loaded

[ 1.027418] sunxi-wdt 1c20c90.watchdog: Watchdog enabled (timeout=16 sec, nowayout=0)

[ 1.035540] Driver 'mmcblk' needs updating - please use bus_type methods

[ 1.042773] sunxi-mmc 1c0f000.mmc: No vqmmc regulator found

[ 1.048721] sunxi-mmc 1c0f000.mmc: Got CD GPIO

[ 1.090137] sunxi-mmc 1c0f000.mmc: base:0xf00bc000 irq:26

[ 1.095964] platform 1c12000.mmc: Driver sunxi-mmc requests probe deferral

[ 1.103924] usbcore: registered new interface driver usbhid

[ 1.109492] usbhid: USB HID core driver

[ 1.114210] TCP: cubic registered

[ 1.117539] NET: Registered protocol family 17

[ 1.122130] Key type dns_resolver registered

[ 1.127139] Registering SWP/SWPB emulation handler

[ 1.167069] mmc0: host does not support reading read-only switch, assuming write-enable

[ 1.177519] mmc0: new high speed SDHC card at address 0001

[ 1.183498] mmcblk0: mmc0:0001 SD8GB 7.44 GiB

[ 1.189360] mmcblk0: p1

[ 1.200084] ahci-sunxi 1c18000.sata: controller can't do PMP, turning off CAP_PMP

[ 1.207569] ahci-sunxi 1c18000.sata: forcing PORTS_IMPL to 0x1

[ 1.213484] ahci-sunxi 1c18000.sata: AHCI 0001.0100 32 slots 1 ports 3 Gbps 0x1 impl platform mode

[ 1.222460] ahci-sunxi 1c18000.sata: flags: ncq sntf pm led clo only pio slum part ccc

[ 1.231380] scsi host0: ahci-sunxi

[ 1.235106] ata1: SATA max UDMA/133 mmio [mem 0x01c18000-0x01c18fff] port 0x100 irq 31

[ 1.243737] stmmaceth 1c50000.ethernet: no reset control found

[ 1.249573] Ring mode enabled

[ 1.252671] No HW DMA feature register supported

[ 1.257198] Normal descriptors

[ 1.260529] TX Checksum insertion supported

[ 1.319134] libphy: stmmac: probed

[ 1.322609] eth0: PHY ID 001cc915 at 0 IRQ POLL (stmmac-0:00) active

[ 1.328956] eth0: PHY ID 001cc915 at 1 IRQ POLL (stmmac-0:01)

[ 1.335096] ehci-platform 1c14000.usb: EHCI Host Controller

[ 1.340735] ehci-platform 1c14000.usb: new USB bus registered, assigned bus number 1

[ 1.348601] ehci-platform 1c14000.usb: irq 28, io mem 0x01c14000

[ 1.370035] ehci-platform 1c14000.usb: USB 2.0 started, EHCI 1.00

[ 1.377043] hub 1-0:1.0: USB hub found

[ 1.380899] hub 1-0:1.0: 1 port detected

[ 1.385495] ehci-platform 1c1c000.usb: EHCI Host Controller

[ 1.391155] ehci-platform 1c1c000.usb: new USB bus registered, assigned bus number 2

[ 1.399027] ehci-platform 1c1c000.usb: irq 32, io mem 0x01c1c000

[ 1.419970] ehci-platform 1c1c000.usb: USB 2.0 started, EHCI 1.00

[ 1.426953] hub 2-0:1.0: USB hub found

[ 1.430795] hub 2-0:1.0: 1 port detected

[ 1.435368] ohci-platform 1c14400.usb: Generic Platform OHCI controller

[ 1.442063] ohci-platform 1c14400.usb: new USB bus registered, assigned bus number 3

[ 1.449924] ohci-platform 1c14400.usb: irq 29, io mem 0x01c14400

[ 1.514831] hub 3-0:1.0: USB hub found

[ 1.518623] hub 3-0:1.0: 1 port detected

[ 1.523261] ohci-platform 1c1c400.usb: Generic Platform OHCI controller

[ 1.529909] ohci-platform 1c1c400.usb: new USB bus registered, assigned bus number 4

[ 1.537847] ohci-platform 1c1c400.usb: irq 33, io mem 0x01c1c400

[ 1.604868] hub 4-0:1.0: USB hub found

[ 1.608664] hub 4-0:1.0: 1 port detected

[ 1.613609] sunxi-mmc 1c12000.mmc: No vqmmc regulator found

[ 1.649989] sunxi-mmc 1c12000.mmc: base:0xf011e000 irq:27

[ 1.655491] sunxi-rtc 1c20d00.rtc: setting system clock to 2015-05-01 11:12:38 UTC (1430478758)

[ 1.668679] vcc5v0: disabling

[ 1.671754] vcc3v3: disabling

[ 1.675475] ata1: SATA link down (SStatus 0 SControl 300)

[ 1.681707] sunxi-mmc 1c0f000.mmc: smc 0 err, cmd 18, RD RTO !!

[ 1.687677] sunxi-mmc 1c0f000.mmc: data error, sending stop command

[ 1.694004] sunxi-mmc 1c0f000.mmc: send stop command failed

[ 1.700690] sunxi-mmc 1c0f000.mmc: smc 0 err, cmd 13, RTO !!

[ 1.706368] mmcblk0: error -110 sending status command, retrying

[ 1.712420] sunxi-mmc 1c0f000.mmc: smc 0 err, cmd 13, RTO !!

[ 1.720294] mmcblk0: error -110 sending status command, retrying

[ 1.726306] sunxi-mmc 1c12000.mmc: smc 1 err, cmd 8, RTO !!

[ 1.731919] sunxi-mmc 1c0f000.mmc: smc 0 err, cmd 13, RTO !!

[ 1.737592] mmcblk0: error -110 sending status command, aborting

[ 1.753706] mmc1: queuing unknown CIS tuple 0x80 (2 bytes)

[ 1.760685] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)

[ 1.767664] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)

[ 1.775821] mmc1: queuing unknown CIS tuple 0x80 (7 bytes)

[ 1.798924] mmc1: new high speed SDIO card at address 0001

[ 1.824133] mmc0: tried to reset card

[ 1.828507] EXT4-fs (mmcblk0p1): couldn't mount as ext3 due to feature incompatibilities

[ 1.837624] EXT4-fs (mmcblk0p1): couldn't mount as ext2 due to feature incompatibilities

[ 1.857017] EXT4-fs (mmcblk0p1): mounted filesystem with ordered data mode. Opts: (null)

[ 1.865229] VFS: Mounted root (ext4 filesystem) readonly on device 179:1.

[ 1.880203] devtmpfs: mounted

[ 1.883466] Freeing unused kernel memory: 252K (c0507000 - c0546000)

大家可能看得比较晕,比较值得注意就是CPU missing clock-frequency property,NAND,WLAN等驱动也没加载,看来修复还得一些时间啊.

这篇关于linux内核axp209,制作A20蜂鸟开发板干净系统[构建内核]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/158958

相关文章

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

Linux链表操作方式

《Linux链表操作方式》:本文主要介绍Linux链表操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、链表基础概念与内核链表优势二、内核链表结构与宏解析三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势六、典型应用场景七、调试技巧与

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

详解Linux中常见环境变量的特点与设置

《详解Linux中常见环境变量的特点与设置》环境变量是操作系统和用户设置的一些动态键值对,为运行的程序提供配置信息,理解环境变量对于系统管理、软件开发都很重要,下面小编就为大家详细介绍一下吧... 目录前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变

基于Python构建一个高效词汇表

《基于Python构建一个高效词汇表》在自然语言处理(NLP)领域,构建高效的词汇表是文本预处理的关键步骤,本文将解析一个使用Python实现的n-gram词频统计工具,感兴趣的可以了解下... 目录一、项目背景与目标1.1 技术需求1.2 核心技术栈二、核心代码解析2.1 数据处理函数2.2 数据处理流程

Linux系统中的firewall-offline-cmd详解(收藏版)

《Linux系统中的firewall-offline-cmd详解(收藏版)》firewall-offline-cmd是firewalld的一个命令行工具,专门设计用于在没有运行firewalld服务的... 目录主要用途基本语法选项1. 状态管理2. 区域管理3. 服务管理4. 端口管理5. ICMP 阻断

Linux实现线程同步的多种方式汇总

《Linux实现线程同步的多种方式汇总》本文详细介绍了Linux下线程同步的多种方法,包括互斥锁、自旋锁、信号量以及它们的使用示例,通过这些同步机制,可以解决线程安全问题,防止资源竞争导致的错误,示例... 目录什么是线程同步?一、互斥锁(单人洗手间规则)适用场景:特点:二、条件变量(咖啡厅取餐系统)工作流

Linux中修改Apache HTTP Server(httpd)默认端口的完整指南

《Linux中修改ApacheHTTPServer(httpd)默认端口的完整指南》ApacheHTTPServer(简称httpd)是Linux系统中最常用的Web服务器之一,本文将详细介绍如何... 目录一、修改 httpd 默认端口的步骤1. 查找 httpd 配置文件路径2. 编辑配置文件3. 保存

Linux使用scp进行远程目录文件复制的详细步骤和示例

《Linux使用scp进行远程目录文件复制的详细步骤和示例》在Linux系统中,scp(安全复制协议)是一个使用SSH(安全外壳协议)进行文件和目录安全传输的命令,它允许在远程主机之间复制文件和目录,... 目录1. 什么是scp?2. 语法3. 示例示例 1: 复制本地目录到远程主机示例 2: 复制远程主

Python FastMCP构建MCP服务端与客户端的详细步骤

《PythonFastMCP构建MCP服务端与客户端的详细步骤》MCP(Multi-ClientProtocol)是一种用于构建可扩展服务的通信协议框架,本文将使用FastMCP搭建一个支持St... 目录简介环境准备服务端实现(server.py)客户端实现(client.py)运行效果扩展方向常见问题结