2025-09-30 11:56:06 +08:00
<!DOCTYPE html> < html xmlns = "http://www.w3.org/1999/xhtml" xml:lang = "zh-cn" lang = "zh-cn" data-whc_version = "26.0" >
< head > < meta http-equiv = "Content-Type" content = "text/html; charset=UTF-8" / > < meta name = "viewport" content = "width=device-width, initial-scale=1.0" / > < meta http-equiv = "X-UA-Compatible" content = "IE=edge" / > < meta name = "description" content = "以太网配置 内核配置主要是通过 scons --menuconfig 命令进行 以太网的功能配置, 配置完成后的项目存储在 target/configs/xxx_defconfig 文件中。 MAC 参数配置 内核中要使用以太网功能,首先需要配置 MAC 的属性参数。MAC 的参数随着板卡的不同而不同 以下是展开后 MAC 的所有的配置选项及其介绍 注: 为防止配置错误,实际的 MAC ..." / > < meta name = "DC.rights.owner" content = "(C) 版权 2025" / > < meta name = "copyright" content = "(C) 版权 2025" / > < meta name = "generator" content = "DITA-OT" / > < meta name = "DC.type" content = "topic" / > < meta name = "DC.relation" content = "../../../topics/sdk/mac/mac_user_guide_2.html" / > < meta name = "DC.relation" content = "../../../topics/sdk/mac/mac_user_guide_2.html" / > < meta name = "DC.relation" content = "../../../topics/sdk/mac/mac_debug_lite.html" / > < meta name = "DC.contributor" content = "yan.wang" / > < meta name = "DC.contributor" content = "yan.wang" / > < meta name = "DC.date.modified" content = "2024-01-15" / > < meta name = "DC.format" content = "HTML5" / > < meta name = "DC.identifier" content = "id" / > < meta name = "DC.language" content = "zh-CN" / > < title > 参数配置< / title > <!-- Build number 2023110923. --> < meta name = "wh-path2root" content = "../../../" / > < meta name = "wh-toc-id" content = "id-d5856e6023" / > < meta name = "wh-source-relpath" content = "topics/sdk/mac/mac_config_lite.dita" / > < meta name = "wh-out-relpath" content = "topics/sdk/mac/mac_config_lite.html" / >
< link rel = "stylesheet" type = "text/css" href = "../../../webhelp/app/commons.css?buildId=2023110923" / >
< link rel = "stylesheet" type = "text/css" href = "../../../webhelp/app/topic.css?buildId=2023110923" / >
< script src = "../../../webhelp/app/options/properties.js?buildId=20250121171154" > < / script >
< script src = "../../../webhelp/app/localization/strings.js?buildId=2023110923" > < / script >
< script src = "../../../webhelp/app/search/index/keywords.js?buildId=20250121171154" > < / script >
< script defer = "defer" src = "../../../webhelp/app/commons.js?buildId=2023110923" > < / script >
< script defer = "defer" src = "../../../webhelp/app/topic.js?buildId=2023110923" > < / script >
< link rel = "stylesheet" type = "text/css" href = "../../../webhelp/template/aic-styles-web.css?buildId=2023110923" / > < link rel = "stylesheet" type = "text/css" href = "../../../webhelp/template/notes.css?buildId=2023110923" / > < link rel = "stylesheet" type = "text/css" href = "../../../webhelp/template/aic-common.css?buildId=2023110923" / > < link rel = "stylesheet" type = "text/css" href = "../../../webhelp/template/aic-images.css?buildId=2023110923" / > < link rel = "stylesheet" type = "text/css" href = "../../../webhelp/template/footnote.css?buildId=2023110923" / > < link rel = "stylesheet" type = "text/css" href = "../../../webhelp/template/aic-web-watermark.css?buildId=2023110923" / > < link rel = "stylesheet" type = "text/css" href = "../../../webhelp/template/topic-body-list.css?buildId=2023110923" / > < / head >
< body id = "id" class = "wh_topic_page frmBody" >
< a href = "#wh_topic_body" class = "sr-only sr-only-focusable" >
跳转到主要内容
< / a >
< header class = "navbar navbar-default wh_header" >
< div class = "container-fluid" >
< div class = "wh_header_flex_container navbar-nav navbar-expand-md navbar-dark" >
< div class = "wh_logo_and_publication_title_container" >
< div class = "wh_logo_and_publication_title" >
< a href = "http://www.artinchip.com" class = " wh_logo d-none d-sm-block " > < img src = "../../../company-logo-white.png" alt = "RTOS SDK 使用指南SDK 指南文件" / > < / a >
< div class = " wh_publication_title " > < a href = "../../../index.html" > < span class = "booktitle" > < span class = "ph mainbooktitle" > RTOS SDK 使用指南< / span > < span class = "ph booktitlealt" > SDK 指南文件< / span > < / span > < / a > < / div >
< / div >
< / div >
< div class = "wh_top_menu_and_indexterms_link collapse navbar-collapse" id = "wh_top_menu_and_indexterms_link" >
< / div >
< / div >
< / div >
< / header >
< div class = " wh_search_input navbar-form wh_topic_page_search search " role = "form" >
< form id = "searchForm" method = "get" role = "search" action = "../../../search.html" > < div > < input type = "search" placeholder = "搜索 " class = "wh_search_textfield" id = "textToSearch" name = "searchQuery" aria-label = "搜索查询" required = "required" / > < button type = "submit" class = "wh_search_button" aria-label = "搜索" > < span class = "search_input_text" > 搜索< / span > < / button > < / div > < / form >
< / div >
< div class = "container-fluid" id = "wh_topic_container" >
< div class = "row" >
< nav class = "wh_tools d-print-none navbar-expand-md" aria-label = "Tools" >
< div data-tooltip-position = "bottom" class = " wh_breadcrumb " > < ol class = "d-print-none" > < li > < span class = "home" > < a href = "../../../index.html" > < span > 主页< / span > < / a > < / span > < / li > < li > < div class = "topicref" data-id = "id" > < div class = "title" > < a href = "../../../topics/sdk/chapter-advanced-app.html" > 高级应用< / a > < div class = "wh-tooltip" > < p class = "shortdesc" > 系统、存储、多媒体、接口、安全等模块的详细配置和设计说明。< / p > < / div > < / div > < / div > < / li > < li > < div class = "topicref" data-id = "concept_nww_hzh_pzb" > < div class = "title" > < a href = "../../../topics/chapter-title/chapter-interface-sdk.html" > 接口< / a > < div class = "wh-tooltip" > < p class = "shortdesc" > CAN< span class = "ph" > 、CAP< / span > 、CIR、GPAI、GPIO、I2C、PSADC、PWM 等接口模块的介绍和使用说明。< / p > < / div > < / div > < / div > < / li > < li > < div class = "topicref" data-id = "id" > < div class = "title" > < a href = "../../../topics/sdk/mac/mac_user_guide_2.html" > MAC 使用指南< / a > < / div > < / div > < / li > < li class = "active" > < div class = "topicref" data-id = "id" > < div class = "title" > < a href = "../../../topics/sdk/mac/mac_config_lite.html" > 参数配置< / a > < / div > < / div > < / li > < / ol > < / div >
< div class = "wh_right_tools" >
< button class = "wh_hide_highlight" aria-label = "切换搜索突出显示" title = "切换搜索突出显示" > < / button >
< button class = "webhelp_expand_collapse_sections" data-next-state = "collapsed" aria-label = "折叠截面" title = "折叠截面" > < / button >
< div class = " wh_navigation_links " > < span id = "topic_navigation_links" class = "navheader" >
< span class = "navprev" > < a class = "- topic/link link" href = "../../../topics/sdk/mac/mac_user_guide_2.html" title = "MAC 使用指南" aria-label = "上一主题: MAC 使用指南" rel = "prev" > < / a > < / span >
< span class = "navnext" > < a class = "- topic/link link" href = "../../../topics/sdk/mac/mac_debug_lite.html" title = "调试指南" aria-label = "下一主题: 调试指南" rel = "next" > < / a > < / span > < / span > < / div >
< div class = " wh_print_link print d-none d-md-inline-block " > < button onClick = "window.print()" title = "打印此页" aria-label = "打印此页" > < / button > < / div >
< button type = "button" id = "wh_toc_button" class = "custom-toggler navbar-toggler collapsed wh_toggle_button navbar-light" aria-expanded = "false" aria-label = "Toggle publishing table of content" aria-controls = "wh_publication_toc" >
< span class = "navbar-toggler-icon" > < / span >
< / button >
< / div >
< / nav >
< / div >
< div class = "wh_content_area" >
< div class = "row" >
< nav id = "wh_publication_toc" class = "col-lg-3 col-md-3 col-sm-12 d-md-block d-none d-print-none" aria-label = "Table of Contents Container" >
< div id = "wh_publication_toc_content" >
< div class = " wh_publication_toc " data-tooltip-position = "right" > < span class = "expand-button-action-labels" > < span id = "button-expand-action" role = "button" aria-label = "Expand" > < / span > < span id = "button-collapse-action" role = "button" aria-label = "Collapse" > < / span > < span id = "button-pending-action" role = "button" aria-label = "Pending" > < / span > < / span > < ul role = "tree" aria-label = "Table of Contents" > < li role = "treeitem" > < div data-tocid = "revinfo_linux-d5856e989" class = "topicref" data-id = "revinfo_linux" data-state = "leaf" > < span role = "button" class = "wh-expand-btn" > < / span > < div class = "title" > < a href = "../../../topics/revinfo/revinfo_rtos.html" id = "revinfo_linux-d5856e989-link" > 修订记录< / a > < / div > < / div > < / li > < li role = "treeitem" aria-expanded = "false" > < div data-tocid = "id-d5856e1003" class = "topicref" data-id = "id" data-state = "not-ready" > < span role = "button" tabindex = "0" aria-labelledby = "button-expand-action id-d5856e1003-link" class = "wh-expand-btn" > < / span > < div class = "title" > < a href = "../../../topics/sdk/env/sdk-compile.html" id = "id-d5856e1003-link" > SDK 编译< / a > < div class = "wh-tooltip" > < p class = "shortdesc" > 介绍不同编译环境下 SDK 的详细编译流程。< / p > < / div > < / div > < / div > < / li > < li role = "treeitem" aria-expanded = "false" > < div data-tocid = "id-d5856e1152" class = "topicref" data-id = "id" data-state = "not-ready" > < span role = "button" tabindex = "0" aria-labelledby = "button-expand-action id-d5856e1152-link" class = "wh-expand-btn" > < / span > < div class = "title" > < a href = "../../../topics/sdk/advanced/sdk-usage.html" id = "id-d5856e1152-link" > 使用指南< / a > < div class = "wh-tooltip" > < p class = "shortdesc" > 系统镜像、编译选项、开发板、应用等相关的详细使用说明。< / p > < / div > < / div > < / div > < / li > < li role = "treeitem" aria-expanded = "false" > < div data-tocid = "concept_rcx_czh_pzb-d5856e1416" class = "topicref" data-id = "concept_rcx_czh_pzb" data-state = "not-ready" > < span role = "button" tabindex = "0" aria-labelledby = "button-expand-action concept_rcx_czh_pzb-d5856e1416-link" class = "wh-expand-btn" > < / span > < div class = "title" > < a href = "../../../topics/sdk/chapter-app.html" id = "concept_rcx_czh_pzb-d5856e1416-link" > 应用场景< / a > < div class = "wh-tooltip" > < p class = "shortdesc" > 描述了 SDK 在不同应用场景中的配置和使用, 包括系统更新、OTA、安全方案等。< / p > < / div > < / div > < / div > < / li > < li role = "treeitem" aria-expanded = "false" > < div data-tocid = "id-d5856e2119" class = "topicref" data-id = "id" data-state = "not-ready" > < span role = "button" tabindex = "0" aria-labelledby = "button-expand-action id-d5856e2119-link" class = "wh-expand-btn" > < / span > < div class = "title" > < a href = "../../../topics/sdk/peripheral/peripheral-intro.html" id = "id-d5856e2119-link" > 外设移植< / a > < div class = "wh-tooltip" > < p class = "shortdesc" > < span class = "ph" > CTP、U 盘、SD 卡、有线和无线网络< / span > 等外设的介绍和使用说明。< / p > < / div > < / div > < / div > < / li > < li role = "treeitem" aria-expanded = "false" > < div data-tocid = "id-d5856e2244" class = "topicref" data-id = "id" data-state = "not-ready" > < span role = "button" tabindex = "0" aria-labelledby = "button-expand-action id-d5856e2244-link" class = "wh-expand-btn" > < / span > < div class = "title" > < a href = "../../../topics/sdk/bringup/chapter-bringup.html" id = "id-d5856e2244-link" > BringUp< / a > < div class = "wh-tooltip" > < p class = "shortdesc" > 在硬件上电后快速初始化系统,为操作系统的启动准备好必要的硬件环境。< / p > < / div > < / div > < / div > < / li > < li role = "treeitem" aria-expanded = "true" > < div data-tocid = "id-d5856e2345" class = "topicref" data-id = "id" data-state = "expanded" > < span role = "button" tabindex = "0" aria-labelledby = "button-collapse-action id-d5856e2345-link" class = "wh-expand-btn" > < / span > < div class = "title" > < a href = "../../../topics/sdk/chapter-advanced-app.html" id = "id-d5856e2345-link" > 高级应用< / a > < div class = "wh-tooltip" > < p class = "shortdesc" > 系统、存储、多媒体、接口、安全等模块的详细配置和设计说明。< / p > < / div > < / div > < / div > < ul role = "group" class = "navbar-nav nav-list" > < li role = "treeitem" aria-expanded = "false" > < div data-tocid = "_0-d5856e2360" class = "topicref" data-id = "_0" data-state = "not-ready" > < spa
< / div >
< / nav >
< div class = "col-lg-7 col-md-9 col-sm-12" id = "wh_topic_body" >
< button id = "wh_close_publication_toc_button" class = "close-toc-button d-none" aria-label = "Toggle publishing table of content" aria-controls = "wh_publication_toc" aria-expanded = "true" >
< span class = "close-toc-icon-container" >
< span class = "close-toc-icon" > < / span >
< / span >
< / button >
< button id = "wh_close_topic_toc_button" class = "close-toc-button d-none" aria-label = "Toggle topic table of content" aria-controls = "wh_topic_toc" aria-expanded = "true" >
< span class = "close-toc-icon-container" >
< span class = "close-toc-icon" > < / span >
< / span >
< / button >
< div class = " wh_topic_content body " > < main role = "main" > < article class = "- topic/topic topic" role = "article" aria-labelledby = "ariaid-title1" > < span class = "edit-link" style = "font-size:12px; opacity:0.6; text-align:right; vertical-align:middle" > < a target = "_blank" href = "http://172.16.35.88/tasks/jdssno1uvvbf2mltu9kb9v3if05d5gopuakboe8hlud18rma/edit/F:/aicdita/aicdita-cn/topics/sdk/mac/mac_config_lite.dita" > Edit online< / a > < / span > < h1 class = "- topic/title title topictitle1" id = "ariaid-title1" > 参数配置< / h1 > < div class = "date inPage" > 15 Jan 2024< / div > < div style = "color: gray;" >
Read time: 13 minute(s)
< / div > < div class = "- topic/body body" > < section class = "- topic/section section" id = "id__ref-to-lite-mac-cfg" data-ofbid = "id__ref-to-lite-mac-cfg" > < h2 class = "- topic/title title sectiontitle" > 以太网配置< / h2 >
< p class = "- topic/p p" data-ofbid = "d65433e24__20250121171521" > 内核配置主要是通过 < span class = "+ topic/keyword sw-d/cmdname keyword cmdname" > scons --menuconfig< / span > 命令进行 以太网的功能配置, 配置完成后的项目存储在
< span class = "+ topic/ph sw-d/filepath ph filepath" > target/configs/xxx_defconfig< / span > 文件中。< / p >
< ul class = "- topic/ul ul" id = "id__ul_ehm_kys_4dc" data-ofbid = "id__ul_ehm_kys_4dc" > < li class = "- topic/li li" data-ofbid = "d65433e34__20250121171521" >
< div class = "- topic/div div section" id = "id__mac" >
< strong class = "+ topic/ph hi-d/b ph b" > MAC 参数配置< / strong >
< p class = "- topic/p p" data-ofbid = "d65433e41__20250121171521" > 内核中要使用以太网功能,首先需要配置 MAC 的属性参数。MAC 的参数随着板卡的不同而不同 以下是展开后 MAC
的所有的配置选项及其介绍< / p > < div class = "- topic/note note note note_note" id = "id__note_eql_qn3_ddc" data-ofbid = "id__note_eql_qn3_ddc" > < span class = "note__title" > 注:< / span >
< div class = "- topic/p p" data-ofbid = "d65433e45__20250121171521" > 为防止配置错误,实际的 MAC
配置有一套依赖规则,不会同时出现以下全部的配置选项< pre class = "+ topic/pre pr-d/codeblock pre codeblock language-c" id = "id__codeblock_nvz_yjn_fdc" data-ofbid = "id__codeblock_nvz_yjn_fdc" > Board options --->
[*] Using Gmac0
gmac0 parameter --->
(PE.< span class = "hl-number" > 6< / span > ) gmac0 PHY reset GPIO
Select gmac0 bus (RMII) --->
Select PHY clk (external clk) --->
(< span class = "hl-number" > 0< / span > ) gmac0 rx delay
(< span class = "hl-number" > 0< / span > ) gmac0 tx delay
(< span class = "hl-number" > 192.168< / span > .< span class = "hl-number" > 1.2< / span > ) gmac0 IPv4 addr
(< span class = "hl-number" > 192.168< / span > .< span class = "hl-number" > 1.1< / span > ) gmac0 Gateway
(< span class = "hl-number" > 255.255< / span > .< span class = "hl-number" > 255.0< / span > ) gmac0 Subnet Mask
[*] gmac0 MAC address use chip-id
(< span class = "hl-number" > 002244887766< / span > ) gmac0 MAC addr
(< span class = "hl-number" > 1< / span > ) gmac0 PHY MDIO addr
Clocks Options --->
...
[ ] Enable CLK_OUT0
[ ] Enable CLK_OUT1
[*] Enable CLK_OUT2
(< span class = "hl-number" > 25000000< / span > ) Clk CLK_OUT2 frequence
[ ] Enable CLK_OUT3< / pre > < / div >
< / div > < ul class = "- topic/ul ul simple" id = "id__ul_of4_kys_4dc" data-ofbid = "id__ul_of4_kys_4dc" > < li class = "- topic/li li" data-ofbid = "d65433e51__20250121171521" >
< dl class = "- topic/dl dl simple" id = "id__dl_pf4_kys_4dc" data-ofbid = "id__dl_pf4_kys_4dc" > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e55__20250121171521" > gmac0 PHY reset GPIO< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e59__20250121171521" > 外部 PHY 芯片的复位脚相连接的 IO 引脚,根据板卡设计决定< / p >
< / dd > < / dl >
< / li > < li class = "- topic/li li" data-ofbid = "d65433e63__20250121171521" >
< dl class = "- topic/dl dl simple" id = "id__dl_qf4_kys_4dc" data-ofbid = "id__dl_qf4_kys_4dc" > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e67__20250121171521" > Select gmac0 bus< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e71__20250121171521" > 选择 MAC 与 PHY 相连接的接口类型,根据板卡决定是 RGMII 还是 RMII< / p >
< / dd > < / dl >
< / li > < li class = "- topic/li li" data-ofbid = "d65433e75__20250121171521" >
< dl class = "- topic/dl dl simple" id = "id__dl_rf4_kys_4dc" data-ofbid = "id__dl_rf4_kys_4dc" > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e79__20250121171521" > Select PHY clk< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e83__20250121171521" > 选择 MAC 使用的总线参考时钟类型是 external clk (外部时钟)还是 internal
clk (内部时钟)。这个配置需要根据电路设计决定。如果 MAC 的时钟参考时钟是来自 PHY 芯片
(即 GMAC_CLKIN 引脚接到 PHY 芯片)则这里选择 external clk, 否则选择
internal clk< / p >
< / dd > < / dl >
< / li > < li class = "- topic/li li" data-ofbid = "d65433e87__20250121171521" >
< dl class = "- topic/dl dl simple" id = "id__dl_sf4_kys_4dc" data-ofbid = "id__dl_sf4_kys_4dc" > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e91__20250121171521" > gmac0 rx delay< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e95__20250121171521" > gmac0 的接收时延,适用于 RGMII 接口模式下, MAC 匹配 PHY 芯片的数据建立时间和保留时
间(单位: 0.17 ns), 需要根据外部使用的 PHY 芯片调整。一般情况下,设置为 12 ,即
2.04 ns< / p >
< / dd > < / dl >
< / li > < li class = "- topic/li li" data-ofbid = "d65433e99__20250121171521" >
< dl class = "- topic/dl dl simple" id = "id__dl_tf4_kys_4dc" data-ofbid = "id__dl_tf4_kys_4dc" > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e103__20250121171521" > gmac0 tx delay< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e107__20250121171521" > gmac0 的发送时延,适用于 RGMII 接口模式下, MAC 匹配 PHY 芯片的数据建立时间和保留时间
(单位: 0.17 ns),需要根据外部使用的 PHY 芯片调整。一般情况下,可设置为 12, 即 2.04
ns< / p >
< / dd > < / dl >
< / li > < li class = "- topic/li li" data-ofbid = "d65433e111__20250121171521" >
< dl class = "- topic/dl dl simple" id = "id__dl_uf4_kys_4dc" data-ofbid = "id__dl_uf4_kys_4dc" > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e115__20250121171521" > gmac0 IPv4 addr< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e119__20250121171521" > 当前网卡的初始静态 IP 地址,如打开 DHCP 功能,此处设置无效< / p >
< / dd > < / dl >
< / li > < li class = "- topic/li li" data-ofbid = "d65433e123__20250121171521" >
< dl class = "- topic/dl dl simple" id = "id__dl_vf4_kys_4dc" data-ofbid = "id__dl_vf4_kys_4dc" > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e127__20250121171521" > gmac0 Gateway< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e131__20250121171521" > 当前网卡的初始静态网关地址,如打开 DHCP 功能,此处设置无效< / p >
< / dd > < / dl >
< / li > < li class = "- topic/li li" data-ofbid = "d65433e135__20250121171521" >
< dl class = "- topic/dl dl simple" id = "id__dl_wf4_kys_4dc" data-ofbid = "id__dl_wf4_kys_4dc" > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e139__20250121171521" > gmac0 Subnet Mask< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e143__20250121171521" > 当前网卡初始静态子网掩码,如打开 DHCP 功能,此处设置无效< / p >
< / dd > < / dl >
< / li > < li class = "- topic/li li" data-ofbid = "d65433e147__20250121171521" >
< dl class = "- topic/dl dl simple" id = "id__dl_xf4_kys_4dc" data-ofbid = "id__dl_xf4_kys_4dc" > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e151__20250121171521" > gmac0 MAC address use chip-id< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e155__20250121171521" > 使用芯片的 chip-id 作为 MAC 地址,使能此选项后会使用 chip-id 的低六位经过加密后作为
MAC 地址。这样的好处是同一系列产品的 MAC 地址基本不会重复。< / p >
< / dd > < / dl >
< / li > < li class = "- topic/li li" data-ofbid = "d65433e159__20250121171521" >
< dl class = "- topic/dl dl simple" id = "id__dl_yf4_kys_4dc" data-ofbid = "id__dl_yf4_kys_4dc" > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e163__20250121171521" > gmac0 MAC addr< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e167__20250121171521" > gmac0 默认 MAC 地址,当不使能
< span class = "+ topic/ph ui-d/uicontrol ph uicontrol" > gmac0 MAC address use chip-id< / span >
时,即用户需要自定义 MAC 地址时可以在这里配置用户自己的 MAC 地址。< / p >
< / dd > < / dl >
< / li > < li class = "- topic/li li" data-ofbid = "d65433e174__20250121171521" >
< dl class = "- topic/dl dl simple" id = "id__dl_zf4_kys_4dc" data-ofbid = "id__dl_zf4_kys_4dc" > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e178__20250121171521" > gmac0 PHY MDIO addr< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e182__20250121171521" > PHY 在 总线上的挂载地址, PHY 芯片地址一般取决于 PHY
芯片外部电路设计,请根据板卡设计决定< / p >
< / dd > < / dl >
< / li > < li class = "- topic/li li" data-ofbid = "d65433e187__20250121171521" >
< dl class = "- topic/dl dl simple" id = "id__dl_ag4_kys_4dc" data-ofbid = "id__dl_ag4_kys_4dc" > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e191__20250121171521" > Clocks Options< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e195__20250121171521" > 如果 PHY 的工作时钟由主控芯片的 CLK_OUTx 提供,则需要在这里使能 CLK_OUT。
具体使能哪一个 CLK_OUT, 取决于硬件设计< / p >
< / dd > < / dl >
< / li > < li class = "- topic/li li" data-ofbid = "d65433e199__20250121171521" >
< dl class = "- topic/dl dl simple" id = "id__dl_bg4_kys_4dc" data-ofbid = "id__dl_bg4_kys_4dc" > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e203__20250121171521" > Clk CLK_OUT2 frequence< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e207__20250121171521" > CLK_OUTx 的输出时钟频率,对于常用的 PHY 芯片,一般是 25 MHz< / p >
< / dd > < / dl >
< / li > < / ul > < / div >
< / li > < li class = "- topic/li li" data-ofbid = "d65433e212__20250121171521" >
< div class = "- topic/div div section" id = "id__lwip" >
< strong class = "+ topic/ph hi-d/b ph b" > LwIP 协议配置< / strong >
< div class = "- topic/p p" data-ofbid = "d65433e219__20250121171521" > < span class = "- topic/ph ph" > Luban-Lite< / span > 内置 LwIP2.1.3 协议栈,用户可以根据自身需求通过 < span class = "+ topic/keyword sw-d/cmdname keyword cmdname" > scons
--menuconfig< / span > 进行裁剪。 < span class = "- topic/ph ph" > Luban-Lite< / span >
提供的可裁剪属性如下,如有其他特别需求,可自行配置
< span class = "+ topic/ph sw-d/filepath ph filepath" > packages/third-party/lwip/lwipopts.h< / span >
文件。< pre class = "+ topic/pre pr-d/codeblock pre codeblock language-c" id = "id__codeblock_a4l_2kn_fdc" data-ofbid = "id__codeblock_a4l_2kn_fdc" > Local packages options --->
Third-party packages options --->
[*] lwIP: light weight TCP/IP stack --->
[ ] IPv6 protocol
[*] lwIP Example
[*] Using net tools
[ ] IGMP protocol
[*] ICMP protocol
[ ] SNMP protocol
[ ] Enable DNS < strong class = "hl-keyword" > for< / strong > name resolution
[ ] Enable alloc IP address through DHCP
[*] UDP protocol
[*] TCP protocol
[*] RAW protocol
[ ] PPP protocol
(< span class = "hl-number" > 8< / span > ) the number of < strong class = "hl-keyword" > struct< / strong > netconns
(< span class = "hl-number" > 16< / span > ) the number of PBUF
(< span class = "hl-number" > 15360< / span > ) the size of lwIP< span class = "hl-string" > 's dynamic memory
< / span > (< span class = "hl-number" > 4< / span > ) the number of raw connection
(< span class = "hl-number" > 4< / span > ) the number of UDP socket
(< span class = "hl-number" > 4< / span > ) the number of TCP socket
(< span class = "hl-number" > 40< / span > ) the number of TCP segment
(< span class = "hl-number" > 8196< / span > ) the size of send buffer
(< span class = "hl-number" > 8196< / span > ) the size of TCP send window
(< span class = "hl-number" > 10< / span > ) the priority level value of lwIP thread
(< span class = "hl-number" > 8< / span > ) the number of mail in the lwIP thread mailbox
(< span class = "hl-number" > 3072< / span > ) the stack size of lwIP thread
[ ] Enable IP reassembly and frag
[ ] Enable lwIP statistics
[ ] Enable tx hardware generate checksum
[ ] Enable rx hardware check checksum
[ ] Enable ping features ----
[ ] Using socket interface during ping requests
( ) the priority level value of ping thread
[ ] Using MQTT protocol
[ ] USing DHCP server
(< span class = "hl-number" > 192.168< / span > .< span class = "hl-number" > 1.1< / span > ) DHCP server IP addresss
(< span class = "hl-number" > 2< / span > ) Start address of DHCP allocation(Last byte)
(< span class = "hl-number" > 254< / span > ) End address of DHCP allocation(Last byte)
[ ] Enable lwIP Debugging Options ----< / pre > < / div > < dl class = "- topic/dl dl" data-ofbid = "d65433e234__20250121171521" > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e236__20250121171521" > IPv6 protocol< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e240__20250121171521" > LwIP 支持 IPV6 协议< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e244__20250121171521" > lwIP Example< / dt > < dd class = "- topic/dd dd" > SDK 提供的初始化以太网示例,示例程序源码在
< span class = "+ topic/ph sw-d/filepath ph filepath" > packages/third-party/lwip/contrib/examples/example_app/< / span >
目录下的
< span class = "+ topic/ph sw-d/filepath ph filepath" > test.c< / span > < span class = "+ topic/ph sw-d/filepath ph filepath" > netif_start.c< / span > < span class = "+ topic/ph sw-d/filepath ph filepath" > netif_start.h< / span > 。打开此选项后, SDK
会在启动过程中自动 初始化以太网。用户可根据自身需求定义以太网初始化流程。如果不开启此选项,则需要用户自己编写以太网
的初始化程序< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e259__20250121171521" > IPv6 protocol< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e263__20250121171521" > LwIP 支持 IPV6 协议< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e267__20250121171521" > lwIP Example< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e271__20250121171521" > SDK 提供的初始化以太网示例,示例程序源码在
< span class = "+ topic/ph sw-d/filepath ph filepath" > packages/third-party/lwip/contrib/examples/example_app/< / span >
目录下的
< span class = "+ topic/ph sw-d/filepath ph filepath" > test.c< / span > 、< span class = "+ topic/ph sw-d/filepath ph filepath" > netif_start.c< / span >
和 < span class = "+ topic/ph sw-d/filepath ph filepath" > netif_start.h< / span > 文件。打开此选项后, SDK 会在启动过程中自动
初始化以太网。用户可根据自身需求定义以太网初始化流程。如果不开启此选项,则需要用户自己编写以太网 的初始化程序< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e287__20250121171521" > Using net tools< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e291__20250121171521" > 使用网络调试命令, ifconfig, dhcpc …< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e295__20250121171521" > IGMP protocol< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e299__20250121171521" > 以太网支持 IGMP 协议,使用组播功能时打开< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e303__20250121171521" > ICMP protocol< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e307__20250121171521" > 以太网支持 ICMP 协议,使用 ping 命令时打开< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e311__20250121171521" > SNMP protocol< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e315__20250121171521" > 以太网支持 SNMP 协议,需要时打开< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e319__20250121171521" > Enable DNS for name resolution< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e323__20250121171521" > 支持 DNS 用户端功能,需要时打开< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e327__20250121171521" > Enable alloc IP address through DHCP< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e331__20250121171521" > 支持 DHCP 用户端功能,需要时打开。如果打开 DHCP 选项,默认 IP 地址会失效,如果 IP 申请失败,则此时
IP 地址为 0.0.0.0< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e335__20250121171521" > UDP protocol< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e339__20250121171521" > 支持 UDP 协议,默认打开< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e344__20250121171521" > TCP protocol< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e348__20250121171521" > 支持 TCP 协议,默认打开< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e352__20250121171521" > RAW protocol< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e356__20250121171521" > 支持原始套接字接口,如需要编写基于 RAW 套接字的程序时,需要打开< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e360__20250121171521" > PPP protocol< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e364__20250121171521" > 支持 PPP 协议,需要时打开< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e368__20250121171521" > the number of struct netconns< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e372__20250121171521" > struct netconns 接口的数量,默认为 8 个,可根据需求自行修改< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e376__20250121171521" > the number of PBUF< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e380__20250121171521" > pbuf 结构的数量,如果需要发送较多的 ROM 类型消息,可自行修改< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e384__20250121171521" > the size of lwIP’ s dynamic memory< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e388__20250121171521" > LwIP 堆空间大小,与数据发送有关,不建议修改< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e392__20250121171521" > the number of raw connection< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e396__20250121171521" > RAW 控制块数量,根据需求修改< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e400__20250121171521" > the number of UDP socket< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e404__20250121171521" > UDP 控制块数量,根据需求修改< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e408__20250121171521" > the number of TCP socket< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e412__20250121171521" > TCP 控制块数量,根据需求修改< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e416__20250121171521" > the number of TCP segment< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e420__20250121171521" > TCP 等待队列的个数,这个值应该不小于 TCP 的发送队列的个数< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e424__20250121171521" > the size of send buffer< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e428__20250121171521" > TCP 发送缓存大小,如无特别需求,请保持默认值< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e433__20250121171521" > the size of TCP send window< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e437__20250121171521" > TCP 滑动窗口大小,如无特别需求,请保持默认值< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e441__20250121171521" > the priority level value of lwIP thread< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e445__20250121171521" > LwIP 协议栈任务优先级,为防止网络丢包,建议保持较高优先级< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e449__20250121171521" > the number of mail in the lwIP thread mailbox< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e453__20250121171521" > 消息邮箱数量,如无特别需求,不建议修改此数量< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e457__20250121171521" > the stack size of lwIP thread< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e461__20250121171521" > LwIP 协议栈任务的栈空间大小,如没有添加基于 RAW 接口的应用程序,不建议修改任务栈。
否则,应该加大协议栈任务的栈空间< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e465__20250121171521" > Enable IP reassembly and frag< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e469__20250121171521" > 使能 IP 包的分片重装功能< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e473__20250121171521" > Enable lwIP statistics< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e477__20250121171521" > 使能 LwIP 统计信息< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e481__20250121171521" > Enable tx hardware generate checksum< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e485__20250121171521" > 使能发送时自动生成硬件校验和< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e489__20250121171521" > Enable rx hardware check checksum< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e493__20250121171521" > 使能接收时硬件检查校验和< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e497__20250121171521" > Enable ping features —-< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e501__20250121171521" > ping 命令支持,使能此选项后,可在终端中使用 ping 命令< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e505__20250121171521" > Using MQTT protocol< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e509__20250121171521" > 支持 MQTT 协议< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e513__20250121171521" > USing DHCP server< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e517__20250121171521" > 使用 dhcp server 服务。使能此选项后可以使用 dhcpd 命令开启 dhcp 服务端< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e522__20250121171521" > DHCP server IP addresss< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e526__20250121171521" > 做 dhcp 服务端时的 IP 地址< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e530__20250121171521" > Start address of DHCP allocation(Last byte)< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e534__20250121171521" > dhcp 服务端分配给用户端的起始 ip 地址的低八位< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e538__20250121171521" > End address of DHCP allocation(Last byte)< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e542__20250121171521" > dhcp 服务端分配给用户端的结束 ip 地址的低八位< / p >
< / dd > < dt class = "- topic/dt dt dlterm" data-ofbid = "d65433e546__20250121171521" > Enable lwIP Debugging Options —-< / dt > < dd class = "- topic/dd dd" >
< p class = "- topic/p p" data-ofbid = "d65433e550__20250121171521" > LwIP 调试信息选项,可根据自身需求进行打开< / p >
< / dd > < / dl >
< / div >
< / li > < / ul >
< / section > < section class = "- topic/section section" id = "id__section_twf_bkn_fdc" data-ofbid = "id__section_twf_bkn_fdc" > < h2 class = "- topic/title title sectiontitle" > 时钟< / h2 >
< p class = "- topic/p p" data-ofbid = "d65433e561__20250121171521" > MAC 和 PHY 的协同工作共牵涉到四组时钟, < span class = "- topic/ph ph" > Luban-Lite< / span > 已将时钟部分处理完整,不需要用户除 < span class = "+ topic/keyword sw-d/cmdname keyword cmdname" > scons
--menuconfig< / span > 配置 MAC 使用 < span class = "+ topic/keyword pr-d/parmname keyword parmname" > external clk< / span > 或
< span class = "+ topic/keyword pr-d/parmname keyword parmname" > internal clk< / span > 之外的其他任何修改< / p >
< ul class = "- topic/ul ul" id = "id__ul_zvb_lys_4dc" data-ofbid = "id__ul_zvb_lys_4dc" > < li class = "- topic/li li" data-ofbid = "d65433e577__20250121171521" >
< div class = "- topic/div div section" id = "id__id4" >
< strong class = "+ topic/ph hi-d/b ph b" > MAC 工作时钟< / strong >
< div class = "- topic/p p" data-ofbid = "d65433e584__20250121171521" > MAC 的内部工作时钟通过 PLL 分频获得,为 50M, 工作时钟不会因为方案的不同而不同,为一固定值 配置代码在
< span class = "+ topic/ph sw-d/filepath ph filepath" > packages/third-party/lwip/contrib/ports/drv/aic/aic_mac_ll.c< / span >
中。< pre class = "+ topic/pre pr-d/codeblock pre codeblock language-c" id = "id__codeblock_lxy_qxn_fdc" data-ofbid = "id__codeblock_lxy_qxn_fdc" > < strong class = "hl-keyword" > void< / strong > aicmac_low_level_init(uint32_t port, bool en)
{
uint32_t id = CLK_GMAC0 + port;
< em class = "hl-comment" > /* MAC clock */< / em >
< strong class = "hl-keyword" > if< / strong > (en) {
< em class = "hl-comment" > /* Set clock frequence = 50M */< / em >
hal_clk_set_freq(id, < span class = "hl-number" > 50000000< / span > );
< em class = "hl-comment" > /* clock enable & reset deassert */< / em >
hal_clk_enable_deassertrst_iter(id);
} < strong class = "hl-keyword" > else< / strong > {
< em class = "hl-comment" > /* clock enable & reset deassert */< / em >
hal_clk_disable_assertrst(id);
}
}< / pre > < / div >
< / div >
< / li > < li class = "- topic/li li" data-ofbid = "d65433e593__20250121171521" >
< div class = "- topic/div div section" id = "id__mdc" >
< strong class = "+ topic/ph hi-d/b ph b" > MDC 时钟< / strong >
< div class = "- topic/p p" data-ofbid = "d65433e600__20250121171521" > MDC 时钟是 MDIO 的工作时钟,是 MAC 和 PHY 进行配置的工作时钟,双方在使用初期会有一个协 商,一般是 MAC 通知
PHY, 该时钟为 MAC 通过模块的内部工作时钟处理生成,也不会因为方案的 不同而不同, 为一固定值。MDIO 时钟初始化在
< span class = "+ topic/ph sw-d/filepath ph filepath" > packages/third-party/lwip/contrib/ports/drv/aic/aicmac.c< / span >
文件的 < span class = "+ topic/keyword pr-d/apiname keyword apiname" > aicmac_init< / span >
函数中:< pre class = "+ topic/pre pr-d/codeblock pre codeblock language-c" id = "id__codeblock_ir5_jyn_fdc" data-ofbid = "id__codeblock_ir5_jyn_fdc" > < strong class = "hl-keyword" > int< / strong > aicmac_init(uint32_t port)
{
...
< em class = "hl-comment" > /* MDCIO Internal Clock Select */< / em >
tmpreg = readl(MAC(port, mdioctl));
tmpreg & = ~(ETH_MDIOCTL_CR_MSK);
ahbclk = hal_clk_get_freq(CLK_AHB0);
< strong class = "hl-keyword" > if< / strong > ((ahbclk ≥ < span class = "hl-number" > 20000000< / span > ) & & (ahbclk < < span class = "hl-number" > 35000000< / span > )) {
tmpreg |= ETH_MDIOCTL_CR_Div16;
} < strong class = "hl-keyword" > else< / strong > < strong class = "hl-keyword" > if< / strong > ((ahbclk ≥ < span class = "hl-number" > 35000000< / span > ) & & (ahbclk < < span class = "hl-number" > 60000000< / span > )) {
tmpreg |= ETH_MDIOCTL_CR_Div26;
} < strong class = "hl-keyword" > else< / strong > < strong class = "hl-keyword" > if< / strong > ((ahbclk ≥ < span class = "hl-number" > 60000000< / span > ) & & (ahbclk < < span class = "hl-number" > 100000000< / span > )) {
tmpreg |= ETH_MDIOCTL_CR_Div42;
} < strong class = "hl-keyword" > else< / strong > < strong class = "hl-keyword" > if< / strong > ((ahbclk ≥ < span class = "hl-number" > 100000000< / span > ) & & (ahbclk < < span class = "hl-number" > 150000000< / span > )) {
tmpreg |= ETH_MDIOCTL_CR_Div62;
} < strong class = "hl-keyword" > else< / strong > < strong class = "hl-keyword" > if< / strong > ((ahbclk ≥ < span class = "hl-number" > 150000000< / span > ) & & (ahbclk < < span class = "hl-number" > 250000000< / span > )) {
tmpreg |= ETH_MDIOCTL_CR_Div102;
} < strong class = "hl-keyword" > else< / strong > < em class = "hl-comment" > /* ((ahbclk ≥ 250000000)& & (ahbclk < = 300000000)) */< / em >
{
tmpreg |= ETH_MDIOCTL_CR_Div124;
}
writel(tmpreg, MAC(port, mdioctl));
...
...
}< / pre > < / div > < p class = "- topic/p p" data-ofbid = "d65433e610__20250121171521" > MDC 时钟配置错误,则 MAC 和 PHY 的通信不通,呈现的现象是 MAC 无法发现 PHY
设备< / p >
< / div >
< / li > < li class = "- topic/li li" data-ofbid = "d65433e614__20250121171521" >
< div class = "- topic/div div section" id = "id__phy" >
< strong class = "+ topic/ph hi-d/b ph b" > PHY 工作时钟< / strong >
< p class = "- topic/p p" data-ofbid = "d65433e621__20250121171521" > 一般 PHY 的工作时钟是 25M, 一般的设计是外挂一个晶振提供时钟给 PHY 模组, AIC
不同型号芯片都对外提供几组时钟(CLK_OUT),也可以使用该时钟供给 PHY 模块工作。< / p > < div class = "- topic/p p" data-ofbid = "d65433e623__20250121171521" > 该时钟 (CLK_OUT) 使能在
< span class = "+ topic/ph sw-d/filepath ph filepath" > target/soc name/board name/sys_clk.c< / span >
中配置。如果需要可以打开< pre class = "+ topic/pre pr-d/codeblock pre codeblock language-c" id = "id__codeblock_brh_kyn_fdc" data-ofbid = "id__codeblock_brh_kyn_fdc" > < strong class = "hl-keyword" > struct< / strong > aic_sysclk aic_sysclk_config[] = {
...
#ifdef AIC_USING_CLK_OUT0
{AIC_CLK_OUT0_FREQ, CLK_OUT0, < span class = "hl-number" > 0< / span > },
#endif < em class = "hl-comment" > /* AIC_USING_CLK_OUT0 */< / em >
#ifdef AIC_USING_CLK_OUT1
{AIC_CLK_OUT1_FREQ, CLK_OUT1, < span class = "hl-number" > 0< / span > },
#endif < em class = "hl-comment" > /* AIC_USING_CLK_OUT1 */< / em >
#ifdef AIC_USING_CLK_OUT2
{AIC_CLK_OUT2_FREQ, CLK_OUT2, < span class = "hl-number" > 0< / span > },
#endif < em class = "hl-comment" > /* AIC_USING_CLK_OUT2 */< / em >
#ifdef AIC_USING_CLK_OUT3
{AIC_CLK_OUT3_FREQ, CLK_OUT3, < span class = "hl-number" > 0< / span > },
#endif < em class = "hl-comment" > /* AIC_USING_CLK_OUT3 */< / em >
...
};
< strong class = "hl-keyword" > void< / strong > aic_board_sysclk_init(< strong class = "hl-keyword" > void< / strong > )
{
uint32_t i = < span class = "hl-number" > 0< / span > ;
< strong class = "hl-keyword" > for< / strong > (i=< span class = "hl-number" > 0< / span > ; i< < strong class = "hl-keyword" > sizeof< / strong > (aic_sysclk_config)/< strong class = "hl-keyword" > sizeof< / strong > (< strong class = "hl-keyword" > struct< / strong > aic_sysclk); i++) {
hal_clk_set_freq(aic_sysclk_config[i].clk_id, aic_sysclk_config[i].freq);
}
< em class = "hl-comment" > /* Enable sys clk */< / em >
hal_clk_enable_deassertrst_iter(CLK_GPIO);
hal_clk_enable_deassertrst_iter(CLK_GTC);
}< / pre > < / div > < / div >
< / li > < li class = "- topic/li li" data-ofbid = "d65433e631__20250121171521" >
< div class = "- topic/div div section" id = "id__mdata" >
< strong class = "+ topic/ph hi-d/b ph b" > MDATA 时钟< / strong >
< p class = "- topic/p p" data-ofbid = "d65433e638__20250121171521" > MDATA 时钟 为 MAC 和 PHY 进行数据传输的时钟,对于百兆和千兆有不同的使用方式 < / p > < ul class = "- topic/ul ul simple" id = "id__ul_yd3_bkn_fdc" data-ofbid = "id__ul_yd3_bkn_fdc" > < li class = "- topic/li li" data-ofbid = "d65433e641__20250121171521" >
< p class = "- topic/p p" data-ofbid = "d65433e643__20250121171521" > 百兆网络:可以是 MAC 供给 PHY, 也可以是 PHY 供给 MAC< / p >
< / li > < li class = "- topic/li li" data-ofbid = "d65433e646__20250121171521" >
< p class = "- topic/p p" data-ofbid = "d65433e648__20250121171521" > 千兆网络:只能是 MAC 供给 PHY, RGMII0-TXCK 端口< / p >
< / li > < / ul > < div class = "- topic/p p" data-ofbid = "d65433e651__20250121171521" > 代码中会根据 < span class = "+ topic/keyword sw-d/cmdname keyword cmdname" > scons --menuconfig< / span > 中的配置来决定 MAC
使用的时钟来源是内部时钟还是外部时钟< pre class = "+ topic/pre pr-d/codeblock pre codeblock language-c" id = "id__codeblock_zk2_lyn_fdc" data-ofbid = "id__codeblock_zk2_lyn_fdc" > < strong class = "hl-keyword" > static< / strong > s32 syscfg_gmac_init(u32 ch)
{
#ifdef AIC_SYSCFG_DRV_V10
u32 cfg_reg = ch ? SYSCFG_GMAC1_CFG : SYSCFG_GMAC0_CFG;
#< strong class = "hl-keyword" > else< / strong >
u32 cfg_reg = SYSCFG_GMAC0_CFG;
#endif
s32 cfg;
cfg = syscfg_readl(cfg_reg);
< strong class = "hl-keyword" > if< / strong > (ch == < span class = "hl-number" > 0< / span > ) {
#ifdef AIC_SYSCFG_DRV_V10
#ifdef AIC_DEV_GMAC0_RGMII
cfg |= SYSCFG_GMAC_PHY_RGMII_< span class = "hl-number" > 1000< / span > M;
#< strong class = "hl-keyword" > else< / strong >
cfg & = ~SYSCFG_GMAC_PHY_RGMII_< span class = "hl-number" > 1000< / span > M;
#endif
#endif
#ifdef AIC_DEV_GMAC0_PHY_EXTCLK
cfg |= SYSCFG_GMAC_RMII_EXTCLK_SEL;
#endif
#< strong class = "hl-keyword" > if< / strong > AIC_DEV_GMAC0_TXDELAY
cfg |= (AIC_DEV_GMAC0_TXDELAY < < SYSCFG_GMAC_TXDLY_SEL_SHIFT);
#endif
#< strong class = "hl-keyword" > if< / strong > AIC_DEV_GMAC0_RXDELAY
cfg |= (AIC_DEV_GMAC0_RXDELAY < < SYSCFG_GMAC_RXDLY_SEL_SHIFT);
#endif
} < strong class = "hl-keyword" > else< / strong > < strong class = "hl-keyword" > if< / strong > (ch == < span class = "hl-number" > 1< / span > ) {
#ifdef AIC_SYSCFG_DRV_V10
#ifdef AIC_DEV_GMAC1_RGMII
cfg |= SYSCFG_GMAC_PHY_RGMII_< span class = "hl-number" > 1000< / span > M;
#< strong class = "hl-keyword" > else< / strong >
cfg & = ~SYSCFG_GMAC_PHY_RGMII_< span class = "hl-number" > 1000< / span > M;
#endif
#endif
#ifdef AIC_DEV_GMAC1_PHY_EXTCLK
cfg |= SYSCFG_GMAC_RMII_EXTCLK_SEL;
#endif
#< strong class = "hl-keyword" > if< / strong > AIC_DEV_GMAC1_TXDELAY
cfg |= (AIC_DEV_GMAC1_TXDELAY < < SYSCFG_GMAC_TXDLY_SEL_SHIFT);
#endif
#< strong class = "hl-keyword" > if< / strong > AIC_DEV_GMAC1_RXDELAY
cfg |= (AIC_DEV_GMAC1_RXDELAY < < SYSCFG_GMAC_RXDLY_SEL_SHIFT);
#endif
}
syscfg_writel(cfg, cfg_reg);
< strong class = "hl-keyword" > return< / strong > < span class = "hl-number" > 0< / span > ;
}< / pre > < / div > < / div >
< / li > < li class = "- topic/li li" data-ofbid = "d65433e659__20250121171521" >
< div class = "- topic/div div section" id = "id__pinmux" >
< strong class = "+ topic/ph hi-d/b ph b" > pinmux 配置< / strong >
< div class = "- topic/p p" data-ofbid = "d65433e666__20250121171521" > 在 < span class = "+ topic/ph sw-d/filepath ph filepath" > target/soc name/board name/pinmux.c< / span > 中设置 MAC 端口的
pinmux,
需要根据开发板板的不同进行不同的设置< pre class = "+ topic/pre pr-d/codeblock pre codeblock language-c" id = "id__codeblock_s2s_lyn_fdc" data-ofbid = "id__codeblock_s2s_lyn_fdc" > #ifdef AIC_USING_GMAC0
< em class = "hl-comment" > /* gmac0 */< / em >
{< span class = "hl-number" > 6< / span > , PIN_PULL_DIS, < span class = "hl-number" > 3< / span > , < span class = "hl-string" > "PE.0"< / span > },
{< span class = "hl-number" > 6< / span > , PIN_PULL_DIS, < span class = "hl-number" > 3< / span > , < span class = "hl-string" > "PE.1"< / span > },
{< span class = "hl-number" > 6< / span > , PIN_PULL_DIS, < span class = "hl-number" > 3< / span > , < span class = "hl-string" > "PE.2"< / span > },
{< span class = "hl-number" > 6< / span > , PIN_PULL_DIS, < span class = "hl-number" > 3< / span > , < span class = "hl-string" > "PE.3"< / span > },
{< span class = "hl-number" > 6< / span > , PIN_PULL_DIS, < span class = "hl-number" > 3< / span > , < span class = "hl-string" > "PE.4"< / span > },
{< span class = "hl-number" > 6< / span > , PIN_PULL_DIS, < span class = "hl-number" > 3< / span > , < span class = "hl-string" > "PE.5"< / span > },
{< span class = "hl-number" > 6< / span > , PIN_PULL_DIS, < span class = "hl-number" > 3< / span > , < span class = "hl-string" > "PE.7"< / span > },
{< span class = "hl-number" > 6< / span > , PIN_PULL_DIS, < span class = "hl-number" > 3< / span > , < span class = "hl-string" > "PE.8"< / span > },
{< span class = "hl-number" > 6< / span > , PIN_PULL_DIS, < span class = "hl-number" > 3< / span > , < span class = "hl-string" > "PE.9"< / span > },
< em class = "hl-comment" > /* phy0 reset GPIO */< / em >
{< span class = "hl-number" > 1< / span > , PIN_PULL_DIS, < span class = "hl-number" > 3< / span > , < span class = "hl-string" > "PE.6"< / span > },
#endif< / pre > < / div > < div class = "- topic/p p" data-ofbid = "d65433e673__20250121171521" > 如果 PHY 工作时钟是由主控芯片的 CLK_OUT 提供,则还需要配置 CLK_OUT
引脚的
pinmux: < pre class = "+ topic/pre pr-d/codeblock pre codeblock language-c" id = "id__codeblock_skh_myn_fdc" data-ofbid = "id__codeblock_skh_myn_fdc" > #ifdef AIC_USING_CLK_OUT0
{< span class = "hl-number" > 6< / span > , PIN_PULL_DIS, < span class = "hl-number" > 3< / span > , < span class = "hl-string" > "PD.21"< / span > },
#endif
#ifdef AIC_USING_CLK_OUT1
{< span class = "hl-number" > 5< / span > , PIN_PULL_DIS, < span class = "hl-number" > 3< / span > , < span class = "hl-string" > "PE.11"< / span > },
#endif
#ifdef AIC_USING_CLK_OUT2
{< span class = "hl-number" > 6< / span > , PIN_PULL_DIS, < span class = "hl-number" > 3< / span > , < span class = "hl-string" > "PE.10"< / span > },
#endif
#ifdef AIC_USING_CLK_OUT3
{< span class = "hl-number" > 6< / span > , PIN_PULL_DIS, < span class = "hl-number" > 3< / span > , < span class = "hl-string" > "PF.10"< / span > },
#endif< / pre > < / div > < / div >
< / li > < / ul >
< / section > < / div > < / article > < / main > < / div >
< / div >
< nav role = "navigation" id = "wh_topic_toc" aria-label = "On this page" class = "col-lg-2 d-none d-lg-block navbar d-print-none" >
< div id = "wh_topic_toc_content" >
< div class = " wh_topic_toc " > < div class = "wh_topic_label" > 在本页上< / div > < ul > < li class = "section-item" > < div class = "section-title" > < a href = "#id__ref-to-lite-mac-cfg" data-tocid = "id__ref-to-lite-mac-cfg" > 以太网配置< / a > < / div > < / li > < li class = "section-item" > < div class = "section-title" > < a href = "#id__section_twf_bkn_fdc" data-tocid = "id__section_twf_bkn_fdc" > 时钟< / a > < / div > < / li > < / ul > < / div >
< / div >
< / nav >
< / div >
< / div >
< / div >
< footer class = "navbar navbar-default wh_footer" >
< div class = " footer-container mx-auto " >
< title > footer def< / title >
< style > < ! - -
.p1 {
font-family: FangZhengShuSong, Times, serif;
}
.p2 {
font-family: Arial, Helvetica, sans-serif;
}
.p3 {
font-family: "Lucida Console", "Courier New", monospace;
}
-->< / style >
< div class = "webhelp.fragment.footer" >
< p class = "p1" > Copyright © 2019-2024 广东匠芯创科技有限公司. All rights reserved.< / p >
< / div > < div >
< div class = "generation_time" >
Update Time: 2025-01-21
< / div >
< / div >
< / div >
< / footer >
< div id = "go2top" class = "d-print-none" >
< span class = "oxy-icon oxy-icon-up" > < / span >
< / div >
< div id = "modal_img_large" class = "modal" >
< span class = "close oxy-icon oxy-icon-remove" > < / span >
< div id = "modal_img_container" > < / div >
< div id = "caption" > < / div >
< / div >
< script src = "${pd}/publishing/publishing-styles-AIC-template/js/custom.js" defer = "defer" > < / script >
< / body >
2025-01-23 16:37:00 +08:00
< / html >